]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Merge branch 'master' into flatdev
authorzampolli <Chiara.Zampolli@cern.ch>
Thu, 5 Jun 2014 09:14:20 +0000 (11:14 +0200)
committerzampolli <Chiara.Zampolli@cern.ch>
Thu, 5 Jun 2014 09:14:20 +0000 (11:14 +0200)
867 files changed:
ANALYSIS/ESDfilter/AliAnalysisTaskESDfilter.cxx
ANALYSIS/TenderSupplies/AliPHOSTenderSupply.cxx
ANALYSIS/macros/AODtrain.C
GRP/ShuttleInput/testShuttle_GRP_run_number_testShuttle_data.txt
HLT/BASE/AliHLTExternalTrackParam.h
HLT/BASE/AliHLTTrackMCLabel.h
HLT/BASE/util/AliHLTRawReaderPublisherComponent.cxx
HLT/ITS/AliHLTITSClusterDataFormat.h
HLT/TPCLib/AliHLTTPCClusterDataFormat.h
HLT/TPCLib/AliHLTTPCClusterMCData.h
HLT/TPCLib/AliHLTTPCDigitData.h
HLT/TPCLib/AliHLTTPCHWClusterDecoderComponent.cxx
HLT/TPCLib/AliHLTTPCTrackletDataFormat.h
HLT/TPCLib/calibration/AliHLTTPCCalibSeedMakerComponent.h
HLT/TPCLib/tracking-ca/AliHLTTPCCATracker.h
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.h
HLT/TRD/AliHLTTRDCluster.h
HLT/TRD/AliHLTTRDTrackletWordArray.h
HLT/global/AliHLTGlobalTrackResidualsComponent.h
ITS/UPGRADE/AliITSUTrackerCooked.cxx
ITS/UPGRADE/AliITSUTrackerSA.cxx
ITS/UPGRADE/AliITSUTrackerSA.h
ITS/UPGRADE/AliITSUTrackerSAaux.h
MONITOR/AliNetMessage.cxx [new file with mode: 0644]
MONITOR/AliNetMessage.h [new file with mode: 0644]
MONITOR/AliRecoServer.cxx
MONITOR/AliRecoServer.h
MONITOR/AliRecoServerThread.cxx
MONITOR/AliRecoServerThread.h
MONITOR/AliSocket.cxx [new file with mode: 0644]
MONITOR/AliSocket.h [new file with mode: 0644]
MONITOR/AliThreadedSocket.cxx [new file with mode: 0644]
MONITOR/AliThreadedSocket.h [new file with mode: 0644]
MONITOR/CMakelibMONITORzmq.pkg
MONITOR/MONITORLinkDef.h
MONITOR/MONITORzmqLinkDef.h
OADB/PHOS/PHOSBadMaps.root
OADB/PHOS/PHOSCalibrations.root
OADB/PHOS/PHOSMCCalibrations.root
PWG/CaloTrackCorrBase/AliCalorimeterUtils.cxx
PWG/CaloTrackCorrBase/AliCalorimeterUtils.h
PWG/DevNanoAOD/runLocalESE.C
PWG/EMCAL/macros/AddTaskClusterizerFast.C
PWG/EMCAL/macros/ConfigEmcalTenderSupply.C
PWG/FLOW/Tasks/AliFlowEvent.cxx
PWG/FLOW/Tasks/AliFlowEvent.h
PWG/FLOW/Tasks/AliFlowTrackCuts.cxx
PWG/FLOW/Tasks/AliFlowTrackCuts.h
PWG/muondep/AccEffTemplates/AODtrain.C
PWG/muondep/AccEffTemplates/Config.C
PWG/muondep/AccEffTemplates/GenJPsi8TeVParaSet.C [new file with mode: 0644]
PWG/muondep/AccEffTemplates/GenPythia6Diff.C [new file with mode: 0644]
PWG/muondep/AccEffTemplates/GenPythia8.C
PWG/muondep/AccEffTemplates/rec.C
PWG/muondep/AccEffTemplates/sim.C
PWG/muondep/AccEffTemplates/validation.sh
PWG/muondep/AliMuonAccEffSubmitter.cxx
PWG/muondep/AliMuonAccEffSubmitter.h
PWG/muondep/AliMuonGridSubmitter.cxx
PWG/muondep/AliMuonGridSubmitter.h
PWGCF/CMakelibPWGCFfemtoscopyUser.pkg
PWGCF/Correlations/DPhi/AliAnalysisTaskDptDptCorrelations.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskTwoPlusOne.cxx
PWGCF/Correlations/DPhi/AliDptDptInMC.cxx
PWGCF/Correlations/DPhi/TriggerPID/AliAnalysisTaskPIDCORR.cxx
PWGCF/Correlations/DPhi/TriggerPID/AliTwoParticlePIDCorr.cxx
PWGCF/Correlations/DPhi/TriggerPID/AliTwoParticlePIDCorr.h
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticlePID.cxx
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticlePID.h
PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhiCorrections.cxx [new file with mode: 0644]
PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhiCorrections.h [new file with mode: 0644]
PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx
PWGCF/FEMTOSCOPY/Chaoticity/AliFourPion.cxx
PWGCF/FEMTOSCOPY/Chaoticity/AliFourPion.h
PWGCF/FEMTOSCOPY/macros/AddTaskFourPion.C
PWGCF/PWGCFfemtoscopyUserLinkDef.h
PWGDQ/dielectron/AliDielectronHistos.cxx
PWGGA/CaloTrackCorrelations/AliAnaCalorimeterQA.cxx
PWGGA/CaloTrackCorrelations/AliAnaCalorimeterQA.h
PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.h
PWGGA/CaloTrackCorrelations/AliAnaParticleJetFinderCorrelation.cxx
PWGGA/CaloTrackCorrelations/AliAnaParticleJetFinderCorrelation.h
PWGGA/CaloTrackCorrelations/macros/QA/ana.C
PWGGA/EMCALTasks/AliAnalysisTaskEMCALIsoPhoton.cxx
PWGGA/GammaConv/macros/AddTask_GammaConvV1_pp.C
PWGGA/PHOSTasks/PHOS_PbPb/AddAODPHOSTender.C
PWGGA/PHOSTasks/PHOS_Tagging/AliAnalysisTaskTaggedPhotons.cxx
PWGGA/PHOSTasks/PHOS_Tagging/AliAnalysisTaskTaggedPhotons.h
PWGGA/PHOSTasks/PHOS_pp_pi0/AliCaloPhoton.cxx
PWGGA/PHOSTasks/PHOS_pp_pi0/AliCaloPhoton.h
PWGHF/CMakelibPWGHFhfe.pkg
PWGHF/hfe/AliAnalysisTaskEMCalHFEpA.cxx
PWGHF/hfe/AliAnalysisTaskEMCalHFEpA.h
PWGHF/hfe/AliAnalysisTaskHFECal.cxx
PWGHF/hfe/AliAnalysisTaskHFECal.h
PWGHF/hfe/macros/AddTaskEMCalHFEpA.C
PWGHF/hfe/macros/configs/pPb/ConfigEMCalHFEpA.C
PWGHF/vertexingHF/AliCFTaskVertexingHF.cxx [changed mode: 0755->0644]
PWGHF/vertexingHF/AliCFTaskVertexingHF.h
PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3Prong.C
PWGHF/vertexingHF/macros/AddTaskDvsMultiplicity.C
PWGJE/EMCALJetTasks/AliEmcalJet.cxx
PWGJE/EMCALJetTasks/AliEmcalJet.h
PWGJE/EMCALJetTasks/AliEmcalJetTask.cxx
PWGJE/EMCALJetTasks/AliEmcalJetTask.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadEPpid.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadEPpid.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskHJetDphi.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskHJetSpectra.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskHJetSpectra.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx
PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadEPpid.C
PWGJE/EMCALJetTasks/macros/AddTaskHJetSpectra.C
PWGJE/EMCALJetTasks/macros/runEMCalJetAnalysis.C
PWGJE/UserTasks/AliAnalysisTaskJetAntenna.cxx
PWGJE/UserTasks/AliAnalysisTaskJetAntenna.h
PWGLF/CMakelibPWGLFspectraJET.pkg [moved from TEvtGen/CMakelibphotos.pkg with 75% similarity]
PWGLF/PWGLFspectraJETLinkDef.h [new file with mode: 0644]
PWGLF/RESONANCES/macros/mini/AddTaskSigmaStar.C
PWGLF/RESONANCES/macros/mini/ConfigKStarPPb.C
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPbAOD.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskJetSpectraAOD.C [new file with mode: 0644]
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx [new file with mode: 0644]
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.h [new file with mode: 0644]
PWGLF/SPECTRA/UTILS/YieldMean.C
PWGLF/ThermalFits/PlotRatiosForQM14.C
PWGLF/totEt/AliAnalysisEmEtMonteCarlo.h
PWGLF/totEt/AliAnalysisEmEtReconstructed.h
PWGLF/totEt/AliAnalysisEt.h
PWGLF/totEt/AliAnalysisEtCommon.h
PWGLF/totEt/AliAnalysisEtCuts.cxx
PWGLF/totEt/AliAnalysisEtMonteCarlo.cxx
PWGLF/totEt/AliAnalysisEtMonteCarlo.h
PWGLF/totEt/AliAnalysisEtMonteCarloPhos.h
PWGLF/totEt/AliAnalysisEtRecEffCorrection.h
PWGLF/totEt/AliAnalysisEtReconstructed.h
PWGLF/totEt/AliAnalysisEtSelector.h
PWGLF/totEt/AliAnalysisEtSelectorPhos.h
PWGLF/totEt/AliAnalysisEtTrackMatchCorrections.h
PWGLF/totEt/AliAnalysisHadEt.h
PWGLF/totEt/AliAnalysisHadEtMonteCarlo.cxx
PWGLF/totEt/AliAnalysisHadEtMonteCarlo.h
PWGLF/totEt/AliAnalysisHadEtReconstructed.cxx
PWGLF/totEt/AliAnalysisHadEtReconstructed.h
PWGLF/totEt/AliAnalysisTaskHadEt.h
PWGLF/totEt/AliAnalysisTaskTotEt.h
PWGLF/totEt/AliAnalysisTaskTransverseEnergy.h
PWGLF/totEt/macros/hadEt/GetCorrections.C
PWGPP/AliAnalysisTaskFilteredTree.cxx
PWGPP/AliAnalysisTaskFilteredTree.h
PWGPP/CalibMacros/AliOCDBtoolkit.sh
PWGPP/EvTrkSelection/AliSingleTrackEffCuts.cxx
PWGPP/ITS/AliMeanVertexCalibTask.cxx
PWGPP/QA/detectorQAscripts/TPC.sh
PWGPP/QA/scripts/runQA.sh
PWGPP/TPC/AliPerformanceMatch.cxx
PWGPP/TRD/AliTRDcheckTRK.cxx
PWGPP/analysisQA/README
PWGPP/benchmark/benchmark.sh
PYTHIA6/AliGenPythia.cxx
PYTHIA6/AliGenPythia.h
STEER/CDB/AliCDBId.h
STEER/CDB/AliCDBManager.cxx
STEER/CDB/AliCDBManager.h
STEER/CDB/AliOCDBtoolkit.cxx
STEER/CDB/AliOCDBtoolkit.h
STEER/STEER/AliCTPRawStream.cxx
STEER/STEER/AliReconstruction.cxx
STEER/STEERBase/AliLog.cxx
STEER/STEERBase/AliLog.h
T0/AliT0Reconstructor.cxx
TEvtGen/AliDecayerEvtGen.cxx
TEvtGen/AliDecayerEvtGen.h
TEvtGen/CMakelibEvtGen.pkg
TEvtGen/CMakelibEvtGenBase.pkg [deleted file]
TEvtGen/CMakelibEvtGenExternal.pkg [new file with mode: 0644]
TEvtGen/CMakelibEvtGenModels.pkg [deleted file]
TEvtGen/CMakelibHepMC.pkg [new file with mode: 0644]
TEvtGen/CMakelibPhotos.pkg [new file with mode: 0644]
TEvtGen/CMakelibTauola.pkg [new file with mode: 0644]
TEvtGen/EvtGen/DECAY.DEC
TEvtGen/EvtGen/DecayTable/BANDCTOELE.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/BANDCTOMU.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/BTOELE.DEC
TEvtGen/EvtGen/DecayTable/BTOELEold.DEC [deleted file]
TEvtGen/EvtGen/DecayTable/BTOJPSI.DEC
TEvtGen/EvtGen/DecayTable/BTOJPSITOELE.DEC
TEvtGen/EvtGen/DecayTable/BTOJPSITOMU.DEC
TEvtGen/EvtGen/DecayTable/BTOMU.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIELECTRON.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIMUON.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/CHICTOJPSITOELE.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/CHICTOJPSITOMUON.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/DIELECTRON.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/DIMUON.DEC [new file with mode: 0644]
TEvtGen/EvtGen/DecayTable/JPSIDIMUON.DEC [new file with mode: 0644]
TEvtGen/EvtGen/EvtCheckDecays.cxx [deleted file]
TEvtGen/EvtGen/EvtCheckDecays.hh [deleted file]
TEvtGen/EvtGen/EvtGen.cpp [new file with mode: 0644]
TEvtGen/EvtGen/EvtGen.cxx [deleted file]
TEvtGen/EvtGen/EvtGen.hh
TEvtGen/EvtGen/EvtGenLinkDef.h [deleted file]
TEvtGen/EvtGen/Makefile [deleted file]
TEvtGen/EvtGen/config.mk [deleted file]
TEvtGen/EvtGen/decay.evt [deleted file]
TEvtGen/EvtGen/evt.pdl
TEvtGen/EvtGenBase/Evt3Rank3C.cpp [moved from TEvtGen/EvtGenBase/Evt3Rank3C.cxx with 100% similarity]
TEvtGen/EvtGenBase/Evt3Rank3C.hh
TEvtGen/EvtGenBase/EvtAbsBinning.hh
TEvtGen/EvtGenBase/EvtAbsLineShape.cpp [moved from TEvtGen/EvtGenBase/EvtAbsLineShape.cxx with 86% similarity]
TEvtGen/EvtGenBase/EvtAbsLineShape.hh
TEvtGen/EvtGenBase/EvtAbsRadCorr.hh
TEvtGen/EvtGenBase/EvtAmp.cpp [moved from TEvtGen/EvtGenBase/EvtAmp.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtAmpAmpPdf.hh
TEvtGen/EvtGenBase/EvtAmpIndex.cpp [moved from TEvtGen/EvtGenBase/EvtAmpIndex.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtAmpPdf.hh
TEvtGen/EvtGenBase/EvtAmpSubIndex.cpp [moved from TEvtGen/EvtGenBase/EvtAmpSubIndex.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtAmplitude.hh
TEvtGen/EvtGenBase/EvtAmplitudeSum.hh
TEvtGen/EvtGenBase/EvtBlattWeisskopf.cpp [moved from TEvtGen/EvtGenBase/EvtBlattWeisskopf.cxx with 72% similarity]
TEvtGen/EvtGenBase/EvtBlattWeisskopf.hh
TEvtGen/EvtGenBase/EvtBreitWignerPdf.cpp [moved from TEvtGen/EvtGenBase/EvtBreitWignerPdf.cxx with 95% similarity]
TEvtGen/EvtGenBase/EvtBreitWignerPdf.hh
TEvtGen/EvtGenBase/EvtCGCoefSingle.cpp [moved from TEvtGen/EvtGenBase/EvtCGCoefSingle.cxx with 97% similarity]
TEvtGen/EvtGenBase/EvtCPUtil.cpp [moved from TEvtGen/EvtGenBase/EvtCPUtil.cxx with 66% similarity]
TEvtGen/EvtGenBase/EvtCPUtil.hh
TEvtGen/EvtGenBase/EvtComplex.cpp [moved from TEvtGen/EvtGenBase/EvtComplex.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtConst.cpp [moved from TEvtGen/EvtGenBase/EvtConst.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtCyclic3.cpp [moved from TEvtGen/EvtGenBase/EvtCyclic3.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtCyclic3.hh
TEvtGen/EvtGenBase/EvtDalitzCoord.cpp [moved from TEvtGen/EvtGenBase/EvtDalitzCoord.cxx with 94% similarity]
TEvtGen/EvtGenBase/EvtDalitzCoord.hh
TEvtGen/EvtGenBase/EvtDalitzFlatPdf.cpp [moved from TEvtGen/EvtGenBase/EvtDalitzFlatPdf.cxx with 94% similarity]
TEvtGen/EvtGenBase/EvtDalitzFlatPdf.hh
TEvtGen/EvtGenBase/EvtDalitzPlot.cpp [moved from TEvtGen/EvtGenBase/EvtDalitzPlot.cxx with 99% similarity]
TEvtGen/EvtGenBase/EvtDalitzPlot.hh
TEvtGen/EvtGenBase/EvtDalitzPoint.cpp [moved from TEvtGen/EvtGenBase/EvtDalitzPoint.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtDalitzPoint.hh
TEvtGen/EvtGenBase/EvtDalitzResPdf.cpp [moved from TEvtGen/EvtGenBase/EvtDalitzResPdf.cxx with 95% similarity]
TEvtGen/EvtGenBase/EvtDalitzResPdf.hh
TEvtGen/EvtGenBase/EvtDalitzReso.cpp [moved from TEvtGen/EvtGenBase/EvtDalitzReso.cxx with 90% similarity]
TEvtGen/EvtGenBase/EvtDalitzReso.hh
TEvtGen/EvtGenBase/EvtDecayAmp.cpp [moved from TEvtGen/EvtGenBase/EvtDecayAmp.cxx with 88% similarity]
TEvtGen/EvtGenBase/EvtDecayBase.cpp [moved from TEvtGen/EvtGenBase/EvtDecayBase.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtDecayBase.hh
TEvtGen/EvtGenBase/EvtDecayIncoherent.cpp [moved from TEvtGen/EvtGenBase/EvtDecayIncoherent.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtDecayMode.cpp [moved from TEvtGen/EvtGenBase/EvtDecayMode.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtDecayMode.hh
TEvtGen/EvtGenBase/EvtDecayParm.cpp [moved from TEvtGen/EvtGenBase/EvtDecayParm.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtDecayProb.cpp [moved from TEvtGen/EvtGenBase/EvtDecayProb.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtDecayTable.cpp [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtDecayTable.cxx [deleted file]
TEvtGen/EvtGenBase/EvtDecayTable.hh
TEvtGen/EvtGenBase/EvtDiLog.cpp [moved from TEvtGen/EvtGenBase/EvtDiLog.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtDiLog.hh
TEvtGen/EvtGenBase/EvtDiracParticle.cpp [moved from TEvtGen/EvtGenBase/EvtDiracParticle.cxx with 89% similarity]
TEvtGen/EvtGenBase/EvtDiracSpinor.cpp [moved from TEvtGen/EvtGenBase/EvtDiracSpinor.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtDiracSpinor.hh
TEvtGen/EvtGenBase/EvtEvalHelAmp.cpp [moved from TEvtGen/EvtGenBase/EvtEvalHelAmp.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtExtGeneratorCommandsTable.cpp [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtExtGeneratorCommandsTable.hh [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtFlatAmp.hh
TEvtGen/EvtGenBase/EvtFlatLineShape.cpp [moved from TEvtGen/EvtGenBase/EvtFlatLineShape.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtFlatte.cpp [moved from TEvtGen/EvtGenBase/EvtFlatte.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtGammaMatrix.cpp [moved from TEvtGen/EvtGenBase/EvtGammaMatrix.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtGammaMatrix.hh
TEvtGen/EvtGenBase/EvtGenBaseLinkDef.h [deleted file]
TEvtGen/EvtGenBase/EvtGenBaseLinkDefOLD.h [deleted file]
TEvtGen/EvtGenBase/EvtGenKine.cpp [moved from TEvtGen/EvtGenBase/EvtGenKine.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtHepMCEvent.cpp [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtHepMCEvent.hh [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtHighSpinParticle.cpp [moved from TEvtGen/EvtGenBase/EvtHighSpinParticle.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtId.cpp [moved from TEvtGen/EvtGenBase/EvtId.cxx with 93% similarity]
TEvtGen/EvtGenBase/EvtId.hh
TEvtGen/EvtGenBase/EvtIdSet.cpp [moved from TEvtGen/EvtGenBase/EvtIdSet.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtIncoherentMixing.cpp [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtIncoherentMixing.hh [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtIntegPdf1D.cpp [moved from TEvtGen/EvtGenBase/EvtIntegPdf1D.cxx with 94% similarity]
TEvtGen/EvtGenBase/EvtIntegPdf1D.hh
TEvtGen/EvtGenBase/EvtIntervalFlatPdf.cpp [moved from TEvtGen/EvtGenBase/EvtIntervalFlatPdf.cxx with 93% similarity]
TEvtGen/EvtGenBase/EvtIntervalFlatPdf.hh
TEvtGen/EvtGenBase/EvtKine.cpp [moved from TEvtGen/EvtGenBase/EvtKine.cxx with 90% similarity]
TEvtGen/EvtGenBase/EvtLASSAmp.cpp [moved from TEvtGen/EvtGenBase/EvtLASSAmp.cxx with 85% similarity]
TEvtGen/EvtGenBase/EvtLASSAmp.hh
TEvtGen/EvtGenBase/EvtMBreitWigner.cpp [moved from TEvtGen/EvtGenBase/EvtMBreitWigner.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtMHelAmp.cpp [moved from TEvtGen/EvtGenBase/EvtMHelAmp.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtMNode.cpp [moved from TEvtGen/EvtGenBase/EvtMNode.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtMParticle.cpp [moved from TEvtGen/EvtGenBase/EvtMParticle.cxx with 88% similarity]
TEvtGen/EvtGenBase/EvtMParticle.hh
TEvtGen/EvtGenBase/EvtMRes.cpp [moved from TEvtGen/EvtGenBase/EvtMRes.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtMTree.cpp [moved from TEvtGen/EvtGenBase/EvtMTree.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtMTrivialLS.cpp [moved from TEvtGen/EvtGenBase/EvtMTrivialLS.cxx with 78% similarity]
TEvtGen/EvtGenBase/EvtMTrivialLS.hh
TEvtGen/EvtGenBase/EvtMacros.hh
TEvtGen/EvtGenBase/EvtManyDeltaFuncLineShape.cpp [moved from TEvtGen/EvtGenBase/EvtManyDeltaFuncLineShape.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtMassAmp.cpp [moved from TEvtGen/EvtGenBase/EvtMassAmp.cxx with 97% similarity]
TEvtGen/EvtGenBase/EvtMassAmp.hh
TEvtGen/EvtGenBase/EvtMatrix.hh
TEvtGen/EvtGenBase/EvtModel.cpp [moved from TEvtGen/EvtGenBase/EvtModel.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtModelAlias.cpp [moved from TEvtGen/EvtGenBase/EvtModelAlias.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtMultiChannelParser.cpp [moved from TEvtGen/EvtGenBase/EvtMultiChannelParser.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtMultiChannelParser.hh
TEvtGen/EvtGenBase/EvtNeutrinoParticle.cpp [moved from TEvtGen/EvtGenBase/EvtNeutrinoParticle.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtNonresonantAmp.cpp [moved from TEvtGen/EvtGenBase/EvtNonresonantAmp.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtOrthogVector.cpp [moved from TEvtGen/EvtGenBase/EvtOrthogVector.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtPDL.cpp [moved from TEvtGen/EvtGenBase/EvtPDL.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtPDL.hh
TEvtGen/EvtGenBase/EvtParser.cpp [moved from TEvtGen/EvtGenBase/EvtParser.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtParserXml.cpp [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtParserXml.hh [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtPartProp.cpp [moved from TEvtGen/EvtGenBase/EvtPartProp.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtPartProp.hh
TEvtGen/EvtGenBase/EvtParticle.cpp [moved from TEvtGen/EvtGenBase/EvtParticle.cxx with 89% similarity]
TEvtGen/EvtGenBase/EvtParticle.hh
TEvtGen/EvtGenBase/EvtParticleDecay.cpp [moved from TEvtGen/EvtGenBase/EvtParticleDecay.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtParticleDecayList.cpp [moved from TEvtGen/EvtGenBase/EvtParticleDecayList.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtParticleDecayList.hh
TEvtGen/EvtGenBase/EvtParticleFactory.cpp [moved from TEvtGen/EvtGenBase/EvtParticleFactory.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtPatches.hh
TEvtGen/EvtGenBase/EvtPdf.hh
TEvtGen/EvtGenBase/EvtPdfMax.hh
TEvtGen/EvtGenBase/EvtPdfSum.hh
TEvtGen/EvtGenBase/EvtPhotonParticle.cpp [moved from TEvtGen/EvtGenBase/EvtPhotonParticle.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtPhotonParticle.hh
TEvtGen/EvtGenBase/EvtPoint1D.cpp [moved from TEvtGen/EvtGenBase/EvtPoint1D.cxx with 93% similarity]
TEvtGen/EvtGenBase/EvtPoint1D.hh
TEvtGen/EvtGenBase/EvtPointPred.hh
TEvtGen/EvtGenBase/EvtPredGen.hh
TEvtGen/EvtGenBase/EvtPropBreitWigner.cpp [moved from TEvtGen/EvtGenBase/EvtPropBreitWigner.cxx with 92% similarity]
TEvtGen/EvtGenBase/EvtPropBreitWigner.hh
TEvtGen/EvtGenBase/EvtPropBreitWignerRel.cpp [moved from TEvtGen/EvtGenBase/EvtPropBreitWignerRel.cxx with 92% similarity]
TEvtGen/EvtGenBase/EvtPropBreitWignerRel.hh
TEvtGen/EvtGenBase/EvtPropFlatte.cpp [moved from TEvtGen/EvtGenBase/EvtPropFlatte.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtPropGounarisSakurai.cpp [moved from TEvtGen/EvtGenBase/EvtPropGounarisSakurai.cxx with 97% similarity]
TEvtGen/EvtGenBase/EvtPropGounarisSakurai.hh
TEvtGen/EvtGenBase/EvtPropagator.hh
TEvtGen/EvtGenBase/EvtPto3PAmp.cpp [moved from TEvtGen/EvtGenBase/EvtPto3PAmp.cxx with 98% similarity]
TEvtGen/EvtGenBase/EvtPto3PAmp.hh
TEvtGen/EvtGenBase/EvtPto3PAmpFactory.cpp [moved from TEvtGen/EvtGenBase/EvtPto3PAmpFactory.cxx with 94% similarity]
TEvtGen/EvtGenBase/EvtPto3PAmpFactory.hh
TEvtGen/EvtGenBase/EvtPto3PAmpSmpResolution.cpp [moved from TEvtGen/EvtGenBase/EvtPto3PAmpSmpResolution.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtRadCorr.cpp [moved from TEvtGen/EvtGenBase/EvtRadCorr.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtRanFor.cpp [moved from TEvtGen/EvtGenBase/EvtRanFor.cxx with 94% similarity]
TEvtGen/EvtGenBase/EvtRandom.cpp [moved from TEvtGen/EvtGenBase/EvtRandom.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtRandomEngine.hh
TEvtGen/EvtGenBase/EvtRanf.cpp [moved from TEvtGen/EvtGenBase/EvtRanf.cxx with 91% similarity]
TEvtGen/EvtGenBase/EvtRaritaSchwinger.cpp [moved from TEvtGen/EvtGenBase/EvtRaritaSchwinger.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtRaritaSchwingerParticle.cpp [moved from TEvtGen/EvtGenBase/EvtRaritaSchwingerParticle.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtRelBreitWignerBarrierFact.cpp [moved from TEvtGen/EvtGenBase/EvtRelBreitWignerBarrierFact.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtRelBreitWignerBarrierFact.hh
TEvtGen/EvtGenBase/EvtReport.cpp [moved from TEvtGen/EvtGenBase/EvtReport.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtResonance.cpp [moved from TEvtGen/EvtGenBase/EvtResonance.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtResonance2.cpp [moved from TEvtGen/EvtGenBase/EvtResonance2.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtScalarParticle.cpp [moved from TEvtGen/EvtGenBase/EvtScalarParticle.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtSecondary.cpp [moved from TEvtGen/EvtGenBase/EvtSecondary.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtSemiLeptonicAmp.cpp [moved from TEvtGen/EvtGenBase/EvtSemiLeptonicAmp.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtSemiLeptonicAmp.hh
TEvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp [new file with mode: 0644]
TEvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.cxx [deleted file]
TEvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.hh
TEvtGen/EvtGenBase/EvtSemiLeptonicFF.hh
TEvtGen/EvtGenBase/EvtSemiLeptonicScalarAmp.cpp [moved from TEvtGen/EvtGenBase/EvtSemiLeptonicScalarAmp.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtSemiLeptonicTensorAmp.cpp [moved from TEvtGen/EvtGenBase/EvtSemiLeptonicTensorAmp.cxx with 97% similarity]
TEvtGen/EvtGenBase/EvtSemiLeptonicVectorAmp.cpp [moved from TEvtGen/EvtGenBase/EvtSemiLeptonicVectorAmp.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtSimpleRandomEngine.cpp [moved from TEvtGen/EvtGenBase/EvtSimpleRandomEngine.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtSimpleRandomEngine.hh
TEvtGen/EvtGenBase/EvtSpinAmp.cpp [moved from TEvtGen/EvtGenBase/EvtSpinAmp.cxx with 99% similarity]
TEvtGen/EvtGenBase/EvtSpinDensity.cpp [moved from TEvtGen/EvtGenBase/EvtSpinDensity.cxx with 94% similarity]
TEvtGen/EvtGenBase/EvtSpinType.cpp [moved from TEvtGen/EvtGenBase/EvtSpinType.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtStdHep.cpp [moved from TEvtGen/EvtGenBase/EvtStdHep.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtStdlibRandomEngine.hh
TEvtGen/EvtGenBase/EvtStreamAdapter.hh
TEvtGen/EvtGenBase/EvtStreamInputIterator.hh
TEvtGen/EvtGenBase/EvtStringParticle.cpp [moved from TEvtGen/EvtGenBase/EvtStringParticle.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtSymTable.cpp [moved from TEvtGen/EvtGenBase/EvtSymTable.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtTensor3C.cpp [moved from TEvtGen/EvtGenBase/EvtTensor3C.cxx with 93% similarity]
TEvtGen/EvtGenBase/EvtTensor3C.hh
TEvtGen/EvtGenBase/EvtTensor4C.cpp [moved from TEvtGen/EvtGenBase/EvtTensor4C.cxx with 95% similarity]
TEvtGen/EvtGenBase/EvtTensor4C.hh
TEvtGen/EvtGenBase/EvtTensorParticle.cpp [moved from TEvtGen/EvtGenBase/EvtTensorParticle.cxx with 77% similarity]
TEvtGen/EvtGenBase/EvtTwoBodyKine.cpp [moved from TEvtGen/EvtGenBase/EvtTwoBodyKine.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtTwoBodyKine.hh
TEvtGen/EvtGenBase/EvtTwoBodyVertex.cpp [moved from TEvtGen/EvtGenBase/EvtTwoBodyVertex.cxx with 96% similarity]
TEvtGen/EvtGenBase/EvtTwoBodyVertex.hh
TEvtGen/EvtGenBase/EvtValError.cpp [moved from TEvtGen/EvtGenBase/EvtValError.cxx with 97% similarity]
TEvtGen/EvtGenBase/EvtValError.hh
TEvtGen/EvtGenBase/EvtVector3C.cpp [moved from TEvtGen/EvtGenBase/EvtVector3C.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtVector3C.hh
TEvtGen/EvtGenBase/EvtVector3R.cpp [moved from TEvtGen/EvtGenBase/EvtVector3R.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtVector4C.cpp [moved from TEvtGen/EvtGenBase/EvtVector4C.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtVector4R.cpp [moved from TEvtGen/EvtGenBase/EvtVector4R.cxx with 73% similarity]
TEvtGen/EvtGenBase/EvtVector4R.hh
TEvtGen/EvtGenBase/EvtVectorParticle.cpp [moved from TEvtGen/EvtGenBase/EvtVectorParticle.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtdFunction.cpp [moved from TEvtGen/EvtGenBase/EvtdFunction.cxx with 100% similarity]
TEvtGen/EvtGenBase/EvtdFunctionSingle.cpp [moved from TEvtGen/EvtGenBase/EvtdFunctionSingle.cxx with 98% similarity]
TEvtGen/EvtGenBase/cambiaNome.C [deleted file]
TEvtGen/EvtGenExternal/EvtExternalGenFactory.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtExternalGenFactory.hh [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtExternalGenList.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtExternalGenList.hh [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPHOTOS.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPHOTOS.hh [moved from TEvtGen/EvtGenModels/EvtPHOTOS.hh with 82% similarity]
TEvtGen/EvtGenExternal/EvtPhotosEngine.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPhotosEngine.hh [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPythia.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPythia.hh [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPythia6CommandConverter.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPythia6CommandConverter.hh [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPythiaEngine.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPythiaEngine.hh [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtPythiaRandom.hh [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtTauola.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtTauola.hh [moved from TEvtGen/EvtGenModels/EvtJscontCDF.hh with 62% similarity]
TEvtGen/EvtGenExternal/EvtTauolaEngine.cpp [new file with mode: 0644]
TEvtGen/EvtGenExternal/EvtTauolaEngine.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtAbsExternalGen.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBBScalar.cpp [moved from TEvtGen/EvtGenModels/EvtBBScalar.cxx with 94% similarity]
TEvtGen/EvtGenModels/EvtBBScalar.hh
TEvtGen/EvtGenModels/EvtBCVFF.cpp [new file with mode: 0755]
TEvtGen/EvtGenModels/EvtBCVFF.hh [new file with mode: 0755]
TEvtGen/EvtGenModels/EvtBHadronic.cpp [moved from TEvtGen/EvtGenModels/EvtBHadronic.cxx with 82% similarity]
TEvtGen/EvtGenModels/EvtBTo3pi.F
TEvtGen/EvtGenModels/EvtBTo3pi.inc [changed mode: 0644->0755]
TEvtGen/EvtGenModels/EvtBTo3piCP.cpp [moved from TEvtGen/EvtGenModels/EvtBTo3piCP.cxx with 87% similarity]
TEvtGen/EvtGenModels/EvtBTo3piMPP.F
TEvtGen/EvtGenModels/EvtBTo3piP00.F
TEvtGen/EvtGenModels/EvtBTo4piCP.cpp [moved from TEvtGen/EvtGenModels/EvtBTo4piCP.cxx with 99% similarity]
TEvtGen/EvtGenModels/EvtBToDDalitzCPK.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBToDDalitzCPK.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBToKpipi.F
TEvtGen/EvtGenModels/EvtBToKpipiCP.cpp [moved from TEvtGen/EvtGenModels/EvtBToKpipiCP.cxx with 88% similarity]
TEvtGen/EvtGenModels/EvtBToPlnuBK.cpp [moved from TEvtGen/EvtGenModels/EvtBToPlnuBK.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBToPlnuBKFF.cpp [moved from TEvtGen/EvtGenModels/EvtBToPlnuBKFF.cxx with 79% similarity]
TEvtGen/EvtGenModels/EvtBToPlnuBKFF.hh
TEvtGen/EvtGenModels/EvtBToVlnuBall.cpp [moved from TEvtGen/EvtGenModels/EvtBToVlnuBall.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBToVlnuBallFF.cpp [moved from TEvtGen/EvtGenModels/EvtBToVlnuBallFF.cxx with 84% similarity]
TEvtGen/EvtGenModels/EvtBToVlnuBallFF.hh
TEvtGen/EvtGenModels/EvtBaryonPCR.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBaryonPCR.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBaryonPCRFF.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBaryonPCRFF.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcBsNPi.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcBsNPi.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcBsStarNPi.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcBsStarNPi.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcPsiNPi.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcPsiNPi.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcToNPi.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcToNPi.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcVMuNu.cpp [new file with mode: 0755]
TEvtGen/EvtGenModels/EvtBcVMuNu.hh [new file with mode: 0755]
TEvtGen/EvtGenModels/EvtBcVNpi.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBcVNpi.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtBsquark.cpp [moved from TEvtGen/EvtGenModels/EvtBsquark.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBto2piCPiso.cpp [moved from TEvtGen/EvtGenModels/EvtBto2piCPiso.cxx with 82% similarity]
TEvtGen/EvtGenModels/EvtBto2piCPiso.hh
TEvtGen/EvtGenModels/EvtBtoKD3P.cpp [moved from TEvtGen/EvtGenModels/EvtBtoKD3P.cxx with 94% similarity]
TEvtGen/EvtGenModels/EvtBtoKD3P.hh
TEvtGen/EvtGenModels/EvtBtoKpiCPiso.cpp [moved from TEvtGen/EvtGenModels/EvtBtoKpiCPiso.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsEtap.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsEtap.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgamma.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgamma.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgammaAbsModel.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgammaAbsModel.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgammaAliGreub.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgammaAliGreub.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgammaFermiUtil.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgammaFermiUtil.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgammaFixedMass.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgammaFixedMass.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgammaFlatEnergy.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgammaFlatEnergy.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgammaKagan.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgammaKagan.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsgammaRootFinder.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsgammaRootFinder.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsll.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsll.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtBtoXsllUtil.cpp [moved from TEvtGen/EvtGenModels/EvtBtoXsllUtil.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtCBTo3piMPP.cpp [moved from TEvtGen/EvtGenModels/EvtCBTo3piMPP.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtCBTo3piP00.cpp [moved from TEvtGen/EvtGenModels/EvtCBTo3piP00.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtD0gammaDalitz.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtD0gammaDalitz.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtD0mixDalitz.cpp [moved from TEvtGen/EvtGenModels/EvtD0mixDalitz.cxx with 94% similarity]
TEvtGen/EvtGenModels/EvtD0mixDalitz.hh
TEvtGen/EvtGenModels/EvtDDalitz.cpp [moved from TEvtGen/EvtGenModels/EvtDDalitz.cxx with 53% similarity]
TEvtGen/EvtGenModels/EvtDMix.cpp [moved from TEvtGen/EvtGenModels/EvtDMix.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtDalitzDecayInfo.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtDalitzTable.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtDalitzTable.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtEta2MuMuGamma.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtEta2MuMuGamma.hh [moved from TEvtGen/EvtGenModels/EvtJscont.hh with 73% similarity]
TEvtGen/EvtGenModels/EvtEtaDalitz.cpp [moved from TEvtGen/EvtGenModels/EvtEtaDalitz.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtFlatQ2.cpp [moved from TEvtGen/EvtGenModels/EvtFlatQ2.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtGenModelsLinkDef.h [deleted file]
TEvtGen/EvtGenModels/EvtGenModelsLinkDefOLD.h [deleted file]
TEvtGen/EvtGenModels/EvtGenericDalitz.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtGenericDalitz.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtGoityRoberts.cpp [moved from TEvtGen/EvtGenModels/EvtGoityRoberts.cxx with 87% similarity]
TEvtGen/EvtGenModels/EvtHQET.cpp [moved from TEvtGen/EvtGenModels/EvtHQET.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtHQET2.cpp [moved from TEvtGen/EvtGenModels/EvtHQET2.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtHQET2FF.cpp [moved from TEvtGen/EvtGenModels/EvtHQET2FF.cxx with 86% similarity]
TEvtGen/EvtGenModels/EvtHQET2FF.hh
TEvtGen/EvtGenModels/EvtHQETFF.cpp [moved from TEvtGen/EvtGenModels/EvtHQETFF.cxx with 84% similarity]
TEvtGen/EvtGenModels/EvtHQETFF.hh
TEvtGen/EvtGenModels/EvtHelAmp.cpp [moved from TEvtGen/EvtGenModels/EvtHelAmp.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtHypNonLepton.cpp [moved from TEvtGen/EvtGenModels/EvtHypNonLepton.cxx with 99% similarity]
TEvtGen/EvtGenModels/EvtISGW.cpp [moved from TEvtGen/EvtGenModels/EvtISGW.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtISGW2.cpp [moved from TEvtGen/EvtGenModels/EvtISGW2.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtISGW2FF.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtISGW2FF.cxx [deleted file]
TEvtGen/EvtGenModels/EvtISGW2FF.hh
TEvtGen/EvtGenModels/EvtISGWFF.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtISGWFF.cxx [deleted file]
TEvtGen/EvtGenModels/EvtISGWFF.hh
TEvtGen/EvtGenModels/EvtIntervalDecayAmp.hh
TEvtGen/EvtGenModels/EvtItgAbsFunction.cpp [moved from TEvtGen/EvtGenModels/EvtItgAbsFunction.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtItgAbsIntegrator.cpp [moved from TEvtGen/EvtGenModels/EvtItgAbsIntegrator.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtItgFourCoeffFcn.cpp [moved from TEvtGen/EvtGenModels/EvtItgFourCoeffFcn.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtItgFunction.cpp [moved from TEvtGen/EvtGenModels/EvtItgFunction.cxx with 94% similarity]
TEvtGen/EvtGenModels/EvtItgFunction.hh
TEvtGen/EvtGenModels/EvtItgPtrFunction.cpp [moved from TEvtGen/EvtGenModels/EvtItgPtrFunction.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtItgSimpsonIntegrator.cpp [moved from TEvtGen/EvtGenModels/EvtItgSimpsonIntegrator.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtItgThreeCoeffFcn.cpp [moved from TEvtGen/EvtGenModels/EvtItgThreeCoeffFcn.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtItgTwoCoeffFcn.cpp [moved from TEvtGen/EvtGenModels/EvtItgTwoCoeffFcn.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtJetSet.cxx [deleted file]
TEvtGen/EvtGenModels/EvtJetSet.hh [deleted file]
TEvtGen/EvtGenModels/EvtJetSetCDF.cxx [deleted file]
TEvtGen/EvtGenModels/EvtJetSetCDF.hh [deleted file]
TEvtGen/EvtGenModels/EvtJetSetCDFInit.F [deleted file]
TEvtGen/EvtGenModels/EvtJetSetInit.F [deleted file]
TEvtGen/EvtGenModels/EvtJscont.cxx [deleted file]
TEvtGen/EvtGenModels/EvtJscontCDF.cxx [deleted file]
TEvtGen/EvtGenModels/EvtKKLambdaC.cpp [moved from TEvtGen/EvtGenModels/EvtKKLambdaC.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtKKLambdaCFF.cpp [moved from TEvtGen/EvtGenModels/EvtKKLambdaCFF.cxx with 76% similarity]
TEvtGen/EvtGenModels/EvtKKLambdaCFF.hh
TEvtGen/EvtGenModels/EvtKstarnunu.cpp [moved from TEvtGen/EvtGenModels/EvtKstarnunu.cxx with 93% similarity]
TEvtGen/EvtGenModels/EvtKstarstargamma.cpp [moved from TEvtGen/EvtGenModels/EvtKstarstargamma.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtLNuGamma.cpp [moved from TEvtGen/EvtGenModels/EvtLNuGamma.cxx with 95% similarity]
TEvtGen/EvtGenModels/EvtLambdaB2LambdaV.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtLambdaB2LambdaV.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtLambdaP_BarGamma.cpp [moved from TEvtGen/EvtGenModels/EvtLambdaP_BarGamma.cxx with 87% similarity]
TEvtGen/EvtGenModels/EvtLambdaP_BarGamma.hh
TEvtGen/EvtGenModels/EvtLb2Lll.cpp [moved from TEvtGen/EvtGenModels/EvtLb2Lll.cxx with 96% similarity]
TEvtGen/EvtGenModels/EvtLb2Lll.hh
TEvtGen/EvtGenModels/EvtMelikhov.cpp [moved from TEvtGen/EvtGenModels/EvtMelikhov.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtMelikhovFF.cpp [moved from TEvtGen/EvtGenModels/EvtMelikhovFF.cxx with 86% similarity]
TEvtGen/EvtGenModels/EvtMelikhovFF.hh
TEvtGen/EvtGenModels/EvtModelReg.cpp [moved from TEvtGen/EvtGenModels/EvtModelReg.cxx with 84% similarity]
TEvtGen/EvtGenModels/EvtModelReg.hh
TEvtGen/EvtGenModels/EvtMultibody.cpp [moved from TEvtGen/EvtGenModels/EvtMultibody.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtNoRadCorr.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtOmegaDalitz.cpp [moved from TEvtGen/EvtGenModels/EvtOmegaDalitz.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtPFermi.cpp [moved from TEvtGen/EvtGenModels/EvtPFermi.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtPHOTOS.cxx [deleted file]
TEvtGen/EvtGenModels/EvtPVVCPLH.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtPVVCPLH.hh [moved from TEvtGen/EvtGenModels/EvtPyGaGa.hh with 56% similarity]
TEvtGen/EvtGenModels/EvtPartWave.cpp [moved from TEvtGen/EvtGenModels/EvtPartWave.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtPhiDalitz.cpp [moved from TEvtGen/EvtGenModels/EvtPhiDalitz.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtPhsp.cpp [moved from TEvtGen/EvtGenModels/EvtPhsp.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtPi0Dalitz.cpp [moved from TEvtGen/EvtGenModels/EvtPi0Dalitz.cxx with 90% similarity]
TEvtGen/EvtGenModels/EvtPropSLPole.cpp [moved from TEvtGen/EvtGenModels/EvtPropSLPole.cxx with 99% similarity]
TEvtGen/EvtGenModels/EvtPto3P.cpp [moved from TEvtGen/EvtGenModels/EvtPto3P.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtPto3P.hh
TEvtGen/EvtGenModels/EvtPyGaGa.cxx [deleted file]
TEvtGen/EvtGenModels/EvtPycont.cxx [deleted file]
TEvtGen/EvtGenModels/EvtPycont.hh [deleted file]
TEvtGen/EvtGenModels/EvtPythia.cxx [deleted file]
TEvtGen/EvtGenModels/EvtPythia.hh [deleted file]
TEvtGen/EvtGenModels/EvtSLBKPole.cpp [moved from TEvtGen/EvtGenModels/EvtSLBKPole.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtSLBKPoleFF.cpp [moved from TEvtGen/EvtGenModels/EvtSLBKPoleFF.cxx with 88% similarity]
TEvtGen/EvtGenModels/EvtSLBKPoleFF.hh
TEvtGen/EvtGenModels/EvtSLN.cpp [moved from TEvtGen/EvtGenModels/EvtSLN.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtSLPole.cpp [moved from TEvtGen/EvtGenModels/EvtSLPole.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtSLPoleFF.cpp [moved from TEvtGen/EvtGenModels/EvtSLPoleFF.cxx with 90% similarity]
TEvtGen/EvtGenModels/EvtSLPoleFF.hh
TEvtGen/EvtGenModels/EvtSSDCP.cpp [moved from TEvtGen/EvtGenModels/EvtSSDCP.cxx with 87% similarity]
TEvtGen/EvtGenModels/EvtSSDCP.hh
TEvtGen/EvtGenModels/EvtSSD_DirectCP.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtSSD_DirectCP.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtSSSCP.cpp [moved from TEvtGen/EvtGenModels/EvtSSSCP.cxx with 80% similarity]
TEvtGen/EvtGenModels/EvtSSSCP.hh
TEvtGen/EvtGenModels/EvtSSSCPT.cpp [moved from TEvtGen/EvtGenModels/EvtSSSCPT.cxx with 97% similarity]
TEvtGen/EvtGenModels/EvtSSSCPpng.cpp [moved from TEvtGen/EvtGenModels/EvtSSSCPpng.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtSTS.cpp [moved from TEvtGen/EvtGenModels/EvtSTS.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtSTSCP.cpp [moved from TEvtGen/EvtGenModels/EvtSTSCP.cxx with 84% similarity]
TEvtGen/EvtGenModels/EvtSTSCP.hh
TEvtGen/EvtGenModels/EvtSVP.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtSVP.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtSVPCP.cpp [moved from TEvtGen/EvtGenModels/EvtSVPCP.cxx with 84% similarity]
TEvtGen/EvtGenModels/EvtSVPCP.hh
TEvtGen/EvtGenModels/EvtSVPHelAmp.cpp [moved from TEvtGen/EvtGenModels/EvtSVPHelAmp.cxx with 95% similarity]
TEvtGen/EvtGenModels/EvtSVS.cpp [moved from TEvtGen/EvtGenModels/EvtSVS.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtSVSCP.cpp [moved from TEvtGen/EvtGenModels/EvtSVSCP.cxx with 83% similarity]
TEvtGen/EvtGenModels/EvtSVSCP.hh
TEvtGen/EvtGenModels/EvtSVSCPLH.cpp [moved from TEvtGen/EvtGenModels/EvtSVSCPLH.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtSVSCPiso.cpp [moved from TEvtGen/EvtGenModels/EvtSVSCPiso.cxx with 96% similarity]
TEvtGen/EvtGenModels/EvtSVSNONCPEIGEN.cpp [moved from TEvtGen/EvtGenModels/EvtSVSNONCPEIGEN.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtSVVCP.cpp [moved from TEvtGen/EvtGenModels/EvtSVVCP.cxx with 80% similarity]
TEvtGen/EvtGenModels/EvtSVVCP.hh
TEvtGen/EvtGenModels/EvtSVVCPLH.cpp [moved from TEvtGen/EvtGenModels/EvtSVVCPLH.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtSVVHelAmp.cpp [moved from TEvtGen/EvtGenModels/EvtSVVHelAmp.cxx with 83% similarity]
TEvtGen/EvtGenModels/EvtSVVHelAmp.hh
TEvtGen/EvtGenModels/EvtSVVHelCPMix.cpp [moved from TEvtGen/EvtGenModels/EvtSVVHelCPMix.cxx with 82% similarity]
TEvtGen/EvtGenModels/EvtSVVHelCPMix.hh
TEvtGen/EvtGenModels/EvtSVVNONCPEIGEN.cpp [moved from TEvtGen/EvtGenModels/EvtSVVNONCPEIGEN.cxx with 79% similarity]
TEvtGen/EvtGenModels/EvtSVVNONCPEIGEN.hh
TEvtGen/EvtGenModels/EvtSingleParticle.cpp [moved from TEvtGen/EvtGenModels/EvtSingleParticle.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtSll.cpp [moved from TEvtGen/EvtGenModels/EvtSll.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtTSS.cpp [moved from TEvtGen/EvtGenModels/EvtTSS.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtTVP.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtTVP.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtTVSPwave.cpp [moved from TEvtGen/EvtGenModels/EvtTVSPwave.cxx with 83% similarity]
TEvtGen/EvtGenModels/EvtTVSPwave.hh
TEvtGen/EvtGenModels/EvtTauHadnu.cpp [moved from TEvtGen/EvtGenModels/EvtTauHadnu.cxx with 99% similarity]
TEvtGen/EvtGenModels/EvtTauScalarnu.cpp [moved from TEvtGen/EvtGenModels/EvtTauScalarnu.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtTauVectornu.cpp [moved from TEvtGen/EvtGenModels/EvtTauVectornu.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtTaulnunu.cpp [moved from TEvtGen/EvtGenModels/EvtTaulnunu.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVPHOtoV.cpp [moved from TEvtGen/EvtGenModels/EvtVPHOtoV.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVPHOtoVISR.cpp [moved from TEvtGen/EvtGenModels/EvtVPHOtoVISR.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVPHOtoVISRHi.cpp [moved from TEvtGen/EvtGenModels/EvtVPHOtoVISRHi.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVSPPwave.cpp [moved from TEvtGen/EvtGenModels/EvtVSPPwave.cxx with 97% similarity]
TEvtGen/EvtGenModels/EvtVSS.cpp [moved from TEvtGen/EvtGenModels/EvtVSS.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVSSBMixCPT.cpp [moved from TEvtGen/EvtGenModels/EvtVSSBMixCPT.cxx with 92% similarity]
TEvtGen/EvtGenModels/EvtVSSBMixCPT.hh
TEvtGen/EvtGenModels/EvtVSSMix.cpp [moved from TEvtGen/EvtGenModels/EvtVSSMix.cxx with 95% similarity]
TEvtGen/EvtGenModels/EvtVSSMix.hh
TEvtGen/EvtGenModels/EvtVVP.cpp [moved from TEvtGen/EvtGenModels/EvtVVP.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVVPIPI_WEIGHTED.cpp [moved from TEvtGen/EvtGenModels/EvtVVPIPI_WEIGHTED.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVVSPwave.cpp [moved from TEvtGen/EvtGenModels/EvtVVSPwave.cxx with 94% similarity]
TEvtGen/EvtGenModels/EvtVVpipi.cpp [moved from TEvtGen/EvtGenModels/EvtVVpipi.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVectorIsr.cpp [moved from TEvtGen/EvtGenModels/EvtVectorIsr.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVll.cpp [moved from TEvtGen/EvtGenModels/EvtVll.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVtoSll.cpp [moved from TEvtGen/EvtGenModels/EvtVtoSll.cxx with 97% similarity]
TEvtGen/EvtGenModels/EvtVub.cpp [moved from TEvtGen/EvtGenModels/EvtVub.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVubAC.cpp [moved from TEvtGen/EvtGenModels/EvtVubAC.cxx with 99% similarity]
TEvtGen/EvtGenModels/EvtVubAC.hh
TEvtGen/EvtGenModels/EvtVubBLNP.cpp [moved from TEvtGen/EvtGenModels/EvtVubBLNP.cxx with 97% similarity]
TEvtGen/EvtGenModels/EvtVubBLNPHybrid.cpp [moved from TEvtGen/EvtGenModels/EvtVubBLNPHybrid.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtVubHybrid.cpp [moved from TEvtGen/EvtGenModels/EvtVubHybrid.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtVubNLO.cpp [moved from TEvtGen/EvtGenModels/EvtVubNLO.cxx with 99% similarity]
TEvtGen/EvtGenModels/EvtVubNLO.hh
TEvtGen/EvtGenModels/EvtVubdGamma.cpp [moved from TEvtGen/EvtGenModels/EvtVubdGamma.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtWilsonCoefficients.cpp [moved from TEvtGen/EvtGenModels/EvtWilsonCoeficients.cxx with 77% similarity]
TEvtGen/EvtGenModels/EvtWilsonCoefficients.hh [moved from TEvtGen/EvtGenModels/EvtWilsonCoeficients.hh with 96% similarity]
TEvtGen/EvtGenModels/EvtWnPi.cpp [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtWnPi.hh [new file with mode: 0644]
TEvtGen/EvtGenModels/EvtXPsiGamma.cpp [new file with mode: 0755]
TEvtGen/EvtGenModels/EvtXPsiGamma.hh [new file with mode: 0755]
TEvtGen/EvtGenModels/EvtY3SToY1SpipiMoxhay.cpp [moved from TEvtGen/EvtGenModels/EvtY3SToY1SpipiMoxhay.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtYmSToYnSpipiCLEO.cpp [moved from TEvtGen/EvtGenModels/EvtYmSToYnSpipiCLEO.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtbTosllAli.cpp [moved from TEvtGen/EvtGenModels/EvtbTosllAli.cxx with 95% similarity]
TEvtGen/EvtGenModels/EvtbTosllAliFF.cpp [moved from TEvtGen/EvtGenModels/EvtbTosllAliFF.cxx with 93% similarity]
TEvtGen/EvtGenModels/EvtbTosllAmp.cpp [moved from TEvtGen/EvtGenModels/EvtbTosllAmp.cxx with 98% similarity]
TEvtGen/EvtGenModels/EvtbTosllAmp.hh
TEvtGen/EvtGenModels/EvtbTosllBall.cpp [moved from TEvtGen/EvtGenModels/EvtbTosllBall.cxx with 96% similarity]
TEvtGen/EvtGenModels/EvtbTosllBallFF.cpp [moved from TEvtGen/EvtGenModels/EvtbTosllBallFF.cxx with 94% similarity]
TEvtGen/EvtGenModels/EvtbTosllFF.hh
TEvtGen/EvtGenModels/EvtbTosllScalarAmp.cpp [moved from TEvtGen/EvtGenModels/EvtbTosllScalarAmp.cxx with 100% similarity]
TEvtGen/EvtGenModels/EvtbTosllVectorAmp.cpp [moved from TEvtGen/EvtGenModels/EvtbTosllVectorAmp.cxx with 89% similarity]
TEvtGen/EvtGenModels/Makefile [deleted file]
TEvtGen/EvtGenModels/Pythia.F [deleted file]
TEvtGen/EvtGenModels/begevtgenget.F [deleted file]
TEvtGen/EvtGenModels/begevtgengetx.F [deleted file]
TEvtGen/EvtGenModels/begevtgenstore.F [deleted file]
TEvtGen/EvtGenModels/begevtgenstorex.F [deleted file]
TEvtGen/EvtGenModels/continuum.F [deleted file]
TEvtGen/EvtGenModels/continuumCDF.F [deleted file]
TEvtGen/EvtGenModels/jetset1.F [deleted file]
TEvtGen/EvtGenModels/jetset7410CDF.F [deleted file]
TEvtGen/EvtGenModels/jetsetCDF.F [deleted file]
TEvtGen/EvtGenModels/jetsetcont.F [deleted file]
TEvtGen/EvtGenModels/pykcut.F [deleted file]
TEvtGen/EvtGenModels/pytime.F [deleted file]
TEvtGen/EvtGenModels/rly.cxx [deleted file]
TEvtGen/EvtGenModels/stdhep.inc [changed mode: 0644->0755]
TEvtGen/HepMC/CompareGenEvent.cc [new file with mode: 0644]
TEvtGen/HepMC/CompareGenEvent.h [new file with mode: 0644]
TEvtGen/HepMC/Flow.cc [new file with mode: 0644]
TEvtGen/HepMC/Flow.h [new file with mode: 0644]
TEvtGen/HepMC/GenCrossSection.cc [new file with mode: 0644]
TEvtGen/HepMC/GenCrossSection.h [new file with mode: 0644]
TEvtGen/HepMC/GenEvent.cc [new file with mode: 0644]
TEvtGen/HepMC/GenEvent.h [new file with mode: 0644]
TEvtGen/HepMC/GenEventStreamIO.cc [new file with mode: 0644]
TEvtGen/HepMC/GenParticle.cc [new file with mode: 0644]
TEvtGen/HepMC/GenParticle.h [new file with mode: 0644]
TEvtGen/HepMC/GenRanges.cc [new file with mode: 0644]
TEvtGen/HepMC/GenRanges.h [new file with mode: 0644]
TEvtGen/HepMC/GenVertex.cc [new file with mode: 0644]
TEvtGen/HepMC/GenVertex.h [new file with mode: 0644]
TEvtGen/HepMC/HEPEVT_Wrapper.cc [new file with mode: 0644]
TEvtGen/HepMC/HEPEVT_Wrapper.h [new file with mode: 0644]
TEvtGen/HepMC/HeavyIon.cc [new file with mode: 0644]
TEvtGen/HepMC/HeavyIon.h [new file with mode: 0644]
TEvtGen/HepMC/HepMCDefs.h [new file with mode: 0644]
TEvtGen/HepMC/HerwigWrapper.cc [new file with mode: 0644]
TEvtGen/HepMC/HerwigWrapper.h [new file with mode: 0644]
TEvtGen/HepMC/IO_AsciiParticles.cc [new file with mode: 0644]
TEvtGen/HepMC/IO_AsciiParticles.h [new file with mode: 0644]
TEvtGen/HepMC/IO_BaseClass.h [new file with mode: 0644]
TEvtGen/HepMC/IO_Exception.h [new file with mode: 0644]
TEvtGen/HepMC/IO_GenEvent.cc [new file with mode: 0644]
TEvtGen/HepMC/IO_GenEvent.h [new file with mode: 0644]
TEvtGen/HepMC/IO_HEPEVT.cc [new file with mode: 0644]
TEvtGen/HepMC/IO_HEPEVT.h [new file with mode: 0644]
TEvtGen/HepMC/IO_HERWIG.cc [new file with mode: 0644]
TEvtGen/HepMC/IO_HERWIG.h [new file with mode: 0644]
TEvtGen/HepMC/IteratorRange.h [new file with mode: 0644]
TEvtGen/HepMC/PdfInfo.cc [new file with mode: 0644]
TEvtGen/HepMC/PdfInfo.h [new file with mode: 0644]
TEvtGen/HepMC/Polarization.cc [new file with mode: 0644]
TEvtGen/HepMC/Polarization.h [new file with mode: 0644]
TEvtGen/HepMC/PythiaWrapper.h [new file with mode: 0644]
TEvtGen/HepMC/PythiaWrapper6_4.h [new file with mode: 0644]
TEvtGen/HepMC/PythiaWrapper6_4_WIN32.h [new file with mode: 0644]
TEvtGen/HepMC/SearchVector.cc [new file with mode: 0644]
TEvtGen/HepMC/SearchVector.h [new file with mode: 0644]
TEvtGen/HepMC/SimpleVector.h [new file with mode: 0644]
TEvtGen/HepMC/SimpleVector.icc [new file with mode: 0644]
TEvtGen/HepMC/StreamHelpers.cc [new file with mode: 0644]
TEvtGen/HepMC/StreamHelpers.h [new file with mode: 0644]
TEvtGen/HepMC/StreamInfo.cc [new file with mode: 0644]
TEvtGen/HepMC/StreamInfo.h [new file with mode: 0644]
TEvtGen/HepMC/TempParticleMap.h [new file with mode: 0644]
TEvtGen/HepMC/Units.cc [new file with mode: 0644]
TEvtGen/HepMC/Units.h [new file with mode: 0644]
TEvtGen/HepMC/Version.h [new file with mode: 0644]
TEvtGen/HepMC/WeightContainer.cc [new file with mode: 0644]
TEvtGen/HepMC/WeightContainer.h [new file with mode: 0644]
TEvtGen/HepMC/enable_if.h [new file with mode: 0644]
TEvtGen/HepMC/filterEvent.cc [new file with mode: 0644]
TEvtGen/HepMC/is_arithmetic.h [new file with mode: 0644]
TEvtGen/PHOTOS/CMakeLists.txt [deleted file]
TEvtGen/PHOTOS/CMake_libPHOTOS.txt [deleted file]
TEvtGen/PHOTOS/module.mk [deleted file]
TEvtGen/PHOTOS/phcork.F [deleted file]
TEvtGen/PHOTOS/phint.F [deleted file]
TEvtGen/PHOTOS/phint1.F [deleted file]
TEvtGen/PHOTOS/phlupa.F [deleted file]
TEvtGen/PHOTOS/phoan1.F [deleted file]
TEvtGen/PHOTOS/phoan2.F [deleted file]
TEvtGen/PHOTOS/phobo3.F [deleted file]
TEvtGen/PHOTOS/phobos.F [deleted file]
TEvtGen/PHOTOS/phocha.F [deleted file]
TEvtGen/PHOTOS/phochk.F [deleted file]
TEvtGen/PHOTOS/phocin.F [deleted file]
TEvtGen/PHOTOS/phocor.F [deleted file]
TEvtGen/PHOTOS/phodo.F [deleted file]
TEvtGen/PHOTOS/phoene.F [deleted file]
TEvtGen/PHOTOS/phoerr.F [deleted file]
TEvtGen/PHOTOS/phofac.F [deleted file]
TEvtGen/PHOTOS/phoin.F [deleted file]
TEvtGen/PHOTOS/phoinf.F [deleted file]
TEvtGen/PHOTOS/phoini.F [deleted file]
TEvtGen/PHOTOS/phomak.F [deleted file]
TEvtGen/PHOTOS/phooma.F [deleted file]
TEvtGen/PHOTOS/phoout.F [deleted file]
TEvtGen/PHOTOS/phopre.F [deleted file]
TEvtGen/PHOTOS/phoran.F [deleted file]
TEvtGen/PHOTOS/phorep.F [deleted file]
TEvtGen/PHOTOS/phorin.F [deleted file]
TEvtGen/PHOTOS/phoro2.F [deleted file]
TEvtGen/PHOTOS/phoro3.F [deleted file]
TEvtGen/PHOTOS/phospi.F [deleted file]
TEvtGen/PHOTOS/photos.F [deleted file]
TEvtGen/PHOTOS/photos_get.F [deleted file]
TEvtGen/PHOTOS/photos_make.F [deleted file]
TEvtGen/PHOTOS/photos_set.F [deleted file]
TEvtGen/PHOTOS/photri.F [deleted file]
TEvtGen/PHOTOS/photwo.F [deleted file]
TEvtGen/PHOTOS/phtype.F [deleted file]
TEvtGen/Photos/Log.cxx [new file with mode: 0644]
TEvtGen/Photos/Log.h [new file with mode: 0644]
TEvtGen/Photos/PH_HEPEVT_Interface.cxx [new file with mode: 0644]
TEvtGen/Photos/PH_HEPEVT_Interface.h [new file with mode: 0644]
TEvtGen/Photos/Photos.cxx [new file with mode: 0644]
TEvtGen/Photos/Photos.h [new file with mode: 0644]
TEvtGen/Photos/PhotosBranch.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosBranch.h [new file with mode: 0644]
TEvtGen/Photos/PhotosDebugRandom.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosDebugRandom.h [new file with mode: 0644]
TEvtGen/Photos/PhotosEvent.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosEvent.h [new file with mode: 0644]
TEvtGen/Photos/PhotosHEPEVTEvent.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosHEPEVTEvent.h [new file with mode: 0644]
TEvtGen/Photos/PhotosHEPEVTParticle.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosHEPEVTParticle.h [new file with mode: 0644]
TEvtGen/Photos/PhotosHepMCEvent.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosHepMCEvent.h [new file with mode: 0644]
TEvtGen/Photos/PhotosHepMCParticle.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosHepMCParticle.h [new file with mode: 0644]
TEvtGen/Photos/PhotosParticle.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosParticle.h [new file with mode: 0644]
TEvtGen/Photos/PhotosRandom.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosRandom.h [new file with mode: 0644]
TEvtGen/Photos/PhotosUtilities.cxx [new file with mode: 0644]
TEvtGen/Photos/PhotosUtilities.h [new file with mode: 0644]
TEvtGen/Photos/f_Init.h [new file with mode: 0644]
TEvtGen/Photos/forW-MEc.cxx [new file with mode: 0644]
TEvtGen/Photos/forW-MEc.h [new file with mode: 0644]
TEvtGen/Photos/forZ-MEc.cxx [new file with mode: 0644]
TEvtGen/Photos/forZ-MEc.h [new file with mode: 0644]
TEvtGen/Photos/photosC.cxx [new file with mode: 0644]
TEvtGen/README.txt
TEvtGen/Tauola/DecayList.cxx [new file with mode: 0644]
TEvtGen/Tauola/DecayList.h [new file with mode: 0644]
TEvtGen/Tauola/Log.cxx [new file with mode: 0644]
TEvtGen/Tauola/Log.h [new file with mode: 0644]
TEvtGen/Tauola/Plots.cxx [new file with mode: 0644]
TEvtGen/Tauola/Plots.h [new file with mode: 0644]
TEvtGen/Tauola/Tauola.cxx [new file with mode: 0644]
TEvtGen/Tauola/Tauola.h [new file with mode: 0644]
TEvtGen/Tauola/TauolaEvent.cxx [new file with mode: 0644]
TEvtGen/Tauola/TauolaEvent.h [new file with mode: 0644]
TEvtGen/Tauola/TauolaHEPEVTEvent.cxx [new file with mode: 0644]
TEvtGen/Tauola/TauolaHEPEVTEvent.h [new file with mode: 0644]
TEvtGen/Tauola/TauolaHEPEVTParticle.cxx [new file with mode: 0644]
TEvtGen/Tauola/TauolaHEPEVTParticle.h [new file with mode: 0644]
TEvtGen/Tauola/TauolaHepMCEvent.cxx [new file with mode: 0644]
TEvtGen/Tauola/TauolaHepMCEvent.h [new file with mode: 0644]
TEvtGen/Tauola/TauolaHepMCParticle.cxx [new file with mode: 0644]
TEvtGen/Tauola/TauolaHepMCParticle.h [new file with mode: 0644]
TEvtGen/Tauola/TauolaParticle.cxx [new file with mode: 0644]
TEvtGen/Tauola/TauolaParticle.h [new file with mode: 0644]
TEvtGen/Tauola/TauolaParticlePair.cxx [new file with mode: 0644]
TEvtGen/Tauola/TauolaParticlePair.h [new file with mode: 0644]
TEvtGen/Tauola/f_Decay.cxx [new file with mode: 0644]
TEvtGen/Tauola/f_Decay.h [new file with mode: 0644]
TEvtGen/Tauola/f_FilHep.cxx [new file with mode: 0644]
TEvtGen/Tauola/f_FilHep.h [new file with mode: 0644]
TEvtGen/Tauola/f_Init.cxx [new file with mode: 0644]
TEvtGen/Tauola/f_Init.h [new file with mode: 0644]
TEvtGen/Tauola/f_Variables.h [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/curr_cleo.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/f3pi.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/formf.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/README [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/funct_declar.inc [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/parameter.inc [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/f3pi_rcht.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/funct_3pi.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/FA1RCHL.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/ffwid3pi.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/funct_rpt.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gaus_integr.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gfact.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1Tab.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1TabKKpi.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/value_parameter.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fit.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fitKKpi.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/new-currents/other-currents/frho_pi_belle.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/pkorb.f [new file with mode: 0644]
TEvtGen/Tauola/tauola-fortran/tauola.f [new file with mode: 0644]
TEvtGen/Tauola/tauola_extras.f [new file with mode: 0644]
TPC/Rec/AliTPCRecoParam.cxx
TPC/Rec/AliTPCRecoParam.h
TPC/Rec/AliTPCtrack.cxx
TPC/Rec/AliTPCtracker.cxx
TPC/Sim/AliTPCDigitizer.cxx
TPC/Sim/AliTPCDigitizer.h
TPC/fastSimul/AliTPCclusterFast.cxx
TRD/AliTRDPreprocessor.cxx
TRD/AliTRDReconstructor.cxx
TRD/AliTRDReconstructor.h
TRD/AliTRDrawData.cxx
TRD/AliTRDrecoParam.cxx
TRD/AliTRDrecoParam.h
TRD/AliTRDseedV1.cxx
TRD/AliTRDseedV1.h
TRD/AliTRDtrackV1.cxx
TRD/AliTRDtrackerV1.cxx

index c04e121296cdd4a40d7f1eff80fef560d31bb7c3..e0dde77040b482d96c815547a1f6e4e75bcf057d 100644 (file)
@@ -2143,8 +2143,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD()
 
   AliCodeTimerAuto("",0);
 
-  if (fRefitVertexTracks) AliESDUtils::RefitESDVertexTracks(esd,fRefitVertexTracks,
-                                                           fRefitVertexTracksNCuts ? fRefitVertexTracksCuts:0);
+  if (fRefitVertexTracks>=0) AliESDUtils::RefitESDVertexTracks(esd,fRefitVertexTracks,
+                                                              fRefitVertexTracksNCuts ? fRefitVertexTracksCuts:0);
   
   fOldESDformat = ( esd->GetAliESDOld() != 0x0 );
  
index d3d99d0c0026c34ba354f54ee21e8bb1f3681c84..ac7783580fff9ca1f5de7464df22c8fd91e429c7 100644 (file)
@@ -348,8 +348,8 @@ void AliPHOSTenderSupply::ProcessEvent()
       clu->SetEmcCpvDistance(r);    
       clu->SetChi2(TestLambda(clu->E(),clu->GetM20(),clu->GetM02()));                     //not yet implemented
       Double_t tof=EvalTOF(&cluPHOS,cells); 
-      if(TMath::Abs(tof-clu->GetTOF())>100.e-9) //something wrong in cell TOF!
-       tof=clu->GetTOF() ;
+//      if(TMath::Abs(tof-clu->GetTOF())>100.e-9) //something wrong in cell TOF!
+//     tof=clu->GetTOF() ;
       clu->SetTOF(tof);       
       Double_t minDist=clu->GetDistanceToBadChannel() ;//Already calculated
       DistanceToBadChannel(mod,&locPos,minDist);
@@ -429,8 +429,8 @@ void AliPHOSTenderSupply::ProcessEvent()
      
       clu->SetChi2(TestLambda(clu->E(),clu->GetM20(),clu->GetM02()));                     //not yet implemented
       Double_t tof=EvalTOF(&cluPHOS,cells); 
-      if(TMath::Abs(tof-clu->GetTOF())>100.e-9) //something wrong in cell TOF!
-       tof=clu->GetTOF() ;
+//      if(TMath::Abs(tof-clu->GetTOF())>100.e-9) //something wrong in cell TOF!
+//     tof=clu->GetTOF() ;
       clu->SetTOF(tof);       
       Double_t minDist=clu->GetDistanceToBadChannel() ;//Already calculated
       DistanceToBadChannel(mod,&locPos,minDist);
@@ -463,6 +463,7 @@ void AliPHOSTenderSupply::FindTrackMatching(Int_t mod,TVector3 *locpos,
   if(magF<0)magSign = -1.0;
   
   if (!TGeoGlobalMagField::Instance()->GetField()) {
+    AliError("Margnetic filed was not initialized, use default") ;
     AliMagF* field = new AliMagF("Maps","Maps", magSign, magSign, AliMagF::k5kG);
     TGeoGlobalMagField::Instance()->SetField(field);
   }
@@ -851,8 +852,7 @@ Double_t AliPHOSTenderSupply::EvalTOF(AliVCluster * clu,AliVCaloCells * cells){
   //TOF here is weighted average of digits
   // -within 50ns from the most energetic cell
   // -not too soft.
-  
-  
+    
   Double32_t * elist = clu->GetCellsAmplitudeFraction() ;  
   Int_t mulDigit=clu->GetNCells() ;
 
@@ -861,8 +861,9 @@ Double_t AliPHOSTenderSupply::EvalTOF(AliVCluster * clu,AliVCaloCells * cells){
   for(Int_t iDigit=0; iDigit<mulDigit; iDigit++) {
     Int_t absId=clu->GetCellAbsId(iDigit) ;
     Bool_t isHG=kTRUE ;
-    if(cells->GetCellMCLabel(absId)==-2) //This is LG digit. No statistics to calibrate LG timing, remove them from TOF calculation
-      isHG=kFALSE ;
+    if(cells->GetCellMCLabel(absId)==-2){ //This is LG digit. 
+      isHG=kFALSE ;   
+    }
     if( elist[iDigit]>eMax){
       tMax=CalibrateTOF(cells->GetCellTime(absId),absId,isHG) ;
       eMax=elist[iDigit] ;
@@ -878,9 +879,10 @@ Double_t AliPHOSTenderSupply::EvalTOF(AliVCluster * clu,AliVCaloCells * cells){
   for(Int_t iDigit=0; iDigit<mulDigit; iDigit++) {
     Int_t absId=clu->GetCellAbsId(iDigit) ;
     Bool_t isHG=kTRUE ;
-    if(cells->GetCellMCLabel(absId)==-2) //This is LG digit. No statistics to calibrate LG timing, remove them from TOF calculation
+    if(cells->GetCellMCLabel(absId)==-2){ //This is LG digit. 
       isHG=kFALSE ;
-    
+    }
+      
     Double_t ti=CalibrateTOF(cells->GetCellTime(absId),absId,isHG) ;
     if(TMath::Abs(ti-tMax)>50.e-9) //remove soft cells with wrong time
       continue ;
@@ -894,15 +896,18 @@ Double_t AliPHOSTenderSupply::EvalTOF(AliVCluster * clu,AliVCaloCells * cells){
       //Sigma is parameterization of TOF resolution 16.05.2013
       Double_t wi2=0.;
       if(isHG)
-       wi2=1./(2.4e-9 + 3.9e-9/elist[iDigit]) ;
+       wi2=1./(2.4 + 3.9/elist[iDigit]) ;
       else
-       wi2=1./(2.4e-9 + 3.9e-9/(0.1*elist[iDigit])) ; //E of LG digit is 1/16 of correcponding HG  
+       wi2=1./(2.4 + 3.9/(0.1*elist[iDigit])) ; //E of LG digit is 1/16 of correcponding HG  
       t+=ti*wi2 ;
       wtot+=wi2 ;
     }
   }
   if(wtot>0){
     t=t/wtot ;
+  }
+  else{
+   t=tMax ; 
   }  
   
   return t ;
@@ -920,9 +925,9 @@ Double_t AliPHOSTenderSupply::CalibrateTOF(Double_t tof, Int_t absId, Bool_t isH
   Int_t   row    = relId[2];
   if(isHG)
     tof-=fPHOSCalibData->GetTimeShiftEmc(module, column, row);
-  else
+  else{
     tof-=fPHOSCalibData->GetLGTimeShiftEmc(module, column, row);
+  }
   return tof ;
   
 }
index a02a60a6d0df089d8cdfd27f98d51285825ebdd4..8c0166d08555f6e81df66e9f55bfe7461f25a483 100644 (file)
@@ -7,7 +7,7 @@ Int_t       run_flag           = 1100;    // year (2011 = 1100)
 Bool_t      doCDBconnect        =1;
 Bool_t      usePhysicsSelection = kTRUE; // use physics selection
 Bool_t      useTender           = kFALSE; // use tender wagon
-Bool_t      useCentrality       = kTRUE; // centrality
+Bool_t      useCentrality       = kFALSE; // centrality
 Bool_t      useV0tender         = kFALSE;  // use V0 correction in tender
 Bool_t      useDBG              = kTRUE;  // activate debugging
 Bool_t      useMC               = kFALSE;  // use MC info
@@ -21,6 +21,7 @@ Bool_t      useSysInfo          = kFALSE; // use sys info
 //==============================================================================
 Int_t       iAODhandler        = 1;      // Analysis produces an AOD or dAOD's
 Int_t       iESDfilter         = 1;      // ESD to AOD filter (barrel + muon tracks)
+Int_t       iESDfilterReVtx    = -1;     // Request revertexing in ESD filtering
 Int_t       iMUONcopyAOD       = 1;      // Task that copies only muon events in a separate AOD (PWG3)
 Int_t       iJETAN             = 0;      // Jet analysis (PWG4)
 Int_t       iJETANdelta        = 0;      // Jet delta AODs
@@ -36,7 +37,16 @@ Bool_t doPIDqa        = 1; //new
 //==============================================================================
  TString configPWGHFd2h = (iCollision==0)?"$ALICE_ROOT/PWGHF/vertexingHF/ConfigVertexingHF.C"
                           :"$ALICE_ROOT/PWGHF/vertexingHF/ConfigVertexingHF_highmult.C";
-                                                 
+                          
+Double_t  cutsESDfilterReVtx[21] =
+{1.00e-01,1.00e-01,5.00e-01,3.00e+00,1.00e+00,
+3.00e+00,1.00e+02,1.00e+03,3.00e+00,3.00e+01,
+6.00e+00,4.00e+00,7.00e+00,1.00e+03,5.00e+00,
+5.00e-02,1.00e-03,2.00e+00,1.00e+01,1.00e+00,
+-5.00e+01};
+
+
+                                             
 // Temporaries.
 void AODmerge();
 void AddAnalysisTasks();
@@ -221,23 +231,37 @@ void AddAnalysisTasks(const char *cdb_location){
    if (iESDfilter) {
       //  ESD filter task configuration.
       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/ESDfilter/macros/AddTaskESDFilter.C");
-      if (iMUONcopyAOD) {
-         printf("Registering delta AOD file\n");
-         mgr->RegisterExtraFile("AliAOD.Muons.root");
-          mgr->RegisterExtraFile("AliAOD.Dimuons.root");
-      }
-      AliAnalysisTaskESDfilter *taskesdfilter = 
-                 AddTaskESDFilter(useKFILTER, 
-                                  iMUONcopyAOD,         // write Muon AOD
-                                  kFALSE,               // write dimuon AOD 
-                                  kFALSE,               // usePhysicsSelection 
-                                  kFALSE,               // centrality OBSOLETE
-                                  kTRUE,                // enable TPS only tracks
-                                  kFALSE,               // disable cascades
-                                  kFALSE,               // disable kinks
-                                  run_flag);            // run flag (YY00)
-        mgr->RegisterExtraFile("AliAOD.Dimuons.root");
-   }   
+      AliAnalysisTaskESDfilter *taskesdfilter = 0;
+       if (iMUONcopyAOD) {
+           printf("Registering delta AOD file\n");
+           mgr->RegisterExtraFile("AliAOD.Muons.root");
+           mgr->RegisterExtraFile("AliAOD.Dimuons.root");
+           taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag);
+       } else {
+         taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag); // others
+       }   
+       if (iESDfilterReVtx>=0 && taskesdfilter) taskesdfilter->SetRefitVertexTracks(iESDfilterReVtx, cutsESDfilterReVtx);
+       taskesdfilter->Dump();
+       return; 
+     }      
+              
+//      if (iMUONcopyAOD) {
+//         printf("Registering delta AOD file\n");
+//         mgr->RegisterExtraFile("AliAOD.Muons.root");
+//          mgr->RegisterExtraFile("AliAOD.Dimuons.root");
+//      }
+//      AliAnalysisTaskESDfilter *taskesdfilter = 
+//                 AddTaskESDFilter(useKFILTER, 
+//                                  iMUONcopyAOD,         // write Muon AOD
+//                                  kFALSE,               // write dimuon AOD 
+//                                  kFALSE,               // usePhysicsSelection 
+//                                  kFALSE,               // centrality OBSOLETE
+//                                  kTRUE,                // enable TPS only tracks
+//                                  kFALSE,               // disable cascades
+//                                  kFALSE,               // disable kinks
+//                                  run_flag);            // run flag (YY00)
+//        mgr->RegisterExtraFile("AliAOD.Dimuons.root");
+//   }   
 
 // ********** PWG3 wagons ******************************************************           
    // PWGHF vertexing
index 7f920f1a740fadbcf2a1a8dc94afb929c0e3a361..364bb9ca4463c3b743c0596d757059c7372af656 100644 (file)
@@ -1,84 +1,84 @@
 LHC_ENTRIES    81
-0      LHC_Beam_Energy i:1     1       29169   1399237350.0    
-1      LHC_IntensityBeam1_totalIntensity       f:1     1       21164785367.803 1399237350.0    
-2      LHC_IntensityBeam2_totalIntensity       f:1     1       18863422159.299 1399237350.0    
-3      LHC_LumAverageBRANB_4L2_meanLuminosity  f:1     1       12.807913272863 1399237350.0    
-4      LHC_LumAverageBRANB_4R2_meanLuminosity  f:1     1       13.760402768977 1399237350.0    
-5      LHC_MachineMode s:1     1       PROTON PHYSICS  1399237350.0    
-6      LHC_BeamMode    s:1     1       STABLE BEAMS    1399237350.0    
-7      LHC_Beams_Particle_Type s:1     1       PROTON  1399237350.0    
-8      LHC_FillNumber  s:1     1       1026    1399237350.0    
-9      LHC_BunchLengthBeam1_nBunches   i:1     1       2       1399237350.0    
-10     LHC_BunchLengthBeam1_bunchesLenghts     f:3564  1       8.2848604896093e-010    8.2358661805479e-010    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    
-11     LHC_BunchLengthBeam1_filledBuckets      i:3564  8       1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280471.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280472.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280473.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280474.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280475.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280476.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280477.0    
-12     LHC_BunchLengthBeam2_nBunches   i:1     1       2       1399237350.0    
-13     LHC_BunchLengthBeam2_bunchesLenghts     f:3564  1       8.1572761282861e-010    8.1869790982703e-010    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    
-14     LHC_BunchLengthBeam2_filledBuckets      i:3564  8       1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280471.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280472.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280473.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280474.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280475.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280476.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280477.0    
-15     LHC_RunControl_SafeBeam1        i:1     1       15      1399237350.22   
-16     LHC_RunControl_SafeBeam2        i:1     1       15      1399237350.0    
-17     LHC_RunControl_BetaStar s:1     1       10      1399237350.0    
-18     LHC_RunControl_ActiveInjectionScheme    s:1     1       Single_2b_1_1_1 1399237350.0    
-19     LHC_RunControl_IP2_Xing_Murad   s:1     1       no_value        1399237350.0    
-20     LHC_RunControl_IP2_ALICE_Murad  s:1     1       no_value        1399237350.0    
-21     LHC_LumAverageBRANB_4L2_acqMode i:1     3       7439    1399237350.0    7951    1328280490.0    7439    1297160586.0    
-22     LHC_LumAverageBRANB_4L2_meanLuminosityError     f:1     1       0       1399237350.0    
-23     LHC_LumAverageBRANB_4L2_meanCrossingAngle       f:1     1       0       1399237350.0    
-24     LHC_LumAverageBRANB_4L2_meanCrossingAngleError  f:1     1       0       1399237350.0    
-25     LHC_LumAverageBRANB_4R2_acqMode i:1     1       7687    1399237350.0    
-26     LHC_LumAverageBRANB_4R2_meanLuminosityError     f:1     1       0       1399237350.0    
-27     LHC_LumAverageBRANB_4R2_meanCrossingAngle       f:1     1       0       1399237350.0    
-28     LHC_LumAverageBRANB_4R2_meanCrossingAngleError  f:1     1       0       1399237350.0    
-29     LHC_CollimatorPos_TCLIA_4R2_lvdt_gap_downstream f:1     1       50.046328769759 1399237350.0    
-30     LHC_CollimatorPos_TCLIA_4R2_lvdt_gap_upstream   f:1     1       49.866079841922 1399237350.0    
-31     LHC_CollimatorPos_TCLIA_4R2_lvdt_left_downstream        f:1     1       24.997357144153 1399237350.0    
-32     LHC_CollimatorPos_TCLIA_4R2_lvdt_left_upstream  f:1     1       24.91255908613  1399237350.0    
-33     LHC_CollimatorPos_TCLIA_4R2_lvdt_right_downstream       f:1     1       -25.02661307636 1399237350.0    
-34     LHC_CollimatorPos_TCLIA_4R2_lvdt_right_upstream f:1     1       -24.996569350351        1399237350.0    
-35     LHC_CollimatorPos_TCTVB_4L2_lvdt_gap_downstream f:1     1       11.095173006215 1399237350.0    
-36     LHC_CollimatorPos_TCTVB_4L2_lvdt_gap_upstream   f:1     1       11.117604999786 1399237350.0    
-37     LHC_CollimatorPos_TCTVB_4L2_lvdt_left_downstream        f:1     1       6.2657452563246 1399237350.0    
-38     LHC_CollimatorPos_TCTVB_4L2_lvdt_left_upstream  f:1     1       6.2582903572663 1399237350.0    
-39     LHC_CollimatorPos_TCTVB_4L2_lvdt_right_downstream       f:1     1       -4.8219301074717        1399237350.0    
-40     LHC_CollimatorPos_TCTVB_4L2_lvdt_right_upstream f:1     1       -4.822643299829 1399237350.0    
-41     LHC_CollimatorPos_TCTVB_4R2_lvdt_gap_downstream f:1     1       11.199854263647 1399237350.0    
-42     LHC_CollimatorPos_TCTVB_4R2_lvdt_gap_upstream   f:1     1       10.883404308687 1399237350.0    
-43     LHC_CollimatorPos_TCTVB_4R2_lvdt_left_downstream        f:1     1       5.1526992903188 1399237350.0    
-44     LHC_CollimatorPos_TCTVB_4R2_lvdt_left_upstream  f:1     1       5.1308726395455 1399237350.0    
-45     LHC_CollimatorPos_TCTVB_4R2_lvdt_right_downstream       f:1     1       -5.9879638081037        1399237350.0    
-46     LHC_CollimatorPos_TCTVB_4R2_lvdt_right_upstream f:1     1       -5.9028395851616        1399237350.0    
-47     LHC_BeamSizeBeam1_acqMode       i:1     1       0       1399237350.0    
-48     LHC_BeamSizeBeam1_sigmaH        f:1     1       0.78663575993523        1399237350.0    
-49     LHC_BeamSizeBeam1_sigmaV        f:1     1       0.66309333285671        1399237350.0    
-50     LHC_BeamSizeBeam1_emittanceH    f:1     1       -1      1399237350.0    
-51     LHC_BeamSizeBeam1_emittanceV    f:1     1       -1      1399237350.0    
-52     LHC_BeamSizeBeam1_errorSigmaH   f:1     1       -1      1399237350.0    
-53     LHC_BeamSizeBeam1_errorSigmaV   f:1     1       -1      1399237350.0    
-54     LHC_BeamSizeBeam2_acqMode       i:1     1       0       1399237350.0    
-55     LHC_BeamSizeBeam2_sigmaH        f:1     1       0.65687035181571        1399237350.0    
-56     LHC_BeamSizeBeam2_sigmaV        f:1     1       0.82232160177854        1399237350.0    
-57     LHC_BeamSizeBeam2_emittanceH    f:1     1       -1      1399237350.0    
-58     LHC_BeamSizeBeam2_emittanceV    f:1     1       -1      1399237350.0    
-59     LHC_BeamSizeBeam2_errorSigmaH   f:1     1       -1      1399237350.0    
-60     LHC_BeamSizeBeam2_errorSigmaV   f:1     1       -1      1399237350.0    
-61     LHC_CirculatingBunchConfig_Beam1        i:2808  1       1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    
-62     LHC_CirculatingBunchConfig_Beam2        i:2808  1       1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    
-63     LHC_BeamIntensityPerBunchBeam1_averageBeamIntensity     f:1     2       21897063148.426 1399237350.0    21888637698.717 1328280471.0    
-64     LHC_BeamIntensityPerBunchBeam2_averageBeamIntensity     f:1     1       21621985721.014 1399237350.0    
-65     LHC_BeamLuminosityPerBunchBRANB_4L2_BunchLuminosityError        f:1     1       0       0.0     
-66     LHC_BeamLuminosityPerBunchBRANB_4R2_BunchLuminosityError        f:1     1       0       0.0     
-67     LHC_BeamIntensityPerBunchBeam1_Average_BunchIntensities f:3564  1       160502880       5017949 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       155904384       4949961 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    
-68     LHC_BeamIntensityPerBunchBeam2_Average_BunchIntensities f:3564  1       139031360       2003243 349362.875      0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       139608112       2134134 492293.03125    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       59583.453125    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    
-69     LHC_BeamLuminosityPerBunchBRANB_4L2_Average_BunchLuminosity     f:3564  1       3.2214286327362 0.73952382802963        0.25333333015442        0.039523810148239       0.0099999997764826      0.0099999997764826      0.0066666668280959      0.003333333414048       0.003333333414048       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.003333333414048       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399237350.0    
-70     LHC_BeamLuminosityPerBunchBRANB_4R2_Average_BunchLuminosity     f:3564  1       1.1682540178299 0.25    0.032539684325457       0.0055555556900799      0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.054761905223131       1399237350.0    
-71     BPTX_deltaT_B1_B2       f:1     45      -1.0152015384615        1399237350.822  -1.00656        1328280471.799  -0.98337538461537       1328280472.377  -0.9989723076923        1328280473.236  -1.0006584615384        1328280473.908  -0.94606923076923       1328280474.752  -0.9469123076923        1328280475.112  -0.99644307692307       1328280476.143  -0.99749692307691       1328280476.581  -0.98485076923076       1328280476.597  -1.0164661538462        1328280476.972  -1.0124615384615        1328280477.910  -0.99412461538461       1328280478.129  -0.99644307692307       1328280478.74   -0.99264923076922       1328280479.308  -0.97473384615384       1328280480.543  -0.97937076923075       1328280480.668  -0.98885538461538       1328280481.168  -0.9956 1328280482.106  -0.98948769230768       1328280482.387  -0.98632615384614       1328280483.294  -0.99749692307691       1328280483.669  -0.97620923076923       1328280483.950  -0.99834        1328280483.982  -1.0124615384615        1328280484.115  -1.0116184615385        1328280484.880  -0.99581076923076       1328280485.506  -0.9682 1328280486.303  -0.99180615384614       1328280486.53   -0.98969846153845       1328280486.740  -0.97915999999999       1328280487.366  -0.98674769230769       1328280488.163  -0.97810615384614       1328280488.819  -0.95428923076922       1328280489.741  -0.95681846153845       1328280490.179  -0.95492153846152       1328280490.7    -0.94880923076923       1328280491.468  -0.95492153846153       1328280492.156  -0.95344615384614       1328280492.875  -0.95829384615384       1328280492.578  -0.97641999999999       1328280493.297  -0.98295384615383       1328280493.63   -0.98695846153845       1328280493.828  -0.9907523076923        1328280494.516  -0.99285999999999       1328280504.235  
-72     BPTX_deltaTRMS_B1_B2    f:1     1       0.028   1399237350.660  
-73     BPTX_Phase_B1   f:1     71      20.828627692308 1399237350.806  20.805443076923 1328280471.361  20.807129230769 1328280472.908  20.807972307692 1328280473.96   20.809026153846 1328280474.565  20.840641538462 1328280475.972  20.822304615385 1328280476.129  20.818510769231 1328280477.308  20.823147692308 1328280478.668  20.829892307692 1328280479.90   20.826730769231 1328280480.278  20.805443076923 1328280481.935  20.819564615385 1328280482.99   20.803756923077 1328280483.490  20.827363076923 1328280484.37   20.816824615385 1328280485.366  20.808183076923 1328280486.803  20.810712307692 1328280487.179  20.8046 1328280488.452  20.803124615385 1328280489.859  20.821250769231 1328280490.281  20.825255384615 1328280491.813  20.827363076923 1328280492.219  20.827152307692 1328280493.657  20.820829230769 1328280494.478  20.803124615385 1328280495.931  20.823358461538 1328280496.322  20.813452307692 1328280497.666  20.825044615385 1328280498.260  20.828206153846 1328280499.604  20.822093846154 1328280500.690  20.833264615385 1328280501.238  20.794272307692 1328280502.535  20.825255384615 1328280503.566  20.786684615385 1328280504.442  20.82378        1328280505.864  20.829470769231 1328280506.888  20.815349230769 1328280507.216  20.816403076923 1328280508.810  20.820829230769 1328280509.107  20.79364        1328280510.498  20.822726153846 1328280511.639  20.830103076923 1328280512.647  20.818721538462 1328280513.804  20.828838461538 1328280514.413  20.810501538462 1328280515.554  20.814927692308 1328280515.977  20.789424615385 1328280527.618  20.826309230769 1328280528.422  20.82378        1328280529.751  20.830524615385 1328280530.251  20.822093846154 1328280531.736  20.831156923077 1328280532.158  20.834529230769 1328280533.447  20.834318461538 1328280534.823  20.82926        1328280535.198  20.825255384615 1328280536.745  20.814084615385 1328280537.74   20.835793846154 1328280538.543  20.835372307692 1328280539.488  20.809026153846 1328280540.864  20.826730769231 1328280541.317  20.837269230769 1328280542.677  20.806075384615 1328280543.99   20.825044615385 1328280544.521  20.829049230769 1328280545.592  20.82926        1328280546.30   20.818089230769 1328280547.452  20.804389230769 1328280548.827  20.795326153846 1328280549.249  20.811133846154 1328280549.640  
-74     BPTX_PhaseRMS_B1        f:1     71      0.0058577164199717      1399237350.806  0.015511813524426       1328280471.361  0.015802914149653       1328280472.908  0.019239432854636       1328280473.96   0.01765297689162        1328280475.565  0.0065606472656569      1328280476.972  0.0055540791768716      1328280477.129  0.0076992820075604      1328280478.308  0.0069124596192787      1328280479.668  0.0072585446892548      1328280480.90   0.005283964017633       1328280481.278  0.017016792931008       1328280482.935  0.0051407820877149      1328280483.99   0.0139146008709 1328280484.490  0.0067235054255271      1328280485.37   0.005486481374234       1328280486.366  0.015128621325001       1328280487.803  0.016171508739485       1328280488.179  0.015499780643609       1328280489.452  0.017963796128907       1328280490.859  0.0063752030899306      1328280491.281  0.0055508789005023      1328280492.813  0.0068218938181613      1328280493.219  0.0067383552678652      1328280494.657  0.012865730904849       1328280495.478  0.015341480985112       1328280496.931  0.0047919301246493      1328280497.322  0.016934622383338       1328280498.666  0.0068039624549779      1328280499.260  0.0059599635438304      1328280500.604  0.0051113168094559      1328280500.690  0.0056649499754943      1328280501.238  0.01969863708979        1328280502.535  0.0049859286968842      1328280503.566  0.022312190448352       1328280504.442  0.0074186577678792      1328280505.864  0.0058242521728351      1328280506.888  0.0052772339222195      1328280507.216  0.0067129255520564      1328280508.810  0.017311456062559       1328280509.107  0.032943170087054       1328280510.498  0.0069470766232619      1328280511.639  0.0052094547864048      1328280512.647  0.0069716523047255      1328280513.804  0.0060152371612846      1328280514.413  0.018799386644911       1328280515.554  0.017470849574421       1328280516.977  0.017691562954225       1328280517.618  0.005128669827663       1328280518.422  0.0050448309945238      1328280519.751  0.0054397247798458      1328280520.251  0.01624168053945        1328280521.736  0.005457254571267       1328280522.158  0.0055748361930979      1328280523.447  0.0063682310809661      1328280524.823  0.0071973911940361      1328280525.198  0.004265669311439       1328280526.745  0.0098465555807465      1328280527.74   0.0058089774227672      1328280528.543  0.0048265693649127      1328280529.488  0.013647856983303       1328280530.864  0.0043832906230803      1328280531.317  0.0046584291483475      1328280532.677  0.020739199650184       1328280533.99   0.018265437138107       1328280534.521  0.0074886874210325      1328280535.592  0.0081306126031047      1328280536.30   0.0057505633580465      1328280537.452  0.019671556500387       1328280538.827  0.019149170488932       1328280539.249  0.018977308536511       1328280540.640  
-75     BPTX_Phase_Shift_B1     f:1     71      1.3713723076923 1399237350.806  1.3945569230769 1328280471.361  1.3928707692307 1328280472.908  1.3920276923077 1328280473.96   1.3909738461538 1328280475.565  1.3593584615384 1328280476.972  1.3776953846154 1328280477.129  1.3814892307692 1328280478.308  1.3768523076923 1328280479.668  1.3701076923077 1328280480.90   1.3732692307692 1328280481.278  1.3945569230769 1328280482.935  1.3804353846154 1328280483.99   1.3962430769231 1328280484.490  1.3726369230769 1328280485.37   1.3831753846154 1328280486.366  1.3918169230769 1328280487.803  1.3892876923077 1328280488.179  1.3954  1328280489.452  1.3968753846154 1328280490.859  1.3787492307692 1328280491.281  1.3747446153846 1328280492.813  1.3726369230769 1328280493.219  1.3728476923077 1328280494.657  1.3791707692307 1328280495.478  1.3968753846154 1328280496.931  1.3766415384615 1328280497.322  1.3865476923077 1328280498.666  1.3749553846154 1328280499.260  1.3717938461538 1328280500.604  1.3779061538461 1328280500.690  1.3667353846154 1328280501.238  1.4057276923077 1328280502.535  1.3747446153846 1328280503.566  1.4133153846154 1328280504.442  1.37622 1328280505.864  1.3705292307692 1328280506.888  1.3846507692307 1328280507.216  1.3835969230769 1328280508.810  1.3791707692307 1328280509.107  1.40636 1328280510.498  1.3772738461538 1328280511.639  1.3698969230769 1328280512.647  1.3812784615384 1328280513.804  1.3711615384615 1328280514.413  1.3894984615384 1328280515.554  1.3850723076923 1328280516.977  1.4105753846154 1328280517.618  1.3736907692308 1328280518.422  1.37622 1328280519.751  1.3694753846154 1328280520.251  1.3779061538461 1328280521.736  1.3688430769231 1328280522.158  1.3654707692307 1328280523.447  1.3656815384615 1328280524.823  1.37074 1328280525.198  1.3747446153846 1328280526.745  1.3859153846154 1328280527.74   1.3642061538461 1328280528.543  1.3646276923077 1328280529.488  1.3909738461538 1328280530.864  1.3732692307692 1328280531.317  1.3627307692307 1328280532.677  1.3939246153846 1328280533.99   1.3749553846154 1328280534.521  1.3709507692307 1328280535.592  1.37074 1328280536.30   1.3819107692307 1328280537.452  1.3956107692307 1328280538.827  1.4046738461538 1328280539.249  1.3888661538461 1328280540.640  
-76     BPTX_Phase_B2   f:1     70      21.883426153846 1399237350.962  21.892067692308 1328280471.799  21.876470769231 1328280472.221  21.93106        1328280473.737  21.881529230769 1328280474.143  21.894175384615 1328280475.581  21.89818        1328280476.894  21.895861538462 1328280477.58   21.913776923077 1328280478.543  21.904292307692 1328280479.153  21.910404615385 1328280480.356  21.899233846154 1328280481.653  21.877103076923 1328280482.966  21.877946153846 1328280483.865  21.905556923077 1328280484.287  21.907664615385 1328280485.725  21.900076923077 1328280486.147  21.923893846154 1328280487.726  21.925790769231 1328280488.991  21.919678461538 1328280489.140  21.914830769231 1328280490.562  21.908296923077 1328280491.47   21.904503076923 1328280492.500  21.896915384615 1328280493.938  21.930638461538 1328280494.236  21.891646153846 1328280495.40   21.915041538462 1328280496.494  21.904924615385 1328280497.932  21.916938461538 1328280498.229  21.898601538462 1328280499.510  21.905556923077 1328280500.440  21.905978461538 1328280501.894  21.899233846154 1328280502.425  21.900498461538 1328280503.707  21.897758461538 1328280504.176  21.893543076923 1328280505.676  21.915884615385 1328280506.247  21.897969230769 1328280507.685  21.879632307692 1328280508.169  21.91188        1328280509.654  21.908718461538 1328280510.76   21.915673846154 1328280511.405  21.88174        1328280512.100  21.898390769231 1328280513.538  21.889327692308 1328280514.976  21.8927 1328280515.461  21.903449230769 1328280516.930  21.893964615385 1328280517.118  21.911247692308 1328280518.844  21.922207692308 1328280519.345  21.915252307692 1328280520.642  21.927898461538 1328280521.126  21.907875384615 1328280522.517  21.920521538462 1328280523.908  21.911458461538 1328280524.854  21.919889230769 1328280525.120  21.919467692308 1328280526.683  21.924104615385 1328280527.136  21.910404615385 1328280528.496  21.918624615385 1328280529.902  21.919256923077 1328280530.145  21.906189230769 1328280531.473  21.905767692308 1328280532.974  21.912723076923 1328280533.380  21.934432307692 1328280534.818  21.928530769231 1328280535.920  21.88722        1328280536.233  21.891435384615 1328280537.624  21.912933846154 1328280538.140  21.924526153846 1328280549.953  
-77     BPTX_PhaseRMS_B2        f:1     71      0.0132582055512 1399237350.962  0.011851154828506       1328280471.799  0.011666034083724       1328280472.221  0.015545713227875       1328280473.737  0.012332431712872       1328280474.143  0.0099611598858862      1328280475.581  0.015827211538637       1328280476.894  0.0095429827994217      1328280477.58   0.013351028814822       1328280478.543  0.016137271936797       1328280479.153  0.013745159888304       1328280480.356  0.015634474545681       1328280481.653  0.011277434147303       1328280482.966  0.016429863739095       1328280483.865  0.015941177938999       1328280484.287  0.020249647676094       1328280485.725  0.013469456660233       1328280486.147  0.01311198078095        1328280487.726  0.011828642641722       1328280488.991  0.014720838902324       1328280489.140  0.016782313880142       1328280490.562  0.012131412606713       1328280491.47   0.014955558472714       1328280492.500  0.014868570441783       1328280493.938  0.012491522569114       1328280494.236  0.0085666738347923      1328280495.40   0.017582373778654       1328280496.494  0.010274000148591       1328280497.932  0.012844824067516       1328280498.229  0.016499475257928       1328280499.510  0.012268869500348       1328280500.440  0.012691038295496       1328280501.894  0.013374133968534       1328280502.425  0.012289129501528       1328280503.707  0.014913915197187       1328280504.176  0.0087282386166461      1328280505.676  0.012247306526733       1328280506.247  0.0087208555033358      1328280507.685  0.013074659433039       1328280508.169  0.010714874205084       1328280509.654  0.010536142821836       1328280510.76   0.018738795222493       1328280511.405  0.011040968667306       1328280512.100  0.012655985921491       1328280513.538  0.014664601512308       1328280514.976  0.0079605504403661      1328280515.461  0.013669810524046       1328280516.930  0.017783353302304       1328280517.118  0.014802093638897       1328280518.844  0.013197082742008       1328280519.345  0.01971295218345        1328280520.642  0.017285133085945       1328280521.126  0.014735919878805       1328280522.517  0.0089969087261802      1328280523.908  0.017406527212107       1328280524.854  0.018700825890695       1328280525.120  0.018525644238133       1328280526.683  0.013044555199585       1328280527.136  0.016435811103418       1328280528.496  0.01551066793796        1328280529.902  0.02002074723281        1328280530.145  0.013745159888304       1328280531.473  0.014012746260155       1328280532.974  0.011974957301254       1328280533.380  0.01518431040922        1328280534.818  0.018449833629243       1328280535.920  0.015832824124689       1328280536.233  0.013562963152182       1328280537.624  0.010378966908264       1328280538.140  0.016160516871751       1328280539.577  0.01228334433962        1328280540.953  
-78     BPTX_Phase_Shift_B2     f:1     70      0.31657384615382        1399237350.962  0.30793230769228        1328280471.799  0.32352923076921        1328280472.221  0.26893999999998        1328280473.737  0.31847076923075        1328280474.143  0.30582461538459        1328280475.581  0.30181999999998        1328280476.894  0.30413846153844        1328280477.58   0.28622307692305        1328280478.543  0.29570769230767        1328280479.153  0.28959538461536        1328280480.356  0.30076615384613        1328280481.653  0.3228969230769 1328280482.966  0.32205384615382        1328280483.865  0.29444307692305        1328280484.287  0.29233538461536        1328280485.725  0.29992307692305        1328280486.147  0.27610615384613        1328280487.726  0.27420923076921        1328280488.991  0.28032153846151        1328280489.140  0.28516923076921        1328280490.562  0.29170307692305        1328280491.47   0.2954969230769 1328280492.500  0.30308461538459        1328280493.938  0.26936153846151        1328280494.236  0.30835384615382        1328280495.40   0.28495846153844        1328280496.494  0.29507538461536        1328280497.932  0.28306153846152        1328280498.229  0.30139846153844        1328280499.510  0.29444307692305        1328280500.440  0.29402153846151        1328280501.894  0.30076615384613        1328280502.425  0.29950153846152        1328280503.707  0.30224153846152        1328280504.176  0.3064569230769 1328280505.676  0.28411538461536        1328280506.247  0.30203076923074        1328280507.685  0.32036769230767        1328280508.169  0.28811999999997        1328280509.654  0.29128153846152        1328280510.76   0.28432615384613        1328280511.405  0.31825999999998        1328280512.100  0.30160923076921        1328280513.538  0.31067230769228        1328280514.976  0.30729999999997        1328280515.461  0.29655076923075        1328280516.930  0.30603538461536        1328280517.118  0.28875230769228        1328280518.844  0.27779230769229        1328280519.345  0.28474769230766        1328280520.642  0.27210153846152        1328280521.126  0.29212461538459        1328280522.517  0.27947846153844        1328280523.908  0.28854153846152        1328280524.854  0.28011076923075        1328280525.120  0.28053230769229        1328280526.683  0.27589538461536        1328280527.136  0.28959538461536        1328280528.496  0.28137538461536        1328280529.902  0.28074307692305        1328280530.145  0.29381076923075        1328280531.473  0.29423230769229        1328280532.974  0.2872769230769 1328280533.380  0.26556769230767        1328280534.818  0.27146923076921        1328280535.920  0.31277999999998        1328280536.233  0.30856461538459        1328280537.624  0.28706615384613        1328280538.140  0.27547384615383        1328280539.953  
-79     LHC_Particle_Type_B1    s:1     1       PROTON  1297160580.0    
-80     LHC_Particle_Type_B2    s:1     1       PROTON  1297160580.0    
-81     LHC_Data_Quality_Flag   b:1     5       1       1297160580.0    0       1297160581.0    0       1297160582.0    1       1399237350.2    0       1328280472.0    
+0      LHC_Beam_Energy i:1     1       29169   1399233600.0
+1      LHC_IntensityBeam1_totalIntensity       f:1     1       21164785367.803 1399233600.0
+2      LHC_IntensityBeam2_totalIntensity       f:1     1       18863422159.299 1399233600.0
+3      LHC_LumAverageBRANB_4L2_meanLuminosity  f:1     1       12.807913272863 1399233600.0
+4      LHC_LumAverageBRANB_4R2_meanLuminosity  f:1     1       13.760402768977 1399233600.0
+5      LHC_MachineMode s:1     1       PROTON PHYSICS  1399233600.0
+6      LHC_BeamMode    s:1     1       STABLE BEAMS    1399233600.0
+7      LHC_Beams_Particle_Type s:1     1       PROTON  1399233600.0
+8      LHC_FillNumber  s:1     1       1026    1399233600.0
+9      LHC_BunchLengthBeam1_nBunches   i:1     1       2       1399233600.0
+10     LHC_BunchLengthBeam1_bunchesLenghts     f:3564  1       8.2848604896093e-010    8.2358661805479e-010    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0
+11     LHC_BunchLengthBeam1_filledBuckets      i:3564  8       1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280471.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280472.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280473.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280474.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280475.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280476.0    1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280477.0
+12     LHC_BunchLengthBeam2_nBunches   i:1     1       2       1399233600.0
+13     LHC_BunchLengthBeam2_bunchesLenghts     f:3564  1       8.1572761282861e-010    8.1869790982703e-010    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0
+14     LHC_BunchLengthBeam2_filledBuckets      i:3564  8       1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280471.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280472.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280473.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280474.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280475.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280476.0    1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1328280477.0
+15     LHC_RunControl_SafeBeam1        i:1     1       15      1399233600.22
+16     LHC_RunControl_SafeBeam2        i:1     1       15      1399233600.0
+17     LHC_RunControl_BetaStar s:1     1       10      1399233600.0
+18     LHC_RunControl_ActiveInjectionScheme    s:1     1       Single_2b_1_1_1 1399233600.0
+19     LHC_RunControl_IP2_Xing_Murad   s:1     1       no_value        1399233600.0
+20     LHC_RunControl_IP2_ALICE_Murad  s:1     1       no_value        1399233600.0
+21     LHC_LumAverageBRANB_4L2_acqMode i:1     3       7439    1399233600.0    7951    1328280490.0    7439    1297160586.0
+22     LHC_LumAverageBRANB_4L2_meanLuminosityError     f:1     1       0       1399233600.0
+23     LHC_LumAverageBRANB_4L2_meanCrossingAngle       f:1     1       0       1399233600.0
+24     LHC_LumAverageBRANB_4L2_meanCrossingAngleError  f:1     1       0       1399233600.0
+25     LHC_LumAverageBRANB_4R2_acqMode i:1     1       7687    1399233600.0
+26     LHC_LumAverageBRANB_4R2_meanLuminosityError     f:1     1       0       1399233600.0
+27     LHC_LumAverageBRANB_4R2_meanCrossingAngle       f:1     1       0       1399233600.0
+28     LHC_LumAverageBRANB_4R2_meanCrossingAngleError  f:1     1       0       1399233600.0
+29     LHC_CollimatorPos_TCLIA_4R2_lvdt_gap_downstream f:1     1       50.046328769759 1399233600.0
+30     LHC_CollimatorPos_TCLIA_4R2_lvdt_gap_upstream   f:1     1       49.866079841922 1399233600.0
+31     LHC_CollimatorPos_TCLIA_4R2_lvdt_left_downstream        f:1     1       24.997357144153 1399233600.0
+32     LHC_CollimatorPos_TCLIA_4R2_lvdt_left_upstream  f:1     1       24.91255908613  1399233600.0
+33     LHC_CollimatorPos_TCLIA_4R2_lvdt_right_downstream       f:1     1       -25.02661307636 1399233600.0
+34     LHC_CollimatorPos_TCLIA_4R2_lvdt_right_upstream f:1     1       -24.996569350351        1399233600.0
+35     LHC_CollimatorPos_TCTVB_4L2_lvdt_gap_downstream f:1     1       11.095173006215 1399233600.0
+36     LHC_CollimatorPos_TCTVB_4L2_lvdt_gap_upstream   f:1     1       11.117604999786 1399233600.0
+37     LHC_CollimatorPos_TCTVB_4L2_lvdt_left_downstream        f:1     1       6.2657452563246 1399233600.0
+38     LHC_CollimatorPos_TCTVB_4L2_lvdt_left_upstream  f:1     1       6.2582903572663 1399233600.0
+39     LHC_CollimatorPos_TCTVB_4L2_lvdt_right_downstream       f:1     1       -4.8219301074717        1399233600.0
+40     LHC_CollimatorPos_TCTVB_4L2_lvdt_right_upstream f:1     1       -4.822643299829 1399233600.0
+41     LHC_CollimatorPos_TCTVB_4R2_lvdt_gap_downstream f:1     1       11.199854263647 1399233600.0
+42     LHC_CollimatorPos_TCTVB_4R2_lvdt_gap_upstream   f:1     1       10.883404308687 1399233600.0
+43     LHC_CollimatorPos_TCTVB_4R2_lvdt_left_downstream        f:1     1       5.1526992903188 1399233600.0
+44     LHC_CollimatorPos_TCTVB_4R2_lvdt_left_upstream  f:1     1       5.1308726395455 1399233600.0
+45     LHC_CollimatorPos_TCTVB_4R2_lvdt_right_downstream       f:1     1       -5.9879638081037        1399233600.0
+46     LHC_CollimatorPos_TCTVB_4R2_lvdt_right_upstream f:1     1       -5.9028395851616        1399233600.0
+47     LHC_BeamSizeBeam1_acqMode       i:1     1       0       1399233600.0
+48     LHC_BeamSizeBeam1_sigmaH        f:1     1       0.78663575993523        1399233600.0
+49     LHC_BeamSizeBeam1_sigmaV        f:1     1       0.66309333285671        1399233600.0
+50     LHC_BeamSizeBeam1_emittanceH    f:1     1       -1      1399233600.0
+51     LHC_BeamSizeBeam1_emittanceV    f:1     1       -1      1399233600.0
+52     LHC_BeamSizeBeam1_errorSigmaH   f:1     1       -1      1399233600.0
+53     LHC_BeamSizeBeam1_errorSigmaV   f:1     1       -1      1399233600.0
+54     LHC_BeamSizeBeam2_acqMode       i:1     1       0       1399233600.0
+55     LHC_BeamSizeBeam2_sigmaH        f:1     1       0.65687035181571        1399233600.0
+56     LHC_BeamSizeBeam2_sigmaV        f:1     1       0.82232160177854        1399233600.0
+57     LHC_BeamSizeBeam2_emittanceH    f:1     1       -1      1399233600.0
+58     LHC_BeamSizeBeam2_emittanceV    f:1     1       -1      1399233600.0
+59     LHC_BeamSizeBeam2_errorSigmaH   f:1     1       -1      1399233600.0
+60     LHC_BeamSizeBeam2_errorSigmaV   f:1     1       -1      1399233600.0
+61     LHC_CirculatingBunchConfig_Beam1        i:2808  1       1       17851   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0
+62     LHC_CirculatingBunchConfig_Beam2        i:2808  1       1       8911    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0
+63     LHC_BeamIntensityPerBunchBeam1_averageBeamIntensity     f:1     2       21897063148.426 1399233600.0    21888637698.717 1328280471.0
+64     LHC_BeamIntensityPerBunchBeam2_averageBeamIntensity     f:1     1       21621985721.014 1399233600.0
+65     LHC_BeamLuminosityPerBunchBRANB_4L2_BunchLuminosityError        f:1     1       0       0.0
+66     LHC_BeamLuminosityPerBunchBRANB_4R2_BunchLuminosityError        f:1     1       0       0.0
+67     LHC_BeamIntensityPerBunchBeam1_Average_BunchIntensities f:3564  1       160502880       5017949 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       155904384       4949961 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0
+68     LHC_BeamIntensityPerBunchBeam2_Average_BunchIntensities f:3564  1       139031360       2003243 349362.875      0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       139608112       2134134 492293.03125    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       59583.453125    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0
+69     LHC_BeamLuminosityPerBunchBRANB_4L2_Average_BunchLuminosity     f:3564  1       3.2214286327362 0.73952382802963        0.25333333015442        0.039523810148239       0.0099999997764826      0.0099999997764826      0.0066666668280959      0.003333333414048       0.003333333414048       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.003333333414048       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1399233600.0
+70     LHC_BeamLuminosityPerBunchBRANB_4R2_Average_BunchLuminosity     f:3564  1       1.1682540178299 0.25    0.032539684325457       0.0055555556900799      0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.054761905223131       1399233600.0
+71     BPTX_deltaT_B1_B2       f:1     45      -1.0152015384615        1399233600.822  -1.00656        1328280471.799  -0.98337538461537       1328280472.377  -0.9989723076923        1328280473.236  -1.0006584615384        1328280473.908  -0.94606923076923       1328280474.752  -0.9469123076923        1328280475.112  -0.99644307692307       1328280476.143  -0.99749692307691       1328280476.581  -0.98485076923076       1328280476.597  -1.0164661538462        1328280476.972  -1.0124615384615        1328280477.910  -0.99412461538461       1328280478.129  -0.99644307692307       1328280478.74   -0.99264923076922       1328280479.308  -0.97473384615384       1328280480.543  -0.97937076923075       1328280480.668  -0.98885538461538       1328280481.168  -0.9956 1328280482.106  -0.98948769230768       1328280482.387  -0.98632615384614       1328280483.294  -0.99749692307691       1328280483.669  -0.97620923076923       1328280483.950  -0.99834        1328280483.982  -1.0124615384615        1328280484.115  -1.0116184615385        1328280484.880  -0.99581076923076       1328280485.506  -0.9682 1328280486.303  -0.99180615384614       1328280486.53   -0.98969846153845       1328280486.740  -0.97915999999999       1328280487.366  -0.98674769230769       1328280488.163  -0.97810615384614       1328280488.819  -0.95428923076922       1328280489.741  -0.95681846153845       1328280490.179  -0.95492153846152       1328280490.7    -0.94880923076923       1328280491.468  -0.95492153846153       1328280492.156  -0.95344615384614       1328280492.875  -0.95829384615384       1328280492.578  -0.97641999999999       1328280493.297  -0.98295384615383       1328280493.63   -0.98695846153845       1328280493.828  -0.9907523076923        1328280494.516  -0.99285999999999       1328280504.235
+72     BPTX_deltaTRMS_B1_B2    f:1     1       0.028   1399233600.660
+73     BPTX_Phase_B1   f:1     71      20.828627692308 1399233600.806  20.805443076923 1328280471.361  20.807129230769 1328280472.908  20.807972307692 1328280473.96   20.809026153846 1328280474.565  20.840641538462 1328280475.972  20.822304615385 1328280476.129  20.818510769231 1328280477.308  20.823147692308 1328280478.668  20.829892307692 1328280479.90   20.826730769231 1328280480.278  20.805443076923 1328280481.935  20.819564615385 1328280482.99   20.803756923077 1328280483.490  20.827363076923 1328280484.37   20.816824615385 1328280485.366  20.808183076923 1328280486.803  20.810712307692 1328280487.179  20.8046 1328280488.452  20.803124615385 1328280489.859  20.821250769231 1328280490.281  20.825255384615 1328280491.813  20.827363076923 1328280492.219  20.827152307692 1328280493.657  20.820829230769 1328280494.478  20.803124615385 1328280495.931  20.823358461538 1328280496.322  20.813452307692 1328280497.666  20.825044615385 1328280498.260  20.828206153846 1328280499.604  20.822093846154 1328280500.690  20.833264615385 1328280501.238  20.794272307692 1328280502.535  20.825255384615 1328280503.566  20.786684615385 1328280504.442  20.82378        1328280505.864  20.829470769231 1328280506.888  20.815349230769 1328280507.216  20.816403076923 1328280508.810  20.820829230769 1328280509.107  20.79364        1328280510.498  20.822726153846 1328280511.639  20.830103076923 1328280512.647  20.818721538462 1328280513.804  20.828838461538 1328280514.413  20.810501538462 1328280515.554  20.814927692308 1328280515.977  20.789424615385 1328280527.618  20.826309230769 1328280528.422  20.82378        1328280529.751  20.830524615385 1328280530.251  20.822093846154 1328280531.736  20.831156923077 1328280532.158  20.834529230769 1328280533.447  20.834318461538 1328280534.823  20.82926        1328280535.198  20.825255384615 1328280536.745  20.814084615385 1328280537.74   20.835793846154 1328280538.543  20.835372307692 1328280539.488  20.809026153846 1328280540.864  20.826730769231 1328280541.317  20.837269230769 1328280542.677  20.806075384615 1328280543.99   20.825044615385 1328280544.521  20.829049230769 1328280545.592  20.82926        1328280546.30   20.818089230769 1328280547.452  20.804389230769 1328280548.827  20.795326153846 1328280549.249  20.811133846154 1328280549.640
+74     BPTX_PhaseRMS_B1        f:1     71      0.0058577164199717      1399233600.806  0.015511813524426       1328280471.361  0.015802914149653       1328280472.908  0.019239432854636       1328280473.96   0.01765297689162        1328280475.565  0.0065606472656569      1328280476.972  0.0055540791768716      1328280477.129  0.0076992820075604      1328280478.308  0.0069124596192787      1328280479.668  0.0072585446892548      1328280480.90   0.005283964017633       1328280481.278  0.017016792931008       1328280482.935  0.0051407820877149      1328280483.99   0.0139146008709 1328280484.490  0.0067235054255271      1328280485.37   0.005486481374234       1328280486.366  0.015128621325001       1328280487.803  0.016171508739485       1328280488.179  0.015499780643609       1328280489.452  0.017963796128907       1328280490.859  0.0063752030899306      1328280491.281  0.0055508789005023      1328280492.813  0.0068218938181613      1328280493.219  0.0067383552678652      1328280494.657  0.012865730904849       1328280495.478  0.015341480985112       1328280496.931  0.0047919301246493      1328280497.322  0.016934622383338       1328280498.666  0.0068039624549779      1328280499.260  0.0059599635438304      1328280500.604  0.0051113168094559      1328280500.690  0.0056649499754943      1328280501.238  0.01969863708979        1328280502.535  0.0049859286968842      1328280503.566  0.022312190448352       1328280504.442  0.0074186577678792      1328280505.864  0.0058242521728351      1328280506.888  0.0052772339222195      1328280507.216  0.0067129255520564      1328280508.810  0.017311456062559       1328280509.107  0.032943170087054       1328280510.498  0.0069470766232619      1328280511.639  0.0052094547864048      1328280512.647  0.0069716523047255      1328280513.804  0.0060152371612846      1328280514.413  0.018799386644911       1328280515.554  0.017470849574421       1328280516.977  0.017691562954225       1328280517.618  0.005128669827663       1328280518.422  0.0050448309945238      1328280519.751  0.0054397247798458      1328280520.251  0.01624168053945        1328280521.736  0.005457254571267       1328280522.158  0.0055748361930979      1328280523.447  0.0063682310809661      1328280524.823  0.0071973911940361      1328280525.198  0.004265669311439       1328280526.745  0.0098465555807465      1328280527.74   0.0058089774227672      1328280528.543  0.0048265693649127      1328280529.488  0.013647856983303       1328280530.864  0.0043832906230803      1328280531.317  0.0046584291483475      1328280532.677  0.020739199650184       1328280533.99   0.018265437138107       1328280534.521  0.0074886874210325      1328280535.592  0.0081306126031047      1328280536.30   0.0057505633580465      1328280537.452  0.019671556500387       1328280538.827  0.019149170488932       1328280539.249  0.018977308536511       1328280540.640
+75     BPTX_Phase_Shift_B1     f:1     71      1.3713723076923 1399233600.806  1.3945569230769 1328280471.361  1.3928707692307 1328280472.908  1.3920276923077 1328280473.96   1.3909738461538 1328280475.565  1.3593584615384 1328280476.972  1.3776953846154 1328280477.129  1.3814892307692 1328280478.308  1.3768523076923 1328280479.668  1.3701076923077 1328280480.90   1.3732692307692 1328280481.278  1.3945569230769 1328280482.935  1.3804353846154 1328280483.99   1.3962430769231 1328280484.490  1.3726369230769 1328280485.37   1.3831753846154 1328280486.366  1.3918169230769 1328280487.803  1.3892876923077 1328280488.179  1.3954  1328280489.452  1.3968753846154 1328280490.859  1.3787492307692 1328280491.281  1.3747446153846 1328280492.813  1.3726369230769 1328280493.219  1.3728476923077 1328280494.657  1.3791707692307 1328280495.478  1.3968753846154 1328280496.931  1.3766415384615 1328280497.322  1.3865476923077 1328280498.666  1.3749553846154 1328280499.260  1.3717938461538 1328280500.604  1.3779061538461 1328280500.690  1.3667353846154 1328280501.238  1.4057276923077 1328280502.535  1.3747446153846 1328280503.566  1.4133153846154 1328280504.442  1.37622 1328280505.864  1.3705292307692 1328280506.888  1.3846507692307 1328280507.216  1.3835969230769 1328280508.810  1.3791707692307 1328280509.107  1.40636 1328280510.498  1.3772738461538 1328280511.639  1.3698969230769 1328280512.647  1.3812784615384 1328280513.804  1.3711615384615 1328280514.413  1.3894984615384 1328280515.554  1.3850723076923 1328280516.977  1.4105753846154 1328280517.618  1.3736907692308 1328280518.422  1.37622 1328280519.751  1.3694753846154 1328280520.251  1.3779061538461 1328280521.736  1.3688430769231 1328280522.158  1.3654707692307 1328280523.447  1.3656815384615 1328280524.823  1.37074 1328280525.198  1.3747446153846 1328280526.745  1.3859153846154 1328280527.74   1.3642061538461 1328280528.543  1.3646276923077 1328280529.488  1.3909738461538 1328280530.864  1.3732692307692 1328280531.317  1.3627307692307 1328280532.677  1.3939246153846 1328280533.99   1.3749553846154 1328280534.521  1.3709507692307 1328280535.592  1.37074 1328280536.30   1.3819107692307 1328280537.452  1.3956107692307 1328280538.827  1.4046738461538 1328280539.249  1.3888661538461 1328280540.640
+76     BPTX_Phase_B2   f:1     70      21.883426153846 1399233600.962  21.892067692308 1328280471.799  21.876470769231 1328280472.221  21.93106        1328280473.737  21.881529230769 1328280474.143  21.894175384615 1328280475.581  21.89818        1328280476.894  21.895861538462 1328280477.58   21.913776923077 1328280478.543  21.904292307692 1328280479.153  21.910404615385 1328280480.356  21.899233846154 1328280481.653  21.877103076923 1328280482.966  21.877946153846 1328280483.865  21.905556923077 1328280484.287  21.907664615385 1328280485.725  21.900076923077 1328280486.147  21.923893846154 1328280487.726  21.925790769231 1328280488.991  21.919678461538 1328280489.140  21.914830769231 1328280490.562  21.908296923077 1328280491.47   21.904503076923 1328280492.500  21.896915384615 1328280493.938  21.930638461538 1328280494.236  21.891646153846 1328280495.40   21.915041538462 1328280496.494  21.904924615385 1328280497.932  21.916938461538 1328280498.229  21.898601538462 1328280499.510  21.905556923077 1328280500.440  21.905978461538 1328280501.894  21.899233846154 1328280502.425  21.900498461538 1328280503.707  21.897758461538 1328280504.176  21.893543076923 1328280505.676  21.915884615385 1328280506.247  21.897969230769 1328280507.685  21.879632307692 1328280508.169  21.91188        1328280509.654  21.908718461538 1328280510.76   21.915673846154 1328280511.405  21.88174        1328280512.100  21.898390769231 1328280513.538  21.889327692308 1328280514.976  21.8927 1328280515.461  21.903449230769 1328280516.930  21.893964615385 1328280517.118  21.911247692308 1328280518.844  21.922207692308 1328280519.345  21.915252307692 1328280520.642  21.927898461538 1328280521.126  21.907875384615 1328280522.517  21.920521538462 1328280523.908  21.911458461538 1328280524.854  21.919889230769 1328280525.120  21.919467692308 1328280526.683  21.924104615385 1328280527.136  21.910404615385 1328280528.496  21.918624615385 1328280529.902  21.919256923077 1328280530.145  21.906189230769 1328280531.473  21.905767692308 1328280532.974  21.912723076923 1328280533.380  21.934432307692 1328280534.818  21.928530769231 1328280535.920  21.88722        1328280536.233  21.891435384615 1328280537.624  21.912933846154 1328280538.140  21.924526153846 1328280549.953
+77     BPTX_PhaseRMS_B2        f:1     71      0.0132582055512 1399233600.962  0.011851154828506       1328280471.799  0.011666034083724       1328280472.221  0.015545713227875       1328280473.737  0.012332431712872       1328280474.143  0.0099611598858862      1328280475.581  0.015827211538637       1328280476.894  0.0095429827994217      1328280477.58   0.013351028814822       1328280478.543  0.016137271936797       1328280479.153  0.013745159888304       1328280480.356  0.015634474545681       1328280481.653  0.011277434147303       1328280482.966  0.016429863739095       1328280483.865  0.015941177938999       1328280484.287  0.020249647676094       1328280485.725  0.013469456660233       1328280486.147  0.01311198078095        1328280487.726  0.011828642641722       1328280488.991  0.014720838902324       1328280489.140  0.016782313880142       1328280490.562  0.012131412606713       1328280491.47   0.014955558472714       1328280492.500  0.014868570441783       1328280493.938  0.012491522569114       1328280494.236  0.0085666738347923      1328280495.40   0.017582373778654       1328280496.494  0.010274000148591       1328280497.932  0.012844824067516       1328280498.229  0.016499475257928       1328280499.510  0.012268869500348       1328280500.440  0.012691038295496       1328280501.894  0.013374133968534       1328280502.425  0.012289129501528       1328280503.707  0.014913915197187       1328280504.176  0.0087282386166461      1328280505.676  0.012247306526733       1328280506.247  0.0087208555033358      1328280507.685  0.013074659433039       1328280508.169  0.010714874205084       1328280509.654  0.010536142821836       1328280510.76   0.018738795222493       1328280511.405  0.011040968667306       1328280512.100  0.012655985921491       1328280513.538  0.014664601512308       1328280514.976  0.0079605504403661      1328280515.461  0.013669810524046       1328280516.930  0.017783353302304       1328280517.118  0.014802093638897       1328280518.844  0.013197082742008       1328280519.345  0.01971295218345        1328280520.642  0.017285133085945       1328280521.126  0.014735919878805       1328280522.517  0.0089969087261802      1328280523.908  0.017406527212107       1328280524.854  0.018700825890695       1328280525.120  0.018525644238133       1328280526.683  0.013044555199585       1328280527.136  0.016435811103418       1328280528.496  0.01551066793796        1328280529.902  0.02002074723281        1328280530.145  0.013745159888304       1328280531.473  0.014012746260155       1328280532.974  0.011974957301254       1328280533.380  0.01518431040922        1328280534.818  0.018449833629243       1328280535.920  0.015832824124689       1328280536.233  0.013562963152182       1328280537.624  0.010378966908264       1328280538.140  0.016160516871751       1328280539.577  0.01228334433962        1328280540.953
+78     BPTX_Phase_Shift_B2     f:1     70      0.31657384615382        1399233600.962  0.30793230769228        1328280471.799  0.32352923076921        1328280472.221  0.26893999999998        1328280473.737  0.31847076923075        1328280474.143  0.30582461538459        1328280475.581  0.30181999999998        1328280476.894  0.30413846153844        1328280477.58   0.28622307692305        1328280478.543  0.29570769230767        1328280479.153  0.28959538461536        1328280480.356  0.30076615384613        1328280481.653  0.3228969230769 1328280482.966  0.32205384615382        1328280483.865  0.29444307692305        1328280484.287  0.29233538461536        1328280485.725  0.29992307692305        1328280486.147  0.27610615384613        1328280487.726  0.27420923076921        1328280488.991  0.28032153846151        1328280489.140  0.28516923076921        1328280490.562  0.29170307692305        1328280491.47   0.2954969230769 1328280492.500  0.30308461538459        1328280493.938  0.26936153846151        1328280494.236  0.30835384615382        1328280495.40   0.28495846153844        1328280496.494  0.29507538461536        1328280497.932  0.28306153846152        1328280498.229  0.30139846153844        1328280499.510  0.29444307692305        1328280500.440  0.29402153846151        1328280501.894  0.30076615384613        1328280502.425  0.29950153846152        1328280503.707  0.30224153846152        1328280504.176  0.3064569230769 1328280505.676  0.28411538461536        1328280506.247  0.30203076923074        1328280507.685  0.32036769230767        1328280508.169  0.28811999999997        1328280509.654  0.29128153846152        1328280510.76   0.28432615384613        1328280511.405  0.31825999999998        1328280512.100  0.30160923076921        1328280513.538  0.31067230769228        1328280514.976  0.30729999999997        1328280515.461  0.29655076923075        1328280516.930  0.30603538461536        1328280517.118  0.28875230769228        1328280518.844  0.27779230769229        1328280519.345  0.28474769230766        1328280520.642  0.27210153846152        1328280521.126  0.29212461538459        1328280522.517  0.27947846153844        1328280523.908  0.28854153846152        1328280524.854  0.28011076923075        1328280525.120  0.28053230769229        1328280526.683  0.27589538461536        1328280527.136  0.28959538461536        1328280528.496  0.28137538461536        1328280529.902  0.28074307692305        1328280530.145  0.29381076923075        1328280531.473  0.29423230769229        1328280532.974  0.2872769230769 1328280533.380  0.26556769230767        1328280534.818  0.27146923076921        1328280535.920  0.31277999999998        1328280536.233  0.30856461538459        1328280537.624  0.28706615384613        1328280538.140  0.27547384615383        1328280539.953
+79     LHC_Particle_Type_B1    s:1     1       PROTON  1297160580.0
+80     LHC_Particle_Type_B2    s:1     1       PROTON  1297160580.0
+81     LHC_Data_Quality_Flag   b:1     5       1       1297160580.0    0       1297160581.0    0       1297160582.0    1       1399233600.2    0       1328280472.0
 ==== END_OF_BLOCK ====
index 251a2d7d7dfd714879ec8fbffa493bc3b5aa3302..f8b35644a4dce2f9b2a5616701abe6b2527b0ee0 100644 (file)
@@ -52,7 +52,7 @@ struct AliHLTTracksData {
 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTExternalTrackParam fTracklets[1]; // array of tracklets
 #else
-  AliHLTExternalTrackParam fTracklets[]; // array of tracklets
+  AliHLTExternalTrackParam fTracklets[0]; // array of tracklets
 #endif
 };
 
index dc3d65c05d4c455e8a720daf9abb35c4e411485a..5c87907596df4146716d84149e5034eb5f6afd93 100644 (file)
@@ -26,7 +26,7 @@ struct AliHLTTrackMCData {
 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTTrackMCLabel fLabels[1];
 #else
-  AliHLTTrackMCLabel fLabels[];
+  AliHLTTrackMCLabel fLabels[0];
 #endif
 };
 
index 8ac428c5a5c5571fa1949c3f2452943307efcd5c..49fa36d1eea24af9fd7f76a604ee9324cba58ba6 100644 (file)
@@ -317,6 +317,9 @@ int AliHLTRawReaderPublisherComponent::GetEvent(const AliHLTComponentEventData&
        }
        header=&headerV2;
       } else { //assuming V3 even if no header at all was found above
+       if(! headerVersion){
+         AliWarning("No data header found! Creating dummy header for empty blocks assuming CDH v3.");
+       }
         headerV3.fSize=sizeof(AliRawDataHeaderV3);
         const UInt_t* triggermask=pRawReader->GetTriggerPattern();
         if (triggermask) {
index f6c01b6f5753b2f764d137b8c8dc48dfd125994a..43ad9c7b2cd6a5615682fce748962db9c99258b2 100644 (file)
 struct AliHLTITSClusterData
     {
        AliHLTUInt32_t fSpacePointCnt;
-#ifndef __SUNPRO_CC
-       AliHLTITSSpacePointData fSpacePoints[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
        AliHLTITSSpacePointData fSpacePoints[1];
+#else
+       AliHLTITSSpacePointData fSpacePoints[0];
 #endif
     };
 
index 9ef383e4ed9664ef1fa1dfa2d24dc19fbde30059..874221d256736102cf33726c8ddd98535ae16217 100644 (file)
 struct AliHLTTPCClusterData
     {
        AliHLTUInt32_t fSpacePointCnt;
-#if !defined(__SUNPRO_CC) && !defined(__clang__)
-       AliHLTTPCSpacePointData fSpacePoints[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
        AliHLTTPCSpacePointData fSpacePoints[1];
+#else
+       AliHLTTPCSpacePointData fSpacePoints[0];
 #endif
     };
 
index 5b261645c0abed7a9503aa1fe3db85c72d70cb47..78d7baae44d42198d2dec08e99ba134577e69fa8 100644 (file)
@@ -46,10 +46,10 @@ typedef struct AliHLTTPCClusterMCLabel AliHLTTPCClusterMCLabel;
 struct AliHLTTPCClusterMCData 
 {
   AliHLTUInt32_t fCount;
-#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC) || defined (__clang__)
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTTPCClusterMCLabel fLabels[1];
 #else
-  AliHLTTPCClusterMCLabel fLabels[];
+  AliHLTTPCClusterMCLabel fLabels[0];
 #endif
 };
 
index 4b603882d0b884f0c6deb594b7578fb704299405..4301a8f2c4092414f6ef5e093f7abc2f4deaeed4 100644 (file)
@@ -70,10 +70,10 @@ typedef struct AliHLTTPCRandomDigitData AliHLTTPCRandomDigitData;
  */
 struct AliHLTTPCUnpackedRawData
 {
-#ifndef __SUNPRO_CC
-  AliHLTTPCDigitRowData fDigits[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTTPCDigitRowData fDigits[1];
+#else
+  AliHLTTPCDigitRowData fDigits[0];
 #endif
 };
 
index b83afe702123ef20dbfc97d95155d24a6af17e68..444053905f11ce2443d1de052d27a9e3b6655c57 100644 (file)
@@ -315,20 +315,18 @@ int AliHLTTPCHWClusterDecoderComponent::DoEvent(const AliHLTComponentEventData&
          c.SetQMax(cl.GetQMax());        
          outputRaw->fCount++;
        }       
-       
-       // fill into HLT output data
-       AliHLTComponentBlockData bdRawClusters;
-       FillBlockData( bdRawClusters );
-       bdRawClusters.fOffset = size;   
-       bdRawClusters.fSize = sizeof(AliHLTTPCRawClusterData)+outputRaw->fCount*sizeof(AliHLTTPCRawCluster);
-       bdRawClusters.fSpecification = iter->fSpecification;
-       bdRawClusters.fDataType = AliHLTTPCDefinitions::fgkRawClustersDataType | kAliHLTDataOriginTPC;
-       outputBlocks.push_back( bdRawClusters );
-       fBenchmark.AddOutput(bdRawClusters.fSize);
-       size   += bdRawClusters.fSize;
-       outputPtr += bdRawClusters.fSize;
-      }    
-      continue; // HW clusters data block
+      }
+      // fill into HLT output data
+      AliHLTComponentBlockData bdRawClusters;
+      FillBlockData( bdRawClusters );
+      bdRawClusters.fOffset = size;    
+      bdRawClusters.fSize = sizeof(AliHLTTPCRawClusterData)+outputRaw->fCount*sizeof(AliHLTTPCRawCluster);
+      bdRawClusters.fSpecification = iter->fSpecification;
+      bdRawClusters.fDataType = AliHLTTPCDefinitions::fgkRawClustersDataType | kAliHLTDataOriginTPC;
+      outputBlocks.push_back( bdRawClusters );
+      fBenchmark.AddOutput(bdRawClusters.fSize);
+      size   += bdRawClusters.fSize;
+      outputPtr += bdRawClusters.fSize;
     }
 
   } // end of loop over data blocks  
index 3b695952653beedc06c185f0d38df4a476be4052..46334f603e6c9870a26c62cd20a8c31e1cbb837a 100644 (file)
 struct AliHLTTPCTrackletData
     {
        AliHLTUInt32_t fTrackletCnt;
-#ifndef __SUNPRO_CC
-       AliHLTTPCTrackSegmentData fTracklets[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
        AliHLTTPCTrackSegmentData fTracklets[1];
+#else
+       AliHLTTPCTrackSegmentData fTracklets[0];
 #endif
        //AliHLTTPCSpacePointData fSpacePoints[];
     };
index a44bfebfa69479e65c1fa94062ae947caa1bdae6..bfb2e5902977dfe0efb0cb2ee02b4a247159196d 100644 (file)
@@ -17,7 +17,7 @@
 #include "AliHLTProcessor.h"
 
 //forward declarations
-class AliHLTTPCSpacePointData;
+struct AliHLTTPCSpacePointData;
 class AliTPCParam;
 //class TClonesArray;
 class TObjArray;
index 7abf200b011c12569e3bd094ce0f31f60898b5e9..0de647f714bb2640018d21f16b22dc2b40517340 100644 (file)
@@ -260,7 +260,7 @@ MEM_CLASS_PRE() class AliHLTTPCCATracker
   GPUd() static int CalculateHitWeight( int NHits, float chi2, int ) {
     const float chi2_suppress = 6.f;
     float weight = (((float) NHits * (chi2_suppress - chi2 / 500.f)) * (1e9 / chi2_suppress / 160.));
-    if (weight < 0 || weight > 2e9) weight = 0;
+    if (weight < 0. || weight > 2e9) return 0;
     return ( (int) weight );
     //return( (NHits << 16) + num);
   }
index bc380acdcf9a445579cc8ed428ab28fc446cdfaa..e1847a95b9cd3bc5faddd8adf089ba57c8c6996b 100644 (file)
@@ -159,7 +159,7 @@ AliHLTComponentDataType AliHLTTPCCATrackerComponent::GetOutputDataType()
 void AliHLTTPCCATrackerComponent::GetOutputDataSize( unsigned long& constBase, double& inputMultiplier )
 {
   // define guess for the output data size
-  constBase = 200;       // minimum size
+  constBase = 1200;       // minimum size
   inputMultiplier = 0.6; // size relative to input
 }
 
index b1232f4d092bc4b32bd7e72edbb13d9bf5b4ed2a..ce2cc57717a5a1accba5ced79ca431ee7728220a 100644 (file)
@@ -16,7 +16,7 @@
 class AliHLTTPCCATrackerFramework;
 class AliHLTTPCCASliceOutput;
 class AliHLTTPCCAClusterData;
-class AliHLTTPCSpacePointData;
+struct AliHLTTPCSpacePointData;
 
 /**
  * @class AliHLTTPCCATrackerComponent
index f256ff12ed8ce746c8217d85131b6303fe14a658..a96052d6ce6e0946d7de148d3b28efa3ccbbc316 100644 (file)
@@ -89,10 +89,10 @@ struct AliHLTTRDClustersArray {
   AliHLTTRDClustersArray(Int_t det):fDetector(det),fCount(0){}
   Short_t  fDetector;
   UShort_t fCount;
-#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC) || defined(__clang__)
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   cluster_type fCluster[1];
 #else
-  cluster_type fCluster[];
+  cluster_type fCluster[0];
 #endif
 };
 
index 112f0a60f57f4ef90e5346df015050976ac037eb..7c6268ef4332e3f3c448ab3f1aa4ae5b076f7da3 100644 (file)
@@ -16,7 +16,7 @@ struct AliHLTTRDTrackletWordArray {
 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   UInt_t fTracklets[1];
 #else
-  UInt_t fTracklets[];
+  UInt_t fTracklets[0];
 #endif
 };
 
index b0ab471f1e88cc4cacd95cb7f523e7f2f257edd8..8567ac7fc0a3617745540a45f80f4d75228ce0f0 100644 (file)
@@ -51,7 +51,7 @@
 
 #include "AliHLTProcessor.h"
 
-class AliHLTTPCSpacePointData;
+struct AliHLTTPCSpacePointData;
 class AliHLTGlobalBarrelTrack;
 
 class AliHLTGlobalTrackResidualsComponent : public AliHLTProcessor {
index fc259207c58021da856769a961aae26071c5b2df..526dde3e75684ebb1dbbe21f08282fbb9055584b 100644 (file)
@@ -28,8 +28,9 @@ const Double_t kmaxDCAz= 3.;
 const Int_t kSeedingLayer1=6, kSeedingLayer2=4, kSeedingLayer3=5;
 // Space point resolution
 const Double_t kSigma2=0.0005*0.0005;
-// Max accepted chi2 per cluster
-const Double_t kmaxChi2PerCluster=10.;
+// Max accepted chi2
+const Double_t kmaxChi2PerCluster=20.;
+const Double_t kmaxChi2PerTrack=30.;
 // Tracking "road" from layer to layer
 const Double_t kRoadY=0.7;
 const Double_t kRoadZ=0.7;
@@ -179,12 +180,27 @@ AddCookedSeed(const Float_t r1[3], Int_t l1, Int_t i1,
     par[4]=(TMath::Abs(bz) < kAlmost0Field) ? kAlmost0 : crv/(bz*kB2C);
 
     Double_t cov[15];
+    /*
     for (Int_t i=0; i<15; i++) cov[i]=0.;
     cov[0] =kSigma2*10;
     cov[2] =kSigma2*10;
     cov[5] =0.007*0.007*10;   //FIXME all these lines
     cov[9] =0.007*0.007*10;
     cov[14]=0.1*0.1*10;
+    */
+    const Double_t dlt=0.0005;
+    Double_t
+    fy=1./(fgLayers[kSeedingLayer3].GetR() - fgLayers[kSeedingLayer2].GetR());
+    Double_t tz=fy;
+    Double_t cy=(f1(x1, y1, x2, y2+dlt, x3, y3) - crv)/dlt/bz/kB2C;
+    cy*=20; //FIXME: MS contribution to the cov[14]
+    Double_t s2=kSigma2;
+
+    cov[0]=s2;
+    cov[1]=0.;     cov[2]=s2;
+    cov[3]=s2*fy;  cov[4]=0.;    cov[5]=s2*fy*fy;
+    cov[6]=0.;     cov[7]=s2*tz; cov[8]=0.;        cov[9]=s2*tz*tz;
+    cov[10]=s2*cy; cov[11]=0.;   cov[12]=s2*fy*cy; cov[13]=0.; cov[14]=s2*cy*cy;
 
     AliITSUTrackCooked *seed=new AliITSUTrackCooked();
     seed->Set(Double_t(x), Double_t(a), par, cov);
@@ -194,6 +210,14 @@ AddCookedSeed(const Float_t r1[3], Int_t l1, Int_t i1,
     if (TMath::Abs(dz[0]) > kmaxDCAxy) {delete seed; return kFALSE;} 
     if (TMath::Abs(dz[1]) > kmaxDCAz ) {delete seed; return kFALSE;} 
 
+    Double_t xx0 = 0.008; // Rough layer thickness
+    Double_t radl= 9.36;  // Radiation length of Si [cm]
+    Double_t rho = 2.33;  // Density of Si [g/cm^3] 
+    Double_t mass= 0.139;// Pion
+    if (!seed->CorrectForMeanMaterial(xx0, xx0*radl*rho, mass, kTRUE)) {
+       delete seed; return kFALSE;
+    }
+
     seed->SetClusterIndex(l1,i1);
     seed->SetClusterIndex(l2,i2);
     seed->SetClusterIndex(l3,i3);
@@ -242,12 +266,12 @@ Int_t AliITSUTrackerCooked::MakeSeeds() {
          //if (c2->GetLabel(0)!=lab) continue;
         //
          Double_t z2=c2->GetZ();
-         
          if (z2 > (zr2+kzWin)) break;  //check in Z
+
          Float_t xyz2[3]; c2->GetGlobalXYZ(xyz2);
          Double_t phi2=TMath::ATan2(xyz2[1],xyz2[0]);
          if (TMath::Abs(phi2-phi1) > kpWin) continue;  //check in Phi
+
          Double_t zr3=z1 + (r3-r1)/(r2-r1)*(z2-z1);
          Double_t crv=f1(xyz1[0], xyz1[1], xyz2[0], xyz2[1], GetX(), GetY());
          Double_t phir3 = phi1 + 0.5*crv*(r3 - r1); 
@@ -369,10 +393,9 @@ void AliITSUTrackerCooked::FollowProlongation() {
   //deal with the best track
   Int_t ncl=fTrackToFollow->GetNumberOfClusters();
   Int_t nclb=fBestTrack->GetNumberOfClusters();
-  if (ncl)
   if (ncl >= nclb) {
      Double_t chi2=fTrackToFollow->GetChi2();
-     if (chi2/ncl < kmaxChi2PerCluster) {        
+     if (chi2 < kmaxChi2PerTrack) {        
         if (ncl > nclb || chi2 < fBestTrack->GetChi2()) {
           ResetBestTrack();
         }
index 4adcccbc24c2049c001aeb030b24b22d0ba459b1..b7539628438b1abd98804bcd6fe82745217c66da 100644 (file)
@@ -12,9 +12,10 @@ using TMath::Sqrt;
 #include <algorithm>
 using std::sort;
 
+
 // Vc library
 //#include "Vc/Vc"
-//#include "AliITSUTrackerSAauxVc.h" // Structs and other stuff using Vc library  
+//#include "AliITSUTrackerSAauxVc.h" // Structs and other stuff using Vc library
 #include "AliLog.h"
 #include "AliESDEvent.h"
 #include "AliITSUClusterPix.h"
@@ -29,29 +30,36 @@ using std::cout;
 using std::endl;
 using std::flush;
 
-//#include "AliITSUtrackSA.h"      // Some dedicated SA track class ?  
+//#include "AliITSUtrackSA.h"      // Some dedicated SA track class ?
 
 ClassImp(AliITSUTrackerSA)
 
 const Double_t AliITSUTrackerSA::fgkToler =  1e-6;// tolerance for layer on-surface check
+const Double_t AliITSUTrackerSA::fgkChi2Cut =  10.f;
 
 //________________________________________________________________________________
-AliITSUTrackerSA::AliITSUTrackerSA(AliITSUReconstructor* rec) :  
-  fReconstructor(rec)
-  ,fITS(0)
-  ,fMatLUT(0)
-  ,fUseMatLUT(kFALSE)
-  ,fCurrMass(0.14)
-  //
-  ,fClusters(),
-  fClustersTC(),
-  fDoublets(),
-  fIndex(),
-  fNClusters(),
-  fNDoublets(),
-  fPhiCut(0.05),
-  fRPhiCut(0.03),
-  fZCut(0.01)
+AliITSUTrackerSA::AliITSUTrackerSA(AliITSUReconstructor* rec) :
+fReconstructor(rec),
+fITS(0),
+fMatLUT(0),
+fUseMatLUT(kFALSE),
+fCurrMass(0.14),
+//
+fClusters(),
+fClustersTC(),
+fDoublets(),
+fIndex(),
+fNClusters(),
+fNDoublets(),
+fPhiCut(0.05),
+fRPhiCut(0.03),
+fZCut(0.01)
+#ifdef __DEBUG__
+,fCv(0x0)
+,fMk(0x0)
+,fLn(0x0)
+,fTx(0x0)
+#endif
 {
   //--------------------------------------------------------------------
   // This default constructor needs to be provided
@@ -63,22 +71,28 @@ AliITSUTrackerSA::AliITSUTrackerSA(AliITSUReconstructor* rec) :
 }
 
 //________________________________________________________________________________
-AliITSUTrackerSA::AliITSUTrackerSA(const AliITSUTrackerSA &t): 
-  AliTracker(t),
-  fReconstructor(t.fReconstructor),
-  fITS(t.fITS),
-  fMatLUT(t.fMatLUT),
-  fUseMatLUT(t.fUseMatLUT),
-  fCurrMass(t.fCurrMass),
-  //
-  fClusters(),
-  fClustersTC(),
-  fIndex(),
-  fNClusters(),
-  fNDoublets(),
-  fPhiCut(),
-  fRPhiCut(),
-  fZCut()
+AliITSUTrackerSA::AliITSUTrackerSA(const AliITSUTrackerSA &t):
+AliTracker(t),
+fReconstructor(t.fReconstructor),
+fITS(t.fITS),
+fMatLUT(t.fMatLUT),
+fUseMatLUT(t.fUseMatLUT),
+fCurrMass(t.fCurrMass),
+//
+fClusters(),
+fClustersTC(),
+fIndex(),
+fNClusters(),
+fNDoublets(),
+fPhiCut(),
+fRPhiCut(),
+fZCut()
+#ifdef __DEBUG__
+,fCv(0x0)
+,fMk(0x0)
+,fLn(0x0)
+,fTx(0x0)
+#endif
 {
   //--------------------------------------------------------------------
   // The copy constructor is protected
@@ -86,7 +100,7 @@ AliITSUTrackerSA::AliITSUTrackerSA(const AliITSUTrackerSA &t):
 }
 
 //________________________________________________________________________________
-AliITSUTrackerSA::~AliITSUTrackerSA() 
+AliITSUTrackerSA::~AliITSUTrackerSA()
 {
   // d-tor
   delete fMatLUT;
@@ -125,24 +139,22 @@ Int_t AliITSUTrackerSA::Clusters2Tracks(AliESDEvent *event) {
 
   // Possibly, increment the seeds with additional clusters (Kalman)
 
-  // Possibly, (re)fit the found tracks 
+  // Possibly, (re)fit the found tracks
 
-  // Three iterations: 
+  // Three iterations:
   // - High momentum first;
-  // - Low momentum with vertex constraint; 
-  // - Everything else. 
+  // - Low momentum with vertex constraint;
+  // - Everything else.
 
-  MakeDoublets();       // To be implemented
-  //MakeTriplets();       // Are triplets really necessary? MFT does not use them. 
-  CASelection(event);       
-  //GlobalFit();          // To be implemented
-  //ChiSquareSelection(); // To be implemented
+  MakeDoublets();       // To be checked
+  //MakeTriplets();       // Are triplets really necessary? MFT does not use them.
+  CASelection(event);
 
   return 0;
 }
 
 //________________________________________________________________________________
-Int_t AliITSUTrackerSA::PropagateBack(AliESDEvent */*event*/) {
+Int_t AliITSUTrackerSA::PropagateBack(AliESDEvent * /*event*/) {
   //--------------------------------------------------------------------
   // Here, we implement the Kalman smoother ?
   // The clusters must be already loaded
@@ -152,15 +164,16 @@ Int_t AliITSUTrackerSA::PropagateBack(AliESDEvent */*event*/) {
 }
 
 //________________________________________________________________________________
-Int_t AliITSUTrackerSA::RefitInward(AliESDEvent */*event*/) {
+Int_t AliITSUTrackerSA::RefitInward(AliESDEvent * /*event*/) {
   //--------------------------------------------------------------------
-  // Some final refit, after the outliers get removed by the smoother ?  
+  // Some final refit, after the outliers get removed by the smoother ?
   // The clusters must be loaded
   //--------------------------------------------------------------------
 
   return 0;
 }
 
+//________________________________________________________________________________
 Int_t AliITSUTrackerSA::LoadClusters(TTree *cluTree) {
   //--------------------------------------------------------------------
   // This function reads the ITSU clusters from the tree,
@@ -168,6 +181,7 @@ Int_t AliITSUTrackerSA::LoadClusters(TTree *cluTree) {
   //--------------------------------------------------------------------
   fITS->LoadClusters(cluTree);
   fITS->ProcessClusters();
+
   //
   for(int iL=0; iL<7; ++iL) {
     fClustersTC[iL]=*fITS->GetLayerActive(iL)->GetClustersAddress();
@@ -175,19 +189,29 @@ Int_t AliITSUTrackerSA::LoadClusters(TTree *cluTree) {
     fNClusters[iL]=clCont->GetEntriesFast();
     Float_t phi[fNClusters[iL]];
     fIndex[iL] = new Int_t[fNClusters[iL]];
+    AliITSURecoLayer* lr = fITS->GetLayerActive(iL) ; // assign the layer which the cluster belongs to
     for(int iC=0;iC<fNClusters[iL];++iC) {
       const AliITSUClusterPix *cl = (AliITSUClusterPix*)clCont->At(iC);
       float pos[3];
       cl->GetGlobalXYZ(pos);
       phi[iC] = pos[0]==0.f ? TMath::PiOver2() : TMath::ATan2(pos[1]-GetY(),pos[0]-GetX());
-      float angle=0.f; // TO BE UNDERSTOOD: DO I STILL NEED THE STATION ANGLE IF I USE THE GLOBAL COVARIANCE MATRIX?
+      AliITSURecoSens* sens = lr->GetSensorFromID(cl->GetVolumeId());
+      //double x = sens->GetXTF() + clus->GetX();
+      float angle= sens->GetPhiTF();
+      #ifdef __DEBUG__
+      int label=cl->GetLabel(0);
+      //cout << "Guarda te che label" << label << endl;
+      fClusters[iL].push_back(itsCluster(pos[0],pos[1],pos[2],cl->GetSigmaY2(),cl->GetSigmaZ2(),cl->GetSigmaYZ(),phi[iC],angle,label));
+      #else
       fClusters[iL].push_back(itsCluster(pos[0],pos[1],pos[2],cl->GetSigmaY2(),cl->GetSigmaZ2(),cl->GetSigmaYZ(),phi[iC],angle));
+      #endif
     }
     TMath::Sort(fNClusters[iL],phi,fIndex[iL],kFALSE);
   }
-// #ifdef __DEBUG__
-//   PrintInfo("clusters");
-// #endif
+  #ifdef __DEBUG__
+  //PrintInfo("clusters");
+  DrawEvent("clusters");
+  #endif
   return 0;
 }
 
@@ -209,177 +233,184 @@ AliCluster *AliITSUTrackerSA::GetCluster(Int_t /*index*/) const {
   //--------------------------------------------------------------------
   //       Return pointer to a given cluster
   //--------------------------------------------------------------------
-  return 0;  // replace with an actual pointer 
+  return 0;  // replace with an actual pointer
 }
 
 //________________________________________________________________________________
 void AliITSUTrackerSA::CASelection(AliESDEvent *event) {
   // Here it's implemented the Cellular Automaton routine
-  // Firstly the level of each doublet is set according to the level of 
-  // the neighbour doublets. 
-  // Doublet are considered to be neighbour if they share one point and the 
+  // Firstly the level of each doublet is set according to the level of
+  // the neighbour doublets.
+  // Doublet are considered to be neighbour if they share one point and the
   // phi and theta direction difference of the two is below a cut value.
 
   cout << "Begin of the CA selection" << endl;
   for( int iL = 1; iL < 6; ++iL ) {
-    
+
     const itsCluster* clusters1 = &fClusters[iL-1][0];
     const itsCluster* clusters2 = &fClusters[iL][0];
-    const itsCluster* clusters3 = &fClusters[iL+1][0];    
+    const itsCluster* clusters3 = &fClusters[iL+1][0];
 
     const nPlets* doublets1 = &fDoublets[iL-1][0];
     nPlets* doublets2 = &fDoublets[iL][0];
 
     for ( int iD2 = 0; iD2 < fNDoublets[iL]; ++iD2 ) {
       for ( int iD1 = 0; iD1 < fNDoublets[iL-1]; ++iD1 ) {
-       const int id1 = doublets1[iD1].id0;
-       const int id2 = doublets2[iD2].id0;
-       if ( id1 == id2 ) {
-         if ( doublets2[iD2].level <= ( doublets1[iD1].level + 1 ) ) {
-           const int id3 = doublets2[iD2].id1;
-           const float r3 = Sqrt( clusters3[id3].x * clusters3[id3].x + clusters3[id3].y * clusters3[id3].y );
-           const float r2 = Sqrt( clusters2[id2].x * clusters2[id2].x + clusters2[id2].y * clusters2[id2].y );
-           const float extrZ3 = doublets1[iD1].tanLambda * ( r3 - r2 ) + clusters2[id2].z ;
-           //cout << extrZ3 << " " << clusters3[id3].z << " " << Abs ( extrZ3 - clusters3[id3].z ) << endl;
-           if ( Abs ( extrZ3 - clusters3[id3].z ) < fZCut ) {
-             //cout << "OK Z doublets: "<< iL-1 << "," << iD1 << "\t" << iL << "," <<iD2 << endl;
-             const float det = (clusters1[id1].x - GetX())*(clusters2[id2].y - GetY()) - (clusters2[id2].x-GetX() )*(clusters1[id1].y - GetY()); // (GetX() - clusters2[id2].x)*(clusters1[id1].y - clusters2[id2].y) - (GetY() - clusters2[id2].y)*(clusters1[id1].x - clusters2[id2].x);
-             //cout << det << endl;
-             if ( Abs(det) <= 1e-12 ) {
-               // linear extrapolation to next layer
-               const float dsq = ( doublets1[iD1].tanPhi * (clusters3[id3].x + clusters2[id2].x) + clusters3[id3].y - clusters2[id2].y ) * 
-                 ( doublets1[iD1].tanPhi * (clusters3[id3].x + clusters2[id2].x) + clusters3[id3].y - clusters2[id2].y ) / (1 + doublets1[iD1].tanPhi * doublets1[iD1].tanPhi );
-               if ( dsq < fRPhiCut*fRPhiCut )  {
-                 doublets2[iD2].level += doublets1[iD1].level;
-                 doublets2[iD2].neighbours.push_back(iD1);
-               }
-             } else {
-               const float r1sq = clusters1[id1].x * clusters1[id1].x + clusters1[id1].y * clusters1[id1].y ;
-               const float rvsq = GetX() * GetX() + GetY() * GetY();
-               const float deta = (rvsq - r1sq) * (clusters2[id2].y - GetY()) - (rvsq - r2*r2) * (clusters1[id1].y - GetY());
-               const float detb = - (rvsq - r1sq) * (clusters2[id2].x - GetX()) + (rvsq - r2*r2) * (clusters1[id1].x - GetX()) ;
-               const float a = deta/det ;
-               const float b = detb/det ;
-               const float c = -rvsq - a * GetX() - b * GetY();
-               const float rc = Sqrt( a*a/4.f + b*b/4.f - c );
-               const float d = Sqrt( (a/2.f + clusters3[id3].x) * (a/2.f + clusters3[id3].x) + (b/2.f + clusters3[id3].y) * (b/2.f + clusters3[id3].y) );
-               //cout << d << " " << rc << " " << d - rc << endl;
-               if ( Abs( d - rc ) < fRPhiCut ) {
-                 doublets2[iD2].level += doublets1[iD1].level;
-                 doublets2[iD2].neighbours.push_back(iD1);
-               }
-             }
-           }
-         }
-       }
+        const int id1 = doublets1[iD1].id1;
+        const int id2 = doublets2[iD2].id0;
+        if ( id1 == id2 ) {
+          if ( doublets2[iD2].level <= ( doublets1[iD1].level + 1 ) ) {
+            const int id3 = doublets2[iD2].id1;
+            const float r3 = Sqrt( clusters3[id3].x * clusters3[id3].x + clusters3[id3].y * clusters3[id3].y );
+            const float r2 = Sqrt( clusters2[id2].x * clusters2[id2].x + clusters2[id2].y * clusters2[id2].y );
+            const float extrZ3 = doublets1[iD1].tanLambda * ( r3 - r2 ) + clusters2[id2].z ;
+            //cout << extrZ3 << " " << clusters3[id3].z << " " << Abs ( extrZ3 - clusters3[id3].z ) << endl;
+            if ( Abs ( extrZ3 - clusters3[id3].z ) < fZCut ) {
+              //cout << "OK Z doublets: "<< iL-1 << "," << iD1 << "\t" << iL << "," <<iD2 << endl;
+              const float det = (clusters1[id1].x - GetX())*(clusters2[id2].y - GetY()) - (clusters2[id2].x-GetX() )*(clusters1[id1].y - GetY()); // (GetX() - clusters2[id2].x)*(clusters1[id1].y - clusters2[id2].y) - (GetY() - clusters2[id2].y)*(clusters1[id1].x - clusters2[id2].x);
+              //cout << det << endl;
+              if ( Abs(det) <= 1e-12 ) {
+                // linear extrapolation to next layer
+                const float dsq = ( doublets1[iD1].tanPhi * (clusters3[id3].x + clusters2[id2].x) + clusters3[id3].y - clusters2[id2].y ) *
+                ( doublets1[iD1].tanPhi * (clusters3[id3].x + clusters2[id2].x) + clusters3[id3].y - clusters2[id2].y ) / (1 + doublets1[iD1].tanPhi * doublets1[iD1].tanPhi );
+                if ( dsq < fRPhiCut*fRPhiCut )  {
+                  doublets2[iD2].level = doublets1[iD1].level+1;
+                  doublets2[iD2].neighbours.push_back(iD1);
+                }
+              } else {
+                const float r1sq = clusters1[id1].x * clusters1[id1].x + clusters1[id1].y * clusters1[id1].y ;
+                const float rvsq = GetX() * GetX() + GetY() * GetY();
+                const float deta = (rvsq - r1sq) * (clusters2[id2].y - GetY()) - (rvsq - r2*r2) * (clusters1[id1].y - GetY());
+                const float detb = - (rvsq - r1sq) * (clusters2[id2].x - GetX()) + (rvsq - r2*r2) * (clusters1[id1].x - GetX()) ;
+                const float a = deta/det ;
+                const float b = detb/det ;
+                const float c = -rvsq - a * GetX() - b * GetY();
+                const float rc = Sqrt( a*a/4.f + b*b/4.f - c );
+                const float d = Sqrt( (a/2.f + clusters3[id3].x) * (a/2.f + clusters3[id3].x) + (b/2.f + clusters3[id3].y) * (b/2.f + clusters3[id3].y) );
+                //cout << d << " " << rc << " " << d - rc << endl;
+                if ( Abs( d - rc ) < fRPhiCut ) {
+                  doublets2[iD2].level = doublets1[iD1].level+1;
+                  doublets2[iD2].neighbours.push_back(iD1);
+                }
+              }
+            }
+          }
+        }
       }
     }
   }
-
-  /*#ifdef __DEBUG__
-  PrintInfo("doublets");
-  #endif*/
-
+  //#ifdef __DEBUG__
+  //PrintInfo("doublets");
+  //DrawEvent("doublets+level");
+  //return;
+  //#endif
   // Hic sunt leones: the following code could be optimised to be iterative. But now I don't have time.
+  vector<trackC> tracks;
   for ( int level = 6; level >= 2 ; --level ) {
-    vector<trackC> candidates;
-    int nCand=0;
-    const int limit = level > 5 ? 5 : level;
-    for ( int doubl = 5; doubl >= limit; --doubl ) {
+    cout << "level " << level << endl;
+    vector<Road> roads;
+    roads.clear();
+    roads.reserve(100);
+    for ( int doubl = 5; doubl >= level-1; --doubl ) {
       for ( int iD = 0; iD < fNDoublets[doubl]; ++iD ) {
-       if ( fDoublets[doubl][iD].level == level ) {
-         cout << "Pushing new candidate" << endl;
-         candidates.push_back(trackC());
-         candidates[nCand].fPoints[doubl*2+2] = fDoublets[doubl][iD].id1;
-         candidates[nCand].fPoints[doubl*2] = fDoublets[doubl][iD].id0;
-         CandidatesTreeTraversal(candidates, iD, doubl, nCand);
-       }
+        if ( fDoublets[doubl][iD].level == level ) {
+          roads.push_back(Road());
+          roads.back().AddElement(doubl,iD);
+          cout << "\nseed " << iD << "("<<fDoublets[doubl][iD].id1<<","<<fDoublets[doubl][iD].id0;
+          cout <<") in array " << doubl << " with level " << level;
+          for ( unsigned int iN = 0; iN < fDoublets[doubl][iD].neighbours.size(); ++iN ) {
+            const int currD = doubl - 1 ;
+            const int neigh = fDoublets[doubl][iD].neighbours[iN];
+            //if ( level != fDoublets[currD][neigh].level + 1 ) continue;
+            if ( iN > 0 ) roads.push_back(static_cast<Road>(roads.back()));
+            CandidatesTreeTraversal(roads,neigh,currD);
+            cout << endl;// << roads.back() << endl;
+          }
+          fDoublets[doubl][iD].level = -1; // mark as used
+        }
+        //for ( int j = 0; j < 2*AliITSUAux::kMaxLayers; ++j ) cout << roads.back().fPoints[j] << " "; 
+        //cout << endl;
       }
     }
 
-    nCand = candidates.size();
-    Double_t rDest = fITS->GetRMax();
-    cout << "Number of candidates at level " << level << ": " << candidates.size() << endl;
-    int index[nCand];
-    for( int i = 0; i < nCand; ++i ) index[i] = i;
-    for ( int cand = 0; cand < nCand; ++cand ) {
-      int count = 0;
-      for ( int j = 0; j < 14; ++j ) {
-       if( candidates[cand].fPoints[j] > -1 ) ++count; 
+    
+    Double_t rDest = 0.;//fITS->GetRMax();
+    DrawRoads(roads);
+    vector<trackC> candidates;
+    for ( size_t iR = 0; iR < roads.size(); ++iR ) {
+      if ( roads[iR].fNElements!=level ) {
+        cout << "JUMP" << endl;
+        continue;
+      } 
+      candidates.push_back(trackC());
+      candidates.back().fNPoints = level+1;
+      for ( size_t j = 0; j < 6; ++j ) { 
+        if ( roads[iR].fElements[j] == -1 ) continue;
+        candidates.back().fPoints[j<<0x1] = fDoublets[j][roads[iR].fElements[j]].id0;
+        candidates.back().fPoints[(j+1)<<0x1] = fDoublets[j][roads[iR].fElements[j]].id1;
+        //cout << (j<<0x1) << " " << fDoublets[j][roads[iR].fElements[j]].id0 << "\t" << ((j+1)<<0x1) << " " << fDoublets[j][roads[iR].fElements[j]].id1 << endl;
       }
-      cout << "Candidates " << cand << ", number of points: " << count << endl;
-      //      candidates[cand].ResetCovariance(50.);
-      InitTrackParams(candidates[cand]);
-      cout << "Fit cnd: " << cand << " " << candidates[cand] << endl;
-      candidates[cand].fChi2 = RefitTrack( (AliExternalTrackParam*)&candidates[cand], candidates[cand].fPoints, rDest ,-1);
+      //cout << endl;
+      cout << "Candidate " << candidates.size() << ", number of points: " << level+1 << endl;
+      //cout << candidates.back() << endl;
+      InitTrackParams(candidates.back());
+      candidates.back().fChi2 = RefitTrack( (AliExternalTrackParam*)&candidates.back(), candidates.back().fPoints, rDest ,-1);
+      //cout << "Fit cnd: " << cand << " " << candidates[cand] << endl;
     }
+  
+    int index[candidates.size()];
+    for ( size_t i = 0; i < candidates.size(); ++i ) index[i]=i;
     CompDesc comp(&candidates);
-    sort(index,index+nCand,comp);
-    for ( int cand = 0; cand < nCand; ++cand ) {
+    sort(index,index+candidates.size(),comp);
+    
+    for ( size_t cand = 0; cand < candidates.size(); ++cand ) {
       const int ii = index[cand];
-#ifdef __DEBUG__
+      //#ifdef __DEBUG__
       //cout << ii << " " << candidates[ii] << endl;
-#endif
+      //#endif
       if ( candidates[ii].fChi2 < 0. ) break;
       bool goodTrack = true;
-      for ( unsigned int point = 0; point < 14; ++point ) {
-       if ( candidates[ii].fPoints[point] != -1 ) {
-         if( !(fClusters[ point/2 ][ candidates[ii].fPoints[point] ].isUsed ) ) {
-           fClusters[ point/2 ][ candidates[ii].fPoints[point] ].isUsed = true;
-         } else {
-           goodTrack = false;
-         }
-       }
+      for ( unsigned int point = 0; point < 14; ++point ) { //-> here it's necessary to use a temporary array for the used clusters.
+        if ( candidates[ii].fPoints[point] != -1 ) {
+          if( !(fClusters[ point/2 ][ candidates[ii].fPoints[point] ].isUsed ) ) {
+            fClusters[ point/2 ][ candidates[ii].fPoints[point] ].isUsed = true;
+          } else {
+            goodTrack = false;
+          }
+        }
       }
+      //cout << endl;
       if ( goodTrack ) {
-       AliESDtrack outTrack;
-       outTrack.SetOuterParam((AliExternalTrackParam*)&candidates[ii],AliESDtrack::kITSpureSA);
-       event->AddTrack(&outTrack);
+        tracks.push_back(candidates[ii]);
       }
     }
-
+    //cout << "End of level " << level << endl;*/
   }
 
-  // A first try... 
-  // for ( int level = 6; level >=3 ; --level ) {
-  //   vector<int> points[7];
-  //   for ( int doubl = 5; doubl >= 2; --doubl ) {
-  //     if( ( doubl + 1 - level ) < 0 ) break;
-  //     for ( int iD = 0; iD < fNDoublets[doubl]; ++iD ) {
-  //   if ( fDoublets[doubl][iD].level == level ) {
-  //     points[doubl+1].push_back( fDoublets[doubl][iD].id1 );
-  //     points[doubl].push_back( fDoublets[doubl][iD].id0 );
-     
-  //     vector<int> currentVector = (fDoublets[doubl][iD].neighbours);
-  //     for( int iL = 1; iL <= doubl; ++iL ) {
-  //       const nPlets * doublets = &fDoublets[doubl-iL][0];
-  //       vector<int> tmp;
-  //       for ( unsigned int iV = 0 ; iV < currentVector.size() ; ++iV ) {
-  //         points[doubl-iL].push_back( doublets[ currentVector[ iV ] ].id0 ) ;
-  //         for ( unsigned int iN = 0 ; iN < doublets[ currentVector[ iV ] ].neighbours.size(); ++iN ) {
-  //           tmp.push_back( doublets[ currentVector[ iV ] ].neighbours[ iN ] );
-  //         }
-  //       }
-  //       currentVector.swap( tmp );
-  //     }
-  //   }
-  //     }
-  //   }
-  // }
+  bool joined[tracks.size()];
+  MergeTracks(tracks,joined); 
+  for ( unsigned int ii = 0; ii < tracks.size(); ++ii ) {
+    if ( ! joined[ii] ) {
+      AliESDtrack outTrack;
+      outTrack.SetOuterParam((AliExternalTrackParam*)&tracks[ii],AliESDtrack::kITSpureSA);  
+      event->AddTrack(&outTrack);
+    }
+  }
 }
 
 //________________________________________________________________________________
 void AliITSUTrackerSA::MakeDoublets() {
-  // Make associations between two points on adjacent layers within an azimuthal window. 
+  // Make associations between two points on adjacent layers within an azimuthal window.
   // Under consideration:
   // - track parameter estimation using the primary vertex position
   // To do:
   // - last iteration
 
-  cout << "Vertex of used by the tracker: " << GetX() << " " << GetY() << " " << GetZ() << endl;
+  //cout << "Vertex of used by the tracker: " << GetX() << " " << GetY() << " " << GetZ() << endl;
 
   for( int iL = 0 ; iL < 6 ; ++iL ) {
-    fNDoublets[iL] = 0; 
+    fNDoublets[iL] = 0;
     const itsCluster* clusters1 = &fClusters[iL][0];
     const itsCluster* clusters2 = &fClusters[iL+1][0];
 
@@ -387,38 +418,46 @@ void AliITSUTrackerSA::MakeDoublets() {
     for ( int iCC1 = 0 ; iCC1 < fNClusters[iL] ; ++iCC1 ) {
       bool flag = true;
       const int iC1 = fIndex[iL][iCC1];
-      for ( int iCC2 = fNClusters[iL+1]-1; iCC2 > -1 ; --iCC2 ) {
-       const int iC2 = fIndex[iL+1][iCC2];
-       if( (TMath::TwoPi() - (clusters2[iC2].phi-clusters1[iC1].phi) ) < fPhiCut ) {
-         fDoublets[iL].push_back(nPlets(iC1,iC2));
-         fDoublets[iL][fNDoublets[iL]].tanPhi = (clusters1[iC1].y-clusters2[iC2].y)/(clusters1[iC1].x-clusters2[iC2].x);
-         float r1  = Sqrt(clusters1[iC1].x * clusters1[iC1].x + clusters1[iC1].y * clusters1[iC1].y);
-         cout << clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y << flush << endl;
-         float r2  = Sqrt(clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y);
-         fDoublets[iL][fNDoublets[iL]].tanLambda = (clusters1[iC1].z-clusters2[iC2].z)/(r1-r2);
-         ++fNDoublets[iL];
-         flag = false;
-       } else break;
+      for ( int iCC2 = fNClusters[iL+1]-1; iCC2 >= 0 ; --iCC2 ) {
+        const int iC2 = fIndex[iL+1][iCC2];
+        if( (TMath::TwoPi() - (clusters2[iC2].phi-clusters1[iC1].phi) ) < fPhiCut ) {
+          #ifdef __DEBUG__
+          fDoublets[iL].push_back(nPlets(iC1,iC2,clusters1[iC1].pid,clusters2[iC2].pid));
+          #else
+          fDoublets[iL].push_back(nPlets(iC1,iC2));
+          #endif
+          fDoublets[iL][fNDoublets[iL]].tanPhi = (clusters1[iC1].y-clusters2[iC2].y)/(clusters1[iC1].x-clusters2[iC2].x);
+          float r1  = Sqrt(clusters1[iC1].x * clusters1[iC1].x + clusters1[iC1].y * clusters1[iC1].y);
+          //cout << clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y << flush << endl;
+          float r2  = Sqrt(clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y);
+          fDoublets[iL][fNDoublets[iL]].tanLambda = (clusters1[iC1].z-clusters2[iC2].z)/(r1-r2);
+          ++fNDoublets[iL];
+          flag = false;
+        } else break;
 
       }
       if (flag) break;
     }
 
-    
-    // "Central" points 
+
+    // "Central" points
     for ( int iCC1 = 0 ; iCC1 < fNClusters[iL] ; ++iCC1 ) {
       const int iC1 = fIndex[iL][iCC1];
       for ( int iCC2 = 0; iCC2 < fNClusters[iL+1] ; ++iCC2 ) {
-       const int iC2 = fIndex[iL+1][iCC2];
-       if( Abs( clusters1[iC1].phi - clusters2[iC2].phi ) < fPhiCut ) {
-         fDoublets[iL].push_back(nPlets(iC1,iC2));
-         fDoublets[iL][fNDoublets[iL]].tanPhi = (clusters1[iC1].y-clusters2[iC2].y)/(clusters1[iC1].x-clusters2[iC2].x);
-         float r1  = Sqrt(clusters1[iC1].x * clusters1[iC1].x + clusters1[iC1].y * clusters1[iC1].y);
-         float r2  = Sqrt(clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y);
-         fDoublets[iL][fNDoublets[iL]].tanLambda = (clusters1[iC1].z-clusters2[iC2].z)/(r1-r2);
-         ++fNDoublets[iL];
-       } else if( clusters2[iC2].phi - clusters1[iC1].phi > fPhiCut ) break;
-      
+        const int iC2 = fIndex[iL+1][iCC2];
+        if( Abs( clusters1[iC1].phi - clusters2[iC2].phi ) < fPhiCut ) {
+          #ifdef __DEBUG__
+          fDoublets[iL].push_back(nPlets(iC1,iC2,clusters1[iC1].pid,clusters2[iC2].pid));
+          #else
+          fDoublets[iL].push_back(nPlets(iC1,iC2));
+          #endif
+          fDoublets[iL][fNDoublets[iL]].tanPhi = (clusters1[iC1].y-clusters2[iC2].y)/(clusters1[iC1].x-clusters2[iC2].x);
+          float r1  = Sqrt(clusters1[iC1].x * clusters1[iC1].x + clusters1[iC1].y * clusters1[iC1].y);
+          float r2  = Sqrt(clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y);
+          fDoublets[iL][fNDoublets[iL]].tanLambda = (clusters1[iC1].z-clusters2[iC2].z)/(r1-r2);
+          ++fNDoublets[iL];
+        } else if( clusters2[iC2].phi - clusters1[iC1].phi > fPhiCut ) break;
+
       }
 
     }
@@ -428,22 +467,26 @@ void AliITSUTrackerSA::MakeDoublets() {
       bool flag = true;
       const int iC1 = fIndex[iL][iCC1];
       for ( int iCC2 = 0; iCC2 < fNClusters[iL+1] ; ++iCC2 ) {
-       const int iC2 = fIndex[iL+1][iCC2];
-       if( (TMath::TwoPi() - (clusters1[iC1].phi-clusters2[iC2].phi) ) < fPhiCut ) { 
-         fDoublets[iL].push_back(nPlets(iC1,iC2));
-         fDoublets[iL][fNDoublets[iL]].tanPhi = (clusters1[iC1].y-clusters2[iC2].y)/(clusters1[iC1].x-clusters2[iC2].x);
-         float r1  = Sqrt(clusters1[iC1].x * clusters1[iC1].x + clusters1[iC1].y * clusters1[iC1].y);
-         float r2  = Sqrt(clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y);
-         fDoublets[iL][fNDoublets[iL]].tanLambda = (clusters1[iC1].z-clusters2[iC2].z)/(r1-r2);
-         ++fNDoublets[iL];
-         flag = false;
-       } else break;
+        const int iC2 = fIndex[iL+1][iCC2];
+        if( (TMath::TwoPi() - (clusters1[iC1].phi-clusters2[iC2].phi) ) < fPhiCut ) {
+          #ifdef __DEBUG__
+          fDoublets[iL].push_back(nPlets(iC1,iC2,clusters1[iC1].pid,clusters2[iC2].pid));
+          #else
+          fDoublets[iL].push_back(nPlets(iC1,iC2));
+          #endif
+          fDoublets[iL][fNDoublets[iL]].tanPhi = (clusters1[iC1].y-clusters2[iC2].y)/(clusters1[iC1].x-clusters2[iC2].x);
+          float r1  = Sqrt(clusters1[iC1].x * clusters1[iC1].x + clusters1[iC1].y * clusters1[iC1].y);
+          float r2  = Sqrt(clusters2[iC2].x * clusters2[iC2].x + clusters2[iC2].y * clusters2[iC2].y);
+          fDoublets[iL][fNDoublets[iL]].tanLambda = (clusters1[iC1].z-clusters2[iC2].z)/(r1-r2);
+          ++fNDoublets[iL];
+          flag = false;
+        } else break;
 
       }
 
       if (flag) break;
     }
-  
+
   }
   // #ifdef __DEBUG__
   // PrintInfo("doublets");
@@ -457,10 +500,17 @@ Bool_t AliITSUTrackerSA::InitTrackParams(trackC &track)
   int lrOcc[AliITSUAux::kMaxLayers], nCl=0;
   //
   // we will need endpoints and middle layer
-  for (int i=fITS->GetNLayersActive();i--;) if (track.fPoints[i<<0x1]>-1) lrOcc[nCl++] = i;
+  for (int i=fITS->GetNLayersActive();i--;) {
+    if (track.fPoints[i<<0x1]>-1) {
+      lrOcc[nCl++] = i;
+      track.fInnermostLayer = i;
+    }
+  }
+  track.fNPoints = nCl;
+  track.fOutermostLayer = track.fInnermostLayer + nCl - 1; 
   if (nCl<3) {
     AliError(Form("Cannot estimate momentum of tracks with %d clusters",nCl));
-    cout << track << endl;
+    //cout << track << endl;
     return kFALSE;
   }
   //
@@ -468,6 +518,7 @@ Bool_t AliITSUTrackerSA::InitTrackParams(trackC &track)
   int lr1   = lrOcc[nCl/2];
   int lr2   = lrOcc[nCl-1];
   //
+  //cout << (lr0<<0x1) << " " <<  (lr1<<0x1)<< " " <<  (lr2<<0x1) << endl;
   const itsCluster& cl0 = fClusters[lr0][ track.fPoints[lr0<<0x1] ];
   const itsCluster& cl1 = fClusters[lr1][ track.fPoints[lr1<<0x1] ];
   const itsCluster& cl2 = fClusters[lr2][ track.fPoints[lr2<<0x1] ];
@@ -490,80 +541,100 @@ Bool_t AliITSUTrackerSA::InitTrackParams(trackC &track)
     0,0,0,0,10
   };
   track.Set(x,alp,par,cov);
+  //cout << track ;
   return kTRUE;
 }
 
 //______________________________________________________________________________
-void AliITSUTrackerSA::CandidatesTreeTraversal(vector<trackC> &track,  int &iD, int &doubl, int &nCand) {
-  
-  if ( doubl < 1 ) {
-#ifdef __DEBUG__
-    cout << "ERROR IN CandidatesTreeTraversal" << endl;
-#endif
-    return;
-  }
-
-  int currD = doubl-1;
-  track[nCand].fPoints[ 2 * currD ] = fDoublets[ currD ] [ fDoublets[ doubl ][ iD ].neighbours[0] ].id0;
-
+void AliITSUTrackerSA::CandidatesTreeTraversal(vector<Road> &candidates, const int &iD, const int &doubl) {
 
-  if ( fDoublets[ currD ] [ fDoublets[ doubl ][ iD ].neighbours[0] ].level == 1 ) {
-
-    cout << "Setting track " << nCand << " information using its first cluster: " << endl;
-    cout << "Layer " << currD << ", id " << track[nCand].fPoints[ 2 * currD ] <<endl;
-    AliITSUClusterPix* clus = (AliITSUClusterPix*)fClustersTC[ currD ]->At( track[nCand].fPoints[ 2 * currD ] ); // assign your 1st cluster (from which the fit is starting)
-    AliITSURecoLayer* lr = fITS->GetLayerActive(currD) ; // assign the layer which the cluster belongs to
-    
-    AliITSURecoSens* sens = lr->GetSensorFromID(clus->GetVolumeId());
-    double x = sens->GetXTF() + clus->GetX();
-    double alp = sens->GetPhiTF();
-    double par[5] = {clus->GetY(),clus->GetZ(),0,0,0.01};
-    double cov[15] = {
-      5*5,
-      0, 5*5,
-      0, 0, 0.7*0.7,
-      0,0,0,0.7*0.7,
-      0,0,0,0,10
-    };
-    track[nCand].Set(x,alp,par,cov);
-    //    cout << "after set " << track[nCand] << endl;
+  if ( doubl < 0     ) {
+    #ifdef __DEBUG__
+    //cout << "ERROR IN CandidatesTreeTraversal" << endl;
+    //cout << endl;
+    #endif
     return;
-  } else {
-    CandidatesTreeTraversal(track,fDoublets[doubl][iD].neighbours[0],currD,nCand);
   }
-  
-  for( unsigned int iD2 = 1 ; iD2 < fDoublets[ doubl ][ iD ].neighbours.size() ; ++iD2 ) {
-    track.push_back(track[nCand++]);
-    track[nCand].fPoints[ 2 * currD ] = fDoublets[ currD ] [ fDoublets[ doubl ][ iD ].neighbours[ iD2 ] ].id0;
-    if ( fDoublets[ currD ] [ fDoublets[ doubl ][ iD ].neighbours[iD2] ].level == 1 ) {
-      AliITSUClusterPix* clus = (AliITSUClusterPix*)fClustersTC[ currD ]->At( track[nCand].fPoints[ 2 * currD ] ); // assign your 1st cluster (from which the fit is starting)
-      AliITSURecoLayer* lr = fITS->GetLayerActive(currD) ; // assign the layer which the cluster belongs to
-      
-      AliITSURecoSens* sens = lr->GetSensorFromID(clus->GetVolumeId());
-      double x = sens->GetXTF() + clus->GetX();
-      double alp = sens->GetPhiTF();
-      double par[5] = {clus->GetY(),clus->GetZ(),0,0,0};
-      double cov[15] = {
-       5*5,
-       0, 5*5,
-       0, 0, 0.7*0.7,
-       0,0,0,0.7*0.7,
-       0,0,0,0,10
-      };
-      track[nCand].Set(x,alp,par,cov);
-      return;
-    } else {
-      CandidatesTreeTraversal(track,fDoublets[doubl][iD].neighbours[iD2],currD,nCand);
+  candidates.back().AddElement(doubl,iD);
+  cout << "\n\tTraversing the tree through " << iD << " in array " << doubl << " at level " << fDoublets[doubl][iD].level;
+  //cout << doubl*2 << " ";
+  for ( unsigned int iN = 0; iN < fDoublets[doubl][iD].neighbours.size(); ++iN ) {
+    const int currD = doubl - 1 ;
+    const int neigh = fDoublets[doubl][iD].neighbours[iN];
+    //const int level = fDoublets[doubl][iD].level;
+    //if ( level != fDoublets[currD][neigh].level + 1 ) continue;
+    if ( iN > 0 ) {
+      cout << " -> branching here!";
+      candidates.push_back(static_cast<Road>(candidates.back()));
     }
+    CandidatesTreeTraversal(candidates,neigh,currD);
   }
+  
+  fDoublets[doubl][iD].level = -1;
+
 }
 
 //______________________________________________________________________________
-Double_t AliITSUTrackerSA::RefitTrack(AliExternalTrackParam* trc, 
-                                     Int_t clInfo[2*AliITSUAux::kMaxLayers],
-                                     Double_t rDest, Int_t stopCond)
+void AliITSUTrackerSA::MergeTracks(vector<trackC> &tracks, bool flag[]) {
+  cout << "Merging tracks" << endl;
+  for ( unsigned int iT = 0; iT < tracks.size(); ++iT ) { 
+    flag[iT]=false; 
+  }
+
+  for ( unsigned int iT1 = 0; iT1 < tracks.size(); ++iT1 ) {
+    if ( tracks[iT1].fNPoints > 4 || flag[iT1] ) continue;
+    const int inL1 = tracks[iT1].fInnermostLayer;
+    const int outL1 = tracks[iT1].fOutermostLayer;
+    for ( unsigned int iT2 = iT1+1; iT2 < tracks.size(); ++iT2 ) {
+      const int inL2 = tracks[iT2].fInnermostLayer;
+      const int outL2 = tracks[iT2].fOutermostLayer;
+      printf("%d: In/Out %d/%d\t%d: In/Out %d/%d",iT1,inL1,outL1,iT2,inL2,outL2);
+      if ( outL1 < inL2 ) {
+        cout << " <- check1" << flush;
+        if ( TransportToLayer((AliExternalTrackParam*)&tracks[iT2],inL2,outL1) ) {
+          cout << " <- transport";
+          if ( tracks[iT2].Rotate( fClusters[outL1][ tracks[iT1].fPoints[ outL1<<0x1 ] ].phiM ) ) {
+            const double chi2 = tracks[iT2].GetPredictedChi2((AliExternalTrackParam*)&tracks[iT1]);
+            printf(" Merging candidates (%i,%i), chi2 = %f ",iT1,iT2,chi2);
+            if ( chi2 < fgkChi2Cut ) {
+              flag[iT2] = true;
+              for ( int np = tracks[iT2].fInnermostLayer; np < tracks[iT2].fOutermostLayer; ++np ) {
+                tracks[iT1].fPoints[np<<0x1] = tracks[iT2].fPoints[np<<0x1];
+              }
+              InitTrackParams(tracks[iT1]);
+              RefitTrack((AliExternalTrackParam*)&tracks[iT1],tracks[iT1].fPoints,0,-1);
+            } 
+          } else { cout << " <- Failed rotation!!"; }
+        } else { cout << " <- Failed transport!!"; }
+      } else if ( inL1 > outL2 ) {
+        cout << " <- check2" << flush;
+        if ( TransportToLayer((AliExternalTrackParam*)&tracks[iT1],inL1,outL2) ) {
+          cout << " <- transport";
+          if ( tracks[iT1].Rotate( fClusters[outL2][ tracks[iT1].fPoints[ outL2<<0x1 ] ].phiM ) ) {
+            const double chi2 = tracks[iT2].GetPredictedChi2((AliExternalTrackParam*)&tracks[iT1]);
+            printf(" Merging candidates (%i,%i), chi2 = %f ",iT1,iT2,chi2);
+            if ( chi2 < fgkChi2Cut ) {
+              flag[iT2] = true;
+              for ( int np = tracks[iT2].fInnermostLayer; np < tracks[iT2].fOutermostLayer; ++np ) {
+                tracks[iT1].fPoints[np<<0x1] = tracks[iT2].fPoints[np<<0x1];
+              }
+              InitTrackParams(tracks[iT1]);
+              RefitTrack((AliExternalTrackParam*)&tracks[iT1],tracks[iT1].fPoints,0,-1);
+            }
+          } else { cout << " <- Failed rotation!!"; } 
+        } else { cout << " <- Failed transport!!"; }
+      }
+      cout << endl;
+    }
+  }
+}
+  
+  //______________________________________________________________________________
+Double_t AliITSUTrackerSA::RefitTrack(AliExternalTrackParam* trc,
+Int_t clInfo[2*AliITSUAux::kMaxLayers],
+Double_t rDest, Int_t stopCond)
 {
-  // refit track till radius rDest. 
+  // refit track till radius rDest.
   // if stopCond<0 : propagate till last cluster then stop
   // if stopCond==0: propagate till last cluster then try to go till limiting rDest, don't mind if fail
   // if stopCond>0 : rDest must be reached
@@ -580,14 +651,21 @@ Double_t AliITSUTrackerSA::RefitTrack(AliExternalTrackParam* trc,
   dir = rCurr<rDest ? 1 : -1;
   lrStart = fITS->FindFirstLayerID(rCurr,dir);
   lrStop  = fITS->FindLastLayerID(rDest,dir); // lr id before which we have to stop
-  cout << "Start/End layers and direction " << lrStart << " " << lrStop << " " <<  dir << endl;
+  //cout << "Start/End layers and direction " << lrStart << " " << lrStop << " " <<  dir << endl;
   //
   if (lrStop<0 || lrStart<0) AliFatal(Form("Failed to find start(%d) or last(%d) layers. "
-                                          "Track from %.3f to %.3f",lrStart,lrStop,rCurr,rDest));
+  "Track from %.3f to %.3f",lrStart,lrStop,rCurr,rDest));
   //
   int nCl = 0;
-  for (int i=2*fITS->GetNLayersActive();i--;) {if (clInfo[i]<0) continue; nCl++;}
+  cout << "pid : ";
+  for (int i=2*fITS->GetNLayersActive();i--;) {
+    if (clInfo[i]<0) continue;
+    cout << fClusters[i/2][clInfo[i]].pid;
+    ++nCl;
+  }
+  cout << endl;
   //
+  //cout << "#ptr: " << nCl << endl;
   AliExternalTrackParam tmpTr(*trc);
   double chi2 = 0;
   int iclLr[2],nclLr;
@@ -603,10 +681,10 @@ Double_t AliITSUTrackerSA::RefitTrack(AliExternalTrackParam* trc,
     int ilrA2,ilrA = lr->GetActiveID();
     // passive layer or active w/o hits will be traversed on the way to next cluster
     if (!lr->IsActive() || clInfo[ilrA2=(ilrA<<1)]<0) {
-      cout << ilr << " is inactive or without cluster for current candidates" << endl;
+      //cout << ilr << " is inactive or without cluster for current candidates" << endl;
       continue;
-    } 
-    cout << "OK layer " << ilr << endl;
+    }
+    //cout << "OK layer " << ilr << endl;
     //
     // select the order in which possible 2 clusters (in case of the overlap) will be traversed and fitted
     nclLr=0;
@@ -627,285 +705,373 @@ Double_t AliITSUTrackerSA::RefitTrack(AliExternalTrackParam* trc,
       //
       double xClus = sens->GetXTF()+clus->GetX();
       if (!transportedToLayer) {
-       if (ilr!=lrStart && !TransportToLayerX(&tmpTr,lrStart,ilr,xClus)) {
-         cout << "failed transport to the entrance" << endl; return -1; } // go to the entrance to the layer
-       lrStart = ilr;
-       transportedToLayer = kTRUE;
+        if (ilr!=lrStart && !TransportToLayerX(&tmpTr,lrStart,ilr,xClus)) {
+          cout << "failed transport to the entrance" << endl; return -1; } // go to the entrance to the layer
+          lrStart = ilr;
+          transportedToLayer = kTRUE;
+        }
+        //
+        if (!PropagateSeed(&tmpTr,xClus,fCurrMass)) { cout << "failed propagation of the seed X:" << xClus << endl; tmpTr.Print(); return -1; }
+        //
+        Double_t p[2]={clus->GetY(), clus->GetZ()};
+        Double_t cov[3]={clus->GetSigmaY2(), clus->GetSigmaYZ(), clus->GetSigmaZ2()};
+        double chi2cl = tmpTr.GetPredictedChi2(p,cov);
+        chi2 += chi2cl;
+        //
+        if ( !tmpTr.Update(p,cov) ) {
+          cout << "failed update of the covariance" << endl;
+          return -1;
+        }
+
+        if (++nclFit==nCl && stopCond<0) {
+          *trc = tmpTr;
+          printf("Fit chi2: %f for %d clusters\n",chi2,nclFit);
+          return chi2; // it was requested to not propagate after last update
+        }
       }
       //
-      if (!PropagateSeed(&tmpTr,xClus,fCurrMass)) { cout << "failed propagation of the seed X:" << xClus << endl; tmpTr.Print(); return -1; }
-      //
-      Double_t p[2]={clus->GetY(), clus->GetZ()};
-      Double_t cov[3]={clus->GetSigmaY2(), clus->GetSigmaYZ(), clus->GetSigmaZ2()};
-      double chi2cl = tmpTr.GetPredictedChi2(p,cov);
-      chi2 += chi2cl;
-      //
-      if ( !tmpTr.Update(p,cov) ) { cout << "failed update of the covariance" << endl; return -1; }
-      if (++nclFit==nCl && stopCond<0) {
-       *trc = tmpTr;
-       //      printf("Fit chi2: %f for %d clusters\n",chi2,nclFit);
-       return chi2; // it was requested to not propagate after last update
-      }
     }
+    // All clusters were succesfully fitted. Even if the track does not reach rDest, this is enough to validate it.
+    // Still, try to go as close as possible to rDest.
     //
+    //  printf("Fit chi2: %f for %d clusters\n",chi2,nclFit);
+    //
+    if (lrStart!=lrStop) {
+      if (!TransportToLayer(&tmpTr,lrStart,lrStop)) return (stopCond>0) ? -chi2 : chi2; // rDest was obligatory
+      if (!GoToExitFromLayer(&tmpTr,fITS->GetLayer(lrStop),dir)) return (stopCond>0) ? -chi2 : chi2; // rDest was obligatory
+    }
+    // go to the destination radius. Note that here we don't select direction to avoid precision problems
+    if (!tmpTr.GetXatLabR(rDest,rDest,GetBz(),0) || !PropagateSeed(&tmpTr,rDest,fCurrMass, 100, kFALSE)) {
+      return (stopCond>0) ? -chi2 : chi2; // rDest was obligatory
+    }
+    *trc = tmpTr;
+
+    return chi2;
   }
-  // All clusters were succesfully fitted. Even if the track does not reach rDest, this is enough to validate it.
-  // Still, try to go as close as possible to rDest.
-  //
-  //  printf("Fit chi2: %f for %d clusters\n",chi2,nclFit);
-  //
-  if (lrStart!=lrStop) {
-    if (!TransportToLayer(&tmpTr,lrStart,lrStop)) return (stopCond>0) ? -chi2 : chi2; // rDest was obligatory
-    if (!GoToExitFromLayer(&tmpTr,fITS->GetLayer(lrStop),dir)) return (stopCond>0) ? -chi2 : chi2; // rDest was obligatory
-  }
-  // go to the destination radius. Note that here we don't select direction to avoid precision problems
-  if (!tmpTr.GetXatLabR(rDest,rDest,GetBz(),0) || !PropagateSeed(&tmpTr,rDest,fCurrMass, 100, kFALSE)) {
-    return (stopCond>0) ? -chi2 : chi2; // rDest was obligatory
-  }
-  *trc = tmpTr;
 
-  return chi2;
-}
+  //______________________________________________________________________________
+  Bool_t AliITSUTrackerSA::PropagateSeed(AliExternalTrackParam *seed, Double_t xToGo, Double_t mass, Double_t maxStep, Bool_t matCorr)
+  {
+    // propagate seed to given x applying material correction if requested
+    const Double_t kEpsilon = 1e-5;
+    Double_t xpos     = seed->GetX();
+    Int_t dir         = (xpos<xToGo) ? 1:-1;
+    Double_t xyz0[3],xyz1[3];
+    //
+    Bool_t updTime = dir>0 && seed->IsStartedTimeIntegral();
+    if (matCorr || updTime) seed->GetXYZ(xyz1);   //starting global position
+    while ( (xToGo-xpos)*dir > kEpsilon){
+      Double_t step = dir*TMath::Min(TMath::Abs(xToGo-xpos), maxStep);
+      Double_t x    = xpos+step;
+      Double_t bz=GetBz();   // getting the local Bz
+      if (!seed->PropagateTo(x,bz)) {
+        //cout << " failed PropagateTo " << endl;
+        return kFALSE;
+      }
+      double ds = 0;
+      if (matCorr || updTime) {
+        xyz0[0]=xyz1[0]; // global pos at the beginning of step
+        xyz0[1]=xyz1[1];
+        xyz0[2]=xyz1[2];
+        seed->GetXYZ(xyz1);    //  // global pos at the end of step
+        //
+        if (matCorr) {
+          Double_t xrho,xx0;
+          ds = GetMaterialBudget(xyz0,xyz1,xx0,xrho);
+          if (dir>0) xrho = -xrho; // outward should be negative
+          if (!seed->CorrectForMeanMaterial(xx0,xrho,mass)) return kFALSE;
+        }
+        else { // matCorr is not requested but time integral is
+          double d0 = xyz1[0]-xyz0[0];
+          double d1 = xyz1[1]-xyz0[1];
+          double d2 = xyz1[2]-xyz0[2];
+          ds = TMath::Sqrt(d0*d0+d1*d1+d2*d2);
+        }
+      }
+      if (updTime) seed->AddTimeStep(ds);
+      //
+      xpos = seed->GetX();
+    }
+    return kTRUE;
+  }
 
-//______________________________________________________________________________
-Bool_t AliITSUTrackerSA::PropagateSeed(AliExternalTrackParam *seed, Double_t xToGo, Double_t mass, Double_t maxStep, Bool_t matCorr) 
-{
-  // propagate seed to given x applying material correction if requested
-  const Double_t kEpsilon = 1e-5;
-  Double_t xpos     = seed->GetX();
-  Int_t dir         = (xpos<xToGo) ? 1:-1;
-  Double_t xyz0[3],xyz1[3];
-  //
-  Bool_t updTime = dir>0 && seed->IsStartedTimeIntegral();
-  if (matCorr || updTime) seed->GetXYZ(xyz1);   //starting global position
-  while ( (xToGo-xpos)*dir > kEpsilon){
-    Double_t step = dir*TMath::Min(TMath::Abs(xToGo-xpos), maxStep);
-    Double_t x    = xpos+step;
-    Double_t bz=GetBz();   // getting the local Bz
-    if (!seed->PropagateTo(x,bz)) return kFALSE;
-    double ds = 0;
-    if (matCorr || updTime) {
-      xyz0[0]=xyz1[0]; // global pos at the beginning of step
-      xyz0[1]=xyz1[1];
-      xyz0[2]=xyz1[2];
-      seed->GetXYZ(xyz1);    //  // global pos at the end of step
+  //_________________________________________________________________________
+  Bool_t AliITSUTrackerSA::TransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim)
+  {
+    // transport track from layerFrom to the entrance of layerTo or to rLim (if>0), wathever is closer
+    //
+    if (lTo==lFrom) AliFatal(Form("was called with lFrom=%d lTo=%d",lFrom,lTo));
+    //
+    int dir = lTo > lFrom ? 1:-1;
+    //printf("From %d, to %d, direction %d ",lFrom,lTo,dir);
+    AliITSURecoLayer* lrFr = fITS->GetLayer(lFrom); // this can be 0 when extrapolation from TPC to ITS is requested
+    Bool_t checkFirst = kTRUE;
+    Bool_t limReached = kFALSE;
+    while(lFrom!=lTo) {
+      if (lrFr) {
+        if (!GoToExitFromLayer(seed,lrFr,dir,checkFirst)) {
+          cout << " Failed GoToExitFromLayer "; 
+          return kFALSE; // go till the end of current layer
+        }
+        checkFirst = kFALSE;
+      }
+      AliITSURecoLayer* lrTo =  fITS->GetLayer( (lFrom+=dir) );
+      if (!lrTo) AliFatal(Form("Layer %d does not exist",lFrom));
       //
-      if (matCorr) {
-       Double_t xrho,xx0;
-       ds = GetMaterialBudget(xyz0,xyz1,xx0,xrho);     
-       if (dir>0) xrho = -xrho; // outward should be negative
-       if (!seed->CorrectForMeanMaterial(xx0,xrho,mass)) return kFALSE;
+      // go the entrance of the layer, assuming no materials in between
+      double xToGo = lrTo->GetR(-dir);
+      if (rLim>0) {
+        if (dir>0) {
+          if (rLim<xToGo) {xToGo = rLim; limReached = kTRUE;}
+        }
+        else {
+          if (rLim>xToGo) {xToGo = rLim; limReached = kTRUE;}
+        }
+      }
+      //    double xts = xToGo;
+      if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) {
+        //      printf("FailHere1: %f %f %d\n",xts,xToGo,dir);
+        //      seed->Print("etp");
+        cout << " Failed GetXatLabR " << endl;
+        return kFALSE;
       }
-      else { // matCorr is not requested but time integral is
-       double d0 = xyz1[0]-xyz0[0];
-       double d1 = xyz1[1]-xyz0[1];
-       double d2 = xyz1[2]-xyz0[2];    
-       ds = TMath::Sqrt(d0*d0+d1*d1+d2*d2);
+      if (!PropagateSeed(seed,xToGo,fCurrMass,100, kFALSE )) {
+        //printf("FailHere2: %f %f %d\n",xts,xToGo,dir);
+        //seed->Print("etp");
+        cout << " Failed PropagateSeed " << endl;
+        return kFALSE;
       }
+      lrFr = lrTo;
+      if (limReached) break;
     }
-    if (updTime) seed->AddTimeStep(ds);
+    return kTRUE;
     //
-    xpos = seed->GetX();
   }
-  return kTRUE;
-}
 
-//_________________________________________________________________________
-Bool_t AliITSUTrackerSA::TransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim)
-{
-  // transport track from layerFrom to the entrance of layerTo or to rLim (if>0), wathever is closer
-  //  
-  if (lTo==lFrom) AliFatal(Form("was called with lFrom=%d lTo=%d",lFrom,lTo));
-  //
-  int dir = lTo > lFrom ? 1:-1;
-  AliITSURecoLayer* lrFr = fITS->GetLayer(lFrom); // this can be 0 when extrapolation from TPC to ITS is requested
-  Bool_t checkFirst = kTRUE;
-  Bool_t limReached = kFALSE;
-  while(lFrom!=lTo) {
-    if (lrFr) {
-      if (!GoToExitFromLayer(seed,lrFr,dir,checkFirst)) return kFALSE; // go till the end of current layer
-      checkFirst = kFALSE;
-    }
-    AliITSURecoLayer* lrTo =  fITS->GetLayer( (lFrom+=dir) );
-    if (!lrTo) AliFatal(Form("Layer %d does not exist",lFrom));
+  //_________________________________________________________________________
+  Bool_t AliITSUTrackerSA::TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop)
+  {
+    // transport track from layerFrom to the entrance of layerTo but do not pass control parameter X
     //
-    // go the entrance of the layer, assuming no materials in between
-    double xToGo = lrTo->GetR(-dir);
-    if (rLim>0) {
-      if (dir>0) {
-       if (rLim<xToGo) {xToGo = rLim; limReached = kTRUE;}
+    if (lTo==lFrom) AliFatal(Form("was called with lFrom=%d lTo=%d",lFrom,lTo));
+    //
+    int dir = lTo > lFrom ? 1:-1;
+    AliITSURecoLayer* lrFr = fITS->GetLayer(lFrom); // this can be 0 when extrapolation from TPC to ITS is requested
+    Bool_t checkFirst = kTRUE;
+    while(lFrom!=lTo) {
+      if (lrFr) {
+        if (!GoToExitFromLayer(seed,lrFr,dir,checkFirst)) return kFALSE; // go till the end of current layer
+        checkFirst = kFALSE;
       }
-      else {
-       if (rLim>xToGo) {xToGo = rLim; limReached = kTRUE;}
+      AliITSURecoLayer* lrTo =  fITS->GetLayer( (lFrom+=dir) );
+      if (!lrTo) AliFatal(Form("Layer %d does not exist",lFrom));
+      //
+      // go the entrance of the layer, assuming no materials in between
+      double xToGo = lrTo->GetR(-dir); // R of the entrance to layer
+      //
+      //    double xts = xToGo;
+      if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) {
+        //      printf("FailHere1: %f %f %d\n",xts,xToGo,dir);
+        //      seed->Print("etp");
+        return kFALSE;
       }
+      if ( (dir>0&&xToGo>xStop) || (dir<0&&xToGo<xStop) ) xToGo = xStop;
+      //
+      #ifdef _ITSU_DEBUG_
+      AliDebug(2,Form("go in dir=%d to R=%.4f(X:%.4f)",dir,lrTo->GetR(-dir), xToGo));
+      #endif
+      if (!PropagateSeed(seed,xToGo,fCurrMass,100, kFALSE )) {
+        //printf("FailHere2: %f %f %d\n",xts,xToGo,dir);
+        //seed->Print("etp");
+        return kFALSE;
+      }
+      lrFr = lrTo;
     }
-    //    double xts = xToGo;
-    if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) {
-      //      printf("FailHere1: %f %f %d\n",xts,xToGo,dir);
-      //      seed->Print("etp");
-      return kFALSE;
-    }
-    if (!PropagateSeed(seed,xToGo,fCurrMass,100, kFALSE )) {
-      //printf("FailHere2: %f %f %d\n",xts,xToGo,dir);
-      //seed->Print("etp");
-      return kFALSE;
-    }
-    lrFr = lrTo;
-    if (limReached) break;
+    return kTRUE;
+    //
   }
-  return kTRUE;
-  //
-}
 
-//_________________________________________________________________________
-Bool_t AliITSUTrackerSA::TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop)
-{
-  // transport track from layerFrom to the entrance of layerTo but do not pass control parameter X
-  //  
-  if (lTo==lFrom) AliFatal(Form("was called with lFrom=%d lTo=%d",lFrom,lTo));
-  //
-  int dir = lTo > lFrom ? 1:-1;
-  AliITSURecoLayer* lrFr = fITS->GetLayer(lFrom); // this can be 0 when extrapolation from TPC to ITS is requested
-  Bool_t checkFirst = kTRUE;
-  while(lFrom!=lTo) {
-    if (lrFr) {
-      if (!GoToExitFromLayer(seed,lrFr,dir,checkFirst)) return kFALSE; // go till the end of current layer
-      checkFirst = kFALSE;
-    }
-    AliITSURecoLayer* lrTo =  fITS->GetLayer( (lFrom+=dir) );
-    if (!lrTo) AliFatal(Form("Layer %d does not exist",lFrom));
+  //_________________________________________________________________________
+  Bool_t AliITSUTrackerSA::GoToExitFromLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check)
+  {
+    // go to the exit from lr in direction dir, applying material corrections in steps specific for this layer
+    // If check is requested, do this only provided the track has not exited the layer already
+    double xToGo = lr->GetR(dir);
+    if (check) { // do we need to track till the surface of the current layer ?
+      double curR2 = seed->GetX()*seed->GetX() + seed->GetY()*seed->GetY(); // current radius
+      if      (dir>0) { if (curR2-xToGo*xToGo>-fgkToler) return kTRUE; } // on the surface or outside of the layer
+      else if (dir<0) { if (xToGo*xToGo-curR2>-fgkToler) return kTRUE; } // on the surface or outside of the layer
+    }
+    if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) return kFALSE;
+    // go via layer to its boundary, applying material correction.
+    if (!PropagateSeed(seed,xToGo,fCurrMass, lr->GetMaxStep())) return kFALSE;
     //
-    // go the entrance of the layer, assuming no materials in between
-    double xToGo = lrTo->GetR(-dir); // R of the entrance to layer
+    return kTRUE;
     //
-    //    double xts = xToGo;
-    if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) {
-      //      printf("FailHere1: %f %f %d\n",xts,xToGo,dir);
-      //      seed->Print("etp");
-      return kFALSE;
+  }
+
+  //_________________________________________________________________________
+  Bool_t AliITSUTrackerSA::GoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check)
+  {
+    // go to the entrance of lr in direction dir, w/o applying material corrections.
+    // If check is requested, do this only provided the track did not reach the layer already
+    double xToGo = lr->GetR(-dir);
+    if (check) { // do we need to track till the surface of the current layer ?
+      double curR2 = seed->GetX()*seed->GetX() + seed->GetY()*seed->GetY(); // current radius
+      if      (dir>0) { if (curR2-xToGo*xToGo>-fgkToler) return kTRUE; } // already passed
+      else if (dir<0) { if (xToGo*xToGo-curR2>-fgkToler) return kTRUE; } // already passed
     }
-    if ( (dir>0&&xToGo>xStop) || (dir<0&&xToGo<xStop) ) xToGo = xStop;
+    if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) return kFALSE;
+    // go via layer to its boundary, applying material correction.
+    if (!PropagateSeed(seed,xToGo,fCurrMass, 100, kFALSE)) return kFALSE;
+    return kTRUE;
     //
-#ifdef _ITSU_DEBUG_
-    AliDebug(2,Form("go in dir=%d to R=%.4f(X:%.4f)",dir,lrTo->GetR(-dir), xToGo));
-#endif
-    if (!PropagateSeed(seed,xToGo,fCurrMass,100, kFALSE )) {
-      //printf("FailHere2: %f %f %d\n",xts,xToGo,dir);
-      //seed->Print("etp");
-      return kFALSE;
-    }
-    lrFr = lrTo;
   }
-  return kTRUE;
-  //
-}
 
-//_________________________________________________________________________
-Bool_t AliITSUTrackerSA::GoToExitFromLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check)
-{
-  // go to the exit from lr in direction dir, applying material corrections in steps specific for this layer
-  // If check is requested, do this only provided the track has not exited the layer already
-  double xToGo = lr->GetR(dir);
-  if (check) { // do we need to track till the surface of the current layer ?
-    double curR2 = seed->GetX()*seed->GetX() + seed->GetY()*seed->GetY(); // current radius
-    if      (dir>0) { if (curR2-xToGo*xToGo>-fgkToler) return kTRUE; } // on the surface or outside of the layer
-    else if (dir<0) { if (xToGo*xToGo-curR2>-fgkToler) return kTRUE; } // on the surface or outside of the layer
+  //____________________________________________________
+  Double_t AliITSUTrackerSA::GetMaterialBudget(const double* pnt0,const double* pnt1, double& x2x0, double& rhol) const
+  {
+    double par[7];
+    if (fUseMatLUT && fMatLUT) {
+      double d = fMatLUT->GetMatBudget(pnt0,pnt1,par);
+      x2x0 = par[AliITSUMatLUT::kParX2X0];
+      rhol = par[AliITSUMatLUT::kParRhoL];
+      return d;
+    }
+    else {
+      MeanMaterialBudget(pnt0,pnt1,par);
+      x2x0 = par[1];
+      rhol = par[0]*par[4];
+      return par[4];
+    }
   }
-  if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) return kFALSE;
-  // go via layer to its boundary, applying material correction.
-  if (!PropagateSeed(seed,xToGo,fCurrMass, lr->GetMaxStep())) return kFALSE;
-  //
-  return kTRUE;
-  //
-}
 
-//_________________________________________________________________________
-Bool_t AliITSUTrackerSA::GoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check)
-{
-  // go to the entrance of lr in direction dir, w/o applying material corrections.
-  // If check is requested, do this only provided the track did not reach the layer already
-  double xToGo = lr->GetR(-dir);
-  if (check) { // do we need to track till the surface of the current layer ?
-    double curR2 = seed->GetX()*seed->GetX() + seed->GetY()*seed->GetY(); // current radius
-    if      (dir>0) { if (curR2-xToGo*xToGo>-fgkToler) return kTRUE; } // already passed
-    else if (dir<0) { if (xToGo*xToGo-curR2>-fgkToler) return kTRUE; } // already passed
-  }
-  if (!seed->GetXatLabR(xToGo,xToGo,GetBz(),dir)) return kFALSE;
-  // go via layer to its boundary, applying material correction.
-  if (!PropagateSeed(seed,xToGo,fCurrMass, 100, kFALSE)) return kFALSE;
-  return kTRUE;
-  //
-}
+  //____________________________________________________________________
+  Double_t AliITSUTrackerSA::Curvature(Double_t x1,Double_t y1,Double_t
+  x2,Double_t y2,Double_t x3,Double_t y3)
+  {
+
+    //calculates the curvature of track
+    Double_t den = (x3-x1)*(y2-y1)-(x2-x1)*(y3-y1);
+    if(den==0) return 0;
+    Double_t a = ((y3-y1)*(x2*x2+y2*y2-x1*x1-y1*y1)-(y2-y1)*(x3*x3+y3*y3-x1*x1-y1*y1))/den;
+    Double_t b = -(x2*x2-x1*x1+y2*y2-y1*y1+a*(x2-x1))/(y2-y1);
+    Double_t c = -x1*x1-y1*y1-a*x1-b*y1;
+    Double_t xc=-a/2.;
+
+    if((a*a+b*b-4*c)<0) return 0;
+    Double_t rad = TMath::Sqrt(a*a+b*b-4*c)/2.;
+    if(rad==0) return 0;
+
+    if((x1>0 && y1>0 && x1<xc)) rad*=-1;
+    if((x1<0 && y1>0 && x1<xc)) rad*=-1;
+    //  if((x1<0 && y1<0 && x1<xc)) rad*=-1;
+    // if((x1>0 && y1<0 && x1<xc)) rad*=-1;
+
+    return 1/rad;
 
-//____________________________________________________
-Double_t AliITSUTrackerSA::GetMaterialBudget(const double* pnt0,const double* pnt1, double& x2x0, double& rhol) const
-{
-  double par[7];
-  if (fUseMatLUT && fMatLUT) {
-    double d = fMatLUT->GetMatBudget(pnt0,pnt1,par);
-    x2x0 = par[AliITSUMatLUT::kParX2X0];
-    rhol = par[AliITSUMatLUT::kParRhoL];    
-    return d;
   }
-  else {
-    MeanMaterialBudget(pnt0,pnt1,par);
-    x2x0 = par[1];
-    rhol = par[0]*par[4];    
-    return par[4];
+
+  #ifdef __DEBUG__
+  //____________________________________________________
+  void AliITSUTrackerSA::PrintInfo(TString what) {
+    //
+    if( what.Contains("clusters") ) {
+      cout << "Dumping clusters info" << endl;
+      for ( int i = 0; i < 7; ++i ) {
+        cout << "**** Layer " << i << " ****" << endl;
+        for ( int c = 0; c < fNClusters[i]; ++c ) {
+          cout << "*** Cluster " << c << " ***" <<endl;
+          cout << fClusters[i][fIndex[i][c]] << endl;
+        }
+      }
+    }
+    //
+    if( what.Contains("doublets") ) {
+      cout << "Dumping doublets info" << endl;
+      for ( int i = 0; i < 6; ++i ) {
+        cout << "**** Doublets array " << i << " ****" << endl;
+        for ( int c = 0; c < fNDoublets[i]; ++c ) {
+          cout << "*** Doublet " << c << " ***" <<endl;
+          cout << fDoublets[i][c] << endl;
+        }
+      }
+    }
   }
-}
 
-//____________________________________________________________________
-Double_t AliITSUTrackerSA::Curvature(Double_t x1,Double_t y1,Double_t 
-x2,Double_t y2,Double_t x3,Double_t y3)
-{
+  //____________________________________________________
+  void AliITSUTrackerSA::DrawEvent(TString what) {
+    //
 
-  //calculates the curvature of track  
-  Double_t den = (x3-x1)*(y2-y1)-(x2-x1)*(y3-y1);
-  if(den==0) return 0;
-  Double_t a = ((y3-y1)*(x2*x2+y2*y2-x1*x1-y1*y1)-(y2-y1)*(x3*x3+y3*y3-x1*x1-y1*y1))/den;
-  Double_t b = -(x2*x2-x1*x1+y2*y2-y1*y1+a*(x2-x1))/(y2-y1);
-  Double_t c = -x1*x1-y1*y1-a*x1-b*y1;
-  Double_t xc=-a/2.;
-
-  if((a*a+b*b-4*c)<0) return 0;
-  Double_t rad = TMath::Sqrt(a*a+b*b-4*c)/2.;
-  if(rad==0) return 0;
-  
-  if((x1>0 && y1>0 && x1<xc)) rad*=-1;
-  if((x1<0 && y1>0 && x1<xc)) rad*=-1;
-  //  if((x1<0 && y1<0 && x1<xc)) rad*=-1;
-  // if((x1>0 && y1<0 && x1<xc)) rad*=-1;
-  
-  return 1/rad;
-}
+    const int size = 900;
+    if (fCv == 0x0 ) {
+      fCv = new TCanvas("cv_event","cv_event",size,size);
+      fCv->Range(0,0,size,size);
+    }
+    if (fTx == 0x0 ) {
+      fTx = new TText();
+      fTx->SetTextSize(0.015);
+      fTx->SetTextColor(kBlack);
+      fTx->DrawText(0,0,"Bending plane");
+    }
 
-#ifdef __DEBUG__ 
-//____________________________________________________
-void AliITSUTrackerSA::PrintInfo(TString what) {
-  //
-  if( what.Contains("clusters") ) {
-    cout << "Dumping clusters info" << endl;
-    for ( int i = 0; i < 7; ++i ) {
-      cout << "**** Layer " << i << " ****" << endl;
-      for ( int c = 0; c < fNClusters[i]; ++c ) {
-       cout << "*** Cluster " << c << " ***" <<endl;
-       cout << fClusters[i][c] << endl;
+    const float cX = size/2.f; //pt.GetX();
+    const float cY = size/2.f; //pt.GetY();
+    const float sc = 8.5f;
+    if( what.Contains("clusters") ) {
+      if(fMk==0x0) fMk=new TMarker();
+      fMk->SetMarkerStyle(20);
+      fMk->SetMarkerColor(kRed);
+      fMk->SetMarkerSize(0.3);
+      for(int iL=0; iL<7; ++iL) {
+        for(int iC=0; iC<fNClusters[iL];++iC) {
+          fMk->DrawMarker(cX+fClusters[iL][iC].x*sc,cY+fClusters[iL][iC].y*sc);
+          if( what.Contains("clusters+id") )  fTx->DrawText(cX+fClusters[iL][iC].x*sc,cY+fClusters[iL][iC].y*sc,Form("%i",fIndex[iL][iC])); 
+        }
       }
     }
-  }
-  //
-  if( what.Contains("doublets") ) {
-    cout << "Dumping doublets info" << endl;
-    for ( int i = 0; i < 6; ++i ) {
-      cout << "**** Doublets array " << i << " ****" << endl;
-      for ( int c = 0; c < fNDoublets[i]; ++c ) {
-       cout << "*** Doublet " << c << " ***" <<endl;
-       cout << fDoublets[i][c] << endl;
+    //
+    if( what.Contains("doublets") ) {
+      if(fLn==0x0) fLn=new TLine();
+      for(int iL=0; iL<6; ++iL) {
+        for(int iD=0; iD<fNDoublets[iL]; ++iD) {
+          const int id0 = fDoublets[iL][iD].id0;//fIndex[iL][fDoublets[iL][iD].id0];
+          const int id1 = fDoublets[iL][iD].id1;//fIndex[iL+1][fDoublets[iL][iD].id1];
+          fLn->DrawLine(cX+fClusters[iL][id0].x*sc,cY+fClusters[iL][id0].y*sc,cX+fClusters[iL+1][id1].x*sc,cY+fClusters[iL+1][id1].y*sc);
+          if( what.Contains("doublets+level") ) fTx->DrawText(cX+(fClusters[iL][id0].x+fClusters[iL+1][id1].x)*sc/(2.f),cY+(fClusters[iL][id0].y+fClusters[iL+1][id1].y)*sc/(2.f),Form("%i",fDoublets[iL][iD].level));
+        }
       }
     }
+    //
+  }
+
+//____________________________________________________
+void AliITSUTrackerSA::DrawRoads(vector<Road> &vec) {
+  const int size = 900;
+  const float cX = size/2.f; 
+  const float cY = size/2.f; 
+  const float sc = 8.5f;
+  
+  if (fCv == 0x0 ) {
+    fCv = new TCanvas("cv_event","cv_event",size,size);
+    fCv->Range(0,0,size,size);
   }
+  if(fLn==0x0) {
+    fLn=new TLine();
+    fLn->SetLineColor(kRed);
+  }
+  for ( size_t iV = 0; iV < vec.size(); ++iV ) {
+   cout << vec[iV] << endl;
+    for( int iE=0; iE<6; ++iE ) {
+      if (vec[iV].fElements[iE]!=-1) {
+        const int iD = vec[iV].fElements[iE];
+        const int id0 = fDoublets[iE][iD].id0;//fIndex[iL][fDoublets[iL][iD].id0];
+        const int id1 = fDoublets[iE][iD].id1;//fIndex[iE+1][fDoublets[iE][iE].id1];
+        fLn->DrawLine(cX+fClusters[iE][id0].x*sc,cY+fClusters[iE][id0].y*sc,cX+fClusters[iE+1][id1].x*sc,cY+fClusters[iE+1][id1].y*sc);
+      }
+    }
+  }  
 }
 
+
 #endif
index 94c9d244bdc495246cac310a7c319dc996d0c8d2..08843f7fdee1433fabde95e86b4fbfd52d9122f0 100644 (file)
@@ -2,8 +2,13 @@
 #define ALIITSUTRACKERSA_H
 
 #define __DEBUG__
-#ifdef __DEBUG__ 
+#ifdef __DEBUG__
 #include <TString.h>
+#include <TCanvas.h>
+#include <TLine.h>
+#include <TPoint.h>
+#include <TMarker.h>
+#include <TText.h>
 #endif
 
 //-------------------------------------------------------------------------
@@ -15,7 +20,7 @@
 #include "AliITSUGeomTGeo.h"
 #include <TClonesArray.h>
 #include <vector>
-#include "AliITSUTrackerSAaux.h"   // Structs and other stuff 
+#include "AliITSUTrackerSAaux.h"   // Structs and other stuff
 #include "AliITSUMatLUT.h"
 #include "AliITSUAux.h"
 #include "AliExternalTrackParam.h"
@@ -35,7 +40,7 @@ public:
   AliITSUTrackerSA(AliITSUReconstructor* rec=0);
   virtual ~AliITSUTrackerSA();
 
-  // These functions must be implemented 
+  // These functions must be implemented
   Int_t Clusters2Tracks(AliESDEvent *event);
   Int_t PropagateBack(AliESDEvent *event);
   Int_t RefitInward(AliESDEvent *event);
@@ -45,12 +50,12 @@ public:
 
   // Possibly, other public functions
   void     Init(AliITSUReconstructor* rec);
-  Double_t RefitTrack(AliExternalTrackParam* trc, Int_t clInfo[2*AliITSUAux::kMaxLayers], Double_t rDest, Int_t stopCond);  
+  Double_t RefitTrack(AliExternalTrackParam* trc, Int_t clInfo[2*AliITSUAux::kMaxLayers], Double_t rDest, Int_t stopCond);
   Bool_t   PropagateSeed(AliExternalTrackParam *seed, Double_t xToGo, Double_t mass, Double_t maxStep=1.0, Bool_t matCorr=kTRUE);
   Double_t GetMaterialBudget(const double* pnt0, const double* pnt1, double& x2x0, double& rhol) const;
   Bool_t   GoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check=kFALSE);
   Bool_t   GoToExitFromLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check=kTRUE);
-  Bool_t   TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop);  
+  Bool_t   TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop);
   Bool_t   TransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim=-1);
   //
 protected:
@@ -58,17 +63,20 @@ protected:
 
   void MakeDoublets();
   //  void MakeTriplets();
-  void CandidatesTreeTraversal( vector<trackC> &vec, int &iD, int &doubl, int &nCand);
+  void CandidatesTreeTraversal( vector<Road> &vec, const int &iD, const int &doubl);
   Bool_t InitTrackParams(trackC &track);
   void CASelection(AliESDEvent *ev);
   void GlobalFit();
   void ChiSquareSelection();
+  void MergeTracks( vector<trackC> &vec, bool flags[] );
   // Other protected functions
-  // (Sorting, labeling, calculations of "roads", etc)  
+  // (Sorting, labeling, calculations of "roads", etc)
   static Double_t Curvature(Double_t x1,Double_t y1,Double_t x2,Double_t y2,Double_t x3,Double_t y3);
 
-#ifdef __DEBUG__ 
+#ifdef __DEBUG__
   void PrintInfo(TString opt);
+  void DrawEvent(TString opt);
+  void DrawRoads(vector<Road> &vec);
 #endif
 
 private:
@@ -77,7 +85,7 @@ private:
   // Data members
 
   // classes for interfacing the geometry, materials etc.
-  AliITSUReconstructor*           fReconstructor;  // ITS global reconstructor 
+  AliITSUReconstructor*           fReconstructor;  // ITS global reconstructor
   AliITSURecoDet*                 fITS;            // interface to ITS, borrowed from reconstructor
   AliITSUMatLUT*                  fMatLUT;         // material lookup table
   Bool_t                          fUseMatLUT;      //! use material lookup table rather than TGeo
@@ -95,8 +103,16 @@ private:
   Float_t fRPhiCut;
   Float_t fZCut;
 
+  #ifdef __DEBUG__
+  TCanvas *fCv;
+  TMarker *fMk;
+  TLine   *fLn;
+  TText   *fTx;
+  #endif
+
   //
   static const Double_t           fgkToler;        // tracking tolerance
+  static const Double_t           fgkChi2Cut; // chi2 cut during track merging
   //
   ClassDef(AliITSUTrackerSA,1)   //ITSU stand-alone tracker
 };
index d4c74b977dd30abf339be6401876f406db300ceb..ebfb659e8745c0a2df7fbdba2303db1d06ab6b5c 100644 (file)
@@ -1,10 +1,11 @@
 #ifndef ALIITSUTRACKERSAAUX_H
 #define ALIITSUTRACKERSAAUX_H
 
-#ifdef __DEBUG__ 
+#ifdef __DEBUG__
 #include <iostream>
 using std::ostream;
 using std::endl;
+using std::cout;
 #endif
 
 #include <vector>
@@ -13,15 +14,28 @@ using std::vector;
 #include "AliITSUAux.h"
 
 struct itsCluster {
-itsCluster():isUsed(false),x(0.f),y(0.f),z(0.f),varx(0.f),covxy(0.f),vary(0.f),phi(0.f),phiM(0.f) {}
-itsCluster(const float &X,const float &Y, const float &Z, const float &varX, const float &covXY, const float &varY,const float &Phi, const float &PhiM) : 
-  isUsed(false),x(X),y(Y),z(Z),varx(varX),covxy(covXY),vary(varY),phi(Phi),phiM(PhiM) {}
+itsCluster():isUsed(false),x(0.f),y(0.f),z(0.f),varx(0.f),covxy(0.f),vary(0.f),phi(0.f),phiM(0.f) 
+#ifdef __DEBUG__ 
+    ,pid()
+#endif
+  {}
+itsCluster(const float &X,const float &Y, const float &Z, const float &varX, const float &covXY, const float &varY,const float &Phi, const float &PhiM) :
+  isUsed(false),x(X),y(Y),z(Z),varx(varX),covxy(covXY),vary(varY),phi(Phi),phiM(PhiM) 
+#ifdef __DEBUG__ 
+    ,pid()
+#endif
+  {}
+#ifdef __DEBUG__
+itsCluster(const float &X,const float &Y, const float &Z, const float &varX, const float &covXY, const float &varY,const float &Phi, const float &PhiM,int &Pid) :
+  isUsed(false),x(X),y(Y),z(Z),varx(varX),covxy(covXY),vary(varY),phi(Phi),phiM(PhiM),pid(Pid) {}
+#endif
   bool isUsed;
   float x,y,z;            // Global coordinates
   float varx,covxy,vary;  // Local covariance matrix
   float phi,phiM;         // phi of the cluster and phi angle of the module containing the cluster
-  
+
 #ifdef __DEBUG__
+  int pid;
   friend ostream& operator<<(ostream& out, const itsCluster& cl) {
     out << "pos = (" << cl.x << ", " << cl.y << ", "<< cl.z <<")"<<" phi="<<cl.phi <<endl;
     return out;
@@ -29,16 +43,64 @@ itsCluster(const float &X,const float &Y, const float &Z, const float &varX, con
 #endif
 };
 
+struct Road {
+  Road() : fElements(), fNElements(0) {
+    ResetElements(); 
+  }
+  Road(const Road& copy) : fElements(), fNElements(copy.fNElements) {
+    for ( int i=0; i<6; ++i ) {
+      fElements[i] = copy.fElements[i];
+    }
+  }
+
+  void ResetElements() {
+    for ( int i=0; i<6; ++i ) {
+      fElements[i] = -1;
+    }
+  }
+
+  void AddElement(int i, int el) {
+    fNElements++;
+    fElements[i] = el;
+  }
+  
+  int fElements[6];
+  int fNElements;
+
+  #ifdef __DEBUG__
+  friend ostream& operator<<(ostream& out, const Road& cl) {
+    out << "Elements ("<< cl.fNElements <<"): ";
+    for ( int i=0; i<6; ++i ) out << cl.fElements[i]; 
+    return out;
+  }
+  #endif
+};
+
 struct nPlets {
-nPlets() : id0(-1),id1(-1),id2(-1),level(1),tanPhi(),tanLambda(),neighbours() {}
-nPlets(int arg0,int arg1) : id0(arg0),id1(arg1),id2(-1),level(1),tanPhi(),tanLambda(),neighbours()  {}
+nPlets() : id0(-1),id1(-1),id2(-1),level(1),tanPhi(),tanLambda(),neighbours() 
+#ifdef __DEBUG__ 
+    ,pid0()
+    ,pid1()
+    ,pid2()
+#endif
+  {}
+nPlets(int arg0,int arg1) : id0(arg0),id1(arg1),id2(-1),level(1),tanPhi(),tanLambda(),neighbours()
+#ifdef __DEBUG__ 
+    ,pid0()
+    ,pid1()
+    ,pid2()
+#endif
+  {}
   int id0,id1,id2;
   int level;
   float tanPhi,tanLambda;
   vector<int> neighbours;
 #ifdef __DEBUG__
+nPlets(int arg0,int arg1,int pd0,int pd1) : id0(arg0),id1(arg1),id2(-1),level(1),tanPhi(),tanLambda(),neighbours(),pid0(pd0),pid1(pd1),pid2(-1)  {}
+  int pid0,pid1,pid2;
   friend ostream& operator<<(ostream& out, const nPlets& cl) {
     out << "id = (" << cl.id0 << ", " << cl.id1 << ", "<< cl.id2 <<")"<< endl;
+    out << "pid = (" << cl.pid0 << ", " << cl.pid1 << ", "<< cl.pid2 <<")"<< endl;
     out << "tanPhi="<< cl.tanPhi <<" tanLambda="<<cl.tanLambda << " level=" << cl.level <<endl;
     out << "neighbours= ";
     for( unsigned int i = 0; i< cl.neighbours.size(); ++i ) out << cl.neighbours[i];
@@ -49,17 +111,58 @@ nPlets(int arg0,int arg1) : id0(arg0),id1(arg1),id2(-1),level(1),tanPhi(),tanLam
 };
 
 class trackC : public AliExternalTrackParam {
- public : 
- trackC() : AliExternalTrackParam(), fChi2( 0. ), fPoints() {
-    for ( unsigned int i = 0; i < 2*AliITSUAux::kMaxLayers; ++i ) fPoints[i]=-1;
-  }
-#ifdef __DEBUG__
-  friend ostream& operator<<(ostream& out, const trackC& cl) {
-    out << "points = (";
-    for( unsigned int i = 0; i < 2*AliITSUAux::kMaxLayers; ++i ) out << cl.fPoints[i] << " ";
+ public :
+
+ trackC() : AliExternalTrackParam(), 
+ fChi2( 0. ), 
+ fPoints(), 
+ fNPoints(0), 
+ fInnermostLayer(-1), 
+ fOutermostLayer(-1) 
+ {
+   for ( unsigned int i = 0; i < 2*AliITSUAux::kMaxLayers; ++i ) fPoints[i]=-1;
+ }
+
+trackC(const trackC &copy) : AliExternalTrackParam(), 
+fChi2(copy.fChi2), 
+fPoints(),
+fNPoints(copy.fNPoints), 
+fInnermostLayer(copy.fInnermostLayer), 
+fOutermostLayer(copy.fOutermostLayer)
+{
+ for ( unsigned int i = 0; i < 2*AliITSUAux::kMaxLayers; ++i ) fPoints[i]=copy.fPoints[i];
+}
+
+ trackC(int points[7]) : AliExternalTrackParam(), 
+ fChi2( 0. ), 
+ fPoints(),
+ fNPoints( 0 ), 
+ fInnermostLayer( -1 ), 
+ fOutermostLayer( -1 )
+ {
+   bool outer=false;
+   for ( unsigned int i = 0; i < 2*AliITSUAux::kMaxLayers; ++i ) fPoints[i]=-1;
+   for ( int i=6; i--;  ) {
+     if (points[i]!=-1) {
+       if (! outer ) { 
+         outer = true;
+         fOutermostLayer = points[i];
+       }
+       fInnermostLayer = points[i];
+       ++fNPoints;
+     }
+     fPoints[i<<0x1] = points[i];
+   }
+ }
+
+  #ifdef __DEBUG__
+ friend ostream& operator<<(ostream& out, const trackC& cl) {
+  out << "points = (";
+    for( unsigned int i = 0; i < 2*AliITSUAux::kMaxLayers; ++i ) 
+      out << cl.fPoints[i] << " ";
     out << "), chi2: " << cl.fChi2 <<endl;
-    const double* par = cl.GetParameter();
-    const double* cov = cl.GetCovariance();    
+  const double* par = cl.GetParameter();
+    const double* cov = cl.GetCovariance();
     out << "X: " << cl.GetX() << " Alpha: " << cl.GetAlpha() << endl;
     out << "Param: \n";
     for (int i=0;i<5;i++) out << par[i] << " "; out << endl;
@@ -69,27 +172,24 @@ class trackC : public AliExternalTrackParam {
     return out;
   }
 #endif
-  
-  /* bool operator < ( const trackC &t ) { return fChi2 < t.fChi2; } */
-  /* bool operator <= ( const trackC &t ) { return fChi2 <= t.fChi2; } */
-  /* bool operator > ( const trackC &t ) { return fChi2 > t.fChi2; } */
-  /* bool operator >= ( const trackC &t ) { return fChi2 >= t.fChi2; } */
-  /* bool operator == ( const trackC &t ) { return fChi2 == t.fChi2; } */
-  /* bool operator != ( const trackC &t ) { return fChi2 != t.fChi2; } */
+  void ResetPoints() { for(unsigned int i = 0; i < 2*AliITSUAux::kMaxLayers; ++i) fPoints[i]=-1; }
+  //
   Double_t fChi2;
-  Int_t fPoints[2*AliITSUAux::kMaxLayers]; 
-  
+  Int_t fPoints[2*AliITSUAux::kMaxLayers];
+  Int_t fNPoints;
+  Int_t fInnermostLayer;
+  Int_t fOutermostLayer;
+
 };
 
+struct CompDesc { //Adapted from TMath ROOT code
+CompDesc(vector<trackC> *d) : fData(d) {}
 
-struct CompDesc { //Adapted from TMath ROOT code 
-CompDesc(vector<trackC> *d) : fData(d) {} 
-  
-  bool operator()(int i1, int i2) { 
-    return fData->at(i1).fChi2 > fData->at(i2).fChi2; 
-  } 
-  
-  vector<trackC> *fData; 
-}; 
+  bool operator()(int i1, int i2) {
+    return fData->at(i1).fChi2 > fData->at(i2).fChi2;
+  }
+
+  vector<trackC> *fData;
+};
 
 #endif
diff --git a/MONITOR/AliNetMessage.cxx b/MONITOR/AliNetMessage.cxx
new file mode 100644 (file)
index 0000000..b298d39
--- /dev/null
@@ -0,0 +1,209 @@
+#include <TVirtualStreamerInfo.h>
+#include <Bytes.h>
+#include <TFile.h>
+#include <TClass.h>
+
+#include "AliNetMessage.h"
+
+Bool_t AliNetMessage::fgEvolution = kFALSE;
+
+ClassImp(AliNetMessage)
+
+//______________________________________________________________________________
+AliNetMessage::AliNetMessage(UInt_t what) 
+  :
+  TBufferFile(kWrite),
+  fWhat(what),
+  fClass(0),
+  fBufUncompressed(0), 
+  fInfos(NULL), 
+  fEvolution(kFALSE)
+{
+   // Create a AliNetMessage object for storing objects. The "what" integer
+   // describes the type of message. Predifined ROOT system message types
+   // can be found in MessageTypes.h. Make sure your own message types are
+   // unique from the ROOT defined message types (i.e. 0 - 10000 are
+   // reserved by ROOT). In case you OR "what" with kMESS_ACK, the message
+   // will wait for an acknowledgement from the remote side. This makes
+   // the sending process synchronous. In case you OR "what" with kMESS_ZIP,
+   // the message will be compressed in TSocket using the zip algorithm
+   // (only if message is > 256 bytes).
+
+   // space at the beginning of the message reserved for the message length
+   UInt_t   reserved = 0;
+   *this << reserved;
+
+   *this << what;
+
+   SetBit(kCannotHandleMemberWiseStreaming);
+}
+
+
+//______________________________________________________________________________
+AliNetMessage::AliNetMessage(void *buf, Int_t bufsize)
+  :
+  TBufferFile(kRead, bufsize, buf),
+  fWhat(0),
+  fClass(0),
+  fBufUncompressed(0), 
+  fInfos(NULL), 
+  fEvolution(kFALSE)
+{
+   // Create a AliNetMessage object for reading objects. The objects will be
+   // read from buf. Use the What() method to get the message type.
+
+   // skip space at the beginning of the message reserved for the message length
+   fBufCur += sizeof(UInt_t);
+
+   *this >> fWhat;
+
+   if (fWhat == kMESS_OBJECT) {
+      InitMap();
+      fClass = ReadClass();     // get first the class stored in message
+      SetBufferOffset(sizeof(UInt_t) + sizeof(fWhat));
+      ResetMap();
+   } else {
+      fClass = 0;
+   }
+}
+
+//______________________________________________________________________________
+AliNetMessage::~AliNetMessage()
+{
+   // Clean up
+  Reset();
+}
+
+//______________________________________________________________________________
+void AliNetMessage::EnableSchemaEvolutionForAll(Bool_t enable)
+{
+   // Static function enabling or disabling the automatic schema evolution.
+   // By default schema evolution support is off.
+
+   fgEvolution = enable;
+}
+
+//______________________________________________________________________________
+Bool_t AliNetMessage::UsesSchemaEvolutionForAll()
+{
+   // Static function returning status of global schema evolution.
+
+   return fgEvolution;
+}
+
+//______________________________________________________________________________
+void AliNetMessage::ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t /* force */)
+{
+   // Force writing the TStreamerInfo to the message.
+
+   if (fgEvolution || fEvolution) {
+      if (!fInfos) fInfos = new TList();
+                               fInfos->Add(info);
+   }
+}
+
+//______________________________________________________________________________
+void AliNetMessage::Forward()
+{
+   // Change a buffer that was received into one that can be send, i.e.
+   // forward a just received message.
+
+   if (IsReading()) {
+      SetWriteMode();
+      SetBufferOffset(fBufSize);
+      SetBit(kCannotHandleMemberWiseStreaming);
+   }
+}
+
+//______________________________________________________________________________
+void AliNetMessage::TagStreamerInfo(TVirtualStreamerInfo *info)
+{
+   // Remember that the StreamerInfo is being used in writing.
+
+   if (fgEvolution || fEvolution) {
+      if (!fInfos) fInfos = new TList();
+      fInfos->Add(info);
+   }
+}
+
+//______________________________________________________________________________
+void AliNetMessage::IncrementLevel(TVirtualStreamerInfo *info)
+{
+   // Increment level.
+
+   TBufferFile::IncrementLevel(info);
+
+   if (!info) return;
+   if (fgEvolution || fEvolution) {
+      if (!fInfos) fInfos = new TList();
+
+      // add the streamer info, but only once
+      // this assumes that there is only one version
+      if (fInfos->FindObject(info->GetName())==NULL) {
+                               fInfos->Add(info);
+      }
+   }
+}
+
+//______________________________________________________________________________
+void AliNetMessage::Reset()
+{
+   // Reset the message buffer so we can use (i.e. fill) it again.
+
+   SetBufferOffset(sizeof(UInt_t) + sizeof(fWhat));
+   ResetMap();
+
+   if (fBufUncompressed) {
+     delete [] fBufUncompressed;
+     fBufUncompressed=NULL;
+   }
+}
+
+//______________________________________________________________________________
+void AliNetMessage::SetLength() const
+{
+   // Set the message length at the beginning of the message buffer.
+
+   if (IsWriting()) {
+      char *buf = Buffer();
+      *((UInt_t*)buf) = (UInt_t)(Length() - sizeof(UInt_t));
+   }
+}
+
+//______________________________________________________________________________
+void AliNetMessage::SetWhat(UInt_t what)
+{
+   // Using this method one can change the message type a-posteriory.
+   // In case you OR "what" with kMESS_ACK, the message will wait for
+   // an acknowledgement from the remote side. This makes the sending
+   // process synchronous.
+
+   fWhat = what;
+
+   char *buf = Buffer();
+   buf += sizeof(UInt_t);   // skip reserved length space
+   tobuf(buf, what);
+}
+
+//______________________________________________________________________________
+void AliNetMessage::WriteObject(const TObject *obj)
+{
+   // Write object to message buffer.
+   // When support for schema evolution is enabled the list of TStreamerInfo
+   // used to stream this object is kept in fInfos. This information is used
+   // by TSocket::Send that sends this list through the socket. This list is in
+   // turn used by TSocket::Recv to store the TStreamerInfo objects in the
+   // relevant TClass in case the TClass does not know yet about a particular
+   // class version. This feature is implemented to support clients and servers
+   // with either different ROOT versions or different user classes versions.
+
+   if (fgEvolution || fEvolution) {
+      if (fInfos)
+         fInfos->Clear();
+      else
+         fInfos = new TList();
+   }
+
+   WriteObjectAny(obj, TObject::Class());
+}
+
diff --git a/MONITOR/AliNetMessage.h b/MONITOR/AliNetMessage.h
new file mode 100644 (file)
index 0000000..c23f570
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef AliNetMessage_H
+#define AliNetMessage_H
+
+// adapted from AliHLTMessage
+
+#include <TBufferFile.h>
+
+#ifndef ROOT_MessageTypes
+#include <MessageTypes.h>
+#endif
+#ifndef ROOT_TBits
+#include <TBits.h>
+#endif
+
+class AliNetMessage : public TBufferFile
+{
+public:
+       AliNetMessage(UInt_t what = kMESS_ANY);
+       AliNetMessage(void *buf, Int_t bufsize);
+       virtual ~AliNetMessage();
+       
+        void     ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t force);
+   void     Forward();
+   void                TagStreamerInfo(TVirtualStreamerInfo *info);
+   TClass  *GetClass() const { return fClass;}
+   void     IncrementLevel(TVirtualStreamerInfo* info);
+   void     Reset();
+   void     Reset(UInt_t what) { SetWhat(what); Reset(); }
+   UInt_t   What() const { return fWhat; }
+   void                        SetLength() const;
+   void     SetWhat(UInt_t what);
+
+   void     EnableSchemaEvolution(Bool_t enable = kTRUE) { fEvolution = enable; }
+   Bool_t   UsesSchemaEvolution() const { return fEvolution; }
+   void     WriteObject(const TObject *obj);
+
+   static void   EnableSchemaEvolutionForAll(Bool_t enable = kTRUE);
+   static Bool_t UsesSchemaEvolutionForAll();
+
+   const TList* GetStreamerInfos() const {return fInfos;}
+
+private:
+       AliNetMessage(const AliNetMessage &); 
+       void operator=(const AliNetMessage &);
+       
+   UInt_t   fWhat;        //!Message type
+   TClass  *fClass;       //!If message is kMESS_OBJECT pointer to object's class
+   char    *fBufUncompressed; //!Uncompressed buffer
+   TList   *fInfos;       //Array of TStreamerInfo used in WriteObject
+   Bool_t   fEvolution;   //True if support for schema evolution required
+
+   static Bool_t fgEvolution;  //True if global support for schema evolution required
+  
+       ClassDef(AliNetMessage, 1);
+};
+#endif
index 6909784f20b6cb857035b118f7005008d799e5f1..125c5139ba87b6abcd137adf116edc6026302089 100644 (file)
@@ -17,6 +17,8 @@
 #include <AliReconstruction.h>
 #include <AliTPCRecoParam.h>
 
+#include <zmq.hpp>
+
 #include "AliEventServerUtil.h"
 #include "AliRecoServer.h"
 #include "AliRecoServerThread.h"
@@ -32,7 +34,7 @@ AliRecoServer::AliRecoServer()
   fSettings(0),
   fRecoTh(0)
 {
-       fContext = new zmq::context_t(1);
+       fContext = new zmq::context_t;
 }
 
 AliRecoServer::~AliRecoServer()
index 378a33f91d33c51ae4d90286c670dda8ee5690f2..2d73a55d92313c0a2a3cb1cffca55a24bdb0cf32 100644 (file)
@@ -9,7 +9,6 @@
 #ifndef __AliRecoServer_H__
 #define __AliRecoServer_H__
 
-#include <zmq.hpp>
 #include <TObjString.h>
 #include <TQObject.h>
 #include <RQ_OBJECT.h>
@@ -19,6 +18,11 @@ class AliCDBManager;
 class AliReconstruction;
 class AliRecoServerThread;
 
+namespace zmq
+{
+       class context_t;
+}
+
 class AliRecoServer : public TQObject
 {
        RQ_OBJECT("AliRecoServer")
index e490dc0721bbe77fef4f0c3a74717fccda7df1b4..97ec5f8f0f06a919ec515bdd0d17b89f6b3072db 100644 (file)
@@ -9,8 +9,6 @@
 #include <RVersion.h>
 #include <stdlib.h>
 
-#include <zmq.hpp>
-
 #include <TCondition.h>
 #include <TBufferFile.h>
 #include <TMessage.h>
 #include <TStreamerInfo.h>
 #include <TThread.h>
 
-
 #include <AliESDEvent.h>
 #include <AliESDfriend.h>
 #include <AliRawReader.h>
 #include <AliRunLoader.h>
 #include <AliReconstruction.h>
 
+#include <AliNetMessage.h>
+#include <AliSocket.h>
+
+#include <zmq.hpp>
+
 #include "AliRecoServerThread.h"
 
-ClassImp(AliRecoServerThread);
+ClassImp(AliRecoServerThread)
 AliRecoServerThread::AliRecoServerThread(zmq::context_t *context, AliReconstruction* reco)
-  : TQObject(),
-               fContext(0),
+  : AliThreadedSocket(context, AliThreadedSocket::WRITE),
        fReco(0),
-       fHost("tcp://*:5051"),
-    fThread(0),
     fCond(0)
 {
-       fContext = context;
        fReco = reco;
 }
 
@@ -45,108 +43,14 @@ AliRecoServerThread::~AliRecoServerThread()
        Stop();
 }
 
-Bool_t AliRecoServerThread::Start(const char* host)
-{
-       if(!fThread){
-       fHost = host;
-       fCond = new TCondition(0);
-       fThread = new TThread("AliRecoServerThread", (void(*) (void *) ) &RunThreaded, (void*)  this );
-       fThread->Run();
-  
-       return kTRUE;
-       }
-       
-       return kFALSE;  
-}
-
-Int_t AliRecoServerThread::Stop()
-{
-       fCond->Signal();
-  return 0;
-}
-
-Bool_t AliRecoServerThread::ForceStop()
+Bool_t AliRecoServerThread::Start(const char* endpoint)
 {
-       if(fThread){
-               fThread->Kill();
-               fThread->Delete();
-               fThread=0;
-               
-               return kTRUE;
-       }
+       fHost = endpoint;
        
-       return kFALSE;
+       return AliThreadedSocket::Start();
 }
 
-void AliRecoServerThread::Finished(Int_t status)
-{
-  Emit("Finished(Int_t)", status);
-}
-
-void AliRecoServerThread::SendStreamerInfos(TMessage* mess, zmq::socket_t *sock)
-{
-       //printf("Sending Streamer Infos....\n");
-
-       // Check if TStreamerInfo must be sent. The list of TStreamerInfo of classes
-   // in the object in the message is in the fInfos list of the message.
-   // We send only the TStreamerInfos not yet sent on this socket.
-       TList* infos = mess->GetStreamerInfos();
-   
-      TIter next(infos);
-      TStreamerInfo *info;
-      TList *minilist = 0;
-      while ((info = (TStreamerInfo*)next())) {
-         Int_t uid = info->GetNumber();
-         if (!minilist) minilist = new TList();
-         
-         minilist->Add(info);
-      }
-      
-      if (minilist) {
-         TMessage messinfo(kMESS_STREAMERINFO);
-         messinfo.WriteObject(minilist);
-         delete minilist;
-         if (messinfo.GetStreamerInfos())
-            messinfo.GetStreamerInfos()->Clear();
-          
-                                       int bufsize = messinfo.Length();
-               char* buf = (char*) malloc(bufsize * sizeof(char));
-          memcpy(buf, messinfo.Buffer(), bufsize);
-
-               // send!
-          zmq::message_t message((void*)buf, bufsize, 0, 0);
-                     
-         if (sock->send(message, ZMQ_SNDMORE))
-            Warning("SendStreamerInfos", "problems sending TStreamerInfo's ...");
-      }
-
-   return;
-}
-
-void AliRecoServerThread::SendEvent(AliESDEvent* event, zmq::socket_t* socket)
-{
-  if(!event) return;
-
-  TMessage tmess(kMESS_OBJECT);
-  tmess.Reset();
-  tmess.WriteObject(event);
-
-  TMessage::EnableSchemaEvolutionForAll(kTRUE);
-  SendStreamerInfos(&tmess, socket);
-
-  int bufsize = tmess.Length();
-  char* buf = (char*) malloc(bufsize * sizeof(char));
-  memcpy(buf, tmess.Buffer(), bufsize);
-
-  // send!
-  zmq::message_t message((void*)buf, bufsize, 0, 0);
-  socket->send(message);
-
-}
-
-
-void* AliRecoServerThread::RunThreaded(void* arg)
+void* AliRecoServerThread::RunThrdWrite(void* arg)
 {
        TThread::SetCancelAsynchronous();
        TThread::SetCancelOn();
@@ -155,10 +59,11 @@ void* AliRecoServerThread::RunThreaded(void* arg)
        
        const char* host = recoTh->GetHost();
        zmq::context_t* context = recoTh->GetContext();
-       AliReconstruction* reco   = recoTh->GetReconstruction();
+       AliReconstruction* reco = recoTh->GetReconstruction();
 
-       zmq::socket_t publisher(*context, ZMQ_PUB);
-       publisher.bind(host);
+ // generate a publish socket
+       AliSocket publisher(context, ZMQ_PUB);
+       publisher.Bind(host);
        
   if(reco==0) return 0;
   
@@ -179,8 +84,13 @@ void* AliRecoServerThread::RunThreaded(void* arg)
       
       if (status)
       {
-                               event = reco->GetESDEvent();
-                               SendEvent(event, &publisher);
+                   event = reco->GetESDEvent();
+                   
+       AliNetMessage tmess(kMESS_OBJECT);
+                       tmess.Reset();
+                       tmess.WriteObject(event);
+                               
+                               publisher.Send(tmess);
 
                        sleep(1);
      }
index 66e6d88979489eec50195a7838f40535113f2f5a..814860fee99e6341053f0118d99cae08ba12954b 100644 (file)
 #include <TMutex.h>
 #include <TCondition.h>
 
+#include "AliThreadedSocket.h"
+
 class TCondition;
-class TMessage;
 class TThread;
 
 class AliReconstruction;
 class AliESDEvent;
 
-namespace zmq{
-       class context_t;
-       class socket_t;
-}
-
-class AliRecoServerThread : public TQObject
+class AliRecoServerThread : public AliThreadedSocket
 {
 public:
   AliRecoServerThread(zmq::context_t *context, AliReconstruction* reco);
   virtual ~AliRecoServerThread();
 
-       Bool_t Start(const char* host);
-       Int_t Stop();
-       Bool_t ForceStop(); // imediate kill it, use it with rarely and with caution
 
-       zmq::context_t*                 GetContext() { return fContext; }
+       Bool_t Start(const char* endpoint);
+
+       const char* GetHost() const { return fHost.Data(); }    
        AliReconstruction*      GetReconstruction() { return fReco; }
-       const char*                                     GetHost() { return fHost.Data(); }
-       TCondition*                                                     Condition() { return fCond; }
+       TCondition*                                     Condition() { return fCond; }
        
-       void Finished(Int_t status); // *SIGNAL*
-
 private:
-       static void* RunThreaded(void* arg);
-       static void SendStreamerInfos(TMessage* mess, zmq::socket_t *sock);
-       static void SendEvent(AliESDEvent* event, zmq::socket_t* socket);
+       static void* RunThrdWrite(void* arg);
        
-       // shared
-       zmq::context_t* fContext;
        AliReconstruction* fReco;
 
        // local        
-       TString                                                                         fHost;
-  TThread*                                                             fThread;
   TCondition*                                          fCond; // condition whether to stop reco/clean exit thread
+  TString fHost;
 
 private:
   AliRecoServerThread(const AliRecoServerThread&);            // Not implemented
diff --git a/MONITOR/AliSocket.cxx b/MONITOR/AliSocket.cxx
new file mode 100644 (file)
index 0000000..23af362
--- /dev/null
@@ -0,0 +1,79 @@
+#include <cstring>
+
+#include <zmq.hpp>
+
+#include "AliNetMessage.h"
+#include "AliSocket.h"
+
+void __freeBuffer (void *data, void *hint)
+{
+    free(data);
+}
+
+
+ClassImp(AliSocket);
+AliSocket::AliSocket(zmq::context_t *context,int type)
+       : TObject(),
+       fContext(context)
+{
+       fSocket = new zmq::socket_t(*context,type);
+}
+
+AliSocket::~AliSocket()
+{
+       fSocket->close();
+}
+
+void AliSocket::Bind(const char* endpoint)
+{
+       fEndPoint = endpoint;
+       
+       fSocket->bind(endpoint);
+}
+
+void AliSocket::Connect(const char* endpoint)
+{
+       fEndPoint = endpoint;
+       
+       fSocket->connect(endpoint);
+}
+
+void AliSocket::Subscribe(const char* filter)
+{
+       fSocket->setsockopt(ZMQ_SUBSCRIBE, filter, strlen(filter) );
+}
+
+bool AliSocket::Recv(AliNetMessage *&mess, int flags)
+{
+       zmq::message_t message;
+         
+       if(!fSocket->recv(&message, flags))
+               return false;   
+       
+       int bufSize = (int)message.size();
+               
+       // buffer will be adopted by AliNetMessage, no need to free it
+       char* buf = new char[bufSize];
+       memcpy(buf, (char*)message.data(), bufSize);
+       
+       mess = new AliNetMessage(buf, bufSize);
+
+       return true;
+}
+
+bool AliSocket::Send(AliNetMessage &mess, int flags)
+{
+       //NOTE: this is already done by AliNetMessage, should we do this too?
+       // send length of the message
+       int bufSize = mess.BufferSize();
+       
+       // we need to copy it elsewhere because zmq takes ownership of the buffer data
+       char* buf = new char[bufSize];
+       memcpy(buf, (char*)mess.Buffer(), bufSize);
+
+       zmq::message_t message(buf, bufSize, __freeBuffer, NULL);
+               
+       //fwrite(mess.Buffer(), sizeof(char), bufSize, stdout);
+       
+       return fSocket->send(message, flags);
+}
diff --git a/MONITOR/AliSocket.h b/MONITOR/AliSocket.h
new file mode 100644 (file)
index 0000000..7dafdfd
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef ALISOCKET_H
+#define ALISOCKET_H
+
+#include <TObject.h>
+#include <TString.h>
+
+class AliNetMessage;
+
+namespace zmq
+{
+       class context_t;
+       class socket_t;
+}
+
+class AliSocket : public TObject
+{
+public:
+       AliSocket(zmq::context_t* context, int type);
+       virtual ~AliSocket();
+       
+       void Bind(const char* endpoint);
+       void Connect(const char* endpoint);
+       void Subscribe(const char* filter);
+       
+  bool Recv(AliNetMessage *&mess, int flags = 0);
+  bool Send(AliNetMessage &message, int flags = 0);
+  
+private:
+       AliSocket(const AliSocket &); // Not implemented
+       void operator=(const AliSocket &); // Not implemented
+       
+       zmq::context_t *fContext; //! the zmq context
+       zmq::socket_t *fSocket; //! the socket
+       TString fEndPoint; //!
+       
+  ClassDef(AliSocket, 0);  
+};
+
+#endif
diff --git a/MONITOR/AliThreadedSocket.cxx b/MONITOR/AliThreadedSocket.cxx
new file mode 100644 (file)
index 0000000..916bf09
--- /dev/null
@@ -0,0 +1,114 @@
+#include <zmq.hpp>
+
+#include <TThread.h>
+
+#include "AliNetMessage.h"
+#include "AliSocket.h"
+#include "AliThreadedSocket.h"
+
+ClassImp(AliThreadedSocket)
+AliThreadedSocket::AliThreadedSocket(zmq::context_t *context, EOpenMode mode)
+       : TQObject(),
+       fThread(0),
+       fContext(context),
+       fOpenMode(mode)
+{
+
+}
+
+AliThreadedSocket::~AliThreadedSocket()
+{
+       Stop();
+}
+
+Bool_t AliThreadedSocket::Start()
+{
+       if(!fThread){
+               if(fOpenMode==READ)
+               fThread = new TThread("AliThreadedSocket", (void(*) (void *) ) &RunThrdRead, (void*)  this );
+       else
+               fThread = new TThread("AliThreadedSocket", (void(*) (void *) ) &RunThrdWrite,(void*)  this );
+               
+       if(fThread->Run()==0){ 
+               Emit("Started()");
+               return kTRUE; 
+       }
+       }
+       
+       return kFALSE;
+}
+
+Bool_t AliThreadedSocket::Stop()
+{
+       Emit("Stopped()");
+       return kTRUE;
+}
+
+Bool_t AliThreadedSocket::Kill()
+{
+       if(fThread){
+               if(fThread->Kill()!=0) return kFALSE;
+               fThread->Delete();
+               fThread=0;
+               
+               Emit("Stopped()");
+               return kTRUE;
+       }
+}
+
+void AliThreadedSocket::Continue()
+{
+       
+}
+
+zmq::context_t* AliThreadedSocket::GetContext() const
+{
+       return fContext;
+}
+
+TThread* AliThreadedSocket::GetThread() const
+{
+       return fThread;
+}
+
+void AliThreadedSocket::Started()
+{
+       Emit("Started()");
+}
+
+void AliThreadedSocket::Stopped()
+{
+       Emit("Stopped()");
+}
+
+void* AliThreadedSocket::RunThrdRead(void* arg)
+{
+       AliNetMessage* mess=0;
+       AliThreadedSocket* thsock = (AliThreadedSocket*)arg;
+       zmq::context_t* context = thsock->GetContext();
+       
+       AliSocket sock(context, ZMQ_SUB);
+               
+       do{
+               sock.Recv(mess);
+       }
+       while(mess==0);
+       
+       thsock->Stopped();
+}
+
+void* AliThreadedSocket::RunThrdWrite(void* arg)
+{
+       AliNetMessage* mess=0;
+       AliThreadedSocket* thsock = (AliThreadedSocket*)arg;
+       zmq::context_t* context = thsock->GetContext();
+       
+       AliSocket sock(context, ZMQ_PUB);
+       
+       do{
+               sock.Send(*mess);
+       }
+       while(1);
+       
+       thsock->Emit("Stopped()");
+}
diff --git a/MONITOR/AliThreadedSocket.h b/MONITOR/AliThreadedSocket.h
new file mode 100644 (file)
index 0000000..677eb58
--- /dev/null
@@ -0,0 +1,57 @@
+// Main authors: Mihai Niculescu 2014
+
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
+ * full copyright notice.                                                 *
+ **************************************************************************/
+
+#ifndef AliThreadedSocket_H
+#define AliThreadedSocket_H
+
+#include <TQObject.h>
+
+class TThread;
+class AliNetMessage;
+
+namespace zmq {
+       class context_t;
+}
+
+class AliThreadedSocket : public TQObject
+{
+public:
+       enum EOpenMode{READ, WRITE};
+
+       AliThreadedSocket(zmq::context_t *context, EOpenMode mode);
+       virtual ~AliThreadedSocket();
+
+       Bool_t Start();
+       Bool_t Stop();
+       Bool_t Kill();
+       
+       zmq::context_t* GetContext() const;
+       TThread* GetThread() const;
+               
+       void Started(); // *SIGNAL*
+       void Stopped(); // *SIGNAL*
+
+       void Continue();
+       
+protected:
+  AliThreadedSocket(const AliThreadedSocket&);            // Not implemented
+  AliThreadedSocket& operator=(const AliThreadedSocket&); // Not implemented
+
+       // reimplement these in a derived class
+       static void* RunThrdRead(void* arg);
+       static void* RunThrdWrite(void* arg);
+
+       zmq::context_t* fContext;
+       TThread* fThread;
+       EOpenMode fOpenMode;
+
+
+  ClassDef(AliThreadedSocket, 0);  
+
+};
+#endif
index 8c9b5160d3bb3d5227f52eb177d58c9880e979db..15bf9a43480307a55300cbaf7769132a6fa5e93a 100644 (file)
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS   
-    AliEventServerWindow.cxx
+set ( SRCS
+    AliNetMessage.cxx
+    AliSocket.cxx
+    AliThreadedSocket.cxx
     AliRecoServerThread.cxx
     AliRecoServer.cxx
+    AliEventServerWindow.cxx
     )
 
 string ( REPLACE ".cxx" ".h" CINTHDRS "${SRCS}" )
@@ -38,7 +41,7 @@ string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
 set ( DHDR  MONITORzmqLinkDef.h)
 
-set ( EINCLUDE  STEER/STEERBase )#"${ZEROMQ_INCLUDE_DIR}")
+set ( EINCLUDE STEER/STEERBase ) # ${ZEROMQ_INCLUDE_DIR})
 
 set(DIMDIR $ENV{DIMDIR})
 set(ODIR $ENV{ODIR})
@@ -55,7 +58,7 @@ if(DIMDIR)
   set ( CXXFLAGS  "-DALI_DIM ${CXXFLAGS}")
 endif(DIMDIR)
 
-set ( ELIBS ${ELIBS} ${ZEROMQ_LIBRARY} )
+set (ELIBS ${ELIBS} ${ZEROMQ_LIBRARIES} )
 
 # this must be set in a better way
 set ( ELIBSDIR ${ELIBSDIR}  /usr/lib64)
index ee26e77fd0ad895f3df699a670d155380ecd881b..cdeb0b2dfaa6297d26e215deb6864bc3a9e7eabf 100644 (file)
 #pragma link off all functions;
 
 #pragma link C++ class AliEventServerPreferencesWindow+;
-#pragma link C++ class  AliQAHistNavigator+;
-#pragma link C++ class  AliQAHistViewer+;
-#pragma link C++ class  AliQADirList+;
-#pragma link C++ class  AliQADirListItem+;
-#pragma link C++ class  AliOnlineRecoTrigger+;
-#pragma link C++ class  TerminateSignalHandler+;
+#pragma link C++ class AliQAHistNavigator+;
+#pragma link C++ class AliQAHistViewer+;
+#pragma link C++ class AliQADirList+;
+#pragma link C++ class AliQADirListItem+;
+#pragma link C++ class AliOnlineRecoTrigger+;
+#pragma link C++ class TerminateSignalHandler+;
 
 #pragma link C++ class AliDimIntNotifier+;
 #pragma link C++ class AliChildProcTerminator+;
index 9ff59c101e39adf8a7828010119fbb47d503c98b..4dad2929e633b7a6bbc0bc51443e11938d599858 100644 (file)
@@ -9,8 +9,11 @@
 #pragma link off all classes;
 #pragma link off all functions;
 
-#pragma link C++ class AliEventServerWindow+;
+#pragma link C++ class AliNetMessage+;
+#pragma link C++ class AliSocket+;
+#pragma link C++ class AliThreadedSocket+;
 #pragma link C++ class AliRecoServerThread+;
+#pragma link C++ class AliEventServerWindow+;
 #pragma link C++ class AliRecoServer+;
 
 #endif
index 8d2b904ecbaed38f216c0e6a6bf2eb8274ca026b..31ed34c5d67c0120b3f4056bf34393fe5aef3893 100644 (file)
Binary files a/OADB/PHOS/PHOSBadMaps.root and b/OADB/PHOS/PHOSBadMaps.root differ
index bb595283df3e1a86f0cb48fc1c5f37cfb469e486..7c95b71506a9609407b21859bfbfb97d782b7086 100644 (file)
Binary files a/OADB/PHOS/PHOSCalibrations.root and b/OADB/PHOS/PHOSCalibrations.root differ
index c57963a8a226e1b6540752ed6718fb0f2125fbe6..587efb9e0ca0a741827c41d752df07e0475fb995 100644 (file)
Binary files a/OADB/PHOS/PHOSMCCalibrations.root and b/OADB/PHOS/PHOSMCCalibrations.root differ
index f9976abbd4fea563caec74de230cc427a41ffe0f..83f62d624284abc1c8113e6d7444f693cbe9f9c6 100755 (executable)
@@ -72,7 +72,8 @@ ClassImp(AliCalorimeterUtils)
     fOADBForEMCAL(kFALSE),            fOADBForPHOS(kFALSE),
     fOADBFilePathEMCAL(""),           fOADBFilePathPHOS(""),
     fImportGeometryFromFile(0),       fImportGeometryFilePath(""),
-    fNSuperModulesUsed(0)
+    fNSuperModulesUsed(0),
+    fMCECellClusFracCorrOn(0),        fMCECellClusFracCorrParam()
 {
   //Ctor
   
@@ -529,6 +530,34 @@ Bool_t AliCalorimeterUtils::AreNeighbours(TString calo, Int_t absId1, Int_t absI
   return areNeighbours;
   
 }
+//_____________________________________________________________________________________
+Bool_t AliCalorimeterUtils::IsClusterSharedByTwoSuperModules(const AliEMCALGeometry * geom,
+                                                             AliVCluster* cluster)
+{
+  //Method that checks if any of the cells in the cluster belongs to a different SM
+  
+  Int_t    iSupMod = -1;
+  Int_t    iSM0    = -1;
+  Int_t    iTower  = -1;
+  Int_t    iIphi   = -1;
+  Int_t    iIeta   = -1;
+  Int_t    iphi    = -1;
+  Int_t    ieta    = -1;
+  
+  for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
+  {
+    //Get from the absid the supermodule, tower and eta/phi numbers
+    geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
+    geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
+    
+    //Check if there are cells of different SM
+    if     (iDigit == 0   ) iSM0 = iSupMod;
+    else if(iSupMod!= iSM0) return kTRUE;
+  }
+  
+  return kFALSE;
+  
+}
 
 
 //_____________________________________________________________________________________
@@ -841,6 +870,29 @@ AliVTrack * AliCalorimeterUtils::GetMatchedTrack(AliVCluster* cluster,
   return track ;
   
 }
+//______________________________________________________________________________________________
+Float_t AliCalorimeterUtils::GetMCECellClusFracCorrection(Float_t eCell, Float_t eCluster) const
+{
+  // Correction factor for cell energy in cluster to temptatively match Data and MC
+  if( eCluster <= 0 || eCluster < eCell )
+  {
+    printf("AliCalorimeterUtils::GetMCECellClusFracCorrection() - Bad values eCell=%f, eCluster %f\n",eCell,eCluster);
+    return 1;
+  }
+  
+  Float_t frac       = eCell / eCluster;
+  
+  Float_t correction = fMCECellClusFracCorrParam[0] +
+                       TMath::Exp( frac*fMCECellClusFracCorrParam[2]+fMCECellClusFracCorrParam[1] ) +
+                       fMCECellClusFracCorrParam[3]/TMath::Sqrt(frac);
+  
+//  printf("AliCalorimeterUtils::GetMCECellClusFracCorrection(eCell=%f, eCluster %f, frac %f) = %f\n",eCell, eCluster, frac, correction);
+//  printf("\t %2.2f + TMath::Exp( %2.3f*%2.2f + %2.2f ) + %2.2f/TMath::Sqrt(%2.3f)) = %f\n",
+//         fMCECellClusFracCorrParam[0],frac,fMCECellClusFracCorrParam[2],fMCECellClusFracCorrParam[1],fMCECellClusFracCorrParam[3], frac, correction);
+
+  return correction;
+}
+
 
 //_____________________________________________________________________________________________________
 Int_t AliCalorimeterUtils::GetModuleNumber(AliAODPWG4Particle * particle, AliVEvent * inputEvent) const
@@ -1033,6 +1085,15 @@ Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCalo
   Int_t absId2 = -1 ;
   const Int_t nCells = cluster->GetNCells();
   
+  Float_t eCluster =  RecalibrateClusterEnergy(cluster, cells);// recalculate cluster energy, avoid non lin correction.
+
+  Float_t simuTotWeight = 0;
+  if(fMCECellClusFracCorrOn)
+  {
+    simuTotWeight =  RecalibrateClusterEnergyWeightCell(cluster, cells,eCluster);// same but apply a weight
+    simuTotWeight/= eCluster;
+  }
+  
   TString calorimeter = "EMCAL";
   if(!cluster->IsEMCAL()) calorimeter = "PHOS";
   
@@ -1044,7 +1105,11 @@ Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCalo
   {
     absIdList[iDigit] = cluster->GetCellsAbsId()[iDigit]  ; 
     Float_t en = cells->GetCellAmplitude(absIdList[iDigit]);
-    RecalibrateCellAmplitude(en,calorimeter,absIdList[iDigit]);  
+    RecalibrateCellAmplitude(en,calorimeter,absIdList[iDigit]);
+    
+    if(fMCECellClusFracCorrOn)
+      en*=GetMCECellClusFracCorrection(en,eCluster)/simuTotWeight;
+    
     if( en > emax )
     {
       emax  = en ;
@@ -1064,6 +1129,9 @@ Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCalo
       Float_t en1 = cells->GetCellAmplitude(absId1);
       RecalibrateCellAmplitude(en1,calorimeter,absId1);  
       
+      if(fMCECellClusFracCorrOn)
+        en1*=GetMCECellClusFracCorrection(en1,eCluster)/simuTotWeight;
+      
       //printf("%d : absIDi %d, E %f\n",iDigit, absId1,en1);
       
       for(iDigitN = 0; iDigitN < nCells; iDigitN++) 
@@ -1077,6 +1145,9 @@ Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCalo
         Float_t en2 = cells->GetCellAmplitude(absId2);
         RecalibrateCellAmplitude(en2,calorimeter,absId2);
         
+        if(fMCECellClusFracCorrOn)
+          en2*=GetMCECellClusFracCorrection(en2,eCluster)/simuTotWeight;
+
         //printf("\t %d : absIDj %d, E %f\n",iDigitN, absId2,en2);
         
         if ( AreNeighbours(calorimeter, absId1, absId2) ) 
@@ -1115,10 +1186,17 @@ Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCalo
     if(absIdList[iDigit]>=0 )
     {
       absIdList[iDigitN] = absIdList[iDigit] ;
+      
       Float_t en = cells->GetCellAmplitude(absIdList[iDigit]);
-      RecalibrateCellAmplitude(en,calorimeter,absIdList[iDigit]);  
+      RecalibrateCellAmplitude(en,calorimeter,absIdList[iDigit]);
+      
+      if(fMCECellClusFracCorrOn)
+        en*=GetMCECellClusFracCorrection(en,eCluster)/simuTotWeight;
+      
       if(en < fLocMaxCutE) continue; // Maxima only with seed energy at least
+      
       maxEList[iDigitN] = en ;
+      
       //printf("Local max %d, id %d, en %f\n", iDigit,absIdList[iDigitN],en);
       iDigitN++ ; 
     }
@@ -1136,8 +1214,8 @@ Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCalo
   
   if(fDebug > 0) 
   {    
-    printf("AliCalorimeterUtils::GetNumberOfLocalMaxima() - In cluster E %2.2f, M02 %2.2f, M20 %2.2f, N maxima %d \n", 
-           cluster->E(),cluster->GetM02(),cluster->GetM20(), iDigitN);
+    printf("AliCalorimeterUtils::GetNumberOfLocalMaxima() - In cluster E %2.2f (wth non lin. %2.2f), M02 %2.2f, M20 %2.2f, N maxima %d \n",
+           cluster->E(),eCluster, cluster->GetM02(),cluster->GetM20(), iDigitN);
   
     if(fDebug > 1) for(Int_t imax = 0; imax < iDigitN; imax++) 
     {
@@ -1222,6 +1300,11 @@ void AliCalorimeterUtils::InitParameters()
  
   fNSuperModulesUsed = 22;
   
+  fMCECellClusFracCorrParam[0] = 0.78;
+  fMCECellClusFracCorrParam[1] =-1.8;
+  fMCECellClusFracCorrParam[2] =-6.3;
+  fMCECellClusFracCorrParam[3] = 0.014;
+  
 }
 
 
@@ -1468,6 +1551,62 @@ Float_t AliCalorimeterUtils::RecalibrateClusterEnergy(AliVCluster * cluster,
        return energy;
 }
 
+//__________________________________________________________________________
+Float_t AliCalorimeterUtils::RecalibrateClusterEnergyWeightCell(AliVCluster * cluster,
+                                                                AliVCaloCells * cells, Float_t energyOrg)
+{
+       // Recalibrate the cluster energy, considering the recalibration map and the energy of the cells that compose the cluster.
+  // Also consider reweighting of cells energy
+  
+  //Initialize some used variables
+       Float_t frac  = 0., energy = 0.;
+  
+       if(cells)
+  {
+    //Get the cluster number of cells and list of absId, check what kind of cluster do we have.
+    
+    UShort_t * index    = cluster->GetCellsAbsId() ;
+    Double_t * fraction = cluster->GetCellsAmplitudeFraction() ;
+    
+    Int_t ncells     = cluster->GetNCells();
+    
+    TString calo     = "EMCAL";
+    if(cluster->IsPHOS())
+      calo = "PHOS";
+    
+    //Loop on the cells, get the cell amplitude and recalibration factor, multiply and and to the new energy
+    for(Int_t icell = 0; icell < ncells; icell++){
+      
+      Int_t absId = index[icell];
+      
+      frac =  fraction[icell];
+      if(frac < 1e-3) frac = 1; //in case of EMCAL, this is set as 0, not used.
+      
+      Float_t amp = cells->GetCellAmplitude(absId);
+      RecalibrateCellAmplitude(amp,calo, absId);
+      
+      amp*=GetMCECellClusFracCorrection(amp,energyOrg);
+      
+      if(fDebug>2)
+        printf("AliCalorimeterUtils::RecalibrateClusterEnergy() - recalibrate cell: %s, cell fraction %f, cell energy %f\n",
+               calo.Data(),frac,cells->GetCellAmplitude(absId));
+      
+      energy += amp*frac;
+    }
+    
+    if(fDebug>1)
+      printf("AliCalorimeterUtils::RecalibrateClusterEnergy() - Energy before %f, after %f\n",cluster->E(),energy);
+    
+       }// cells available
+  else
+  {
+    Fatal("RecalibrateClusterEnergy()","Cells pointer does not exist!");
+  }
+  
+       return energy;
+}
+
+
 //__________________________________________________________________________________________
 void AliCalorimeterUtils::RecalculateClusterPosition(AliVCaloCells* cells, AliVCluster* clu)
 {
index 41cbad2bc43eb3e10d99c4141b26ad4d674c7ae4..58dbca8ebed559daa7e19b657ec2760b4dcf99fc 100755 (executable)
@@ -47,6 +47,9 @@ class AliCalorimeterUtils : public TObject {
   
   Bool_t        AreNeighbours(TString calo, Int_t absId1, Int_t absId2) const ;
 
+  Bool_t        IsClusterSharedByTwoSuperModules(const AliEMCALGeometry * geom,
+                                                 AliVCluster* cluster);
+  
   Int_t         GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells)  ;
   
   Int_t         GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells,
@@ -68,6 +71,14 @@ class AliCalorimeterUtils : public TObject {
   void          SwitchOnClusterPlot()                      { fPlotCluster = kTRUE         ; }
   void          SwitchOffClusterPlot()                     { fPlotCluster = kFALSE        ; }
 
+  Float_t       GetMCECellClusFracCorrection(Float_t eCell, Float_t eCluster) const ;
+  void          SetMCECellClusFracCorrectionParamters(Int_t i, Float_t param) { if(i<4) fMCECellClusFracCorrParam[i] = param; }
+  
+  Bool_t        IsMCECellClusFracCorrectionOn()   const    { return fMCECellClusFracCorrOn   ; }
+  void          SwitchOnMCECellClusFracCorrection()        { fMCECellClusFracCorrOn = kTRUE  ; }
+  void          SwitchOffMCECellClusFracCorrection()       { fMCECellClusFracCorrOn = kFALSE ; }
+
+  
   //Calorimeters Geometry Methods
   AliEMCALGeometry * GetEMCALGeometry()              const { return fEMCALGeo             ; }
   TString       EMCALGeometryName()                  const { return fEMCALGeoName         ; }  
@@ -197,6 +208,7 @@ class AliCalorimeterUtils : public TObject {
   void          RecalibrateCellTime     (Double_t & time, TString calo, Int_t absId, Int_t bunchCrossNumber) const ;
   void          RecalibrateCellAmplitude(Float_t  & amp,  TString calo, Int_t absId) const ;
   Float_t       RecalibrateClusterEnergy(AliVCluster* cluster, AliVCaloCells * cells);
+  Float_t       RecalibrateClusterEnergyWeightCell(AliVCluster* cluster, AliVCaloCells * cells, Float_t energyOrg);
 
   // Run dependent energy calibrations (EMCAL)
   
@@ -331,11 +343,13 @@ class AliCalorimeterUtils : public TObject {
   Int_t              fNSuperModulesUsed;     // Number of supermodules to be used in analysis, can be different than the real geo,
                                              // to be used at initialization of histograms
 
+  Bool_t             fMCECellClusFracCorrOn;  // Correct or not the weight of cells in cluster
+  Float_t            fMCECellClusFracCorrParam[4]; // Parameters for the function correcting the weight of the cells in the cluster
   
   AliCalorimeterUtils(              const AliCalorimeterUtils & cu) ; // cpy ctor
   AliCalorimeterUtils & operator = (const AliCalorimeterUtils & cu) ; // cpy assignment
   
-  ClassDef(AliCalorimeterUtils,16)
+  ClassDef(AliCalorimeterUtils,17)
 } ;
 
 
index 3db68756c6a04a4df399d91e2ce488d61e20218e..5b617be01c1922600ed8fe8f0e32f283e5f7bcb2 100644 (file)
@@ -69,7 +69,7 @@ AliESEEvtCut * EvtCuts(Int_t mc) {
 
 //______________________________________________________________________________
 void runLocalESE(
-                const int iMCtruth = 2
+                const int iMCtruth = 0
                 const char * addTaskString = ".x AddTaskNanoAODFilter.C(%d,1)" // 
                 )
 {
@@ -118,9 +118,13 @@ void runLocalESE(
   // start analysis
   // Always read the same file:
   TChain * chain = new TChain("aodTree");
-  chain->Add("./AliAOD.root");
+  
+  chain->Add("~//Work/ALICE/ANALYSIS/current/nAOD/input/LHC10h/AOD86/0356/AliAOD.root");
+  chain->Add("~//Work/ALICE/ANALYSIS/current/nAOD/input/LHC10h/AOD86/0407/AliAOD.root");
+  chain->Add("~//Work/ALICE/ANALYSIS/current/nAOD/input/LHC10h/AOD86/0398/AliAOD.root");
 
   Printf("Starting Analysis....");
+  chain->Print();
   mgr->StartAnalysis("local", chain,123456789);
 
 }
index 1e5d9b73a028186a9aecb6bcdcd772f675bcdc02..ce867c0f7caec32e75b43bcda53e1aa152773d8e 100644 (file)
@@ -29,8 +29,8 @@ AliAnalysisTaskEMCALClusterizeFast* AddTaskClusterizerFast(
   recparam->SetTimeMax(timeMax);
   recparam->SetTimeCut(timeCut);
 
-  if (clusterizer == AliEMCALRecParam::kClusterizerNxN) //MV: copied from tender. please check
-    recparam->SetNxM(3,3);
+  if (clusterizer == AliEMCALRecParam::kClusterizerNxN)
+    recparam->SetNxM(1,1); // -> (1,1) means 3x3!
 
   AliEMCALRecoUtils *recoUtils = new AliEMCALRecoUtils();
   recoUtils->SetNonLinearityFunction(0);
index ec594e609e57b4d3c41ff524eb4875fa9255a934..7ae885e8bb29be8a911b1d196936e230355ac998 100644 (file)
@@ -33,7 +33,7 @@ AliEMCALTenderSupply* ConfigEmcalTenderSupply(
   if (reclusterize) {
     params->SetClusterizerFlag(clusterizer);
     if (clusterizer == AliEMCALRecParam::kClusterizerNxN)
-      params->SetNxM(3,3);
+      params->SetNxM(1,1); // -> (1,1) means 3x3!
   }
   params->SetTimeMin(timeMin);
   params->SetTimeMax(timeMax);
index 4e27c1db493ae1130fc0ed3766a369731c3cd374..f9a7b70de67cde0258399cbdd31b777f24de0dde 100644 (file)
@@ -53,7 +53,7 @@ ClassImp(AliFlowEvent)
 
 //-----------------------------------------------------------------------
 AliFlowEvent::AliFlowEvent():
-  AliFlowEventSimple(), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -72,7 +72,7 @@ AliFlowEvent::AliFlowEvent():
 
 //-----------------------------------------------------------------------
 AliFlowEvent::AliFlowEvent(Int_t n):
-  AliFlowEventSimple(n), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(n), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -89,7 +89,7 @@ AliFlowEvent::AliFlowEvent(Int_t n):
 
 //-----------------------------------------------------------------------
 AliFlowEvent::AliFlowEvent(const AliFlowEvent& event):
-  AliFlowEventSimple(event), fApplyRecentering(event.fApplyRecentering), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(event), fApplyRecentering(event.fApplyRecentering), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // copy constructor 
     for(Int_t i(0); i < 9; i++) {
@@ -113,6 +113,7 @@ AliFlowEvent& AliFlowEvent::operator=(const AliFlowEvent& event)
   fApplyRecentering = event.fApplyRecentering; 
   fCachedRun = event.fCachedRun; 
   fVZEROcentralityBin = event.fVZEROcentralityBin;
+  fEvent = 0x0;                         // should never be copied
   for(Int_t i(0); i < 9; i++) {
       for(Int_t j(0); j < 2; j++) {
           for(Int_t k(0); k < 2; k++) {
@@ -197,7 +198,7 @@ void AliFlowEvent::SetMCReactionPlaneAngle(const AliMCEvent* mcEvent)
 AliFlowEvent::AliFlowEvent( const AliMCEvent* anInput,
                             const AliCFManager* rpCFManager,
                             const AliCFManager* poiCFManager):
-  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -254,7 +255,7 @@ AliFlowEvent::AliFlowEvent( const AliMCEvent* anInput,
 AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
                             const AliCFManager* rpCFManager,
                             const AliCFManager* poiCFManager ):
-  AliFlowEventSimple(20),  fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20),  fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -314,7 +315,7 @@ AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
 AliFlowEvent::AliFlowEvent( const AliAODEvent* anInput,
                             const AliCFManager* rpCFManager,
                             const AliCFManager* poiCFManager):
-  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -397,7 +398,7 @@ AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
                             KineSource anOption,
                             const AliCFManager* rpCFManager,
                             const AliCFManager* poiCFManager ):
-  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -495,7 +496,7 @@ AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
 AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
                            const AliMultiplicity* anInputTracklets,
                            const AliCFManager* poiCFManager ):
-  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -571,7 +572,7 @@ AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
 AliFlowEvent::AliFlowEvent( const AliESDEvent* esd,
                            const AliCFManager* poiCFManager,
                             Bool_t hybrid):
-  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -666,7 +667,7 @@ AliFlowEvent::AliFlowEvent( const AliESDEvent* esd,
 AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
                            const TH2F* anInputFMDhist,
                            const AliCFManager* poiCFManager ):
-  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(-1), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -907,7 +908,7 @@ AliFlowTrack* AliFlowEvent::ReuseTrack(Int_t i)
 //-----------------------------------------------------------------------
 AliFlowEvent::AliFlowEvent( AliFlowTrackCuts* rpCuts,
                             AliFlowTrackCuts* poiCuts ):
-  AliFlowEventSimple(20), fApplyRecentering(kFALSE), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(kFALSE), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -931,7 +932,7 @@ AliFlowEvent::AliFlowEvent( AliFlowTrackCuts* rpCuts,
 AliFlowEvent::AliFlowEvent( const AliESDEvent* anInput,
                            const AliESDPmdTrack *pmdtracks,
                            const AliCFManager* poiCFManager ):
-  AliFlowEventSimple(20), fApplyRecentering(kFALSE), fCachedRun(-1), fVZEROcentralityBin(-1)
+  AliFlowEventSimple(20), fApplyRecentering(kFALSE), fCachedRun(-1), fVZEROcentralityBin(-1), fEvent(0x0)
 {
     // constructor
     for(Int_t i(0); i < 9; i++) {
@@ -1049,12 +1050,13 @@ void AliFlowEvent::Get2Qsub(AliFlowVector* Qarray, Int_t n, TList *weightsList,
 {
   // get q vectors for the subevents. if no recentering is necessary, get the guy from the flow event simple
   AliFlowEventSimple::Get2Qsub(Qarray, n, weightsList, usePhiWeights, usePtWeights, useEtaWeights);
+  AliFlowVector vA = Qarray[0];
+  AliFlowVector vB = Qarray[1];
   // else get the recentering from the cached info
-  if (fApplyRecentering == 2010)        // 10h style recentering
+  if (fApplyRecentering == 2010)        // 10h style recentering, implemented for n=2 and n=3
   {     
     // first retrieve the q-vectors from the AliFlowEventSimple:: routine
-    AliFlowVector vA = Qarray[0];
-    AliFlowVector vB = Qarray[1];
     // extract the information form the current flow vectors
     Double_t Qxc(vA.X());       // IMPORTANT: user is responsible for the sign of eta
     Double_t Qyc(vA.Y());       // vzeroC has negative pseudorapidity and is taken as subevent A
@@ -1062,16 +1064,17 @@ void AliFlowEvent::Get2Qsub(AliFlowVector* Qarray, Int_t n, TList *weightsList,
     Double_t Qya(vB.Y());
     // init some values for the corrections
     
-    // values for vector a (VZEROA)
+    // default values for vector a (VZEROA)
     Double_t Qxamean(0);
     Double_t Qxarms(1);
     Double_t Qyamean(0);
     Double_t Qyarms(1);
-    // values for vector b (VZEROC)
+    // default values for vector b (VZEROC)
     Double_t Qxcmean(0);
     Double_t Qxcrms(1);
     Double_t Qycmean(0);
     Double_t Qycrms(1);        
+    // note that defaults are chosen such that for n!=2||n!=3 re-centering is a null-operation
     
     if( n == 2) {       // second order symmetry
         Qxamean = fMeanQ[fVZEROcentralityBin][1][0];
@@ -1094,6 +1097,7 @@ void AliFlowEvent::Get2Qsub(AliFlowVector* Qarray, Int_t n, TList *weightsList,
         Qycmean = fMeanQv3[fVZEROcentralityBin][0][1];
         Qycrms  = fWidthQv3[fVZEROcentralityBin][0][1];        
     }
+//    printf(" > n %i Qx %.2f Qxrms %.2f \n", n, Qxamean, Qxarms);
     // do the correction    
     Double_t QxaCor = (Qxa - Qxamean)/Qxarms;
     Double_t QyaCor = (Qya - Qyamean)/Qyarms;
@@ -1103,41 +1107,30 @@ void AliFlowEvent::Get2Qsub(AliFlowVector* Qarray, Int_t n, TList *weightsList,
     vA.Set(QxcCor, QycCor);
     vB.Set(QxaCor, QyaCor);
   } else if (fApplyRecentering == 2011) { // 11h style recentering
-    // in this case, the q-vectors are repaced by the ones from
-    // the event header
-     
-    // first retrieve the q-vectors from the AliFlowEventSimple:: routine
-    AliFlowVector vA = Qarray[0];
-    AliFlowVector vB = Qarray[1];
 
     Double_t QxaCor = 0.;
     Double_t QyaCor = 0.;
     Double_t QxcCor = 0.;
     Double_t QycCor = 0.;
 
-    // copy the new q-vectors from the cache
-    if(n == 2) {
-       QxaCor = fMeanQ[0][1][0]; 
-       QyaCor = fMeanQ[0][1][1];
-       QxcCor = fMeanQ[0][0][0];
-       QycCor = fMeanQ[0][0][1];
-    } else if (n == 3) {
-       QxaCor = fMeanQv3[0][1][0]; 
-       QyaCor = fMeanQv3[0][1][1];
-       QxcCor = fMeanQv3[0][0][0];
-       QycCor = fMeanQv3[0][0][1];
-    }
-    // set the new q-vectors (which in this case means REPLACING) 
-    vA.Set(QxcCor, QycCor);
-    vB.Set(QxaCor, QyaCor);
+    if(fEvent && fEvent->GetEventplane()) {
+      fEvent->GetEventplane()->CalculateVZEROEventPlane(fEvent, 8, n, QxaCor, QyaCor);
+      fEvent->GetEventplane()->CalculateVZEROEventPlane(fEvent, 9, n, QxcCor, QycCor);
+      // set the new q-vectors (which in this case means REPLACING) 
+      vA.Set(QxcCor, QycCor);
+      vB.Set(QxaCor, QyaCor);
+    } // if for some reason the info from the event header is not available, the AliFlowTrackCuts object
+      // has provided the equalized multiplicity info so this should still be relatively safe
   }
 }
 //_____________________________________________________________________________
 void AliFlowEvent::SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts) {
     // open calibration info, copied from AliAnalyisTaskVnV0.cxx
-    if(!cuts->GetEvent()) return; // coverity. we need to know the event to get the runnumber and centrlaity
+    fEvent = cuts->GetEvent();
+    if(!fEvent) return; // coverity. we need to know the event to get the runnumber and centrlaity
     // get the vzero centrality percentile (cc dependent calibration)
-    Float_t v0Centr(cuts->GetEvent()->GetCentrality()->GetCentralityPercentile("V0M"));
+    Float_t v0Centr(fEvent->GetCentrality()->GetCentralityPercentile("V0M"));
     if(v0Centr < 5) fVZEROcentralityBin = 0;
     else if(v0Centr < 10) fVZEROcentralityBin = 1;
     else if(v0Centr < 20) fVZEROcentralityBin = 2;
@@ -1150,22 +1143,14 @@ void AliFlowEvent::SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts) {
 
     // if this event is from the same run as the previous event
     // we can use the cached calibration values, no need to re-open the 
-    // aodb file
-    Int_t run(cuts->GetEvent()->GetRunNumber());
-    if(fCachedRun == run) {
-        // the runnumber did not change, no need to open the database again
-        // in case of 11h style recentering, update the q-sub vectors
-        if(fApplyRecentering == 2011) SetVZEROCalibrationForTrackCuts2011(cuts); 
-        return;
-    }
-    // set the chached run number
-    fCachedRun = run;
+    // aodb file, else cache the new run
+    Int_t run(fEvent->GetRunNumber());
+    if(fCachedRun == run) return;
+    else fCachedRun = run;
     
-    TString oadbfilename = "$ALICE_ROOT/OADB/PWGCF/VZERO/VZEROcalibEP.root";
-    TFile *foadb = TFile::Open(oadbfilename.Data());
-
+    TFile *foadb = TFile::Open("$ALICE_ROOT/OADB/PWGCF/VZERO/VZEROcalibEP.root");
     if(!foadb){
-       printf("OADB file %s cannot be opened\n",oadbfilename.Data());
+       printf("OADB file $ALICE_ROOT/OADB/PWGCF/VZERO/VZEROcalibEP.root cannot be opened, CALIBRATION FAILED !");
        return;
     }
 
@@ -1181,7 +1166,7 @@ void AliFlowEvent::SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts) {
         for(Int_t r(0); r < 176; r++) {
             if(run == runs11h[r]) {
                 printf(" > run has been identified as 11h < \n");
               if(cuts->GetVZEROgainEqualizationPerRing()) {
+ if(cuts->GetVZEROgainEqualizationPerRing()) {
                     // enable or disable rings through the weights, weight 1. is enabled, 0. is disabled
                     // start with the vzero c rings (segments 0 through 31)
                     (cuts->GetUseVZERORing(0)) ? cuts->SetVZEROCpol(0, 1.) : cuts->SetVZEROCpol(0, 0.);
@@ -1194,21 +1179,18 @@ void AliFlowEvent::SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts) {
                     (cuts->GetUseVZERORing(6)) ? cuts->SetVZEROApol(2, 1.) : cuts->SetVZEROApol(2, 0.);
                     (cuts->GetUseVZERORing(7)) ? cuts->SetVZEROApol(3, 1.) : cuts->SetVZEROApol(3, 0.);
                 } else {
-                    // else enable all rings
+                    // else enable all rings, which is also default
                     for(Int_t i(0); i < 4; i++) cuts->SetVZEROCpol(i, 1.);
                     for(Int_t i(0); i < 4; i++) cuts->SetVZEROApol(i, 1.);
                 }
-                // pass a NULL pointer to the track cuts object
-                // the NULL pointer will identify 11h runs
+                // pass a NULL pointer to the track cuts object, the NULL pointer will identify 11h runs
                 cuts->SetVZEROgainEqualisation(NULL);
-                // this will identify the recentering style that is required. flight might be changed if recenetering is disabled
                 fApplyRecentering = 2011;
-                SetVZEROCalibrationForTrackCuts2011(cuts); 
                 return; // the rest of the steps are not necessary
             }
         }
         // the run has not been identified as lhc11h data, so we assume a template calibration
-       printf("OADB object hMultVZEROBefCorr is not available for run %i (used run 137366)\n",run);
+       printf("OADB object hMultVZEROBefCorr is not available for run %i (used default run 137366)\n",run);
        run = 137366;
     }
     printf(" > run has been identified as 10h < \n");
@@ -1313,39 +1295,6 @@ void AliFlowEvent::SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts) {
     fApplyRecentering = 2010;
 }
 //_____________________________________________________________________________
-void AliFlowEvent::SetVZEROCalibrationForTrackCuts2011(AliFlowTrackCuts* cuts)
-{
-    // load the vzero q-sub vectors
-    if(!cuts->GetEvent() || !cuts->GetEvent()->GetEventplane()) return;       // coverity
-    Double_t qxEPa = 0, qyEPa = 0;
-    Double_t qxEPc = 0, qyEPc = 0;
-    Double_t qxEPa3 = 0, qyEPa3 = 0;
-    Double_t qxEPc3 = 0, qyEPc3 = 0;
-
-    // get the q-vectors from the header 
-    cuts->GetEvent()->GetEventplane()->CalculateVZEROEventPlane(cuts->GetEvent(), 8, 2, qxEPa, qyEPa);
-    cuts->GetEvent()->GetEventplane()->CalculateVZEROEventPlane(cuts->GetEvent(), 9, 2, qxEPc, qyEPc);
-    cuts->GetEvent()->GetEventplane()->CalculateVZEROEventPlane(cuts->GetEvent(), 8, 3, qxEPa3, qyEPa3);
-    cuts->GetEvent()->GetEventplane()->CalculateVZEROEventPlane(cuts->GetEvent(), 9, 3, qxEPc3, qyEPc3);
-    // store the values temporarily. this may seem
-    // inelegant, but we don't want to include
-    // aliflowtrackcuts or alivevnet in get2qsub
-
-    // qx and qy for vzero a, second harmonc
-    fMeanQ[0][1][0] = qxEPa;
-    fMeanQ[0][1][1] = qyEPa;
-    // qx and qx for vzero c, second harmonic
-    fMeanQ[0][0][0] = qxEPc;
-    fMeanQ[0][0][1] = qyEPc;
-    // qx and qy for vzero a, third harmonic
-    fMeanQv3[0][1][0] = qxEPa3;
-    fMeanQv3[0][1][1] = qyEPa3;
-    // qx and qy for vzero c, third harmonic
-    fMeanQv3[0][0][0] = qxEPc3;
-    fMeanQv3[0][0][1] = qyEPc3;
-} 
-//_____________________________________________________________________________
 
 void AliFlowEvent::ClearFast()
 {
index 92723c4a9576d3b0fd04cfa50510ce22e0276396..547056d86379f860984134795db9c667ff741a77 100644 (file)
@@ -85,7 +85,6 @@ public:
 
   virtual void Get2Qsub(AliFlowVector* Qarray, Int_t n = 2, TList *weightsList = 0x0, Bool_t usePhiWeights = 0x0, Bool_t usePtWeights = 0x0, Bool_t useEtaWeights = 0x0);
   void SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts);
-  void SetVZEROCalibrationForTrackCuts2011(AliFlowTrackCuts* cuts);
 
   virtual void ClearFast();
   virtual void ClearCachedRun();
@@ -96,14 +95,15 @@ protected:
 private:
   Int_t         fApplyRecentering;      // apply recentering of q-vectors? 2010 is 10h style, 2011 is 11h style
   Int_t         fCachedRun;             //! cached calibration info for vzero
-  Int_t         fVZEROcentralityBin;     //! centrality bin for the current event 
+  Int_t         fVZEROcentralityBin;    //! centrality bin for the current event 
   Float_t       fMeanQ[9][2][2];        //! recentering
   Float_t       fWidthQ[9][2][2];       //! recentering
   Float_t       fMeanQv3[9][2][2];      //! recentering
   Float_t       fWidthQv3[9][2][2];     //! recentering
+  AliVEvent*    fEvent;                 //! current event
 
 
-  ClassDef(AliFlowEvent,3)
+  ClassDef(AliFlowEvent,4)
 };
 
 #endif
index 8ff1b49421e57659686165b753d5c33a96e77746..0da9c8c78eb501a77b8ef8e22205a3d838bd2a89 100644 (file)
@@ -1178,7 +1178,13 @@ Bool_t AliFlowTrackCuts::PassesAODcuts(const AliAODTrack* track, Bool_t passedFi
   if (dedx < fMinimalTPCdedx) pass=kFALSE;
   Double_t time[9];
   track->GetIntegratedTimes(time);
+  if (fCutPID && (fParticleID!=AliPID::kUnknown)) //if kUnknown don't cut on PID
+    {
+      if (!PassesAODpidCut(track)) pass=kFALSE;
+    }
+
   if (fQA) {
+    // changed 04062014 used to be filled before possible PID cut
     Double_t momTPC = track->GetTPCmomentum();
     QAbefore( 1)->Fill(momTPC,dedx);
     QAbefore( 5)->Fill(track->Pt(),track->DCA());
@@ -1198,11 +1204,7 @@ Bool_t AliFlowTrackCuts::PassesAODcuts(const AliAODTrack* track, Bool_t passedFi
     if (pass) QAafter( 12)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kProton]));
   }
 
-  if (fCutPID && (fParticleID!=AliPID::kUnknown)) //if kUnknown don't cut on PID
-    {
-      if (!PassesAODpidCut(track)) pass=kFALSE;
-    }
-  
+
   return pass;
 }
 
@@ -1435,7 +1437,8 @@ AliFlowTrackCuts* AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts2011()
   cuts->SetPhiMin( 0 );
   cuts->SetPhiMax( TMath::TwoPi() );
   cuts->SetApplyRecentering(kTRUE);
-  return cuts;
+  cuts->SetVZEROgainEqualizationPerRing(kFALSE);
+ return cuts;
 }
 //-----------------------------------------------------------------------
 AliFlowTrackCuts* AliFlowTrackCuts::GetStandardGlobalTrackCuts2010()
@@ -2581,7 +2584,10 @@ Bool_t AliFlowTrackCuts::PassesESDpidCut(const AliESDtrack* track )
       if (!PassesNucleiSelection(track)) pass=kFALSE;
       break;
       //end part added by Natasha
-
+      
+    case kTPCTOFNsigma:
+      if (!PassesTPCTOFNsigmaCut(track)) pass = kFALSE;
+      break;
     default:
       printf("AliFlowTrackCuts::PassesCuts() this should never be called!\n");
       pass=kFALSE;
@@ -3434,6 +3440,27 @@ Bool_t AliFlowTrackCuts::PassesNucleiSelection(const AliESDtrack* track)
   return select;
 }
 // end part added by Natasha
+//-----------------------------------------------------------------------
+Bool_t AliFlowTrackCuts::PassesTPCTOFNsigmaCut(const AliAODTrack* track) 
+{
+    // do a simple combined cut on the n sigma from tpc and tof
+    // with information of the pid response object (needs pid response task)
+    // stub, not implemented yet
+    if(!track) return kFALSE;
+    return kFALSE;
+
+}
+//-----------------------------------------------------------------------------
+Bool_t AliFlowTrackCuts::PassesTPCTOFNsigmaCut(const AliESDtrack* track)
+{
+    // do a simple combined cut on the n sigma from tpc and tof
+    // with information of the pid response object (needs pid response task)
+    // stub, not implemented yet
+    if(!track) return kFALSE;
+    return kFALSE;
+
+}
+
 //-----------------------------------------------------------------------
 void AliFlowTrackCuts::SetPriors(Float_t centrCur){
  //set priors for the bayesian pid selection
@@ -4570,6 +4597,8 @@ const char* AliFlowTrackCuts::PIDsourceName(PIDsource s)
       return "TOFbetaSimple";
     case kTPCNuclei:
       return "TPCnuclei";
+    case kTPCTOFNsigma:
+      return "TPCTOFNsigma";
     default:
       return "NOPID";
   }
index bfedc49d4d6ac819ddd7b65395170c734d23c29c..d408185d61b11670f3dc71f1b1991e446b57fdec 100644 (file)
@@ -84,7 +84,8 @@ class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
                    kTPCdedx,      // asymmetric cuts of TPC dedx signal
                    kTOFbetaSimple, //simple TOF only cut
                    kTPCbayesian, //bayesian cutTPC
-                              kTPCNuclei    // added by Natasha for Nuclei
+                  kTPCNuclei,   // added by Natasha for Nuclei
+                   kTPCTOFNsigma // simple cut on combined tpc tof nsigma
                    };
 
   //setters (interface to AliESDtrackCuts)
@@ -312,6 +313,8 @@ class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
   // part added by F. Noferini
   Bool_t PassesTOFbayesianCut(const AliESDtrack* track); 
   Bool_t PassesNucleiSelection(const AliESDtrack* track);   // added by Natasha
+  Bool_t PassesTPCTOFNsigmaCut(const AliAODTrack* track); 
+  Bool_t PassesTPCTOFNsigmaCut(const AliESDtrack* track);
   Bool_t TPCTOFagree(const AliVTrack *track);
   // end part added by F. Noferini
 
index 08d2944e62bb6ff6ffbdc92248a3821d3d38352c..6bb9508486b44834cd80cb74b938ebc664d7567b 100644 (file)
@@ -203,9 +203,10 @@ void AddAnalysisTasks(Int_t merge){
       printf("Registering delta AOD file\n");
       mgr->RegisterExtraFile("AliAOD.Muons.root");
       mgr->RegisterExtraFile("AliAOD.Dimuons.root");
-      AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kTRUE,kTRUE,1100,1); // others
+      int muonMCMode=1; // 1 to keep all ancestors, whether or not we get something in the muon arm
+      AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kTRUE,kTRUE,1100,muonMCMode); // others
     } else {
-      AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kTRUE,kTRUE,1100,1); // others
+      AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kTRUE,kTRUE,1100,muonMCMode); // others
     }
     
     if ( 0 && VAR_USE_ITS_RECO ) /* 0 for the moment to get this macro running also with AliRoot <= .... */      
index 9d767ea329cc81a360fc226070b4568fa0545d46..2fff5e65e4cf9acd824137dc8a3ff9db0e761a5e 100644 (file)
@@ -54,20 +54,30 @@ void Config()
 #if defined(__CINT__)
   gSystem->Load("liblhapdf");      // Parton density functions
   gSystem->Load("libEGPythia6");   // TGenerator interface
-  gSystem->Load("libpythia6");     // Pythia 6.2
+  gSystem->Load("libpythia6");     // Pythia 6.2 (for decayer)
   gSystem->Load("libAliPythia6");  // ALICE specific implementations
   gSystem->Load("libgeant321");
-  
+
   if ( TString("VAR_GENERATOR").Contains("pythia8",TString::kIgnoreCase) )
   {
     std::cout << "Setting up Pythia8 required libraries and env. variables" << std::endl;
-    gSystem->Load("libpythia8.so");
-    gSystem->Load("libAliPythia8.so");
+    gSystem->Load("libpythia8");
+    gSystem->Load("libAliPythia8");
     VAR_PYTHIA8_INCLUDES
     VAR_PYTHIA8_SETENV
   }
+  
+  if ( TString("VAR_GENERATOR").Contains("pythia6",TString::kIgnoreCase) )
+  {
+    std::cout << "Setting up Pythia6 required env. variables" << std::endl;
+    VAR_PYTHIA6_INCLUDES
+    VAR_PYTHIA6_SETENV
+  }
+  
+
 #endif
 
+  
   new TGeant3TGeo("C++ Interface to Geant3");
 
   //=======================================================================
@@ -86,9 +96,15 @@ void Config()
       return;
     }
   rl->SetCompressionLevel(2);
-  rl->SetNumberOfEventsPerFile(20000);
+  rl->SetNumberOfEventsPerFile(5000);
   gAlice->SetRunLoader(rl);
   
+  if ( TString("VAR_TRIGGER_CONFIGURATION").Length() > 0 )
+  {
+    AliSimulation::Instance()->SetTriggerConfig("VAR_TRIGGER_CONFIGURATION");
+    cout<<"Trigger configuration is set to VAR_TRIGGER_CONFIGURATION" << std::endl;
+  }
+  
   //
   //=======================================================================
   // ************* STEERING parameters FOR ALICE SIMULATION **************
@@ -158,9 +174,21 @@ void Config()
   std::cout << "VAR_GENERATOR settings " << std::endl;
   gSystem->AddIncludePath("-I$ALICE_ROOT/include");
   gSystem->AddIncludePath("-I$ALICE_ROOT/EVGEN");
+  gSystem->AddIncludePath("-I$ALICE_ROOT/STEER/STEER");
   gROOT->LoadMacro("VAR_GENERATOR.C+");
   AliGenerator* gener = VAR_GENERATOR();
   
+  TString slibs = gSystem->GetLibraries();
+  TObjArray* olibs = slibs.Tokenize(" ");
+  TObjString* s;
+  TIter next(olibs);
+  std::cout << "List of libraries=" << std::endl;
+  while ( ( s = static_cast<TObjString*>(next())) )
+  {
+    std::cout << s->String().Data() << std::endl;
+  }
+  
+
   gener->SetOrigin(0., 0., 0.); // Taken from OCDB
 
   Float_t sigmax = 0.0025;
diff --git a/PWG/muondep/AccEffTemplates/GenJPsi8TeVParaSet.C b/PWG/muondep/AccEffTemplates/GenJPsi8TeVParaSet.C
new file mode 100644 (file)
index 0000000..43ad42c
--- /dev/null
@@ -0,0 +1,187 @@
+/**********************************************************************
+ Created on : 21/11/2013
+ Purpose    : pp 8 TeV paraset for JPsi
+ Author     : Indranil Das, IPN Orsay
+ Email      : indranil.das@cern.ch | indra.ehep@gmail.com
+**********************************************************************/
+
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include "TRandom.h"
+#include "AliGenParam.h"
+#include "AliGenMUONlib.h"
+#endif 
+
+//           generator functions
+//
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+Double_t  V2Zero_M( const Double_t* /*px*/, const Double_t */*dummy*/ )
+{
+
+  return 0.0;
+
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+Double_t YJpsiPPdummy_M(Double_t x, Double_t energy)
+{
+// J/Psi y
+// pp
+// from the fit of RHIC + LHC data, see arXiv:1103.2394
+//
+    x = x/TMath::Log(energy/3.097);
+    x = x*x;
+    Double_t y = TMath::Exp(-x/0.4/0.4/2);
+    if(x > 1) y=0;
+    return y;
+}
+
+//---------------------------------------------------------------------
+
+Double_t YJpsiPPpoly_M(Double_t x, Double_t energy)
+{
+// J/Psi y
+// pp
+// from the fit of RHIC + LHC data, see arXiv:1103.2394
+//
+    x = x/TMath::Log(energy/3.097);
+    x = x*x;
+    Double_t y = 1 - 6.9*x*x;
+    if(y < 0) y=0;
+    return y;
+}
+
+//---------------------------------------------------------------------
+
+Double_t YJpsiPP8000_M(const Double_t *px, const Double_t */*dummy*/)
+{
+// J/Psi y
+// pp 7 TeV
+//
+  return YJpsiPPdummy_M(*px, 8000);
+}
+
+//---------------------------------------------------------------------
+
+Double_t YJpsi_M(const Double_t *py, const Double_t */*dummy*/)
+{
+// J/psi y
+  const Double_t ky0 = 4.;
+  const Double_t kb=1.;
+  Double_t yj;
+  Double_t y=TMath::Abs(*py);
+  //
+  if (y < ky0)
+    yj=kb;
+  else
+    yj=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
+  return yj;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+Int_t IpJpsi_M(TRandom *)
+{
+// J/Psi composition
+    return 443;
+}
+
+//---------------------------------------------------------------------
+
+Int_t  IpMuon_M(TRandom* /*ran*/) {
+
+  //muon composition
+  // if (ran->Rndm() < 0.5 ) {
+  //   return 13;
+  // }
+  return 443;
+  
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+Double_t PtJpsiPPdummy_M(Double_t x, Double_t energy)
+{
+// J/Psi pT
+// pp
+// from the fit of RHIC, CDF & LHC data, see arXiv:1103.2394
+//
+  const Double_t kpt0 = 1.04*TMath::Power(energy,0.101);
+  const Double_t kxn  = 3.9;
+  //
+  Double_t pass1 = 1.+0.363*(x/kpt0)*(x/kpt0);
+  return x/TMath::Power(pass1,kxn);
+}
+
+//---------------------------------------------------------------------
+
+Double_t PtJpsiPP8000_M(const Double_t *px, const Double_t */*dummy*/)
+{
+// J/Psi pT
+// pp 7 TeV
+//
+  return PtJpsiPPdummy_M(*px,8000);
+}
+
+//---------------------------------------------------------------------
+
+Double_t PtJpsi_M( const Double_t *px, const Double_t */*dummy*/)
+{
+// J/Psi pT
+  const Double_t kpt0 = 4.;
+  const Double_t kxn  = 3.6;
+  Double_t x=*px;
+  //
+  Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
+  return x/TMath::Power(pass1,kxn);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+//           generators
+//
+AliGenerator* JPsi7TeV()
+{
+  printf("\nProcessing config setup : JPsi7TeV\n\n");
+  AliGenParam *jpsi7TeV = new AliGenParam(1, AliGenMUONlib::kJpsi,"pp 8");
+  jpsi7TeV->SetMomentumRange(0,999);
+  //jpsi7TeV->SetPtRange(0.,999.);
+  //jpsi7TeV->SetYRange(-4.2, -2.3);
+  jpsi7TeV->SetPtRange(0,50.);
+  jpsi7TeV->SetYRange(-4.5,-2.);
+  jpsi7TeV->SetPhiRange(0., 360.);
+  jpsi7TeV->SetCutOnChild(1);
+  jpsi7TeV->SetChildPhiRange(0.,360.);
+  jpsi7TeV->SetChildThetaRange(0.,180.);
+  jpsi7TeV->SetForceDecay(kDiMuon);
+  jpsi7TeV->SetTrackingFlag(1);
+  
+  return jpsi7TeV;
+}
+
+AliGenerator* GenJPsi8TeVParaSet()
+{
+  printf("\nProcessing config setup : JPsi8TeVParaSet1\n\n");
+  AliGenParam *genJpsi8TeV = new AliGenParam(1,-1, PtJpsiPP8000_M, YJpsiPP8000_M, V2Zero_M, IpJpsi_M);
+  genJpsi8TeV->SetMomentumRange(0,999);
+  genJpsi8TeV->SetPtRange(0,50.);
+  genJpsi8TeV->SetYRange(-4.5,-2.0);
+  genJpsi8TeV->SetPhiRange(0., 360.);
+  genJpsi8TeV->SetCutOnChild(1);
+  genJpsi8TeV->SetChildPhiRange(0.,360.);
+  genJpsi8TeV->SetChildThetaRange(0.0,180.0);
+  genJpsi8TeV->SetOrigin(0,0,0);
+  genJpsi8TeV->SetForceDecay(kDiMuon);
+  genJpsi8TeV->SetTrackingFlag(1);
+  //genJpsi8TeV->Init();
+
+  return genJpsi8TeV;
+}
diff --git a/PWG/muondep/AccEffTemplates/GenPythia6Diff.C b/PWG/muondep/AccEffTemplates/GenPythia6Diff.C
new file mode 100644 (file)
index 0000000..9e54b85
--- /dev/null
@@ -0,0 +1,2974 @@
+#if !defined(__CINT__) || defined(__MAKECINT__)
+
+/// !!!!!!!!!!!!!!!!!!
+///
+///      WARNING
+///
+/// !!!!!!!!!!!!!!!!!!
+///
+/// THIS IS A QUICK HACK IN ORDER TO TEST THE PYTHIA6 TUNED FOR DIFFRACTION
+///
+/// IT'S A MERE CUT & PASTE OF THE ORIGIGNAL ALIGENPYTHIA.H/.CXX (VERSION AROUND ALIROOT V5-04-REV-18
+/// WITH TRIVIAL ADDITIONS TO TREAT 8 TEV PP AS 7 TEV PP ...
+///
+/// IT'S NOT THE WAY TO DO IT ON A PERMANENT BASIS...
+///
+///
+
+#include "AliGenMC.h"
+#include "AliPythia.h"
+
+class AliPythia;
+class TParticle;
+class AliGenPythiaEventHeader;
+class AliGenEventHeader;
+class AliStack;
+class AliRunLoader;
+class TObjArray;
+
+class AliGenPythia6Diff : public AliGenMC
+{
+public:
+  
+  typedef enum {kFlavorSelection, kParentSelection, kHeavyFlavor} StackFillOpt_t;
+  typedef enum {kCountAll, kCountParents, kCountTrackables} CountMode_t;
+  typedef enum {kCluster, kCell} JetRecMode_t;
+  
+  AliGenPythia6Diff();
+  AliGenPythia6Diff(Int_t npart);
+  virtual ~AliGenPythia6Diff();
+  virtual void    Generate();
+  virtual void    Init();
+  // Range of events to be printed
+  virtual void    SetEventListRange(Int_t eventFirst=-1, Int_t eventLast=-1);
+  // Select process type
+  virtual void    SetProcess(Process_t proc = kPyCharm) {fProcess = proc;}
+  virtual void    SetTune(Int_t itune) {fItune = itune;}
+  
+  // Select structure function
+  virtual void    SetStrucFunc(StrucFunc_t func =  kCTEQ5L) {fStrucFunc = func;}
+  // Select pt of hard scattering
+  virtual void    SetPtHard(Float_t ptmin = 0, Float_t ptmax = 1.e10)
+       {fPtHardMin = ptmin; fPtHardMax = ptmax; }
+  // y of hard scattering
+  virtual void    SetYHard(Float_t ymin = -1.e10, Float_t ymax = 1.e10)
+       {fYHardMin = ymin; fYHardMax = ymax; }
+  // Set initial and final state gluon radiation
+  virtual void    SetGluonRadiation(Int_t iIn, Int_t iFin)
+       {fGinit = iIn; fGfinal = iFin;}
+  // Intrinsic kT
+  virtual void    SetPtKick(Float_t kt = 1.)
+       {fPtKick = kt;}
+  // Use the Pythia 6.3 new multiple interations scenario
+  virtual void    UseNewMultipleInteractionsScenario() {fNewMIS = kTRUE;}
+  // Switch off heavy flavors
+  virtual void    SwitchHFOff() {fHFoff = kTRUE;}
+  // Set centre of mass energy
+  virtual void    SetEnergyCMS(Float_t energy = 5500) {fEnergyCMS = energy;}
+  // Treat protons as inside nuclei with mass numbers a1 and a2
+  virtual void    SetNuclei(Int_t a1, Int_t a2, Int_t pdfset = 0);
+  // Set colliding nuclei ("p","n",...)
+  virtual void    SetCollisionSystem(TString projectile, TString target) { fProjectile = projectile; fTarget = target; }
+  virtual void    SetNuclearPDF(Int_t pdf) {fNucPdf = pdf;}
+  virtual void    SetUseNuclearPDF(Bool_t val) {fUseNuclearPDF = val;}
+  virtual void    SetUseLorentzBoost(Bool_t val) {fUseLorentzBoost = val;}
+  //
+  // Trigger options
+  //
+  // Energy range for jet trigger
+  virtual void    SetJetEtRange(Float_t etmin = 0., Float_t etmax = 1.e4)
+       {fEtMinJet = etmin; fEtMaxJet = etmax;}
+  // Eta range for jet trigger
+  virtual void    SetJetEtaRange(Float_t etamin = -20., Float_t etamax = 20.)
+       {fEtaMinJet = etamin; fEtaMaxJet = etamax;}
+  // Phi range for jet trigger
+  virtual void    SetJetPhiRange(Float_t phimin = 0., Float_t phimax = 360.)
+       {fPhiMinJet = TMath::Pi()*phimin/180.; fPhiMaxJet = TMath::Pi()*phimax/180.;}
+  // Jet reconstruction mode; default is cone algorithm
+  virtual void    SetJetReconstructionMode(Int_t mode = kCell) {fJetReconstruction = mode;}
+  // Eta range for gamma trigger
+  virtual void    SetGammaEtaRange(Float_t etamin = -20., Float_t etamax = 20.)
+       {fEtaMinGamma = etamin; fEtaMaxGamma = etamax;}
+  // Phi range for gamma trigger
+  virtual void    SetGammaPhiRange(Float_t phimin = 0., Float_t phimax = 360.)
+       {fPhiMinGamma = TMath::Pi()*phimin/180.; fPhiMaxGamma = TMath::Pi()*phimax/180.;}
+  
+  // Select events with fragmentation photon, decay photon, pi0 or eta going to PHOS or EMCAL and central barrel
+  virtual Bool_t TriggerOnSelectedParticles(Int_t np);
+  
+  virtual void  SetCheckPHOS         (Bool_t b) {fCheckPHOS    = b;}
+  virtual void  SetCheckEMCAL        (Bool_t b) {fCheckEMCAL   = b;}
+  virtual void  SetCheckBarrel       (Bool_t b) {fCheckBarrel  = b;}
+  
+  //virtual void  SetElectronInEMCAL   (Bool_t b) {fEleInEMCAL   = b;}
+  //virtual void  SetPhotonInPHOS      (Bool_t b) {fCheckPHOS    = b; fPhotonInCalo     = b;} // Not in use
+  
+  virtual void  SetFragPhotonInCalo  (Bool_t b) {                   fFragPhotonInCalo = b;}
+  virtual void  SetFragPhotonInBarrel(Bool_t b) {fCheckBarrel  = b; fFragPhotonInCalo = b;}
+  virtual void  SetFragPhotonInEMCAL (Bool_t b) {fCheckEMCAL   = b; fFragPhotonInCalo = b;}
+  virtual void  SetFragPhotonInPHOS  (Bool_t b) {fCheckPHOS    = b; fFragPhotonInCalo = b;}
+  
+  virtual void  SetHadronInCalo      (Bool_t b) {                   fHadronInCalo     = b;}
+  virtual void  SetHadronInBarrel    (Bool_t b) {fCheckBarrel  = b; fHadronInCalo     = b;}
+  virtual void  SetHadronInEMCAL     (Bool_t b) {fCheckEMCAL   = b; fHadronInCalo     = b;}
+  virtual void  SetHadronInPHOS      (Bool_t b) {fCheckPHOS    = b; fHadronInCalo     = b;}
+  
+  virtual void  SetElectronInCalo    (Bool_t b) {                   fEleInCalo        = b;}
+  virtual void  SetElectronInBarrel  (Bool_t b) {fCheckBarrel  = b; fEleInCalo        = b;}
+  virtual void  SetElectronInEMCAL   (Bool_t b) {fCheckEMCAL   = b; fEleInCalo        = b;}
+  virtual void  SetElectronInPHOS    (Bool_t b) {fCheckPHOS    = b; fEleInCalo        = b;}
+  
+  virtual void  SetDecayPhotonInCalo (Bool_t d)  {fDecayPhotonInCalo = d;}
+  virtual void  SetDecayPhotonInBarrel(Bool_t d) {fDecayPhotonInCalo = d; fCheckBarrel  = d;}
+  virtual void  SetDecayPhotonInEMCAL(Bool_t d)  {fDecayPhotonInCalo = d; fCheckEMCAL   = d;}
+  virtual void  SetDecayPhotonInPHOS (Bool_t d)  {fDecayPhotonInCalo = d; fCheckPHOS    = d;}
+  
+  virtual void  SetPi0InCalo         (Bool_t b, Bool_t f = kFALSE) {fPi0InCalo = b; fForceNeutralMeson2PhotonDecay = f;}
+  virtual void  SetPi0InBarrel       (Bool_t b, Bool_t f = kFALSE) {fPi0InCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckBarrel= b; }
+  virtual void  SetPi0InEMCAL        (Bool_t b, Bool_t f = kFALSE) {fPi0InCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckEMCAL = b; }
+  virtual void  SetPi0InPHOS         (Bool_t b, Bool_t f = kFALSE) {fPi0InCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckPHOS  = b; }
+  
+  virtual void  SetEtaInCalo         (Bool_t b, Bool_t f = kFALSE) {fEtaInCalo = b; fForceNeutralMeson2PhotonDecay = f;}
+  virtual void  SetEtaInBarrel       (Bool_t b, Bool_t f = kFALSE) {fEtaInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckBarrel= b; }
+  virtual void  SetEtaInEMCAL        (Bool_t b, Bool_t f = kFALSE) {fEtaInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckEMCAL = b; }
+  virtual void  SetEtaInPHOS         (Bool_t b, Bool_t f = kFALSE) {fEtaInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckPHOS  = b; }
+  
+  virtual void  SetPi0PhotonDecayInBarrel(Bool_t b, Bool_t f = kFALSE) {fPi0InCalo = b; fDecayPhotonInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckBarrel  = b; }
+  virtual void  SetPi0PhotonDecayInEMCAL (Bool_t b, Bool_t f = kFALSE) {fPi0InCalo = b; fDecayPhotonInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckEMCAL   = b; }
+  virtual void  SetPi0PhotonDecayInPHOS  (Bool_t b, Bool_t f = kFALSE) {fPi0InCalo = b; fDecayPhotonInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckPHOS    = b; }
+  
+  virtual void  SetEtaPhotonDecayInBarrel(Bool_t b, Bool_t f = kFALSE) {fEtaInCalo = b; fDecayPhotonInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckBarrel  = b; }
+  virtual void  SetEtaPhotonDecayInEMCAL (Bool_t b, Bool_t f = kFALSE) {fEtaInCalo = b; fDecayPhotonInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckEMCAL   = b; }
+  virtual void  SetEtaPhotonDecayInPHOS  (Bool_t b, Bool_t f = kFALSE) {fEtaInCalo = b; fDecayPhotonInCalo = b; fForceNeutralMeson2PhotonDecay = f; fCheckPHOS    = b; }
+  
+  
+  // Trigger on a minimum multiplicity
+  virtual void  SetTriggerChargedMultiplicity(Int_t multiplicity, Float_t etamax = 0, Float_t ptmin = -1.)
+  {fTriggerMultiplicity = multiplicity; fTriggerMultiplicityEta = etamax;
+    fTriggerMultiplicityPtMin = ptmin;}
+       
+  // Calorimeters acceptance
+  // Set Phi in degrees, and Eta coverage, should not be negative
+  virtual void  SetBarrelAcceptance(Float_t deta) {fTriggerEta = deta ;}
+  virtual void  SetEMCALAcceptance (Float_t phimin, Float_t phimax, Float_t deta) {fEMCALMinPhi = phimin ; fEMCALMaxPhi = phimax ; fEMCALEta = deta ; }
+  virtual void  SetPHOSAcceptance  (Float_t phimin, Float_t phimax, Float_t deta) {fPHOSMinPhi  = phimin ; fPHOSMaxPhi  = phimax ; fPHOSEta  = deta ; }
+  virtual void  SetRotateParticleInPHOSeta(Bool_t b) {fCheckPHOSeta = b;}
+  
+  virtual void  SetTriggerParticleMinPt(Float_t pt) {fTriggerParticleMinPt = pt;}
+  //    virtual void  SetPhotonMinPt(Float_t pt)          {fPhotonMinPt = pt;}
+  //    virtual void  SetElectronMinPt(Float_t pt)        {fElectronMinPt = pt;}
+  // Trigger and rotate event
+  void RotatePhi(Bool_t& okdd);
+  
+  // Trigger on a single particle (not related to calorimeter trigger above)
+  virtual void    SetTriggerParticle(Int_t particle = 0, Float_t etamax = 0.9, Float_t ptmin = -1, Float_t ptmax = 1000)
+       {fTriggerParticle = particle; fTriggerEta = etamax; fTriggerMinPt = ptmin; fTriggerMaxPt = ptmax;}
+  
+  //
+  // Heavy flavor options
+  //
+  // Set option for feed down from higher family
+  virtual void SetFeedDownHigherFamily(Bool_t opt) {
+    fFeedDownOpt = opt;
+  }
+  // Set option for selecting particles kept in stack according to flavor
+  // or to parent selection
+  virtual void SetStackFillOpt(StackFillOpt_t opt) {
+    fStackFillOpt = opt;
+  }
+  // Set fragmentation option
+  virtual void SetFragmentation(Bool_t opt) {
+    fFragmentation = opt;
+  }
+  // Set counting mode
+  virtual void SetCountMode(CountMode_t mode) {
+    fCountMode = mode;
+  }
+  //
+  // Quenching
+  //
+  // Set quenching mode 0 = no, 1 = AM, 2 = IL,  3 = NA, 4 = ACS
+  virtual void SetQuench(Int_t flag = 0) {fQuench = flag;}
+  // Set transport coefficient.
+  void SetQhat(Float_t qhat) {fQhat = qhat;}
+  //Set initial medium length.
+  void SetLength(Float_t length) {fLength = length;}
+  //set parameters for pyquen afterburner
+  virtual void SetPyquenPar(Float_t t0=1., Float_t tau0=0.1, Int_t nf=0,Int_t iengl=0, Int_t iangl=3)
+  {fpyquenT = t0; fpyquenTau = tau0; fpyquenNf=nf;fpyquenEloss=iengl;fpyquenAngle=iangl;}
+  virtual void SetHadronisation(Int_t flag = 1) {fHadronisation = flag;}
+  virtual void SetPatchOmegaDalitz(Int_t flag = 1) {fPatchOmegaDalitz = flag;}
+  virtual void SetReadFromFile(const Text_t *filname) {fkFileName = filname;  fReadFromFile = 1;}
+  virtual void SetReadLHEF(const Text_t *filename) {fkNameLHEF = filename; fReadLHEF = 1;}
+  
+  //
+  // Pile-up
+  //
+  // Get interaction rate for pileup studies
+  virtual void    SetInteractionRate(Float_t rate,Float_t timewindow = 90.e-6);
+  virtual Float_t GetInteractionRate() const {return fInteractionRate;}
+  // get cross section of process
+  virtual Float_t GetXsection() const {return fXsection;}
+  // get triggered jets
+  void GetJets(Int_t& njets, Int_t& ntrig, Float_t jets[4][10]);
+//  void RecJetsUA1(Int_t& njets, Float_t jets[4][50]);
+  void SetPycellParameters(Float_t etamax = 2., Int_t neta = 274, Int_t nphi = 432,
+                           Float_t thresh = 0., Float_t etseed = 4.,
+                           Float_t minet = 10., Float_t r = 1.);
+  
+  void LoadEvent(AliStack* stack, Int_t flag = 0, Int_t reHadr = 0);
+  void LoadEvent(const TObjArray* stack, Int_t flag = 0, Int_t reHadr = 0);
+  // Getters
+  virtual Process_t    GetProcess() const {return fProcess;}
+  virtual StrucFunc_t  GetStrucFunc() const {return fStrucFunc;}
+  virtual void         GetPtHard(Float_t& ptmin, Float_t& ptmax) const
+       {ptmin = fPtHardMin; ptmax = fPtHardMax;}
+  virtual void         GetNuclei(Int_t&  a1, Int_t& a2) const
+       {a1 = fAProjectile; a2 = fATarget;}
+  virtual void         GetJetEtRange(Float_t& etamin, Float_t& etamax) const
+       {etamin = fEtaMinJet; etamax = fEtaMaxJet;}
+  virtual void         GetJetPhiRange(Float_t& phimin, Float_t& phimax) const
+       {phimin = fPhiMinJet*180./TMath::Pi(); phimax = fPhiMaxJet*180/TMath::Pi();}
+  virtual void         GetGammaEtaRange(Float_t& etamin, Float_t& etamax) const
+       {etamin = fEtaMinGamma; etamax = fEtaMaxGamma;}
+  virtual void         GetGammaPhiRange(Float_t& phimin, Float_t& phimax) const
+       {phimin = fPhiMinGamma*180./TMath::Pi(); phimax = fPhiMaxGamma*180./TMath::Pi();}
+  //
+  Bool_t CheckDetectorAcceptance(Float_t phi, Float_t eta, Int_t iparticle);
+  Bool_t IsInEMCAL (Float_t phi, Float_t eta) const;
+  Bool_t IsInPHOS  (Float_t phi, Float_t eta, Int_t iparticle) ;
+  Bool_t IsInBarrel(Float_t eta) const;
+  Bool_t IsFromHeavyFlavor(Int_t ipart);
+  //
+  virtual void FinishRun();
+  Bool_t CheckTrigger(const TParticle* jet1, const TParticle* jet2);
+  //Used in some processes to selected child properties
+  Bool_t CheckKinematicsOnChild();
+  void     GetSubEventTime();
+  
+  void SetTuneForDiff(Bool_t a=kTRUE) {fkTuneForDiff=a;}
+  AliDecayer * GetDecayer(){return fDecayer;}
+  
+protected:
+  // adjust the weight from kinematic cuts
+  void     AdjustWeights() const;
+  Int_t    GenerateMB();
+  void     MakeHeader();
+  void     GeneratePileup();
+  Process_t   fProcess;           //Process type
+  Int_t       fItune;             // Pythia tune > 6.4
+  StrucFunc_t fStrucFunc;         //Structure Function
+  Float_t     fKineBias;          //!Bias from kinematic selection
+  Int_t       fTrials;            //!Number of trials for current event
+  Int_t       fTrialsRun;         //!Number of trials for run
+  Float_t     fQ;                 //Mean Q
+  Float_t     fX1;                //Mean x1
+  Float_t     fX2;                //Mean x2
+  Float_t     fEventTime;         //Time of the subevent
+  Float_t     fInteractionRate;   //Interaction rate (set by user)
+  Float_t     fTimeWindow;        //Time window for pileup events (set by user)
+  Int_t       fCurSubEvent;       //Index of the current sub-event
+  TArrayF     *fEventsTime;       //Subevents time for pileup
+  Int_t       fNev;               //Number of events
+  Int_t       fFlavorSelect;      //Heavy Flavor Selection
+  Float_t     fXsection;          //Cross-section
+  AliPythia   *fPythia;           //!Pythia
+  Float_t     fPtHardMin;         //lower pT-hard cut
+  Float_t     fPtHardMax;         //higher pT-hard cut
+  Float_t     fYHardMin;          //lower  y-hard cut
+  Float_t     fYHardMax;          //higher y-hard cut
+  Int_t       fGinit;             //initial state gluon radiation
+  Int_t       fGfinal;            //final state gluon radiation
+  Int_t       fHadronisation;     //hadronisation
+  Bool_t      fPatchOmegaDalitz;  //flag for omega dalitz decay patch
+  Int_t       fNpartons;          //Number of partons before hadronisation
+  Int_t       fReadFromFile;      //read partons from file
+  Int_t       fReadLHEF;          //read lhef file
+  Int_t       fQuench;            //Flag for quenching
+  Float_t     fQhat;              //Transport coefficient (GeV^2/fm)
+  Float_t     fLength;            //Medium length (fm)
+  Float_t     fpyquenT;           //Pyquen initial temperature
+  Float_t     fpyquenTau;         //Pyquen initial proper time
+  Int_t       fpyquenNf;          //Pyquen number of flavours into the game
+  Int_t       fpyquenEloss;       //Pyquen type of energy loss
+  Int_t       fpyquenAngle;       //Pyquen radiation angle for gluons
+  Float_t     fImpact;            //Impact parameter for quenching simulation (q-pythia)
+  Float_t     fPtKick;            //Transverse momentum kick
+  Bool_t      fFullEvent;         //!Write Full event if true
+  AliDecayer  *fDecayer;          //!Pointer to the decayer instance
+  Int_t       fDebugEventFirst;   //!First event to debug
+  Int_t       fDebugEventLast;    //!Last  event to debug
+  Float_t     fEtMinJet;          //Minimum et of triggered Jet
+  Float_t     fEtMaxJet;          //Maximum et of triggered Jet
+  Float_t     fEtaMinJet;         //Minimum eta of triggered Jet
+  Float_t     fEtaMaxJet;         //Maximum eta of triggered Jet
+  Float_t     fPhiMinJet;         //Minimum phi of triggered Jet
+  Float_t     fPhiMaxJet;         //Maximum phi of triggered Jet
+  Int_t       fJetReconstruction; //Jet Reconstruction mode
+  Float_t     fEtaMinGamma;       // Minimum eta of triggered gamma
+  Float_t     fEtaMaxGamma;       // Maximum eta of triggered gamma
+  Float_t     fPhiMinGamma;       // Minimum phi of triggered gamma
+  Float_t     fPhiMaxGamma;       // Maximum phi of triggered gamma
+  Float_t     fPycellEtaMax;      // Max. eta for Pycell
+  Int_t       fPycellNEta;        // Number of eta bins for Pycell
+  Int_t       fPycellNPhi;        // Number of phi bins for Pycell
+  Float_t      fPycellThreshold;   // Pycell threshold
+  Float_t      fPycellEtSeed;      // Pycell seed
+  Float_t      fPycellMinEtJet;    // Pycell min. jet et
+  Float_t      fPycellMaxRadius;   // Pycell cone radius
+  StackFillOpt_t fStackFillOpt;   // Stack filling with all particles with
+  // that flavour or only with selected
+  // parents and their decays
+  Bool_t fFeedDownOpt;            // Option to set feed down from higher
+  // quark families (e.g. b->c)
+  Bool_t  fFragmentation;         // Option to activate fragmentation by Pythia
+  Bool_t  fSetNuclei;             // Flag indicating that SetNuclei has been called
+  Bool_t  fUseNuclearPDF;         // flag if nuclear pdf should be applied
+  Bool_t  fUseLorentzBoost;       // flag if lorentz boost should be applied
+  Bool_t  fNewMIS;                // Flag for the new multipple interactions scenario
+  Bool_t  fHFoff;                 // Flag for switching heafy flavor production off
+  Int_t   fNucPdf;                // Nuclear pdf 0: EKS98 1: EPS08
+  Int_t   fTriggerParticle;       // Trigger on this particle ...
+  Float_t fTriggerEta;            // .. within |eta| < fTriggerEta
+  Float_t fTriggerMinPt;          // .. within pt > fTriggerMinPt
+  Float_t fTriggerMaxPt;          // .. within pt < fTriggerMaxPt
+  Int_t       fTriggerMultiplicity;       // Trigger on events with a minimum charged multiplicity
+  Float_t     fTriggerMultiplicityEta;    // in a given eta range
+  Float_t     fTriggerMultiplicityPtMin;  // above this pT
+  CountMode_t fCountMode;         // Options for counting when the event will be finished.
+  // fCountMode = kCountAll         --> All particles that end up in the
+  //                                    stack are counted
+  // fCountMode = kCountParents     --> Only selected parents are counted
+  // fCountMode = kCountTrackabless --> Only particles flagged for tracking
+  //                                     are counted
+  //
+  //
+  
+  AliGenPythiaEventHeader* fHeader;  //! Event header
+  AliRunLoader*            fRL;      //! Run Loader
+  const Text_t* fkFileName;          //! Name of file to read from
+  const Text_t* fkNameLHEF;          //! Name of lhef file to read from
+  Bool_t fFragPhotonInCalo; // Option to ask for Fragmentation Photon in calorimeters acceptance
+  Bool_t fHadronInCalo;     // Option to ask for hadron (not pi0) in calorimeters acceptance
+  Bool_t fPi0InCalo;        // Option to ask for Pi0 in calorimeters acceptance
+  Bool_t fEtaInCalo;        // Option to ask for Eta in calorimeters acceptance
+  Bool_t fPhotonInCalo;     // Option to ask for Photon in calorimeter acceptance (not in use)
+  Bool_t fDecayPhotonInCalo;// Option to ask for Decay Photon in calorimeter acceptance
+  Bool_t fForceNeutralMeson2PhotonDecay; // Option to ask for Pi0/Eta in calorimeters acceptance when decay into 2 photons
+  Bool_t fEleInCalo;        // Option to ask for Electron in EMCAL acceptance
+  Bool_t fEleInEMCAL;       // Option to ask for Electron in EMCAL acceptance (not in use)
+  Bool_t fCheckBarrel;      // Option to ask for FragPhoton or Pi0 or Eta or gamma decays in central barrel acceptance
+  Bool_t fCheckEMCAL;       // Option to ask for FragPhoton or Pi0 or Eta or gamma decays in calorimeters EMCAL acceptance
+  Bool_t fCheckPHOS;        // Option to ask for FragPhoton or Pi0 or Eta or gamma decays in calorimeters PHOS acceptance
+  Bool_t fCheckPHOSeta;     // Option to ask for rotate event particles in phi to have in PHOS acceptance a requested particle that previously had the good eta
+  Int_t  fPHOSRotateCandidate; // Internal member to select the particle candidate to trigger the event phi rotation, to put it in PHOS phi acceptance
+  Float_t fTriggerParticleMinPt; // Minimum momentum of Fragmentation Photon or Pi0 or other hadron
+  Float_t fPhotonMinPt;          // Minimum momentum of Photon  (not in use)
+  Float_t fElectronMinPt;        // Minimum momentum of Electron (not in use)
+  //Calorimeters eta-phi acceptance
+  Float_t fPHOSMinPhi;           // Minimum phi PHOS, degrees
+  Float_t fPHOSMaxPhi;           // Maximum phi PHOS, degrees
+  Float_t fPHOSEta;              // Minimum eta PHOS, coverage delta eta
+  Float_t fEMCALMinPhi;          // Minimum phi EMCAL, degrees
+  Float_t fEMCALMaxPhi;          // Maximum phi EMCAL, degrees
+  Float_t fEMCALEta;             // Maximum eta EMCAL, coverage delta eta
+  
+  Bool_t fkTuneForDiff;    // Pythia tune
+  Int_t  fProcDiff;
+private:
+  AliGenPythia6Diff(const AliGenPythia6Diff &Pythia);
+  AliGenPythia6Diff & operator=(const AliGenPythia6Diff & rhs);
+  
+  
+  Bool_t CheckDiffraction();
+  Bool_t GetWeightsDiffraction(Double_t M, Double_t &Mmin, Double_t &Mmax,
+                               Double_t &wSD, Double_t &wDD, Double_t &wND);
+  
+  ClassDef(AliGenPythia6Diff, 14) // AliGenerator interface to Pythia
+};
+
+#endif
+
+#include <TClonesArray.h>
+#include <TDatabasePDG.h>
+#include <TParticle.h>
+#include <TPDGCode.h>
+#include <TObjArray.h>
+#include <TSystem.h>
+#include <TTree.h>
+#include "AliConst.h"
+#include "AliDecayerPythia.h"
+#include "AliFastGlauber.h"
+#include "AliHeader.h"
+#include "AliGenPythiaEventHeader.h"
+#include "AliPythia.h"
+#include "AliPythiaRndm.h"
+#include "AliRun.h"
+#include "AliStack.h"
+#include "AliRunLoader.h"
+#include "AliMC.h"
+#include "AliLog.h"
+#include "PyquenCommon.h"
+
+ClassImp(AliGenPythia6Diff)
+
+
+AliGenPythia6Diff::AliGenPythia6Diff():
+AliGenMC(),
+fProcess(kPyCharm),
+fItune(-1),
+fStrucFunc(kCTEQ5L),
+fKineBias(0.),
+fTrials(0),
+fTrialsRun(0),
+fQ(0.),
+fX1(0.),
+fX2(0.),
+fEventTime(0.),
+fInteractionRate(0.),
+fTimeWindow(0.),
+fCurSubEvent(0),
+fEventsTime(0),
+fNev(0),
+fFlavorSelect(0),
+fXsection(0.),
+fPythia(0),
+fPtHardMin(0.),
+fPtHardMax(1.e4),
+fYHardMin(-1.e10),
+fYHardMax(1.e10),
+fGinit(1),
+fGfinal(1),
+fHadronisation(1),
+fPatchOmegaDalitz(0),
+fNpartons(0),
+fReadFromFile(0),
+fReadLHEF(0),
+fQuench(0),
+fQhat(0.),
+fLength(0.),
+fpyquenT(1.),
+fpyquenTau(0.1),
+fpyquenNf(0),
+fpyquenEloss(0),
+fpyquenAngle(0),
+fImpact(0.),
+fPtKick(1.),
+fFullEvent(kTRUE),
+fDecayer(new AliDecayerPythia()),
+fDebugEventFirst(-1),
+fDebugEventLast(-1),
+fEtMinJet(0.),
+fEtMaxJet(1.e4),
+fEtaMinJet(-20.),
+fEtaMaxJet(20.),
+fPhiMinJet(0.),
+fPhiMaxJet(2.* TMath::Pi()),
+fJetReconstruction(kCell),
+fEtaMinGamma(-20.),
+fEtaMaxGamma(20.),
+fPhiMinGamma(0.),
+fPhiMaxGamma(2. * TMath::Pi()),
+fPycellEtaMax(2.),
+fPycellNEta(274),
+fPycellNPhi(432),
+fPycellThreshold(0.),
+fPycellEtSeed(4.),
+fPycellMinEtJet(10.),
+fPycellMaxRadius(1.),
+fStackFillOpt(kFlavorSelection),
+fFeedDownOpt(kTRUE),
+fFragmentation(kTRUE),
+fSetNuclei(kFALSE),
+fUseNuclearPDF(kFALSE),
+fUseLorentzBoost(kTRUE),
+fNewMIS(kFALSE),
+fHFoff(kFALSE),
+fNucPdf(0),
+fTriggerParticle(0),
+fTriggerEta(0.9),
+fTriggerMinPt(-1),
+fTriggerMaxPt(1000),
+fTriggerMultiplicity(0),
+fTriggerMultiplicityEta(0),
+fTriggerMultiplicityPtMin(0),
+fCountMode(kCountAll),
+fHeader(0),
+fRL(0),
+fkFileName(0),
+fkNameLHEF(0),
+fFragPhotonInCalo(kFALSE),
+fHadronInCalo(kFALSE) ,
+fPi0InCalo(kFALSE) ,
+fEtaInCalo(kFALSE) ,
+fPhotonInCalo(kFALSE), // not in use
+fDecayPhotonInCalo(kFALSE),
+fForceNeutralMeson2PhotonDecay(kFALSE),
+fEleInCalo(kFALSE),
+fEleInEMCAL(kFALSE), // not in use
+fCheckBarrel(kFALSE),
+fCheckEMCAL(kFALSE),
+fCheckPHOS(kFALSE),
+fCheckPHOSeta(kFALSE),
+fPHOSRotateCandidate(-1),
+fTriggerParticleMinPt(0),
+fPhotonMinPt(0), // not in use
+fElectronMinPt(0), // not in use
+fPHOSMinPhi(219.),
+fPHOSMaxPhi(321.),
+fPHOSEta(0.13),
+fEMCALMinPhi(79.),
+fEMCALMaxPhi(191.),
+fEMCALEta(0.71),
+fkTuneForDiff(0),
+fProcDiff(0)
+{
+  // Default Constructor
+  fEnergyCMS = 5500.;
+  if (!AliPythiaRndm::GetPythiaRandom())
+    AliPythiaRndm::SetPythiaRandom(GetRandom());
+}
+
+AliGenPythia6Diff::AliGenPythia6Diff(Int_t npart)
+:AliGenMC(npart),
+fProcess(kPyCharm),
+fItune(-1),
+fStrucFunc(kCTEQ5L),
+fKineBias(0.),
+fTrials(0),
+fTrialsRun(0),
+fQ(0.),
+fX1(0.),
+fX2(0.),
+fEventTime(0.),
+fInteractionRate(0.),
+fTimeWindow(0.),
+fCurSubEvent(0),
+fEventsTime(0),
+fNev(0),
+fFlavorSelect(0),
+fXsection(0.),
+fPythia(0),
+fPtHardMin(0.),
+fPtHardMax(1.e4),
+fYHardMin(-1.e10),
+fYHardMax(1.e10),
+fGinit(kTRUE),
+fGfinal(kTRUE),
+fHadronisation(kTRUE),
+fPatchOmegaDalitz(0),
+fNpartons(0),
+fReadFromFile(kFALSE),
+fReadLHEF(0),
+fQuench(kFALSE),
+fQhat(0.),
+fLength(0.),
+fpyquenT(1.),
+fpyquenTau(0.1),
+fpyquenNf(0),
+fpyquenEloss(0),
+fpyquenAngle(0),
+fImpact(0.),
+fPtKick(1.),
+fFullEvent(kTRUE),
+fDecayer(new AliDecayerPythia()),
+fDebugEventFirst(-1),
+fDebugEventLast(-1),
+fEtMinJet(0.),
+fEtMaxJet(1.e4),
+fEtaMinJet(-20.),
+fEtaMaxJet(20.),
+fPhiMinJet(0.),
+fPhiMaxJet(2.* TMath::Pi()),
+fJetReconstruction(kCell),
+fEtaMinGamma(-20.),
+fEtaMaxGamma(20.),
+fPhiMinGamma(0.),
+fPhiMaxGamma(2. * TMath::Pi()),
+fPycellEtaMax(2.),
+fPycellNEta(274),
+fPycellNPhi(432),
+fPycellThreshold(0.),
+fPycellEtSeed(4.),
+fPycellMinEtJet(10.),
+fPycellMaxRadius(1.),
+fStackFillOpt(kFlavorSelection),
+fFeedDownOpt(kTRUE),
+fFragmentation(kTRUE),
+fSetNuclei(kFALSE),
+fUseNuclearPDF(kFALSE),
+fUseLorentzBoost(kTRUE),
+fNewMIS(kFALSE),
+fHFoff(kFALSE),
+fNucPdf(0),
+fTriggerParticle(0),
+fTriggerEta(0.9),
+fTriggerMinPt(-1),
+fTriggerMaxPt(1000),
+fTriggerMultiplicity(0),
+fTriggerMultiplicityEta(0),
+fTriggerMultiplicityPtMin(0),
+fCountMode(kCountAll),
+fHeader(0),
+fRL(0),
+fkFileName(0),
+fkNameLHEF(0),
+fFragPhotonInCalo(kFALSE),
+fHadronInCalo(kFALSE) ,
+fPi0InCalo(kFALSE) ,
+fEtaInCalo(kFALSE) ,
+fPhotonInCalo(kFALSE), // not in use
+fDecayPhotonInCalo(kFALSE),
+fForceNeutralMeson2PhotonDecay(kFALSE),
+fEleInCalo(kFALSE),
+fEleInEMCAL(kFALSE), // not in use
+fCheckBarrel(kFALSE),
+fCheckEMCAL(kFALSE),
+fCheckPHOS(kFALSE),
+fCheckPHOSeta(kFALSE),
+fPHOSRotateCandidate(-1),
+fTriggerParticleMinPt(0),
+fPhotonMinPt(0), // not in use
+fElectronMinPt(0), // not in use
+fPHOSMinPhi(219.),
+fPHOSMaxPhi(321.),
+fPHOSEta(0.13),
+fEMCALMinPhi(79.),
+fEMCALMaxPhi(191.),
+fEMCALEta(0.71),
+fkTuneForDiff(0),
+fProcDiff(0)
+{
+  // default charm production at 5. 5 TeV
+  // semimuonic decay
+  // structure function GRVHO
+  //
+  fEnergyCMS = 5500.;
+  fName = "Pythia";
+  fTitle= "Particle Generator using PYTHIA";
+  SetForceDecay();
+  // Set random number generator
+  if (!AliPythiaRndm::GetPythiaRandom())
+    AliPythiaRndm::SetPythiaRandom(GetRandom());
+}
+
+AliGenPythia6Diff::~AliGenPythia6Diff()
+{
+  // Destructor
+  if(fEventsTime) delete fEventsTime;
+}
+
+void AliGenPythia6Diff::SetInteractionRate(Float_t rate,Float_t timewindow)
+{
+  // Generate pileup using user specified rate
+  fInteractionRate = rate;
+  fTimeWindow = timewindow;
+  GeneratePileup();
+}
+
+void AliGenPythia6Diff::GeneratePileup()
+{
+  // Generate sub events time for pileup
+  fEventsTime = 0;
+  if(fInteractionRate == 0.) {
+    Warning("GeneratePileup","Zero interaction specified. Skipping pileup generation.\n");
+    return;
+  }
+  
+  Int_t npart = NumberParticles();
+  if(npart < 0) {
+    Warning("GeneratePileup","Negative number of particles. Skipping pileup generation.\n");
+    return;
+  }
+  
+  if(fEventsTime) delete fEventsTime;
+  fEventsTime = new TArrayF(npart);
+  TArrayF &array = *fEventsTime;
+  for(Int_t ipart = 0; ipart < npart; ipart++)
+    array[ipart] = 0.;
+  
+  Float_t eventtime = 0.;
+  while(1)
+  {
+    eventtime += (AliPythiaRndm::GetPythiaRandom())->Exp(1./fInteractionRate);
+    if(eventtime > fTimeWindow) break;
+    array.Set(array.GetSize()+1);
+    array[array.GetSize()-1] = eventtime;
+  }
+  
+  eventtime = 0.;
+  while(1)
+  {
+    eventtime -= (AliPythiaRndm::GetPythiaRandom())->Exp(1./fInteractionRate);
+    if(TMath::Abs(eventtime) > fTimeWindow) break;
+    array.Set(array.GetSize()+1);
+    array[array.GetSize()-1] = eventtime;
+  }
+  
+  SetNumberParticles(fEventsTime->GetSize());
+}
+
+void AliGenPythia6Diff::SetPycellParameters(Float_t etamax, Int_t neta, Int_t nphi,
+                                            Float_t thresh, Float_t etseed, Float_t minet, Float_t r)
+{
+  // Set pycell parameters
+  fPycellEtaMax    =  etamax;
+  fPycellNEta      =  neta;
+  fPycellNPhi      =  nphi;
+  fPycellThreshold =  thresh;
+  fPycellEtSeed    =  etseed;
+  fPycellMinEtJet  =  minet;
+  fPycellMaxRadius =  r;
+}
+
+
+
+void AliGenPythia6Diff::SetEventListRange(Int_t eventFirst, Int_t eventLast)
+{
+  // Set a range of event numbers, for which a table
+  // of generated particle will be printed
+  fDebugEventFirst = eventFirst;
+  fDebugEventLast  = eventLast;
+  if (fDebugEventLast==-1) fDebugEventLast=fDebugEventFirst;
+}
+
+void AliGenPythia6Diff::Init()
+{
+  // Initialisation
+  
+  SetMC(AliPythia::Instance());
+  fPythia=(AliPythia*) fMCEvGen;
+  
+  //
+  fParentWeight=1./Float_t(fNpart);
+  //
+  
+  
+  fPythia->SetCKIN(3,fPtHardMin);
+  fPythia->SetCKIN(4,fPtHardMax);
+  fPythia->SetCKIN(7,fYHardMin);
+  fPythia->SetCKIN(8,fYHardMax);
+  
+  if (fProjectile != "p" || fTarget != "p") fPythia->SetCollisionSystem(fProjectile,fTarget);
+  
+  if(fUseNuclearPDF)
+    fPythia->SetNuclei(fAProjectile, fATarget, fNucPdf);
+  // Fragmentation?
+  if (fFragmentation) {
+    fPythia->SetMSTP(111,1);
+  } else {
+    fPythia->SetMSTP(111,0);
+  }
+  
+  
+  //  initial state radiation
+  fPythia->SetMSTP(61,fGinit);
+  //  final state radiation
+  fPythia->SetMSTP(71,fGfinal);
+  //  pt - kick
+  if (fPtKick > 0.) {
+    fPythia->SetMSTP(91,1);
+    fPythia->SetPARP(91,fPtKick);
+    fPythia->SetPARP(93, 4. * fPtKick);
+  } else {
+    fPythia->SetMSTP(91,0);
+  }
+  
+  if (fReadLHEF) fPythia->OpenFortranFile(97, const_cast<char*>(fkNameLHEF));
+       
+  if (fReadFromFile) {
+    fRL  =  AliRunLoader::Open(fkFileName, "Partons");
+    fRL->LoadKinematics();
+    fRL->LoadHeader();
+  } else {
+    fRL = 0x0;
+  }
+  //
+  fPythia->ProcInit(fProcess,fEnergyCMS,fStrucFunc, fItune);
+  //  Forward Paramters to the AliPythia object
+  fDecayer->SetForceDecay(fForceDecay);
+  // Switch off Heavy Flavors on request
+  if (fHFoff) {
+    // Maximum number of quark flavours used in pdf
+    fPythia->SetMSTP(58, 3);
+    // Maximum number of flavors that can be used in showers
+    fPythia->SetMSTJ(45, 3);
+    // Switch off g->QQbar splitting in decay table
+    ((AliDecayerPythia*) fDecayer)->HeavyFlavourOff();
+  }
+  
+  fDecayer->Init();
+  
+  
+  //  Parent and Children Selection
+  switch (fProcess)
+  {
+    case kPyOldUEQ2ordered:
+    case kPyOldUEQ2ordered2:
+    case kPyOldPopcorn:
+      break;
+    case kPyCharm:
+    case kPyCharmUnforced:
+    case kPyCharmPbPbMNR:
+    case kPyCharmpPbMNR:
+    case kPyCharmppMNR:
+    case kPyCharmppMNRwmi:
+      break;
+    case kPyD0PbPbMNR:
+    case kPyD0pPbMNR:
+    case kPyD0ppMNR:
+      fParentSelect[0] =   421;
+      fFlavorSelect    =   4;
+      break;
+    case kPyDPlusPbPbMNR:
+    case kPyDPluspPbMNR:
+    case kPyDPlusppMNR:
+      fParentSelect[0] =   411;
+      fFlavorSelect    =   4;
+      break;
+    case kPyDPlusStrangePbPbMNR:
+    case kPyDPlusStrangepPbMNR:
+    case kPyDPlusStrangeppMNR:
+      fParentSelect[0] =   431;
+      fFlavorSelect    =   4;
+      break;
+    case kPyLambdacppMNR:
+      fParentSelect[0] =  4122;
+      fFlavorSelect    =   4;
+      break;
+    case kPyBeauty:
+    case kPyBeautyJets:
+    case kPyBeautyPbPbMNR:
+    case kPyBeautypPbMNR:
+    case kPyBeautyppMNR:
+    case kPyBeautyppMNRwmi:
+       break;
+    case kPyBeautyUnforced:
+      fParentSelect[0] =  511;
+      fParentSelect[1] =  521;
+      fParentSelect[2] =  531;
+      fParentSelect[3] = 5122;
+      fParentSelect[4] = 5132;
+      fParentSelect[5] = 5232;
+      fParentSelect[6] = 5332;
+      fFlavorSelect    = 5;
+      break;
+    case kPyJpsiChi:
+    case kPyJpsi:
+      fParentSelect[0] = 443;
+      break;
+    case kPyMbDefault:
+    case kPyMbAtlasTuneMC09:
+    case kPyMb:
+    case kPyMbWithDirectPhoton:
+    case kPyMbNonDiffr:
+    case kPyMbMSEL1:
+    case kPyJets:
+    case kPyDirectGamma:
+    case kPyLhwgMb:
+      break;
+    case kPyW:
+    case kPyZ:
+    case kPyMBRSingleDiffraction:
+    case kPyMBRDoubleDiffraction:
+    case kPyMBRCentralDiffraction:
+      break;
+  }
+  //
+  //
+  //  JetFinder for Trigger
+  //
+  //  Configure detector (EMCAL like)
+  //
+  fPythia->SetPARU(51, fPycellEtaMax);
+  fPythia->SetMSTU(51, fPycellNEta);
+  fPythia->SetMSTU(52, fPycellNPhi);
+  //
+  //  Configure Jet Finder
+  //
+  fPythia->SetPARU(58,  fPycellThreshold);
+  fPythia->SetPARU(52,  fPycellEtSeed);
+  fPythia->SetPARU(53,  fPycellMinEtJet);
+  fPythia->SetPARU(54,  fPycellMaxRadius);
+  fPythia->SetMSTU(54,  2);
+  //
+  //  This counts the total number of calls to Pyevnt() per run.
+  fTrialsRun = 0;
+  fQ         = 0.;
+  fX1        = 0.;
+  fX2        = 0.;
+  fNev       = 0 ;
+  //
+  //
+  //
+  AliGenMC::Init();
+  
+  // Reset Lorentz boost if demanded
+  if(!fUseLorentzBoost) {
+    fDyBoost = 0;
+    Warning("Init","Demand to discard Lorentz boost.\n");
+  }
+  //
+  //
+  //
+  if (fSetNuclei) {
+    fDyBoost = 0;
+    Warning("Init","Deprecated function SetNuclei() used (nPDFs + no boost). Use SetProjectile + SetTarget + SetUseNuclearPDF + SetUseLorentzBoost instead.\n");
+  }
+  fPythia->SetPARJ(200, 0.0);
+  fPythia->SetPARJ(199, 0.0);
+  fPythia->SetPARJ(198, 0.0);
+  fPythia->SetPARJ(197, 0.0);
+  
+  if (fQuench == 1) {
+    fPythia->InitQuenching(0., 0.1, 0.6e6, 0);
+  }
+  
+  if(fQuench ==2){fPythia->SetPyquenParameters(fpyquenT,fpyquenTau,fpyquenNf,fpyquenEloss,fpyquenAngle);}
+  
+  if (fQuench == 3) {
+    // Nestor's change of the splittings
+    fPythia->SetPARJ(200, 0.8);
+    fPythia->SetMSTJ(41, 1);  // QCD radiation only
+    fPythia->SetMSTJ(42, 2);  // angular ordering
+    fPythia->SetMSTJ(44, 2);  // option to run alpha_s
+    fPythia->SetMSTJ(47, 0);  // No correction back to hard scattering element
+    fPythia->SetMSTJ(50, 0);  // No coherence in first branching
+    fPythia->SetPARJ(82, 1.); // Cut off for parton showers
+  } else if (fQuench == 4) {
+    // Armesto-Cunqueiro-Salgado change of the splittings.
+    AliFastGlauber* glauber = AliFastGlauber::Instance();
+    glauber->Init(2);
+    //read and store transverse almonds corresponding to differnt
+    //impact parameters.
+    glauber->SetCentralityClass(0.,0.1);
+    fPythia->SetPARJ(200, 1.);
+    fPythia->SetPARJ(198, fQhat);
+    fPythia->SetPARJ(199, fLength);
+    fPythia->SetMSTJ(42, 2);  // angular ordering
+    fPythia->SetMSTJ(44, 2);  // option to run alpha_s
+    fPythia->SetPARJ(82, 1.); // Cut off for parton showers
+  }
+  
+  if ( AliLog::GetDebugLevel("","AliGenPythia6Diff") >= 1 ) {
+    fPythia->Pystat(4);
+    fPythia->Pystat(5);
+  }
+}
+
+void AliGenPythia6Diff::Generate()
+{
+  // Generate one event
+  if (!fPythia) fPythia=(AliPythia*) fMCEvGen;
+  fDecayer->ForceDecay();
+  
+  Double_t polar[3]   =   {0,0,0};
+  Double_t origin[3]  =   {0,0,0};
+  Double_t p[4];
+  //  converts from mm/c to s
+  const Float_t kconv=0.001/2.999792458e8;
+  //
+  Int_t nt=0;
+  Int_t jev=0;
+  Int_t j, kf;
+  fTrials=0;
+  fEventTime = 0.;
+  
+  
+  
+  //  Set collision vertex position
+  if (fVertexSmear == kPerEvent) Vertex();
+  
+  //  event loop
+  while(1)
+  {
+    //
+    // Produce event
+    //
+    //
+    // Switch hadronisation off
+    //
+    fPythia->SetMSTJ(1, 0);
+    
+    if (fQuench ==4){
+           Double_t bimp;
+           // Quenching comes through medium-modified splitting functions.
+           AliFastGlauber::Instance()->GetRandomBHard(bimp);
+           fPythia->SetPARJ(197, bimp);
+           fImpact = bimp;
+           fPythia->Qpygin0();
+    }
+    //
+    // Either produce new event or read partons from file
+    //
+    if (!fReadFromFile) {
+           if (!fNewMIS) {
+        fPythia->Pyevnt();
+           } else {
+        fPythia->Pyevnw();
+           }
+           fNpartons = fPythia->GetN();
+    } else {
+           printf("Loading Event %d\n",AliRunLoader::Instance()->GetEventNumber());
+           fRL->GetEvent(AliRunLoader::Instance()->GetEventNumber());
+           fPythia->SetN(0);
+           LoadEvent(fRL->Stack(), 0 , 1);
+           fPythia->Pyedit(21);
+    }
+    
+    //
+    //  Run quenching routine
+    //
+    if (fQuench == 1) {
+           fPythia->Quench();
+    } else if (fQuench == 2){
+           fPythia->Pyquen(208., 0, 0.);
+    } else if (fQuench == 3) {
+           // Quenching is via multiplicative correction of the splittings
+    }
+    
+    //
+    // Switch hadronisation on
+    //
+    if (fHadronisation) {
+           fPythia->SetMSTJ(1, 1);
+      //
+      // .. and perform hadronisation
+      //       printf("Calling hadronisation %d\n", fPythia->GetN());
+      
+           if (fPatchOmegaDalitz) {
+             fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0);
+             fPythia->Pyexec();
+             fPythia->DalitzDecays();
+             fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
+           }
+           fPythia->Pyexec();
+    }
+    fTrials++;
+    fPythia->ImportParticles(&fParticles,"All");
+    
+    if (TMath::Abs(fDyBoost) > 1.e-4) Boost();
+    if(TMath::Abs(fXingAngleY) > 1.e-10) BeamCrossAngle();
+    
+    //
+    //
+    //
+    Int_t i;
+    
+    fNprimaries = 0;
+    Int_t np = fParticles.GetEntriesFast();
+    
+    if (np == 0) continue;
+    //
+    
+    //
+    Int_t* pParent   = new Int_t[np];
+    Int_t* pSelected = new Int_t[np];
+    Int_t* trackIt   = new Int_t[np];
+    for (i = 0; i < np; i++) {
+           pParent[i]   = -1;
+           pSelected[i] =  0;
+           trackIt[i]   =  0;
+    }
+    
+    Int_t nc = 0;        // Total n. of selected particles
+    Int_t nParents = 0;  // Selected parents
+    Int_t nTkbles = 0;   // Trackable particles
+    if (fProcess != kPyMbDefault &&
+        fProcess != kPyMb &&
+        fProcess != kPyMbAtlasTuneMC09 &&
+        fProcess != kPyMbWithDirectPhoton &&
+        fProcess != kPyJets &&
+        fProcess != kPyDirectGamma &&
+        fProcess != kPyMbNonDiffr  &&
+        fProcess != kPyMbMSEL1     &&
+        fProcess != kPyW &&
+        fProcess != kPyZ &&
+        fProcess != kPyCharmppMNRwmi &&
+        fProcess != kPyBeautyppMNRwmi &&
+        fProcess != kPyBeautyJets) {
+           
+           for (i = 0; i < np; i++) {
+        TParticle* iparticle = (TParticle *) fParticles.At(i);
+        Int_t ks = iparticle->GetStatusCode();
+        kf = CheckPDGCode(iparticle->GetPdgCode());
+        // No initial state partons
+        if (ks==21) continue;
+        //
+        // Heavy Flavor Selection
+        //
+        // quark ?
+        kf = TMath::Abs(kf);
+        Int_t kfl = kf;
+        // Resonance
+        
+        if (kfl > 100000) kfl %= 100000;
+        if (kfl > 10000)  kfl %= 10000;
+        // meson ?
+        if  (kfl > 10) kfl/=100;
+        // baryon
+        if (kfl > 10) kfl/=10;
+        Int_t ipa = iparticle->GetFirstMother()-1;
+        Int_t kfMo = 0;
+        //
+        // Establish mother daughter relation between heavy quarks and mesons
+        //
+        if (kf >= fFlavorSelect && kf <= 6) {
+          Int_t idau = iparticle->GetFirstDaughter() - 1;
+          if (idau > -1) {
+            TParticle* daughter = (TParticle *) fParticles.At(idau);
+            Int_t pdgD = daughter->GetPdgCode();
+            if (pdgD == 91 || pdgD == 92) {
+              Int_t jmin = daughter->GetFirstDaughter() - 1;
+              Int_t jmax = daughter->GetLastDaughter()  - 1;
+              for (Int_t jp = jmin; jp <= jmax; jp++)
+                ((TParticle *) fParticles.At(jp))->SetFirstMother(i+1);
+            } // is string or cluster
+          } // has daughter
+        } // heavy quark
+        
+        
+        if (ipa > -1) {
+          TParticle *  mother = (TParticle *) fParticles.At(ipa);
+          kfMo = TMath::Abs(mother->GetPdgCode());
+        }
+        
+        // What to keep in Stack?
+        Bool_t flavorOK = kFALSE;
+        Bool_t selectOK = kFALSE;
+        if (fFeedDownOpt) {
+          if (kfl >= fFlavorSelect) flavorOK = kTRUE;
+        } else {
+          if (kfl > fFlavorSelect) {
+            nc = -1;
+            break;
+          }
+          if (kfl == fFlavorSelect) flavorOK = kTRUE;
+        }
+        switch (fStackFillOpt) {
+          case kHeavyFlavor:
+          case kFlavorSelection:
+            selectOK = kTRUE;
+            break;
+          case kParentSelection:
+            if (ParentSelected(kf) || kf <= 10) selectOK = kTRUE;
+            break;
+        }
+        if (flavorOK && selectOK) {
+          //
+          // Heavy flavor hadron or quark
+          //
+          // Kinematic seletion on final state heavy flavor mesons
+          if (ParentSelected(kf) && !KinematicSelection(iparticle, 0))
+          {
+            continue;
+          }
+          pSelected[i] = 1;
+          if (ParentSelected(kf)) ++nParents; // Update parent count
+          //               printf("\n particle (HF)  %d %d %d", i, pSelected[i], kf);
+        } else {
+          // Kinematic seletion on decay products
+          if (fCutOnChild && ParentSelected(kfMo) && ChildSelected(kf)
+              && !KinematicSelection(iparticle, 1))
+          {
+            continue;
+          }
+          //
+          // Decay products
+          // Select if mother was selected and is not tracked
+          
+          if (pSelected[ipa] &&
+              !trackIt[ipa]  &&     // mother will be  tracked ?
+              kfMo !=  5 &&         // mother is b-quark, don't store fragments
+              kfMo !=  4 &&         // mother is c-quark, don't store fragments
+              kf   != 92)           // don't store string
+          {
+            //
+            // Semi-stable or de-selected: diselect decay products:
+            //
+            //
+            if (pSelected[i] == -1 ||  fDecayer->GetLifetime(kf) > fMaxLifeTime)
+            {
+              Int_t ipF = iparticle->GetFirstDaughter();
+              Int_t ipL = iparticle->GetLastDaughter();
+              if (ipF > 0) for (j = ipF-1; j < ipL; j++) pSelected[j] = -1;
+            }
+            //                 printf("\n particle (decay)  %d %d %d", i, pSelected[i], kf);
+            pSelected[i] = (pSelected[i] == -1) ? 0 : 1;
+          }
+        }
+        if (pSelected[i] == -1) pSelected[i] = 0;
+        if (!pSelected[i]) continue;
+        // Count quarks only if you did not include fragmentation
+        if (fFragmentation && kf <= 10) continue;
+        
+        nc++;
+        // Decision on tracking
+        trackIt[i] = 0;
+        //
+        // Track final state particle
+        if (ks == 1) trackIt[i] = 1;
+        // Track semi-stable particles
+        if ((ks == 1) || (fDecayer->GetLifetime(kf) > fMaxLifeTime))  trackIt[i] = 1;
+        // Track particles selected by process if undecayed.
+        if (fForceDecay == kNoDecay) {
+          if (ParentSelected(kf)) trackIt[i] = 1;
+        } else {
+          if (ParentSelected(kf)) trackIt[i] = 0;
+        }
+        if (trackIt[i] == 1) ++nTkbles; // Update trackable counter
+        //
+        //
+        
+      } // particle selection loop
+           if (nc > 0) {
+        for (i = 0; i<np; i++) {
+          if (!pSelected[i]) continue;
+          TParticle *  iparticle = (TParticle *) fParticles.At(i);
+          kf = CheckPDGCode(iparticle->GetPdgCode());
+          Int_t ks = iparticle->GetStatusCode();
+          p[0] = iparticle->Px();
+          p[1] = iparticle->Py();
+          p[2] = iparticle->Pz();
+          p[3] = iparticle->Energy();
+          
+          origin[0] = fVertex[0]+iparticle->Vx()/10; // [cm]
+          origin[1] = fVertex[1]+iparticle->Vy()/10; // [cm]
+          origin[2] = fVertex[2]+iparticle->Vz()/10; // [cm]
+          
+          Float_t tof   = fTime + kconv*iparticle->T();
+          Int_t ipa     = iparticle->GetFirstMother()-1;
+          Int_t iparent = (ipa > -1) ? pParent[ipa] : -1;
+          
+          PushTrack(fTrackIt*trackIt[i], iparent, kf,
+                    p[0], p[1], p[2], p[3],
+                    origin[0], origin[1], origin[2], tof,
+                    polar[0], polar[1], polar[2],
+                    kPPrimary, nt, 1., ks);
+          pParent[i] = nt;
+          KeepTrack(nt);
+          fNprimaries++;
+        } //  PushTrack loop
+           }
+       } else {
+           nc = GenerateMB();
+    } // mb ?
+    
+    GetSubEventTime();
+    
+    delete[] pParent;
+    delete[] pSelected;
+    delete[] trackIt;
+    
+    if (nc > 0) {
+      switch (fCountMode) {
+        case kCountAll:
+          // printf(" Count all \n");
+          jev += nc;
+          break;
+        case kCountParents:
+          // printf(" Count parents \n");
+          jev += nParents;
+          break;
+        case kCountTrackables:
+          // printf(" Count trackable \n");
+          jev += nTkbles;
+          break;
+      }
+           if (jev >= fNpart || fNpart == -1) {
+        fKineBias=Float_t(fNpart)/Float_t(fTrials);
+        
+        fQ  += fPythia->GetVINT(51);
+        fX1 += fPythia->GetVINT(41);
+        fX2 += fPythia->GetVINT(42);
+        fTrialsRun += fTrials;
+        fNev++;
+        MakeHeader();
+        break;
+           }
+    }
+  } // event loop
+  SetHighWaterMark(nt);
+  //  adjust weight due to kinematic selection
+  //    AdjustWeights();
+  //  get cross-section
+  fXsection=fPythia->GetPARI(1);
+}
+
+Int_t  AliGenPythia6Diff::GenerateMB()
+{
+  //
+  // Min Bias selection and other global selections
+  //
+  Int_t i, kf, nt, iparent;
+  Int_t nc = 0;
+  Double_t p[4];
+  Double_t polar[3]   =   {0,0,0};
+  Double_t origin[3]  =   {0,0,0};
+  //  converts from mm/c to s
+  const Float_t kconv=0.001/2.999792458e8;
+  
+  
+  Int_t np = (fHadronisation) ? fParticles.GetEntriesFast() : fNpartons;
+  
+  
+  
+  Int_t* pParent = new Int_t[np];
+  for (i=0; i< np; i++) pParent[i] = -1;
+  if ((fProcess == kPyJets || fProcess == kPyDirectGamma || fProcess == kPyBeautyJets || fProcess == kPyBeautyppMNRwmi )
+      && fEtMinJet > 0.) {
+    TParticle* jet1 = (TParticle *) fParticles.At(6);
+    TParticle* jet2 = (TParticle *) fParticles.At(7);
+    
+    if (!jet1 || ! jet2 || !CheckTrigger(jet1, jet2)) {
+      delete [] pParent;
+      return 0;
+    }
+  }
+  
+  
+  // Select events with fragmentation photon, decay photon, pi0, eta or other hadrons going to PHOS or EMCAL or central barrel,
+  // implemented primaryly for kPyJets, but extended to any kind of process.
+  if ((fFragPhotonInCalo || fPi0InCalo || fEtaInCalo || fEleInCalo || fHadronInCalo || fDecayPhotonInCalo) &&
+      (fCheckPHOS || fCheckEMCAL || fCheckBarrel) ) {
+    Bool_t ok = TriggerOnSelectedParticles(np);
+    
+    if(!ok) {
+      delete[] pParent;
+      return 0;
+    }
+  }
+  
+  // Check for diffraction
+  if(fkTuneForDiff) {
+    if(fItune==320 && ( (TMath::Abs(fEnergyCMS - 900) < 1) || (TMath::Abs(fEnergyCMS - 2760) < 1) || (TMath::Abs(fEnergyCMS - 7000) < 1) || ( TMath::Abs(fEnergyCMS - 8000) < 1 ) ) ) {
+      if(!CheckDiffraction()) {
+        delete [] pParent;
+        return 0;
+      }
+    }
+  }
+  
+  // Check for minimum multiplicity
+  if (fTriggerMultiplicity > 0) {
+    Int_t multiplicity = 0;
+    for (i = 0; i < np; i++) {
+      TParticle *  iparticle = (TParticle *) fParticles.At(i);
+      
+      Int_t statusCode = iparticle->GetStatusCode();
+      
+      // Initial state particle
+      if (statusCode != 1)
+        continue;
+      // eta cut
+      if (fTriggerMultiplicityEta > 0 && TMath::Abs(iparticle->Eta()) > fTriggerMultiplicityEta)
+        continue;
+      // pt cut
+      if (iparticle->Pt() < fTriggerMultiplicityPtMin)
+        continue;
+      
+      TParticlePDG* pdgPart = iparticle->GetPDG();
+      if (pdgPart && pdgPart->Charge() == 0)
+        continue;
+      
+      ++multiplicity;
+    }
+    
+    if (multiplicity < fTriggerMultiplicity) {
+      delete [] pParent;
+      return 0;
+    }
+    Printf("Triggered on event with multiplicity of %d >= %d", multiplicity, fTriggerMultiplicity);
+  }
+  
+  
+  if (fTriggerParticle) {
+    Bool_t triggered = kFALSE;
+    for (i = 0; i < np; i++) {
+           TParticle *  iparticle = (TParticle *) fParticles.At(i);
+           kf = CheckPDGCode(iparticle->GetPdgCode());
+           if (kf != fTriggerParticle) continue;
+           if (iparticle->Pt() == 0.) continue;
+           if (TMath::Abs(iparticle->Eta()) > fTriggerEta) continue;
+           if ( iparticle->Pt() > fTriggerMaxPt || iparticle->Pt() < fTriggerMinPt ) continue;
+           triggered = kTRUE;
+           break;
+    }
+    if (!triggered) {
+      delete [] pParent;
+      return 0;
+    }
+  }
+       
+  
+  // Check if there is a ccbar or bbbar pair with at least one of the two
+  // in fYMin < y < fYMax
+  
+  if (fProcess == kPyCharmppMNRwmi || fProcess == kPyBeautyppMNRwmi || fProcess == kPyBeautyJets) {
+    TParticle *partCheck;
+    TParticle *mother;
+    Bool_t  theQ=kFALSE,theQbar=kFALSE,inYcut=kFALSE;
+    Bool_t  theChild=kFALSE;
+    Bool_t  triggered=kFALSE;
+    Float_t y;
+    Int_t   pdg,mpdg,mpdgUpperFamily;
+    for(i=0; i<np; i++) {
+      partCheck = (TParticle*)fParticles.At(i);
+      pdg = partCheck->GetPdgCode();
+      if(TMath::Abs(pdg) == fFlavorSelect) { // quark
+        if(pdg>0) { theQ=kTRUE; } else { theQbar=kTRUE; }
+        y = 0.5*TMath::Log((partCheck->Energy()+partCheck->Pz()+1.e-13)/
+                           (partCheck->Energy()-partCheck->Pz()+1.e-13));
+        if(y>fYMin && y<fYMax) inYcut=kTRUE;
+      }
+      if(fTriggerParticle) {
+        if(TMath::Abs(pdg)==fTriggerParticle) triggered=kTRUE;
+      }
+      if(fCutOnChild && TMath::Abs(pdg) == fPdgCodeParticleforAcceptanceCut) {
+        Int_t mi = partCheck->GetFirstMother() - 1;
+        if(mi<0) continue;
+        mother = (TParticle*)fParticles.At(mi);
+        mpdg=TMath::Abs(mother->GetPdgCode());
+        mpdgUpperFamily=(mpdg>1000 ? mpdg+1000 : mpdg+100); // keep e from c from b
+        if ( ParentSelected(mpdg) ||
+            (fFlavorSelect==5 && ParentSelected(mpdgUpperFamily))) {
+          if (KinematicSelection(partCheck,1)) {
+            theChild=kTRUE;
+          }
+        }
+      }
+    }
+    if (!theQ || !theQbar || !inYcut) { // one of the c/b conditions not satisfied
+      delete[] pParent;
+      return 0;
+    }
+    if (fCutOnChild && !theChild) { // one of the child conditions not satisfied
+      delete[] pParent;
+      return 0;
+    }
+    if(fTriggerParticle && !triggered) { // particle requested is not produced
+      delete[] pParent;
+      return 0;
+    }
+    
+  }
+  
+  //Introducing child cuts in case kPyW, kPyZ, kPyMb, and kPyMbNonDiff
+  if ( (
+        
+        fProcess == kPyW ||
+        fProcess == kPyZ ||
+        fProcess == kPyMbDefault ||
+        fProcess == kPyMb ||
+        fProcess == kPyMbAtlasTuneMC09 ||
+        fProcess == kPyMbWithDirectPhoton ||
+        fProcess == kPyMbNonDiffr)
+      && (fCutOnChild == 1) ) {
+    if ( !CheckKinematicsOnChild() ) {
+      delete[] pParent;
+      return 0;
+    }
+  }
+  
+  
+  for (i = 0; i < np; i++) {
+    Int_t trackIt = 0;
+    TParticle *  iparticle = (TParticle *) fParticles.At(i);
+    kf = CheckPDGCode(iparticle->GetPdgCode());
+    Int_t ks = iparticle->GetStatusCode();
+    Int_t km = iparticle->GetFirstMother();
+    if (
+        (((ks == 1  && kf!=0 && KinematicSelection(iparticle, 0)) || (ks !=1)) && ((fStackFillOpt != kHeavyFlavor) || IsFromHeavyFlavor(i))) ||
+        ((fProcess == kPyJets || fProcess == kPyBeautyJets) && ks == 21 && km == 0 && i>1)
+        )
+         {
+      nc++;
+           if (ks == 1) trackIt = 1;
+           Int_t ipa = iparticle->GetFirstMother()-1;
+           
+           iparent = (ipa > -1) ? pParent[ipa] : -1;
+           
+      //
+      // store track information
+           p[0] = iparticle->Px();
+           p[1] = iparticle->Py();
+           p[2] = iparticle->Pz();
+           p[3] = iparticle->Energy();
+      
+           
+           origin[0] = fVertex[0]+iparticle->Vx()/10; // [cm]
+           origin[1] = fVertex[1]+iparticle->Vy()/10; // [cm]
+           origin[2] = fVertex[2]+iparticle->Vz()/10; // [cm]
+           
+           Float_t tof = fTime + fEventTime + kconv * iparticle->T();
+      
+           PushTrack(fTrackIt*trackIt, iparent, kf,
+                p[0], p[1], p[2], p[3],
+                origin[0], origin[1], origin[2], tof,
+                polar[0], polar[1], polar[2],
+                kPPrimary, nt, 1., ks);
+           fNprimaries++;
+           KeepTrack(nt);
+           pParent[i] = nt;
+           SetHighWaterMark(nt);
+           
+    } // select particle
+  } // particle loop
+  
+  delete[] pParent;
+  
+  return 1;
+}
+
+
+void AliGenPythia6Diff::FinishRun()
+{
+  // Print x-section summary
+  fPythia->Pystat(1);
+  
+  if (fNev > 0.) {
+    fQ  /= fNev;
+    fX1 /= fNev;
+    fX2 /= fNev;
+  }
+  
+  printf("\nTotal number of Pyevnt() calls %d\n", fTrialsRun);
+  printf("\nMean Q, x1, x2: %f %f %f\n", fQ, fX1, fX2);
+}
+
+void AliGenPythia6Diff::AdjustWeights() const
+{
+  // Adjust the weights after generation of all events
+  //
+  if (gAlice) {
+    TParticle *part;
+    Int_t ntrack=gAlice->GetMCApp()->GetNtrack();
+    for (Int_t i=0; i<ntrack; i++) {
+           part= gAlice->GetMCApp()->Particle(i);
+           part->SetWeight(part->GetWeight()*fKineBias);
+    }
+  }
+}
+
+void AliGenPythia6Diff::SetNuclei(Int_t a1, Int_t a2, Int_t pdfset)
+{
+  // Treat protons as inside nuclei with mass numbers a1 and a2
+  
+  fAProjectile   = a1;
+  fATarget       = a2;
+  fNucPdf        = pdfset;  // 0 EKS98 9 EPS09LO 19 EPS09NLO
+  fUseNuclearPDF = kTRUE;
+  fSetNuclei     = kTRUE;
+}
+
+
+void AliGenPythia6Diff::MakeHeader()
+{
+  //
+  // Make header for the simulated event
+  //
+  if (gAlice) {
+    if (gAlice->GetEvNumber()>=fDebugEventFirst &&
+        gAlice->GetEvNumber()<=fDebugEventLast) fPythia->Pylist(2);
+  }
+  
+  // Builds the event header, to be called after each event
+  if (fHeader) delete fHeader;
+  fHeader = new AliGenPythiaEventHeader("Pythia");
+  //
+  // Event type
+  if(fProcDiff>0){
+    //      if(fProcDiff == 92 || fProcDiff == 93) printf("\n\n\n\n\n");
+    //      printf("fPythia->GetMSTI(1) = %d   fProcDiff = %d\n",fPythia->GetMSTI(1), fProcDiff);
+    ((AliGenPythiaEventHeader*) fHeader)->SetProcessType(fProcDiff);
+  }
+  else
+    ((AliGenPythiaEventHeader*) fHeader)->SetProcessType(fPythia->GetMSTI(1));
+  //
+  // Number of trials
+  ((AliGenPythiaEventHeader*) fHeader)->SetTrials(fTrials);
+  //
+  // Event Vertex
+  fHeader->SetPrimaryVertex(fVertex);
+  fHeader->SetInteractionTime(fTime+fEventTime);
+  //
+  // Number of primaries
+  fHeader->SetNProduced(fNprimaries);
+  //
+  // Event weight
+  fHeader->SetEventWeight(fPythia->GetVINT(97));
+  //
+  // Jets that have triggered
+  
+  //Need to store jets for b-jet studies too!
+  if (fProcess == kPyJets || fProcess == kPyDirectGamma || fProcess == kPyBeautyJets || fProcess == kPyBeautyppMNRwmi)
+  {
+    Int_t ntrig, njet;
+    Float_t jets[4][10];
+    GetJets(njet, ntrig, jets);
+    
+    
+    for (Int_t i = 0; i < ntrig; i++) {
+           ((AliGenPythiaEventHeader*) fHeader)->AddJet(jets[0][i], jets[1][i], jets[2][i],
+                                                   jets[3][i]);
+    }
+  }
+  //
+  // Copy relevant information from external header, if present.
+  //
+  Float_t uqJet[4];
+  
+  if (fRL) {
+    AliGenPythiaEventHeader* exHeader = (AliGenPythiaEventHeader*) (fRL->GetHeader()->GenEventHeader());
+    for (Int_t i = 0; i < exHeader->NTriggerJets(); i++)
+    {
+           printf("Adding Jet %d %d \n", i,  exHeader->NTriggerJets());
+           
+           
+           exHeader->TriggerJet(i, uqJet);
+           ((AliGenPythiaEventHeader*) fHeader)->AddUQJet(uqJet[0], uqJet[1], uqJet[2], uqJet[3]);
+    }
+  }
+  //
+  // Store quenching parameters
+  //
+  if (fQuench){
+    Double_t z[4] = {0.};
+    Double_t xp = 0.;
+    Double_t yp = 0.;
+    
+    if (fQuench == 1) {
+           // Pythia::Quench()
+           fPythia->GetQuenchingParameters(xp, yp, z);
+    } else if (fQuench == 2){
+           // Pyquen
+           Double_t r1 = PARIMP.rb1;
+           Double_t r2 = PARIMP.rb2;
+           Double_t b  = PARIMP.b1;
+           Double_t r   = 0.5 * TMath::Sqrt(2. * (r1 * r1 + r2 * r2) - b * b);
+           Double_t phi = PARIMP.psib1;
+           xp = r * TMath::Cos(phi);
+           yp = r * TMath::Sin(phi);
+           
+    } else if (fQuench == 4) {
+           // QPythia
+           Double_t xy[2];
+           Double_t i0i1[2];
+           AliFastGlauber::Instance()->GetSavedXY(xy);
+           AliFastGlauber::Instance()->GetSavedI0I1(i0i1);
+           xp = xy[0];
+           yp = xy[1];
+           ((AliGenPythiaEventHeader*) fHeader)->SetImpactParameter(fImpact);
+    }
+    
+    ((AliGenPythiaEventHeader*) fHeader)->SetXYJet(xp, yp);
+    ((AliGenPythiaEventHeader*) fHeader)->SetZQuench(z);
+  }
+  //
+  // Store pt^hard and cross-section
+  ((AliGenPythiaEventHeader*) fHeader)->SetPtHard(fPythia->GetVINT(47));
+//  ((AliGenPythiaEventHeader*) fHeader)->SetXsection(fPythia->GetPARI(1));
+  
+  //
+  // Store Event Weight
+  ((AliGenPythiaEventHeader*) fHeader)->SetEventWeight(fPythia->GetPARI(7));
+  
+  //
+  //  Pass header
+  //
+  AddHeader(fHeader);
+  fHeader = 0x0;
+}
+
+Bool_t AliGenPythia6Diff::CheckTrigger(const TParticle* jet1, const TParticle* jet2)
+{
+  // Check the kinematic trigger condition
+  //
+  Double_t eta[2];
+  eta[0] = jet1->Eta();
+  eta[1] = jet2->Eta();
+  Double_t phi[2];
+  phi[0] = jet1->Phi();
+  phi[1] = jet2->Phi();
+  Int_t    pdg[2];
+  pdg[0] = jet1->GetPdgCode();
+  pdg[1] = jet2->GetPdgCode();
+  Bool_t   triggered = kFALSE;
+  
+  if (fProcess == kPyJets || fProcess == kPyBeautyJets || fProcess ==  kPyBeautyppMNRwmi) {
+    Int_t njets = 0;
+    Int_t ntrig = 0;
+    Float_t jets[4][10];
+    //
+    // Use Pythia clustering on parton level to determine jet axis
+    //
+    GetJets(njets, ntrig, jets);
+    
+    if (ntrig || fEtMinJet == 0.) triggered = kTRUE;
+    //
+  } else {
+    Int_t ij = 0;
+    Int_t ig = 1;
+    if (pdg[0] == kGamma) {
+           ij = 1;
+           ig = 0;
+    }
+    //Check eta range first...
+    if ((eta[ij] < fEtaMaxJet   && eta[ij] > fEtaMinJet) &&
+        (eta[ig] < fEtaMaxGamma && eta[ig] > fEtaMinGamma))
+    {
+           //Eta is okay, now check phi range
+           if ((phi[ij] < fPhiMaxJet   && phi[ij] > fPhiMinJet) &&
+          (phi[ig] < fPhiMaxGamma && phi[ig] > fPhiMinGamma))
+           {
+        triggered = kTRUE;
+           }
+    }
+  }
+  return triggered;
+}
+
+
+
+Bool_t AliGenPythia6Diff::CheckKinematicsOnChild(){
+  //
+  //Checking Kinematics on Child (status code 1, particle code ?, kin cuts
+  //
+  Bool_t checking = kFALSE;
+  Int_t j, kcode, ks, km;
+  Int_t nPartAcc = 0; //number of particles in the acceptance range
+  Int_t numberOfAcceptedParticles = 1;
+  if (fNumberOfAcceptedParticles != 0) { numberOfAcceptedParticles = fNumberOfAcceptedParticles; }
+  Int_t npart = fParticles.GetEntriesFast();
+  
+  for (j = 0; j<npart; j++) {
+    TParticle *  jparticle = (TParticle *) fParticles.At(j);
+    kcode = TMath::Abs( CheckPDGCode(jparticle->GetPdgCode()) );
+    ks = jparticle->GetStatusCode();
+    km = jparticle->GetFirstMother();
+    
+    if( (ks == 1)  &&  (kcode == fPdgCodeParticleforAcceptanceCut)  &&  (KinematicSelection(jparticle,1)) ){
+           nPartAcc++;
+    }
+    if( numberOfAcceptedParticles <= nPartAcc){
+      checking = kTRUE;
+      break;
+    }
+  }
+  
+  return checking;
+}
+
+void  AliGenPythia6Diff::LoadEvent(AliStack* stack, Int_t flag, Int_t reHadr)
+{
+  //
+  // Load event into Pythia Common Block
+  //
+  
+  Int_t npart = stack -> GetNprimary();
+  Int_t n0 = 0;
+  
+  if (!flag) {
+    (fPythia->GetPyjets())->N = npart;
+  } else {
+    n0 = (fPythia->GetPyjets())->N;
+    (fPythia->GetPyjets())->N = n0 + npart;
+  }
+  
+  
+  for (Int_t part = 0; part < npart; part++) {
+    TParticle *mPart = stack->Particle(part);
+    
+    Int_t kf     =  mPart->GetPdgCode();
+    Int_t ks     =  mPart->GetStatusCode();
+    Int_t idf    =  mPart->GetFirstDaughter();
+    Int_t idl    =  mPart->GetLastDaughter();
+    
+    if (reHadr) {
+           if (ks == 11 || ks == 12) {
+        ks  -= 10;
+        idf  = -1;
+        idl  = -1;
+           }
+    }
+    
+    Float_t px = mPart->Px();
+    Float_t py = mPart->Py();
+    Float_t pz = mPart->Pz();
+    Float_t e  = mPart->Energy();
+    Float_t m  = mPart->GetCalcMass();
+    
+    
+    (fPythia->GetPyjets())->P[0][part+n0] = px;
+    (fPythia->GetPyjets())->P[1][part+n0] = py;
+    (fPythia->GetPyjets())->P[2][part+n0] = pz;
+    (fPythia->GetPyjets())->P[3][part+n0] = e;
+    (fPythia->GetPyjets())->P[4][part+n0] = m;
+    
+    (fPythia->GetPyjets())->K[1][part+n0] = kf;
+    (fPythia->GetPyjets())->K[0][part+n0] = ks;
+    (fPythia->GetPyjets())->K[3][part+n0] = idf + 1;
+    (fPythia->GetPyjets())->K[4][part+n0] = idl + 1;
+    (fPythia->GetPyjets())->K[2][part+n0] = mPart->GetFirstMother() + 1;
+  }
+}
+
+void  AliGenPythia6Diff::LoadEvent(const TObjArray* stack, Int_t flag, Int_t reHadr)
+{
+  //
+  // Load event into Pythia Common Block
+  //
+  
+  Int_t npart = stack -> GetEntries();
+  Int_t n0 = 0;
+  
+  if (!flag) {
+    (fPythia->GetPyjets())->N = npart;
+  } else {
+    n0 = (fPythia->GetPyjets())->N;
+    (fPythia->GetPyjets())->N = n0 + npart;
+  }
+  
+  
+  for (Int_t part = 0; part < npart; part++) {
+    TParticle *mPart = dynamic_cast<TParticle *>(stack->At(part));
+    if (!mPart) continue;
+    
+    Int_t kf     =  mPart->GetPdgCode();
+    Int_t ks     =  mPart->GetStatusCode();
+    Int_t idf    =  mPart->GetFirstDaughter();
+    Int_t idl    =  mPart->GetLastDaughter();
+    
+    if (reHadr) {
+      if (ks == 11 || ks == 12) {
+        ks  -= 10;
+        idf  = -1;
+        idl  = -1;
+      }
+    }
+    
+    Float_t px = mPart->Px();
+    Float_t py = mPart->Py();
+    Float_t pz = mPart->Pz();
+    Float_t e  = mPart->Energy();
+    Float_t m  = mPart->GetCalcMass();
+    
+    
+    (fPythia->GetPyjets())->P[0][part+n0] = px;
+    (fPythia->GetPyjets())->P[1][part+n0] = py;
+    (fPythia->GetPyjets())->P[2][part+n0] = pz;
+    (fPythia->GetPyjets())->P[3][part+n0] = e;
+    (fPythia->GetPyjets())->P[4][part+n0] = m;
+    
+    (fPythia->GetPyjets())->K[1][part+n0] = kf;
+    (fPythia->GetPyjets())->K[0][part+n0] = ks;
+    (fPythia->GetPyjets())->K[3][part+n0] = idf + 1;
+    (fPythia->GetPyjets())->K[4][part+n0] = idl + 1;
+    (fPythia->GetPyjets())->K[2][part+n0] = mPart->GetFirstMother() + 1;
+  }
+}
+
+
+//void AliGenPythia6Diff::RecJetsUA1(Int_t& njets, Float_t jets [4][50])
+//{
+//  //
+//  //  Calls the Pythia jet finding algorithm to find jets in the current event
+//  //
+//  //
+//  //
+//  //  Save jets
+//  Int_t n     = fPythia->GetN();
+//  
+//  //
+//  //  Run Jet Finder
+//  fPythia->Pycell(njets);
+//  Int_t i;
+//  for (i = 0; i < njets; i++) {
+//    Float_t px    = (fPythia->GetPyjets())->P[0][n+i];
+//    Float_t py    = (fPythia->GetPyjets())->P[1][n+i];
+//    Float_t pz    = (fPythia->GetPyjets())->P[2][n+i];
+//    Float_t e     = (fPythia->GetPyjets())->P[3][n+i];
+//    
+//    jets[0][i] = px;
+//    jets[1][i] = py;
+//    jets[2][i] = pz;
+//    jets[3][i] = e;
+//  }
+//}
+//
+//
+
+void  AliGenPythia6Diff::GetJets(Int_t& nJets, Int_t& nJetsTrig, Float_t jets[4][10])
+{
+  //
+  //  Calls the Pythia clustering algorithm to find jets in the current event
+  //
+  Int_t n     = fPythia->GetN();
+  nJets       = 0;
+  nJetsTrig   = 0;
+  if (fJetReconstruction == kCluster) {
+    //
+    //  Configure cluster algorithm
+    //
+    fPythia->SetPARU(43, 2.);
+    fPythia->SetMSTU(41, 1);
+    //
+    //  Call cluster algorithm
+    //
+    fPythia->Pyclus(nJets);
+    //
+    //  Loading jets from common block
+    //
+  } else {
+    
+    //
+    //  Run Jet Finder
+    fPythia->Pycell(nJets);
+  }
+  
+  Int_t i;
+  for (i = 0; i < nJets; i++) {
+    Float_t px    = (fPythia->GetPyjets())->P[0][n+i];
+    Float_t py    = (fPythia->GetPyjets())->P[1][n+i];
+    Float_t pz    = (fPythia->GetPyjets())->P[2][n+i];
+    Float_t e     = (fPythia->GetPyjets())->P[3][n+i];
+    Float_t pt    = TMath::Sqrt(px * px + py * py);
+    Float_t phi   = TMath::Pi() + TMath::ATan2(-py, -px);
+    Float_t theta = TMath::ATan2(pt,pz);
+    Float_t et    = e * TMath::Sin(theta);
+    Float_t eta   = -TMath::Log(TMath::Tan(theta / 2.));
+    if (
+        eta > fEtaMinJet && eta < fEtaMaxJet &&
+        phi > fPhiMinJet && phi < fPhiMaxJet &&
+        et  > fEtMinJet  && et  < fEtMaxJet
+        )
+    {
+           jets[0][nJetsTrig] = px;
+           jets[1][nJetsTrig] = py;
+           jets[2][nJetsTrig] = pz;
+           jets[3][nJetsTrig] = e;
+           nJetsTrig++;
+      //           printf("\n........-Jet #%d: %10.3f %10.3f %10.3f %10.3f \n", i, pt, et, eta, phi * kRaddeg);
+    } else {
+      //           printf("\n........-Jet #%d: %10.3f %10.3f %10.3f %10.3f \n", i, pt, et, eta, phi * kRaddeg);
+    }
+  }
+}
+
+void AliGenPythia6Diff::GetSubEventTime()
+{
+  // Calculates time of the next subevent
+  fEventTime = 0.;
+  if (fEventsTime) {
+    TArrayF &array = *fEventsTime;
+    fEventTime = array[fCurSubEvent++];
+  }
+  //  printf(" Event time: %d %f %p",fCurSubEvent,fEventTime,fEventsTime);
+  return;
+}
+
+Bool_t AliGenPythia6Diff::IsInBarrel(Float_t eta) const
+{
+  // Is particle in Central Barrel acceptance?
+  // etamin=-etamax
+  if( eta < fTriggerEta  )
+    return kTRUE;
+  else
+    return kFALSE;
+}
+
+Bool_t AliGenPythia6Diff::IsInEMCAL(Float_t phi, Float_t eta) const
+{
+  // Is particle in EMCAL acceptance?
+  // phi in degrees, etamin=-etamax
+  if(phi > fEMCALMinPhi  && phi < fEMCALMaxPhi &&
+     eta < fEMCALEta  )
+    return kTRUE;
+  else
+    return kFALSE;
+}
+
+Bool_t AliGenPythia6Diff::IsInPHOS(Float_t phi, Float_t eta, Int_t iparticle)
+{
+  // Is particle in PHOS acceptance?
+  // Acceptance slightly larger considered.
+  // phi in degrees, etamin=-etamax
+  // iparticle is the index of the particle to be checked, for PHOS rotation case
+  
+  if(phi > fPHOSMinPhi  && phi < fPHOSMaxPhi &&
+     eta < fPHOSEta  )
+    return kTRUE;
+  else
+  {
+    if( fCheckPHOSeta && eta < fPHOSEta) fPHOSRotateCandidate = iparticle;
+    
+    return kFALSE;
+  }
+}
+
+void AliGenPythia6Diff::RotatePhi(Bool_t& okdd)
+{
+  //Rotate event in phi to enhance events in PHOS acceptance
+  
+  if(fPHOSRotateCandidate < 0) return ;
+  
+  //calculate the new position random between fPHOSMinPhi and fPHOSMaxPhi
+  Double_t phiPHOSmin = TMath::Pi()*fPHOSMinPhi/180;
+  Double_t phiPHOSmax = TMath::Pi()*fPHOSMaxPhi/180;
+  Double_t phiPHOS = (AliPythiaRndm::GetPythiaRandom())->Uniform(phiPHOSmin,phiPHOSmax);
+  
+  //calculate deltaphi
+  TParticle* ph = (TParticle *) fParticles.At(fPHOSRotateCandidate);
+  Double_t phphi = ph->Phi();
+  Double_t deltaphi = phiPHOS - phphi;
+  
+  
+  
+  //loop for all particles and produce the phi rotation
+  Int_t np = (fHadronisation) ? fParticles.GetEntriesFast() : fNpartons;
+  Double_t oldphi, newphi;
+  Double_t newVx, newVy, r, vZ, time;
+  Double_t newPx, newPy, pt, pz, e;
+  for(Int_t i=0; i< np; i++) {
+    TParticle* iparticle = (TParticle *) fParticles.At(i);
+    oldphi = iparticle->Phi();
+    newphi = oldphi + deltaphi;
+    if(newphi < 0) newphi = 2*TMath::Pi() + newphi; // correct angle
+    if(newphi > 2*TMath::Pi()) newphi = newphi - 2*TMath::Pi(); // correct angle
+    
+    r = iparticle->R();
+    newVx = r * TMath::Cos(newphi);
+    newVy = r * TMath::Sin(newphi);
+    vZ   = iparticle->Vz(); // don't transform
+    time = iparticle->T(); // don't transform
+    
+    pt = iparticle->Pt();
+    newPx = pt * TMath::Cos(newphi);
+    newPy = pt * TMath::Sin(newphi);
+    pz = iparticle->Pz(); // don't transform
+    e  = iparticle->Energy(); // don't transform
+    
+    // apply rotation
+    iparticle->SetProductionVertex(newVx, newVy, vZ, time);
+    iparticle->SetMomentum(newPx, newPy, pz, e);
+    
+  } //end particle loop
+  
+  // now let's check that we put correctly the candidate photon in PHOS
+  Float_t phi = ph->Phi()*180./TMath::Pi(); //Convert to degrees
+  Float_t eta =TMath::Abs(ph->Eta());//in calos etamin=-etamax
+  if(IsInPHOS(phi,eta,-1))
+    okdd = kTRUE;
+  
+  // reset the value for next event
+  fPHOSRotateCandidate = -1;
+  
+}
+
+
+Bool_t AliGenPythia6Diff::CheckDiffraction()
+{
+  // use this method only with Perugia-0 tune!
+  
+  //  printf("AAA\n");
+  
+  Int_t np = (fHadronisation) ? fParticles.GetEntriesFast() : fNpartons;
+  
+  Int_t iPart1=-1;
+  Int_t iPart2=-1;
+  
+  Double_t y1 = 1e10;
+  Double_t y2 = -1e10;
+  
+  const Int_t kNstable=20;
+  const Int_t pdgStable[20] = {
+    22,             // Photon
+    11,             // Electron
+    12,             // Electron Neutrino
+    13,             // Muon
+    14,             // Muon Neutrino
+    15,             // Tau
+    16,             // Tau Neutrino
+    211,            // Pion
+    321,            // Kaon
+    311,            // K0
+    130,            // K0s
+    310,            // K0l
+    2212,           // Proton
+    2112,           // Neutron
+    3122,           // Lambda_0
+    3112,           // Sigma Minus
+    3222,           // Sigma Plus
+    3312,           // Xsi Minus
+    3322,           // Xsi0
+    3334            // Omega
+  };
+  
+  for (Int_t i = 0; i < np; i++) {
+    TParticle *  part = (TParticle *) fParticles.At(i);
+    
+    Int_t statusCode = part->GetStatusCode();
+    
+    // Initial state particle
+    if (statusCode != 1)
+      continue;
+    
+    Int_t pdg = TMath::Abs(part->GetPdgCode());
+    Bool_t isStable = kFALSE;
+    for (Int_t i1 = 0; i1 < kNstable; i1++) {
+      if (pdg == pdgStable[i1]) {
+        isStable = kTRUE;
+        break;
+      }
+    }
+    if(!isStable)
+      continue;
+    
+    Double_t y = part->Y();
+    
+    if (y < y1)
+         {
+           y1 = y;
+           iPart1 = i;
+         }
+    if (y > y2)
+    {
+      y2 = y;
+      iPart2 = i;
+    }
+  }
+  
+  if(iPart1<0 || iPart2<0) return kFALSE;
+  
+  y1=TMath::Abs(y1);
+  y2=TMath::Abs(y2);
+  
+  TParticle *  part1 = (TParticle *) fParticles.At(iPart1);
+  TParticle *  part2 = (TParticle *) fParticles.At(iPart2);
+  
+  Int_t pdg1 = part1->GetPdgCode();
+  Int_t pdg2 = part2->GetPdgCode();
+  
+  
+  Int_t iPart = -1;
+  if (pdg1 == 2212 && pdg2 == 2212)
+  {
+    if(y1 > y2)
+      iPart = iPart1;
+    else if(y1 < y2)
+      iPart = iPart2;
+    else {
+      iPart = iPart1;
+      if((AliPythiaRndm::GetPythiaRandom())->Uniform(0.,1.)>0.5) iPart = iPart2;
+    }
+  }
+  else if (pdg1 == 2212)
+    iPart = iPart1;
+  else if (pdg2 == 2212)
+    iPart = iPart2;
+  
+  
+  
+  
+  
+  Double_t M=-1.;
+  if(iPart>0) {
+    TParticle *  part = (TParticle *) fParticles.At(iPart);
+    Double_t E= part->Energy();
+    Double_t P= part->P();
+    Double_t M2 = (fEnergyCMS-E-P)*(fEnergyCMS-E+P);
+    if(M2<0)  return kFALSE;
+    M= TMath::Sqrt(M2);
+  }
+  
+  Double_t Mmin, Mmax, wSD, wDD, wND;
+  if(!GetWeightsDiffraction(M, Mmin, Mmax, wSD, wDD, wND)) return kFALSE;
+  
+  if(M>-1 && M<Mmin) return kFALSE;
+  if(M>Mmax) M=-1;
+  
+  Int_t procType=fPythia->GetMSTI(1);
+  Int_t proc0=2;
+  if(procType== 94) proc0=1;
+  if(procType== 92 || procType== 93) proc0=0;
+  
+  Int_t proc=2;
+  if(M>0) proc=0;
+  else if(proc0==1) proc=1;
+  
+  if(proc==1 && (AliPythiaRndm::GetPythiaRandom())->Uniform(0.,1.) > wDD) return kFALSE;
+  if(proc==2 && (AliPythiaRndm::GetPythiaRandom())->Uniform(0.,1.) > wND) return kFALSE;
+  
+  
+  //     if(proc==1 || proc==2) return kFALSE;
+  
+  if(proc!=0) {
+    if(proc0!=0) fProcDiff = procType;
+    else       fProcDiff = 95;
+    return kTRUE;
+  }
+  
+  if(wSD<0)  AliError("wSD<0 ! \n");
+  
+  if((AliPythiaRndm::GetPythiaRandom())->Uniform(0.,1.)> wSD) return kFALSE;
+  
+  //    printf("iPart = %d\n", iPart);
+  
+  if(iPart==iPart1) fProcDiff=93;
+  else if(iPart==iPart2) fProcDiff=92;
+  else {
+    printf("EROOR:  iPart!=iPart1 && iPart!=iPart2\n");
+    
+  }
+  
+  return kTRUE;
+}
+
+
+
+Bool_t AliGenPythia6Diff::GetWeightsDiffraction(Double_t M, Double_t &Mmin, Double_t &Mmax,
+                                                Double_t &wSD, Double_t &wDD, Double_t &wND)
+{
+  
+  // 900 GeV
+  if(TMath::Abs(fEnergyCMS-900)<1 ){
+    
+    const Int_t nbin=400;
+    Double_t bin[]={
+      1.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500,
+      4.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300,
+      7.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100,
+      10.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900,
+      13.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700,
+      15.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500,
+      18.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300,
+      21.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100,
+      24.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900,
+      27.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700,
+      30.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500,
+      33.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300,
+      36.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100,
+      39.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900,
+      42.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700,
+      45.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500,
+      48.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300,
+      51.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100,
+      54.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900,
+      57.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700,
+      60.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500,
+      63.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300,
+      66.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100,
+      69.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900,
+      72.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700,
+      75.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500,
+      78.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300,
+      81.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100,
+      84.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900,
+      87.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700,
+      90.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500,
+      93.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300,
+      96.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100,
+      99.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900,
+      102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700,
+      105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500,
+      108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300,
+      111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100,
+      114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900,
+      117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700,
+      120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500,
+      123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300,
+      126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100,
+      129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900,
+      132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700,
+      135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500,
+      138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300,
+      141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100,
+      144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900,
+      147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700,
+      150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500,
+      153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300,
+      156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100,
+      159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900,
+      162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700,
+      165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500,
+      168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300,
+      171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100,
+      174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900,
+      177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700,
+      180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500,
+      183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300,
+      186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100,
+      189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900,
+      192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700,
+      195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500,
+      198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
+    Double_t w[]={
+      1.000000, 0.643457, 0.645609, 0.648347, 0.604563, 0.605002,
+      0.602819, 0.611473, 0.576412, 0.562354, 0.550216, 0.529285,
+      0.534558, 0.534364, 0.530358, 0.518475, 0.489253, 0.469754,
+      0.469825, 0.450513, 0.455849, 0.435312, 0.437210, 0.456686,
+      0.413577, 0.427093, 0.426894, 0.418834, 0.409475, 0.388483,
+      0.412208, 0.388912, 0.389611, 0.382572, 0.389220, 0.370964,
+      0.380463, 0.370873, 0.363701, 0.369363, 0.357361, 0.365759,
+      0.348566, 0.337062, 0.348190, 0.332330, 0.359001, 0.335836,
+      0.339154, 0.335599, 0.336035, 0.335204, 0.353440, 0.337836,
+      0.333874, 0.307120, 0.294963, 0.324978, 0.313359, 0.317688,
+      0.323758, 0.319304, 0.335317, 0.301765, 0.317257, 0.356331,
+      0.323119, 0.297732, 0.303188, 0.326102, 0.316467, 0.294728,
+      0.308135, 0.288857, 0.325692, 0.312493, 0.291100, 0.325921,
+      0.313317, 0.295980, 0.308481, 0.328380, 0.313081, 0.296763,
+      0.295431, 0.317325, 0.320462, 0.286918, 0.316035, 0.335208,
+      0.283193, 0.333945, 0.292534, 0.294164, 0.330680, 0.296992,
+      0.285509, 0.317260, 0.298269, 0.311299, 0.312129, 0.286822,
+      0.287442, 0.319139, 0.283314, 0.318454, 0.297727, 0.301597,
+      0.282483, 0.294792, 0.305569, 0.290957, 0.297817, 0.282908,
+      0.272401, 0.305584, 0.300220, 0.297020, 0.298781, 0.278008,
+      0.277727, 0.323777, 0.287419, 0.342074, 0.287259, 0.303658,
+      0.302668, 0.279622, 0.280586, 0.313630, 0.276068, 0.257051,
+      0.309996, 0.265534, 0.297138, 0.281738, 0.294610, 0.292882,
+      0.286860, 0.312686, 0.293244, 0.293744, 0.271375, 0.278734,
+      0.280308, 0.304739, 0.287907, 0.285261, 0.311180, 0.313476,
+      0.289660, 0.289282, 0.319505, 0.271285, 0.272008, 0.289245,
+      0.281038, 0.285284, 0.295836, 0.281416, 0.283501, 0.295417,
+      0.304372, 0.297764, 0.291378, 0.321530, 0.315604, 0.329507,
+      0.282609, 0.275576, 0.283721, 0.311714, 0.283760, 0.273188,
+      0.312193, 0.264347, 0.281532, 0.301226, 0.281718, 0.336408,
+      0.283157, 0.332010, 0.289974, 0.290256, 0.301569, 0.332228,
+      0.288282, 0.326339, 0.313653, 0.300361, 0.289470, 0.264830,
+      0.298659, 0.272359, 0.278878, 0.306001, 0.328168, 0.294991,
+      0.327737, 0.278056, 0.302435, 0.284183, 0.279270, 0.307279,
+      0.307917, 0.315196, 0.283803, 0.313333, 0.315730, 0.304818,
+      0.307171, 0.295223, 0.333741, 0.346911, 0.310143, 0.336686,
+      0.275459, 0.334781, 0.295405, 0.275816, 0.301678, 0.327242,
+      0.320717, 0.309230, 0.292145, 0.294489, 0.305088, 0.300969,
+      0.277438, 0.326159, 0.297065, 0.301177, 0.303843, 0.275382,
+      0.304019, 0.284166, 0.289610, 0.331611, 0.317131, 0.310880,
+      0.360456, 0.294052, 0.342694, 0.327166, 0.336797, 0.298040,
+      0.295767, 0.260053, 0.325544, 0.335310, 0.320182, 0.301072,
+      0.313117, 0.283407, 0.299206, 0.293525, 0.305067, 0.255978,
+      0.327055, 0.316382, 0.317700, 0.278993, 0.283120, 0.314000,
+      0.274396, 0.291208, 0.348813, 0.319603, 0.313076, 0.289155,
+      0.343988, 0.311426, 0.322896, 0.328726, 0.337062, 0.389093,
+      0.284122, 0.312184, 0.304008, 0.319170, 0.320778, 0.288390,
+      0.337272, 0.356273, 0.343310, 0.312209, 0.330709, 0.297977,
+      0.346146, 0.369162, 0.324385, 0.339831, 0.337037, 0.318739,
+      0.343157, 0.277720, 0.368407, 0.321330, 0.338997, 0.314220,
+      0.328861, 0.321824, 0.328013, 0.356925, 0.359144, 0.296314,
+      0.345415, 0.396711, 0.347032, 0.294928, 0.343799, 0.322331,
+      0.328656, 0.326098, 0.337338, 0.337038, 0.300179, 0.351391,
+      0.324337, 0.330896, 0.302842, 0.310522, 0.337052, 0.359989,
+      0.383250, 0.359355, 0.315382, 0.333113, 0.342598, 0.355348,
+      0.320751, 0.320475, 0.351762, 0.351475, 0.338358, 0.326153,
+      0.302507, 0.340048, 0.318685, 0.381646, 0.339320, 0.299453,
+      0.426599, 0.393515, 0.353929, 0.328435, 0.413976, 0.292558,
+      0.379340, 0.358344, 0.409259, 0.313821, 0.336675, 0.324521,
+      0.408382, 0.346273, 0.312939, 0.362453, 0.343152, 0.330577,
+      0.332831, 0.353299, 0.347745, 0.334818, 0.332234, 0.385585,
+      0.395483, 0.395316, 0.326972, 0.349434, 0.317604, 0.328980,
+      0.375056, 0.317290, 0.357083, 0.346165, 0.310444, 0.356873,
+      0.359523, 0.365308, 0.365122, 0.383685, 0.370975, 0.396928,
+      0.407654, 0.307755, 0.323033, 0.350580, 0.345231, 0.342462,
+      0.400000, 0.318309, 0.403570, 0.322856, 0.383053, 0.422252,
+      0.386112, 0.364314, 0.434375, 0.334629};
+    wDD = 0.379611;
+    wND = 0.496961;
+    wSD = -1;
+    
+    Mmin = bin[0];
+    Mmax = bin[nbin];
+    if(M<Mmin || M>Mmax) return kTRUE;
+    
+    Int_t ibin=nbin-1;
+    for(Int_t i=1; i<=nbin; i++)
+      if(M<=bin[i]) {
+        ibin=i-1;
+        //     printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
+        break;
+      }
+    wSD=w[ibin];
+    return kTRUE;
+  }
+  else if(TMath::Abs(fEnergyCMS-2760)<1 ){
+    
+    const Int_t nbin=400;
+    Double_t bin[]={
+      1.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500,
+      4.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300,
+      7.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100,
+      10.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900,
+      13.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700,
+      15.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500,
+      18.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300,
+      21.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100,
+      24.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900,
+      27.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700,
+      30.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500,
+      33.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300,
+      36.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100,
+      39.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900,
+      42.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700,
+      45.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500,
+      48.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300,
+      51.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100,
+      54.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900,
+      57.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700,
+      60.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500,
+      63.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300,
+      66.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100,
+      69.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900,
+      72.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700,
+      75.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500,
+      78.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300,
+      81.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100,
+      84.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900,
+      87.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700,
+      90.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500,
+      93.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300,
+      96.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100,
+      99.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900,
+      102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700,
+      105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500,
+      108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300,
+      111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100,
+      114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900,
+      117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700,
+      120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500,
+      123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300,
+      126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100,
+      129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900,
+      132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700,
+      135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500,
+      138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300,
+      141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100,
+      144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900,
+      147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700,
+      150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500,
+      153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300,
+      156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100,
+      159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900,
+      162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700,
+      165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500,
+      168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300,
+      171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100,
+      174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900,
+      177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700,
+      180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500,
+      183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300,
+      186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100,
+      189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900,
+      192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700,
+      195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500,
+      198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
+    Double_t w[]={
+      1.000000, 0.692593, 0.673384, 0.666273, 0.657285, 0.637723,
+      0.625881, 0.643590, 0.606100, 0.589007, 0.567824, 0.578705,
+      0.538530, 0.517937, 0.528278, 0.515918, 0.539461, 0.466186,
+      0.489869, 0.468402, 0.465017, 0.453336, 0.460769, 0.474638,
+      0.456347, 0.434471, 0.427478, 0.435435, 0.410934, 0.366431,
+      0.382240, 0.379513, 0.394249, 0.386837, 0.353103, 0.382138,
+      0.377497, 0.389479, 0.378736, 0.347933, 0.354605, 0.352077,
+      0.324443, 0.358792, 0.339968, 0.359052, 0.330734, 0.318291,
+      0.333703, 0.358644, 0.335819, 0.332213, 0.309051, 0.309975,
+      0.331626, 0.304407, 0.309819, 0.312097, 0.312462, 0.320411,
+      0.280401, 0.302311, 0.315863, 0.281479, 0.310003, 0.296911,
+      0.313676, 0.281071, 0.294163, 0.306500, 0.283462, 0.274867,
+      0.307149, 0.270555, 0.282264, 0.287373, 0.307849, 0.278675,
+      0.286990, 0.278269, 0.300105, 0.286799, 0.265674, 0.275140,
+      0.285702, 0.257352, 0.267714, 0.248204, 0.252220, 0.255678,
+      0.282946, 0.268257, 0.282375, 0.262675, 0.275564, 0.248345,
+      0.236259, 0.291914, 0.259936, 0.241338, 0.267389, 0.285044,
+      0.289419, 0.253594, 0.284568, 0.231840, 0.260008, 0.268527,
+      0.275363, 0.224115, 0.281260, 0.257913, 0.295152, 0.264399,
+      0.232287, 0.282533, 0.223431, 0.255756, 0.244471, 0.221695,
+      0.272450, 0.284244, 0.253682, 0.270717, 0.275403, 0.240323,
+      0.245081, 0.241859, 0.216340, 0.244789, 0.220291, 0.238478,
+      0.224691, 0.244058, 0.266117, 0.271478, 0.242012, 0.267321,
+      0.248494, 0.253343, 0.255606, 0.235458, 0.241079, 0.233223,
+      0.226813, 0.259224, 0.234239, 0.258606, 0.210892, 0.238186,
+      0.243271, 0.222678, 0.213437, 0.273939, 0.247966, 0.232548,
+      0.263438, 0.222089, 0.272111, 0.248818, 0.244295, 0.238368,
+      0.236908, 0.248776, 0.232604, 0.231194, 0.227117, 0.231152,
+      0.282140, 0.229778, 0.232631, 0.261794, 0.216633, 0.253471,
+      0.242157, 0.227406, 0.269335, 0.230547, 0.210618, 0.285872,
+      0.248776, 0.229875, 0.242728, 0.227388, 0.220567, 0.222062,
+      0.235950, 0.224087, 0.228895, 0.208287, 0.235999, 0.208696,
+      0.230367, 0.267667, 0.220484, 0.233402, 0.233815, 0.250455,
+      0.253120, 0.219556, 0.230980, 0.236661, 0.222395, 0.226111,
+      0.198315, 0.210555, 0.202813, 0.208594, 0.235976, 0.221490,
+      0.243059, 0.204901, 0.216987, 0.229039, 0.231466, 0.221975,
+      0.231220, 0.253638, 0.250448, 0.260291, 0.328345, 0.205739,
+      0.222014, 0.251513, 0.279427, 0.270506, 0.248409, 0.222472,
+      0.291632, 0.227796, 0.248769, 0.276896, 0.214742, 0.200139,
+      0.230693, 0.226031, 0.268900, 0.185160, 0.245353, 0.205843,
+      0.231155, 0.219122, 0.214811, 0.199763, 0.274179, 0.217598,
+      0.274988, 0.237244, 0.211820, 0.225459, 0.252799, 0.235948,
+      0.224986, 0.245385, 0.237770, 0.213373, 0.229737, 0.215487,
+      0.234453, 0.249684, 0.239435, 0.250422, 0.257194, 0.214762,
+      0.212266, 0.228988, 0.253798, 0.201607, 0.239946, 0.205245,
+      0.231670, 0.212774, 0.206768, 0.231563, 0.189388, 0.227926,
+      0.227203, 0.237754, 0.221628, 0.211138, 0.203322, 0.200985,
+      0.231780, 0.220294, 0.232686, 0.234243, 0.218264, 0.255870,
+      0.223213, 0.238670, 0.213713, 0.213064, 0.246700, 0.233446,
+      0.221503, 0.206767, 0.200722, 0.226179, 0.237425, 0.239229,
+      0.238611, 0.240419, 0.247806, 0.215923, 0.205298, 0.232778,
+      0.272312, 0.226773, 0.258103, 0.223287, 0.269404, 0.203398,
+      0.223782, 0.204213, 0.229664, 0.234040, 0.228419, 0.203936,
+      0.263686, 0.199141, 0.236127, 0.214058, 0.204611, 0.224324,
+      0.292140, 0.190735, 0.235157, 0.213018, 0.257085, 0.190554,
+      0.203197, 0.213044, 0.237023, 0.214243, 0.193562, 0.262403,
+      0.206256, 0.221396, 0.233588, 0.256611, 0.249731, 0.226683,
+      0.199330, 0.251026, 0.222596, 0.201941, 0.186374, 0.221038,
+      0.196555, 0.222560, 0.299419, 0.231979, 0.242924, 0.198310,
+      0.217628, 0.235458, 0.278595, 0.218624, 0.277305, 0.239109,
+      0.205600, 0.253715, 0.221173, 0.218195, 0.277647, 0.241974,
+      0.268748, 0.268128, 0.292258, 0.249420, 0.191034, 0.219506,
+      0.216502, 0.250677, 0.193386, 0.201310, 0.259464, 0.255351,
+      0.269628, 0.221063, 0.294079, 0.196726, 0.233634, 0.221870,
+      0.216236, 0.197259, 0.247433, 0.272765, 0.294079, 0.236336,
+      0.206396, 0.238524, 0.247846, 0.269519, 0.237141, 0.230611,
+      0.201712, 0.242225, 0.255565, 0.258738};
+    wDD = 0.512813;
+    wND = 0.518820;
+    wSD = -1;
+    
+    Mmin = bin[0];
+    Mmax = bin[nbin];
+    if(M<Mmin || M>Mmax) return kTRUE;
+    
+    Int_t ibin=nbin-1;
+    for(Int_t i=1; i<=nbin; i++)
+      if(M<=bin[i]) {
+        ibin=i-1;
+        //     printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
+        break;
+      }
+    wSD=w[ibin];
+    return kTRUE;
+  }
+  
+  
+  else if(TMath::Abs(fEnergyCMS-7000)<1  || TMath::Abs(fEnergyCMS-8000)<1){
+    const Int_t nbin=400;
+    Double_t bin[]={
+      1.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500,
+      4.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300,
+      7.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100,
+      10.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900,
+      13.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700,
+      15.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500,
+      18.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300,
+      21.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100,
+      24.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900,
+      27.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700,
+      30.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500,
+      33.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300,
+      36.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100,
+      39.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900,
+      42.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700,
+      45.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500,
+      48.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300,
+      51.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100,
+      54.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900,
+      57.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700,
+      60.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500,
+      63.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300,
+      66.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100,
+      69.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900,
+      72.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700,
+      75.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500,
+      78.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300,
+      81.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100,
+      84.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900,
+      87.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700,
+      90.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500,
+      93.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300,
+      96.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100,
+      99.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900,
+      102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700,
+      105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500,
+      108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300,
+      111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100,
+      114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900,
+      117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700,
+      120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500,
+      123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300,
+      126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100,
+      129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900,
+      132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700,
+      135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500,
+      138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300,
+      141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100,
+      144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900,
+      147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700,
+      150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500,
+      153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300,
+      156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100,
+      159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900,
+      162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700,
+      165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500,
+      168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300,
+      171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100,
+      174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900,
+      177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700,
+      180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500,
+      183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300,
+      186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100,
+      189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900,
+      192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700,
+      195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500,
+      198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
+    Double_t w[]={
+      1.000000, 0.798640, 0.770197, 0.717990, 0.699434, 0.692093,
+      0.620940, 0.655294, 0.636496, 0.633483, 0.600518, 0.594548,
+      0.550759, 0.550413, 0.528926, 0.525877, 0.506701, 0.504117,
+      0.486973, 0.492930, 0.461833, 0.488695, 0.438874, 0.460274,
+      0.451551, 0.454424, 0.449270, 0.387571, 0.427556, 0.428740,
+      0.401682, 0.402260, 0.408961, 0.395417, 0.387426, 0.378602,
+      0.357826, 0.359125, 0.348494, 0.363710, 0.356117, 0.340363,
+      0.337637, 0.396084, 0.341777, 0.340551, 0.348838, 0.344014,
+      0.340468, 0.317654, 0.355584, 0.326023, 0.373416, 0.312298,
+      0.326522, 0.290540, 0.335557, 0.318689, 0.327544, 0.319501,
+      0.331754, 0.312728, 0.282263, 0.274937, 0.303867, 0.307820,
+      0.289344, 0.268934, 0.288908, 0.290018, 0.291369, 0.295242,
+      0.289067, 0.277685, 0.267957, 0.267559, 0.320229, 0.265060,
+      0.305931, 0.305352, 0.262064, 0.281879, 0.287780, 0.270033,
+      0.270814, 0.276667, 0.271531, 0.275283, 0.258189, 0.287969,
+      0.251247, 0.301527, 0.267230, 0.245860, 0.293125, 0.253421,
+      0.272396, 0.243637, 0.236206, 0.278452, 0.246544, 0.263165,
+      0.230484, 0.231102, 0.258281, 0.244707, 0.270111, 0.248295,
+      0.246942, 0.245592, 0.272766, 0.254243, 0.199647, 0.262590,
+      0.226710, 0.243836, 0.214153, 0.233535, 0.235207, 0.234245,
+      0.247698, 0.248379, 0.241463, 0.265230, 0.223242, 0.236191,
+      0.252700, 0.231865, 0.228352, 0.229101, 0.237385, 0.246485,
+      0.254706, 0.245565, 0.224841, 0.257301, 0.240968, 0.202379,
+      0.236943, 0.241683, 0.220809, 0.219014, 0.213015, 0.244470,
+      0.221042, 0.198996, 0.225295, 0.264466, 0.200600, 0.228143,
+      0.250138, 0.216784, 0.268002, 0.275734, 0.218144, 0.229866,
+      0.235443, 0.208909, 0.215067, 0.189743, 0.216741, 0.242686,
+      0.200234, 0.218882, 0.245991, 0.222815, 0.219576, 0.209773,
+      0.205247, 0.203855, 0.202534, 0.192536, 0.223447, 0.225810,
+      0.220583, 0.248421, 0.223424, 0.206033, 0.203130, 0.221225,
+      0.223763, 0.239216, 0.252311, 0.206893, 0.228461, 0.233591,
+      0.201512, 0.242382, 0.215147, 0.232578, 0.207116, 0.239213,
+      0.196215, 0.184367, 0.235135, 0.189768, 0.274084, 0.206267,
+      0.203283, 0.248828, 0.250214, 0.217465, 0.232080, 0.215150,
+      0.207936, 0.176789, 0.191338, 0.188655, 0.196181, 0.223691,
+      0.254257, 0.216874, 0.213536, 0.221399, 0.192024, 0.212534,
+      0.218169, 0.226635, 0.201191, 0.212700, 0.211634, 0.232353,
+      0.223636, 0.208605, 0.249132, 0.183681, 0.221842, 0.187136,
+      0.203772, 0.249575, 0.217713, 0.205193, 0.193941, 0.219707,
+      0.264226, 0.182105, 0.207183, 0.220845, 0.236571, 0.182390,
+      0.212914, 0.186266, 0.195361, 0.217665, 0.204527, 0.188804,
+      0.222832, 0.191193, 0.201073, 0.185616, 0.195011, 0.200828,
+      0.181434, 0.233707, 0.202925, 0.211992, 0.173100, 0.205258,
+      0.182695, 0.216520, 0.218422, 0.209490, 0.211257, 0.215801,
+      0.220652, 0.211409, 0.195731, 0.194957, 0.198888, 0.234926,
+      0.221377, 0.229822, 0.176700, 0.172322, 0.212265, 0.206133,
+      0.170355, 0.253305, 0.198688, 0.240043, 0.225384, 0.174729,
+      0.195820, 0.200093, 0.196912, 0.212308, 0.200490, 0.240415,
+      0.159744, 0.173686, 0.223853, 0.213604, 0.193779, 0.179328,
+      0.180873, 0.237481, 0.179640, 0.235857, 0.202847, 0.167690,
+      0.245093, 0.215504, 0.205848, 0.184408, 0.201626, 0.209651,
+      0.236306, 0.217803, 0.188534, 0.187861, 0.161663, 0.221718,
+      0.152044, 0.190412, 0.173505, 0.208995, 0.174575, 0.180734,
+      0.247704, 0.203388, 0.194184, 0.169679, 0.182703, 0.213402,
+      0.191808, 0.178604, 0.178116, 0.198452, 0.174687, 0.169809,
+      0.222851, 0.156811, 0.229170, 0.210359, 0.178557, 0.248570,
+      0.208536, 0.192571, 0.178912, 0.224505, 0.170822, 0.205492,
+      0.330973, 0.160924, 0.203724, 0.213255, 0.205827, 0.187162,
+      0.181252, 0.191723, 0.238106, 0.182398, 0.202358, 0.212066,
+      0.201255, 0.168159, 0.185219, 0.229176, 0.158222, 0.164092,
+      0.215405, 0.200724, 0.234811, 0.184488, 0.213112, 0.198577,
+      0.219622, 0.160671, 0.179349, 0.206681, 0.206091, 0.165618,
+      0.165203, 0.174442, 0.179287, 0.187318, 0.163481, 0.217440,
+      0.160381, 0.177025, 0.204385, 0.163676, 0.210733, 0.186519,
+      0.230701, 0.191764, 0.185119, 0.190770, 0.242987, 0.186812,
+      0.202906, 0.161935, 0.182426, 0.197922, 0.181475, 0.155903,
+      0.175006, 0.223482, 0.202706, 0.218108};
+    wDD = 0.207705;
+    wND = 0.289628;
+    wSD = -1;
+    
+    Mmin = bin[0];
+    Mmax = bin[nbin];
+    
+    if(M<Mmin || M>Mmax) return kTRUE;
+    
+    Int_t ibin=nbin-1;
+    for(Int_t i=1; i<=nbin; i++)
+      if(M<=bin[i]) {
+        ibin=i-1;
+        //     printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
+        break;
+      }
+    wSD=w[ibin];
+    return kTRUE;
+  }
+  
+  return kFALSE;
+}
+
+Bool_t AliGenPythia6Diff::IsFromHeavyFlavor(Int_t ipart)
+{
+  // Check if this is a heavy flavor decay product
+  TParticle *  part = (TParticle *) fParticles.At(ipart);
+  Int_t mpdg = TMath::Abs(part->GetPdgCode());
+  Int_t mfl  = Int_t (mpdg / TMath::Power(10, Int_t(TMath::Log10(mpdg))));
+  //
+  // Light hadron
+  if (mfl >= 4 && mfl < 6) return kTRUE;
+  
+  Int_t imo = part->GetFirstMother()-1;
+  TParticle* pm = part;
+  //
+  // Heavy flavor hadron produced by generator
+  while (imo >  -1) {
+    pm  =  (TParticle*)fParticles.At(imo);
+    mpdg = TMath::Abs(pm->GetPdgCode());
+    mfl  = Int_t (mpdg / TMath::Power(10, Int_t(TMath::Log10(mpdg))));
+    if ((mfl > 3) && (mfl <6) && mpdg > 400) return kTRUE;
+    imo = pm->GetFirstMother()-1;
+  }
+  return kFALSE;
+}
+
+Bool_t AliGenPythia6Diff::CheckDetectorAcceptance(Float_t phi, Float_t eta, Int_t iparticle)
+{
+  // check the eta/phi correspond to the detectors acceptance
+  // iparticle is the index of the particle to be checked, for PHOS rotation case
+  if     (fCheckPHOS   && IsInPHOS  (phi,eta,iparticle)) return kTRUE;
+  else if(fCheckEMCAL  && IsInEMCAL (phi,eta)) return kTRUE;
+  else if(fCheckBarrel && IsInBarrel(    eta)) return kTRUE;
+  else                                         return kFALSE;
+}
+
+Bool_t AliGenPythia6Diff::TriggerOnSelectedParticles(Int_t np)
+{
+  // Select events with fragmentation photon, decay photon, pi0, eta or other hadrons going to PHOS or EMCAL or central barrel,
+  // implemented primaryly for kPyJets, but extended to any kind of process.
+  
+  //printf("Check: frag photon %d, pi0 %d, eta %d, electron %d, hadron %d, decay %d, PHOS %d, EMCAL %d, Barrel %d \n",
+  //       fFragPhotonInCalo,fPi0InCalo, fEtaInCalo,fEleInCalo,fHadronInCalo,fDecayPhotonInCalo,fCheckPHOS,fCheckEMCAL, fCheckBarrel);
+  
+  Bool_t ok = kFALSE;
+  for (Int_t i=0; i< np; i++) {
+    
+    TParticle* iparticle = (TParticle *) fParticles.At(i);
+    
+    Int_t pdg          = iparticle->GetPdgCode();
+    Int_t status       = iparticle->GetStatusCode();
+    Int_t imother      = iparticle->GetFirstMother() - 1;
+    
+    TParticle* pmother = 0x0;
+    Int_t momStatus    = -1;
+    Int_t momPdg       = -1;
+    if(imother > 0 ){
+      pmother = (TParticle *) fParticles.At(imother);
+      momStatus    = pmother->GetStatusCode();
+      momPdg       = pmother->GetPdgCode();
+    }
+    
+    ok = kFALSE;
+    
+    //
+    // Check the particle type: hadron (not pi0 or eta), electron, decay photon (from pi0 or eta or any), pi0 or eta
+    //
+    // Hadron
+    if (fHadronInCalo && status == 1)
+    {
+      if(TMath::Abs(pdg) > 23 && pdg !=221 && pdg != 111) // avoid photons, electrons, muons, neutrinos and eta or pi0
+        // (in case neutral mesons were declared stable)
+        ok = kTRUE;
+    }
+    //Electron
+    else if (fEleInCalo && status == 1 && TMath::Abs(pdg) == 11)
+    {
+      ok = kTRUE;
+    }
+    //Fragmentation photon
+    else if (fFragPhotonInCalo && pdg == 22 && status == 1)
+    {
+      if(momStatus != 11) ok = kTRUE ;  // No photon from hadron decay
+    }
+    // Decay photon
+    else if (fDecayPhotonInCalo && !fForceNeutralMeson2PhotonDecay && pdg == 22) // pi0 status can be 1 or 11 depending on decay settings, work only for 11
+    {
+      if( momStatus == 11)
+      {
+        //if(iparticle->Pt() > fTriggerParticleMinPt) printf("Decay photon! pdg %d, status %d, pt %2.2f, mom: pdg %d, pt %2.2f\n",
+        //                                                   pdg,status,iparticle->Pt(),momPdg,pmother->Pt());
+        ok = kTRUE ;  // photon from hadron decay
+        
+        //In case only decays from pi0 or eta requested
+        if(fPi0InCalo && momPdg!=111) ok = kFALSE;
+        if(fEtaInCalo && momPdg!=221) ok = kFALSE;
+      }
+      
+    }
+    // Pi0 or Eta particle
+    else if ((fPi0InCalo || fEtaInCalo))
+    {
+      if(fDecayPhotonInCalo && !fForceNeutralMeson2PhotonDecay ) continue ;
+      
+      if (fPi0InCalo && pdg == 111) // pi0 status can be 1 or 11 depending on decay settings
+      {
+        //if(iparticle->Pt() > fTriggerParticleMinPt) printf("Pi0! pdg %d, status %d, pt %2.2f\n",pdg,status,iparticle->Pt());
+        ok = kTRUE;
+      }
+      else if (fEtaInCalo && pdg == 221)
+      {
+        //if(iparticle->Pt() > fTriggerParticleMinPt) printf("Eta! pdg %d, status %d, pt %2.2f\n",pdg,status,iparticle->Pt());
+        ok = kTRUE;
+      }
+      
+    }// pi0 or eta
+    
+    //
+    // Check that the selected particle is in the calorimeter acceptance
+    //
+    if(ok && iparticle->Pt() > fTriggerParticleMinPt)
+    {
+      //Just check if the selected particle falls in the acceptance
+      if(!fForceNeutralMeson2PhotonDecay )
+      {
+        //printf("\t Check acceptance! \n");
+        Float_t phi = iparticle->Phi()*180./TMath::Pi(); //Convert to degrees
+        Float_t eta =TMath::Abs(iparticle->Eta()); //in calos etamin=-etamax
+        
+        if(CheckDetectorAcceptance(phi,eta,i))
+        {
+          ok =kTRUE;
+          AliDebug(1,Form("Selected trigger pdg %d, status %d, pt %2.2f, eta %2.2f, phi %2.2f\n",pdg,status,iparticle->Pt(), eta, phi));
+          //printf("\t Accept \n");
+          break;
+        }
+        else ok = kFALSE;
+      }
+      //Mesons have several decay modes, select only those decaying into 2 photons
+      else if(fForceNeutralMeson2PhotonDecay && (fPi0InCalo || fEtaInCalo))
+      {
+        // In case we want the pi0/eta trigger, 
+        // check the decay mode (2 photons)
+        
+        //printf("\t Force decay 2 gamma\n");          
+        
+        Int_t ndaughters = iparticle->GetNDaughters();
+        if(ndaughters != 2){
+          ok=kFALSE;
+          continue;
+        }
+        
+        TParticle*d1 = (TParticle *) fParticles.At(iparticle->GetDaughter(0)-1);
+        TParticle*d2 = (TParticle *) fParticles.At(iparticle->GetDaughter(1)-1);
+        if(!d1 || !d2) {
+          ok=kFALSE;
+          continue;
+        }
+        
+        //iparticle->Print();
+        //d1->Print();
+        //d2->Print();
+        
+        Int_t pdgD1 = d1->GetPdgCode();
+        Int_t pdgD2 = d2->GetPdgCode();
+        //printf("\t \t 2 daughters pdg = %d - %d\n",pdgD1,pdgD2);
+        //printf("mother %d - %d\n",d1->GetFirstMother(),d2->GetFirstMother());
+        
+        if(pdgD1 != 22  || pdgD2 != 22){ 
+          ok = kFALSE;
+          continue;
+        }
+        
+        //printf("\t accept decay\n");
+        
+        //Trigger on the meson, not on the daughter
+        if(!fDecayPhotonInCalo){    
+          
+          Float_t phi = iparticle->Phi()*180./TMath::Pi(); //Convert to degrees
+          Float_t eta =TMath::Abs(iparticle->Eta()); //in calos etamin=-etamax 
+          
+          if(CheckDetectorAcceptance(phi,eta,i))
+          {
+            //printf("\t Accept meson pdg %d\n",pdg);
+            ok =kTRUE;
+            AliDebug(1,Form("Selected trigger pdg %d (decay), status %d, pt %2.2f, eta %2.2f, phi %2.2f\n",pdg,status,iparticle->Pt(), eta, phi));
+            break;
+          } else {
+            ok=kFALSE;
+            continue;
+          }
+        }
+        
+        //printf("Check daughters acceptance\n");
+        
+        //Trigger on the meson daughters
+        //Photon 1
+        Float_t phi = d1->Phi()*180./TMath::Pi(); //Convert to degrees
+        Float_t eta =TMath::Abs(d1->Eta()); //in calos etamin=-etamax    
+        if(d1->Pt() > fTriggerParticleMinPt)
+        {
+          //printf("\t Check acceptance photon 1! \n");
+          if(CheckDetectorAcceptance(phi,eta,i))
+          {
+            //printf("\t Accept Photon 1\n");
+            ok =kTRUE;
+            AliDebug(1,Form("Selected trigger pdg %d (decay), status %d, pt %2.2f, eta %2.2f, phi %2.2f\n",pdg,status,iparticle->Pt(), eta, phi));
+            break;
+          }
+          else ok = kFALSE;
+        } // pt cut
+        else  ok = kFALSE;
+        
+        //Photon 2
+        phi = d2->Phi()*180./TMath::Pi(); //Convert to degrees
+        eta =TMath::Abs(d2->Eta()); //in calos etamin=-etamax  
+        
+        if(d2->Pt() > fTriggerParticleMinPt)
+        {
+          //printf("\t Check acceptance photon 2! \n");
+          if(CheckDetectorAcceptance(phi,eta,i))
+          {
+            //printf("\t Accept Photon 2\n");
+            ok =kTRUE;
+            AliDebug(1,Form("Selected trigger pdg %d (decay), status %d, pt %2.2f, eta %2.2f, phi %2.2f\n",pdg,status,iparticle->Pt(), eta, phi));
+            break;
+          } 
+          else ok = kFALSE;         
+        } // pt cut
+        else ok = kFALSE;
+      } // force 2 photon daughters in pi0/eta decays
+      else ok = kFALSE;
+    } else ok = kFALSE; // check acceptance
+  } // primary loop
+  
+  //
+  // If requested, rotate the particles event in phi to enhance/speed PHOS selection
+  // A particle passing all trigger conditions except phi position in PHOS, is used as reference
+  //
+  if(fCheckPHOSeta)
+  {
+    RotatePhi(ok);
+  }
+  
+  return ok;
+}
+
+
+AliGenerator* GenPythia6Diff()
+{
+  AliGenPythia6Diff* pythia = new AliGenPythia6Diff(-1);
+  pythia->SetMomentumRange(0, 999999.);
+  pythia->SetThetaRange(0., 180.);
+  pythia->SetYRange(-12.,12.);
+  pythia->SetPtRange(0,1000.);
+  pythia->SetProcess(kPyMb);
+  pythia->SetEnergyCMS(VAR_PYTHIA6_CMS_ENERGY);
+  //    Tune
+  //    320     Perugia 0
+  pythia->SetTune(320);
+  pythia->UseNewMultipleInteractionsScenario();
+  pythia->SetCrossingAngle(0,0.000280);
+  pythia->SetTuneForDiff();
+  
+  return pythia;
+}
index 16c01690854f0fa11aad055e0b90b7464c23178a..85f4b7635f3f5ef4d7eca6ac06a433680e586e4a 100644 (file)
@@ -9,7 +9,16 @@
 AliGenerator* GenPythia8()
 {
   AliGenPythiaPlus* generator = new AliGenPythiaPlus(AliPythia8::Instance());
-  generator->SetProcess(kPyMbDefault);
+
+  generator->SetProcess((Process_t)9999);
+  
+  // below the default setup corresponding to kPyMbDefault
+  // that we're not using directly otherwise the AliPythia8::ProcInit will
+  // override all our settings...
+
+  (AliPythia8::Instance())->ReadString("SoftQCD:minBias = on");
+       (AliPythia8::Instance())->ReadString("SoftQCD:singleDiffractive = on");
+       (AliPythia8::Instance())->ReadString("SoftQCD:doubleDiffractive = on");
   
   //   Centre of mass energy
   generator->SetEnergyCMS(VAR_PYTHIA8_CMS_ENERGY);
@@ -22,8 +31,24 @@ AliGenerator* GenPythia8()
   seed = seed%900000000;
   (AliPythia8::Instance())->ReadString("Random:setSeed = on");
   (AliPythia8::Instance())->ReadString(Form("Random:seed = %d", seed));
-  
+
   std::cout << "Pythia8 seed set to " << seed << std::endl;
+
+  
+  TString pythia8setup = VAR_PYTHIA8_SETUP_STRINGS;
+  TObjArray* setups = pythia8setup.Tokenize(";");
+  TIter next(setups);
+  TObjString* s;
+  
+  while ( ( s = static_cast<TObjString*>(next()) ) )
+  {
+    std::cout << "Passing setup string " << s->String().Data() << " to Pythia8" << std::endl;
+    (AliPythia8::Instance())->ReadString(Form("%s",s->String().Data()));
+  }
   
+  delete setups;
+
+  std::cout << "end of GenPythia8" << std::endl;
+
   return generator;
 }
index 826e2385c6c265e02d584db5c3f136e103cff744..d3a1ad1b589d37ddb4293a5eb4dde5d23e624f48 100644 (file)
@@ -10,7 +10,7 @@ void rec()
 
   if ( VAR_USE_ITS_RECO )
   {
-    reco.SetRunReconstruction("MUON ITS");
+    reco.SetRunReconstruction("VZERO T0 MUON ITS FMD");
   }
   else
   {
index 1c563e0e31335a05f4430d5159b63a66cc714edb..5a38e41e6f1aa92696bf5ab84aa6744b0fbe7fd4 100644 (file)
@@ -5,13 +5,22 @@ void sim(Int_t nev=100)
   }
 
   AliSimulation simulator;
-  simulator.SetTriggerConfig("MUON");
   simulator.SetRunQA("MUON:ALL");
   simulator.SetRunHLT("");
 
-  simulator.SetMakeSDigits("MUON");
-  simulator.SetMakeDigits("MUON");// ITS"); // ITS needed to propagate the simulated vertex
-  simulator.SetMakeDigitsFromHits("ITS"); // ITS needed to propagate the simulated vertex
+  if ( VAR_USE_ITS_RECO )
+  {
+    simulator.SetMakeSDigits("MUON T0 VZERO FMD"); // T0 and VZERO for trigger efficiencies, FMD for diffractive studies
+    simulator.SetMakeDigitsFromHits("ITS"); // ITS needed to propagate the simulated vertex
+    simulator.SetMakeDigits("MUON T0 VZERO FMD");// ITS"); // ITS needed to propagate the simulated vertex
+  }
+  else
+  {
+    simulator.SetTriggerConfig("MUON");
+    simulator.SetMakeSDigits("MUON");
+    simulator.SetMakeDigits("MUON");// ITS"); // ITS needed to propagate the simulated vertex
+  }
+  
 
   simulator.SetDefaultStorage(VAR_OCDB_PATH);
   
@@ -29,10 +38,13 @@ void sim(Int_t nev=100)
     // Mag.field from OCDB
     simulator.UseMagFieldFromGRP();
 
-    simulator.UseVertexFromCDB();  
+    if ( VAR_USE_ITS_RECO )
+    {
+      simulator.UseVertexFromCDB();
+    }
   }
   
-  // The rest
+   // The rest
   TStopwatch timer;
   timer.Start();
   simulator.Run(nev);
index 3c32a95dcba3abfe74a4690d827d50fab09b7f74..39f40b0da31de11edaf01b28b1fc875d8c931766 100644 (file)
@@ -62,6 +62,9 @@ if [ "$sv" = "" ]
                                     echo "* #  The AOD was not successfully checked   *"  >>stdout;
                                 else
                                     echo "* ----------------   Job Validated  ------------------*" >> stdout;
+                                    echo "Removing log files which will not be needed then" >> stdout;
+                                    rm -f *.log
+                                    touch ok.log
                                     error="0";
                                fi
                             fi
index e4c73e8a83fd76427066ce8e9cb0ca8aa8e73074..d4d922c63be9f46b4ce87f9ce434238f3874222c 100644 (file)
@@ -111,7 +111,7 @@ ClassImp(AliMuonAccEffSubmitter)
 
 //______________________________________________________________________________
 AliMuonAccEffSubmitter::AliMuonAccEffSubmitter(const char* generator, Bool_t localOnly,
-                                               int pythia8version)
+                                               const char* generatorVersion)
 : AliMuonGridSubmitter(AliMuonGridSubmitter::kAccEff,localOnly),
 fRatio(-1.0),
 fFixedNofEvents(10000),
@@ -126,12 +126,16 @@ fUseAODMerging(kFALSE)
 {
   // ctor
   //
-  // if generator contains "pythia8" and pythia8version is given then
-  // the pythia8version must represent the integer part XXX of the
+  // if generator contains "pythia8" and generatorVersion is given then
+  // the pythiaversion must represent the integer part XXX of the
   // include directory $ALICE_ROOT/PYTHI8/pythiaXXX/include where the file
   // Analysis.h is to be found.
+  //
+  // if generator contains "pythia6" then generatorVersion should be the
+  // X.YY part of libpythia6.X.YY.so
+  //
   
-  AddIncludePath("-I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/PYTHIA6 -I$ALICE_ROOT/LHAPDF -I$ALICE_ROOT/PWG/muon -I$ALICE_ROOT/PWG/muondep -I$ALICE_ROOT/MUON -I$ALICE_ROOT/include -I$ALICE_ROOT/EVGEN");
+  AddIncludePath("-I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/PYTHIA6 -I$ALICE_ROOT/LHAPDF -I$ALICE_ROOT/PWG/muon -I$ALICE_ROOT/PWG/muondep -I$ALICE_ROOT/MUON -I$ALICE_ROOT/include -I$ALICE_ROOT/EVGEN -I$ALICE_ROOT/FASTSIM");
   
   TString ocdbPath("raw://");
   
@@ -179,6 +183,7 @@ fUseAODMerging(kFALSE)
   SetVar("VAR_GENPARAMCUSTOMSINGLE_Y_P3","0.0130173");
 
   SetVar("VAR_PYTHIA8_CMS_ENERGY","8000");
+  SetVar("VAR_PYTHIA6_CMS_ENERGY","8000");
   
   SetVar("VAR_PURELY_LOCAL",Form("%d",localOnly));
   
@@ -192,6 +197,14 @@ fUseAODMerging(kFALSE)
 
   gSystem->Load("libEVGEN");
 
+  SetVar("VAR_TRIGGER_CONFIGURATION","");
+  
+  SetVar("VAR_PYTHIA8_INCLUDES","");
+  SetVar("VAR_PYTHIA8_SETENV","");
+
+  SetVar("VAR_PYTHIA6_INCLUDES","");
+  SetVar("VAR_PYTHIA6_SETENV","");
+  
   if ( TString(generator).Contains("pythia8",TString::kIgnoreCase) )
   {
     fMaxEventsPerChunk =  500; // 5000 is not reasonable with Pythia8 (and ITS+MUON...)
@@ -201,20 +214,20 @@ fUseAODMerging(kFALSE)
     
     SetVar("VAR_USE_ITS_RECO","1");
 
-    if (gSystem->AccessPathName(gSystem->ExpandPathName(Form("$ALICE_ROOT/PYTHIA8/pythia%d",pythia8version))))
+    if (gSystem->AccessPathName(gSystem->ExpandPathName(Form("$ALICE_ROOT/PYTHIA8/pythia%s",generatorVersion))))
     {
-      AliError(Form("Directory -I$ALICE_ROOT/PYTHIA8/pythia%d/include not found",pythia8version));
+      AliError(Form("Directory -I$ALICE_ROOT/PYTHIA8/pythia%s/include not found",generatorVersion));
       Invalidate();
       return;
     }
-    AddIncludePath(Form("-I$ALICE_ROOT/PYTHIA8 -I$ALICE_ROOT/PYTHIA8/pythia%d/include",pythia8version));
+    AddIncludePath(Form("-I$ALICE_ROOT/PYTHIA8 -I$ALICE_ROOT/PYTHIA8/pythia%s/include",generatorVersion));
 //    SetVar("VAR_PYTHIA8_VERSION",Form("\"%d\"",pythia8version));
     
-    SetVar("VAR_PYTHIA8_INCLUDES",Form("gSystem->AddIncludePath(\"-I$ALICE_ROOT/PYTHIA6 -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/LHAPDF -I$ALICE_ROOT/PYTHIA8 -I$ALICE_ROOT/PYTHIA8/pythia%d/include\");\n",pythia8version));
+    SetVar("VAR_PYTHIA8_INCLUDES",Form("gSystem->AddIncludePath(\"-I$ALICE_ROOT/PYTHIA6 -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/LHAPDF -I$ALICE_ROOT/PYTHIA8 -I$ALICE_ROOT/PYTHIA8/pythia%s/include\");\n",generatorVersion));
   
     TString p8env;
     
-    p8env += Form("  gSystem->Setenv(\"PYTHIA8DATA\", gSystem->ExpandPathName(\"$ALICE_ROOT/PYTHIA8/pythia%d/xmldoc\"));\n",pythia8version);
+    p8env += Form("  gSystem->Setenv(\"PYTHIA8DATA\", gSystem->ExpandPathName(\"$ALICE_ROOT/PYTHIA8/pythia%s/xmldoc\"));\n",generatorVersion);
     
     p8env += "  gSystem->Setenv(\"LHAPDF\",gSystem->ExpandPathName(\"$ALICE_ROOT/LHAPDF\"));\n";
     
@@ -225,17 +238,42 @@ fUseAODMerging(kFALSE)
     gSystem->Load("libFASTSIM");
     gSystem->Load("liblhapdf");      // Parton density functions
     gSystem->Load("libEGPythia6");   // TGenerator interface
-    gSystem->Load("libpythia6");     // Pythia 6.2
+//    gSystem->Load("libpythia6");     // Pythia 6.2
     gSystem->Load("libAliPythia6");  // ALICE specific implementations
-    gSystem->Load("libpythia8.so");
-    gSystem->Load("libAliPythia8.so");
+    gSystem->Load("libpythia8");
+    gSystem->Load("libAliPythia8");
+    
+    SetVar("VAR_PYTHIA8_SETUP_STRINGS","\"\"");
+    
+    SetVar("VAR_TRIGGER_CONFIGURATION","p-p");
   }
-  else
+  
+  if ( TString(generator).Contains("pythia6",TString::kIgnoreCase) )
   {
-    SetVar("VAR_PYTHIA8_INCLUDES","");
-    SetVar("VAR_PYTHIA8_SETENV","");
+    fMaxEventsPerChunk =  500; // 5000 is not reasonable with Pythia6 (and ITS+MUON...)
+
+    fCompactMode = 2; // keep AOD as for the time being the filtering driven from AODtrain.C cannot
+    // add SPD tracklets to muon AODs.
+
+    gSystem->Load("libFASTSIM");
+    gSystem->Load("liblhapdf");      // Parton density functions
+    gSystem->Load("libEGPythia6");   // TGenerator interface
+    gSystem->Load(Form("libpythia6.%s",generatorVersion));
+    gSystem->Load("libAliPythia6");
+    
+    SetVar("VAR_PYTHIA6_INCLUDES","gSystem->AddIncludePath(\"-I$ALICE_ROOT/PYTHIA6 -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/STEER/STEERBase -I$ALICE_ROOT/LHAPDF -I$ALICE_ROOT/FASTSIM\");");
+    
+    TString p6env;
+    
+    p6env += Form("gSystem->Load(\"libpythia6.%s\");",generatorVersion);
+    
+    SetVar("VAR_PYTHIA6_SETENV",p6env.Data());
+    
+    SetVar("VAR_USE_ITS_RECO","1");
+    
+    SetVar("VAR_TRIGGER_CONFIGURATION","p-p");
   }
-  
+
   SetGenerator(generator);
   
   if (localOnly)
@@ -325,7 +363,7 @@ Bool_t AliMuonAccEffSubmitter::GenerateMergeJDL(const char* name) const
   
   OutputToJDL(*os,"Validationcommand",Form("%s/validation_merge.sh",RemoteDir().Data()));
   
-  OutputToJDL(*os,"TTL","7200");
+  OutputToJDL(*os,"TTL","14400");
   
   OutputToJDL(*os,"OutputArchive",
     "log_archive.zip:stderr,stdout@disk=1",
@@ -416,7 +454,7 @@ Bool_t AliMuonAccEffSubmitter::GenerateRunJDL(const char* name) const
   else if ( CompactMode() == 1 )
   {
     // keep only muon AODs and QA
-    OutputToJDL(*os,"OutputArchive",  "log_archive.zip:stderr,stdout,aod.log,checkaod.log,checkesd.log,rec.log,sim.log@disk=1",
+    OutputToJDL(*os,"OutputArchive",  "log_archive.zip:stderr,stdout,*.log@disk=1",
            "root_archive.zip:galice*.root,AliAOD.Muons.root,Merged.QA.Data.root@disk=2");
   }
   else if ( CompactMode() == 2 )
@@ -446,7 +484,7 @@ Bool_t AliMuonAccEffSubmitter::GenerateRunJDL(const char* name) const
   }
   else
   {
-    OutputToJDL(*os,"TTL","7200");
+    OutputToJDL(*os,"TTL","14400");
   }
   
   return kTRUE;
@@ -543,7 +581,7 @@ Bool_t AliMuonAccEffSubmitter::Merge(Int_t stage, Bool_t dryRun)
   if (runs.empty())
   {
     AliError("No run to work with");
-    return kFALSE;
+    return 0;
   }
 
   TString currRun;
@@ -888,8 +926,14 @@ Int_t AliMuonAccEffSubmitter::LocalTest()
   
   const std::vector<int>& runs = RunList();
 
+  if ( runs.empty() )
+  {
+    AliError("No run to work with");
+    return 0;
+  }
+  
   std::cout << "Generating script to execute : ./simrun.sh" << std::endl;
-
+  
   std::ofstream out("simrun.sh");
   
   out << "#!/bin/bash" << std::endl;
@@ -897,14 +941,122 @@ Int_t AliMuonAccEffSubmitter::LocalTest()
   out << "root.exe -b -q simrun.C --run "<< runs[0] <<" --event " << fFixedNofEvents << std::endl;
  
   gSystem->Exec("chmod +x simrun.sh");
+
+  std::cout << "Cleaning up left-over files from previous simulation/reconstructions" << std::endl;
   
+  gSystem->Exec("rm -rf TrackRefs.root *.SDigits*.root Kinematics.root *.Hits.root geometry.root gphysi.dat Run*.tag.root HLT*.root *.ps *.Digits.root *.RecPoints.root galice.root *QA*.root Trigger.root *.log AliESD* AliAOD* *.d *.so *.stat");
+
   std::cout << "Executing the script : ./simrun.sh" << std::endl;
 
+
   gSystem->Exec("./simrun.sh");
   
   return 1;
 }
 
+namespace  {
+
+  void OutputRunList(const char* filename, const std::vector<int>& runlist)
+  {
+    /// output a runlist to ASCII file
+    
+    std::ofstream out(filename);
+
+    for ( std::vector<int>::size_type j = 0; j < runlist.size(); ++j )
+    {
+      out << runlist[j] << std::endl;
+    }
+  }
+}
+
+//______________________________________________________________________________
+Int_t AliMuonAccEffSubmitter::SplitRunList(const char* inputList, int maxJobs)
+{
+  /// In order to be able to submit, split a given runlist into chunks that will
+  /// fit within maxJobs (1500 for a typical user)
+
+  std::vector<int> runs;
+  
+  AliAnalysisTriggerScalers tmp(inputList);
+  runs = tmp.GetRunList();
+  
+  AliAnalysisTriggerScalers* ts(0x0);
+  std::vector<int> currentRunList;
+  
+  int nJobs(0);
+  int nTotalJobs(0);
+  int nEvts(0);
+  int nFiles(0);
+  
+  for (std::vector<int>::size_type i=0; i < runs.size(); ++i)
+  {
+    Int_t runNumber = runs[i];
+  
+    Int_t nEvtRun(fFixedNofEvents);
+    
+    if ( fRatio > 0 )
+    {
+      if (!ts)
+      {
+        AliInfo(Form("Creating AliAnalysisTriggerScalers from OCDB=%s",OCDBPath().Data()));
+        ts = new AliAnalysisTriggerScalers(runs,OCDBPath().Data());
+      }
+      
+      AliAnalysisTriggerScalerItem* trigger = ts->GetTriggerScaler(runNumber, "L2A", ReferenceTrigger().Data());
+      
+      if (!trigger)
+      {
+        AliError(Form("Could not get trigger %s for run %09d",ReferenceTrigger().Data(),runNumber));
+        continue;
+      }
+      nEvtRun = TMath::Nint(fRatio * trigger->Value());
+    }
+    
+    Int_t nChunk = 1;
+    
+    while (nEvtRun/nChunk+0.5 > MaxEventsPerChunk())
+    {
+      ++nChunk;
+    }
+    
+    Int_t nEvtChunk = TMath::Nint(nEvtRun/nChunk + 0.5);
+    
+    nJobs += nChunk;
+    
+    nTotalJobs += nChunk;
+    
+    nEvts += nChunk*nEvtChunk;
+
+    if ( nJobs > maxJobs )
+    {
+      ++nFiles;
+      
+      OutputRunList(Form("%s.%d",inputList,nFiles),currentRunList);
+      nJobs = 0;
+      currentRunList.clear();
+    }
+    
+    
+    currentRunList.push_back(runNumber);
+    
+  }
+  
+  if ( !currentRunList.empty() )
+  {
+    ++nFiles;
+    OutputRunList(Form("%s.%d",inputList,nFiles),currentRunList);
+
+  }
+  
+  delete ts;
+  
+  std::cout << Form("input run list was split into %d files. Total number of jobs %d. Total number of events %d",
+                    nFiles,nTotalJobs,nEvts) << std::endl;
+  
+  return nFiles;
+}
+
+
 //______________________________________________________________________________
 Int_t AliMuonAccEffSubmitter::Submit(Bool_t dryRun)
 {
index 95b8bdeb3127c0c4e58e655b3c407b1399054e35..ef8df26e4f7133d783c042c84dac9381a5502c4f 100644 (file)
@@ -15,7 +15,7 @@ class AliMuonAccEffSubmitter : public AliMuonGridSubmitter
 public:
   AliMuonAccEffSubmitter(const char* generator="GenParamCustom",
                          Bool_t localOnly=kFALSE,
-                         int pythia8version=8175);
+                         const char* generatorVersion="8125");
 
   virtual Bool_t Generate(const char* jdlname) const;
   virtual Bool_t Run(const char* mode);
@@ -67,6 +67,8 @@ public:
   
   TString SnapshotDir() const { return GetMapValue("OCDBsnapshot"); }
 
+  Int_t SplitRunList(const char* inputList, int maxJobs=1500);
+  
 private:
   
   Bool_t GenerateRunJDL(const char* name) const;
index f6ded39c96af8ac90d309a292fa38add87573930..b84fd6a1fdfc6487c17acf88afe8816f2e4563db 100644 (file)
@@ -74,7 +74,7 @@ fRunList()
     }
   }
   
-  SetPackages("VO_ALICE@AliRoot::v5-04-Rev-18","VO_ALICE@ROOT::v5-34-08-5","VO_ALICE@GEANT3::v1-15a-1");
+  SetPackages("VO_ALICE@AliRoot::v5-04-Rev-20");
   
   TString basedir = gSystem->ExpandPathName("$ALICE_ROOT/PWG/muondep");
   
@@ -363,6 +363,8 @@ Bool_t AliMuonGridSubmitter::CopyTemplateFilesToLocal()
       TString stemplate(Form("%s/%s",TemplateDir().Data(),file->String().Data()));
       TString slocal(Form("%s/%s",LocalDir().Data(),file->String().Data()));
       
+      AliDebug(1,Form("Copying %s to %s",stemplate.Data(),slocal.Data()));
+      
       Int_t c =  gSystem->CopyFile(stemplate.Data(),slocal.Data(),ShouldOverwriteFiles());
       if ( c )
       {
@@ -613,6 +615,8 @@ void AliMuonGridSubmitter::OutputToJDL(std::ostream& out, const char* key,
     
     while ( ( v = static_cast<TObjString*>(next())) )
     {
+      if ( v->String().Length() == 0 ) continue;
+      
       --n;
       out << "\t\"" << v->String().Data() << "\"";
       if  ( n ) out << ",";
@@ -779,6 +783,8 @@ Bool_t AliMuonGridSubmitter::ReplaceVars(const char* file) const
 {
   /// Replace the variables (i.e. things starting by VAR_) found in file
   
+  AliDebug(1,file);
+  
   std::ifstream in(file);
   char line[1024];
   TObjArray lines;
@@ -796,16 +802,30 @@ Bool_t AliMuonGridSubmitter::ReplaceVars(const char* file) const
       ++nvars;
       TObjString* key;
       next.Reset();
+      
+      int n(0);
+      
       while ( ( key = static_cast<TObjString*>(next())) )
       {
+        AliDebug(1,Form("Does %s contains %s ?",sline.Data(),key->String().Data()));
+        
         if ( sline.Contains(key->String()) )
         {
           ++nreplaced;
+          ++n;
           TObjString* value = static_cast<TObjString*>(fVars->GetValue(key->String()));
+          AliDebug(1,Form("Replacing %s by %s in %s",key->String().Data(),value->String().Data(),sline.Data()));
           sline.ReplaceAll(key->String(),value->String());
+          AliDebug(1,"Done");
           break;
         }
       }
+      
+      if (n==0)
+      {
+        AliError(Form("Could not find a replacement for variable %s",sline.Data()));
+        break;
+      }
     }
 
     lines.Add(new TObjString(sline));
@@ -830,6 +850,8 @@ Bool_t AliMuonGridSubmitter::ReplaceVars(const char* file) const
     out.close();
   }
   
+  AliDebug(1,Form("replaced %d vars",nvars));
+  
   return kTRUE;
 }
 
@@ -847,8 +869,9 @@ void AliMuonGridSubmitter::SetPackages(const char* aliroot,
                                          const char* api)
 {
   /// Set the packages to be used by the jobs
-  /// Must be a valid combination, see http://alimonitor.cern.ch/packages/
-  ///
+  /// If root and geant3 are given (default is to let alien get the correct
+  /// values for the requested aliroot version), then they must
+  /// correspond to a valid combination, see http://alimonitor.cern.ch/packages/
   
   SetMapKeyValue("AliRoot",aliroot);
   SetMapKeyValue("Root",root);
@@ -945,6 +968,11 @@ TString AliMuonGridSubmitter::GetVar(const char* key) const
 Bool_t AliMuonGridSubmitter::SetVar(const char* varname, const char* value)
 {
   /// Set a variable
+  ///
+  /// Pay attention to how string variables should be given here : you have
+  /// to espace the quotation marks :
+  ///
+  /// SetVar("VAR_PYTHIA8_SETUP_STRINGS","\"SoftQCD:doubleDiffractive=off\"");
   
   TString s(varname);
   s.ToUpper();
index 6e0a0a189b76aca724b27616db496316fa62ce8a..b04d3980462c7a5db398a7ffe64ffe186d457e64 100644 (file)
@@ -67,7 +67,7 @@ public:
 
   Bool_t CopyTemplateFilesToLocal();
 
-  void SetPackages(const char* aliroot, const char* root, const char* geant3,
+  void SetPackages(const char* aliroot, const char* root="", const char* geant3="",
                    const char* api="VO_ALICE@APISCONFIG::V1.1x");
   
   Bool_t ShouldOverwriteFiles() const { return fShouldOverwriteFiles; }
index ba785fe23ea73944b064e156ae89f69f3d388b90..746421f9a8af117c6c8f6ee8bc4dee505d23deaf 100644 (file)
@@ -25,7 +25,7 @@
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS  FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityKTPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoKKTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoTPCInnerCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoChi2CorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnSource.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelBPLCMSCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelGausRinvFreezeOutGenerator.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnTrueQ.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnNonIdDR.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DLCMSSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleMomRes.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelAllHiddenInfo.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCchiNdof.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQATrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQAEventCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCncls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDG.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnTPCNcls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnGammaMonitor.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQinvCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctn3DSphericalEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoBPLCMS3DCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutAntiGamma.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleEtCorr.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistance.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutPt.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAvgSepCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDGV0.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAnalysisAzimuthalPbPb.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceLM.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPicoEventRP.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceKK.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutResonances.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnMinvMonitor.cxx)
+set ( SRCS  FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityKTPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoKKTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoTPCInnerCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoChi2CorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnSource.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelBPLCMSCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelGausRinvFreezeOutGenerator.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnTrueQ.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnNonIdDR.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DLCMSSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleMomRes.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelAllHiddenInfo.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCchiNdof.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQATrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQAEventCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCncls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDG.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnTPCNcls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhiCorrections.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnGammaMonitor.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQinvCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctn3DSphericalEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoBPLCMS3DCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutAntiGamma.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleEtCorr.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistance.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutPt.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAvgSepCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDGV0.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAnalysisAzimuthalPbPb.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceLM.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPicoEventRP.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceKK.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutResonances.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnMinvMonitor.cxx)
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
index bf1253141bc50826d448a3b6bdf7384abfac320d..1d783f8c96955dca126e9f63335844ca9b5f7ebf 100644 (file)
@@ -1167,6 +1167,8 @@ void  AliAnalysisTaskDptDptCorrelations::UserExec(Option_t */*option*/)
       
       //*********************************************************
       TExMap *trackMap = new TExMap();//Mapping matrix----                                            
+      TRandom *ran = new TRandom(); //random eff. correction
+
       //1st loop track for Global tracks                                                                                
       for(Int_t i = 0; i < _nTracks; i++)
        {
@@ -1192,7 +1194,17 @@ void  AliAnalysisTaskDptDptCorrelations::UserExec(Option_t */*option*/)
          
          bitOK  = t->TestFilterBit(_trackFilterBit);
          if (!bitOK) continue; //128bit or 272bit
-                 
+
+         //------- Eff. test----------
+        // Double_t yy = (1-0.7)/1.8;
+         // Double_t zz = (pt-0.2);
+          //Double_t effValue = 0.7+yy*zz;
+         Double_t effValue = 0.7;
+          Double_t R = ran->Uniform(0,1);
+
+          if(R > effValue) continue;
+         //---------------------------
+
          Int_t gID = t->GetID();
          newAodTrack = gID >= 0 ?t : fAODEvent->GetTrack(trackMap->GetValue(-1-gID));
          
@@ -1241,10 +1253,10 @@ void  AliAnalysisTaskDptDptCorrelations::UserExec(Option_t */*option*/)
 
 
          //==== QA ===========================
-         _dcaz->Fill(DCAZ);
-         _dcaxy->Fill(DCAXY);
-         _etadis->Fill(eta);
-         _phidis->Fill(phi);
+         //_dcaz->Fill(DCAZ);
+         //_dcaxy->Fill(DCAXY);
+         //_etadis->Fill(eta);
+         //_phidis->Fill(phi);
          //===================================
          //*************************************************
                  
index 340f996ff42109b0be774dec0c85e3a861830766..1fb5d170c5b3e675fbadad0006f840634a52a758 100644 (file)
@@ -86,6 +86,7 @@ void AliAnalysisTaskTwoPlusOne::UserCreateOutputObjects()
   fListOfHistos->Add(fHistos);
 
   fListOfHistos->Add(new TH1F("eventStat", ";;events", 4, -0.5, 3.5));
+  fListOfHistos->Add(new TH2F("mixedDist", ";centrality;tracks;events", 101, 0, 101, 200, 0, fMixingTracks * 1.5));
 
   PostData(1,fListOfHistos);
 
@@ -194,6 +195,7 @@ void AliAnalysisTaskTwoPlusOne::UserExec(Option_t *)
   if (!pool)
     AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centrality, zVtx));
   if (pool->IsReady()){    
+    ((TH2F*) fListOfHistos->FindObject("mixedDist"))->Fill(centrality, pool->NTracksInPool());
     Int_t nMix = pool->GetCurrentNEvents();
 
     ((TH1F*) fListOfHistos->FindObject("eventStat"))->Fill(2);
index 2ef7748d9f32e9f8d062ff32961a1306a5666d5b..41bdd8dfb5bd4238bfe6065434959abb7da072c5 100644 (file)
@@ -1003,16 +1003,11 @@ void  AliDptDptInMC::createHistograms()
 
   name = "Eta";     _etadis   = createHisto1F(name,name, 200, -1.0, 1.0, "#eta","counts");
   name = "Phi";     _phidis   = createHisto1F(name,name, 360, 0.0, 6.4, "#phi","counts");
-  name = "DCAz";    _dcaz     = createHisto1F(name,name, 500, -5.0, 5.0, "dcaZ","counts");
-  name = "DCAxy";   _dcaxy    = createHisto1F(name,name, 500, -5.0, 5.0, "dcaXY","counts");
-  
-  /*name = "dedxVsP_1"; _dedxVsP_1  = createHisto2D(name,name,1000,-10.,10.,1000,0.,1000.,"p (GeV/c)", "dedx", "counts");                          
-  name = "dedxVsP_2"; _dedxVsP_2  = createHisto2D(name,name,1000,-10.,10.,1000,0.,1000.,"p (GeV/c)", "dedx", "counts");     
-  name = "corrDedxVsP_1"; _corrDedxVsP_1 = createHisto2D(name,name,1000,-10.,10.,1000,0.,500,"p (GeV/c)", "dedx", "counts");  
-  name = "corrDedxVsP_2"; _corrDedxVsP_2 = createHisto2D(name,name,1000,-10.,10.,1000,0.,500,"p (GeV/c)", "dedx", "counts"); 
-  */
-  name = "Nclus1";   _Ncluster1    = createHisto1F(name,name, 200, 0, 200, "Ncluster1","counts");
-  name = "Nclus2";   _Ncluster2    = createHisto1F(name,name, 200, 0, 200, "Ncluster2","counts");
+  name = "DCAz";    _dcaz     = createHisto1F(name,name, 340, -3.3, 3.3, "dcaZ","counts");
+  name = "DCAxy";   _dcaxy    = createHisto1F(name,name, 100, -0.1, 2.5, "dcaXY","counts");
+
+  //name = "Nclus1";   _Ncluster1    = createHisto1F(name,name, 200, 0, 200, "Ncluster1","counts");
+  //name = "Nclus2";   _Ncluster2    = createHisto1F(name,name, 200, 0, 200, "Ncluster2","counts");
   
   if (_singlesOnly)
     {
@@ -1470,19 +1465,34 @@ void  AliDptDptInMC::UserExec(Option_t */*option*/)
            AliError("ERROR: Could not retrieve MC event");
          }
 
+         TExMap *trackMap = new TExMap();//Mapping matrix---- 
+         //1st loop track for Global tracks                                                                                                    
+         for(Int_t i = 0; i < fAODEvent->GetNumberOfTracks(); i++)
+           {
+             AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(i));
+             if(!aodTrack) {
+               AliError(Form("ERROR: Could not retrieve AODtrack %d",i));
+               continue;
+             }
+             Int_t gID = aodTrack->GetID();
+             if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, i);//Global tracks                                                             
+           }
+         
+         AliAODTrack* newAodTrack;
+         
          for (int iTrack=0; iTrack< fAODEvent->GetNumberOfTracks(); iTrack++)
            {
-
+             
              AliAODTrack *t = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(iTrack));
-
+             
              if(!t) {
                AliError(Form("ERROR: Could not retrieve AODtrack %d",iTrack));
                continue;
              }
-
+             
              bitOK  = t->TestFilterBit(_trackFilterBit);
              if (!bitOK) continue;
-
+             
              q      = t->Charge();
              charge = int(q);
              phi    = t->Phi();
@@ -1491,65 +1501,85 @@ void  AliDptDptInMC::UserExec(Option_t */*option*/)
              py     = t->Py();
              pz     = t->Pz();
              eta    = t->Eta();
+             //Float_t dcaXY = t->DCA();  
+             //Float_t dcaZ  = t->ZAtDCA(); 
              
-             Double_t nsigmaelectron = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kElectron));
-             Double_t nsigmapion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kPion));
-             Double_t nsigmakaon = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kKaon));
-             Double_t nsigmaproton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kProton));
+             // get the electron nsigma                                                                                                
+             Double_t nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kElectron));
+             Double_t nSigmaPions   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kPion));
+              Double_t nSigmaKaons   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kKaon));
+              Double_t nSigmaProtons = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(t,(AliPID::EParticleType)AliPID::kProton));
              
-             if(nsigmaelectron  < fNSigmaCut &&
-                nsigmapion      > fNSigmaCut &&
-                nsigmakaon      > fNSigmaCut &&
-                nsigmaproton    > fNSigmaCut ) continue;
-
-             Float_t dcaXY = t->DCA();     
-             Float_t dcaZ  = t->ZAtDCA();  
+             //Make the decision based on the n-sigma of electrons exclusively 
+              if(nSigma < fNSigmaCut
+                 && nSigmaPions   > fNSigmaCut
+                 && nSigmaKaons   > fNSigmaCut
+                 && nSigmaProtons > fNSigmaCut ) continue;
              
-             // Kinematics cuts 
-             if( pt < 0.2 || pt > 2.0)  continue;
-             if( eta < -0.8 || eta > 0.8)  continue;
+             Int_t gID = t->GetID();
+             newAodTrack = gID >= 0 ?t : fAODEvent->GetTrack(trackMap->GetValue(-1-gID));
+             
+             // Kinematics cuts                                                                                 
+             if( pt < 0.2 || pt > 2.0)      continue;
+             if( eta < _min_eta_1 || eta > _max_eta_1)  continue;
+             
+             Double_t pos[3];
+             newAodTrack->GetXYZ(pos);
+             
+             Double_t DCAX = pos[0] - vertexX;
+             Double_t DCAY = pos[1] - vertexY;
+             Double_t DCAZ = pos[2] - vertexZ;
+             
+             Double_t DCAXY = TMath::Sqrt((DCAX*DCAX) + (DCAY*DCAY));
+             
+             if (DCAZ     <  _dcaZMin ||
+                 DCAZ     >  _dcaZMax ||
+                 DCAXY    >  _dcaXYMax ) continue;
+                     
+             //==== QA ===========================                                          
+             _dcaz->Fill(DCAZ);                                                           
+             _dcaxy->Fill(DCAXY);                                                         
+             _etadis->Fill(eta);                                                          
+             _phidis->Fill(phi); 
+             //===================================   
              
-             Int_t label = TMath::Abs(t->GetLabel());
-             AliAODMCParticle *AODmcTrack = (AliAODMCParticle*) fArrayMC->At(label);
-
              //W/Wo Secondaries
              //if (!AODmcTrack->IsPhysicalPrimary()) continue;
              
-              
-              if(fExcludeResonancesInMC)
-                {
-                  //cout<<"***************Prabhat on Weak Decay Particles ************"<<endl;                               
-                  Int_t gMotherIndex = AODmcTrack->GetMother();
-                  if(gMotherIndex != -1) {
-                    AliAODMCParticle* motherTrack = dynamic_cast<AliAODMCParticle *>(mcEvent->GetTrack(gMotherIndex));
-                    if(motherTrack) {
-                      Int_t pdgCodeOfMother = motherTrack->GetPdgCode();
-                      
-                      if(pdgCodeOfMother == 311  ||
-                         pdgCodeOfMother == -311 ||
-                         pdgCodeOfMother == 310  ||
-                         pdgCodeOfMother == 3122 ||
-                         pdgCodeOfMother == -3122 ||
-                         pdgCodeOfMother == 111 ||
-                         pdgCodeOfMother == 22 ) continue;
-                    }
-                  }
-                }
-              
-              if (AODmcTrack)
-                {
-                  if(TMath::Abs(AODmcTrack->GetPdgCode()) == 11) continue;
-                }
-              
-              _etadis->Fill(eta);
-              _phidis->Fill(phi);
-              _dcaz->Fill(dcaZ);
-              _dcaxy->Fill(dcaXY);
-              
+             //cout<<"***************Prabhat on Weak Decay Particles ************"<<endl;
+             if(fExcludeResonancesInMC)
+               {
+                 Int_t label = TMath::Abs(t->GetLabel());
+                 AliAODMCParticle *AODmcTrack = (AliAODMCParticle*) fArrayMC->At(label);
+                 
+                 Int_t gMotherIndex = AODmcTrack->GetMother();
+                 if(gMotherIndex != -1) {
+                   AliAODMCParticle* motherTrack = dynamic_cast<AliAODMCParticle *>(mcEvent->GetTrack(gMotherIndex));
+                   if(motherTrack) {
+                     Int_t pdgCodeOfMother = motherTrack->GetPdgCode();
+                     
+                     if(pdgCodeOfMother == 311  ||
+                        pdgCodeOfMother == -311 ||
+                        pdgCodeOfMother == 310  ||
+                        pdgCodeOfMother == 3122 ||
+                        pdgCodeOfMother == -3122 ||
+                        pdgCodeOfMother == 111 ||
+                        pdgCodeOfMother == 22 ) continue;
+                   }
+                 }
+               }
+             
+             Int_t label = TMath::Abs(t->GetLabel());
+             AliAODMCParticle *AODmcTrack = (AliAODMCParticle*) fArrayMC->At(label);
+             if (AODmcTrack)
+               {
+                 if(TMath::Abs(AODmcTrack->GetPdgCode()) == 11) continue;
+               }
+             
              //Particle 1                                                                                                                  
              if (t->Charge() > 0)
                {
-
+                 
                  iPhi   = int( phi/_width_phi_1);
 
                  if (iPhi<0 || iPhi>=_nBins_phi_1 )
index ff0ffd9a5b40e686bb0d6f8f4405abfadc25f035..e7a255ece12fdcea8a936f26b45a01a652f4d730 100644 (file)
@@ -427,7 +427,7 @@ Double_t nclus = track->GetTPCClusterInfo(2,1);
 if(nclus<80) return 0;
 
 //select primary:
-if(!track->GetType()==AliAODTrack :: kPrimary) return 0;
+if(track->GetType() != AliAODTrack::kPrimary) return 0;
 
 return 1;
 }
index d6f9cea30754c522777d3bc18227f3f686eff218..f333420ec2a01d9a26ac25106fab834e376e64d9 100644 (file)
@@ -12,6 +12,7 @@
  * about the suitability of this software for any purpose. It is          *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
+//Source code::dphicorrelations, TaskBFpsi, AliHelperPID
 
 #include "AliTwoParticlePIDCorr.h"
 #include "AliVParticle.h"
@@ -39,6 +40,7 @@
 #include "AliESDpid.h"
 #include "AliAODpidUtil.h"
 #include <AliPIDResponse.h>
+#include "AliPIDCombined.h"   
 
 #include <AliAnalysisManager.h>
 #include <AliInputEventHandler.h>
@@ -66,6 +68,7 @@
 
 #include "AliGenCocktailEventHeader.h"
 #include "AliGenEventHeader.h"
+#include "AliCollisionGeometry.h"
 
 #include "AliEventPoolManager.h"
 #include "AliAnalysisUtils.h"
@@ -86,6 +89,7 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
    fOutputList(0),
   fCentralityMethod("V0A"),
   fSampleType("pPb"),
+ fRequestEventPlane(kFALSE),
   fnTracksVertex(1),  // QA tracks pointing to principal vertex (= 3 default)
   trkVtx(0),
   zvtx(0),
@@ -93,6 +97,7 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
   fTrackStatus(0),
   fSharedClusterCut(-1),
   fVertextype(1),
+ skipParticlesAbove(0),
   fzvtxcut(10.0),
   ffilltrigassoUNID(kFALSE),
   ffilltrigUNIDassoID(kFALSE),
@@ -105,6 +110,7 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
   fWeightPerEvent(kFALSE),
   fTriggerSpeciesSelection(kFALSE),
   fAssociatedSpeciesSelection(kFALSE),
+ fRandomizeReactionPlane(kFALSE),
   fTriggerSpecies(SpPion),
   fAssociatedSpecies(SpPion),
   fCustomBinning(""),
@@ -115,13 +121,9 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
   SetChargeAxis(0),
   frejectPileUp(kFALSE),
   fminPt(0.2),
-  fmaxPt(10.0),
+  fmaxPt(20.0),
   fmineta(-0.8),
   fmaxeta(0.8),
-  fminprotonsigmacut(-6.0),
-  fmaxprotonsigmacut(-3.0),
-  fminpionsigmacut(0.0),
-  fmaxpionsigmacut(4.0),
   fselectprimaryTruth(kTRUE),
   fonlyprimarydatareco(kFALSE),
   fdcacut(kFALSE),
@@ -134,7 +136,9 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
   fminPtComboeff(2.0),
   fmaxPtComboeff(4.0), 
   fminPtAsso(0),
-  fmaxPtAsso(0), 
+  fmaxPtAsso(0),
+ fmincentmult(0),
+ fmaxcentmult(0), 
   fhistcentrality(0),
   fEventCounter(0),
   fEtaSpectrasso(0),
@@ -160,6 +164,23 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
   fEventnomeson(0),
  fhistJetTrigestimate(0),
   fCentralityCorrelation(0x0),
+ fHistVZEROAGainEqualizationMap(0),
+  fHistVZEROCGainEqualizationMap(0),
+ fHistVZEROChannelGainEqualizationMap(0),
+fCentralityWeights(0),
+ fHistCentStats(0x0),
+ fHistRefmult(0x0),
+ fHistEQVZEROvsTPCmultiplicity(0x0),
+    fHistEQVZEROAvsTPCmultiplicity(0x0),
+    fHistEQVZEROCvsTPCmultiplicity(0x0),
+    fHistVZEROCvsEQVZEROCmultiplicity(0x0),
+    fHistVZEROAvsEQVZEROAmultiplicity(0x0),
+    fHistVZEROCvsVZEROAmultiplicity(0x0),
+    fHistEQVZEROCvsEQVZEROAmultiplicity(0x0),
+    fHistVZEROSignal(0x0),
+fHistEventPlaneReco(0x0),
+fHistEventPlaneTruth(0x0),
+fHistPsiMinusPhi(0x0),
  fControlConvResoncances(0),
   fHistoTPCdEdx(0x0),
   fHistoTOFbeta(0x0),
@@ -192,6 +213,7 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
  ftwoTrackEfficiencyCutDataReco(kTRUE),
   twoTrackEfficiencyCutValue(0.02),
   fPID(NULL),
+ fPIDCombined(NULL),
  eventno(0),
   fPtTOFPIDmin(0.5),
   fPtTOFPIDmax(4.0),
@@ -199,6 +221,12 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr() // All data members should be ini
   fPIDType(NSigmaTPCTOF),
  fFIllPIDQAHistos(kTRUE),
   fNSigmaPID(3),
+  fBayesCut(0.8),
+ fdiffPIDcutvalues(kFALSE),
+ fPIDCutval1(0.0),
+ fPIDCutval2(0.0),
+ fPIDCutval3(0.0),
+ fPIDCutval4(0.0),
  fHighPtKaonNSigmaPID(-1),
  fHighPtKaonSigma(3.5),
   fUseExclusiveNSigma(kFALSE),
@@ -249,6 +277,7 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr(const char *name) // All data membe
    fOutputList(0),
  fCentralityMethod("V0A"),
   fSampleType("pPb"),
+ fRequestEventPlane(kFALSE),
   fnTracksVertex(1),  // QA tracks pointing to principal vertex (= 3 default)
   trkVtx(0),
   zvtx(0),
@@ -256,6 +285,7 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr(const char *name) // All data membe
   fTrackStatus(0),
   fSharedClusterCut(-1),
   fVertextype(1),
+   skipParticlesAbove(0),
   fzvtxcut(10.0),
   ffilltrigassoUNID(kFALSE),
   ffilltrigUNIDassoID(kFALSE),
@@ -268,6 +298,7 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr(const char *name) // All data membe
   fWeightPerEvent(kFALSE),
   fTriggerSpeciesSelection(kFALSE),
   fAssociatedSpeciesSelection(kFALSE),
+   fRandomizeReactionPlane(kFALSE),
   fTriggerSpecies(SpPion),
   fAssociatedSpecies(SpPion),
   fCustomBinning(""),
@@ -278,13 +309,9 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr(const char *name) // All data membe
   SetChargeAxis(0),
   frejectPileUp(kFALSE),
   fminPt(0.2),
-  fmaxPt(10.0),
+  fmaxPt(20.0),
   fmineta(-0.8),
   fmaxeta(0.8),
-   fminprotonsigmacut(-6.0),
-   fmaxprotonsigmacut(-3.0),
-   fminpionsigmacut(0.0),
-   fmaxpionsigmacut(4.0),
   fselectprimaryTruth(kTRUE),
   fonlyprimarydatareco(kFALSE),
    fdcacut(kFALSE),
@@ -297,7 +324,9 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr(const char *name) // All data membe
   fminPtComboeff(2.0),
   fmaxPtComboeff(4.0), 
   fminPtAsso(0),
-  fmaxPtAsso(0), 
+  fmaxPtAsso(0),
+   fmincentmult(0),
+   fmaxcentmult(0), 
   fhistcentrality(0),
   fEventCounter(0),
   fEtaSpectrasso(0),
@@ -321,8 +350,25 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr(const char *name) // All data membe
   fEventno(0),
   fEventnobaryon(0),
   fEventnomeson(0),
-   fhistJetTrigestimate(0),
+  fhistJetTrigestimate(0),
   fCentralityCorrelation(0x0),
+ fHistVZEROAGainEqualizationMap(0),
+  fHistVZEROCGainEqualizationMap(0),
+   fHistVZEROChannelGainEqualizationMap(0),
+fCentralityWeights(0),
+  fHistCentStats(0x0),
+  fHistRefmult(0x0),
+    fHistEQVZEROvsTPCmultiplicity(0x0),
+    fHistEQVZEROAvsTPCmultiplicity(0x0),
+    fHistEQVZEROCvsTPCmultiplicity(0x0),
+    fHistVZEROCvsEQVZEROCmultiplicity(0x0),
+    fHistVZEROAvsEQVZEROAmultiplicity(0x0),
+    fHistVZEROCvsVZEROAmultiplicity(0x0),
+    fHistEQVZEROCvsEQVZEROAmultiplicity(0x0),
+    fHistVZEROSignal(0x0),
+fHistEventPlaneReco(0x0),
+fHistEventPlaneTruth(0x0),
+fHistPsiMinusPhi(0x0),
   fControlConvResoncances(0), 
   fHistoTPCdEdx(0x0),
   fHistoTOFbeta(0x0),
@@ -348,20 +394,27 @@ AliTwoParticlePIDCorr::AliTwoParticlePIDCorr(const char *name) // All data membe
   fTHnCorrIDUNIDmix(0),
   fTHnTrigcount(0),
   fTHnTrigcountMCTruthPrim(0),
-   fPoolMgr(0x0),
+  fPoolMgr(0x0),
   fArrayMC(0),
   fAnalysisType("AOD"),
-   fefffilename(""),
-   ftwoTrackEfficiencyCutDataReco(kTRUE),
+  fefffilename(""),
+  ftwoTrackEfficiencyCutDataReco(kTRUE),
   twoTrackEfficiencyCutValue(0.02),
   fPID(NULL),
- eventno(0),
+  fPIDCombined(NULL),
+  eventno(0),
  fPtTOFPIDmin(0.5),
   fPtTOFPIDmax(4.0),
   fRequestTOFPID(kTRUE),
   fPIDType(NSigmaTPCTOF),
   fFIllPIDQAHistos(kTRUE),
   fNSigmaPID(3),
+  fBayesCut(0.8),
+ fdiffPIDcutvalues(kFALSE),
+ fPIDCutval1(0.0),
+ fPIDCutval2(0.0),
+ fPIDCutval3(0.0),
+ fPIDCutval4(0.0),
 fHighPtKaonNSigmaPID(-1),
  fHighPtKaonSigma(3.5),
   fUseExclusiveNSigma(kFALSE),
@@ -431,7 +484,8 @@ if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
   }
 
   if (fPID) delete fPID;
-   
+  if (fPIDCombined) delete fPIDCombined;
+
   }
 //________________________________________________________________________
 
@@ -482,33 +536,14 @@ void AliTwoParticlePIDCorr::UserCreateOutputObjects()
   fOutputList->SetOwner();
   fOutputList->SetName("PIDQAList");
   
-
-    Int_t centmultbins=10;
-    Double_t centmultmin=0.0;
-    Double_t centmultmax=100.0;
-  if(fSampleType=="pPb" || fSampleType=="PbPb")
-   {
-      centmultbins=10;
-      centmultmin=0.0;
-      centmultmax=100.0;
-   }
- if(fSampleType=="pp")
-   {
-     centmultbins=10;
-     centmultmin=0.0;
-     centmultmax=200.0;
-   }
-
-fhistcentrality=new TH1F("fhistcentrality","fhistcentrality",centmultbins*4,centmultmin,centmultmax);
-fOutput->Add(fhistcentrality);
-
-  fEventCounter = new TH1F("fEventCounter","EventCounter", 12, 0.5,12.5);
+  fEventCounter = new TH1F("fEventCounter","EventCounter", 19, 0.5,19.5);
   fEventCounter->GetXaxis()->SetBinLabel(1,"Event Accesed");
-  fEventCounter->GetXaxis()->SetBinLabel(3,"After PileUP Cut");//only for MC
+  fEventCounter->GetXaxis()->SetBinLabel(3,"After PileUP Cut");//only for Data
   fEventCounter->GetXaxis()->SetBinLabel(5,"Have A Vertex");
   fEventCounter->GetXaxis()->SetBinLabel(7,"After vertex Cut");
-  fEventCounter->GetXaxis()->SetBinLabel(9,"Within 0-100% centrality");
-  fEventCounter->GetXaxis()->SetBinLabel(11,"Event Analyzed");
+  fEventCounter->GetXaxis()->SetBinLabel(9,"After centrality flattening");
+  fEventCounter->GetXaxis()->SetBinLabel(11,"Within 0-100% centrality");
+  fEventCounter->GetXaxis()->SetBinLabel(13,"Event Analyzed");
   //fEventCounter->GetXaxis()->SetBinLabel(8,"Event Analysis finished");
   fOutput->Add(fEventCounter);
   
@@ -522,6 +557,105 @@ fOutput->Add(fphiSpectraasso);
       fOutput->Add(fCentralityCorrelation);
  }
 
+if(fCentralityMethod=="V0M" || fCentralityMethod=="V0A" || fCentralityMethod=="V0C" || fCentralityMethod=="CL1" || fCentralityMethod=="ZNA" || fCentralityMethod=="V0AEq" || fCentralityMethod=="V0CEq" || fCentralityMethod=="V0MEq")
+  {
+ TString gCentName[8] = {"V0A","V0C","V0M","V0AEq","V0CEq","V0MEq","CL1","ZNA"};
+  fHistCentStats = new TH2F("fHistCentStats",
+                             "Centrality statistics;;Cent percentile",
+                           8,-0.5,7.5,220,-5,105);
+  for(Int_t i = 1; i <= 8; i++){
+    fHistCentStats->GetXaxis()->SetBinLabel(i,gCentName[i-1].Data());
+    //fHistCentStatsUsed->GetXaxis()->SetBinLabel(i,gCentName[i-1].Data());
+  }
+  fOutput->Add(fHistCentStats);
+  }
+
+if(fCentralityMethod.EndsWith("_MANUAL"))
+  {
+fhistcentrality=new TH1F("fhistcentrality","referencemultiplicity",30001,-0.5,30000.5);
+fOutput->Add(fhistcentrality);
+  }
+ else{
+fhistcentrality=new TH1F("fhistcentrality","centrality",220,-5,105);
+fOutput->Add(fhistcentrality);
+ }
+
+if(fCentralityMethod.EndsWith("_MANUAL"))
+  {
+TString gmultName[4] = {"V0A_MANUAL","V0C_MANUAL","V0M_MANUAL","TRACKS_MANUAL"};
+  fHistRefmult = new TH2F("fHistRefmult",
+                             "Reference multiplicity",
+                           4,-0.5,3.5,10000,0,20000);
+  for(Int_t i = 1; i <= 4; i++){
+    fHistRefmult->GetXaxis()->SetBinLabel(i,gmultName[i-1].Data());
+    //fHistCentStatsUsed->GetXaxis()->SetBinLabel(i,gCentName[i-1].Data());
+  }
+  fOutput->Add(fHistRefmult);
+
+
+ //TPC vs EQVZERO multiplicity
+    fHistEQVZEROvsTPCmultiplicity = new TH2F("fHistEQVZEROvsTPCmultiplicity","EqVZERO vs TPC multiplicity",10001,-0.5,10000.5,4001,-0.5,4000.5);
+    fHistEQVZEROvsTPCmultiplicity->GetXaxis()->SetTitle("EqVZERO multiplicity (a.u.)");
+    fHistEQVZEROvsTPCmultiplicity->GetYaxis()->SetTitle("TPC multiplicity (a.u.)");
+    fOutput->Add(fHistEQVZEROvsTPCmultiplicity);
+
+
+    fHistEQVZEROAvsTPCmultiplicity = new TH2F("fHistEQVZEROAvsTPCmultiplicity","EqVZERO_A vs TPC multiplicity",10001,-0.5,10000.5,4001,-0.5,4000.5);
+    fHistEQVZEROAvsTPCmultiplicity->GetXaxis()->SetTitle("EqVZERO_A multiplicity (a.u.)");
+    fHistEQVZEROAvsTPCmultiplicity->GetYaxis()->SetTitle("TPC multiplicity (a.u.)");
+    fOutput->Add(fHistEQVZEROAvsTPCmultiplicity);
+
+
+    fHistEQVZEROCvsTPCmultiplicity = new TH2F("fHistEQVZEROCvsTPCmultiplicity","EqVZERO_C vs TPC multiplicity",10001,-0.5,10000.5,4001,-0.5,4000.5);
+    fHistEQVZEROCvsTPCmultiplicity->GetXaxis()->SetTitle("EqVZERO_C multiplicity (a.u.)");
+    fHistEQVZEROCvsTPCmultiplicity->GetYaxis()->SetTitle("TPC multiplicity (a.u.)");
+    fOutput->Add(fHistEQVZEROCvsTPCmultiplicity);
+
+ //EQVZERO vs VZERO multiplicity
+  fHistVZEROCvsEQVZEROCmultiplicity = new TH2F("fHistVZEROCvsEQVZEROCmultiplicity","EqVZERO_C vs VZERO_C multiplicity",10001,-0.5,10000.5,10001,-0.5,10000.5);
+    fHistVZEROCvsEQVZEROCmultiplicity->GetXaxis()->SetTitle("VZERO_C multiplicity (a.u.)");
+    fHistVZEROCvsEQVZEROCmultiplicity->GetYaxis()->SetTitle("EqVZERO_C multiplicity (a.u.)");
+    fOutput->Add(fHistVZEROCvsEQVZEROCmultiplicity);
+
+
+fHistVZEROAvsEQVZEROAmultiplicity = new TH2F("fHistVZEROAvsEQVZEROAmultiplicity","EqVZERO_A vs VZERO_A multiplicity",10001,-0.5,10000.5,10001,-0.5,10000.5);
+    fHistVZEROAvsEQVZEROAmultiplicity->GetXaxis()->SetTitle("VZERO_A multiplicity (a.u.)");
+    fHistVZEROAvsEQVZEROAmultiplicity->GetYaxis()->SetTitle("EqVZERO_A multiplicity (a.u.)");
+    fOutput->Add(fHistVZEROAvsEQVZEROAmultiplicity);
+
+
+  //VZEROC vs VZEROA multiplicity
+fHistVZEROCvsVZEROAmultiplicity = new TH2F("fHistVZEROCvsVZEROAmultiplicity","VZERO_C vs VZERO_A multiplicity",10001,-0.5,10000.5,10001,-0.5,10000.5);
+    fHistVZEROCvsVZEROAmultiplicity->GetXaxis()->SetTitle("VZERO_C multiplicity (a.u.)");
+    fHistVZEROCvsVZEROAmultiplicity->GetYaxis()->SetTitle("VZERO_A multiplicity (a.u.)");
+    fOutput->Add(fHistVZEROCvsVZEROAmultiplicity);
+
+
+
+  //EQVZEROC vs EQVZEROA multiplicity
+fHistEQVZEROCvsEQVZEROAmultiplicity = new TH2F("fHistEQVZEROCvsEQVZEROAmultiplicity","EqVZERO_C vs EqVZERO_A multiplicity",10001,-0.5,10000.5,10001,-0.5,10000.5);
+    fHistEQVZEROCvsEQVZEROAmultiplicity->GetXaxis()->SetTitle("EqVZERO_C multiplicity (a.u.)");
+    fHistEQVZEROCvsEQVZEROAmultiplicity->GetYaxis()->SetTitle("EqVZERO_A multiplicity (a.u.)");
+    fOutput->Add(fHistEQVZEROCvsEQVZEROAmultiplicity);
+
+ fHistVZEROSignal = new TH2F("fHistVZEROSignal","VZERO signal vs VZERO channel;VZERO channel; Signal (a.u.)",64,0.5,64.5,3001,-0.5,30000.5);
+  fOutput->Add(fHistVZEROSignal);
+}
+
+ if(fSampleType=="PbPb" && fRequestEventPlane){
+//Event plane
+  fHistEventPlaneReco = new TH2F("fHistEventPlaneReco",";#Psi_{2} [deg.];Centrality percentile;Counts",100,0,360.,220,-5,105);
+  fOutput->Add(fHistEventPlaneReco);
+
+//Event plane
+  fHistEventPlaneTruth = new TH2F("fHistEventPlaneTruth",";#Psi_{2} [deg.];Centrality percentile;Counts",100,0,360.,220,-5,105);
+  fOutput->Add(fHistEventPlaneTruth);
+
+  fHistPsiMinusPhi = new TH2D("fHistPsiMinusPhi","",4,-0.5,3.5,100,0,2.*TMath::Pi());
+  fOutput->Add(fHistPsiMinusPhi);
+
+ }
 if(fCutConversions || fCutResonances)
     {
 fControlConvResoncances = new TH2F("fControlConvResoncances", ";id;delta mass", 3, -0.5, 2.5, 100, -0.1, 0.1);
@@ -588,13 +722,17 @@ for(Int_t i = 0; i < 16; i++)
       fOutput->Add(fHistQA[i]);
     }
 
-   kTrackVariablesPair=6+SetChargeAxis;
+   Int_t eventplaneaxis=0;
+
+   if (fRequestEventPlane) eventplaneaxis=1;
 
-   if(fcontainPIDtrig && !fcontainPIDasso) kTrackVariablesPair=7+SetChargeAxis;
+   kTrackVariablesPair=6+SetChargeAxis+eventplaneaxis;
+
+   if(fcontainPIDtrig && !fcontainPIDasso) kTrackVariablesPair=7+SetChargeAxis+eventplaneaxis;
  
- if(!fcontainPIDtrig && fcontainPIDasso) kTrackVariablesPair=7+SetChargeAxis;
+ if(!fcontainPIDtrig && fcontainPIDasso) kTrackVariablesPair=7+SetChargeAxis+eventplaneaxis;
  
- if(fcontainPIDtrig && fcontainPIDasso) kTrackVariablesPair=8+SetChargeAxis;
+ if(fcontainPIDtrig && fcontainPIDasso) kTrackVariablesPair=8+SetChargeAxis+eventplaneaxis;
  
  
 // two particle histograms
@@ -616,12 +754,17 @@ for(Int_t i = 0; i < 16; i++)
        "delta_eta: -2.4, -2.3, -2.2, -2.1, -2.0, -1.9, -1.8, -1.7, -1.6, -1.5, -1.4, -1.3, -1.2, -1.1, -1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0,2.1, 2.2, 2.3, 2.4\n"
       "multiplicity: 0, 1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100.1\n";
 
+ if(fRequestEventPlane){
+   defaultBinningStr += "eventPlane: -0.5,0.5,1.5,2.5,3.5\n"; // Event Plane Bins (Psi: -0.5->0.5 (in plane), 0.5->1.5 (intermediate), 1.5->2.5 (out of plane), 2.5->3.5 (rest))
+  }
+
   if(fcontainPIDtrig){
       defaultBinningStr += "PIDTrig: -0.5,0.5,1.5,2.5,3.5\n"; // course
   }
   if(fcontainPIDasso){
       defaultBinningStr += "PIDAsso: -0.5,0.5,1.5,2.5,3.5\n"; // course
   }
   if(SetChargeAxis==2){
       defaultBinningStr += "TrigCharge: -2.0,0.0,2.0\n"; // course
       defaultBinningStr += "AssoCharge: -2.0,0.0,2.0\n"; // course
@@ -645,7 +788,7 @@ for(Int_t i = 0; i < 16; i++)
   
   AliInfo(Form("Used AliTHn Binning:\n%s",fBinningString.Data()));
 
- // =========================================================
+ //  =========================================================
   // Now set the bins
   // =========================================================
 
@@ -667,53 +810,61 @@ for(Int_t i = 0; i < 16; i++)
     dBinsPair[5]       = GetBinning(fBinningString, "delta_phi", iBinPair[5]);
     axisTitlePair[5]   = "#Delta#varphi (rad)";  
 
+    Int_t dim_val=6;
+
+    if(fRequestEventPlane){
+    dBinsPair[dim_val]       = GetBinning(fBinningString, "eventPlane", iBinPair[dim_val]);
+    axisTitlePair[dim_val]   = "#varphi - #Psi_{2} (a.u.)";
+    dim_val=7;
+    }
+
     if(!fcontainPIDtrig && !fcontainPIDasso && SetChargeAxis==2){
-    dBinsPair[6]       = GetBinning(fBinningString, "TrigCharge", iBinPair[6]);
-    axisTitlePair[6]   = "TrigCharge";
+    dBinsPair[dim_val]       = GetBinning(fBinningString, "TrigCharge", iBinPair[dim_val]);
+    axisTitlePair[dim_val]   = "TrigCharge";
 
-    dBinsPair[7]       = GetBinning(fBinningString, "AssoCharge", iBinPair[7]);
-    axisTitlePair[7]   = "AssoCharge";
+    dBinsPair[dim_val+1]       = GetBinning(fBinningString, "AssoCharge", iBinPair[dim_val+1]);
+    axisTitlePair[dim_val+1]   = "AssoCharge";
     }
 
  if(fcontainPIDtrig && !fcontainPIDasso){
-    dBinsPair[6]       = GetBinning(fBinningString, "PIDTrig", iBinPair[6]);
-    axisTitlePair[6]   = "PIDTrig"; 
+    dBinsPair[dim_val]       = GetBinning(fBinningString, "PIDTrig", iBinPair[dim_val]);
+    axisTitlePair[dim_val]   = "PIDTrig"; 
     if(SetChargeAxis==2){
-    dBinsPair[7]       = GetBinning(fBinningString, "TrigCharge", iBinPair[7]);
-    axisTitlePair[7]   = "TrigCharge";
+    dBinsPair[dim_val+1]       = GetBinning(fBinningString, "TrigCharge", iBinPair[dim_val+1]);
+    axisTitlePair[dim_val+1]   = "TrigCharge";
 
-    dBinsPair[8]       = GetBinning(fBinningString, "AssoCharge", iBinPair[8]);
-    axisTitlePair[8]   = "AssoCharge";
+    dBinsPair[dim_val+2]       = GetBinning(fBinningString, "AssoCharge", iBinPair[dim_val+2]);
+    axisTitlePair[dim_val+2]   = "AssoCharge";
     }
  }
 
  if(!fcontainPIDtrig && fcontainPIDasso){
-    dBinsPair[6]       = GetBinning(fBinningString, "PIDAsso", iBinPair[6]);
-    axisTitlePair[6]   = "PIDAsso"; 
+    dBinsPair[dim_val]       = GetBinning(fBinningString, "PIDAsso", iBinPair[dim_val]);
+    axisTitlePair[dim_val]   = "PIDAsso"; 
 
  if(SetChargeAxis==2){
-    dBinsPair[7]       = GetBinning(fBinningString, "TrigCharge", iBinPair[7]);
-    axisTitlePair[7]   = "TrigCharge";
+    dBinsPair[dim_val+1]       = GetBinning(fBinningString, "TrigCharge", iBinPair[dim_val+1]);
+    axisTitlePair[dim_val+1]   = "TrigCharge";
 
-    dBinsPair[8]       = GetBinning(fBinningString, "AssoCharge", iBinPair[8]);
-    axisTitlePair[8]   = "AssoCharge";
+    dBinsPair[dim_val+2]       = GetBinning(fBinningString, "AssoCharge", iBinPair[dim_val+2]);
+    axisTitlePair[dim_val+2]   = "AssoCharge";
     }
  }
 
 if(fcontainPIDtrig && fcontainPIDasso){
 
-    dBinsPair[6]       = GetBinning(fBinningString, "PIDTrig", iBinPair[6]);
-    axisTitlePair[6]   = "PIDTrig";
+    dBinsPair[dim_val]       = GetBinning(fBinningString, "PIDTrig", iBinPair[dim_val]);
+    axisTitlePair[dim_val]   = "PIDTrig";
 
-    dBinsPair[7]       = GetBinning(fBinningString, "PIDAsso", iBinPair[7]);
-    axisTitlePair[7]   = "PIDAsso";
+    dBinsPair[dim_val+1]       = GetBinning(fBinningString, "PIDAsso", iBinPair[dim_val+1]);
+    axisTitlePair[dim_val+1]   = "PIDAsso";
 
     if(SetChargeAxis==2){
-    dBinsPair[8]       = GetBinning(fBinningString, "TrigCharge", iBinPair[8]);
-    axisTitlePair[8]   = "TrigCharge";
+    dBinsPair[dim_val+2]       = GetBinning(fBinningString, "TrigCharge", iBinPair[dim_val+2]);
+    axisTitlePair[dim_val+2]   = "TrigCharge";
 
-    dBinsPair[9]       = GetBinning(fBinningString, "AssoCharge", iBinPair[9]);
-    axisTitlePair[9]   = "AssoCharge";
+    dBinsPair[dim_val+3]       = GetBinning(fBinningString, "AssoCharge", iBinPair[dim_val+3]);
+    axisTitlePair[dim_val+3]   = "AssoCharge";
     }
  }
        
@@ -728,6 +879,8 @@ if(fcontainPIDtrig && fcontainPIDasso){
         fmaxPtTrig=dBinsPair[2][iBinPair[2]];
         fminPtAsso=dBinsPair[3][0];
         fmaxPtAsso=dBinsPair[3][iBinPair[3]];
+        fmincentmult=dBinsPair[0][0];
+        fmaxcentmult=dBinsPair[0][iBinPair[0]];
 
        //fminPtComboeff=fminPtTrig;***then this value will be fixed ,even Setter can't change it's value
        //fmaxPtComboeff=fmaxPtTrig;
@@ -835,39 +988,64 @@ for (Int_t j=0; j<kTrackVariablesPair; j++) {
 
     //binning for trigger no. counting
 
+     Int_t ChargeAxis=0;
+     if(SetChargeAxis==2) ChargeAxis=1;
+
        Int_t* fBinst;
-       Int_t dims=3+SetChargeAxis;
-       if(fcontainPIDtrig) dims=4+SetChargeAxis;
+       Int_t dims=3+ChargeAxis+eventplaneaxis;
+       if(fcontainPIDtrig) dims=4+ChargeAxis+eventplaneaxis;
         fBinst= new Int_t[dims];
+   Double_t* dBinsTrig[dims];    // bins for track variables  
+   TString* axisTitleTrig;  // axis titles for track variables
+   axisTitleTrig=new TString[dims];
+
        for(Int_t i=0; i<3;i++)
          {
            fBinst[i]=iBinPair[i];
+           dBinsTrig[i]=dBinsPair[i];
+           axisTitleTrig[i]=axisTitlePair[i];
          }
-if(!fcontainPIDtrig && !fcontainPIDasso && SetChargeAxis==2){
-fBinst[3]=iBinPair[6];
-fBinst[4]=iBinPair[7];
+       Int_t dim_val_trig=3;
+    if(fRequestEventPlane){
+      fBinst[dim_val_trig]=iBinPair[6];//if fRequestEventPlane=TRUE, dim_val already becomes 7.
+      dBinsTrig[dim_val_trig]=dBinsPair[6];
+      axisTitleTrig[dim_val_trig]=axisTitlePair[6];
+      dim_val_trig=4;
+    }
+
+if(!fcontainPIDtrig && !fcontainPIDasso && ChargeAxis==1){
+fBinst[dim_val_trig]=iBinPair[dim_val];
+dBinsTrig[dim_val_trig]=dBinsPair[dim_val];
+axisTitleTrig[dim_val_trig]=axisTitlePair[dim_val];
     }
 
 if(fcontainPIDtrig && !fcontainPIDasso){
-fBinst[3]=iBinPair[6]; 
-    if(SetChargeAxis==2){
-fBinst[4]=iBinPair[7];
-fBinst[5]=iBinPair[8];
+fBinst[dim_val_trig]=iBinPair[dim_val];
+dBinsTrig[dim_val_trig]=dBinsPair[dim_val];
+axisTitleTrig[dim_val_trig]=axisTitlePair[dim_val]; 
+    if(ChargeAxis==1){
+fBinst[dim_val_trig+1]=iBinPair[dim_val+1];
+dBinsTrig[dim_val_trig+1]=dBinsPair[dim_val+1];
+axisTitleTrig[dim_val_trig+1]=axisTitlePair[dim_val+1];
     }
  }
 
  if(!fcontainPIDtrig && fcontainPIDasso){
- if(SetChargeAxis==2){
-    fBinst[3]=iBinPair[7];
-    fBinst[4]=iBinPair[8];
+ if(ChargeAxis==1){
+    fBinst[dim_val_trig]=iBinPair[dim_val+1];
+dBinsTrig[dim_val_trig]=dBinsPair[dim_val+1];
+axisTitleTrig[dim_val_trig]=axisTitlePair[dim_val+1];
     }
  }
 
 if(fcontainPIDtrig && fcontainPIDasso){
-  fBinst[3]=iBinPair[6]; 
-    if(SetChargeAxis==2){
-fBinst[4]=iBinPair[8];
-fBinst[5]=iBinPair[9];
+  fBinst[dim_val_trig]=iBinPair[dim_val];
+dBinsTrig[dim_val_trig]=dBinsPair[dim_val];
+axisTitleTrig[dim_val_trig]=axisTitlePair[dim_val]; 
+    if(ChargeAxis==1){
+fBinst[dim_val_trig+1]=iBinPair[dim_val+2];
+dBinsTrig[dim_val_trig+1]=dBinsPair[dim_val+2];
+axisTitleTrig[dim_val_trig+1]=axisTitlePair[dim_val+2];
     }
     }
  
@@ -875,30 +1053,20 @@ fBinst[5]=iBinPair[9];
   if(ffilltrigassoUNID || ffilltrigUNIDassoID || ffilltrigIDassoUNID || ffilltrigIDassoID)
          {
            fTHnTrigcount = new  AliTHn("fTHnTrigcount", "fTHnTrigcount", 2, dims, fBinst); //2 steps;;;;0->same event;;;;;1->mixed event
-for(Int_t i=0; i<3;i++){
-    fTHnTrigcount->SetBinLimits(i, dBinsPair[i]);
-    fTHnTrigcount->SetVarTitle(i, axisTitlePair[i]);
-  }
- if(fcontainPIDtrig)   
- {
-    fTHnTrigcount->SetBinLimits(3, dBinsPair[6]);
-    fTHnTrigcount->SetVarTitle(3, axisTitlePair[6]);
- }
+   for(Int_t i=0; i<dims;i++){
+    fTHnTrigcount->SetBinLimits(i, dBinsTrig[i]);
+    fTHnTrigcount->SetVarTitle(i, axisTitleTrig[i]);
+  } 
   fOutput->Add(fTHnTrigcount);
          }
   
   if((fAnalysisType =="MCAOD") && ffilltrigIDassoIDMCTRUTH) {
   //AliTHns for trigger counting(truth MC)
   fTHnTrigcountMCTruthPrim = new  AliTHn("fTHnTrigcountMCTruthPrim", "fTHnTrigcountMCTruthPrim", 2, dims, fBinst); //2 steps;;;;0->same event;;;;;1->mixed event
-for(Int_t i=0; i<3;i++){
-    fTHnTrigcountMCTruthPrim->SetBinLimits(i, dBinsPair[i]);
-    fTHnTrigcountMCTruthPrim->SetVarTitle(i, axisTitlePair[i]);
-  }
- if(fcontainPIDtrig)   
- {
-    fTHnTrigcountMCTruthPrim->SetBinLimits(3, dBinsPair[6]);
-    fTHnTrigcountMCTruthPrim->SetVarTitle(3, axisTitlePair[6]);
- }
+ for(Int_t i=0; i<dims;i++){
+    fTHnTrigcount->SetBinLimits(i, dBinsTrig[i]);
+    fTHnTrigcount->SetVarTitle(i, axisTitleTrig[i]);
+  } 
   fOutput->Add(fTHnTrigcountMCTruthPrim);
  }
 
@@ -1045,7 +1213,65 @@ fileT->Close();
       fOutputList->Add(fHistoNSigma);
     }
   }
-  
+
+  //BayesRec plot
+  if(fPIDType==Bayes){//use bayesianPID
+    fPIDCombined = new AliPIDCombined();
+    fPIDCombined->SetDefaultTPCPriors();//****************************************Need to know about it
+
+  for(Int_t ipart=0;ipart<NSpecies;ipart++){
+    Double_t miny=0.;
+    Double_t maxy=1;
+    TH2F *fHistoBayes=new TH2F(Form("BayesRec_%d",ipart),
+                              Form("probability for reconstructed %s",kParticleSpeciesName[ipart]),200,0,10,500,miny,maxy);
+    fHistoBayes->GetXaxis()->SetTitle("P_{T} (GeV / c)");
+    fHistoBayes->GetYaxis()->SetTitle(Form("Bayes prob %s",kParticleSpeciesName[ipart]));
+    fOutputList->Add(fHistoBayes);
+
+
+   TH2F *fHistoBayesTPC=new TH2F(Form("probBayes_TPC_%d",ipart),
+                              Form("probability for Tracks as %s",kParticleSpeciesName[ipart]),200,0,10,500,miny,maxy);
+    fHistoBayesTPC->GetXaxis()->SetTitle("P_{T} (GeV / c)");
+    fHistoBayesTPC->GetYaxis()->SetTitle(Form("Bayes prob TPC %s",kParticleSpeciesName[ipart]));
+    fOutputList->Add(fHistoBayesTPC);
+
+  TH2F *fHistoBayesTOF=new TH2F(Form("probBayes_TOF_%d",ipart),
+                              Form("probability for Tracks as %s",kParticleSpeciesName[ipart]),200,0,10,500,miny,maxy);
+    fHistoBayesTOF->GetXaxis()->SetTitle("P_{T} (GeV / c)");
+    fHistoBayesTOF->GetYaxis()->SetTitle(Form("Bayes prob TOF %s",kParticleSpeciesName[ipart]));
+    fOutputList->Add(fHistoBayesTOF);
+
+ TH2F *fHistoBayesTPCTOF=new TH2F(Form("probBayes_TPCTOF_%d",ipart),
+                              Form("probability for Tracks as  %s",kParticleSpeciesName[ipart]),200,0,10,500,miny,maxy);
+    fHistoBayesTPCTOF->GetXaxis()->SetTitle("P_{T} (GeV / c)");
+    fHistoBayesTPCTOF->GetYaxis()->SetTitle(Form("Bayes prob TPCTOF %s",kParticleSpeciesName[ipart]));
+    fOutputList->Add(fHistoBayesTPCTOF);
+  }
+  }
+
+  //nsigma separation power plot 
+    for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
+ Double_t miny=0;
+ Double_t maxy=10;
+   TH2F *Pi_Ka_sep=new TH2F(Form("Pi_Ka_sep_%d",ipid),
+                              Form("Pi_Ka separation in %s",kPIDTypeName[ipid]),50,0,10,200,miny,maxy);
+    Pi_Ka_sep->GetXaxis()->SetTitle("P_{T} (GeV/C)");
+    Pi_Ka_sep->GetYaxis()->SetTitle(Form("expected seaparation(n#sigma) in %s",kPIDTypeName[ipid]));
+    fOutputList->Add(Pi_Ka_sep);
+
+   TH2F *Pi_Pr_sep=new TH2F(Form("Pi_Pr_sep_%d",ipid),
+                              Form("Pi_Pr separation in %s",kPIDTypeName[ipid]),50,0,10,200,miny,maxy);
+    Pi_Pr_sep->GetXaxis()->SetTitle("P_{T} (GeV/C)");
+    Pi_Pr_sep->GetYaxis()->SetTitle(Form("expected seaparation(n#sigma) in %s",kPIDTypeName[ipid]));
+    fOutputList->Add(Pi_Pr_sep);
+
+    TH2F *Ka_Pr_sep=new TH2F(Form("Ka_Pr_sep_%d",ipid),
+                              Form("Ka_Pr separation in %s",kPIDTypeName[ipid]),50,0,10,200,miny,maxy);
+    Ka_Pr_sep->GetXaxis()->SetTitle("P_{T} (GeV/C)");
+    Ka_Pr_sep->GetYaxis()->SetTitle(Form("expected seaparation(n#sigma) in %s",kPIDTypeName[ipid]));
+    fOutputList->Add(Ka_Pr_sep);
+    }
+
   //nsigmaDC plot
   if(fUseExclusiveNSigma) {
   for(Int_t ipart=0;ipart<NSpecies;ipart++){
@@ -1140,25 +1366,11 @@ void AliTwoParticlePIDCorr::doMCAODevent()
 // count all events(physics triggered)   
   fEventCounter->Fill(1);
 
- // get centrality object and check quality(valid for p-Pb and Pb-Pb)
-  Double_t cent_v0=0.0;
-
-  if(fSampleType=="pPb" || fSampleType=="PbPb")
-    {
-  AliCentrality *centrality=0;
-  if(aod) 
-  centrality = aod->GetHeader()->GetCentralityP();
-  // if (centrality->GetQuality() != 0) return ;
-
-  if(centrality)
-  { 
-  cent_v0 = centrality->GetCentralityPercentile(fCentralityMethod);
-  }
-  else
-    {
-  cent_v0= -1;
-     }
-    }
+ // get centrality object and check quality(valid for p-Pb and Pb-Pb; coming soon for pp 7 TeV)
+  Double_t cent_v0=-1.0;
+  Double_t effcent=1.0;
+  Double_t refmultReco =0.0;
+  Double_t gReactionPlane = -1.; 
 
 //check the PIDResponse handler
   if (!fPID) return;
@@ -1187,7 +1399,6 @@ Float_t zVtxmc =header->GetVtxZ();
  if(TMath::Abs(zVtxmc)>fzvtxcut) return;
 
  // For productions with injected signals, figure out above which label to skip particles/tracks
-  Int_t skipParticlesAbove = 0;
 
  if (fInjectedSignals)
   {
@@ -1213,82 +1424,32 @@ skipParticlesAbove = eventHeader->NProduced();
     AliInfo(Form("Injected signals in this event (%d headers). Keeping events of %s. Will skip particles/tracks above %d.", headers, eventHeader->ClassName(), skipParticlesAbove));
   }
 
- //vertex selection(is it fine for PP?)
-  if ( fVertextype==1){
-  trkVtx = aod->GetPrimaryVertex();
-  if (!trkVtx || trkVtx->GetNContributors()<=0) return;
-  TString vtxTtl = trkVtx->GetTitle();
-  if (!vtxTtl.Contains("VertexerTracks")) return;
-   zvtx = trkVtx->GetZ();
-  const AliAODVertex* spdVtx = aod->GetPrimaryVertexSPD();
-  if (!spdVtx || spdVtx->GetNContributors()<=0) return;
-  TString vtxTyp = spdVtx->GetTitle();
-  Double_t cov[6]={0};
-  spdVtx->GetCovarianceMatrix(cov);
-  Double_t zRes = TMath::Sqrt(cov[5]);
-  if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return;
-   if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return;
-  }
-  else if(fVertextype==2) {//for pp and pb-pb case
-       Int_t nVertex = aod->GetNumberOfVertices();
-       if( nVertex > 0 ) { 
-    trkVtx = aod->GetPrimaryVertex();
-               Int_t nTracksPrim = trkVtx->GetNContributors();
-                 zvtx = trkVtx->GetZ();
-               //if (fDebug > 1)AliInfo(Form(" Vertex in = %f with %d particles by  %s data ...",zVertex,nTracksPrim,vertex->GetName()));
-               // Reject TPC only vertex
-               TString name(trkVtx->GetName());
-               if (name.CompareTo("PrimaryVertex") && name.CompareTo("SPDVertex"))return;
+ if (fSampleType=="pp" && fCentralityMethod.EndsWith("_MANUAL"))
+   {
+ //make the event selection with reco vertex cut and centrality cut and return the value of the centrality
+     Double_t refmultTruth = GetAcceptedEventMultiplicity(aod,kTRUE);  //incase of ref multiplicity it will return the truth MC ref mullt value; need to determine the ref mult value separately for reco Mc case; in case of centrality this is final and fine
+     refmultReco = GetAcceptedEventMultiplicity(aod,kFALSE); 
+     if(refmultTruth<=0 || refmultReco<=0) return;
+     cent_v0=refmultTruth;
+   }
+ else {
+ cent_v0=GetAcceptedEventMultiplicity(aod,kTRUE); //centrality value; 2nd argument has no meaning
+ if(cent_v0<0.) return;
+ }
 
-               // Select a quality vertex by number of tracks?
-               if( nTracksPrim < fnTracksVertex ) {
-                 //if (fDebug > 1) AliInfo(" Primary-vertex Selection: event REJECTED ...");
-                       return ;
-                       }
-               // TODO remove vertexer Z events with dispersion > 0.02: Doesn't work for AOD at present
-                //if (strcmp(vertex->GetTitle(), "AliVertexerZ") == 0 && vertex->GetDispersion() > 0.02)
-                //  return kFALSE;
-               //      if (fDebug > 1) AliInfo(" Primary-vertex Selection: event ACCEPTED...");
-       }
-       else return;
+ effcent=cent_v0;// This will be required for efficiency THn filling(specially in case of pp)
 
+  //get the event plane in case of PbPb
+  if(fSampleType=="PbPb"){
+   if(fRequestEventPlane){
+    gReactionPlane = GetEventPlane(aod,kTRUE);//get the truth event plane
+    fHistEventPlaneTruth->Fill(gReactionPlane,cent_v0);
+    if(gReactionPlane < 0) return;
+ }
   }
-  else if(fVertextype==0){//default case
-  trkVtx = aod->GetPrimaryVertex();
-  if (!trkVtx || trkVtx->GetNContributors()<=0) return;//proper number of contributors
-  zvtx = trkVtx->GetZ();
-  Double32_t fCov[6];
-  trkVtx->GetCovarianceMatrix(fCov);
-  if(fCov[5] == 0) return;//proper vertex resolution
-  }
-  else {
-   AliInfo("Wrong Vertextype set for Primary-vertex Selection: event REJECTED ...");
-   return;//as there is no proper sample type
-  }
-
-
-  fHistQA[0]->Fill((trkVtx->GetX()));fHistQA[1]->Fill((trkVtx->GetY()));fHistQA[2]->Fill((trkVtx->GetZ()));   //for trkVtx only before vertex cut |zvtx|<10 cm
-
-  //count events having a proper vertex
-   fEventCounter->Fill(5);
-
- if (TMath::Abs(zvtx) > fzvtxcut) return;
-
-fHistQA[3]->Fill((trkVtx->GetX()));fHistQA[4]->Fill((trkVtx->GetY()));fHistQA[5]->Fill((trkVtx->GetZ()));//after vertex cut for trkVtx only
-
-//now we have events passed physics trigger, centrality,eventzvtx cut 
-
-//count events after vertex cut
-  fEventCounter->Fill(7);
-     
-if(!aod) return;  //for safety
-
-if (fSampleType=="pPb" || fSampleType=="PbPb") if (cent_v0 < 0)  return;//for pp case it is the multiplicity
 
    Double_t nooftrackstruth=0.0;//in case of pp this will give the multiplicity(for truth case) after the track loop(only for unidentified particles that pass  kinematic cuts)
 
-   Double_t cent_v0_truth=0.0;
-
    //TObjArray* tracksMCtruth=0;
 TObjArray* tracksMCtruth=new TObjArray;//for truth MC particles with PID,here unidentified means any particle other than pion, kaon or proton(Basicaly Spundefined of AliHelperPID)******WARNING::different from data and reco MC
  tracksMCtruth->SetOwner(kTRUE);  //***********************************IMPORTANT!
@@ -1394,9 +1555,9 @@ if(ffillhistQATruth)
  if(TMath::Abs(pdgtruth)!=211 && TMath::Abs(pdgtruth)!=321 && TMath::Abs(pdgtruth)!=2212)  particletypeTruth=unidentified;//*********************WARNING:: situation is different from reco MC and data case(here we don't have SpUndefined particles,because here unidentified=SpUndefined)
 
  // -- Fill THnSparse for efficiency and contamination calculation
- if (fSampleType=="pp") cent_v0=15.0;//integrated over multiplicity(so put any fixed value for each track so that practically means there is only one bin in multiplicity i.e. multiplicity intregated out )**************Important
+ if (fSampleType=="pp" && fCentralityMethod.EndsWith("_MANUAL")) effcent=15.0;//integrated over multiplicity(so put any fixed value for each track so that practically means there is only one bin in multiplicity i.e. multiplicity intregated out )**************Important
 
- Double_t primmctruth[4] = {cent_v0, zVtxmc,partMC->Pt(), partMC->Eta()};
+ Double_t primmctruth[4] = {effcent, zVtxmc,partMC->Pt(), partMC->Eta()};
  if(ffillefficiency)
   {
     fTrackHistEfficiency[5]->Fill(primmctruth,0);//for all primary truth particles(4)
@@ -1422,21 +1583,27 @@ LRCParticlePID* copy6 = new LRCParticlePID(particletypeTruth,chargeval,partMC->P
   }//MC truth track loop ends
 
 //*********************still in event loop
- Float_t weghtval=1.0;
 
- if (fSampleType=="pp") cent_v0_truth=nooftrackstruth;
- else cent_v0_truth=cent_v0;//the notation cent_v0 is reserved for reco/data case
+ if (fSampleType=="PbPb"){
+   if (fRandomizeReactionPlane)//only for TRuth MC??
+  {
+    Double_t centralityDigits = cent_v0*1000. - (Int_t)(cent_v0*1000.);
+    Double_t angle = TMath::TwoPi() * centralityDigits;
+    AliInfo(Form("Shifting phi of all tracks by %f (digits %f)", angle, centralityDigits));
+    ShiftTracks(tracksMCtruth, angle);  
+  }
+ }
 
- //now cent_v0_truth should be used for all correlation function calculation
+ Float_t weghtval=1.0;
 
 if(nooftrackstruth>0.0 && ffilltrigIDassoIDMCTRUTH)
   {
  //Fill Correlations for MC truth particles(same event)
 if(tracksMCtruth && tracksMCtruth->GetEntriesFast()>0)//hadron triggered correlation
-  Fillcorrelation(tracksMCtruth,0,cent_v0_truth,zVtxmc,weghtval,kFALSE,bSign,fPtOrderMCTruth,kFALSE,kFALSE,"trigIDassoIDMCTRUTH");//mixcase=kFALSE for same event case
+  Fillcorrelation(gReactionPlane,tracksMCtruth,0,cent_v0,zVtxmc,weghtval,kFALSE,bSign,fPtOrderMCTruth,kFALSE,kFALSE,"trigIDassoIDMCTRUTH");//mixcase=kFALSE for same event case
 
 //start mixing
-AliEventPool* pool2 = fPoolMgr->GetEventPool(cent_v0_truth, zVtxmc+200);
+AliEventPool* pool2 = fPoolMgr->GetEventPool(cent_v0, zVtxmc+200);
 if (pool2 && pool2->IsReady())
   {//start mixing only when pool->IsReady
 if(tracksMCtruth && tracksMCtruth->GetEntriesFast()>0)
@@ -1446,7 +1613,7 @@ for (Int_t jMix=0; jMix<pool2->GetCurrentNEvents(); jMix++)
   { //pool event loop start
  TObjArray* bgTracks6 = pool2->GetEvent(jMix);
   if(!bgTracks6) continue;
-  Fillcorrelation(tracksMCtruth,bgTracks6,cent_v0_truth,zVtxmc,nmix,(jMix == 0),bSign,fPtOrderMCTruth,kFALSE,kTRUE,"trigIDassoIDMCTRUTH");//mixcase=kTRUE for mixing case
+  Fillcorrelation(gReactionPlane,tracksMCtruth,bgTracks6,cent_v0,zVtxmc,nmix,(jMix == 0),bSign,fPtOrderMCTruth,kFALSE,kTRUE,"trigIDassoIDMCTRUTH");//mixcase=kTRUE for mixing case
   
    }// pool event loop ends mixing case
  }//if(trackstrig && trackstrig->GetEntriesFast()>0) condition ends mixing case
@@ -1464,6 +1631,18 @@ if(pool2)  pool2->UpdatePool(CloneAndReduceTrackList(tracksMCtruth));//ownership
 if(tracksMCtruth) delete tracksMCtruth;
 
 //now deal with reco tracks
+
+//detrmine the ref mult in case of Reco(not required if we get centrality info from AliCentrality)
+ if (fSampleType=="pp" && fCentralityMethod.EndsWith("_MANUAL")) cent_v0=refmultReco;
+ effcent=cent_v0;// This will be required for efficiency THn filling(specially in case of pp)
+
+  if(fSampleType=="PbPb"){
+ if(fRequestEventPlane){
+    gReactionPlane = GetEventPlane(aod,kFALSE);//get the reconstructed event plane
+    fHistEventPlaneReco->Fill(gReactionPlane,cent_v0);
+    if(gReactionPlane < 0) return;
+ }
+  }
    //TObjArray* tracksUNID=0;
    TObjArray* tracksUNID = new TObjArray;
    tracksUNID->SetOwner(kTRUE);
@@ -1475,8 +1654,8 @@ if(tracksMCtruth) delete tracksMCtruth;
 
    Float_t bSign1=aod->GetHeader()->GetMagneticField() ;//used for reconstructed track dca cut
 
-   Double_t trackscount=0.0;
 
+   Double_t trackscount=0.0;
 // loop over reconstructed tracks 
   for (Int_t itrk = 0; itrk < aod->GetNumberOfTracks(); itrk++) 
 { // reconstructed track loop starts
@@ -1533,7 +1712,7 @@ isduplicate2=kTRUE;
  if(fRemoveDuplicates && isduplicate2) continue;//remove duplicates
      
   fHistQA[11]->Fill(track->GetTPCNcls());
-  Int_t tracktype=ClassifyTrack(track,trkVtx,bSign1);//dcacut=kFALSE,onlyprimary=kFALSE
+  Int_t tracktype=ClassifyTrack(track,trkVtx,bSign1,kTRUE);//dcacut=kFALSE,onlyprimary=kFALSE
 
  if(tracktype==0) continue; 
  if(tracktype==1)//tracks "not" passed AliAODTrack::kPrimary at reconstructed level & have proper TPC PID response(?)
@@ -1554,7 +1733,7 @@ isduplicate2=kTRUE;
  Float_t effmatrix=1.;
 
 // -- Fill THnSparse for efficiency calculation
- if (fSampleType=="pp") cent_v0=15.0;//integrated over multiplicity(so put any fixed value for each track so that practically means there is only one bin in multiplicityi.e multiplicity intregated out )**************Important
+ if (fSampleType=="pp" && fCentralityMethod.EndsWith("_MANUAL")) effcent=15.0;//integrated over multiplicity(so put any fixed value for each track so that practically means there is only one bin in multiplicity i.e. multiplicity intregated out )**************Important
  //NOTE:: this will be used for fillinfg THnSparse of efficiency & also to get the the track by track eff. factor on the fly(only in case of pp)
 
  //Clone & Reduce track list(TObjArray) for unidentified particles
@@ -1565,7 +1744,7 @@ if((track->Pt()>=fminPtAsso && track->Pt()<=fmaxPtAsso) || (track->Pt()>=fminPtT
     if(track->Charge()<0)   chargeval=-1;
     if(chargeval==0) continue;
  if (fapplyTrigefficiency || fapplyAssoefficiency)//get the trackingefficiency x contamination factor for unidentified particles
-   effmatrix=GetTrackbyTrackeffvalue(track,cent_v0,zvtx,particletypeMC);
+   effmatrix=GetTrackbyTrackeffvalue(track,effcent,zvtx,particletypeMC);
    LRCParticlePID* copy = new LRCParticlePID(particletypeMC,chargeval,track->Pt(),track->Eta(), track->Phi(),effmatrix);
    copy->SetUniqueID(eventno * 100000 +(Int_t)trackscount);
    tracksUNID->Add(copy);//track information Storage for UNID correlation function(tracks that pass the filterbit & kinematic cuts only)
@@ -1574,7 +1753,7 @@ if((track->Pt()>=fminPtAsso && track->Pt()<=fmaxPtAsso) || (track->Pt()>=fminPtT
 //get the pdg code of the corresponding truth particle
  Int_t pdgCode = ((AliAODMCParticle*)recomatched)->GetPdgCode();
 
- Double_t allrecomatchedpid[4] = {cent_v0, zVtxmc,recomatched->Pt(), recomatched->Eta()};
+ Double_t allrecomatchedpid[4] = {effcent, zVtxmc,recomatched->Pt(), recomatched->Eta()};
  if(ffillefficiency) {
 fTrackHistEfficiency[5]->Fill(allrecomatchedpid,2);//for allreco matched
  if(TMath::Abs(pdgCode)==211 ||  TMath::Abs(pdgCode)==321)   fTrackHistEfficiency[3]->Fill(allrecomatchedpid,2);//for mesons
@@ -1593,13 +1772,25 @@ fTrackHistEfficiency[5]->Fill(allrecomatchedpid,2);//for allreco matched
  }
  }
 
-
  //now start the particle identification process:)
+
+Float_t dEdx = track->GetTPCsignal();
+ fHistoTPCdEdx->Fill(track->Pt(), dEdx);
+
+ if(HasTOFPID(track))
+{
+Double_t beta = GetBeta(track);
+fHistoTOFbeta->Fill(track->Pt(), beta);
+ }
+
+//do track identification(nsigma method)
+  particletypeMC=GetParticle(track,fFIllPIDQAHistos);//******************************problem is here
+
 switch(TMath::Abs(pdgCode)){
   case 2212:
     if(fFIllPIDQAHistos){
       for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)) && track->Pt()<fPtTOFPIDmin)continue;//not filling TOF and combined if no TOF PID
+       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)))continue;//not filling TOF and combined if no TOF PID
        TH2F *h=GetHistogram2D(Form("NSigmaMC_%d_%d",SpProton,ipid));
        h->Fill(track->Pt(),fnsigmas[SpProton][ipid]);
       }
@@ -1608,7 +1799,7 @@ switch(TMath::Abs(pdgCode)){
   case 321:
     if(fFIllPIDQAHistos){
       for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)) && track->Pt()<fPtTOFPIDmin)continue;//not filling TOF and combined if no TOF PID
+       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)))continue;//not filling TOF and combined if no TOF PID
        TH2F *h=GetHistogram2D(Form("NSigmaMC_%d_%d",SpKaon,ipid));
        h->Fill(track->Pt(),fnsigmas[SpKaon][ipid]);
       }
@@ -1617,7 +1808,7 @@ switch(TMath::Abs(pdgCode)){
   case 211:
     if(fFIllPIDQAHistos){
       for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)) && track->Pt()<fPtTOFPIDmin)continue;//not filling TOF and combined if no TOF PID
+       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)))continue;//not filling TOF and combined if no TOF PID
        TH2F *h=GetHistogram2D(Form("NSigmaMC_%d_%d",SpPion,ipid));
        h->Fill(track->Pt(),fnsigmas[SpPion][ipid]);
       }
@@ -1626,18 +1817,6 @@ switch(TMath::Abs(pdgCode)){
   }
 
 
-Float_t dEdx = track->GetTPCsignal();
- fHistoTPCdEdx->Fill(track->Pt(), dEdx);
-
- if(HasTOFPID(track))
-{
-Double_t beta = GetBeta(track);
-fHistoTOFbeta->Fill(track->Pt(), beta);
- }
-
- //do track identification(nsigma method)
-  particletypeMC=GetParticle(track,fFIllPIDQAHistos);//******************************problem is here
-
 //2-d TPCTOF map(for each Pt interval)
   if(HasTOFPID(track)){
  fTPCTOFPion3d->Fill(track->Pt(),fnsigmas[SpPion][NSigmaTOF],fnsigmas[SpPion][NSigmaTPC]);
@@ -1739,7 +1918,7 @@ if((track->Pt()>=fminPtAsso && track->Pt()<=fmaxPtAsso) || (track->Pt()>=fminPtT
     if(track->Charge()<0)   chargeval=-1;
     if(chargeval==0) continue;
 if (fapplyTrigefficiency || fapplyAssoefficiency)
-    effmatrix=GetTrackbyTrackeffvalue(track,cent_v0,zvtx,particletypeMC);//get the tracking eff x TOF matching eff x PID eff x contamination factor for identified particles 
+    effmatrix=GetTrackbyTrackeffvalue(track,effcent,zvtx,particletypeMC);//get the tracking eff x TOF matching eff x PID eff x contamination factor for identified particles 
     LRCParticlePID* copy1 = new LRCParticlePID(particletypeMC,chargeval,track->Pt(),track->Eta(), track->Phi(),effmatrix);
     copy1->SetUniqueID(eventno * 100000 + (Int_t)trackscount);
     tracksID->Add(copy1);
@@ -1750,8 +1929,6 @@ if (fapplyTrigefficiency || fapplyAssoefficiency)
 
   //*************************************************************still in event loop
  
-//same event delta-eta-deltaphi plot 
-if(fSampleType=="pp")  cent_v0=trackscount;//multiplicity
 
 if(trackscount>0.0)
   { 
@@ -1761,7 +1938,7 @@ if(trackscount>0.0)
  if (fSampleType=="pPb" || fSampleType=="PbPb") fCentralityCorrelation->Fill(cent_v0, trackscount);//only with unidentified tracks(i.e before PID selection);;;;;can be used to remove centrality outliers??????
 
 //count selected events having centrality betn 0-100%
- fEventCounter->Fill(9);
+ fEventCounter->Fill(11);
 
 //***************************************event no. counting
 Bool_t isbaryontrig=kFALSE;
@@ -1786,14 +1963,14 @@ for(Int_t i=0;i<tracksID->GetEntriesFast();i++)
  //same event delte-eta, delta-phi plot
 if(tracksUNID && tracksUNID->GetEntriesFast()>0)//hadron triggered correlation
   {//same event calculation starts
-    if(ffilltrigassoUNID) Fillcorrelation(tracksUNID,0,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigassoUNID");//mixcase=kFALSE (hadron-hadron correlation)
-    if(tracksID && tracksID->GetEntriesFast()>0 && ffilltrigUNIDassoID)  Fillcorrelation(tracksUNID,tracksID,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigUNIDassoID");//mixcase=kFALSE (hadron-ID correlation)
+    if(ffilltrigassoUNID) Fillcorrelation(gReactionPlane,tracksUNID,0,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigassoUNID");//mixcase=kFALSE (hadron-hadron correlation)
+    if(tracksID && tracksID->GetEntriesFast()>0 && ffilltrigUNIDassoID)  Fillcorrelation(gReactionPlane,tracksUNID,tracksID,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigUNIDassoID");//mixcase=kFALSE (hadron-ID correlation)
   }
 
 if(tracksID && tracksID->GetEntriesFast()>0)//ID triggered correlation
   {//same event calculation starts
-    if(tracksUNID && tracksUNID->GetEntriesFast()>0 && ffilltrigIDassoUNID)  Fillcorrelation(tracksID,tracksUNID,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoUNID");//mixcase=kFALSE (ID-hadron correlation)
-    if(ffilltrigIDassoID)   Fillcorrelation(tracksID,0,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoID");//mixcase=kFALSE (ID-ID correlation)
+    if(tracksUNID && tracksUNID->GetEntriesFast()>0 && ffilltrigIDassoUNID)  Fillcorrelation(gReactionPlane,tracksID,tracksUNID,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoUNID");//mixcase=kFALSE (ID-hadron correlation)
+    if(ffilltrigIDassoID)   Fillcorrelation(gReactionPlane,tracksID,0,cent_v0,zvtx,weghtval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoID");//mixcase=kFALSE (ID-ID correlation)
   }
 
 //still in  main event loop
@@ -1808,9 +1985,9 @@ if (pool && pool->IsReady())
  TObjArray* bgTracks = pool->GetEvent(jMix);
   if(!bgTracks) continue;
   if(ffilltrigassoUNID && tracksUNID && tracksUNID->GetEntriesFast()>0)//*******************************hadron trggered mixing
-    Fillcorrelation(tracksUNID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigassoUNID");//mixcase=kTRUE
+    Fillcorrelation(gReactionPlane,tracksUNID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigassoUNID");//mixcase=kTRUE
  if(ffilltrigIDassoUNID && tracksID && tracksID->GetEntriesFast()>0)//***********************************ID trggered mixing
-   Fillcorrelation(tracksID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoUNID");//mixcase=kTRUE 
+   Fillcorrelation(gReactionPlane,tracksID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoUNID");//mixcase=kTRUE 
    }// pool event loop ends mixing case
 
 } //if pool->IsReady() condition ends mixing case
@@ -1830,9 +2007,9 @@ for (Int_t jMix=0; jMix<pool1->GetCurrentNEvents(); jMix++)
  TObjArray* bgTracks2 = pool1->GetEvent(jMix);
   if(!bgTracks2) continue;
 if(ffilltrigUNIDassoID && tracksUNID && tracksUNID->GetEntriesFast()>0)
-  Fillcorrelation(tracksUNID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigUNIDassoID");//mixcase=kTRUE  
+  Fillcorrelation(gReactionPlane,tracksUNID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigUNIDassoID");//mixcase=kTRUE  
 if(ffilltrigIDassoID && tracksID && tracksID->GetEntriesFast()>0)
-  Fillcorrelation(tracksID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoID");//mixcase=kTRUE
+  Fillcorrelation(gReactionPlane,tracksID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoID");//mixcase=kTRUE
 
    }// pool event loop ends mixing case
 } //if pool1->IsReady() condition ends mixing case
@@ -1844,7 +2021,7 @@ if(pool1)
  }//mixing with identified particles
 
   //no. of events analyzed
-fEventCounter->Fill(11);
+fEventCounter->Fill(13);
   }
 
 if(tracksUNID)  delete tracksUNID;
@@ -1871,120 +2048,40 @@ void AliTwoParticlePIDCorr::doAODevent()
 // count all events   
   fEventCounter->Fill(1);
 
-  // get centrality object and check quality
-  Double_t cent_v0=0;
+if (!fPID) return;//this should be available with each event even if we don't do PID selection
 
-  if(fSampleType=="pPb" || fSampleType=="PbPb")
-    {
-  AliCentrality *centrality=0;
-  if(aod) 
-  centrality = aod->GetHeader()->GetCentralityP();
-  // if (centrality->GetQuality() != 0) return ;
+  Double_t cent_v0=   -999.;
+  Double_t effcent=1.0;
+  Double_t gReactionPlane       = -1.; 
+  Float_t bSign = 0.;
+  Double_t trackscount=0;//counts particles passed filterbit cuts and kinematic cuts used in this analysis
 
-  if(centrality)
-  { 
-  cent_v0 = centrality->GetCentralityPercentile(fCentralityMethod);
-  }
-  else
-    {
-  cent_v0= -1;
-     }
-    }
 
Float_t bSign = (aod->GetMagneticField() > 0) ? 1 : -1;//for two track efficiency cut in correlation function calculation
+ bSign = (aod->GetMagneticField() > 0) ? 1 : -1;//for two track efficiency cut in correlation function calculation
  Float_t bSign1=aod->GetHeader()->GetMagneticField() ;//for dca cut in ClassifyTrack(), i.e in track loop
 
-// Pileup selection ************************************************
- if(frejectPileUp)  //applicable only for TPC only tracks,not for hybrid tracks?.
-      {
- if (fAnalysisUtils && fAnalysisUtils->IsPileUpEvent(aod)) return;
-//count events after PileUP cut
-   fEventCounter->Fill(3);
-  }
 
- if (!fPID) return;//this should be available with each event even if we don't do PID selection
+// check event cuts and fill event histograms and return the centrality or reference multiplicity value
+ if((cent_v0 = GetAcceptedEventMultiplicity(aod,kFALSE)) < 0){ 
+    return;
+  }
   
-  //vertex selection(is it fine for PP?)
- if ( fVertextype==1){//for pPb basically if(!fAnalysisUtils->IsVertexSelected2013pA(aod)) return; 
-  trkVtx = aod->GetPrimaryVertex();
-  if (!trkVtx || trkVtx->GetNContributors()<=0) return;
-  TString vtxTtl = trkVtx->GetTitle();
-  if (!vtxTtl.Contains("VertexerTracks")) return;
-   zvtx = trkVtx->GetZ();
-  const AliAODVertex* spdVtx = aod->GetPrimaryVertexSPD();
-  if (!spdVtx || spdVtx->GetNContributors()<=0) return;
-  TString vtxTyp = spdVtx->GetTitle();
-  Double_t cov[6]={0};
-  spdVtx->GetCovarianceMatrix(cov);
-  Double_t zRes = TMath::Sqrt(cov[5]);
-  if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return;
-   if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return;
+  //get the event plane in case of PbPb
+  if(fSampleType=="PbPb"){
+    if(fRequestEventPlane){
+    gReactionPlane = GetEventPlane(aod,kFALSE);
+    fHistEventPlaneReco->Fill(gReactionPlane,cent_v0);
+    if(gReactionPlane < 0) return;
+    }    
   }
-  else if(fVertextype==2) {//for pp and pb-pb case , taken from Jan's code
-       Int_t nVertex = aod->GetNumberOfVertices();
-       if( nVertex > 0 ) { 
-     trkVtx = aod->GetPrimaryVertex();
-               Int_t nTracksPrim = trkVtx->GetNContributors();
-                 zvtx = trkVtx->GetZ();
-               //if (fDebug > 1)AliInfo(Form(" Vertex in = %f with %d particles by  %s data ...",zVertex,nTracksPrim,vertex->GetName()));
-               // Reject TPC only vertex
-               TString name(trkVtx->GetName());
-               if (name.CompareTo("PrimaryVertex") && name.CompareTo("SPDVertex"))return;
 
-               // Select a quality vertex by number of tracks?
-               if( nTracksPrim < fnTracksVertex ) {
-                 //if (fDebug > 1) AliInfo(" Primary-vertex Selection: event REJECTED ...");
-                       return ;
-                       }
-               // TODO remove vertexer Z events with dispersion > 0.02: Doesn't work for AOD at present
-                //if (strcmp(vertex->GetTitle(), "AliVertexerZ") == 0 && vertex->GetDispersion() > 0.02)
-                //  return kFALSE;
-               //      if (fDebug > 1) AliInfo(" Primary-vertex Selection: event ACCEPTED...");
-       }
-       else return;
+   TObjArray*  tracksUNID= new TObjArray;//track info before doing PID
+   tracksUNID->SetOwner(kTRUE);  // IMPORTANT!
 
-  }
- else if(fVertextype==0){//default case
-  trkVtx = aod->GetPrimaryVertex();
-  if (!trkVtx || trkVtx->GetNContributors()<=0) return;//proper number of contributors
-  zvtx = trkVtx->GetZ();
-  Double32_t fCov[6];
-  trkVtx->GetCovarianceMatrix(fCov);
-  if(fCov[5] == 0) return;//proper vertex resolution
-  }
-  else {
-   AliInfo("Wrong Vertextype set for Primary-vertex Selection: event REJECTED ...");
-   return;//as there is no proper sample type
-  }
-
-  fHistQA[0]->Fill((trkVtx->GetX()));fHistQA[1]->Fill((trkVtx->GetY()));fHistQA[2]->Fill((trkVtx->GetZ())); //for trkVtx only before vertex cut |zvtx|<10 cm
-
-//count events having a proper vertex
-   fEventCounter->Fill(5);
-
- if (TMath::Abs(zvtx) > fzvtxcut) return;
-
-//count events after vertex cut
-  fEventCounter->Fill(7);
-
-
- //if(!fAnalysisUtils->IsVertexSelected2013pA(aod)) return;
-  
- fHistQA[3]->Fill((trkVtx->GetX()));fHistQA[4]->Fill((trkVtx->GetY()));fHistQA[5]->Fill((trkVtx->GetZ()));//after vertex cut,for trkVtx only
-
-
- if(!aod) return; //for safety
-  
-if(fSampleType=="pPb" || fSampleType=="PbPb") if (cent_v0 < 0)  return;//for pp case it is the multiplicity
-
-   TObjArray*  tracksUNID= new TObjArray;//track info before doing PID
-   tracksUNID->SetOwner(kTRUE);  // IMPORTANT!
-
-   TObjArray* tracksID= new TObjArray;//only pions, kaons,protonsi.e. after doing the PID selection
+   TObjArray* tracksID= new TObjArray;//only pions, kaons,protons i.e. after doing the PID selection
    tracksID->SetOwner(kTRUE);  // IMPORTANT!
  
-     Double_t trackscount=0.0;//in case of pp this will give the multiplicity after the track loop(only for unidentified particles that pass the filterbit and kinematic cuts)
-
+    
     eventno++;
 
     Bool_t fTrigPtmin1=kFALSE;
@@ -1997,7 +2094,7 @@ if(fSampleType=="pPb" || fSampleType=="PbPb") if (cent_v0 < 0)  return;//for pp
   if (!track) continue;
   fHistQA[11]->Fill(track->GetTPCNcls());
   Int_t particletype=-9999;//required for PID filling
-  Int_t tracktype=ClassifyTrack(track,trkVtx,bSign1);//dcacut=kFALSE,onlyprimary=kFALSE
+  Int_t tracktype=ClassifyTrack(track,trkVtx,bSign1,kTRUE);//dcacut=kFALSE,onlyprimary=kFALSE
   if(tracktype!=1) continue; 
 
   if(!track) continue;//for safety
@@ -2014,13 +2111,13 @@ if(fSampleType=="pPb" || fSampleType=="PbPb") if (cent_v0 < 0)  return;//for pp
  //tag all particles as unidentified that passed filterbit & kinematic cuts 
  particletype=unidentified;
 
-
+ //To count the no. of tracks having an accepted track in a certain PT(e.g. Jet Pt) range
  if(track->Pt()>=fminPtTrig) fTrigPtmin1=kTRUE;
  if(track->Pt()>=(fminPtTrig+0.5)) fTrigPtmin2=kTRUE;
  if(track->Pt()>=fmaxPtTrig) fTrigPtJet=kTRUE;
 
 
- if (fSampleType=="pp") cent_v0=15.0;//integrated over multiplicity [i.e each track has multiplicity 15.0](so put any fixed value for each track so that practically means there is only one bin in multiplicityi.e multiplicity intregated out )**************Important for efficiency related issues
+ if (fSampleType=="pp") effcent=15.0;//integrated over multiplicity [i.e each track has multiplicity 15.0](so put any fixed value for each track so that practically means there is only one bin in multiplicityi.e multiplicity intregated out )**************Important for efficiency related issues
 
 
  //to reduce memory consumption in pool
@@ -2032,7 +2129,7 @@ if(fSampleType=="pPb" || fSampleType=="PbPb") if (cent_v0 < 0)  return;//for pp
     if(track->Charge()<0)   chargeval=-1;
     if(chargeval==0) continue;
  if (fapplyTrigefficiency || fapplyAssoefficiency)//get the trackingefficiency x contamination factor for unidentified particles
-   effmatrix=GetTrackbyTrackeffvalue(track,cent_v0,zvtx,particletype);
+   effmatrix=GetTrackbyTrackeffvalue(track,effcent,zvtx,particletype);
  LRCParticlePID* copy = new LRCParticlePID(particletype,chargeval,track->Pt(),track->Eta(), track->Phi(),effmatrix);
   copy->SetUniqueID(eventno * 100000 + (Int_t)trackscount);
   tracksUNID->Add(copy);//track information Storage for UNID correlation function(tracks that pass the filterbit & kinematic cuts only)
@@ -2097,7 +2194,7 @@ if (particletype==SpProton)
     if(track->Charge()<0)   chargeval=-1;
     if(chargeval==0) continue;
 if (fapplyTrigefficiency || fapplyAssoefficiency)
-  effmatrix=GetTrackbyTrackeffvalue(track,cent_v0,zvtx,particletype);//get the tracking eff x TOF matching eff x PID eff x contamination factor for identified particles; Bool_t mesoneffrequired=kFALSE
+  effmatrix=GetTrackbyTrackeffvalue(track,effcent,zvtx,particletype);//get the tracking eff x TOF matching eff x PID eff x contamination factor for identified particles; Bool_t mesoneffrequired=kFALSE
  LRCParticlePID* copy1 = new LRCParticlePID(particletype,chargeval,track->Pt(),track->Eta(), track->Phi(),effmatrix);
     copy1->SetUniqueID(eventno * 100000 + (Int_t)trackscount);
     tracksID->Add(copy1);
@@ -2117,8 +2214,6 @@ if(trackscount<1.0){
  Float_t weightval=1.0;
 
 
-// cout<<fminPtAsso<<"***"<<fmaxPtAsso<<"*********************"<<fminPtTrig<<"***"<<fmaxPtTrig<<"*****************"<<kTrackVariablesPair<<endl;
-if(fSampleType=="pp")  cent_v0=trackscount;//multiplicity
   
 //fill the centrality/multiplicity distribution of the selected events
  fhistcentrality->Fill(cent_v0);//*********************************WARNING::binning of cent_v0 is different for pp and pPb/PbPb case
@@ -2126,7 +2221,7 @@ if(fSampleType=="pp")  cent_v0=trackscount;//multiplicity
 if(fSampleType=="pPb" || fSampleType=="PbPb") fCentralityCorrelation->Fill(cent_v0, trackscount);//only with unidentified tracks(i.e before PID selection);;;;;can be used to remove centrality outliers??????
 
 //count selected events having centrality betn 0-100%
- fEventCounter->Fill(9);
+ fEventCounter->Fill(11);
 
 //***************************************event no. counting
 Bool_t isbaryontrig=kFALSE;
@@ -2153,14 +2248,14 @@ for(Int_t i=0;i<tracksID->GetEntriesFast();i++)
 
 if(tracksUNID && tracksUNID->GetEntriesFast()>0)//hadron triggered correlation
   {//same event calculation starts
-    if(ffilltrigassoUNID) Fillcorrelation(tracksUNID,0,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigassoUNID");//mixcase=kFALSE (hadron-hadron correlation)
-    if(tracksID && tracksID->GetEntriesFast()>0 && ffilltrigUNIDassoID)  Fillcorrelation(tracksUNID,tracksID,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigUNIDassoID");//mixcase=kFALSE (hadron-ID correlation)
+    if(ffilltrigassoUNID) Fillcorrelation(gReactionPlane,tracksUNID,0,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigassoUNID");//mixcase=kFALSE (hadron-hadron correlation)
+    if(tracksID && tracksID->GetEntriesFast()>0 && ffilltrigUNIDassoID)  Fillcorrelation(gReactionPlane,tracksUNID,tracksID,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigUNIDassoID");//mixcase=kFALSE (hadron-ID correlation)
   }
 
 if(tracksID && tracksID->GetEntriesFast()>0)//ID triggered correlation
   {//same event calculation starts
-    if(tracksUNID && tracksUNID->GetEntriesFast()>0 && ffilltrigIDassoUNID)  Fillcorrelation(tracksID,tracksUNID,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoUNID");//mixcase=kFALSE (ID-hadron correlation)
-    if(ffilltrigIDassoID)   Fillcorrelation(tracksID,0,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoID");//mixcase=kFALSE (ID-ID correlation)
+    if(tracksUNID && tracksUNID->GetEntriesFast()>0 && ffilltrigIDassoUNID)  Fillcorrelation(gReactionPlane,tracksID,tracksUNID,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoUNID");//mixcase=kFALSE (ID-hadron correlation)
+    if(ffilltrigIDassoID)   Fillcorrelation(gReactionPlane,tracksID,0,cent_v0,zvtx,weightval,kFALSE,bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kFALSE,"trigIDassoID");//mixcase=kFALSE (ID-ID correlation)
   }
 
 //still in  main event loop
@@ -2177,9 +2272,9 @@ if (pool && pool->IsReady())
  TObjArray* bgTracks = pool->GetEvent(jMix);
   if(!bgTracks) continue;
   if(ffilltrigassoUNID && tracksUNID && tracksUNID->GetEntriesFast()>0)//*******************************hadron trggered mixing
-    Fillcorrelation(tracksUNID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigassoUNID");//mixcase=kTRUE
+    Fillcorrelation(gReactionPlane,tracksUNID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigassoUNID");//mixcase=kTRUE
  if(ffilltrigIDassoUNID && tracksID && tracksID->GetEntriesFast()>0)//***********************************ID trggered mixing
-   Fillcorrelation(tracksID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoUNID");//mixcase=kTRUE 
+   Fillcorrelation(gReactionPlane,tracksID,bgTracks,cent_v0,zvtx,nmix1,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoUNID");//mixcase=kTRUE 
    }// pool event loop ends mixing case
 } //if pool->IsReady() condition ends mixing case
  if(tracksUNID) {
@@ -2199,9 +2294,9 @@ for (Int_t jMix=0; jMix<pool1->GetCurrentNEvents(); jMix++)
  TObjArray* bgTracks2 = pool1->GetEvent(jMix);
   if(!bgTracks2) continue;
 if(ffilltrigUNIDassoID && tracksUNID && tracksUNID->GetEntriesFast()>0)
-  Fillcorrelation(tracksUNID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigUNIDassoID");//mixcase=kTRUE  
+  Fillcorrelation(gReactionPlane,tracksUNID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigUNIDassoID");//mixcase=kTRUE  
 if(ffilltrigIDassoID && tracksID && tracksID->GetEntriesFast()>0)
-  Fillcorrelation(tracksID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoID");//mixcase=kTRUE
+  Fillcorrelation(gReactionPlane,tracksID,bgTracks2,cent_v0,zvtx,nmix2,(jMix == 0),bSign,fPtOrderDataReco,ftwoTrackEfficiencyCutDataReco,kTRUE,"trigIDassoID");//mixcase=kTRUE
 
    }// pool event loop ends mixing case
 } //if pool1->IsReady() condition ends mixing case
@@ -2214,7 +2309,7 @@ if(pool1)
 
 
   //no. of events analyzed
-fEventCounter->Fill(11);
+fEventCounter->Fill(13);
  
 //still in main event loop
 
@@ -2246,7 +2341,7 @@ TObjArray* AliTwoParticlePIDCorr::CloneAndReduceTrackList(TObjArray* tracks)
 }
 
 //--------------------------------------------------------------------------------
-void AliTwoParticlePIDCorr::Fillcorrelation(TObjArray *trackstrig,TObjArray *tracksasso,Double_t cent,Float_t vtx,Float_t weight,Bool_t firstTime,Float_t bSign,Bool_t fPtOrder,Bool_t twoTrackEfficiencyCut,Bool_t mixcase,TString fillup)
+void AliTwoParticlePIDCorr::Fillcorrelation(Double_t gReactionPlane,TObjArray *trackstrig,TObjArray *tracksasso,Double_t cent,Float_t vtx,Float_t weight,Bool_t firstTime,Float_t bSign,Bool_t fPtOrder,Bool_t twoTrackEfficiencyCut,Bool_t mixcase,TString fillup)
 {
 
   //before calling this function check that either trackstrig & tracksasso are available 
@@ -2409,25 +2504,67 @@ if (fOnlyOneEtaSide != 0)
       Float_t trigphi=trig->Phi();
       Float_t trackefftrig=1.0;
       if(fapplyTrigefficiency) trackefftrig=trig->geteffcorrectionval();
+
+    // Event plane (determine psi bin)
+    Double_t gPsiMinusPhi    =   0.;
+    Double_t gPsiMinusPhiBin = -10.;
+if(fRequestEventPlane){
+    gPsiMinusPhi   = TMath::Abs(trigphi - gReactionPlane);
+    //in-plane
+    if((gPsiMinusPhi <= 7.5*TMath::DegToRad())||
+       ((172.5*TMath::DegToRad() <= gPsiMinusPhi)&&(gPsiMinusPhi <= 187.5*TMath::DegToRad())))
+      gPsiMinusPhiBin = 0.0;
+    //intermediate
+    else if(((37.5*TMath::DegToRad() <= gPsiMinusPhi)&&(gPsiMinusPhi <= 52.5*TMath::DegToRad()))||
+           ((127.5*TMath::DegToRad() <= gPsiMinusPhi)&&(gPsiMinusPhi <= 142.5*TMath::DegToRad()))||
+           ((217.5*TMath::DegToRad() <= gPsiMinusPhi)&&(gPsiMinusPhi <= 232.5*TMath::DegToRad()))||
+           ((307.5*TMath::DegToRad() <= gPsiMinusPhi)&&(gPsiMinusPhi <= 322.5*TMath::DegToRad())))
+      gPsiMinusPhiBin = 1.0;
+    //out of plane
+    else if(((82.5*TMath::DegToRad() <= gPsiMinusPhi)&&(gPsiMinusPhi <= 97.5*TMath::DegToRad()))||
+           ((262.5*TMath::DegToRad() <= gPsiMinusPhi)&&(gPsiMinusPhi <= 277.5*TMath::DegToRad())))
+      gPsiMinusPhiBin = 2.0;
+    //everything else
+    else 
+      gPsiMinusPhiBin = 3.0;
+    
+    fHistPsiMinusPhi->Fill(gPsiMinusPhiBin,gPsiMinusPhi);
+ }
+
       //cout<<"*******************trackefftrig="<<trackefftrig<<endl;
        Double_t* trigval;
        Int_t dim=3;
-       if(fcontainPIDtrig && SetChargeAxis==0) dim=4;
-       if(!fcontainPIDtrig && SetChargeAxis==2) dim=4;
-       if(fcontainPIDtrig && SetChargeAxis==2) dim=5;
+       Int_t eventplaneAxis=0;
+        if(fRequestEventPlane) eventplaneAxis=1;
+       if(fcontainPIDtrig && SetChargeAxis==0) dim=4+eventplaneAxis;
+       if(!fcontainPIDtrig && SetChargeAxis==2) dim=4+eventplaneAxis;
+       if(fcontainPIDtrig && SetChargeAxis==2) dim=5+eventplaneAxis;
         trigval= new Double_t[dim];
       trigval[0] = cent;
       trigval[1] = vtx;
       trigval[2] = trigpt;
-      if(fcontainPIDtrig)   {
-   trigval[3] = particlepidtrig;
-  if(SetChargeAxis==2) trigval[4]=trig->Charge();
+
+      if(fRequestEventPlane){
+      trigval[3] = gPsiMinusPhiBin;
+      if(fcontainPIDtrig && SetChargeAxis==0) trigval[4] = particlepidtrig;
+      if(!fcontainPIDtrig && SetChargeAxis==2) trigval[4] = trig->Charge();
+      if(fcontainPIDtrig && SetChargeAxis==2) {
+      trigval[4] = particlepidtrig;
+      trigval[5] = trig->Charge();
+       }
       }
 
-      if(!fcontainPIDtrig) {
-       if(SetChargeAxis==2)  trigval[3]=trig->Charge();      
+  if(!fRequestEventPlane){
+      if(fcontainPIDtrig && SetChargeAxis==0) trigval[3] = particlepidtrig;
+      if(!fcontainPIDtrig && SetChargeAxis==2) trigval[3] = trig->Charge();
+      if(fcontainPIDtrig && SetChargeAxis==2) {
+      trigval[3] = particlepidtrig;
+      trigval[4] = trig->Charge();
+       }
       }
 
+
        if (fWeightPerEvent)
        {
          // leads effectively to a filling of one entry per filled trigger particle pT bin
@@ -2497,7 +2634,7 @@ if(mixcase==kTRUE && firstTime)   fTHnTrigcountMCTruthPrim->Fill(trigval,1,1.0/t
 
     if(!asso) continue;
 
-    //to avoid overflow qnd underflow
+    //to avoid overflow and underflow
  if(asso->Pt()<fminPtAsso || asso->Pt()>fmaxPtAsso) continue;//***********************Important
 
  //if(fmaxPtAsso==fminPtTrig) {if(asso->Pt()==fminPtTrig) continue;}//******************Think about it!
@@ -2670,37 +2807,46 @@ if (dphistarminabs < twoTrackEfficiencyCutValue && TMath::Abs(deta) < twoTrackEf
        Float_t effweight=trackefftrig*trackeffasso*weightperevent;
        // if(mixcase==kFALSE)  cout<<"*******************effweight="<<effweight<<endl;
        Double_t* vars;
-        vars= new Double_t[kTrackVariablesPair];
+       Int_t dimused=kTrackVariablesPair+eventplaneAxis;
+        vars= new Double_t[dimused];
        vars[0]=cent;
        vars[1]=vtx;
        vars[2]=trigpt;
        vars[3]=asso->Pt();
        vars[4]=deleta;
        vars[5]=delphi;
+
+       Int_t dimension=6;
+        if(fRequestEventPlane) 
+       {
+       vars[6]=gPsiMinusPhiBin;
+       dimension=7;
+       }
+
 if(!fcontainPIDtrig && !fcontainPIDasso && SetChargeAxis==2){
-        vars[6]=trig->Charge();
-       vars[7]=asso->Charge();
+        vars[dimension]=trig->Charge();
+       vars[dimension+1]=asso->Charge();
  }
 if(fcontainPIDtrig && !fcontainPIDasso){
-        vars[6]=particlepidtrig;
+        vars[dimension]=particlepidtrig;
 if(SetChargeAxis==2){
-        vars[7]=trig->Charge();
-       vars[8]=asso->Charge();
+        vars[dimension+1]=trig->Charge();
+       vars[dimension+2]=asso->Charge();
  }
        }
 if(!fcontainPIDtrig && fcontainPIDasso){
-        vars[6]=particlepidasso;
+        vars[dimension]=particlepidasso;
 if(SetChargeAxis==2){
-        vars[7]=trig->Charge();
-       vars[8]=asso->Charge();
+        vars[dimension+1]=trig->Charge();
+       vars[dimension+2]=asso->Charge();
    }
  }
  if(fcontainPIDtrig && fcontainPIDasso){
-       vars[6]=particlepidtrig;
-       vars[7]=particlepidasso;
+       vars[dimension]=particlepidtrig;
+       vars[dimension+1]=particlepidasso;
 if(SetChargeAxis==2){
-        vars[8]=trig->Charge();
-       vars[9]=asso->Charge();
+        vars[dimension+2]=trig->Charge();
+       vars[dimension+3]=asso->Charge();
    }
  }
 
@@ -2818,9 +2964,9 @@ if(parpid==SpPion || parpid==SpKaon)
      return effvalue; 
 
 }
-//-----------------------------------------------------------------------
+//---------------------------------------------------------------------------------
 
-Int_t AliTwoParticlePIDCorr::ClassifyTrack(AliAODTrack* track,AliAODVertex* vertex,Float_t magfield)
+Int_t AliTwoParticlePIDCorr::ClassifyTrack(AliAODTrack* track,AliAODVertex* vertex,Float_t magfield, Bool_t fill)
 {  
  
   if(!track) return 0;
@@ -2830,27 +2976,28 @@ Int_t AliTwoParticlePIDCorr::ClassifyTrack(AliAODTrack* track,AliAODVertex* vert
   //select only primary traks(for data & reco MC tracks) 
   if(fonlyprimarydatareco && track->GetType()!=AliAODTrack::kPrimary) return 0;
   if(track->Charge()==0) return 0;
-  fHistQA[12]->Fill(track->GetTPCNcls());  
+  if (fill) fHistQA[12]->Fill(track->GetTPCNcls());  
   Float_t dxy, dz;               
   dxy = track->DCA();
   dz = track->ZAtDCA();
-  fHistQA[6]->Fill(dxy);
-  fHistQA[7]->Fill(dz);
+  if (fill) fHistQA[6]->Fill(dxy);
+  if (fill) fHistQA[7]->Fill(dz);
   Float_t chi2ndf = track->Chi2perNDF();
-  fHistQA[13]->Fill(chi2ndf);  
-  Float_t nCrossedRowsTPC = track->GetTPCClusterInfo(2,1);
-  fHistQA[14]->Fill(nCrossedRowsTPC); 
+  if (fill) fHistQA[13]->Fill(chi2ndf);  
+  // Float_t nCrossedRowsTPC = track->GetTPCClusterInfo(2,1);
+  Float_t nCrossedRowsTPC = track->GetTPCNCrossedRows();
+  if (fill) fHistQA[14]->Fill(nCrossedRowsTPC); 
   //Float_t  ratioCrossedRowsOverFindableClustersTPC = 1.0;
   if (track->GetTPCNclsF()>0) {
    Float_t  ratioCrossedRowsOverFindableClustersTPC = nCrossedRowsTPC/track->GetTPCNclsF();
-   fHistQA[15]->Fill(ratioCrossedRowsOverFindableClustersTPC);
+   if (fill) fHistQA[15]->Fill(ratioCrossedRowsOverFindableClustersTPC);
     }
 //accepted tracks  
      Float_t pt=track->Pt();
      if(pt< fminPt || pt> fmaxPt) return 0;
      if(TMath::Abs(track->Eta())> fmaxeta) return 0;
      if(track->Phi()<0. || track->Phi()>2*TMath::Pi()) return 0;
-     //if (!HasTPCPID(track)) return 0;//trigger & associated particles must have TPC PID,Is it required
+     //if (!HasTPCPID(track)) return 0;//trigger & associated particles must have TPC PID,Is it required???
 // DCA XY
        if (fdcacut && fDCAXYCut)
        {
@@ -2877,9 +3024,9 @@ Int_t AliTwoParticlePIDCorr::ClassifyTrack(AliAODTrack* track,AliAODVertex* vert
          if (frac > fSharedClusterCut)
            return 0;
        }
-     fHistQA[8]->Fill(pt);
-     fHistQA[9]->Fill(track->Eta());
-     fHistQA[10]->Fill(track->Phi());
+     if (fill) fHistQA[8]->Fill(pt);
+     if (fill) fHistQA[9]->Fill(track->Eta());
+     if (fill) fHistQA[10]->Fill(track->Phi());
      return 1;
   }
   //________________________________________________________________________________
@@ -2888,6 +3035,67 @@ void AliTwoParticlePIDCorr::CalculateNSigmas(AliAODTrack *track, Bool_t FIllQAHi
 //This function is called within the func GetParticle() for accepted tracks only i.e.after call of Classifytrack() & for those tracks which have proper TPC PID response . combined nsigma(circular) cut only for particles having pt upto  4.0 Gev/c and beyond that use the asymmetric nsigma cut around pion's mean position in TPC ( while filling the  TObjArray for trig & asso )
 Float_t pt=track->Pt();
 
+//plot the separation power
+
+Double_t bethe[AliPID::kSPECIES]={0.};
+Double_t sigma_TPC[AliPID::kSPECIES]={0.}; 
+
+ Double_t Pi_Ka_sep[NSigmaPIDType+1]={0.};
+ Double_t Pi_Pr_sep[NSigmaPIDType+1]={0.};
+ Double_t Ka_Pr_sep[NSigmaPIDType+1]={0.};
+
+
+    Double_t ptpc = track->GetTPCmomentum();
+    Int_t dEdxN = track->GetTPCsignalN();
+ for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++) {
+       bethe[ipart] = fPID->GetTPCResponse().GetExpectedSignal(ptpc, (AliPID::EParticleType)ipart);
+      //Double_t diff = dEdx - bethe;
+       sigma_TPC[ipart] = fPID->GetTPCResponse().GetExpectedSigma(ptpc, dEdxN, (AliPID::EParticleType)ipart);
+      //nSigma[ipart] = diff / sigma;
+    }
+ Pi_Ka_sep[NSigmaTPC]=TMath::Abs(bethe[AliPID::kPion]-bethe[AliPID::kKaon])/((sigma_TPC[AliPID::kPion]+sigma_TPC[AliPID::kKaon])/2.0);
+ Pi_Pr_sep[NSigmaTPC]=TMath::Abs(bethe[AliPID::kPion]-bethe[AliPID::kProton])/((sigma_TPC[AliPID::kPion]+sigma_TPC[AliPID::kProton])/2.0);
+ Ka_Pr_sep[NSigmaTPC]=TMath::Abs(bethe[AliPID::kKaon]-bethe[AliPID::kProton])/((sigma_TPC[AliPID::kKaon]+sigma_TPC[AliPID::kProton])/2.0);
+
+
+Double_t sigma_TOF[AliPID::kSPECIES]={0.}; 
+
+if(HasTOFPID(track) && pt>fPtTOFPIDmin)
+   {
+ Double_t timei[AliPID::kSPECIES];
+ track->GetIntegratedTimes(timei);
+ for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++) {  sigma_TOF[ipart]= fPID->GetTOFResponse().GetExpectedSigma(track->P(), timei[ipart], AliPID::ParticleMass(ipart));}
+ Pi_Ka_sep[NSigmaTOF]=TMath::Abs(timei[AliPID::kPion]-timei[AliPID::kKaon])/((sigma_TOF[AliPID::kPion]+sigma_TOF[AliPID::kKaon])/2.0);
+ Pi_Pr_sep[NSigmaTOF]=TMath::Abs(timei[AliPID::kPion]-timei[AliPID::kProton])/((sigma_TOF[AliPID::kPion]+sigma_TOF[AliPID::kProton])/2.0);
+ Ka_Pr_sep[NSigmaTOF]=TMath::Abs(timei[AliPID::kKaon]-timei[AliPID::kProton])/((sigma_TOF[AliPID::kKaon]+sigma_TOF[AliPID::kProton])/2.0);
+
+  Pi_Ka_sep[NSigmaTPCTOF]=TMath::Abs(Pi_Ka_sep[NSigmaTPC]*Pi_Ka_sep[NSigmaTPC]+Pi_Ka_sep[NSigmaTOF]*Pi_Ka_sep[NSigmaTOF]);
+  Pi_Pr_sep[NSigmaTPCTOF]=TMath::Abs(Pi_Pr_sep[NSigmaTPC]*Pi_Pr_sep[NSigmaTPC]+Pi_Pr_sep[NSigmaTOF]*Pi_Pr_sep[NSigmaTOF]);
+  Ka_Pr_sep[NSigmaTPCTOF]=TMath::Abs(Ka_Pr_sep[NSigmaTPC]*Ka_Pr_sep[NSigmaTPC]+Ka_Pr_sep[NSigmaTOF]*Ka_Pr_sep[NSigmaTOF]);
+   }
+
+
+//fill separation power histograms
+ for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
+   if(ipid==0){
+       TH2F *h=GetHistogram2D(Form("Pi_Ka_sep_%d",ipid));
+       h->Fill(track->Pt(),Pi_Ka_sep[ipid]);
+        TH2F *h1=GetHistogram2D(Form("Pi_Pr_sep_%d",ipid));
+       h1->Fill(track->Pt(),Pi_Pr_sep[ipid]);
+        TH2F *h2=GetHistogram2D(Form("Ka_Pr_sep_%d",ipid));
+       h2->Fill(track->Pt(),Ka_Pr_sep[ipid]);
+   }
+   if(HasTOFPID(track) && pt>fPtTOFPIDmin && ipid!=0){
+       TH2F *h=GetHistogram2D(Form("Pi_Ka_sep_%d",ipid));
+       h->Fill(track->Pt(),Pi_Ka_sep[ipid]);
+        TH2F *h1=GetHistogram2D(Form("Pi_Pr_sep_%d",ipid));
+       h1->Fill(track->Pt(),Pi_Pr_sep[ipid]);
+        TH2F *h2=GetHistogram2D(Form("Ka_Pr_sep_%d",ipid));
+       h2->Fill(track->Pt(),Ka_Pr_sep[ipid]);
+   }
+ }
+
+
 //it is assumed that every track that passed the filterbit have proper TPC response(!!)
 Float_t nsigmaTPCkPion =fPID->NumberOfSigmasTPC(track, AliPID::kPion);
 Float_t nsigmaTPCkKaon =fPID->NumberOfSigmasTPC(track, AliPID::kKaon);
@@ -2937,7 +3145,7 @@ else{
     //Fill NSigma SeparationPlot
     for(Int_t ipart=0;ipart<NSpecies;ipart++){
       for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)) && track->Pt()<fPtTOFPIDmin)continue;//not filling TOF and combined if no TOF PID
+       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)))continue;//not filling TOF and combined if no TOF PID
        TH2F *h=GetHistogram2D(Form("NSigma_%d_%d",ipart,ipid));
        h->Fill(track->Pt(),fnsigmas[ipart][ipid]);
       }
@@ -2949,7 +3157,7 @@ else{
 Int_t AliTwoParticlePIDCorr::FindMinNSigma(AliAODTrack *track,Bool_t FillQAHistos) 
 {
   //this function is always called after calling the function CalculateNSigmas(AliAODTrack *track)
-if(fRequestTOFPID && track->Pt()>fPtTOFPIDmin && track->Pt()<=fPtTOFPIDmax && (!HasTOFPID(track)) )return SpUndefined;//so any track having Pt>0.6 && Pt<=4.0 Gev withot having proper TOF response will be defined as SpUndefined
+if(fRequestTOFPID && track->Pt()>fPtTOFPIDmin && (!HasTOFPID(track)) )return SpUndefined;//so any track having Pt>0.6 withot having proper TOF response will be defined as SpUndefined
 //get the identity of the particle with the minimum Nsigma
   Float_t nsigmaPion=999., nsigmaKaon=999., nsigmaProton=999.;
   switch (fPIDType){
@@ -2968,17 +3176,29 @@ if(fRequestTOFPID && track->Pt()>fPtTOFPIDmin && track->Pt()<=fPtTOFPIDmax && (!
     nsigmaKaon   =  TMath::Abs(fnsigmas[SpKaon][NSigmaTPCTOF])  ;
     nsigmaPion    =  TMath::Abs(fnsigmas[SpPion][NSigmaTPCTOF])  ;
     break;
+  case Bayes://the nsigma in the bayesian is used to clean with a very large n-sigma value
+    nsigmaProton  =  TMath::Abs(fnsigmas[SpProton][NSigmaTPCTOF]);
+    nsigmaKaon   =  TMath::Abs(fnsigmas[SpKaon][NSigmaTPCTOF])  ;
+    nsigmaPion    =  TMath::Abs(fnsigmas[SpPion][NSigmaTPCTOF])  ;
+    break;
+  }
+
+
+if(fdiffPIDcutvalues){
+  if(track->Pt()<=4) fNSigmaPID=fPIDCutval1;
+  if(track->Pt()>4 && track->Pt()<=6) fNSigmaPID=fPIDCutval2;
+  if(track->Pt()>6 && track->Pt()<=8) fNSigmaPID=fPIDCutval3;
+  if(track->Pt()>8) fNSigmaPID=fPIDCutval4;
   }
 
-  if(track->Pt()<=fPtTOFPIDmax)  {       //the range upto which combined TPC-TOF cut can be used(here 4.0 Gev/C)
  // guess the particle based on the smaller nsigma (within fNSigmaPID)
   if( ( nsigmaKaon==nsigmaPion ) && ( nsigmaKaon==nsigmaProton )) return SpUndefined;//it is the default value for the three
 
   if( ( nsigmaKaon   < nsigmaPion ) && ( nsigmaKaon < nsigmaProton ) && (nsigmaKaon < fNSigmaPID)){
-  if((fHighPtKaonNSigmaPID>0) && (track->Pt()>fHighPtKaonSigma) && (nsigmaKaon > fHighPtKaonNSigmaPID)) return SpUndefined;
+    if((fHighPtKaonNSigmaPID>0) && (track->Pt()>fHighPtKaonSigma) && (nsigmaKaon > fHighPtKaonNSigmaPID)) return SpUndefined;//different nsigma cut for kaons above a particular Pt range(within the TPC-TOF PID range)
 if(FillQAHistos){
       for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)) && (track->Pt()<fPtTOFPIDmin))continue;//not filling TOF and combined if no TOF PID
+       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)))continue;//not filling TOF and combined if no TOF PID
        TH2F *h=GetHistogram2D(Form("NSigmaRec_%d_%d",SpKaon,ipid));
        h->Fill(track->Pt(),fnsigmas[SpKaon][ipid]);
       }
@@ -2988,7 +3208,7 @@ if(FillQAHistos){
   if( ( nsigmaPion   < nsigmaKaon ) && ( nsigmaPion < nsigmaProton ) && (nsigmaPion < fNSigmaPID)) {
  if(FillQAHistos){
       for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)) && (track->Pt()<fPtTOFPIDmin))continue;//not filling TOF and combined if no TOF PID
+       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)))continue;//not filling TOF and combined if no TOF PID
        TH2F *h=GetHistogram2D(Form("NSigmaRec_%d_%d",SpPion,ipid));
        h->Fill(track->Pt(),fnsigmas[SpPion][ipid]);
       }
@@ -2998,7 +3218,7 @@ return SpPion;
   if( ( nsigmaProton < nsigmaKaon ) && ( nsigmaProton < nsigmaPion ) && (nsigmaProton < fNSigmaPID)) {
 if(FillQAHistos){
       for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)) && (track->Pt()<fPtTOFPIDmin))continue;//not filling TOF and combined if no TOF PID
+       if((ipid!=NSigmaTPC) && (!HasTOFPID(track)))continue;//not filling TOF and combined if no TOF PID
        TH2F *h=GetHistogram2D(Form("NSigmaRec_%d_%d",SpProton,ipid));
        h->Fill(track->Pt(),fnsigmas[SpProton][ipid]);
       }
@@ -3008,14 +3228,8 @@ return SpProton;
 
 // else, return undefined
   return SpUndefined;
-  }
-  else  {//asymmetric nsigma cut around pion's mean position for tracks having Pt>4.0 Gev
-    if(fminprotonsigmacut<fnsigmas[SpPion][NSigmaTPC] && fnsigmas[SpPion][NSigmaTPC]<fmaxprotonsigmacut) return SpProton;
-    if(fminpionsigmacut<fnsigmas[SpPion][NSigmaTPC] && fnsigmas[SpPion][NSigmaTPC]<fmaxpionsigmacut) return SpPion;
-// else, return undefined(here we don't detect kaons)
-  return SpUndefined;
-  }
-
+  
 }
 
 //------------------------------------------------------------------------------------------
@@ -3048,22 +3262,27 @@ Bool_t* AliTwoParticlePIDCorr::GetDoubleCounting(AliAODTrack * trk,Bool_t FIllQA
     nsigmaKaon   =  TMath::Abs(fnsigmas[SpKaon][NSigmaTPCTOF])  ;
     nsigmaPion    =  TMath::Abs(fnsigmas[SpPion][NSigmaTPCTOF])  ;
     break;
+  case Bayes://the nsigma in the bayesian is used to clean with a very large n-sigma value
+    nsigmaProton  =  TMath::Abs(fnsigmas[SpProton][NSigmaTPCTOF]);
+    nsigmaKaon   =  TMath::Abs(fnsigmas[SpKaon][NSigmaTPCTOF])  ;
+    nsigmaPion    =  TMath::Abs(fnsigmas[SpPion][NSigmaTPCTOF])  ;
+    break;
   }
 
-  //there is chance of overlapping only for particles having pt below 4.0 GEv
-  if(trk->Pt()<=4.0){
+  // Actually the tracks in the overlapping region(in TPC-TOF nSigma plane) will be ignored
+
   if(nsigmaPion<fNSigmaPID && MinNSigma!=SpPion)fHasDoubleCounting[SpPion]=kTRUE;
   if(nsigmaKaon<fNSigmaPID && MinNSigma!=SpKaon)fHasDoubleCounting[SpKaon]=kTRUE;
   if(nsigmaProton<fNSigmaPID && MinNSigma!=SpProton)fHasDoubleCounting[SpProton]=kTRUE;
      
-  }
+  
 
 if(FIllQAHistos){
     //fill NSigma distr for double counting
     for(Int_t ipart=0;ipart<NSpecies;ipart++){
-      if(fHasDoubleCounting[ipart]){
+      if(fHasDoubleCounting[ipart]){//this may be kTRUE only for particles having Pt<=4.0 GeV/C, so this histo contains all the particles having Pt<=4.0 GeV/C in the nsigma overlapping region in TPC/TPC-TOF plane 
        for(Int_t ipid=0;ipid<=NSigmaPIDType;ipid++){
-         if((ipid!=NSigmaTPC) && (!HasTOFPID(trk)) && (trk->Pt()<fPtTOFPIDmin))continue;//not filling TOF and combined if no TOF PID
+         if((ipid!=NSigmaTPC) && (!HasTOFPID(trk)))continue;//not filling TOF and combined if no TOF PID
          TH2F *h=GetHistogram2D(Form("NSigmaDC_%d_%d",ipart,ipid));
          h->Fill(trk->Pt(),fnsigmas[ipart][ipid]);
        }
@@ -3075,6 +3294,135 @@ if(FIllQAHistos){
   return fHasDoubleCounting;
 }
 
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+Bool_t* AliTwoParticlePIDCorr::GetAllCompatibleIdentitiesNSigma(AliAODTrack * trk,Bool_t FIllQAHistos){ 
+ //mainly intended to check the probability of the PID of the tracks which are in the overlapping nSigma regions and near about the middle position from the   mean position of two ID particle
+  Bool_t *IDs=GetDoubleCounting(trk,FIllQAHistos);
+  IDs[FindMinNSigma(trk,FIllQAHistos)]=kTRUE;
+  return IDs;
+  
+}
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+UInt_t AliTwoParticlePIDCorr::CalcPIDCombined(AliAODTrack *track, Int_t detMask, Double_t* prob) const{
+  //
+  // Bayesian PID calculation
+  //
+  for(Int_t i=0;i<AliPID::kSPECIES;i++)
+    {
+      prob[i]=0.;
+    }
+  fPIDCombined->SetDetectorMask(detMask);
+  
+  return fPIDCombined->ComputeProbabilities((AliAODTrack*)track, fPID, prob);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+Int_t AliTwoParticlePIDCorr::GetIDBayes(AliAODTrack * trk, Bool_t FIllQAHistos){ 
+  
+  Bool_t *IDs=GetAllCompatibleIdentitiesNSigma(trk,FIllQAHistos);
+
+
+  //Filling of Probability histos
+       Double_t probTPC[AliPID::kSPECIES]={0.};
+       Double_t probTOF[AliPID::kSPECIES]={0.};
+       Double_t probTPCTOF[AliPID::kSPECIES]={0.};
+
+       UInt_t detUsedTPC = 0;
+       UInt_t detUsedTOF = 0;
+       UInt_t detUsedTPCTOF = 0;
+
+ //get the TPC probability
+          fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC);
+         detUsedTPC = fPIDCombined->ComputeProbabilities(trk, fPID, probTPC);
+if(detUsedTPC == AliPIDResponse::kDetTPC)
+  {
+for(Int_t ipart=0;ipart<NSpecies;ipart++){
+
+       TH2F *h=GetHistogram2D(Form("probBayes_TPC_%d",ipart));
+       if(ipart==0)    h->Fill(trk->Pt(),probTPC[AliPID::kPion]);
+       if(ipart==1)    h->Fill(trk->Pt(),probTPC[AliPID::kKaon]);
+       if(ipart==2)    h->Fill(trk->Pt(),probTPC[AliPID::kProton]);
+ }
+  }
+
+  //get the TOF probability
+         fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF);
+         detUsedTOF = fPIDCombined->ComputeProbabilities(trk, fPID, probTOF);
+if(detUsedTOF == AliPIDResponse::kDetTOF)
+  {
+for(Int_t ipart=0;ipart<NSpecies;ipart++){
+       TH2F *h=GetHistogram2D(Form("probBayes_TOF_%d",ipart));
+       if(ipart==0)    h->Fill(trk->Pt(),probTOF[AliPID::kPion]);
+       if(ipart==1)    h->Fill(trk->Pt(),probTOF[AliPID::kKaon]);
+       if(ipart==2)    h->Fill(trk->Pt(),probTOF[AliPID::kProton]);
+ }
+  }
+
+ //get the TPC-TOF probability
+         fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC);
+         detUsedTPCTOF = fPIDCombined->ComputeProbabilities(trk, fPID, probTPCTOF);
+if(detUsedTPCTOF == (AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC))
+  {
+for(Int_t ipart=0;ipart<NSpecies;ipart++){
+       TH2F *h=GetHistogram2D(Form("probBayes_TPCTOF_%d",ipart));
+       if(ipart==0)    h->Fill(trk->Pt(),probTPCTOF[AliPID::kPion]);
+       if(ipart==1)    h->Fill(trk->Pt(),probTPCTOF[AliPID::kKaon]);
+       if(ipart==2)    h->Fill(trk->Pt(),probTPCTOF[AliPID::kProton]); 
+}
+  }
+
+  
+  Double_t probBayes[AliPID::kSPECIES];
+  
+  UInt_t detUsed= 0;
+  if(HasTOFPID(trk) && trk->Pt()>fPtTOFPIDmin){//use TOF information
+    detUsed = CalcPIDCombined(trk, AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC, probBayes);
+    if(detUsed != (AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC))return SpUndefined;//check that TPC and TOF are used
+  }else{
+    detUsed = CalcPIDCombined(trk,AliPIDResponse::kDetTPC, probBayes);
+    if(detUsed != AliPIDResponse::kDetTPC)return SpUndefined;//check that TPC is used
+  }
+  
+  //the probability has to be normalized to one, we check it
+  Double_t sump=0.;
+  for(Int_t ipart=0;ipart<AliPID::kSPECIES;ipart++)sump+=probBayes[ipart];
+  if(sump<.99 && sump>1.01){//FIXME precision problem in the sum, workaround
+    AliFatal("Bayesian probability not normalized to one");
+  }
+
+  if(fdiffPIDcutvalues){
+  if(trk->Pt()<=4) fBayesCut=fPIDCutval1;
+  if(trk->Pt()>4 && trk->Pt()<=6) fBayesCut=fPIDCutval2;
+  if(trk->Pt()>6 && trk->Pt()<=8) fBayesCut=fPIDCutval3;
+  if(trk->Pt()>8) fBayesCut=fPIDCutval4;
+  }
+
+  
+  //probabilities are normalized to one, if the cut is above .5 there is no problem
+  if(probBayes[AliPID::kPion]>fBayesCut && IDs[SpPion]==1){
+    TH2F *h=GetHistogram2D(Form("BayesRec_%d",SpPion));
+    h->Fill(trk->Pt(),probBayes[AliPID::kPion]);
+    return SpPion;
+  }
+  else if(probBayes[AliPID::kKaon]>fBayesCut && IDs[SpKaon]==1){
+    TH2F *h=GetHistogram2D(Form("BayesRec_%d",SpKaon));
+    h->Fill(trk->Pt(),probBayes[AliPID::kKaon]);
+    return SpKaon;
+  }
+  else if(probBayes[AliPID::kProton]>fBayesCut && IDs[SpProton]==1){
+    TH2F *h=GetHistogram2D(Form("BayesRec_%d",SpProton));
+    h->Fill(trk->Pt(),probBayes[AliPID::kProton]);
+    return SpProton;
+  }
+  else{
+    return SpUndefined;
+  }
+}
+
+
 //////////////////////////////////////////////////////////////////////////////////////////////////
 Int_t AliTwoParticlePIDCorr::GetParticle(AliAODTrack * trk, Bool_t FIllQAHistos){ 
   //return the specie according to the minimum nsigma value
@@ -3083,9 +3431,20 @@ Int_t AliTwoParticlePIDCorr::GetParticle(AliAODTrack * trk, Bool_t FIllQAHistos)
   Int_t ID=SpUndefined;
 
   CalculateNSigmas(trk,FIllQAHistos);//fill the data member fnsigmas with the nsigmas value [ipart][iPID]
-  
-   ID=FindMinNSigma(trk,FIllQAHistos);
 
+
+ //Do PID
+  if(fPIDType==Bayes){//use bayesianPID
+    
+    if(!fPIDCombined) {
+      AliFatal("PIDCombined object has to be set in the steering macro");
+    }
+    
+    ID = GetIDBayes(trk,FIllQAHistos);
+    
+  }else{ //use nsigma PID  
+
+   ID=FindMinNSigma(trk,FIllQAHistos);
 if(fUseExclusiveNSigma){ //if one particle has double counting and exclusive nsigma is requested ID = kSpUndefined
       Bool_t *HasDC;
       HasDC=GetDoubleCounting(trk,FIllQAHistos);
@@ -3093,7 +3452,7 @@ if(fUseExclusiveNSigma){ //if one particle has double counting and exclusive nsi
        if(HasDC[ipart]==kTRUE)  ID = SpUndefined;
       }
     }
-
+  }
 //Fill PID signal plot
   if(ID != SpUndefined){
     for(Int_t idet=0;idet<fNDetectors;idet++){
@@ -3349,6 +3708,506 @@ Bool_t AliTwoParticlePIDCorr::CheckTrack(AliAODTrack * part)
   return kFALSE;
 }
 //________________________________________________________________________
+
+Bool_t AliTwoParticlePIDCorr::AcceptEventCentralityWeight(Double_t centrality)
+{
+  // rejects "randomly" events such that the centrality gets flat
+  // uses fCentralityWeights histogram
+
+  // TODO code taken and adapted from AliRDHFCuts; waiting for general class AliCentralityFlattening
+  
+  Double_t weight = fCentralityWeights->GetBinContent(fCentralityWeights->FindBin(centrality));
+  Double_t centralityDigits = centrality*100. - (Int_t)(centrality*100.);
+  
+  Bool_t result = kFALSE;
+  if (centralityDigits < weight) 
+    result = kTRUE;
+  
+  AliInfo(Form("Centrality: %f; Digits: %f; Weight: %f; Result: %d", centrality, centralityDigits, weight, result));
+  
+  return result;
+}
+
+//____________________________________________________________________
+void AliTwoParticlePIDCorr::ShiftTracks(TObjArray* tracks, Double_t angle)
+{
+  // shifts the phi angle of all tracks by angle
+  // 0 <= angle <= 2pi
+  
+  for (Int_t i=0; i<tracks->GetEntriesFast(); ++i) 
+  {
+   LRCParticlePID *part=(LRCParticlePID*)(tracks->UncheckedAt(i));
+
+    Double_t newAngle = part->Phi() + angle; 
+    if (newAngle >= TMath::TwoPi())
+      newAngle -= TMath::TwoPi();
+    
+    part->SetPhi(newAngle);
+  }
+}
+
+
+//________________________________________________________________________
+void  AliTwoParticlePIDCorr::SetVZEROCalibrationFile(const char* filename,const char* lhcPeriod) {
+  //Function to setup the VZERO gain equalization
+    //============Get the equilization map============//
+  TFile *calibrationFile = TFile::Open(filename);
+  if((!calibrationFile)||(!calibrationFile->IsOpen())) {
+    Printf("No calibration file found!!!");
+    return;
+  }
+
+  TList *list = dynamic_cast<TList *>(calibrationFile->Get(lhcPeriod));
+  if(!list) {
+    Printf("Calibration TList not found!!!");
+    return;
+  }
+
+  fHistVZEROAGainEqualizationMap = dynamic_cast<TH1F *>(list->FindObject("gHistVZEROAGainEqualizationMap"));
+  if(!fHistVZEROAGainEqualizationMap) {
+    Printf("VZERO-A calibration object not found!!!");
+    return;
+  }
+  fHistVZEROCGainEqualizationMap = dynamic_cast<TH1F *>(list->FindObject("gHistVZEROCGainEqualizationMap"));
+  if(!fHistVZEROCGainEqualizationMap) {
+    Printf("VZERO-C calibration object not found!!!");
+    return;
+  }
+
+  fHistVZEROChannelGainEqualizationMap = dynamic_cast<TH2F *>(list->FindObject("gHistVZEROChannelGainEqualizationMap"));
+  if(!fHistVZEROChannelGainEqualizationMap) {
+    Printf("VZERO channel calibration object not found!!!");
+    return;
+  }
+}
+
+//________________________________________________________________________
+Double_t AliTwoParticlePIDCorr::GetChannelEqualizationFactor(Int_t run,Int_t channel) {
+  //
+  if(!fHistVZEROAGainEqualizationMap) return 1.0;
+
+  for(Int_t iBinX = 1; iBinX <= fHistVZEROChannelGainEqualizationMap->GetNbinsX(); iBinX++) {
+    Int_t gRunNumber = atoi(fHistVZEROChannelGainEqualizationMap->GetXaxis()->GetBinLabel(iBinX));
+    if(gRunNumber == run)
+      return fHistVZEROChannelGainEqualizationMap->GetBinContent(iBinX,channel+1);
+  }
+
+  return 1.0;
+}
+
+//________________________________________________________________________
+Double_t AliTwoParticlePIDCorr::GetEqualizationFactor(Int_t run, const char* side) {
+  //
+  if(!fHistVZEROAGainEqualizationMap) return 1.0;
+
+  TString gVZEROSide = side;
+  for(Int_t iBinX = 1; iBinX < fHistVZEROAGainEqualizationMap->GetNbinsX(); iBinX++) {
+    Int_t gRunNumber = atoi(fHistVZEROAGainEqualizationMap->GetXaxis()->GetBinLabel(iBinX));
+    //cout<<"Looking for run "<<run<<" - current run: "<<gRunNumber<<endl;
+    if(gRunNumber == run) {
+      if(gVZEROSide == "A") 
+       return fHistVZEROAGainEqualizationMap->GetBinContent(iBinX);
+      else if(gVZEROSide == "C") 
+       return fHistVZEROCGainEqualizationMap->GetBinContent(iBinX);
+    }
+  }
+
+  return 1.0;
+}
+//________________________________________________________________________
+Double_t AliTwoParticlePIDCorr::GetReferenceMultiplicityVZEROFromAOD(AliAODEvent *event){
+  //Function that returns the reference multiplicity from AODs (data or reco MC)
+  //Different ref. mult. implemented: V0M, V0A, V0C, TPC
+  Double_t gRefMultiplicity = 0., gRefMultiplicityTPC = 0.;
+  Double_t gRefMultiplicityVZERO = 0., gRefMultiplicityVZEROA = 0., gRefMultiplicityVZEROC = 0.;
+
+  AliAODHeader *header = dynamic_cast<AliAODHeader *>(event->GetHeader());
+  if(!header) {
+    Printf("ERROR: AOD header not available");
+    return -999;
+  }
+  Int_t gRunNumber = header->GetRunNumber();
+ Float_t bSign1=header->GetMagneticField() ;//for dca cut in ClassifyTrack(), i.e in track loop
+
+
+ for (Int_t itrk = 0; itrk < event->GetNumberOfTracks(); itrk++) 
+{ //track loop starts for TObjArray(containing track and event information) filling; used for correlation function calculation 
+  AliAODTrack* track = dynamic_cast<AliAODTrack*>(event->GetTrack(itrk));
+  if (!track) continue;
+  Int_t tracktype=ClassifyTrack(track,trkVtx,bSign1,kFALSE);//don't fill the histos here
+  if(tracktype!=1) continue; 
+
+  if(!track) continue;//for safety
+
+    gRefMultiplicityTPC += 1.0;
+
+ }//track looop ends
+
+  //VZERO segmentation in two detectors (0-31: VZERO-C, 32-63: VZERO-A)
+  for(Int_t iChannel = 0; iChannel < 64; iChannel++) {
+    fHistVZEROSignal->Fill(iChannel,event->GetVZEROEqMultiplicity(iChannel));
+    
+    if(iChannel < 32) 
+      gRefMultiplicityVZEROC += event->GetVZEROEqMultiplicity(iChannel);
+    else if(iChannel >= 32) 
+      gRefMultiplicityVZEROA += event->GetVZEROEqMultiplicity(iChannel);
+  }//loop over PMTs
+  
+  //Equalization of gain
+  Double_t gFactorA = GetEqualizationFactor(gRunNumber,"A");
+  if(gFactorA != 0)
+    gRefMultiplicityVZEROA /= gFactorA;
+  Double_t gFactorC = GetEqualizationFactor(gRunNumber,"C");
+  if(gFactorC != 0)
+    gRefMultiplicityVZEROC /= gFactorC;
+  if((gFactorA != 0)&&(gFactorC != 0)) 
+    gRefMultiplicityVZERO = (gRefMultiplicityVZEROA/gFactorA)+(gRefMultiplicityVZEROC/gFactorC);
+
+      
+  //EQVZERO vs TPC multiplicity
+  fHistEQVZEROvsTPCmultiplicity->Fill(gRefMultiplicityVZERO,gRefMultiplicityTPC);
+  fHistEQVZEROAvsTPCmultiplicity->Fill(gRefMultiplicityVZEROA,gRefMultiplicityTPC);
+  fHistEQVZEROCvsTPCmultiplicity->Fill(gRefMultiplicityVZEROC,gRefMultiplicityTPC);
+
+  //EQVZERO vs VZERO multiplicity
+  fHistVZEROCvsEQVZEROCmultiplicity->Fill(event->GetVZEROData()->GetMTotV0C(),gRefMultiplicityVZEROC);
+  fHistVZEROAvsEQVZEROAmultiplicity->Fill(event->GetVZEROData()->GetMTotV0A(),gRefMultiplicityVZEROA);
+
+  //VZEROC vs VZEROA multiplicity
+  fHistVZEROCvsVZEROAmultiplicity->Fill(event->GetVZEROData()->GetMTotV0C(),event->GetVZEROData()->GetMTotV0A());
+
+  //EQVZEROC vs EQVZEROA multiplicity
+  fHistEQVZEROCvsEQVZEROAmultiplicity->Fill(gRefMultiplicityVZEROC,gRefMultiplicityVZEROA);
+
+
+  if(fCentralityMethod == "TRACKS_MANUAL") 
+    gRefMultiplicity = gRefMultiplicityTPC;
+  else if(fCentralityMethod == "V0M_MANUAL")
+    gRefMultiplicity = gRefMultiplicityVZERO;
+  else if(fCentralityMethod == "V0A_MANUAL")
+    gRefMultiplicity = gRefMultiplicityVZEROA;
+  else if(fCentralityMethod == "V0C_MANUAL")
+    gRefMultiplicity = gRefMultiplicityVZEROC;
+
+      //ref mult QA
+      fHistRefmult->Fill(0.,gRefMultiplicityVZEROA);
+      fHistRefmult->Fill(1.,gRefMultiplicityVZEROC);
+      fHistRefmult->Fill(2.,gRefMultiplicityVZERO);
+      fHistRefmult->Fill(3.,gRefMultiplicityTPC);
+
+  
+  return gRefMultiplicity;
+}
+
+//-------------------------------------------------------------------------------------------------------
+Double_t AliTwoParticlePIDCorr::GetRefMultiOrCentrality(AliAODEvent *event, Bool_t truth){
+
+  if(!event) return -1;
+  // get centrality object and check quality
+  Double_t cent_v0=-1;
+  Double_t nooftrackstruth=0;
+
+if(fCentralityMethod=="V0M" || fCentralityMethod=="V0A" || fCentralityMethod=="V0C" || fCentralityMethod=="CL1" || fCentralityMethod=="ZNA" || fCentralityMethod=="V0AEq" || fCentralityMethod=="V0CEq" || fCentralityMethod=="V0MEq")//for PbPb, pPb, pp7TeV(still to be introduced)//data or RecoMC and also for TRUTH
+    {
+  AliCentrality *centralityObj=0;
+  AliAODHeader *header = (AliAODHeader*) event->GetHeader();
+  if(!header) return -1;
+  centralityObj = header->GetCentralityP();
+  // if (centrality->GetQuality() != 0) return ;
+
+  if(centralityObj)
+  {
+  fHistCentStats->Fill(0.,centralityObj->GetCentralityPercentile("V0A"));
+  fHistCentStats->Fill(1.,centralityObj->GetCentralityPercentile("V0C"));
+  fHistCentStats->Fill(2.,centralityObj->GetCentralityPercentile("V0M"));
+if(fSampleType=="pp")   fHistCentStats->Fill(3.,centralityObj->GetCentralityPercentile("V0AEq"));//only available for LHC10d at present (Quantile info)
+if(fSampleType=="pp")   fHistCentStats->Fill(4.,centralityObj->GetCentralityPercentile("V0CEq"));//only available for LHC10d at present (Quantile info)
+if(fSampleType=="pp")   fHistCentStats->Fill(5.,centralityObj->GetCentralityPercentile("V0MEq"));//only available for LHC10d at present (Quantile info)
+
+if(fSampleType=="pPb" || fSampleType=="PbPb")      fHistCentStats->Fill(6.,centralityObj->GetCentralityPercentile("CL1"));
+if(fSampleType=="pPb" || fSampleType=="PbPb")      fHistCentStats->Fill(7.,centralityObj->GetCentralityPercentile("ZNA")); 
+
+      cent_v0 = centralityObj->GetCentralityPercentile(fCentralityMethod);
+  }
+  else cent_v0= -1;    
+    }//centralitymethod condition
+
+ else if(fCentralityMethod=="V0M_MANUAL" || fCentralityMethod=="V0A_MANUAL" || fCentralityMethod=="V0C_MANUAL" || fCentralityMethod=="TRACKS_MANUAL")//data or RecoMc and also for TRUTH
+   {
+     if(!truth){//for data or RecoMC
+    cent_v0 = GetReferenceMultiplicityVZEROFromAOD(event);
+   }//for data or RecoMC
+
+    if(truth){//condition for TRUTH case
+//check for TClonesArray(truth track MC information)
+fArrayMC = dynamic_cast<TClonesArray*>(event->FindListObject(AliAODMCParticle::StdBranchName()));
+  if (!fArrayMC) {
+    //AliFatal("Error: MC particles branch not found!\n");
+    return -1;
+  }
+//now process the truth particles(for both efficiency & correlation function)
+Int_t nMCTrack = fArrayMC->GetEntriesFast();
+  
+for (Int_t iMC = 0; iMC < nMCTrack; iMC++) 
+{//MC truth track loop starts
+    
+AliAODMCParticle *partMC = (AliAODMCParticle*) fArrayMC->At(iMC);
+    
+    if(!partMC){
+      AliError(Form("ERROR: Could not retrieve AODMCtrack %d",iMC));
+      continue;
+    }
+
+//consider only charged particles
+    if(partMC->Charge() == 0) continue;
+
+//consider only primary particles; neglect all secondary particles including from weak decays
+ if(fselectprimaryTruth && !partMC->IsPhysicalPrimary()) continue;
+
+
+//remove injected signals(primaries above <maxLabel>)
+ if (fInjectedSignals && partMC->GetLabel() >= skipParticlesAbove) continue;
+
+//remove duplicates
+  Bool_t isduplicate=kFALSE;
+ if (fRemoveDuplicates)
+   { 
+ for (Int_t j=iMC+1; j<nMCTrack; ++j) 
+   {//2nd trutuh loop starts
+AliAODMCParticle *partMC2 = (AliAODMCParticle*) fArrayMC->At(j);
+   if(!partMC2){
+      AliError(Form("ERROR: Could not retrieve AODMCtrack %d",j));
+      continue;
+    }    
+ if (partMC->GetLabel() == partMC2->GetLabel())
+   {
+isduplicate=kTRUE;
+ break;  
+   }    
+   }//2nd truth loop ends
+   }
+ if(fRemoveDuplicates && isduplicate) continue;//remove duplicates
+
+
+      if (fCentralityMethod=="V0M_MANUAL") {
+       if(partMC->Eta() > 5.1 || partMC->Eta() < 2.8)    continue;
+       if (partMC->Eta() < -3.7 || partMC->Eta() > -1.7) continue;
+}
+      else if (fCentralityMethod=="V0A_MANUAL") {
+       if(partMC->Eta() > 5.1 || partMC->Eta() < 2.8)  continue;}
+      else if (fCentralityMethod=="V0C_MANUAL") {
+       if(partMC->Eta() > -1.7 || partMC->Eta() < -3.7)  continue;}
+      else if (fCentralityMethod=="TRACKS_MANUAL") {
+        if (partMC->Eta() < fmineta || partMC->Eta() > fmaxeta) continue;
+        if (partMC->Pt() < fminPt ||  partMC->Pt() > fmaxPt) continue;
+           }
+      else{//basically returns the tracks manual case
+//give only kinematic cuts at the truth level  
+       if (partMC->Eta() < fmineta || partMC->Eta() > fmaxeta) continue;
+       if (partMC->Pt() < fminPt ||  partMC->Pt() > fmaxPt) continue;
+      }
+
+ //To determine multiplicity in case of PP
+ nooftrackstruth+= 1;;
+
+ }//truth track loop ends
+ cent_v0=nooftrackstruth;
+
+    }//condition for TRUTH case
+
+   }//end of MANUAL method
+
+ else if ((fAnalysisType == "MCAOD") && (fCentralityMethod == "MC_b"))//TRUTH MC
+    {
+    AliAODMCHeader* header = (AliAODMCHeader*) event->GetList()->FindObject(AliAODMCHeader::StdBranchName());
+    if (!header)
+    return -1;
+    
+      AliGenEventHeader* eventHeader = header->GetCocktailHeader(0);  // get first MC header from either ESD/AOD (including cocktail header if available)
+      if (!eventHeader)
+      {
+       // We avoid AliFatal here, because the AOD productions sometimes have events where the MC header is missing 
+       // (due to unreadable Kinematics) and we don't want to loose the whole job because of a few events
+       AliError("Event header not found. Skipping this event.");
+       return -1;
+      }
+      
+      AliCollisionGeometry* collGeometry = dynamic_cast<AliCollisionGeometry*> (eventHeader);
+     
+      
+     if (collGeometry)   cent_v0 = collGeometry->ImpactParameter();
+      else cent_v0=-1.;
+    }//end of Impact parameter method
+
+//else return -1
+ else cent_v0=-1.;
+
+ return cent_v0;
+}
+//-----------------------------------------------------------------------------------------
+Double_t AliTwoParticlePIDCorr::GetAcceptedEventMultiplicity(AliAODEvent *aod,Bool_t truth){
+
+  if(!aod) return -1;
+
+  Float_t gRefMultiplicity = -1.;
+
+  // check first event in chunk (is not needed for new reconstructions)
+  if(fCheckFirstEventInChunk){
+    AliAnalysisUtils ut;
+    if(ut.IsFirstEventInChunk(aod)) 
+      return -1.;
+  }
+
+ if(frejectPileUp){
+    AliAnalysisUtils ut;
+    ut.SetUseMVPlpSelection(kTRUE);
+    ut.SetUseOutOfBunchPileUp(kTRUE);
+    if(ut.IsPileUpEvent(aod))
+      return -1.;
+  }
+
+//count events after pileup selection
+   fEventCounter->Fill(3);
+
+  //vertex selection(is it fine for PP?)
+ if ( fVertextype==1){//for pPb basically if(!fAnalysisUtils->IsVertexSelected2013pA(aod)) return; 
+  trkVtx = aod->GetPrimaryVertex();
+  if (!trkVtx || trkVtx->GetNContributors()<=0) return -1;
+  TString vtxTtl = trkVtx->GetTitle();
+  if (!vtxTtl.Contains("VertexerTracks")) return -1;
+   zvtx = trkVtx->GetZ();
+  const AliAODVertex* spdVtx = aod->GetPrimaryVertexSPD();
+  if (!spdVtx || spdVtx->GetNContributors()<=0) return -1;
+  TString vtxTyp = spdVtx->GetTitle();
+  Double_t cov[6]={0};
+  spdVtx->GetCovarianceMatrix(cov);
+  Double_t zRes = TMath::Sqrt(cov[5]);
+  if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return -1;
+   if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return -1;
+  }
+  else if(fVertextype==2) {//for pp and pb-pb case , taken from Jan's code
+       Int_t nVertex = aod->GetNumberOfVertices();
+       if( nVertex > 0 ) { 
+     trkVtx = aod->GetPrimaryVertex();
+               Int_t nTracksPrim = trkVtx->GetNContributors();
+                 zvtx = trkVtx->GetZ();
+               //if (fDebug > 1)AliInfo(Form(" Vertex in = %f with %d particles by  %s data ...",zVertex,nTracksPrim,vertex->GetName()));
+               // Reject TPC only vertex
+               TString name(trkVtx->GetName());
+               if (name.CompareTo("PrimaryVertex") && name.CompareTo("SPDVertex"))return -1;
+
+               // Select a quality vertex by number of tracks?
+               if( nTracksPrim < fnTracksVertex ) {
+                 //if (fDebug > 1) AliInfo(" Primary-vertex Selection: event REJECTED ...");
+                       return -1;
+                       }
+               // TODO remove vertexer Z events with dispersion > 0.02: Doesn't work for AOD at present
+                //if (strcmp(vertex->GetTitle(), "AliVertexerZ") == 0 && vertex->GetDispersion() > 0.02)
+                //  return kFALSE;
+               //      if (fDebug > 1) AliInfo(" Primary-vertex Selection: event ACCEPTED...");
+       }
+       else return -1;
+
+  }
+ else if(fVertextype==0){//default case
+  trkVtx = aod->GetPrimaryVertex();
+  if (!trkVtx || trkVtx->GetNContributors()<=0) return -1;//proper number of contributors
+  zvtx = trkVtx->GetZ();
+  Double32_t fCov[6];
+  trkVtx->GetCovarianceMatrix(fCov);
+  if(fCov[5] == 0) return -1;//proper vertex resolution
+  }
+  else {
+   AliInfo("Wrong Vertextype set for Primary-vertex Selection: event REJECTED ...");
+   return -1;//as there is no proper sample type
+  }
+
+fHistQA[0]->Fill((trkVtx->GetX()));fHistQA[1]->Fill((trkVtx->GetY()));fHistQA[2]->Fill((trkVtx->GetZ())); //for trkVtx only before vertex cut |zvtx|<10 cm
+
+//count events having a proper vertex
+   fEventCounter->Fill(5);
+
+ if (TMath::Abs(zvtx) > fzvtxcut) return -1;
+
+//count events after vertex cut
+  fEventCounter->Fill(7);
+
+
+ //if(!fAnalysisUtils->IsVertexSelected2013pA(aod)) return;
+  
+ fHistQA[3]->Fill((trkVtx->GetX()));fHistQA[4]->Fill((trkVtx->GetY()));fHistQA[5]->Fill((trkVtx->GetZ()));//after vertex cut,for trkVtx only
+
+ //get the centrality or multiplicity
+ if(truth)  {gRefMultiplicity = GetRefMultiOrCentrality(aod,kTRUE);}//kTRUE-->for Truth case(only meaningful in case of ref multiplicity)
+
+ else {gRefMultiplicity = GetRefMultiOrCentrality(aod,kFALSE);}//kFALSE-->for data and RecoMc case(only meaningful in case of ref multiplicity)
+
+  if(gRefMultiplicity<0) return -1;
+
+ // take events only within the  multiplicity class mentioned in the custom binning
+  if(gRefMultiplicity < fmincentmult || gRefMultiplicity > fmaxcentmult) return -1;
+
+//count events having proper centrality/ref multiplicity
+  fEventCounter->Fill(9);
+
+
+// centrality weighting (optional for 2011 if central and semicentral triggers are used);only for data and recoMC
+ if (fCentralityWeights && !AcceptEventCentralityWeight(gRefMultiplicity))//**********************
+  {
+    AliInfo(Form("Rejecting event because of centrality weighting: %f", gRefMultiplicity));
+    return -1;
+  }
+
+//count events after rejection due to centrality weighting
+  fEventCounter->Fill(11);
+
+  return gRefMultiplicity;
+
+}
+//--------------------------------------------------------------------------------------------------------
+Double_t AliTwoParticlePIDCorr::GetEventPlane(AliAODEvent *event,Bool_t truth){
+  // Get the event plane
+
+
+  Float_t gVZEROEventPlane    = -10.;
+  Float_t gReactionPlane      = -10.;
+  Double_t qxTot = 0.0, qyTot = 0.0;
+
+  //MC: from reaction plane
+ if(truth)
+{
+    AliAODMCHeader* header = (AliAODMCHeader*) event->GetList()->FindObject(AliAODMCHeader::StdBranchName());
+    if (header){
+    
+      AliGenEventHeader* eventHeader = header->GetCocktailHeader(0);  // get first MC header from either ESD/AOD (including cocktail header if available)
+      if (eventHeader)
+      {
+             
+       AliCollisionGeometry* collGeometry = dynamic_cast<AliCollisionGeometry*> (eventHeader);     
+      
+     if (collGeometry)   gReactionPlane = collGeometry->ReactionPlaneAngle();
+    }
+    }
+    }
+ else{
+   
+    AliEventplane *ep = event->GetEventplane();
+    if(ep){ 
+      gVZEROEventPlane = ep->CalculateVZEROEventPlane(event,10,2,qxTot,qyTot);
+      if(gVZEROEventPlane < 0.) gVZEROEventPlane += TMath::Pi();
+      //gReactionPlane = gVZEROEventPlane*TMath::RadToDeg();
+      gReactionPlane = gVZEROEventPlane;
+    }
+  }//AOD,ESD,ESDMC
+  return gReactionPlane; 
+}
+
+
+
+
+
+
+//____________________________________________________________________
 void AliTwoParticlePIDCorr::Terminate(Option_t *) 
 {
   // Draw result to screen, or perform fitting, normalizations
@@ -3359,4 +4218,149 @@ void AliTwoParticlePIDCorr::Terminate(Option_t *)
   
 }
 //------------------------------------------------------------------ 
+/*
+
+ // get centrality object and check quality
+  Double_t cent_v0=0;
+
+
+if(fCentralityMethod=="V0M" || fCentralityMethod=="V0A" || fCentralityMethod=="V0C")//for PbPb, pPb, pp7TeV(still to be introduced)
+    {
+  AliCentrality *centralityObj=0;
+  if(aod) 
+  AliAODHeader *header = (AliAODHeader*) aod->GetHeader();
+  if(header){
+  centralityObj = header->GetCentralityP();
+  // if (centrality->GetQuality() != 0) return ;
+
+  if(centralityObj)
+  {
+if(fSampleType=="pPb" || fSampleType=="PbPb" || fSampleType=="pp")   fHistCentStats->Fill(0.,centralityObj->GetCentralityPercentile("V0M"));//only available for LHC10d at present (Quantile info)
+if(fSampleType=="pPb" || fSampleType=="PbPb")      fHistCentStats->Fill(2.,centralityObj->GetCentralityPercentile("V0A"));
+if(fSampleType=="pPb" || fSampleType=="PbPb")      fHistCentStats->Fill(4.,centralityObj->GetCentralityPercentile("V0C"));
+if(fSampleType=="pPb" || fSampleType=="PbPb")      fHistCentStats->Fill(6.,centralityObj->GetCentralityPercentile("CL1"));
+if(fSampleType=="pPb" || fSampleType=="PbPb")      fHistCentStats->Fill(8.,centralityObj->GetCentralityPercentile("ZNA")); 
+
+      cent_v0 = centralityObj->GetCentralityPercentile(fCentralityMethod);
+  }
+  else
+    {
+  cent_v0= -1;
+     }
+  }//AOD header
+    }//centralitymethod condition
+
+else if(fCentralityMethod=="V0M_MANUAL" || fCentralityMethod=="V0A_MANUAL" || fCentralityMethod=="V0C_MANUAL" || fCentralityMethod=="TRACKS_MANUAL")
+   {
+    cent_v0 = GetReferenceMultiplicityVZEROFromAOD(aod);
+    fHistrefMultiplicity->Fill(cent_v0);
+   }
+ else  cent_v0= -1;
+
+
+if(fSampleType=="pPb" || fSampleType=="PbPb") if (cent_v0 < 0)  return;//for pp case it is the multiplicity
+
+
  
+
+ Float_t bSign = (aod->GetMagneticField() > 0) ? 1 : -1;//for two track efficiency cut in correlation function calculation
+ Float_t bSign1=aod->GetHeader()->GetMagneticField() ;//for dca cut in ClassifyTrack(), i.e in track loop
+
+// Pileup selection ************************************************
+ if(frejectPileUp)  //applicable only for TPC only tracks,not for hybrid tracks?.
+      {
+ if (fAnalysisUtils && fAnalysisUtils->IsPileUpEvent(aod)) return;
+//count events after PileUP cut
+   fEventCounter->Fill(3);
+  }
+
+
+ //vertex selection(is it fine for PP?)
+ if ( fVertextype==1){//for pPb basically if(!fAnalysisUtils->IsVertexSelected2013pA(aod)) return; 
+  trkVtx = aod->GetPrimaryVertex();
+  if (!trkVtx || trkVtx->GetNContributors()<=0) return;
+  TString vtxTtl = trkVtx->GetTitle();
+  if (!vtxTtl.Contains("VertexerTracks")) return;
+   zvtx = trkVtx->GetZ();
+  const AliAODVertex* spdVtx = aod->GetPrimaryVertexSPD();
+  if (!spdVtx || spdVtx->GetNContributors()<=0) return;
+  TString vtxTyp = spdVtx->GetTitle();
+  Double_t cov[6]={0};
+  spdVtx->GetCovarianceMatrix(cov);
+  Double_t zRes = TMath::Sqrt(cov[5]);
+  if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return;
+   if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return;
+  }
+  else if(fVertextype==2) {//for pp and pb-pb case , taken from Jan's code
+       Int_t nVertex = aod->GetNumberOfVertices();
+       if( nVertex > 0 ) { 
+     trkVtx = aod->GetPrimaryVertex();
+               Int_t nTracksPrim = trkVtx->GetNContributors();
+                 zvtx = trkVtx->GetZ();
+               //if (fDebug > 1)AliInfo(Form(" Vertex in = %f with %d particles by  %s data ...",zVertex,nTracksPrim,vertex->GetName()));
+               // Reject TPC only vertex
+               TString name(trkVtx->GetName());
+               if (name.CompareTo("PrimaryVertex") && name.CompareTo("SPDVertex"))return;
+
+               // Select a quality vertex by number of tracks?
+               if( nTracksPrim < fnTracksVertex ) {
+                 //if (fDebug > 1) AliInfo(" Primary-vertex Selection: event REJECTED ...");
+                       return ;
+                       }
+               // TODO remove vertexer Z events with dispersion > 0.02: Doesn't work for AOD at present
+                //if (strcmp(vertex->GetTitle(), "AliVertexerZ") == 0 && vertex->GetDispersion() > 0.02)
+                //  return kFALSE;
+               //      if (fDebug > 1) AliInfo(" Primary-vertex Selection: event ACCEPTED...");
+       }
+       else return;
+
+  }
+ else if(fVertextype==0){//default case
+  trkVtx = aod->GetPrimaryVertex();
+  if (!trkVtx || trkVtx->GetNContributors()<=0) return;//proper number of contributors
+  zvtx = trkVtx->GetZ();
+  Double32_t fCov[6];
+  trkVtx->GetCovarianceMatrix(fCov);
+  if(fCov[5] == 0) return;//proper vertex resolution
+  }
+  else {
+   AliInfo("Wrong Vertextype set for Primary-vertex Selection: event REJECTED ...");
+   return;//as there is no proper sample type
+  }
+
+  fHistQA[0]->Fill((trkVtx->GetX()));fHistQA[1]->Fill((trkVtx->GetY()));fHistQA[2]->Fill((trkVtx->GetZ())); //for trkVtx only before vertex cut |zvtx|<10 cm
+
+//count events having a proper vertex
+   fEventCounter->Fill(5);
+
+ if (TMath::Abs(zvtx) > fzvtxcut) return;
+
+//count events after vertex cut
+  fEventCounter->Fill(7);
+
+
+ //if(!fAnalysisUtils->IsVertexSelected2013pA(aod)) return;
+  
+ fHistQA[3]->Fill((trkVtx->GetX()));fHistQA[4]->Fill((trkVtx->GetY()));fHistQA[5]->Fill((trkVtx->GetZ()));//after vertex cut,for trkVtx only
+
+
+ if(!aod) return; //for safety
+
+ Double_t frefMult=0;
+
+//reference multiplicity for pp 7 TeV
+ if ((fMultiplicityEstimator == "TRACKS_MANUAL") || (fMultiplicityEstimator == "V0M_MANUAL")|| (fMultiplicityEstimator == "V0A_MANUAL")||(fMultiplicityEstimator == "V0C_MANUAL")) {cent_v0=GetReferenceMultiplicityVZEROFromAOD(aod,bSign1);}
+ else {frefMult=GetReferenceMultiplicityVZEROFromAOD(aod,bSign1);}
+
+  
+// centrality weighting (optional for 2011 if central and semicentral triggers are used)
+ if (fCentralityWeights && !AcceptEventCentralityWeight(cent_v0))
+  {
+    AliInfo(Form("Rejecting event because of centrality weighting: %f", cent_v0));
+    return;
+  }
+
+//count events after rejection due to centrality weighting
+  fEventCounter->Fill(9);
+*/
index 40a0854d7230b936d1c6cfe52087e336540b415f..3836d6074fa5bdd24ce06d7206c80b3bc38c525b 100644 (file)
@@ -13,6 +13,7 @@ class TList;
 //class AliESDtrackCuts;
 class TSeqCollection;
 class AliPIDResponse;
+class AliPIDCombined;  
 class AliAODEvent;
 class AliAODTrack;
 class AliAODVertex;
@@ -53,8 +54,9 @@ namespace AliPIDNameSpace {
     NSigmaTPC = 0,
     NSigmaTOF,
     NSigmaTPCTOF,  // squared sum
-    NSigmaPIDType=NSigmaTPCTOF
+    Bayes    
   };
+  const Int_t NSigmaPIDType=NSigmaTPCTOF;//number of Nsigma PID types
     
   enum AliDetectorType
   {
@@ -111,6 +113,7 @@ class AliTwoParticlePIDCorr : public AliAnalysisTaskSE {
     void SetMaxNofMixingTracks(Int_t MaxNofMixingTracks) {fMaxNofMixingTracks=MaxNofMixingTracks;}               //Check it every time
   void SetCentralityEstimator(TString CentralityMethod) { fCentralityMethod = CentralityMethod;}
   void SetSampleType(TString SampleType) {fSampleType=SampleType;}
+  void SetRequestEventPlane(Bool_t RequestEventPlane){fRequestEventPlane=RequestEventPlane;}
   void SetAnalysisType(TString AnalysisType){fAnalysisType=AnalysisType;}
   void SetFilterBit(Int_t FilterBit) {fFilterBit=FilterBit;}
   void SetTrackStatus(UInt_t status) { fTrackStatus = status; }
@@ -136,6 +139,8 @@ class AliTwoParticlePIDCorr : public AliAnalysisTaskSE {
 
  void SetFIllPIDQAHistos(Bool_t FIllPIDQAHistos){fFIllPIDQAHistos=FIllPIDQAHistos;}
   void SetRejectPileUp(Bool_t rejectPileUp) {frejectPileUp=rejectPileUp;}
+  void SetCheckFirstEventInChunk(Bool_t CheckFirstEventInChunk) {fCheckFirstEventInChunk=CheckFirstEventInChunk;}
+
   void SetKinematicCuts(Float_t minPt, Float_t maxPt,Float_t mineta,Float_t maxeta)
   {
     fminPt=minPt;
@@ -143,13 +148,6 @@ class AliTwoParticlePIDCorr : public AliAnalysisTaskSE {
     fmineta=mineta;
     fmaxeta=maxeta;
   }
-  void SetAsymmetricnSigmaCut( Float_t minprotonsigmacut,Float_t maxprotonsigmacut,Float_t minpionsigmacut,Float_t maxpionsigmacut)
-  {
-    fminprotonsigmacut=minprotonsigmacut;
-    fmaxprotonsigmacut=maxprotonsigmacut;
-    fminpionsigmacut=minpionsigmacut;
-    fmaxpionsigmacut=maxpionsigmacut;
-  }
   void SetDcaCut(Bool_t dcacut,Double_t dcacutvalue)
   {
     fdcacut=dcacut;
@@ -226,6 +224,7 @@ fPtTOFPIDmax=PtTOFPIDmax;
 
     TString    fCentralityMethod;     // Method to determine centrality
     TString    fSampleType;     // pp,p-Pb,Pb-Pb
+    Bool_t fRequestEventPlane; //only for PbPb
     Int_t    fnTracksVertex;        // QA tracks pointing to principal vertex
     AliAODVertex* trkVtx;//!
     Float_t zvtx;
@@ -233,6 +232,7 @@ fPtTOFPIDmax=PtTOFPIDmax;
      UInt_t         fTrackStatus;       // if non-0, the bits set in this variable are required for each track
     Double_t       fSharedClusterCut;  // cut on shared clusters (only for AOD)
     Int_t fVertextype;
+    Int_t skipParticlesAbove;
     Double_t fzvtxcut;
     Bool_t ffilltrigassoUNID;
     Bool_t ffilltrigUNIDassoID;
@@ -245,6 +245,7 @@ fPtTOFPIDmax=PtTOFPIDmax;
     Bool_t fWeightPerEvent;
     Bool_t fTriggerSpeciesSelection;
     Bool_t fAssociatedSpeciesSelection;
+    Bool_t fRandomizeReactionPlane;
     Int_t fTriggerSpecies;
     Int_t fAssociatedSpecies;
     TString fCustomBinning;//for setting customized binning
@@ -254,14 +255,11 @@ fPtTOFPIDmax=PtTOFPIDmax;
     Bool_t fcontainPIDasso;
     Int_t SetChargeAxis;
      Bool_t frejectPileUp;
+     Bool_t fCheckFirstEventInChunk;
     Float_t fminPt;
     Float_t fmaxPt;
     Float_t fmineta;
     Float_t fmaxeta;
-    Float_t fminprotonsigmacut;
-    Float_t fmaxprotonsigmacut;
-    Float_t fminpionsigmacut;
-    Float_t fmaxpionsigmacut;
     Bool_t fselectprimaryTruth;
     Bool_t fonlyprimarydatareco;
     Bool_t fdcacut;
@@ -275,6 +273,8 @@ fPtTOFPIDmax=PtTOFPIDmax;
     Double_t fmaxPtComboeff;
     Double_t fminPtAsso;
     Double_t fmaxPtAsso;
+    Double_t fmincentmult;
+    Double_t fmaxcentmult;
     TH1F *fhistcentrality;//!
     TH1F *fEventCounter; //!
     TH2F *fEtaSpectrasso;//!
@@ -300,7 +300,27 @@ fPtTOFPIDmax=PtTOFPIDmax;
     TH2F *fEventnomeson;//!
     TH2F *fhistJetTrigestimate;//!
 
-    TH2D* fCentralityCorrelation;  //! centrality vs multiplicity
+    TH2D* fCentralityCorrelation;  //! centrality vs Tracks multiplicity
+ //VZERO calibration
+  TH1F *fHistVZEROAGainEqualizationMap;//VZERO calibration map
+  TH1F *fHistVZEROCGainEqualizationMap;//VZERO calibration map
+  TH2F *fHistVZEROChannelGainEqualizationMap; //VZERO calibration map
+  TH1* fCentralityWeights;                  // for centrality flattening
+
+    TH2F *fHistCentStats; //!centrality stats
+    TH2F *fHistRefmult;//!
+    TH2F *fHistEQVZEROvsTPCmultiplicity;//!
+    TH2F *fHistEQVZEROAvsTPCmultiplicity;//!
+    TH2F *fHistEQVZEROCvsTPCmultiplicity;//!
+    TH2F *fHistVZEROCvsEQVZEROCmultiplicity;//!
+    TH2F *fHistVZEROAvsEQVZEROAmultiplicity;//!
+    TH2F *fHistVZEROCvsVZEROAmultiplicity;//!
+    TH2F *fHistEQVZEROCvsEQVZEROAmultiplicity;//!
+    TH2F *fHistVZEROSignal;//!
+    TH2F *fHistEventPlaneReco;//!
+    TH2F *fHistEventPlaneTruth;//!
+    TH2D *fHistPsiMinusPhi;//! psi - phi QA histogram
+
     TH2F* fControlConvResoncances; //! control histograms for cuts on conversions and resonances
 
     TH2F *fHistoTPCdEdx;//!
@@ -333,17 +353,17 @@ fPtTOFPIDmax=PtTOFPIDmax;
     AliTHn* fTrackHistEfficiency[6]; //! container for tracking efficiency and contamination (all particles filled including leading one): axes: eta, pT, particle species:::::::::0 pion, 1 kaon,2 proton,3 mesons,4 kaons+protons,5 all
 
     
-    TH1F *fHistQA[16]; //!
+    TH1F *fHistQA[16]; //!                  gReactionPlane
      
    
     THnSparse *effcorection[6];//!
     // THnF *effmap[6];  
 
-    Int_t ClassifyTrack(AliAODTrack* track,AliAODVertex* vertex,Float_t magfield);
+    Int_t ClassifyTrack(AliAODTrack* track,AliAODVertex* vertex,Float_t magfield,Bool_t fill);
   Double_t* GetBinning(const char* configuration, const char* tag, Int_t& nBins);
 
 
-  void Fillcorrelation(TObjArray *trackstrig,TObjArray *tracksasso,Double_t cent,Float_t vtx,Float_t weight,Bool_t firstTime,Float_t bSign,Bool_t fPtOrder,Bool_t twoTrackEfficiencyCut,Bool_t mixcase,TString fillup);//mixcase=kTRUE in case of mixing; 
+  void Fillcorrelation(Double_t gReactionPlane,TObjArray *trackstrig,TObjArray *tracksasso,Double_t cent,Float_t vtx,Float_t weight,Bool_t firstTime,Float_t bSign,Bool_t fPtOrder,Bool_t twoTrackEfficiencyCut,Bool_t mixcase,TString fillup);//mixcase=kTRUE in case of mixing; 
  Float_t GetTrackbyTrackeffvalue(AliAODTrack* track,Double_t cent,Float_t evzvtx, Int_t parpid);
 
 //Mixing functions
@@ -370,6 +390,27 @@ fPtTOFPIDmax=PtTOFPIDmax;
    Float_t twoTrackEfficiencyCutValue;
   //Pid objects
   AliPIDResponse *fPID; //! PID
+  AliPIDCombined   *fPIDCombined;     //! PIDCombined
+
+  //set PID Combined
+  void SetPIDCombined(AliPIDCombined *obj){fPIDCombined=obj;}
+  AliPIDCombined *GetPIDCombined(){return fPIDCombined;}
+  //set cut on beyesian probability
+  void SetBayesCut(Double_t cut){fBayesCut=cut;}
+  void SetdiffPIDcutvalues(Bool_t diffPIDcutvalues,Double_t PIDCutval1, Double_t PIDCutval2, Double_t PIDCutval3,Double_t PIDCutval4){
+    fdiffPIDcutvalues=diffPIDcutvalues;
+    fPIDCutval1=PIDCutval1;
+    fPIDCutval2=PIDCutval2;
+    fPIDCutval3=PIDCutval3;
+    fPIDCutval4=PIDCutval4;
+  }
+ void  SetRandomizeReactionPlane(Bool_t RandomizeReactionPlane){fRandomizeReactionPlane=RandomizeReactionPlane;}
+  Double_t GetBayesCut(){return fBayesCut;}
+  Int_t GetIDBayes(AliAODTrack *trk, Bool_t FIllQAHistos);//calculate the PID according to bayesian PID
+  UInt_t CalcPIDCombined(AliAODTrack *track,Int_t detMask, Double_t* prob) const;
+  Bool_t* GetAllCompatibleIdentitiesNSigma(AliAODTrack * trk, Bool_t FIllQAHistos);//All the identities are true
+
+
   Int_t eventno;
   Float_t fPtTOFPIDmin; //lower pt bound for the TOCTOF combined circular pid
   Float_t fPtTOFPIDmax; //uper pt bound for the TOCTOF combined circular pid
@@ -377,6 +418,13 @@ fPtTOFPIDmax=PtTOFPIDmax;
   PIDType fPIDType; // PID type  Double_t fNSigmaPID; // number of sigma for PID cut
   Bool_t fFIllPIDQAHistos; //Switch for filling the nSigma histos
   Double_t fNSigmaPID; // number of sigma for PID cut
+  Double_t fBayesCut; // Cut on Bayesian probability
+ Bool_t fdiffPIDcutvalues;
+ Double_t fPIDCutval1;
+ Double_t fPIDCutval2;
+ Double_t fPIDCutval3;
+ Double_t fPIDCutval4;
+
   Float_t fHighPtKaonNSigmaPID;// number of sigma for PID cut for Kaons above fHighPtKaonSigma(-1 default, no cut applied)
   Float_t fHighPtKaonSigma;//lower pt bound for the fHighPtKaonNSigmaPID to be set >0(i.e. to make it applicable)
   Bool_t fUseExclusiveNSigma;//if true returns the identity only if no double counting(i.e not in the overlap area)
@@ -414,7 +462,27 @@ fPtTOFPIDmax=PtTOFPIDmax;
 Float_t GetInvMassSquaredCheap(Float_t pt1, Float_t eta1, Float_t phi1, Float_t pt2, Float_t eta2, Float_t phi2, Float_t m0_1, Float_t m0_2);
   Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign);
   TObjArray* CloneAndReduceTrackList(TObjArray* tracks);
-          
+
+
+  void ShiftTracks(TObjArray* tracks, Double_t angle);
+  Bool_t AcceptEventCentralityWeight(Double_t centrality);
+
+  //get event plane
+  Double_t GetEventPlane(AliAODEvent *event,Bool_t truth);
+  Double_t GetAcceptedEventMultiplicity(AliAODEvent *aod,Bool_t truth);//returns centrality after event(mainly vertex) selection IsEventAccepted  GetAcceptedEventMultiplicity
+  
+  //get vzero equalization
+  Double_t GetEqualizationFactor(Int_t run, const char* side);
+  Double_t GetChannelEqualizationFactor(Int_t run,Int_t channel);
+  void SetVZEROCalibrationFile(const char* filename,const char* lhcPeriod);
+  void SetCentralityWeights(TH1* hist) { fCentralityWeights = hist; }
+
+  Double_t GetRefMultiOrCentrality(AliAODEvent *event, Bool_t truth);
+  Double_t GetReferenceMultiplicityVZEROFromAOD(AliAODEvent *event);//mainly important for pp 7 TeV
+
+
+
+
     
     AliTwoParticlePIDCorr(const AliTwoParticlePIDCorr&); // not implemented
     AliTwoParticlePIDCorr& operator=(const AliTwoParticlePIDCorr&); // not implemented
@@ -435,6 +503,7 @@ public:
     virtual Short_t Charge()      const { return fcharge; }
     Float_t geteffcorrectionval() const {return feffcorrectionval;}
     virtual Bool_t IsEqual(const TObject* obj) const { return (obj->GetUniqueID() == GetUniqueID()); }
+    virtual void SetPhi(Double_t phiv) { fPhi = phiv; }
 
 
 private:
index d8c4e34dd6ef5b06cd5fc3306ee37de8ae7b2a8b..35edbfee246eba679f7b6fa89b734af933408df0 100644 (file)
@@ -15,16 +15,18 @@ AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID():
   fTPCdEdx(0),
   fTOFParticle(0),
   fTOFTime(0x0),
-    fTOFNSigma(0),
-    fTPCNSigma(0),
-    fTPCTOFNSigma(0)
+  fTOFNSigma(0),
+  fTPCNSigma(0),
+  fTPCTOFNSigma(0),
+  fTPCvsTOFNSigma(0)
 {
   // Default constructor
-    fTPCdEdx =  new TH2D("TPCdEdx", "TPC dEdx vs. momentum", 100, 0.0, 5.0, 250, 0.0, 500.0);
-    fTOFTime = new TH2D("TOFTime", "TOF Time vs. momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0);
-    fTOFNSigma = new TH2D("TOFNSigma","TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
-    fTPCNSigma = new TH2D("TPCNSigma","TPC NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
-    fTPCTOFNSigma = new TH2D("TPCTOFNSigma","TPC & TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, 0.0, 10.0);
+  fTPCdEdx =  new TH2D("TPCdEdx", "TPC dEdx vs. momentum", 100, 0.0, 5.0, 250, 0.0, 500.0);
+  fTOFTime = new TH2D("TOFTime", "TOF Time vs. momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0);
+  fTOFNSigma = new TH2D("TOFNSigma","TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
+  fTPCNSigma = new TH2D("TPCNSigma","TPC NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
+  fTPCTOFNSigma = new TH2D("TPCTOFNSigma","TPC & TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, 0.0, 10.0);
+  fTPCvsTOFNSigma = new TH2D("TPCvsTOFNSigma","TPC vs TOF Nsigma",100, -5.0, 5.0, 100, -5.0, 5.0);
 
 }
 
@@ -33,28 +35,31 @@ AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const char *aName,
   fTPCdEdx(0),
   fTOFParticle(aTOFParticle),
   fTOFTime(0x0),
-    fTOFNSigma(0),
-    fTPCNSigma(0),
-    fTPCTOFNSigma(0)
+  fTOFNSigma(0),
+  fTPCNSigma(0),
+  fTPCTOFNSigma(0),
+  fTPCvsTOFNSigma(0)
 {
   // Normal constructor
   char name[200];
   snprintf(name, 200, "TPCdEdx%s", aName);
-    // fTPCdEdx = new TH2D(name, "TPC dEdx vs. momentum", 100, 0.0, 6.0, 250, 0.0, 500.0);
-    fTPCdEdx = new TH2D(name, "TPC dEdx vs. momentum", 200, 0.1, 4.0, 250, 0.0, 500.0);
+  // fTPCdEdx = new TH2D(name, "TPC dEdx vs. momentum", 100, 0.0, 6.0, 250, 0.0, 500.0);
+  fTPCdEdx = new TH2D(name, "TPC dEdx vs. momentum", 200, 0.1, 4.0, 250, 0.0, 500.0);
 
   snprintf(name, 200, "TOFTime%s", aName);
-    fTOFTime = new TH2D(name, "TOF Time vs. momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0);
+  fTOFTime = new TH2D(name, "TOF Time vs. momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0);
 
-    snprintf(name, 200, "TOFNSigma%s", aName);
-    fTOFNSigma = new TH2D(name,"TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
+  snprintf(name, 200, "TOFNSigma%s", aName);
+  fTOFNSigma = new TH2D(name,"TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
 
-    snprintf(name, 200, "TPCNSigma%s", aName);
-    fTPCNSigma = new TH2D(name,"TPC NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
+  snprintf(name, 200, "TPCNSigma%s", aName);
+  fTPCNSigma = new TH2D(name,"TPC NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
 
-    snprintf(name, 200, "TPCTOFNSigma%s", aName);
-    fTPCTOFNSigma = new TH2D(name,"TPC & TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, 0.0, 10.0);
+  snprintf(name, 200, "TPCTOFNSigma%s", aName);
+  fTPCTOFNSigma = new TH2D(name,"TPC & TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, 0.0, 10.0);
 
+  snprintf(name, 200, "TPCvsTOFNSigma%s", aName);
+  fTPCvsTOFNSigma = new TH2D(name,"TPC vs TOF Nsigma",100, -5.0, 5.0, 100, -5.0, 5.0);
 }
 
 AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const AliFemtoCutMonitorParticlePID &aCut):
@@ -62,9 +67,10 @@ AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const AliFemtoCutMo
   fTPCdEdx(0),
   fTOFParticle(0),
   fTOFTime(0x0),
-    fTOFNSigma(0),
-    fTPCNSigma(0),
-    fTPCTOFNSigma(0)
+  fTOFNSigma(0),
+  fTPCNSigma(0),
+  fTPCTOFNSigma(0),
+  fTPCvsTOFNSigma(0)
 
 {
   // copy constructor
@@ -74,14 +80,14 @@ AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const AliFemtoCutMo
   if (fTOFTime) delete fTOFTime;
   fTOFTime = new TH2D(*aCut.fTOFTime);
 
-    if (fTOFNSigma) delete fTOFNSigma;
-    fTOFNSigma= new TH2D(*aCut.fTOFNSigma);
+  if (fTOFNSigma) delete fTOFNSigma;
+  fTOFNSigma= new TH2D(*aCut.fTOFNSigma);
 
-    if (fTPCNSigma) delete fTPCNSigma;
-    fTPCNSigma= new TH2D(*aCut.fTPCNSigma);
+  if (fTPCNSigma) delete fTPCNSigma;
+  fTPCNSigma= new TH2D(*aCut.fTPCNSigma);
 
-    if (fTPCTOFNSigma) delete fTPCTOFNSigma;
-    fTPCTOFNSigma= new TH2D(*aCut.fTPCTOFNSigma);
+  if (fTPCTOFNSigma) delete fTPCTOFNSigma;
+  fTPCTOFNSigma= new TH2D(*aCut.fTPCTOFNSigma);
 }
 
 AliFemtoCutMonitorParticlePID::~AliFemtoCutMonitorParticlePID()
@@ -89,9 +95,10 @@ AliFemtoCutMonitorParticlePID::~AliFemtoCutMonitorParticlePID()
   // Destructor
   delete fTPCdEdx;
   delete fTOFTime;
-    delete fTOFNSigma;
-    delete fTPCNSigma;
-    delete fTPCTOFNSigma;
+  delete fTOFNSigma;
+  delete fTPCNSigma;
+  delete fTPCTOFNSigma;
+  delete fTPCvsTOFNSigma;
 
 }
 
@@ -107,14 +114,17 @@ AliFemtoCutMonitorParticlePID& AliFemtoCutMonitorParticlePID::operator=(const Al
   if (fTOFTime) delete fTOFTime;
   fTOFTime = new TH2D(*aCut.fTOFTime);
 
-    if(fTOFNSigma) delete fTOFNSigma;
-    fTOFNSigma = new TH2D(*aCut.fTOFNSigma);
+  if(fTOFNSigma) delete fTOFNSigma;
+  fTOFNSigma = new TH2D(*aCut.fTOFNSigma);
 
-    if(fTPCNSigma) delete fTPCNSigma;
-    fTPCNSigma = new TH2D(*aCut.fTPCNSigma);
+  if(fTPCNSigma) delete fTPCNSigma;
+  fTPCNSigma = new TH2D(*aCut.fTPCNSigma);
 
-    if(fTPCTOFNSigma) delete fTPCTOFNSigma;
-    fTPCTOFNSigma = new TH2D(*aCut.fTPCTOFNSigma);
+  if(fTPCTOFNSigma) delete fTPCTOFNSigma;
+  fTPCTOFNSigma = new TH2D(*aCut.fTPCTOFNSigma);
+
+  if(fTPCvsTOFNSigma) delete fTPCvsTOFNSigma;
+  fTPCvsTOFNSigma = new TH2D(*aCut.fTPCvsTOFNSigma);
 
   return *this;
 }
@@ -160,6 +170,11 @@ void AliFemtoCutMonitorParticlePID::Fill(const AliFemtoTrack* aTrack)
     if (fTOFParticle == 1) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCK(), aTrack->NSigmaTOFK() ) );
     if (fTOFParticle == 2) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCP(), aTrack->NSigmaTOFP() ) );
 
+    if (fTOFParticle == 0) fTPCvsTOFNSigma->Fill(aTrack->NSigmaTPCPi(), aTrack->NSigmaTOFPi());
+    if (fTOFParticle == 1) fTPCvsTOFNSigma->Fill(aTrack->NSigmaTPCK(), aTrack->NSigmaTOFK());
+    if (fTOFParticle == 2) fTPCvsTOFNSigma->Fill(aTrack->NSigmaTPCP(), aTrack->NSigmaTOFP());
+
+
 }
 
 void AliFemtoCutMonitorParticlePID::Write()
@@ -167,10 +182,10 @@ void AliFemtoCutMonitorParticlePID::Write()
   // Write out the relevant histograms
   fTPCdEdx->Write();
   fTOFTime->Write();
-    fTOFNSigma->Write();
-    fTPCNSigma->Write();
-    fTPCTOFNSigma->Write();
-
+  fTOFNSigma->Write();
+  fTPCNSigma->Write();
+  fTPCTOFNSigma->Write();
+  fTPCvsTOFNSigma->Write();
 }
 
 TList *AliFemtoCutMonitorParticlePID::GetOutputList()
@@ -178,9 +193,10 @@ TList *AliFemtoCutMonitorParticlePID::GetOutputList()
   TList *tOutputList = new TList();
   tOutputList->Add(fTPCdEdx);
   tOutputList->Add(fTOFTime);
-    tOutputList->Add(fTOFNSigma);
-    tOutputList->Add(fTPCNSigma);
-    tOutputList->Add(fTPCTOFNSigma);
+  tOutputList->Add(fTOFNSigma);
+  tOutputList->Add(fTPCNSigma);
+  tOutputList->Add(fTPCTOFNSigma);
+  tOutputList->Add(fTPCvsTOFNSigma);
 
   return tOutputList;
 }
index a8bfd08500f6ee3e7bcade18882ce24bf5cce30e..8072fc11a3eebee32dad54ffd626f9df8fe441f6 100644 (file)
@@ -49,9 +49,11 @@ private:
   TH2D *fTPCdEdx;     // TPC dEdx information
   Int_t fTOFParticle; // Select TOF time hypothesis, 0-pion, 1-kaon, 2-proton
   TH2D *fTOFTime;     // TOF time
-    TH2D *fTOFNSigma;   // TOF NSigma values
-    TH2D *fTPCNSigma;   // TPC NSigma values
-    TH2D *fTPCTOFNSigma;   // TPC & TOF NSigma values
+  TH2D *fTOFNSigma;   // TOF NSigma values vs mom
+  TH2D *fTPCNSigma;   // TPC NSigma values vs mom
+  TH2D *fTPCTOFNSigma;   // TPC^2+ TOF^2 NSigma values vs mom
+  TH2D *fTPCvsTOFNSigma; // TPC vs TOF
+  
 
 };
 
diff --git a/PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhiCorrections.cxx b/PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhiCorrections.cxx
new file mode 100644 (file)
index 0000000..d422e30
--- /dev/null
@@ -0,0 +1,805 @@
+////////////////////////////////////////////////////////////////////////////////
+//                                                                            //
+// AliFemtoCorrFctnDEtaDPhiCorrections - A correlation function that analyzes //
+// two particle correlations with respect to the azimuthal angle (phi)        //
+// and pseudorapidity (eta) difference                                        //
+//                                                                            //
+// Authors: Adam Kisiel Adam.Kisiel@cern.ch                                   //
+//                                                                            //
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliFemtoCorrFctnDEtaDPhiCorrections.h"
+#include "AliFemtoModelHiddenInfo.h"
+//#include "AliFemtoHisto.hh"
+#include <cstdio>
+#include <TMath.h>
+
+#ifdef __ROOT__ 
+ClassImp(AliFemtoCorrFctnDEtaDPhiCorrections)
+#endif
+  
+#define PIH 1.57079632679489656
+#define PIT 6.28318530717958623
+
+
+
+
+//____________________________
+AliFemtoCorrFctnDEtaDPhiCorrections::AliFemtoCorrFctnDEtaDPhiCorrections(char* title, const int& aPhiBins=20, const int& aEtaBins=20):
+  AliFemtoCorrFctn(),
+  fDPhiDEtaNumerator(0),
+  fDPhiDEtaDenominator(0),
+  fDPhiNumerator(0),
+  fDPhiDenominator(0),
+  fDCosNumerator(0),
+  fDCosDenominator(0),
+  fDoPtAnalysis(0),
+  fDPhiPtNumerator(0),
+  fDPhiPtDenominator(0),
+  fDCosPtNumerator(0),
+  fDCosPtDenominator(0),
+  fPhi(0),
+  fEta(0),
+  fYtYtNumerator(0),
+  fYtYtDenominator(0),
+  fIfCorrectionHist(kNone),
+  fIfCorrection(0),
+  fPtCorrectionsNum(0),
+  fPtCorrectionsDen(0),
+  fEtaCorrectionsNum(0),
+  fEtaCorrectionsDen(0),
+  fCorrFactorTab(0),
+  fpTab(0),
+  fPartType(kNoCorrection),
+  fphiL(0),
+  fphiT(0)
+{
+
+  fphiL = (-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins;
+  fphiT = 2*TMath::Pi()+(-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins;
+
+  // set up numerator
+  char tTitNumD[101] = "NumDPhiDEta";
+  strncat(tTitNumD,title, 100);
+  fDPhiDEtaNumerator = new TH2D(tTitNumD,title,aPhiBins,fphiL,fphiT,aEtaBins,-2.0,2.0);
+  // set up denominator
+  char tTitDenD[101] = "DenDPhiDEta";
+  strncat(tTitDenD,title, 100);
+  fDPhiDEtaDenominator = new TH2D(tTitDenD,title,aPhiBins,fphiL,fphiT,aEtaBins,-2.0,2.0);
+
+  // set up numerator
+  char tTitNumDPhi[101] = "NumDPhi";
+  strncat(tTitNumDPhi,title, 100);
+  fDPhiNumerator = new TH1D(tTitNumDPhi,title,aPhiBins*2,fphiL, fphiT);
+  // set up denominator
+  char tTitDenDPhi[101] = "DenDPhi";
+  strncat(tTitDenDPhi,title, 100);
+  fDPhiDenominator = new TH1D(tTitDenDPhi,title,aPhiBins*2,fphiL, fphiT);
+
+  // set up numerator
+  char tTitNumDCos[101] = "NumDCos";
+  strncat(tTitNumDCos,title, 100);
+  fDCosNumerator = new TH1D(tTitNumDCos,title,aPhiBins*2,-1.0,1.0);
+  // set up denominator
+  char tTitDenDCos[101] = "DenDCos";
+  strncat(tTitDenDCos,title, 100);
+  fDCosDenominator = new TH1D(tTitDenDCos,title,aPhiBins*2,-1.0,1.0);
+
+  char tTitPhi[101] = "Phi";
+  strncat(tTitPhi,title, 100);
+  fPhi = new TH1D(tTitPhi,title,90,-TMath::Pi(),TMath::Pi());
+
+  char tTitEta[101] = "Eta";
+  strncat(tTitEta,title, 100);
+  fEta = new TH1D(tTitEta,title,90,-1.2,1.2);
+  
+  // set up numerator
+  char tTitYtNum[101] = "NumYtYt";
+  strncat(tTitYtNum,title, 100);
+  fYtYtNumerator = new TH2D(tTitYtNum,title,aPhiBins,1,5,aEtaBins,1,5);
+  // set up denominator
+  char tTitYtYtDen[101] = "DenYtYt";
+  strncat(tTitYtYtDen,title, 100);
+  fYtYtDenominator = new TH2D(tTitYtYtDen,title,aPhiBins,1,5,aEtaBins,1,5);
+
+
+  char tTitPtCorrectionsNum[101] = "NumpT1pT2EtaPhi";
+  strncat(tTitPtCorrectionsNum,title, 100);
+  char tTitPtCorrectionsDen[101] = "DenpT1pT2EtaPhi";
+  strncat(tTitPtCorrectionsDen,title, 100);
+
+  Int_t nbins[4] = {20,20,aPhiBins,aEtaBins};
+  Double_t xmin[4] = {0,0,-0.5*TMath::Pi(),-2.0};
+  Double_t xmax[4] = {4,4,1.5*TMath::Pi(),2.0};
+
+
+  fPtCorrectionsNum = new THnSparseF(tTitPtCorrectionsNum,title,4,nbins,xmin,xmax);
+  fPtCorrectionsDen = new THnSparseF(tTitPtCorrectionsDen,title,4,nbins,xmin,xmax);
+
+  char tTitEtaCorrectionsNum[101] = "NumEta1Eta2EtaPhi";
+  strncat(tTitEtaCorrectionsNum,title, 100);
+  char tTitEtaCorrectionsDen[101] = "DenEta1Eta2EtaPhi";
+  strncat(tTitEtaCorrectionsDen,title, 100);
+
+  Double_t xmineta[4] = {-1,1,-0.5*TMath::Pi(),-2.0};
+  Double_t xmaxeta[4] = {-1,1,1.5*TMath::Pi(),2.0};
+
+  fEtaCorrectionsNum = new THnSparseF(tTitEtaCorrectionsNum,title,4,nbins,xmineta,xmaxeta);
+  fEtaCorrectionsDen = new THnSparseF(tTitEtaCorrectionsDen,title,4,nbins,xmineta,xmaxeta);
+
+  // THnSparse(const char* name, const char* title, Int_t dim,
+  //           const Int_t* nbins, const Double_t* xmin, const Double_t* xmax,
+  //           Int_t chunksize);
+
+  // to enable error bar calculation...
+  fDPhiDEtaNumerator->Sumw2();
+  fDPhiDEtaDenominator->Sumw2();
+  fDPhiNumerator->Sumw2();
+  fDPhiDenominator->Sumw2();
+  fDCosNumerator->Sumw2();
+  fDCosDenominator->Sumw2();
+  fPhi->Sumw2();
+  fEta->Sumw2();
+  fYtYtNumerator->Sumw2();
+  fYtYtDenominator->Sumw2();
+  fPtCorrectionsNum->Sumw2();
+  fPtCorrectionsDen->Sumw2();
+
+  
+
+}
+
+//____________________________
+AliFemtoCorrFctnDEtaDPhiCorrections::AliFemtoCorrFctnDEtaDPhiCorrections(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn) :
+  AliFemtoCorrFctn(),
+  fDPhiDEtaNumerator(0),
+  fDPhiDEtaDenominator(0),
+  fDPhiNumerator(0),
+  fDPhiDenominator(0),
+  fDCosNumerator(0),
+  fDCosDenominator(0),
+  fDoPtAnalysis(0),
+  fDPhiPtNumerator(0),
+  fDPhiPtDenominator(0),
+  fDCosPtNumerator(0),
+  fDCosPtDenominator(0),
+  fPhi(0),
+  fEta(0),
+  fYtYtNumerator(0),
+  fYtYtDenominator(0),
+  fIfCorrectionHist(kNone),
+  fIfCorrection(0),
+  fPtCorrectionsNum(0),
+  fPtCorrectionsDen(0),
+  fEtaCorrectionsNum(0),
+  fEtaCorrectionsDen(0),
+  fCorrFactorTab(0),
+  fpTab(0),
+  fPartType(kNoCorrection),
+  fphiL(0),
+  fphiT(0)
+{
+  // copy constructor
+  if (aCorrFctn.fDPhiDEtaNumerator)
+    fDPhiDEtaNumerator = new TH2D(*aCorrFctn.fDPhiDEtaNumerator);
+  else
+    fDPhiDEtaNumerator = 0;
+  if (aCorrFctn.fDPhiDEtaDenominator)
+    fDPhiDEtaDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator);
+  else
+    fDPhiDEtaDenominator = 0;
+
+  if (aCorrFctn.fDPhiNumerator)
+    fDPhiNumerator = new TH1D(*aCorrFctn.fDPhiNumerator);
+  else
+    fDPhiNumerator = 0;
+  if (aCorrFctn.fDPhiDenominator)
+    fDPhiDenominator = new TH1D(*aCorrFctn.fDPhiDenominator);
+  else
+    fDPhiDenominator = 0;
+
+  if (aCorrFctn.fDCosNumerator)
+    fDCosNumerator = new TH1D(*aCorrFctn.fDCosNumerator);
+  else
+    fDCosNumerator = 0;
+  if (aCorrFctn.fDCosDenominator)
+    fDCosDenominator = new TH1D(*aCorrFctn.fDCosDenominator);
+  else
+    fDCosDenominator = 0;
+
+  if (aCorrFctn.fDPhiPtNumerator)
+    fDPhiPtNumerator = new TH2D(*aCorrFctn.fDPhiPtNumerator);
+  else
+    fDPhiPtNumerator = 0;
+  if (aCorrFctn.fDPhiPtDenominator)
+    fDPhiPtDenominator = new TH2D(*aCorrFctn.fDPhiPtDenominator);
+  else
+    fDPhiPtDenominator = 0;
+
+  if (aCorrFctn.fDCosPtNumerator)
+    fDCosPtNumerator = new TH2D(*aCorrFctn.fDCosPtNumerator);
+  else
+    fDCosPtNumerator = 0;
+  if (aCorrFctn.fDCosPtDenominator)
+    fDCosPtDenominator = new TH2D(*aCorrFctn.fDCosPtDenominator);
+  else
+    fDCosPtDenominator = 0;
+ if (aCorrFctn.fPhi)
+    fPhi = new TH1D(*aCorrFctn.fPhi);
+  else
+    fPhi = 0;
+ if (aCorrFctn.fEta)
+    fEta = new TH1D(*aCorrFctn.fEta);
+  else
+    fEta = 0;
+
+ if (aCorrFctn.fYtYtNumerator)
+   fYtYtNumerator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator);
+ else 
+   fYtYtNumerator = 0;
+
+ if (aCorrFctn.fYtYtDenominator)
+   fYtYtDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator);
+ else 
+    fYtYtDenominator = 0;
+
+  fphiL = aCorrFctn.fphiL;
+  fphiT = aCorrFctn.fphiT;
+
+  fPartType = aCorrFctn.fPartType;
+
+//  if (aCorrFctn.fPtCorrectionsNum)
+//    fPtCorrectionsNum = new THnSparseF(*aCorrFctn.fPtCorrectionsNum);
+//    else 
+//    fPtCorrectionsNum = 0;
+
+// if (aCorrFctn.fPtCorrectionsDen)
+//    fPtCorrectionsDen = new THnSparseF(*aCorrFctn.fPtCorrectionsDen);
+//  else 
+//    fPtCorrectionsDen = 0;
+
+
+
+}
+//____________________________
+AliFemtoCorrFctnDEtaDPhiCorrections::~AliFemtoCorrFctnDEtaDPhiCorrections(){
+  // destructor
+  delete fDPhiDEtaNumerator;
+  delete fDPhiDEtaDenominator;
+  delete fDPhiNumerator;
+  delete fDPhiDenominator;
+  delete fDCosNumerator;
+  delete fDCosDenominator;
+  if (fDoPtAnalysis) {
+    delete fDPhiPtNumerator;
+    delete fDPhiPtDenominator;
+    delete fDCosPtNumerator;
+    delete fDCosPtDenominator;
+  }
+  delete fPhi;
+  delete fEta;
+
+  delete fYtYtNumerator;
+  delete fYtYtDenominator;
+
+  delete fPtCorrectionsNum;
+  delete fPtCorrectionsDen;
+  delete fEtaCorrectionsNum;
+  delete fEtaCorrectionsDen;
+}
+//_________________________
+AliFemtoCorrFctnDEtaDPhiCorrections& AliFemtoCorrFctnDEtaDPhiCorrections::operator=(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn)
+{
+  // assignment operator
+  if (this == &aCorrFctn)
+    return *this;
+
+  if (aCorrFctn.fDPhiDEtaNumerator)
+    fDPhiDEtaNumerator = new TH2D(*aCorrFctn.fDPhiDEtaNumerator);
+  else
+    fDPhiDEtaNumerator = 0;
+  if (aCorrFctn.fDPhiDEtaDenominator)
+    fDPhiDEtaDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator);
+  else
+    fDPhiDEtaDenominator = 0;
+
+  if (aCorrFctn.fDPhiNumerator)
+    fDPhiNumerator = new TH1D(*aCorrFctn.fDPhiNumerator);
+  else
+    fDPhiNumerator = 0;
+  if (aCorrFctn.fDPhiDenominator)
+    fDPhiDenominator = new TH1D(*aCorrFctn.fDPhiDenominator);
+  else
+    fDPhiDenominator = 0;
+
+  if (aCorrFctn.fDCosNumerator)
+    fDCosNumerator = new TH1D(*aCorrFctn.fDCosNumerator);
+  else
+    fDCosNumerator = 0;
+  if (aCorrFctn.fDCosDenominator)
+    fDCosDenominator = new TH1D(*aCorrFctn.fDCosDenominator);
+  else
+    fDCosDenominator = 0;
+
+  if (aCorrFctn.fDPhiPtNumerator)
+    fDPhiPtNumerator = new TH2D(*aCorrFctn.fDPhiPtNumerator);
+  else
+    fDPhiPtNumerator = 0;
+  if (aCorrFctn.fDPhiPtDenominator)
+    fDPhiPtDenominator = new TH2D(*aCorrFctn.fDPhiPtDenominator);
+  else
+    fDPhiPtDenominator = 0;
+
+  if (aCorrFctn.fDCosPtNumerator)
+    fDCosPtNumerator = new TH2D(*aCorrFctn.fDCosPtNumerator);
+  else
+    fDCosPtNumerator = 0;
+  if (aCorrFctn.fDCosPtDenominator)
+    fDCosPtDenominator = new TH2D(*aCorrFctn.fDCosPtDenominator);
+  else
+    fDCosPtDenominator = 0;
+  if (aCorrFctn.fPhi)
+    fPhi = new TH1D(*aCorrFctn.fPhi);
+  else
+    fPhi = 0;
+  if (aCorrFctn.fEta)
+    fEta = new TH1D(*aCorrFctn.fEta);
+  else
+    fEta = 0;
+
+ if (aCorrFctn.fYtYtNumerator)
+   fYtYtNumerator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator);
+ else 
+   fYtYtNumerator = 0;
+
+ if (aCorrFctn.fYtYtDenominator)
+   fYtYtDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator);
+ else 
+   fYtYtDenominator = 0;
+
+ fIfCorrectionHist = kNone;
+ fIfCorrection = 0;
+  fphiL = aCorrFctn.fphiL;
+  fphiT = aCorrFctn.fphiT;
+
+  fPartType = aCorrFctn.fPartType;
+
+// if (aCorrFctn.fPtCorrectionsNum)
+//    fPtCorrectionsNum = new THnSparseF(*aCorrFctn.fPtCorrectionsNum);
+//  else 
+//    fPtCorrectionsNum = 0;
+
+// if (aCorrFctn.fPtCorrectionsDen)
+//    fPtCorrectionsDen = new THnSparseF(*aCorrFctn.fPtCorrectionsDen);
+//  else 
+//    fPtCorrectionsDen = 0;
+
+
+
+  return *this;
+}
+//_________________________
+void AliFemtoCorrFctnDEtaDPhiCorrections::Finish(){
+  // here is where we should normalize, fit, etc...
+  // we should NOT Draw() the histos (as I had done it below),
+  // since we want to insulate ourselves from root at this level
+  // of the code.  Do it instead at root command line with browser.
+  //  mShareNumerator->Draw();
+  //mShareDenominator->Draw();
+  //mRatio->Draw();
+
+}
+
+//____________________________
+AliFemtoString AliFemtoCorrFctnDEtaDPhiCorrections::Report(){
+  // create report
+  string stemp = "TPC Ncls Correlation Function Report:\n";
+  char ctemp[100];
+  snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fDPhiDEtaNumerator->GetEntries());
+  stemp += ctemp;
+  snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDPhiDEtaDenominator->GetEntries());
+  stemp += ctemp;
+  //  stemp += mCoulombWeight->Report();
+  AliFemtoString returnThis = stemp;
+  return returnThis;
+}
+//____________________________
+void AliFemtoCorrFctnDEtaDPhiCorrections::AddRealPair( AliFemtoPair* pair){
+  // add real (effect) pair
+  if (fPairCut)
+    if (!fPairCut->Pass(pair)) return;
+
+  /*double phi1 = pair->Track1()->Track()->P().Phi();
+  double phi2 = pair->Track2()->Track()->P().Phi();
+  double eta1 = pair->Track1()->Track()->P().PseudoRapidity();
+  double eta2 = pair->Track2()->Track()->P().PseudoRapidity();*/
+
+  double phi1 = pair->Track1()->FourMomentum().Phi();
+  double phi2 = pair->Track2()->FourMomentum().Phi();
+  double eta1 = pair->Track1()->FourMomentum().PseudoRapidity();
+  double eta2 = pair->Track2()->FourMomentum().PseudoRapidity();
+
+  double dphi = phi1 - phi2;
+  while (dphi<fphiL) dphi+=PIT;
+  while (dphi>fphiT) dphi-=PIT;
+
+  double deta = eta1 - eta2;
+
+   double px1 = pair->Track1()->Track()->P().x();
+   double py1 = pair->Track1()->Track()->P().y();
+   //double pz1 = pair->Track1()->Track()->P().z();
+
+   double px2 = pair->Track2()->Track()->P().x();
+   double py2 = pair->Track2()->Track()->P().y();
+   //double pz2 = pair->Track2()->Track()->P().z();
+
+   double pt1 = TMath::Hypot(px1, py1);
+   double pt2 = TMath::Hypot(px2, py2);
+
+   double corrweight;
+   if (fIfCorrection) corrweight = CalculateCorrectionWeight(pt1, pt2);
+/*   double ptmin = pt1>pt2 ? pt2 : pt1;
+
+   double cosphi = (px1*px2 + py1*py2 + pz1*pz2)/
+     sqrt((px1*px1 + py1*py1 + pz1*pz1)*(px2*px2 + py2*py2 + pz2*pz2));
+*/
+   if (fIfCorrection)
+      fDPhiDEtaNumerator->Fill(dphi, deta, corrweight);
+   else
+      fDPhiDEtaNumerator->Fill(dphi, deta);
+
+  fDPhiNumerator->Fill(dphi);
+//   fDCosNumerator->Fill(cosphi);
+
+  if (fDoPtAnalysis) {
+//     fDPhiPtNumerator->Fill(dphi, ptmin);
+//     fDCosPtNumerator->Fill(cosphi, ptmin);
+  }
+
+  fPhi->Fill(phi1);
+  fEta->Fill(eta1);
+
+  double PionMass = 0.13956995;
+  double yt1 = TMath::Log(sqrt(1+(pt1/PionMass)*(pt1/PionMass))+(pt1/PionMass));
+  double yt2 = TMath::Log(sqrt(1+(pt2/PionMass)*(pt2/PionMass))+(pt2/PionMass));
+  fYtYtNumerator->Fill(yt1,yt2);
+
+  if(fIfCorrectionHist)
+    {
+      if(fIfCorrectionHist == kPt){
+       Double_t val[] = {pt1,pt2,dphi,deta};
+       fPtCorrectionsNum->Fill(val);
+      }
+      if(fIfCorrectionHist == kEta){
+       Double_t val[] = {eta1,eta2,dphi,deta};
+       fEtaCorrectionsNum->Fill(val);
+      }
+
+    }
+
+}
+//____________________________
+void AliFemtoCorrFctnDEtaDPhiCorrections::AddMixedPair( AliFemtoPair* pair){
+  // add mixed (background) pair
+  if (fPairCut)
+    if (!fPairCut->Pass(pair)) return;
+
+  /*double phi1 = pair->Track1()->Track()->P().Phi();
+  double phi2 = pair->Track2()->Track()->P().Phi();
+  double eta1 = pair->Track1()->Track()->P().PseudoRapidity();
+  double eta2 = pair->Track2()->Track()->P().PseudoRapidity();*/
+
+  double phi1 = pair->Track1()->FourMomentum().Phi();
+  double phi2 = pair->Track2()->FourMomentum().Phi();
+  double eta1 = pair->Track1()->FourMomentum().PseudoRapidity();
+  double eta2 = pair->Track2()->FourMomentum().PseudoRapidity();
+
+  double dphi = phi1 - phi2;
+  while (dphi<fphiL) dphi+=PIT;
+  while (dphi>fphiT) dphi-=PIT;
+
+  double deta = eta1 - eta2;
+
+   double px1 = pair->Track1()->Track()->P().x();
+   double py1 = pair->Track1()->Track()->P().y();
+   //double pz1 = pair->Track1()->Track()->P().z();
+
+   double px2 = pair->Track2()->Track()->P().x();
+   double py2 = pair->Track2()->Track()->P().y();
+   //double pz2 = pair->Track2()->Track()->P().z();
+
+   double pt1 = TMath::Hypot(px1, py1);
+   double pt2 = TMath::Hypot(px2, py2);
+//   double ptmin = pt1>pt2 ? pt2 : pt1;
+
+//   double cosphi = (px1*px2 + py1*py2 + pz1*pz2)/
+//     sqrt((px1*px1 + py1*py1 + pz1*pz1)*(px2*px2 + py2*py2 + pz2*pz2));
+
+
+   double corrweight=-999;
+   if (fIfCorrection) corrweight = CalculateCorrectionWeight(pt1, pt2);
+  
+   if(fIfCorrection)
+      fDPhiDEtaDenominator->Fill(dphi, deta, corrweight);
+   else
+      fDPhiDEtaDenominator->Fill(dphi, deta);
+
+  fDPhiDenominator->Fill(dphi);
+//   fDCosDenominator->Fill(cosphi);
+
+  //if (fDoPtAnalysis) {
+    //   fDPhiPtDenominator->Fill(dphi, ptmin);
+    //   fDCosPtDenominator->Fill(cosphi, ptmin);
+  //}
+
+  double PionMass = 0.13956995;
+    double yt1 = TMath::Log(sqrt(1+(pt1/PionMass)*(pt1/PionMass))+(pt1/PionMass));
+    double yt2 = TMath::Log(sqrt(1+(pt2/PionMass)*(pt2/PionMass))+(pt2/PionMass));
+    fYtYtDenominator->Fill(yt1,yt2);
+
+  if(fIfCorrectionHist)
+    {
+      if(fIfCorrectionHist == kPt){
+       Double_t val[] = {pt1,pt2,dphi,deta};
+       fPtCorrectionsDen->Fill(val);
+      }
+      if(fIfCorrectionHist == kEta){
+       Double_t val[] = {eta1,eta2,dphi,deta};
+       fEtaCorrectionsDen->Fill(val);
+      }
+    }
+
+}
+
+
+void AliFemtoCorrFctnDEtaDPhiCorrections::WriteHistos()
+{
+  // Write out result histograms
+  fDPhiDEtaNumerator->Write();
+  fDPhiDEtaDenominator->Write();
+  /*fDPhiNumerator->Write();
+  fDPhiDenominator->Write();
+  fDCosNumerator->Write();
+  fDCosDenominator->Write();
+  if (fDoPtAnalysis) {
+    fDPhiPtNumerator->Write();
+    fDPhiPtDenominator->Write();
+    fDCosPtNumerator->Write();
+    fDCosPtDenominator->Write();
+    }*/
+  fPhi->Write();
+  fEta->Write();
+  
+  if(fIfCorrectionHist){
+    if(fIfCorrectionHist==kPt){
+    fPtCorrectionsNum->Write();
+    fPtCorrectionsDen->Write();}
+    if(fIfCorrectionHist==kEta){
+    fEtaCorrectionsNum->Write();
+    fEtaCorrectionsDen->Write();}
+  }
+}
+
+TList* AliFemtoCorrFctnDEtaDPhiCorrections::GetOutputList()
+{
+  // Prepare the list of objects to be written to the output
+  TList *tOutputList = new TList();
+
+  tOutputList->Add(fDPhiDEtaNumerator);
+  tOutputList->Add(fDPhiDEtaDenominator);
+  /*tOutputList->Add(fDPhiNumerator);
+  tOutputList->Add(fDPhiDenominator);
+  tOutputList->Add(fDCosNumerator);
+  tOutputList->Add(fDCosDenominator);
+  if (fDoPtAnalysis) {
+    tOutputList->Add(fDPhiPtNumerator);
+    tOutputList->Add(fDPhiPtDenominator);
+    tOutputList->Add(fDCosPtNumerator);
+    tOutputList->Add(fDCosPtDenominator);
+    }*/
+  tOutputList->Add(fPhi);
+  tOutputList->Add(fEta);
+  tOutputList->Add(fYtYtNumerator);
+  tOutputList->Add(fYtYtDenominator);
+
+  if(fIfCorrectionHist){
+    if(fIfCorrection==kPt){
+      tOutputList->Add(fPtCorrectionsNum);
+      tOutputList->Add(fPtCorrectionsDen);
+    }
+    if(fIfCorrectionHist==kEta){
+      tOutputList->Add(fEtaCorrectionsNum);
+      tOutputList->Add(fEtaCorrectionsDen);
+    }
+  }
+  return tOutputList;
+
+}
+
+void AliFemtoCorrFctnDEtaDPhiCorrections::SetDoPtAnalysis(int do2d)
+{
+  fDoPtAnalysis = do2d;
+  
+  int aPhiBins = fDPhiDEtaNumerator->GetNbinsX();
+  const char *title = fDPhiDEtaNumerator->GetTitle();
+
+  // set up numerator
+  char tTitNumDPhiPt[101] = "NumDPhiPt";
+  strncat(tTitNumDPhiPt,title, 100);
+  fDPhiPtNumerator = new TH2D(tTitNumDPhiPt,title,aPhiBins*2,-0.5*TMath::Pi(),3./2.*TMath::Pi(), 30, 0.0, 3.0);
+  // set up denominator
+  char tTitDenDPhiPt[101] = "DenDPhiPt";
+  strncat(tTitDenDPhiPt,title, 100);
+  fDPhiPtDenominator = new TH2D(tTitDenDPhiPt,title,aPhiBins*2,-0.5*TMath::Pi(),3./2.*TMath::Pi(), 30, 0.0, 3.0);
+
+  // set up numerator
+  char tTitNumDCosPt[101] = "NumDCosPt";
+  strncat(tTitNumDCosPt,title, 100);
+  fDCosPtNumerator = new TH2D(tTitNumDCosPt,title,aPhiBins*2,-1.0,1.0, 30, 0.0, 3.0);
+  // set up denominator
+  char tTitDenDCosPt[101] = "DenDCosPt";
+  strncat(tTitDenDCosPt,title, 100);
+  fDCosPtDenominator = new TH2D(tTitDenDCosPt,title,aPhiBins*2,-1.0,1.0, 30, 0.0, 3.0);
+
+  fDPhiPtNumerator->Sumw2();
+  fDPhiPtDenominator->Sumw2();
+  fDCosPtNumerator->Sumw2();
+  fDCosPtDenominator->Sumw2();
+
+}
+
+void AliFemtoCorrFctnDEtaDPhiCorrections::SetDoCorrections(bool doCorr)
+{
+  fIfCorrection = doCorr;
+}
+
+void AliFemtoCorrFctnDEtaDPhiCorrections::SetDoCorrectionsHist(CorrectionType doCorr)
+{
+  fIfCorrectionHist = doCorr;
+}
+
+void AliFemtoCorrFctnDEtaDPhiCorrections::LoadCorrectionTabFromFile(const char *pTtab, const char *corrTab)
+{
+  double val=-10000;
+
+  ifstream ifile1;
+  ifile1.open(pTtab);
+  if(ifile1)
+    {
+      int nrEntries1;
+      ifile1>>nrEntries1;
+      fpTab = new double[nrEntries1];
+      int i=0;
+      while(ifile1>>val)
+       {
+         fpTab[i] = val;
+         i++;
+       }
+    }
+  else
+    {
+      cout<<"No pT values file open!"<<endl;
+    }
+  ifile1.close();
+  
+
+  ifstream ifile2;
+  ifile2.open(corrTab);
+  if(ifile2)
+    {
+      int nrEntries2;
+      ifile2>>nrEntries2;
+      fCorrFactorTab = new double[nrEntries2];
+      int i=0;
+      while(ifile2>>val)
+       {
+         fCorrFactorTab[i] = val;
+         cout<<"fCorrFactorTab: "<<fCorrFactorTab[i]<<endl;
+         i++;
+       }
+    }
+  else
+    {
+      cout<<"No corrections file open!"<<endl;
+    }
+  ifile2.close();
+}
+
+void AliFemtoCorrFctnDEtaDPhiCorrections::SetCorrectionTab(ParticleType partType)
+{
+
+  double pttab[] = {0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425, 0.45, 0.475, 0.5, 0.525, 0.55, 0.575, 0.6, 0.625, 0.65, 0.675, 0.7, 0.725, 0.75, 0.775, 0.8, 0.825, 0.85, 0.875, 0.9, 0.925, 0.95, 0.975, 1, 1.025, 1.05, 1.075, 1.1, 1.125, 1.15, 1.175, 1.2, 1.225, 1.25, 1.275, 1.3, 1.325, 1.35, 1.375, 1.4, 1.425, 1.45, 1.475, 1.5, 1.525, 1.55, 1.575, 1.6, 1.625, 1.65, 1.675, 1.7, 1.725, 1.75, 1.775, 1.8, 1.825, 1.85, 1.875, 1.9, 1.925, 1.95, 1.975, 2, 2.025, 2.05, 2.075, 2.1, 2.125, 2.15, 2.175, 2.2, 2.225, 2.25, 2.275, 2.3, 2.325, 2.35, 2.375, 2.4, 2.425, 2.45, 2.475, 2.5, 2.525, 2.55, 2.575, 2.6, 2.625, 2.65, 2.675, 2.7, 2.725, 2.75, 2.775, 2.8, 2.825, 2.85, 2.875, 2.9, 2.925, 2.95, 2.975, 3, 3.025, 3.05, 3.075, 3.1, 3.125, 3.15, 3.175, 3.2, 3.225, 3.25, 3.275, 3.3, 3.325, 3.35, 3.375, 3.4, 3.425, 3.45, 3.475, 3.5, 3.525, 3.55, 3.575, 3.6, 3.625, 3.65, 3.675, 3.7, 3.725, 3.75, 3.775, 3.8, 3.825, 3.85, 3.875, 3.9, 3.925, 3.95, 3.975, 4, 4.025, 4.05, 4.075, 4.1, 4.125, 4.15, 4.175, 4.2, 4.225, 4.25, 4.275, 4.3, 4.325, 4.35, 4.375, 4.4, 4.425, 4.45, 4.475, 4.5, 4.525, 4.55, 4.575, 4.6, 4.625, 4.65, 4.675, 4.7, 4.725, 4.75};
+
+  double pioncorrtab[] = {0, 0, 0, 0, 0, 0, 0, 1.40089, 1.40089, 1.29482, 1.29482, 1.25595, 1.22529, 1.22529, 1.23099, 1.32027, 1.32027, 1.44774, 1.44774, 1.74645, 1.8619, 1.8619, 1.82089, 1.78506, 1.78506, 1.75918, 1.75918, 1.74951, 1.74614, 1.74614, 1.74006, 1.73229, 1.73229, 1.72844, 1.72844, 1.72306, 1.71906, 1.71906, 1.71375, 1.71301, 1.71301, 1.70381, 1.70381, 1.69975, 1.69242, 1.69242, 1.69013, 1.67698, 1.67698, 1.6772, 1.6772, 1.67118, 1.66607, 1.66607, 1.66131, 1.67228, 1.67228, 1.66834, 1.66834, 1.66031, 1.6588, 1.6588, 1.6555, 1.64923, 1.64923, 1.6467, 1.6467, 1.63894, 1.63682, 1.63682, 1.6297, 1.62904, 1.62904, 1.63007, 1.63007, 1.62832, 1.62557, 1.62557, 1.62687, 1.62928, 1.62928, 1.62767, 1.62767, 1.62767, 1.62767, 1.62767, 1.62767, 1.63415, 1.63415, 1.63415, 1.63415, 1.63415, 1.63415, 1.63415, 1.64141, 1.64141, 1.64141, 1.64141, 1.64141, 1.64141, 1.65191, 1.65191, 1.65191, 1.65191, 1.65191, 1.65191, 1.65191, 1.66838, 1.66838, 1.66838, 1.66838, 1.66838, 1.66838, 1.6839, 1.6839, 1.6839, 1.6839, 1.6839, 1.6839, 1.69601, 1.69601, 1.69601, 1.69601, 1.69601, 1.69601, 1.69601, 1.70062, 1.70062, 1.70062, 1.70062, 1.70062, 1.70062, 1.68668, 1.68668, 1.68668, 1.68668, 1.68668, 1.68668, 1.68668, 1.68182, 1.68182, 1.68182, 1.68182, 1.68182, 1.68182, 1.681, 1.681, 1.681, 1.681, 1.681, 1.681, 1.67749, 1.67749, 1.67749, 1.67749, 1.67749, 1.67749, 1.67749, 1.66558, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.64419};
+
+  double protoncorrtab[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 357.585, 357.585, 8.66944, 2.10995, 2.10995, 1.50443, 1.73168, 1.73168, 2.3605, 2.3605, 4.7726, 4.40359, 4.40359, 3.0307, 2.49649, 2.49649, 2.2231, 2.2231, 2.11247, 2.05862, 2.05862, 2.00703, 1.9623, 1.9623, 1.93393, 1.93393, 1.9101, 1.89334, 1.89334, 1.87734, 1.86342, 1.86342, 1.85075, 1.85075, 1.83985, 1.83684, 1.83684, 1.82915, 1.81832, 1.81832, 1.81215, 1.81215, 1.7998, 1.79524, 1.79524, 1.78568, 1.79989, 1.79989, 1.7973, 1.7973, 1.79591, 1.78468, 1.78468, 1.78037, 1.77394, 1.77394, 1.77198, 1.77198, 1.76736, 1.76875, 1.76875, 1.76221, 1.75729, 1.75729, 1.75397, 1.75397, 1.75229, 1.74918, 1.74918, 1.75064, 1.75643, 1.75643, 1.75765, 1.75765, 1.75765, 1.75765, 1.75765, 1.75765, 1.76345, 1.76345, 1.76345, 1.76345, 1.76345, 1.76345, 1.76345, 1.76901, 1.76901, 1.76901, 1.76901, 1.76901, 1.76901, 1.78291, 1.78291, 1.78291, 1.78291, 1.78291, 1.78291, 1.78291, 1.80009, 1.80009, 1.80009, 1.80009, 1.80009, 1.80009, 1.81064, 1.81064, 1.81064, 1.81064, 1.81064, 1.81064, 1.81765, 1.81765, 1.81765, 1.81765, 1.81765, 1.81765, 1.81765, 1.79549, 1.79549, 1.79549, 1.79549, 1.79549, 1.79549, 1.80455, 1.80455, 1.80455, 1.80455, 1.80455, 1.80455, 1.80455, 1.78912, 1.78912, 1.78912, 1.78912, 1.78912, 1.78912, 1.78501, 1.78501, 1.78501, 1.78501, 1.78501, 1.78501, 1.79512, 1.79512, 1.79512, 1.79512, 1.79512, 1.79512, 1.79512, 1.77138, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152};
+
+  double kaoncorrtab[] = {0, 0, 0, 0, 0, 0, 0, 8.43268, 8.43268, 3.30657, 3.30657, 2.5102, 2.16256, 2.16256, 2.03757, 2.27166, 2.27166, 2.70432, 2.70432, 4.06234, 4.69199, 4.69199, 4.13074, 3.75139, 3.75139, 3.48381, 3.48381, 3.29762, 3.15261, 3.15261, 3.03022, 2.91874, 2.91874, 2.82421, 2.82421, 2.7388, 2.65961, 2.65961, 2.58426, 2.5174, 2.5174, 2.45378, 2.45378, 2.39687, 2.34699, 2.34699, 2.30247, 2.25299, 2.25299, 2.22443, 2.22443, 2.18303, 2.16012, 2.16012, 2.13083, 2.12806, 2.12806, 2.11376, 2.11376, 2.09566, 2.07526, 2.07526, 2.05378, 2.03252, 2.03252, 2.02466, 2.02466, 2.00531, 1.98945, 1.98945, 1.97877, 1.97226, 1.97226, 1.95475, 1.95475, 1.94838, 1.9314, 1.9314, 1.92571, 1.96346, 1.96346, 1.92849, 1.92849, 1.92849, 1.92849, 1.92849, 1.92849, 1.90949, 1.90949, 1.90949, 1.90949, 1.90949, 1.90949, 1.90949, 1.88743, 1.88743, 1.88743, 1.88743, 1.88743, 1.88743, 1.87486, 1.87486, 1.87486, 1.87486, 1.87486, 1.87486, 1.87486, 1.87785, 1.87785, 1.87785, 1.87785, 1.87785, 1.87785, 1.8757, 1.8757, 1.8757, 1.8757, 1.8757, 1.8757, 1.87948, 1.87948, 1.87948, 1.87948, 1.87948, 1.87948, 1.87948, 1.86148, 1.86148, 1.86148, 1.86148, 1.86148, 1.86148, 1.84329, 1.84329, 1.84329, 1.84329, 1.84329, 1.84329, 1.84329, 1.83105, 1.83105, 1.83105, 1.83105, 1.83105, 1.83105, 1.81955, 1.81955, 1.81955, 1.81955, 1.81955, 1.81955, 1.79944, 1.79944, 1.79944, 1.79944, 1.79944, 1.79944, 1.79944, 1.79345, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.74958};
+
+  double allcorrtab[] = {0, 0, 0, 0, 0, 0, 0, 1.46883, 1.46883, 1.3528, 1.3528, 1.30939, 1.26936, 1.26936, 1.23645, 1.21359, 1.21359, 1.19759, 1.19759, 1.18565, 1.17772, 1.17772, 1.17203, 1.16739, 1.16739, 1.16398, 1.16398, 1.16201, 1.16065, 1.16065, 1.16012, 1.16009, 1.16009, 1.16044, 1.16044, 1.16104, 1.16139, 1.16139, 1.16134, 1.16278, 1.16278, 1.1631, 1.1631, 1.16227, 1.16152, 1.16152, 1.16066, 1.15984, 1.15984, 1.15932, 1.15932, 1.15912, 1.15818, 1.15818, 1.15877, 1.16754, 1.16754, 1.17075, 1.17075, 1.17047, 1.16995, 1.16995, 1.16885, 1.16845, 1.16845, 1.16824, 1.16824, 1.16771, 1.16704, 1.16704, 1.16681, 1.16723, 1.16723, 1.16819, 1.16819, 1.16811, 1.16974, 1.16974, 1.17217, 1.16759, 1.16759, 1.17376, 1.17376, 1.17376, 1.17376, 1.17376, 1.17376, 1.18247, 1.18247, 1.18247, 1.18247, 1.18247, 1.18247, 1.18247, 1.18916, 1.18916, 1.18916, 1.18916, 1.18916, 1.18916, 1.19649, 1.19649, 1.19649, 1.19649, 1.19649, 1.19649, 1.19649, 1.20315, 1.20315, 1.20315, 1.20315, 1.20315, 1.20315, 1.20984, 1.20984, 1.20984, 1.20984, 1.20984, 1.20984, 1.21236, 1.21236, 1.21236, 1.21236, 1.21236, 1.21236, 1.21236, 1.21272, 1.21272, 1.21272, 1.21272, 1.21272, 1.21272, 1.21416, 1.21416, 1.21416, 1.21416, 1.21416, 1.21416, 1.21416, 1.21308, 1.21308, 1.21308, 1.21308, 1.21308, 1.21308, 1.21332, 1.21332, 1.21332, 1.21332, 1.21332, 1.21332, 1.21204, 1.21204, 1.21204, 1.21204, 1.21204, 1.21204, 1.21204, 1.21006, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2066};
+
+  fpTab = new double[190];
+  for(int i=0;i<190;i++)
+    fpTab[i]=pttab[i];
+
+  if(partType==kPion)
+    {
+      fCorrFactorTab = new double[190];
+      for(int i=0;i<190;i++)
+       fCorrFactorTab[i] = pioncorrtab[i];
+    }
+  else if(partType==kKaon)
+    {
+      fCorrFactorTab = new double[190];
+      for(int i=0;i<190;i++)
+       fCorrFactorTab[i] = kaoncorrtab[i];
+    }
+  else if(partType==kProton)
+    {
+      fCorrFactorTab = new double[190];
+      for(int i=0;i<190;i++)
+       fCorrFactorTab[i] = protoncorrtab[i];
+    }
+  else if(partType==kAll)
+    {
+      fCorrFactorTab = new double[190];
+      for(int i=0;i<190;i++)
+       fCorrFactorTab[i] = allcorrtab[i];
+    }
+}
+
+double AliFemtoCorrFctnDEtaDPhiCorrections::CalculateCorrectionWeight(double pT1, double pT2)
+{
+  
+    double w1=0., w2=0.;
+    if(pT1>0 && pT1<5 && pT2>0 && pT2<5)
+    {
+      if(pT1<pT2)
+       {
+          for (int piter = 0 ; piter<200 ; piter++)
+          { 
+        
+             if(pT1>= fpTab[piter] && pT1< fpTab[piter+1])
+              {
+                w1=fCorrFactorTab[piter];
+              }
+             if(pT2>= fpTab[piter] && pT2< fpTab[piter+1])
+             {
+                w2=fCorrFactorTab[piter];
+                break;
+             }
+          }
+       }
+       else if(pT1>pT2)
+       {
+          for (int piter = 0 ; piter<200 ; piter++)
+          {
+             if(pT2>= fpTab[piter] && pT2< fpTab[piter+1])
+                w2=fCorrFactorTab[piter];
+             if(pT1>= fpTab[piter] && pT1< fpTab[piter+1])
+             {
+                w1=fCorrFactorTab[piter];
+                break;
+             }
+          }
+       }
+       else //pT1==pT2
+       {
+          for (int piter = 0 ; piter<200 ; piter++)
+          {
+             if(pT1>= fpTab[piter] && pT1< fpTab[piter+1])
+             {
+                w1=fCorrFactorTab[piter];
+                w2=fCorrFactorTab[piter];
+                break;
+             }
+          }
+       }
+       return w1*w2;
+    }
+    else
+       return 0;
+   return 0;
+}
diff --git a/PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhiCorrections.h b/PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhiCorrections.h
new file mode 100644 (file)
index 0000000..9d13dcb
--- /dev/null
@@ -0,0 +1,98 @@
+////////////////////////////////////////////////////////////////////////////////
+//                                                                            //
+// AliFemtoCorrFctnDEtaDPhiCorrections - A correlation function that analyzes //
+// two particle correlations with respect to the azimuthal angle (phi)        //
+// and pseudorapidity (eta) difference                                        //
+//                                                                            //
+// Authors: Adam Kisiel Adam.Kisiel@cern.ch                                   //
+//                                                                            //
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef ALIFEMTOCORRFCTNDETADPHICORRECTIONS_H
+#define ALIFEMTOCORRFCTNDETADPHICORRECTIONS_H
+
+#include "TH1D.h"
+#include "TH2D.h"
+#include "THnSparse.h"
+#include "TFile.h"
+#include "AliFemtoCorrFctn.h"
+
+class AliFemtoCorrFctnDEtaDPhiCorrections : public AliFemtoCorrFctn {
+public:
+  enum CorrectionType {kNone=0, kPt=1, kEta=2};
+  enum ParticleType {kNoCorrection=0, kPion=1, kKaon=2, kProton=3, kAll=4};
+  typedef enum CorrectionType ReadCorrectionType;
+
+  AliFemtoCorrFctnDEtaDPhiCorrections(char* title, const int& aPhiBins, const int& aEtaBins);
+  AliFemtoCorrFctnDEtaDPhiCorrections(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn);
+  virtual ~AliFemtoCorrFctnDEtaDPhiCorrections();
+
+  AliFemtoCorrFctnDEtaDPhiCorrections& operator=(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn);
+
+  virtual AliFemtoString Report();
+  virtual void AddRealPair(AliFemtoPair* aPair);
+  virtual void AddMixedPair(AliFemtoPair* aPair);
+
+  virtual void Finish();
+  void SetDoPtAnalysis(int do2d);
+  void SetDoCorrections(bool doCorr);
+  void SetDoCorrectionsHist(CorrectionType doCorr);
+  double CalculateCorrectionWeight(double pT1, double pT2);
+  void LoadCorrectionTabFromFile(const char *pTtab, const char *corrTab);
+  void SetCorrectionTab(ParticleType partType);
+  
+  void WriteHistos();
+  virtual TList* GetOutputList();
+private:
+  
+  TH2D *fDPhiDEtaNumerator;          // Numerator of dEta dPhi function
+  TH2D *fDPhiDEtaDenominator;        // Denominator of dEta dPhi function
+
+  TH1D *fDPhiNumerator;              // Numerator of dPhi correlation
+  TH1D *fDPhiDenominator;            // Denominator of dPhi correlation
+
+  TH1D *fDCosNumerator;              // Numerator of colinearity correlation
+  TH1D *fDCosDenominator;            // Denominator of colinearity correlation
+
+  int   fDoPtAnalysis;               // set to 1 to do 2D Pt analysis
+
+  TH2D *fDPhiPtNumerator;            // Numerator of dPhi correlation vs. Pt min
+  TH2D *fDPhiPtDenominator;          // Denominator of dPhi correlation vs. Pt min
+
+  TH2D *fDCosPtNumerator;            // Numerator of colinearity correlation vs. Pt min
+  TH2D *fDCosPtDenominator;          // Denominator of colinearity correlation vs. Pt min
+
+  TH1D *fPhi;
+  TH1D *fEta;
+
+  TH2D *fYtYtNumerator;
+  TH2D *fYtYtDenominator; 
+
+  CorrectionType fIfCorrectionHist;
+  bool fIfCorrection;
+  THnSparseF *fPtCorrectionsNum;
+  THnSparseF *fPtCorrectionsDen;
+
+  THnSparseF *fEtaCorrectionsNum;
+  THnSparseF *fEtaCorrectionsDen;
+
+  double* fCorrFactorTab;
+  double* fpTab;
+  ParticleType fPartType; // particle type for calculations of correction factor
+
+  double fphiL;
+  double fphiT;
+
+
+
+
+
+
+#ifdef __ROOT__
+  ClassDef(AliFemtoCorrFctnDEtaDPhiCorrections, 1)
+#endif
+};
+
+
+#endif
+
index 11f6e83b6fe4c2865ed7b586cfc24624cb737ff4..864f6caa3f5df2897caac8b0e50e6b0e0e6f5c68 100644 (file)
@@ -937,29 +937,41 @@ bool AliFemtoESDTrackCut::IsKaonNSigma(float mom, float nsigmaTPCK, float nsigma
 //old
 bool AliFemtoESDTrackCut::IsKaonNSigma(float mom, float nsigmaTPCK, float nsigmaTOFK)
 {
-
-  if(mom<0.4)
-    {
-      if(nsigmaTOFK<-999.)
-       {
-         if(TMath::Abs(nsigmaTPCK)<2.0) return true;
-       }
-      else if(TMath::Abs(nsigmaTOFK)<3.0 && TMath::Abs(nsigmaTPCK)<3.0) return true;
-    }
-  else if(mom>=0.4 && mom<=0.6)
-    {
-      if(nsigmaTOFK<-999.)
-       {
-         if(TMath::Abs(nsigmaTPCK)<2.0) return true;
-       }
-      else if(TMath::Abs(nsigmaTOFK)<3.0 && TMath::Abs(nsigmaTPCK)<3.0) return true;
+  if (fNsigmaTPCTOF) {
+    if (mom > 0.5) {
+      //        if (TMath::Hypot( nsigmaTOFP, nsigmaTPCP )/TMath::Sqrt(2) < 3.0)
+      if (TMath::Hypot( nsigmaTOFK, nsigmaTPCK ) < fNsigma)
+       return true;
     }
-  else if(nsigmaTOFK<-999.)
-    {
-      return false;
+    else {
+      if (TMath::Abs(nsigmaTPCK) < fNsigma)
+       return true;
     }
-  else if(TMath::Abs(nsigmaTOFK)<3.0 && TMath::Abs(nsigmaTPCK)<3.0) return true;
+  }
+  else {
 
+    if(mom<0.4)
+      {
+       if(nsigmaTOFK<-999.)
+         {
+           if(TMath::Abs(nsigmaTPCK)<2.0) return true;
+         }
+       else if(TMath::Abs(nsigmaTOFK)<3.0 && TMath::Abs(nsigmaTPCK)<3.0) return true;
+      }
+    else if(mom>=0.4 && mom<=0.6)
+      {
+       if(nsigmaTOFK<-999.)
+         {
+           if(TMath::Abs(nsigmaTPCK)<2.0) return true;
+         }
+       else if(TMath::Abs(nsigmaTOFK)<3.0 && TMath::Abs(nsigmaTPCK)<3.0) return true;
+      }
+    else if(nsigmaTOFK<-999.)
+      {
+       return false;
+      }
+    else if(TMath::Abs(nsigmaTOFK)<3.0 && TMath::Abs(nsigmaTPCK)<3.0) return true;
+  }
   return false;
 }
 
@@ -967,24 +979,36 @@ bool AliFemtoESDTrackCut::IsKaonNSigma(float mom, float nsigmaTPCK, float nsigma
 
 bool AliFemtoESDTrackCut::IsPionNSigma(float mom, float nsigmaTPCPi, float nsigmaTOFPi)
 {
-  if(mom<0.65)
-    {
-      if(nsigmaTOFPi<-999.)
-       {
-         if(mom<0.35 && TMath::Abs(nsigmaTPCPi)<3.0) return true;
-         else if(mom<0.5 && mom>=0.35 && TMath::Abs(nsigmaTPCPi)<3.0) return true;
-         else if(mom>=0.5 && TMath::Abs(nsigmaTPCPi)<2.0) return true;
-         else return false;
-       }
-      else if(TMath::Abs(nsigmaTOFPi)<3.0 && TMath::Abs(nsigmaTPCPi)<3.0) return true;
+  if (fNsigmaTPCTOF) {
+    if (mom > 0.5) {
+      //        if (TMath::Hypot( nsigmaTOFP, nsigmaTPCP )/TMath::Sqrt(2) < 3.0)
+      if (TMath::Hypot( nsigmaTOFPi, nsigmaTPCPi ) < fNsigma)
+       return true;
     }
-  else if(nsigmaTOFPi<-999.)
-    {
-      return false;
+    else {
+      if (TMath::Abs(nsigmaTPCPi) < fNsigma)
+       return true;
     }
-  else if(mom<1.5 && TMath::Abs(nsigmaTOFPi)<3.0 && TMath::Abs(nsigmaTPCPi)<5.0) return true;
-  else if(mom>=1.5 && TMath::Abs(nsigmaTOFPi)<2.0 && TMath::Abs(nsigmaTPCPi)<5.0) return true;
-
+  }
+  else {
+    if(mom<0.65)
+      {
+       if(nsigmaTOFPi<-999.)
+         {
+           if(mom<0.35 && TMath::Abs(nsigmaTPCPi)<3.0) return true;
+           else if(mom<0.5 && mom>=0.35 && TMath::Abs(nsigmaTPCPi)<3.0) return true;
+           else if(mom>=0.5 && TMath::Abs(nsigmaTPCPi)<2.0) return true;
+           else return false;
+         }
+       else if(TMath::Abs(nsigmaTOFPi)<3.0 && TMath::Abs(nsigmaTPCPi)<3.0) return true;
+      }
+    else if(nsigmaTOFPi<-999.)
+      {
+       return false;
+      }
+    else if(mom<1.5 && TMath::Abs(nsigmaTOFPi)<3.0 && TMath::Abs(nsigmaTPCPi)<5.0) return true;
+    else if(mom>=1.5 && TMath::Abs(nsigmaTOFPi)<2.0 && TMath::Abs(nsigmaTPCPi)<5.0) return true;
+  }
   return false;
 }
 
@@ -993,7 +1017,7 @@ bool AliFemtoESDTrackCut::IsProtonNSigma(float mom, float nsigmaTPCP, float nsig
 {
 
   if (fNsigmaTPCTOF) {
-    if (mom > 0.8) {
+    if (mom > 0.5) {
 //        if (TMath::Hypot( nsigmaTOFP, nsigmaTPCP )/TMath::Sqrt(2) < 3.0)
         if (TMath::Hypot( nsigmaTOFP, nsigmaTPCP ) < fNsigma)
             return true;
index 4b4449880cacaf9f96c61972ed44b9d23dca40c6..414a7def91d13a61620d603b3e1552766b2df3ef 100755 (executable)
@@ -34,8 +34,8 @@
 
 #define PI 3.1415927
 #define G_Coeff 0.006399 // 2*pi*alpha*M_pion
-#define kappa3 0.1 // kappa3 Edgeworth coefficient (non-Gaussian features of C2)
-#define kappa4 0.5 // kappa4 Edgeworth coefficient (non-Gaussian features of C2)
+#define kappa3 0.15 // kappa3 Edgeworth coefficient (non-Gaussian features of C2)
+#define kappa4 0.32 // kappa4 Edgeworth coefficient (non-Gaussian features of C2)
 
 
 // Author: Dhevan Gangadharan
@@ -142,7 +142,8 @@ AliAnalysisTaskSE(),
   fNormQPairSwitch_E1E2(),
   fNormQPairSwitch_E1E3(),
   fNormQPairSwitch_E2E3(),
-  fMomResC2(0x0)
+  fMomResC2(0x0),
+  fWeightmuonCorrection(0x0)
 {
   // Default constructor
   for(Int_t mb=0; mb<fMbins; mb++){
@@ -313,7 +314,8 @@ AliFourPion::AliFourPion(const Char_t *name)
   fNormQPairSwitch_E1E2(),
   fNormQPairSwitch_E1E3(),
   fNormQPairSwitch_E2E3(),
-  fMomResC2(0x0)
+  fMomResC2(0x0),
+  fWeightmuonCorrection(0x0)
 {
   // Main constructor
   fAODcase=kTRUE;
@@ -488,7 +490,8 @@ AliFourPion::AliFourPion(const AliFourPion &obj)
     fNormQPairSwitch_E1E2(),
     fNormQPairSwitch_E1E3(),
     fNormQPairSwitch_E2E3(),
-    fMomResC2(obj.fMomResC2)
+    fMomResC2(obj.fMomResC2),
+    fWeightmuonCorrection(obj.fWeightmuonCorrection)
 {
   // Copy Constructor
   
@@ -583,6 +586,7 @@ AliFourPion &AliFourPion::operator=(const AliFourPion &obj)
   fKT3transition = obj.fKT3transition;
   fKT4transition = obj.fKT4transition;
   fMomResC2 = obj.fMomResC2;
+  fWeightmuonCorrection = obj.fWeightmuonCorrection;
   
   for(Int_t i=0; i<12; i++){
     fFSIss[i]=obj.fFSIss[i]; 
@@ -609,7 +613,8 @@ AliFourPion::~AliFourPion()
   if(fTempStruct) delete [] fTempStruct;
   if(fRandomNumber) delete fRandomNumber;
   if(fMomResC2) delete fMomResC2;
+  if(fWeightmuonCorrection) delete fWeightmuonCorrection;
+
   for(Int_t j=0; j<kMultLimitPbPb; j++){
     if(fLowQPairSwitch_E0E0[j]) delete [] fLowQPairSwitch_E0E0[j];
     if(fLowQPairSwitch_E0E1[j]) delete [] fLowQPairSwitch_E0E1[j];
@@ -769,8 +774,8 @@ void AliFourPion::ParInit()
   //
   fQupperBoundWeights = 0.2;
   fQupperBoundQ2 = 2.0;
-  fQupperBoundQ3 = 0.5;
-  fQupperBoundQ4 = 0.5;
+  fQupperBoundQ3 = 0.6;
+  fQupperBoundQ4 = 0.6;
   fQbinsQ2 = fQupperBoundQ2/0.005;
   fQbinsQ3 = fQupperBoundQ3/0.005;
   fQbinsQ4 = fQupperBoundQ4/0.005;
@@ -828,6 +833,7 @@ void AliFourPion::ParInit()
     SetFSICorrelations(fLEGO);// Read in 2-particle and 3-particle FSI correlations
     if(!fTabulatePairs) SetWeightArrays(fLEGO);// Set Weight Array
     if(!fMCcase && !fTabulatePairs) SetMomResCorrections(fLEGO);// Read Momentum resolution file
+    if(!fMCcase && !fTabulatePairs) SetMuonCorrections(fLEGO);// Read Muon corrections
   }
   
   /////////////////////////////////////////////
@@ -1169,22 +1175,22 @@ void AliFourPion::UserCreateOutputObjects()
                  // Muon correction histos
                  TString *nameMuonIdeal=new TString(namePC3->Data());
                  nameMuonIdeal->Append("_MuonIdeal");
-                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonIdeal = new TH2D(nameMuonIdeal->Data(),"", 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
-                 if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonIdeal);
+                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonIdeal = new TH3D(nameMuonIdeal->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
+                 if(mb==0 && edB==0 && term<4) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonIdeal);
                  TString *nameMuonSmeared=new TString(namePC3->Data());
                  nameMuonSmeared->Append("_MuonSmeared");
-                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonSmeared = new TH2D(nameMuonSmeared->Data(),"", 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
-                 if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonSmeared);
+                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonSmeared = new TH3D(nameMuonSmeared->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
+                 if(mb==0 && edB==0 && term<4) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonSmeared);
                  //
                  TString *nameMuonPionK3=new TString(namePC3->Data());
                  nameMuonPionK3->Append("_MuonPionK3");
-                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonPionK3 = new TH2D(nameMuonPionK3->Data(),"", 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
-                 if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonPionK3);
+                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonPionK3 = new TH3D(nameMuonPionK3->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
+                 if(mb==0 && edB==0 && term<4) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fMuonPionK3);
                  //
                  TString *namePionPionK3=new TString(namePC3->Data());
                  namePionPionK3->Append("_PionPionK3");
-                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fPionPionK3 = new TH2D(namePionPionK3->Data(),"", 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
-                 if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fPionPionK3);
+                 Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fPionPionK3 = new TH3D(namePionPionK3->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ3,0,fQupperBoundQ3);
+                 if(mb==0 && edB==0 && term<4) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].MB[mb].EDB[edB].ThreePT[term].fPionPionK3);
                  
                }// MCcase
                //
@@ -1243,7 +1249,7 @@ void AliFourPion::UserCreateOutputObjects()
                    Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fTwoPartNorm = new TH2D(nameTwoPartNorm->Data(),"", kDENtypes,0.5,kDENtypes+0.5, fQbinsQ4,0,fQupperBoundQ4);
                    fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fTwoPartNorm);
                  }
-
+                 
                  if(fMCcase==kTRUE){
                    // Momentum resolution correction histos
                    TString *nameMomResIdeal=new TString(namePC4->Data());
@@ -1257,22 +1263,22 @@ void AliFourPion::UserCreateOutputObjects()
                    // Muon correction histos
                    TString *nameMuonIdeal=new TString(namePC4->Data());
                    nameMuonIdeal->Append("_MuonIdeal");
-                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonIdeal = new TH2D(nameMuonIdeal->Data(),"", 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
-                   if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonIdeal);
+                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonIdeal = new TH3D(nameMuonIdeal->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
+                   if(mb==0 && edB==0 && term<12) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonIdeal);
                    TString *nameMuonSmeared=new TString(namePC4->Data());
                    nameMuonSmeared->Append("_MuonSmeared");
-                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonSmeared = new TH2D(nameMuonSmeared->Data(),"", 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
-                   if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonSmeared);
+                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonSmeared = new TH3D(nameMuonSmeared->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
+                   if(mb==0 && edB==0 && term<12) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonSmeared);
                    //
                    TString *nameMuonPionK4=new TString(namePC4->Data());
                    nameMuonPionK4->Append("_MuonPionK4");
-                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonPionK4 = new TH2D(nameMuonPionK4->Data(),"", 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
-                   if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonPionK4);
+                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonPionK4 = new TH3D(nameMuonPionK4->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
+                   if(mb==0 && edB==0 && term<12) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fMuonPionK4);
                    //
                    TString *namePionPionK4=new TString(namePC4->Data());
                    namePionPionK4->Append("_PionPionK4");
-                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fPionPionK4 = new TH2D(namePionPionK4->Data(),"", 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
-                   if(mb==0 && edB==0) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fPionPionK4);
+                   Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fPionPionK4 = new TH3D(namePionPionK4->Data(),"", 2,0.5,2.5, 11,0.5,11.5, fQbinsQ4,0,fQupperBoundQ4);
+                   if(mb==0 && edB==0 && term<12) fOutputList->Add(Charge1[c1].Charge2[c2].Charge3[c3].Charge4[c4].MB[mb].EDB[edB].FourPT[term].fPionPionK4);
                    
                  }// MCcase
                  
@@ -1352,6 +1358,9 @@ void AliFourPion::UserCreateOutputObjects()
   TH2D *fAvgQ23VersusQ3 = new TH2D("fAvgQ23VersusQ3","",10,0,0.1, 20,0,0.1);
   fOutputList->Add(fAvgQ23VersusQ3);
 
+  TH1D *fDistPionParents4 = new TH1D("fDistPionParents4","",4,0.5,4.5);
+  fOutputList->Add(fDistPionParents4);
+
   ////////////////////////////////////
   ///////////////////////////////////  
   
@@ -1836,7 +1845,12 @@ void AliFourPion::UserExec(Option_t *)
   Float_t Pparent4[4]={0};
   Float_t weight12=0, weight13=0, weight14=0, weight23=0, weight24=0, weight34=0;
   Float_t weight12Err=0, weight13Err=0, weight14Err=0, weight23Err=0, weight24Err=0, weight34Err=0;
-  Float_t weight12CC=0, weight13CC=0, weight14CC=0, weight23CC=0, weight24CC=0, weight34CC=0;
+  Float_t weight12CC[3]={0};
+  Float_t weight13CC[3]={0};
+  Float_t weight14CC[3]={0};
+  Float_t weight23CC[3]={0};
+  Float_t weight24CC[3]={0};
+  Float_t weight34CC[3]={0};
   Float_t weightTotal=0;//, weightTotalErr=0;
   Float_t qinv12MC=0, qinv13MC=0, qinv14MC=0, qinv23MC=0, qinv24MC=0, qinv34MC=0; 
   Float_t parentQinv12=0, parentQinv13=0, parentQinv14=0, parentQinv23=0, parentQinv24=0, parentQinv34=0;
@@ -1875,26 +1889,7 @@ void AliFourPion::UserExec(Option_t *)
     fNormQPairSwitch_E1E3[i]->Set(kMultLimitPbPb,fDefaultsCharSwitch);
     fNormQPairSwitch_E2E3[i]->Set(kMultLimitPbPb,fDefaultsCharSwitch);
   }
-  /*for(Int_t i=0; i<fMultLimit; i++) {
-      for(Int_t j=0; j<fMultLimit; j++) {
-       LowQPairSwitch_E0E0[i][j] = kFALSE;
-       LowQPairSwitch_E0E1[i][j] = kFALSE;
-       LowQPairSwitch_E0E2[i][j] = kFALSE;
-       LowQPairSwitch_E0E3[i][j] = kFALSE;
-       LowQPairSwitch_E1E2[i][j] = kFALSE;
-       LowQPairSwitch_E1E3[i][j] = kFALSE;
-       LowQPairSwitch_E2E3[i][j] = kFALSE;
-       //
-       NormQPairSwitch_E0E0[i][j] = kFALSE;
-       NormQPairSwitch_E0E1[i][j] = kFALSE;
-       NormQPairSwitch_E0E2[i][j] = kFALSE;
-       NormQPairSwitch_E0E3[i][j] = kFALSE;
-       NormQPairSwitch_E1E2[i][j] = kFALSE;
-       NormQPairSwitch_E1E3[i][j] = kFALSE;
-       NormQPairSwitch_E2E3[i][j] = kFALSE;
-      }
-      }
-    */
   
   //////////////////////////////////////////
   // make low-q pair storage and normalization-pair storage
@@ -1906,7 +1901,7 @@ void AliFourPion::UserExec(Option_t *)
       for (Int_t i=0; i<(fEvt+en1)->fNtracks; i++) {// 1st particle
        for (Int_t j=i+1; j<(fEvt+en2)->fNtracks; j++) {// 2nd particle
          
-                 
+         
          pVect1[0]=(fEvt+en1)->fTracks[i].fEaccepted; pVect2[0]=(fEvt+en2)->fTracks[j].fEaccepted;
          pVect1[1]=(fEvt+en1)->fTracks[i].fP[0];      pVect2[1]=(fEvt+en2)->fTracks[j].fP[0];
          pVect1[2]=(fEvt+en1)->fTracks[i].fP[1];      pVect2[2]=(fEvt+en2)->fTracks[j].fP[1];
@@ -1918,8 +1913,8 @@ void AliFourPion::UserExec(Option_t *)
          kT12 = sqrt(pow(pVect1[1]+pVect2[1],2) + pow(pVect1[2]+pVect2[2],2))/2.;
          SetFillBins2(ch1, ch2, bin1, bin2);
          
-         if(qinv12 < fQLowerCut) continue;// remove unwanted low-q pairs (also a type of track splitting/merging cut)
-         if(ch1 == ch2 && !fGeneratorOnly){
+         if(qinv12 < fQLowerCut && !fMCcase) continue;// remove unwanted low-q pairs (also a type of track splitting/merging cut)
+         if(ch1 == ch2 && !fGeneratorOnly && !fMCcase){
            if(!AcceptPair((fEvt+en1)->fTracks[i], (fEvt+en2)->fTracks[j])) {
              if(en1==0 && en2==0) ((TH1F*)fOutputList->FindObject("fRejectedPairs"))->Fill(qinv12);
              continue;
@@ -1979,7 +1974,7 @@ void AliFourPion::UserExec(Option_t *)
            if((kTbin>=fKbinsT) || (kYbin>=fKbinsY)) {cout<<"problem!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl; continue;}
            if(fGenerateSignal && en2==0) {
              Int_t chGroup2[2]={ch1,ch2};
-             Float_t WInput = MCWeight(chGroup2, fRMax, 0.7, qinv12, kT12);
+             Float_t WInput = MCWeight(chGroup2, fRMax, 0.65, qinv12, kT12);
              KT[kTbin].KY[kYbin].MB[fMbin].EDB[0].TwoPT[en2].fTerms2ThreeD->Fill(fabs(qout), fabs(qside), fabs(qlong), WInput);
            }else KT[kTbin].KY[kYbin].MB[fMbin].EDB[0].TwoPT[en2].fTerms2ThreeD->Fill(fabs(qout), fabs(qside), fabs(qlong));
          }
@@ -1987,13 +1982,6 @@ void AliFourPion::UserExec(Option_t *)
          //////////////////////////////////////////////////////////////////////////////
          
          if(qinv12 <= fQcut) {
-           /*if(en1==0 && en2==0) {LowQPairSwitch_E0E0[i][j] = kTRUE; PairCount[0]++;}
-           if(en1==0 && en2==1) {LowQPairSwitch_E0E1[i][j] = kTRUE; PairCount[1]++;}
-           if(en1==0 && en2==2) {LowQPairSwitch_E0E2[i][j] = kTRUE; PairCount[2]++;}
-           if(en1==0 && en2==3) {LowQPairSwitch_E0E3[i][j] = kTRUE; PairCount[3]++;}
-           if(en1==1 && en2==2) {LowQPairSwitch_E1E2[i][j] = kTRUE; PairCount[4]++;}
-           if(en1==1 && en2==3) {LowQPairSwitch_E1E3[i][j] = kTRUE; PairCount[5]++;}
-           if(en1==2 && en2==3) {LowQPairSwitch_E2E3[i][j] = kTRUE; PairCount[6]++;}*/
            if(en1==0 && en2==0) {fLowQPairSwitch_E0E0[i]->AddAt('1',j);}
            if(en1==0 && en2==1) {fLowQPairSwitch_E0E1[i]->AddAt('1',j);}
            if(en1==0 && en2==2) {fLowQPairSwitch_E0E2[i]->AddAt('1',j);}
@@ -2004,13 +1992,6 @@ void AliFourPion::UserExec(Option_t *)
            if(en1==2 && en2==3) {fLowQPairSwitch_E2E3[i]->AddAt('1',j);}
          }
          if((qinv12 >= fNormQcutLow) && (qinv12 < fNormQcutHigh)) {
-           /*if(en1==0 && en2==0) {NormQPairSwitch_E0E0[i][j] = kTRUE; NormPairCount[0]++;}
-           if(en1==0 && en2==1) {NormQPairSwitch_E0E1[i][j] = kTRUE; NormPairCount[1]++;}
-           if(en1==0 && en2==2) {NormQPairSwitch_E0E2[i][j] = kTRUE; NormPairCount[2]++;}
-           if(en1==0 && en2==3) {NormQPairSwitch_E0E3[i][j] = kTRUE; NormPairCount[3]++;}
-           if(en1==1 && en2==2) {NormQPairSwitch_E1E2[i][j] = kTRUE; NormPairCount[4]++;}
-           if(en1==1 && en2==3) {NormQPairSwitch_E1E3[i][j] = kTRUE; NormPairCount[5]++;}
-           if(en1==2 && en2==3) {NormQPairSwitch_E2E3[i][j] = kTRUE; NormPairCount[6]++;}*/
            if(en1==0 && en2==0) {fNormQPairSwitch_E0E0[i]->AddAt('1',j);}
            if(en1==0 && en2==1) {fNormQPairSwitch_E0E1[i]->AddAt('1',j);}
            if(en1==0 && en2==2) {fNormQPairSwitch_E0E2[i]->AddAt('1',j);}
@@ -2059,8 +2040,6 @@ void AliFourPion::UserExec(Option_t *)
          ch1 = Int_t(((fEvt)->fTracks[i].fCharge + 1)/2.);
          
          for (Int_t j=i+1; j<(fEvt+en2)->fNtracks; j++) {// 2nd particle
-           //if(en2==0) {if(!NormQPairSwitch_E0E0[i][j]) continue;}
-           //else {if(!NormQPairSwitch_E0E1[i][j]) continue;}
            if(en2==0) {if(fNormQPairSwitch_E0E0[i]->At(j)=='0') continue;}
            else {if(fNormQPairSwitch_E0E1[i]->At(j)=='0') continue;}
            
@@ -2070,16 +2049,6 @@ void AliFourPion::UserExec(Option_t *)
            ch2 = Int_t(((fEvt+en2)->fTracks[j].fCharge + 1)/2.);
            
            for (Int_t k=j+1; k<(fEvt+en3)->fNtracks; k++) {// 3rd particle
-             /*if(en3==0) {
-               if(!NormQPairSwitch_E0E0[i][k]) continue;
-               if(!NormQPairSwitch_E0E0[j][k]) continue;
-             }else if(en3==1){
-               if(!NormQPairSwitch_E0E1[i][k]) continue;
-               if(!NormQPairSwitch_E0E1[j][k]) continue;
-             }else{
-               if(!NormQPairSwitch_E0E2[i][k]) continue;
-               if(!NormQPairSwitch_E1E2[j][k]) continue;
-               }*/
              if(en3==0) {
                if(fNormQPairSwitch_E0E0[i]->At(k)=='0') continue;
                if(fNormQPairSwitch_E0E0[j]->At(k)=='0') continue;
@@ -2112,23 +2081,6 @@ void AliFourPion::UserExec(Option_t *)
              
              
              for (Int_t l=k+1; l<(fEvt+en4)->fNtracks; l++) {// 4th particle
-               /*if(en4==0){
-                 if(!NormQPairSwitch_E0E0[i][l]) continue;
-                 if(!NormQPairSwitch_E0E0[j][l]) continue;
-                 if(!NormQPairSwitch_E0E0[k][l]) continue;
-               }else if(en4==1){
-                 if(!NormQPairSwitch_E0E1[i][l]) continue;
-                 if(!NormQPairSwitch_E0E1[j][l]) continue;
-                 if(!NormQPairSwitch_E0E1[k][l]) continue;
-               }else if(en4==2){
-                 if(!NormQPairSwitch_E0E2[i][l]) continue;
-                 if(!NormQPairSwitch_E0E2[j][l]) continue;
-                 if(!NormQPairSwitch_E1E2[k][l]) continue;
-               }else{
-                 if(!NormQPairSwitch_E0E3[i][l]) continue;
-                 if(!NormQPairSwitch_E1E3[j][l]) continue;
-                 if(!NormQPairSwitch_E2E3[k][l]) continue;
-                 }*/
                if(en4==0){
                  if(fNormQPairSwitch_E0E0[i]->At(l)=='0') continue;
                  if(fNormQPairSwitch_E0E0[j]->At(l)=='0') continue;
@@ -2216,8 +2168,6 @@ void AliFourPion::UserExec(Option_t *)
 
            /////////////////////////////////////////////////////////////
            for (Int_t j=i+1; j<(fEvt+en2)->fNtracks; j++) {// 2nd particle
-             //if(en2==0) {if(!LowQPairSwitch_E0E0[i][j]) continue;}
-             //else {if(!LowQPairSwitch_E0E1[i][j]) continue;}
              if(en2==0) {if(fLowQPairSwitch_E0E0[i]->At(j)=='0') continue;}
              else {if(fLowQPairSwitch_E0E1[i]->At(j)=='0') continue;}
 
@@ -2311,8 +2261,8 @@ void AliFourPion::UserExec(Option_t *)
                    else rForQW=2;
                    
                    
-                   Charge1[bin1].Charge2[bin2].MB[fMbin].EDB[0].TwoPT[1].fMCqinv->Fill(qinv12MC, MCWeight(chGroup2, rForQW, 0.7, qinv12MC, 0.));// was 4,5
-                   Charge1[bin1].Charge2[bin2].MB[fMbin].EDB[0].TwoPT[1].fMCqinvQW->Fill(qinv12MC, qinv12MC*MCWeight(chGroup2, rForQW, 0.7, qinv12MC, 0.));// was 4,5
+                   Charge1[bin1].Charge2[bin2].MB[fMbin].EDB[0].TwoPT[1].fMCqinv->Fill(qinv12MC, MCWeight(chGroup2, rForQW, 0.65, qinv12MC, 0.));// was 4,5
+                   Charge1[bin1].Charge2[bin2].MB[fMbin].EDB[0].TwoPT[1].fMCqinvQW->Fill(qinv12MC, qinv12MC*MCWeight(chGroup2, rForQW, 0.65, qinv12MC, 0.));// was 4,5
                    // pion purity
                    Charge1[bin1].Charge2[bin2].MB[fMbin].EDB[0].TwoPT[1].fPIDpurityDen->Fill(kT12, qinv12);
                    Int_t SCNumber = 1;
@@ -2372,8 +2322,10 @@ void AliFourPion::UserExec(Option_t *)
                              Float_t WInput = 1.0;
                              if(term==1) {
                                WInput = MCWeight(chGroup2, Rvalue, 1.0, parentQinv12, 0.);
+                             }else{
                                muonPionK12 = 1.0; pionPionK12=1.0;
                              }
+                             
                              Charge1[bin1].Charge2[bin2].MB[0].EDB[0].TwoPT[term-1].fMuonSmeared->Fill(Rvalue, qinv12MC, WInput);
                              Charge1[bin1].Charge2[bin2].MB[0].EDB[0].TwoPT[term-1].fMuonIdeal->Fill(Rvalue, parentQinv12, WInput);
                              Charge1[bin1].Charge2[bin2].MB[0].EDB[0].TwoPT[term-1].fMuonPionK2->Fill(Rvalue, qinv12MC, muonPionK12);
@@ -2391,7 +2343,7 @@ void AliFourPion::UserExec(Option_t *)
                    // momentum resolution
                    for(Int_t Riter=0; Riter<fRVALUES; Riter++){
                      Float_t Rvalue = 5+Riter;
-                     Float_t WInput = MCWeight(chGroup2, Rvalue, 0.7, qinv12MC, 0.);
+                     Float_t WInput = MCWeight(chGroup2, Rvalue, 0.65, qinv12MC, 0.);
                      Charge1[bin1].Charge2[bin2].MB[0].EDB[kTindex].TwoPT[0].fIdeal->Fill(Rvalue, qinv12MC, WInput);
                      Charge1[bin1].Charge2[bin2].MB[0].EDB[kTindex].TwoPT[1].fIdeal->Fill(Rvalue, qinv12MC);
                      Charge1[bin1].Charge2[bin2].MB[0].EDB[kTindex].TwoPT[0].fSmeared->Fill(Rvalue, qinv12, WInput);
@@ -2406,16 +2358,6 @@ void AliFourPion::UserExec(Option_t *)
 
              /////////////////////////////////////////////////////////////
              for (Int_t k=j+1; k<(fEvt+en3)->fNtracks; k++) {// 3rd particle
-               /*if(en3==0) {
-                 if(!LowQPairSwitch_E0E0[i][k]) continue;
-                 if(!LowQPairSwitch_E0E0[j][k]) continue;
-               }else if(en3==1){
-                 if(!LowQPairSwitch_E0E1[i][k]) continue;
-                 if(!LowQPairSwitch_E0E1[j][k]) continue;
-               }else{
-                 if(!LowQPairSwitch_E0E2[i][k]) continue;
-                 if(!LowQPairSwitch_E1E2[j][k]) continue;
-                 }*/
                if(en3==0) {
                  if(fLowQPairSwitch_E0E0[i]->At(k)=='0') continue;
                  if(fLowQPairSwitch_E0E0[j]->At(k)=='0') continue;
@@ -2498,6 +2440,7 @@ void AliFourPion::UserExec(Option_t *)
                  }else{
                    
                    Float_t MomResCorr12=1.0, MomResCorr13=1.0, MomResCorr23=1.0;
+                   Float_t MuonCorr12=1.0, MuonCorr13=1.0, MuonCorr23=1.0;
                    if(!fGenerateSignal && !fMCcase) {
                      Int_t momBin12 = fMomResC2->GetYaxis()->FindBin(qinv12);
                      Int_t momBin13 = fMomResC2->GetYaxis()->FindBin(qinv13);
@@ -2508,28 +2451,60 @@ void AliFourPion::UserExec(Option_t *)
                      MomResCorr12 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin12);
                      MomResCorr13 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin13);
                      MomResCorr23 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin23);
+                     MuonCorr12 = fWeightmuonCorrection->GetBinContent(rBinForTPNMomRes, momBin12);
+                     MuonCorr13 = fWeightmuonCorrection->GetBinContent(rBinForTPNMomRes, momBin13);
+                     MuonCorr23 = fWeightmuonCorrection->GetBinContent(rBinForTPNMomRes, momBin23);
                    }
-                  
-                   weight12CC = ((weight12+1)*MomResCorr12 - ffcSq*FSICorr12 - (1-ffcSq));
-                   weight12CC /= FSICorr12*ffcSq;
-                   weight13CC = ((weight13+1)*MomResCorr13 - ffcSq*FSICorr13 - (1-ffcSq));
-                   weight13CC /= FSICorr13*ffcSq;
-                   weight23CC = ((weight23+1)*MomResCorr23 - ffcSq*FSICorr23 - (1-ffcSq));
-                   weight23CC /= FSICorr23*ffcSq;
-
-                   if(weight12CC < 0 || weight13CC < 0 || weight23CC < 0) {// C2^QS can never be less than unity
+                   // no MRC, no Muon Correction
+                   weight12CC[0] = ((weight12+1) - ffcSq*FSICorr12 - (1-ffcSq));
+                   weight12CC[0] /= FSICorr12*ffcSq;
+                   weight13CC[0] = ((weight13+1) - ffcSq*FSICorr13 - (1-ffcSq));
+                   weight13CC[0] /= FSICorr13*ffcSq;
+                   weight23CC[0] = ((weight23+1) - ffcSq*FSICorr23 - (1-ffcSq));
+                   weight23CC[0] /= FSICorr23*ffcSq;
+                   if(weight12CC[0] > 0 && weight13CC[0] > 0 && weight23CC[0] > 0){
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[fMbin].EDB[KT3index].ThreePT[4].fTwoPartNorm->Fill(1, q3, sqrt(weight12CC[0]*weight13CC[0]*weight23CC[0]));
+                   }
+                   // no Muon Correction
+                   weight12CC[1] = ((weight12+1)*MomResCorr12 - ffcSq*FSICorr12 - (1-ffcSq));
+                   weight12CC[1] /= FSICorr12*ffcSq;
+                   weight13CC[1] = ((weight13+1)*MomResCorr13 - ffcSq*FSICorr13 - (1-ffcSq));
+                   weight13CC[1] /= FSICorr13*ffcSq;
+                   weight23CC[1] = ((weight23+1)*MomResCorr23 - ffcSq*FSICorr23 - (1-ffcSq));
+                   weight23CC[1] /= FSICorr23*ffcSq;
+                   if(weight12CC[1] > 0 && weight13CC[1] > 0 && weight23CC[1] > 0){
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[fMbin].EDB[KT3index].ThreePT[4].fTwoPartNorm->Fill(2, q3, sqrt(weight12CC[1]*weight13CC[1]*weight23CC[1]));
+                   }
+                   // both Corrections
+                   weight12CC[2] = ((weight12+1)*MomResCorr12 - ffcSq*FSICorr12 - (1-ffcSq));
+                   weight12CC[2] /= FSICorr12*ffcSq;
+                   weight12CC[2] *= MuonCorr12;
+                   weight13CC[2] = ((weight13+1)*MomResCorr13 - ffcSq*FSICorr13 - (1-ffcSq));
+                   weight13CC[2] /= FSICorr13*ffcSq;
+                   weight13CC[2] *= MuonCorr13;
+                   weight23CC[2] = ((weight23+1)*MomResCorr23 - ffcSq*FSICorr23 - (1-ffcSq));
+                   weight23CC[2] /= FSICorr23*ffcSq;
+                   weight23CC[2] *= MuonCorr23;
+                   if(weight12CC[2] < 0 || weight13CC[2] < 0 || weight23CC[2] < 0) {// C2^QS can never be less than unity
                      if(fMbin==0 && bin1==0) {
-                       ((TH1D*)fOutputList->FindObject("fTPNRejects3pion2"))->Fill(q3, sqrt(fabs(weight12CC*weight13CC*weight23CC)));
+                       ((TH1D*)fOutputList->FindObject("fTPNRejects3pion2"))->Fill(q3, sqrt(fabs(weight12CC[2]*weight13CC[2]*weight23CC[2])));
                      }
                    }else{
                      GoodTripletWeights = kTRUE;
                      /////////////////////////////////////////////////////
-                     weightTotal = sqrt(weight12CC*weight13CC*weight23CC);
+                     weightTotal = sqrt(weight12CC[2]*weight13CC[2]*weight23CC[2]);
                      /////////////////////////////////////////////////////
-                     Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[fMbin].EDB[KT3index].ThreePT[4].fTwoPartNorm->Fill(1, q3, weightTotal);
-                   }// 2nd r3 den check                      
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[fMbin].EDB[KT3index].ThreePT[4].fTwoPartNorm->Fill(3, q3, weightTotal);
+                     //
+                     // Full Weight reconstruction
+                     weightTotal *= 2.0;
+                     weightTotal += weight12CC[2] + weight13CC[2] + weight23CC[2];
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[fMbin].EDB[KT3index].ThreePT[4].fTwoPartNorm->Fill(4, q3, weightTotal);
+                   }// 2nd r3 den check
+                   
+                  
                  }// 1st r3 den check
-
+                 
                }// r3 den
                
 
@@ -2599,16 +2574,25 @@ void AliFourPion::UserExec(Option_t *)
                        ((TH2D*)fOutputList->FindObject("fAvgQ13VersusQ3"))->Fill(parentQ3, parentQinv13);
                        ((TH2D*)fOutputList->FindObject("fAvgQ23VersusQ3"))->Fill(parentQ3, parentQinv23);
 
-                       for(Int_t term=1; term<=5; term++){
+                       for(Int_t term=1; term<=4; term++){
+                         if(term==1) {}
+                         else if(term==2) {if(!pionParent1 && !pionParent2) continue;}
+                         else if(term==3) {if(!pionParent1 && !pionParent3) continue;}
+                         else {if(!pionParent2 && !pionParent3) continue;}
                          for(Int_t Riter=0; Riter<fRVALUES; Riter++){
                            Float_t Rvalue = 5+Riter;
                            Float_t WInput = MCWeight3(term, Rvalue, 1.0, chGroup3, parentQinvGroup3, parentkTGroup3);
                            Float_t WInputParentFSI = MCWeightFSI3(term, Rvalue, 1.0, chGroup3, parentQinvGroup3);
                            Float_t WInputFSI = MCWeightFSI3(term, Rvalue, 1.0, chGroup3, QinvMCGroup3);
-                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonSmeared->Fill(Rvalue, q3MC, WInput);
-                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonIdeal->Fill(Rvalue, parentQ3, WInput);
-                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonPionK3->Fill(Rvalue, q3MC, WInputFSI);
-                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fPionPionK3->Fill(Rvalue, parentQ3, WInputParentFSI);
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonSmeared->Fill(1, Rvalue, q3MC, WInput);
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonIdeal->Fill(1, Rvalue, parentQ3, WInput);
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonPionK3->Fill(1, Rvalue, q3MC, WInputFSI);
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fPionPionK3->Fill(1, Rvalue, parentQ3, WInputParentFSI);
+                           //
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonSmeared->Fill(2, Rvalue, q3MC);
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonIdeal->Fill(2, Rvalue, parentQ3);
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fMuonPionK3->Fill(2, Rvalue, q3MC);
+                           Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[0].ThreePT[term-1].fPionPionK3->Fill(2, Rvalue, parentQ3);
                          }// Riter
                        }// term loop
                    
@@ -2619,7 +2603,7 @@ void AliFourPion::UserExec(Option_t *)
                    for(Int_t term=1; term<=5; term++){
                      for(Int_t Riter=0; Riter<fRVALUES; Riter++){
                        Float_t Rvalue = 5+Riter;
-                       Float_t WInput = MCWeight3(term, Rvalue, 0.7, chGroup3, QinvMCGroup3, kTGroup3);
+                       Float_t WInput = MCWeight3(term, Rvalue, 0.65, chGroup3, QinvMCGroup3, kTGroup3);
                        Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[KT3index].ThreePT[term-1].fIdeal->Fill(Rvalue, q3MC, WInput);
                        Charge1[bin1].Charge2[bin2].Charge3[bin3].MB[0].EDB[KT3index].ThreePT[term-1].fSmeared->Fill(Rvalue, q3, WInput);
                      }
@@ -2628,28 +2612,11 @@ void AliFourPion::UserExec(Option_t *)
                  }// 3rd particle label check
                }// MCcase and ENsum==6
                
-
+               
                
 
-                 /////////////////////////////////////////////////////////////
+               /////////////////////////////////////////////////////////////
                for (Int_t l=k+1; l<(fEvt+en4)->fNtracks; l++) {// 4th particle
-                 /*if(en4==0){
-                   if(!LowQPairSwitch_E0E0[i][l]) continue;
-                   if(!LowQPairSwitch_E0E0[j][l]) continue;
-                   if(!LowQPairSwitch_E0E0[k][l]) continue;
-                 }else if(en4==1){
-                   if(!LowQPairSwitch_E0E1[i][l]) continue;
-                   if(!LowQPairSwitch_E0E1[j][l]) continue;
-                   if(!LowQPairSwitch_E0E1[k][l]) continue;
-                 }else if(en4==2){
-                   if(!LowQPairSwitch_E0E2[i][l]) continue;
-                   if(!LowQPairSwitch_E0E2[j][l]) continue;
-                   if(!LowQPairSwitch_E1E2[k][l]) continue;
-                 }else{
-                   if(!LowQPairSwitch_E0E3[i][l]) continue;
-                   if(!LowQPairSwitch_E1E3[j][l]) continue;
-                   if(!LowQPairSwitch_E2E3[k][l]) continue;
-                   }*/
                  if(en4==0){
                    if(fLowQPairSwitch_E0E0[i]->At(l)=='0') continue;
                    if(fLowQPairSwitch_E0E0[j]->At(l)=='0') continue;
@@ -2722,6 +2689,7 @@ void AliFourPion::UserExec(Option_t *)
                    GetWeight(pVect3, pVect4, weight34, weight34Err);
                    
                    Float_t MomResCorr14=1.0, MomResCorr24=1.0, MomResCorr34=1.0;
+                   Float_t MuonCorr14=1.0, MuonCorr24=1.0, MuonCorr34=1.0;
                    if(!fGenerateSignal && !fMCcase) {
                      Int_t momBin14 = fMomResC2->GetYaxis()->FindBin(qinv14);
                      Int_t momBin24 = fMomResC2->GetYaxis()->FindBin(qinv24);
@@ -2729,28 +2697,74 @@ void AliFourPion::UserExec(Option_t *)
                      if(momBin14 >= 20) momBin14 = 19;
                      if(momBin24 >= 20) momBin24 = 19;
                      if(momBin34 >= 20) momBin34 = 19;
-                       MomResCorr14 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin14);
-                       MomResCorr24 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin24);
-                       MomResCorr34 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin34);
+                     MomResCorr14 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin14);
+                     MomResCorr24 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin24);
+                     MomResCorr34 = fMomResC2->GetBinContent(rBinForTPNMomRes, momBin34);
+                     MuonCorr14 = fWeightmuonCorrection->GetBinContent(rBinForTPNMomRes, momBin14);
+                     MuonCorr24 = fWeightmuonCorrection->GetBinContent(rBinForTPNMomRes, momBin24);
+                     MuonCorr34 = fWeightmuonCorrection->GetBinContent(rBinForTPNMomRes, momBin34);
                    }
-                   weight14CC = ((weight14+1)*MomResCorr14 - ffcSq*FSICorr14 - (1-ffcSq));
-                   weight14CC /= FSICorr14*ffcSq;
-                   weight24CC = ((weight24+1)*MomResCorr24 - ffcSq*FSICorr24 - (1-ffcSq));
-                   weight24CC /= FSICorr24*ffcSq;
-                   weight34CC = ((weight34+1)*MomResCorr34 - ffcSq*FSICorr34 - (1-ffcSq));
-                   weight34CC /= FSICorr34*ffcSq;
-       
-                   if(weight14CC < 0 || weight24CC < 0 || weight34CC < 0) {// C2^QS can never be less than unity
-                     if(fMbin==0 && bin1==0) {
-                       ((TH1D*)fOutputList->FindObject("fTPNRejects4pion1"))->Fill(q4, sqrt(fabs(weight12CC*weight23CC*weight34CC*weight14CC)));
+                   
+                   // no MRC, no Muon Correction
+                   weight14CC[0] = ((weight14+1) - ffcSq*FSICorr14 - (1-ffcSq));
+                   weight14CC[0] /= FSICorr14*ffcSq;
+                   weight24CC[0] = ((weight24+1) - ffcSq*FSICorr24 - (1-ffcSq));
+                   weight24CC[0] /= FSICorr24*ffcSq;
+                   weight34CC[0] = ((weight34+1) - ffcSq*FSICorr34 - (1-ffcSq));
+                   weight34CC[0] /= FSICorr34*ffcSq;
+                   if(weight14CC[0] > 0 && weight24CC[0] > 0 && weight34CC[0] > 0 && weight12CC[0] > 0 && weight13CC[0] > 0 && weight23CC[0] > 0){
+                     weightTotal  = sqrt(weight12CC[0]*weight13CC[0]*weight24CC[0]*weight34CC[0]);
+                     weightTotal += sqrt(weight12CC[0]*weight14CC[0]*weight23CC[0]*weight34CC[0]);
+                     weightTotal += sqrt(weight13CC[0]*weight14CC[0]*weight23CC[0]*weight24CC[0]);
+                     weightTotal /= 3.;
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[fMbin].EDB[KT4index].FourPT[12].fTwoPartNorm->Fill(1, q4, weightTotal);
+                   }
+                   // no Muon Correction
+                   weight14CC[1] = ((weight14+1)*MomResCorr14 - ffcSq*FSICorr14 - (1-ffcSq));
+                   weight14CC[1] /= FSICorr14*ffcSq;
+                   weight24CC[1] = ((weight24+1)*MomResCorr24 - ffcSq*FSICorr24 - (1-ffcSq));
+                   weight24CC[1] /= FSICorr24*ffcSq;
+                   weight34CC[1] = ((weight34+1)*MomResCorr34 - ffcSq*FSICorr34 - (1-ffcSq));
+                   weight34CC[1] /= FSICorr34*ffcSq;
+                   if(weight14CC[1] > 0 && weight24CC[1] > 0 && weight34CC[1] > 0 && weight12CC[1] > 0 && weight13CC[1] > 0 && weight23CC[1] > 0){
+                     weightTotal  = sqrt(weight12CC[1]*weight13CC[1]*weight24CC[1]*weight34CC[1]);
+                     weightTotal += sqrt(weight12CC[1]*weight14CC[1]*weight23CC[1]*weight34CC[1]);
+                     weightTotal += sqrt(weight13CC[1]*weight14CC[1]*weight23CC[1]*weight24CC[1]);
+                     weightTotal /= 3.;
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[fMbin].EDB[KT4index].FourPT[12].fTwoPartNorm->Fill(2, q4, weightTotal);
+                   }
+                   // both corrections
+                   weight14CC[2] = ((weight14+1)*MomResCorr14 - ffcSq*FSICorr14 - (1-ffcSq));
+                   weight14CC[2] /= FSICorr14*ffcSq;
+                   weight14CC[2] *= MuonCorr14;
+                   weight24CC[2] = ((weight24+1)*MomResCorr24 - ffcSq*FSICorr24 - (1-ffcSq));
+                   weight24CC[2] /= FSICorr24*ffcSq;
+                   weight24CC[2] *= MuonCorr24;
+                   weight34CC[2] = ((weight34+1)*MomResCorr34 - ffcSq*FSICorr34 - (1-ffcSq));
+                   weight34CC[2] /= FSICorr34*ffcSq;
+                   weight34CC[2] *= MuonCorr34;
+                   if(weight14CC[2] < 0 || weight24CC[2] < 0 || weight34CC[2] < 0) {// C2^QS can never be less than unity
+                     if(fMbin==0 && bin1==0 && KT4index==0) {
+                       ((TH1D*)fOutputList->FindObject("fTPNRejects4pion1"))->Fill(q4, sqrt(fabs(weight12CC[2]*weight23CC[2]*weight34CC[2]*weight14CC[2])));
                      }
                    }else{
                      /////////////////////////////////////////////////////
-                     weightTotal  = sqrt(weight12CC*weight13CC*weight24CC*weight34CC) + sqrt(weight12CC*weight14CC*weight23CC*weight34CC);
-                     weightTotal += sqrt(weight13CC*weight14CC*weight23CC*weight24CC);
+                     weightTotal  = sqrt(weight12CC[2]*weight13CC[2]*weight24CC[2]*weight34CC[2]);
+                     weightTotal += sqrt(weight12CC[2]*weight14CC[2]*weight23CC[2]*weight34CC[2]);
+                     weightTotal += sqrt(weight13CC[2]*weight14CC[2]*weight23CC[2]*weight24CC[2]);
                      weightTotal /= 3.;
                      /////////////////////////////////////////////////////
-                     Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[fMbin].EDB[KT3index].FourPT[12].fTwoPartNorm->Fill(1, q4, weightTotal);
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[fMbin].EDB[KT4index].FourPT[12].fTwoPartNorm->Fill(3, q4, weightTotal);
+                     // Full Weight reconstruction
+                     weightTotal *= 6.0;
+                     weightTotal += weight12CC[2] + weight13CC[2] + weight14CC[2] + weight23CC[2] + weight24CC[2] + weight34CC[2];
+                     weightTotal += 2*sqrt(weight12CC[2]*weight13CC[2]*weight23CC[2]);
+                     weightTotal += 2*sqrt(weight12CC[2]*weight14CC[2]*weight24CC[2]);
+                     weightTotal += 2*sqrt(weight13CC[2]*weight14CC[2]*weight34CC[2]);
+                     weightTotal += 2*sqrt(weight23CC[2]*weight24CC[2]*weight34CC[2]);
+                     weightTotal += weight12CC[2]*weight34CC[2] + weight13CC[2]*weight24CC[2] + weight14CC[2]*weight23CC[2];
+                     Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[fMbin].EDB[KT4index].FourPT[12].fTwoPartNorm->Fill(4, q4, weightTotal);
                    }
                  }
                  /////////////////////////////////////////////////////////////
@@ -2786,8 +2800,8 @@ void AliFourPion::UserExec(Option_t *)
                      q4MC = sqrt(pow(q3MC,2) + pow(qinv14MC,2) +  pow(qinv24MC,2) +  pow(qinv34MC,2));
                      if(q4<0.1 && ch1==ch2 && ch1==ch3 && ch1==ch4) ((TH2D*)fOutputList->FindObject("fQ4Res"))->Fill(KT4, q4-q4MC);
                      if(ch1==ch2 && ch1==ch3 && ch1==ch4) {
-                       ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(1, qinv12MC); ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(2, qinv13MC); 
-                       ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(3, qinv14MC); ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(4, qinv23MC); 
+                       ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(1, qinv12MC); ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(2, qinv13MC);
+                       ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(3, qinv14MC); ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(4, qinv23MC);
                        ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(5, qinv24MC); ((TH2D*)fOutputList->FindObject("DistQinvMC4pion"))->Fill(6, qinv34MC);
                      }
                      Int_t chGroup4[4]={ch1,ch2,ch3,ch4};
@@ -2813,19 +2827,40 @@ void AliFourPion::UserExec(Option_t *)
                      if(parentQinv14 > 0.001 && parentQinv24 > 0.001 && parentQinv34 > 0.001 && parentQ4 < 0.5){
                        if(pionParent1 || pionParent2 || pionParent3 || pionParent4) {// want at least one pion-->muon
                         
+                         if(pionParent1) ((TH1D*)fOutputList->FindObject("fDistPionParents4"))->Fill(1);
+                         if(pionParent2) ((TH1D*)fOutputList->FindObject("fDistPionParents4"))->Fill(2);
+                         if(pionParent3) ((TH1D*)fOutputList->FindObject("fDistPionParents4"))->Fill(3);
+                         if(pionParent4) ((TH1D*)fOutputList->FindObject("fDistPionParents4"))->Fill(4);
                          Float_t parentQinvGroup4[6]={parentQinv12, parentQinv13, parentQinv14, parentQinv23, parentQinv24, parentQinv34};
                          Float_t parentkTGroup4[6]={0};
                          
-                         for(Int_t term=1; term<=13; term++){
+                         for(Int_t term=1; term<=12; term++){
+                           if(term==1) {}
+                           else if(term==2) {if(!pionParent1 && !pionParent2 && !pionParent3) continue;}
+                           else if(term==3) {if(!pionParent1 && !pionParent2 && !pionParent4) continue;}
+                           else if(term==4) {if(!pionParent1 && !pionParent3 && !pionParent4) continue;}
+                           else if(term==5) {if(!pionParent2 && !pionParent3 && !pionParent4) continue;}
+                           else if(term==6) {if(!pionParent1 && !pionParent2) continue;}
+                           else if(term==7) {if(!pionParent1 && !pionParent3) continue;}
+                           else if(term==8) {if(!pionParent1 && !pionParent4) continue;}
+                           else if(term==9) {if(!pionParent2 && !pionParent3) continue;}
+                           else if(term==10) {if(!pionParent2 && !pionParent4) continue;}
+                           else if(term==11) {if(!pionParent3 && !pionParent4) continue;}
+                           else {} 
                            for(Int_t Riter=0; Riter<fRVALUES; Riter++){
                              Float_t Rvalue = 5+Riter;
                              Float_t WInput = MCWeight4(term, Rvalue, 1.0, chGroup4, parentQinvGroup4, parentkTGroup4);
                              Float_t WInputParentFSI = MCWeightFSI4(term, Rvalue, 1.0, chGroup4, parentQinvGroup4);
                              Float_t WInputFSI = MCWeightFSI4(term, Rvalue, 1.0, chGroup4, QinvMCGroup4);
-                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonSmeared->Fill(Rvalue, q4MC, WInput);
-                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonIdeal->Fill(Rvalue, parentQ4, WInput);
-                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonPionK4->Fill(Rvalue, q4MC, WInputFSI);
-                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fPionPionK4->Fill(Rvalue, parentQ4, WInputParentFSI);
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonSmeared->Fill(1, Rvalue, q4MC, WInput);
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonIdeal->Fill(1, Rvalue, parentQ4, WInput);
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonPionK4->Fill(1, Rvalue, q4MC, WInputFSI);
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fPionPionK4->Fill(1, Rvalue, parentQ4, WInputParentFSI);
+                             //
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonSmeared->Fill(2, Rvalue, q4MC);
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonIdeal->Fill(2, Rvalue, parentQ4);
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fMuonPionK4->Fill(2, Rvalue, q4MC);
+                             Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[0].FourPT[term-1].fPionPionK4->Fill(2, Rvalue, parentQ4);
                            }// Riter
                          }// term loop
                          
@@ -2836,7 +2871,7 @@ void AliFourPion::UserExec(Option_t *)
                      for(Int_t term=1; term<=13; term++){
                        for(Int_t Riter=0; Riter<fRVALUES; Riter++){
                          Float_t Rvalue = 5+Riter;
-                         Float_t WInput = MCWeight4(term, Rvalue, 0.7, chGroup4, QinvMCGroup4, kTGroup4);
+                         Float_t WInput = MCWeight4(term, Rvalue, 0.65, chGroup4, QinvMCGroup4, kTGroup4);
                          Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[KT4index].FourPT[term-1].fIdeal->Fill(Rvalue, q4MC, WInput);
                          Charge1[bin1].Charge2[bin2].Charge3[bin3].Charge4[bin4].MB[0].EDB[KT4index].FourPT[term-1].fSmeared->Fill(Rvalue, q4, WInput);
                        }
@@ -2942,7 +2977,7 @@ Bool_t AliFourPion::AcceptPair(AliFourPionTrackStruct first, AliFourPionTrackStr
 
 }
 //________________________________________________________________________
-Float_t AliFourPion::GamovFactor(Int_t chargeBin1, Int_t chargeBin2, Float_t qinv)
+Float_t AliFourPion::Gamov(Int_t chargeBin1, Int_t chargeBin2, Float_t qinv)
 {
   Float_t arg = G_Coeff/qinv;
   
@@ -3393,8 +3428,8 @@ Float_t AliFourPion::MCWeight4(Int_t term, Float_t R, Float_t fcSq, Int_t c[4],
       else if(term==10) return ((1-fcSq) + fcSq*(1 + pow(EA24,2))*Kfactor24);
       else              return ((1-fcSq) + fcSq*(1 + pow(EA34,2))*Kfactor34);
     }else if(term==12){
-      Float_t C22 = ((1-fcSq) + fcSq*(1 + pow(EA12,2))*Kfactor12) - 1.0;
-      C22 *= ((1-fcSq) + fcSq*(1 + pow(EA34,2))*Kfactor34) - 1.0;
+      Float_t C22 = (1-fcSq) + fcSq*(1 + pow(EA12,2))*Kfactor12;
+      C22 *= (1-fcSq) + fcSq*(1 + pow(EA34,2))*Kfactor34;
       return C22;
     }else return 1.0;
     
@@ -3468,8 +3503,12 @@ Float_t AliFourPion::MCWeight4(Int_t term, Float_t R, Float_t fcSq, Int_t c[4],
        return C3;
       }else if(term==6 || term==11){
        return ((1-fcSq) + fcSq*(1 + pow(EA1,2))*Kpair1);// any SC pair will do
-      }else if(term !=12 && term !=13){
+      }else if(term!=12 && term !=13){
        return ((1-fcSq) + fcSq*Kpair3);// any MC pair will do
+      }else if(term==12){
+       Float_t C22 = (1-fcSq) + fcSq*(1 + pow(EA1,2))*Kpair1;
+       C22 *= (1-fcSq) + fcSq*(1 + pow(EA2,2))*Kpair2;
+       return C22;
       }else return 1.0;
     }
   }
@@ -3520,8 +3559,8 @@ Float_t AliFourPion::MCWeightFSI4(Int_t term, Float_t R, Float_t fcSq, Int_t c[4
       else if(term==10) return ((1-fcSq) + fcSq*Kfactor24);
       else return ((1-fcSq) + fcSq*Kfactor34);
     }else if(term==12){
-      Float_t C22 = ((1-fcSq) + fcSq*Kfactor12) - 1.0;
-      C22 *= ((1-fcSq) + fcSq*Kfactor34) - 1.0;
+      Float_t C22 = (1-fcSq) + fcSq*Kfactor12;
+      C22 *= (1-fcSq) + fcSq*Kfactor34;
       return C22;
     }else return 1.0;
     
@@ -3592,6 +3631,10 @@ Float_t AliFourPion::MCWeightFSI4(Int_t term, Float_t R, Float_t fcSq, Int_t c[4
        return ((1-fcSq) + fcSq*Kpair1);// any SC pair will do
       }else if(term !=12 && term !=13){
        return ((1-fcSq) + fcSq*Kpair3);// any MC pair will do
+      }else if(term==12){
+       Float_t C22 = (1-fcSq) + fcSq*Kpair1;
+       C22 *= (1-fcSq) + fcSq*Kpair2;
+       return C22;
       }else return 1.0;
     }
   }
@@ -3679,7 +3722,17 @@ Float_t AliFourPion::FSICorrelation(Int_t charge1, Int_t charge2, Float_t qinv){
   Int_t qbinL = fFSIss[fFSIindex]->GetXaxis()->FindBin(qinv-fFSIss[fFSIindex]->GetXaxis()->GetBinWidth(1)/2.);
   Int_t qbinH = qbinL+1;
   if(qbinL <= 0) return 1.0;
-  if(qbinH > fFSIss[fFSIindex]->GetNbinsX()) return 1.0;
+  if(qbinH > fFSIss[fFSIindex]->GetNbinsX()) {
+    if(charge1!=charge2) {
+      Float_t ScaleFac = (fFSIos[fFSIindex]->GetBinContent(fFSIos[fFSIindex]->GetNbinsX()-1) - 1);
+      ScaleFac /= (Gamov(charge1, charge2, fFSIos[fFSIindex]->GetXaxis()->GetBinCenter(fFSIos[fFSIindex]->GetNbinsX()-1)) - 1);
+      return ( (Gamov(charge1, charge2, qinv)-1)*ScaleFac + 1); 
+    }else{
+      Float_t ScaleFac = (fFSIss[fFSIindex]->GetBinContent(fFSIss[fFSIindex]->GetNbinsX()-1) - 1);
+      ScaleFac /= (Gamov(charge1, charge2, fFSIss[fFSIindex]->GetXaxis()->GetBinCenter(fFSIss[fFSIindex]->GetNbinsX()-1)) - 1);
+      return ( (Gamov(charge1, charge2, qinv)-1)*ScaleFac + 1);
+    }
+  }
   
   Float_t slope=0;
   if(charge1==charge2){
@@ -3816,3 +3869,24 @@ void AliFourPion::SetFSIindex(Float_t R){
     else fFSIindex = 9;
   }
 }
+//________________________________________________________________________
+void AliFourPion::SetMuonCorrections(Bool_t legoCase, TH2D *tempMuon){
+  if(legoCase){
+    cout<<"LEGO call to SetMuonCorrections"<<endl;
+    fWeightmuonCorrection = (TH2D*)tempMuon->Clone();
+    fWeightmuonCorrection->SetDirectory(0);
+  }else {
+    cout<<"non LEGO call to SetMuonCorrections"<<endl;
+    TFile *MuonFile=new TFile("MuonCorrection.root","READ");
+    if(!MuonFile->IsOpen()) {
+      cout<<"No Muon file found"<<endl;
+      AliFatal("No Muon file found.  Kill process.");
+    }else {cout<<"Good Muon File Found!"<<endl;}
+    
+    fWeightmuonCorrection = (TH2D*)MuonFile->Get("WeightmuonCorrection");
+    fWeightmuonCorrection->SetDirectory(0);
+    //
+    MuonFile->Close();
+  }
+  cout<<"Done reading Muon file"<<endl;
+}
index 58acd69fffec1b0292e14eaa0d557c139bb4b11b..70be5b64b61fb94f943ea04b256df00c4877e6df 100755 (executable)
@@ -56,7 +56,7 @@ class AliFourPion : public AliAnalysisTaskSE {
     kQbinsWeights = 40,
     kNDampValues = 16,
     kRmin = 5,// EW min radii 5 fm
-    kDENtypes = 3,
+    kDENtypes = 4,
   };
 
   static const Int_t fKbinsT   = 4;// Set fKstep as well !!!!
@@ -73,6 +73,7 @@ class AliFourPion : public AliAnalysisTaskSE {
   void SetWeightArrays(Bool_t legoCase=kTRUE, TH3F *histos[AliFourPion::fKbinsT][AliFourPion::fCentBins]=0x0);
   void SetMomResCorrections(Bool_t legoCase=kTRUE, TH2D *temp2D=0x0);
   void SetFSICorrelations(Bool_t legoCase=kTRUE, TH1D *tempss[12]=0x0, TH1D *tempos[12]=0x0);
+  void SetMuonCorrections(Bool_t legoCase=kTRUE, TH2D *tempMuon=0x0);
   //
   void SetMCdecision(Bool_t mc) {fMCcase = mc;}
   void SetTabulatePairs(Bool_t tabulate) {fTabulatePairs = tabulate;}
@@ -97,7 +98,7 @@ class AliFourPion : public AliAnalysisTaskSE {
 
   void ParInit();
   Bool_t AcceptPair(AliFourPionTrackStruct, AliFourPionTrackStruct);
-  Float_t GamovFactor(Int_t, Int_t, Float_t);
+  Float_t Gamov(Int_t, Int_t, Float_t);
   void Shuffle(Int_t*, Int_t, Int_t);
   Float_t GetQinv(Float_t[], Float_t[]);
   void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&);
@@ -142,10 +143,11 @@ class AliFourPion : public AliAnalysisTaskSE {
     TH2D *fIdeal; //!
     TH2D *fSmeared; //!
     //
-    TH2D *fMuonSmeared; //!
-    TH2D *fMuonIdeal; //!
-    TH2D *fMuonPionK3; //!
-    TH2D *fPionPionK3; //!
+    TH3D *fMuonSmeared; //!
+    TH3D *fMuonIdeal; //!
+    TH3D *fMuonPionK3; //!
+    TH3D *fPionPionK3; //!
+    //
     TH2D *fTwoPartNorm; //!
   };
   struct St7 {
@@ -178,10 +180,11 @@ class AliFourPion : public AliAnalysisTaskSE {
     TH2D *fIdeal; //!
     TH2D *fSmeared; //!
     //
-    TH2D *fMuonSmeared; //!
-    TH2D *fMuonIdeal; //!
-    TH2D *fMuonPionK4; //!
-    TH2D *fPionPionK4; //!
+    TH3D *fMuonSmeared; //!
+    TH3D *fMuonIdeal; //!
+    TH3D *fMuonPionK4; //!
+    TH3D *fPionPionK4; //!
+    //
     TH2D *fTwoPartNorm; //!
   };
   struct St_EDB {
@@ -332,10 +335,11 @@ class AliFourPion : public AliAnalysisTaskSE {
 
  public:
   TH2D *fMomResC2;
+  TH2D *fWeightmuonCorrection;
   TH1D *fFSIss[12];
   TH1D *fFSIos[12];
   TH3F *fNormWeight[fKbinsT][fCentBins];
-  
 
   ClassDef(AliFourPion, 1); 
 };
index 6eb681b5bc05617a83c57cba3fc6bbe32e0773fc..6c5775553a75d2af15e0395f3fccb1366d25f20e 100755 (executable)
@@ -17,8 +17,9 @@ AliFourPion *AddTaskFourPion(
                                 Float_t SigmaCutTOF=2.0,
                                 TString StWeightName="alien:///alice/cern.ch/user/d/dgangadh/WeightFile_FourPion.root",
                                 TString StMomResName="alien:///alice/cern.ch/user/d/dgangadh/MomResFile_FourPion.root",
-                                TString StKName="alien:///alice/cern.ch/user/d/dgangadh/KFile_FourPion.root"
-                                ) {
+                                TString StKName="alien:///alice/cern.ch/user/d/dgangadh/KFile_FourPion.root",
+                                TString StMuonName="alien:///alice/cern.ch/user/d/dgangadh/MuonCorrection_FourPion.root"
+                            ) {
   
   //===========================================================================
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
@@ -107,6 +108,17 @@ AliFourPion *AddTaskFourPion(
     momResHisto2D = (TH2D*)inputFileMomRes->Get("MRC_C2_SC");
     FourPionTask->SetMomResCorrections( kTRUE, momResHisto2D);
     ////////////////////////////////////////////////////
+
+    // Muon corrections
+    inputFileMuon = TFile::Open(StMuonName,"OLD");
+    if (!inputFileMuon){
+      cout << "Requested file:" << inputFileMuon << " was not opened. ABORT." << endl;
+      return NULL;
+    }
+    TH2D *muonHisto2D = 0;
+    muonHisto2D = (TH2D*)inputFileMuon->Get("WeightmuonCorrection");
+    FourPionTask->SetMuonCorrections( kTRUE, muonHisto2D);
+
   }// MCcase and TabulatePairs check
   
 
index 4f0e8bda964330148adcd591d80cdc0902c6fb41..45eb1a39b36aa8c17fed04a57a25baa6a289156f 100644 (file)
@@ -35,6 +35,7 @@
 #pragma link C++ class AliFemtoModelCorrFctnDirectYlm;
 #pragma link C++ class AliFemtoCorrFctnTPCNcls;
 #pragma link C++ class AliFemtoCorrFctnDEtaDPhi;
+#pragma link C++ class AliFemtoCorrFctnDEtaDPhiCorrections;
 #pragma link C++ class AliFemtoCutMonitorParticlePtPDG;
 #pragma link C++ class AliFemtoCutMonitorParticlePtPDGV0;
 #pragma link C++ class AliFemtoCutMonitorParticleEtCorr;
index eb3aa9930efc2375fa0db0a9da3d1da57e255ab7..c916c3f1d2422e24488784c3c7bf9ff27d0da0d3 100644 (file)
@@ -378,7 +378,8 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
     UInt_t valType[20] = {0};
     valType[0]=valTypeX;     valType[1]=valTypeY;     valType[2]=valTypeZ;     valType[3]=valTypeP;
     StoreVariables(hist, valType);
-    hist->SetUniqueID(valTypeW); // store weighting variable
+    // (this is overwrites the profile varaiable, no weighting at the moment for TProfile3D)
+    //    hist->SetUniqueID(valTypeW); // store weighting variable
 
     // store which variables are used
     for(Int_t i=0; i<4; i++)   fUsedVars->SetBitNumber(valType[i],kTRUE);
index 76dac4a5ad210b5eac206c24bd595516ef49f2df..f89914448ba17223b1b191e34124ac07b7aded06 100755 (executable)
@@ -53,8 +53,8 @@ AliAnaCaloTrackCorrBaseClass(),        fCalorimeter(""),
 
 //Switches
 fFillAllCellTimeHisto(kTRUE),
-fFillAllPosHisto(kFALSE),              fFillAllPosHisto2(kTRUE), 
-fFillAllTH12(kFALSE),                  fFillAllTH3(kTRUE), 
+fFillAllPosHisto(kFALSE),              fFillAllPosHisto2(kTRUE),
+fFillAllTH3(kFALSE),
 fFillAllTMHisto(kTRUE),                fFillAllPi0Histo(kTRUE),                 
 fCorrelate(kTRUE),                     fStudyBadClusters(kFALSE),               
 fStudyClustersAsymmetry(kFALSE),       fStudyExotic(kFALSE),
@@ -64,7 +64,8 @@ fStudyWeight(kFALSE),
 fNModules(12),                         fNRCU(2),
 fNMaxCols(48),                         fNMaxRows(24),  
 fTimeCutMin(-10000),                   fTimeCutMax(10000),
-fEMCALCellAmpMin(0),                   fPHOSCellAmpMin(0), 
+fCellAmpMin(0),                        fEMCALCellAmpMin(0),
+fPHOSCellAmpMin(0),                    fMinInvMassECut(0),
 
 // Exotic
 fExoNECrossCuts(0),                    fExoECrossCuts(),
@@ -114,8 +115,8 @@ fhDeltaCellClusterRE(0),               fhDeltaCellClusterXE(0),
 fhDeltaCellClusterYE(0),               fhDeltaCellClusterZE(0),
 
 // Cells
-fhNCells(0),                           fhAmplitude(0),             
-fhAmpId(0),                            fhEtaPhiAmp(0), 
+fhNCells(0),                           fhNCellsCutAmpMin(0),
+fhAmplitude(0),                        fhAmpId(0),                             fhEtaPhiAmp(0),
 fhTime(0),                             fhTimeVz(0),
 fhTimeId(0),                           fhTimeAmp(0),
 fhCellECross(0),
@@ -142,6 +143,8 @@ fhTimeAmpPerRCU(0),                    fhIMMod(0),
 // Weight studies
 fhECellClusterRatio(0),                fhECellClusterLogRatio(0),                 
 fhEMaxCellClusterRatio(0),             fhEMaxCellClusterLogRatio(0),                
+fhECellTotalRatio(0),                  fhECellTotalLogRatio(0),
+fhECellTotalRatioMod(0),               fhECellTotalLogRatioMod(0),
 
 fhExoL0ECross(0),                      fhExoL1ECross(0),
 
@@ -171,7 +174,7 @@ fhTrackMatchedDEtaPos(0),              fhTrackMatchedDPhiPos(0),               f
   //Default Ctor
   
   //Weight studies
-  for(Int_t i =0; i < 14; i++){
+  for(Int_t i =0; i < 12; i++){
     fhLambda0ForW0[i] = 0;
     //fhLambda1ForW0[i] = 0;
     
@@ -209,16 +212,15 @@ fhTrackMatchedDEtaPos(0),              fhTrackMatchedDPhiPos(0),               f
   
   // MC
   
-  for(Int_t i = 0; i < 6; i++){
-    
+  for(Int_t i = 0; i < 6; i++)
+  {
     fhRecoMCE[i][0]         = 0; fhRecoMCE[i][1]        = 0;  
     fhRecoMCPhi[i][0]       = 0; fhRecoMCPhi[i][1]      = 0;  
     fhRecoMCEta[i][0]       = 0; fhRecoMCEta[i][1]      = 0;  
     fhRecoMCDeltaE[i][0]    = 0; fhRecoMCDeltaE[i][1]   = 0;  
     fhRecoMCRatioE[i][0]    = 0; fhRecoMCRatioE[i][1]   = 0;  
     fhRecoMCDeltaPhi[i][0]  = 0; fhRecoMCDeltaPhi[i][1] = 0;  
-    fhRecoMCDeltaEta[i][0]  = 0; fhRecoMCDeltaEta[i][1] = 0;  
-    
+    fhRecoMCDeltaEta[i][0]  = 0; fhRecoMCDeltaEta[i][1] = 0;
   }
   
   //Initialize parameters
@@ -228,7 +230,7 @@ fhTrackMatchedDEtaPos(0),              fhTrackMatchedDPhiPos(0),               f
 //______________________________________________________________________________________________________________________
 void AliAnaCalorimeterQA::BadClusterHistograms(AliVCluster* clus, const TObjArray *caloClusters, AliVCaloCells * cells, 
                                                Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
-                                               Double_t tmax,  Double_t timeAverages[2] )
+                                               Double_t tmax)
 {
   //Bad cluster histograms
   
@@ -246,15 +248,16 @@ void AliAnaCalorimeterQA::BadClusterHistograms(AliVCluster* clus, const TObjArra
   
   //Clusters in event time differencem bad minus good
   
-  for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ ){
-    
+  for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
+  {
     AliVCluster* clus2 =  (AliVCluster*)caloClusters->At(iclus2);
     
     if(clus->GetID()==clus2->GetID()) continue;
     
     Float_t maxCellFraction2 = 0.;
     Int_t absIdMax2 = GetCaloUtils()->GetMaxEnergyCell(cells, clus2,maxCellFraction2);
-    if(IsGoodCluster(absIdMax2,cells)){
+    if(IsGoodCluster(absIdMax2,cells))
+    {
       Double_t tof2   = clus2->GetTOF()*1.e9;      
       fhBadClusterPairDiffTimeE  ->Fill(clus->E(), (tof-tof2));
     }
@@ -264,6 +267,10 @@ void AliAnaCalorimeterQA::BadClusterHistograms(AliVCluster* clus, const TObjArra
   // Max cell compared to other cells in cluster
   if(fFillAllCellTimeHisto) 
   {
+    // Get some time averages
+    Double_t timeAverages[2] = {0.,0.};
+    CalculateAverageTime(clus, cells, timeAverages);
+
     fhBadClusterMaxCellDiffAverageTime      ->Fill(clus->E(),tmax-timeAverages[0]);
     fhBadClusterMaxCellDiffWeightedTime     ->Fill(clus->E(),tmax-timeAverages[1]);
   }           
@@ -318,7 +325,6 @@ void AliAnaCalorimeterQA::CalculateAverageTime(AliVCluster *clus,
       ampMax   = amp;
 //      absIdMax = id;
     }
-    
   } // energy loop       
   
   // Calculate average time of cells in cluster and weighted average
@@ -329,6 +335,7 @@ void AliAnaCalorimeterQA::CalculateAverageTime(AliVCluster *clus,
   Int_t    id     =-1;
   Double_t w      = 0;
   Int_t    ncells = clus->GetNCells();
+  
   for (Int_t ipos = 0; ipos < ncells; ipos++) 
   {
     id   = clus ->GetCellsAbsId()[ipos];
@@ -363,13 +370,23 @@ void AliAnaCalorimeterQA::CellHistograms(AliVCaloCells *cells)
   // Plot histograms related to cells only
   
   Int_t ncells = cells->GetNumberOfCells();
+  if( ncells    > 0 ) fhNCells->Fill(ncells) ;
+
+  Int_t   ncellsCut = 0;
+  Float_t ecellsCut = 0;
   
-  if(GetDebug() > 0) 
+  if( GetDebug() > 0 )
     printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - %s cell entries %d\n", fCalorimeter.Data(), ncells );    
   
   //Init arrays and used variables
-  Int_t *nCellsInModule = new Int_t[fNModules];
-  for(Int_t imod = 0; imod < fNModules; imod++ ) nCellsInModule[imod] = 0;
+  Int_t   *nCellsInModule = new Int_t  [fNModules];
+  Float_t *eCellsInModule = new Float_t[fNModules];
+  
+  for(Int_t imod = 0; imod < fNModules; imod++ )
+  {
+    nCellsInModule[imod] = 0 ;
+    eCellsInModule[imod] = 0.;
+  }
   
   Int_t    icol   = -1;
   Int_t    irow   = -1;
@@ -380,9 +397,11 @@ void AliAnaCalorimeterQA::CellHistograms(AliVCaloCells *cells)
   Float_t  recalF = 1.;  
   Int_t    bc     = GetReader()->GetInputEvent()->GetBunchCrossNumber();
   
-  for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++) {      
+  for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
+  {
     if(GetDebug() > 2)  
       printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Cell : amp %f, absId %d \n", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell));
+   
     Int_t nModule = GetModuleNumberCellIndexes(cells->GetCellNumber(iCell),fCalorimeter, icol, irow, iRCU);
     if(GetDebug() > 2) 
       printf("\t module %d, column %d, row %d \n", nModule,icol,irow);
@@ -390,7 +409,8 @@ void AliAnaCalorimeterQA::CellHistograms(AliVCaloCells *cells)
     if(nModule < fNModules) 
     {  
       //Check if the cell is a bad channel
-      if(GetCaloUtils()->IsBadChannelsRemovalSwitchedOn()){
+      if(GetCaloUtils()->IsBadChannelsRemovalSwitchedOn())
+      {
         if(fCalorimeter=="EMCAL")
         {
           if(GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow)) continue;
@@ -425,19 +445,22 @@ void AliAnaCalorimeterQA::CellHistograms(AliVCaloCells *cells)
       if(fCalorimeter=="EMCAL" && 
          GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(id, cells, bc)) continue;
       
-      
       fhAmplitude->Fill(amp);
       fhAmpId    ->Fill(amp,id);
       fhAmpMod   ->Fill(amp,nModule);
       
-      if ((fCalorimeter=="EMCAL" && amp > fEMCALCellAmpMin) ||
-          (fCalorimeter=="PHOS"  && amp > fPHOSCellAmpMin )   ) 
+      //E cross for exotic cells
+      if(amp > 0.05)
       {
-        
-        //E cross for exotic cells
-        if(amp > 0.01) fhCellECross->Fill(amp,1-GetECross(id,cells)/amp);
-
-        nCellsInModule[nModule]++ ;
+        fhCellECross->Fill(amp,1-GetECross(id,cells)/amp);
+        ecellsCut+=amp ;
+        eCellsInModule[nModule]+=amp ;
+      }
+      
+      if ( amp > fCellAmpMin )
+      {
+        ncellsCut++    ;
+        nCellsInModule[nModule]++    ;
 
         Int_t icols = icol;
         Int_t irows = irow;
@@ -512,26 +535,94 @@ void AliAnaCalorimeterQA::CellHistograms(AliVCaloCells *cells)
         }//PHOS cells
       }//fill cell position histograms
       
-      if     (fCalorimeter=="EMCAL" && amp > fEMCALCellAmpMin) ncells ++ ;
-      else if(fCalorimeter=="PHOS"  && amp > fPHOSCellAmpMin)  ncells ++ ;
-      //else  
-      //  printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - no %s CELLS passed the analysis cut\n",fCalorimeter.Data());    
     }//nmodules
   }//cell loop
   
-  if(ncells > 0 )fhNCells->Fill(ncells) ; //fill the cells after the cut 
+  if( ncellsCut > 0 ) fhNCellsCutAmpMin->Fill(ncellsCut) ; //fill the cells after the cut on min amplitude and bad/exotic channels
   
   //Number of cells per module
-  for(Int_t imod = 0; imod < fNModules; imod++ ) {
-    
+  for(Int_t imod = 0; imod < fNModules; imod++ )
+  {
     if(GetDebug() > 1) 
       printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - module %d calo %s cells %d\n", imod, fCalorimeter.Data(), nCellsInModule[imod]); 
     
     fhNCellsMod->Fill(nCellsInModule[imod],imod) ;
-    
   }
   
+  // Check energy distribution in calorimeter for selected cells
+  if(fStudyWeight)
+  {
+    for (Int_t iCell = 0; iCell < cells->GetNumberOfCells(); iCell++)
+    {
+      if(GetDebug() > 2)
+        printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Cell : amp %f, absId %d \n", cells->GetAmplitude(iCell), cells->GetCellNumber(iCell));
+      
+      Int_t nModule = GetModuleNumberCellIndexes(cells->GetCellNumber(iCell),fCalorimeter, icol, irow, iRCU);
+      if(GetDebug() > 2)
+        printf("\t module %d, column %d, row %d \n", nModule,icol,irow);
+      
+      if(nModule < fNModules)
+      {
+        //Check if the cell is a bad channel
+        if(GetCaloUtils()->IsBadChannelsRemovalSwitchedOn())
+        {
+          if(fCalorimeter=="EMCAL")
+          {
+            if(GetCaloUtils()->GetEMCALChannelStatus(nModule,icol,irow)) continue;
+          }
+          else
+          {
+            if(GetCaloUtils()->GetPHOSChannelStatus(nModule,icol,irow) ) continue;
+          }
+        } // use bad channel map
+        
+        amp     = cells->GetAmplitude(iCell)*recalF;
+        time    = cells->GetTime(iCell);
+        id      = cells->GetCellNumber(iCell);
+        
+        // Amplitude recalibration if set
+        GetCaloUtils()->RecalibrateCellAmplitude(amp,  fCalorimeter, id);
+        
+        // Time recalibration if set
+        GetCaloUtils()->RecalibrateCellTime     (time, fCalorimeter, id, GetReader()->GetInputEvent()->GetBunchCrossNumber());
+        
+        //Transform time to ns
+        time *= 1.0e9;
+        
+        if(time < fTimeCutMin || time > fTimeCutMax)
+        {
+          if(GetDebug() > 0 )
+            printf("AliAnaCalorimeterQA - Remove cell with Time %f\n",time);
+          continue;
+        }
+        
+        // Remove exotic cells, defined only for EMCAL
+        if(fCalorimeter=="EMCAL" &&
+           GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(id, cells, bc)) continue;
+        
+        //E cross for exotic cells
+        if(amp > 0.05)
+        {
+          if(ecellsCut > 0)
+          {
+            Float_t ratio    = amp/ecellsCut;
+            fhECellTotalRatio    ->Fill(ecellsCut,           ratio );
+            fhECellTotalLogRatio ->Fill(ecellsCut,TMath::Log(ratio));
+          }
+          
+          if(eCellsInModule[nModule] > 0)
+          {
+            Float_t ratioMod = amp/eCellsInModule[nModule];
+            fhECellTotalRatioMod   [nModule]->Fill(eCellsInModule[nModule],           ratioMod );
+            fhECellTotalLogRatioMod[nModule]->Fill(eCellsInModule[nModule],TMath::Log(ratioMod));
+          }
+        }// amp > 0.5
+      }// nMod > 0 < Max
+    } // cell loop
+  } // weight studies
+  
   delete [] nCellsInModule;
+  delete [] eCellsInModule;
   
 }
 
@@ -540,7 +631,6 @@ void AliAnaCalorimeterQA::CellInClusterPositionHistograms(AliVCluster* clus)
 {
   // Fill histograms releated to cell position
   
-  
   Int_t nCaloCellsPerCluster = clus->GetNCells();
   UShort_t * indexList = clus->GetCellsAbsId();
   Float_t pos[3];
@@ -548,8 +638,8 @@ void AliAnaCalorimeterQA::CellInClusterPositionHistograms(AliVCluster* clus)
   Float_t clEnergy = clus->E();
   
   //Loop on cluster cells
-  for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++) {
-    
+  for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++)
+  {
     // printf("Index %d\n",ipos);
     Int_t absId  = indexList[ipos]; 
     
@@ -575,7 +665,8 @@ void AliAnaCalorimeterQA::CellInClusterPositionHistograms(AliVCluster* clus)
       fhDeltaCellClusterRE     ->Fill(r-rcell, clEnergy)  ;                    
       
     }//EMCAL and its matrices are available
-    else if(fCalorimeter=="PHOS" && GetCaloUtils()->IsPHOSGeoMatrixSet()){
+    else if(fCalorimeter=="PHOS" && GetCaloUtils()->IsPHOSGeoMatrixSet())
+    {
       TVector3 xyz;
       Int_t relId[4], module;
       Float_t xCell, zCell;
@@ -610,7 +701,7 @@ void AliAnaCalorimeterQA::ClusterAsymmetryHistograms(AliVCluster* clus, Int_t ab
   // Study the shape of the cluster in cell units terms
   
   //No use to study clusters with less than 4 cells
-  if(clus->GetNCells() <=3 ) return;
+  if( clus->GetNCells() <= 3 ) return;
   
   Int_t dIeta = 0;
   Int_t dIphi = 0;
@@ -627,10 +718,12 @@ void AliAnaCalorimeterQA::ClusterAsymmetryHistograms(AliVCluster* clus, Int_t ab
     
     if(dIphi < TMath::Abs(iphi-iphiMax)) dIphi = TMath::Abs(iphi-iphiMax);
     
-    if(smMax==sm){
+    if(smMax==sm)
+    {
       if(dIeta < TMath::Abs(ieta-ietaMax)) dIeta = TMath::Abs(ieta-ietaMax);
     }
-    else {
+    else
+    {
       Int_t ietaShift    = ieta;
       Int_t ietaMaxShift = ietaMax;
       if (ieta > ietaMax)  ietaMaxShift+=48;
@@ -666,7 +759,8 @@ void AliAnaCalorimeterQA::ClusterAsymmetryHistograms(AliVCluster* clus, Int_t ab
     // Origin of  clusters
     Int_t  nLabel = clus->GetNLabels();
     Int_t* labels = clus->GetLabels();
-    if(IsDataMC()){
+    if(IsDataMC())
+    {
       Int_t tag = GetMCAnalysisUtils()->CheckOrigin(labels,nLabel, GetReader());
       if(   GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPhoton) && 
          !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPi0)    && 
@@ -702,7 +796,7 @@ void AliAnaCalorimeterQA::ClusterAsymmetryHistograms(AliVCluster* clus, Int_t ab
 //__________________________________________________________________________________________________________________
 void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *caloClusters, AliVCaloCells * cells,
                                             Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
-                                            Double_t tmax,  Double_t timeAverages[2])
+                                            Double_t tmax)
 {
   //Fill CaloCluster related histograms
   
@@ -719,13 +813,13 @@ void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *
   if(fStudyClustersAsymmetry) ClusterAsymmetryHistograms(clus,absIdMax,kTRUE);
   
   //Clusters in event time difference
-  for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ ){
-    
+  for(Int_t iclus2 = 0; iclus2 < caloClusters->GetEntriesFast(); iclus2++ )
+  {
     AliVCluster* clus2 =  (AliVCluster*) caloClusters->At(iclus2);
     
-    if(clus->GetID()==clus2->GetID()) continue;
+    if( clus->GetID() == clus2->GetID() ) continue;
     
-    if(clus->GetM02() > 0.01 && clus2->GetM02() > 0.01) 
+    if( clus->GetM02() > 0.01 && clus2->GetM02() > 0.01 )
     {
       Double_t tof2   = clus2->GetTOF()*1.e9;          
       fhClusterPairDiffTimeE  ->Fill(clus->E(), tof-tof2);
@@ -735,12 +829,16 @@ void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *
   Int_t    nModule = GetModuleNumber(clus);
   Int_t    nCaloCellsPerCluster = clus->GetNCells();
   
-  if(nCaloCellsPerCluster > 1){
-    
+  if(nCaloCellsPerCluster > 1)
+  {
     // check time of cells respect to max energy cell
     
     if(fFillAllCellTimeHisto) 
     {
+      // Get some time averages
+      Double_t timeAverages[2] = {0.,0.};
+      CalculateAverageTime(clus, cells, timeAverages);
+
       fhClusterMaxCellDiffAverageTime      ->Fill(clus->E(),tmax-timeAverages[0]);
       fhClusterMaxCellDiffWeightedTime     ->Fill(clus->E(),tmax-timeAverages[1]);
     }
@@ -748,7 +846,7 @@ void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *
     for (Int_t ipos = 0; ipos < nCaloCellsPerCluster; ipos++) 
     {
       Int_t absId  = clus->GetCellsAbsId()[ipos];             
-      if(absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01) continue;
+      if( absId == absIdMax || cells->GetCellAmplitude(absIdMax) < 0.01 ) continue;
       
       Float_t frac = cells->GetCellAmplitude(absId)/cells->GetCellAmplitude(absIdMax);            
       fhClusterMaxCellCloseCellRatio->Fill(clus->E(),frac);
@@ -768,7 +866,6 @@ void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *
     
   }//check time and energy of cells respect to max energy cell if cluster of more than 1 cell
   
-  
   // Get vertex for photon momentum calculation and event selection
   Double_t v[3] = {0,0,0}; //vertex ;
   //GetReader()->GetVertex(v); // 
@@ -788,11 +885,10 @@ void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *
   
   fhE     ->Fill(e);   
   if(nModule >=0 && nModule < fNModules) fhEMod->Fill(e,nModule);
-  if(fFillAllTH12){
-    fhPt     ->Fill(pt);
-    fhPhi    ->Fill(phi);
-    fhEta    ->Fill(eta);
-  }
+  
+  fhPt     ->Fill(pt);
+  fhPhi    ->Fill(phi);
+  fhEta    ->Fill(eta);
   
   if(fFillAllTH3)
     fhEtaPhiE->Fill(eta,phi,e);
@@ -801,8 +897,8 @@ void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *
   fhNCellsPerCluster   ->Fill(e, nCaloCellsPerCluster);
 
   //Position
-  if(fFillAllPosHisto2){
-    
+  if(fFillAllPosHisto2)
+  {
     Float_t pos[3] ;     
     clus->GetPosition(pos);
     
@@ -820,7 +916,7 @@ void AliAnaCalorimeterQA::ClusterHistograms(AliVCluster* clus, const TObjArray *
     fhRNCells->Fill(rxyz  ,nCaloCellsPerCluster);
   }
   
-  if(nModule >=0 && nModule < fNModules) fhNCellsPerClusterMod[nModule]->Fill(e, nCaloCellsPerCluster);
+  if( nModule >= 0 && nModule < fNModules ) fhNCellsPerClusterMod[nModule]->Fill(e, nCaloCellsPerCluster);
   
 }
 
@@ -850,8 +946,8 @@ void AliAnaCalorimeterQA::ClusterLoopHistograms(const TObjArray *caloClusters,
     printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - In %s there are %d clusters \n", fCalorimeter.Data(), nCaloClusters);
   
   // Loop over CaloClusters
-  for(Int_t iclus = 0; iclus < nCaloClusters; iclus++){
-    
+  for(Int_t iclus = 0; iclus < nCaloClusters; iclus++)
+  {
     if(GetDebug() > 0) 
       printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - cluster: %d/%d, data %d \n",
              iclus+1,nCaloClusters,GetReader()->GetDataType());
@@ -864,7 +960,7 @@ void AliAnaCalorimeterQA::ClusterLoopHistograms(const TObjArray *caloClusters,
     
     //Cut on time of clusters
     Double_t tof = clus->GetTOF()*1.e9;
-    if(tof < fTimeCutMin || tof > fTimeCutMax)
+    if( tof < fTimeCutMin || tof > fTimeCutMax )
     { 
       if(GetDebug() > 0 )printf("AliAnaCalorimeterQA - Remove cluster with TOF %f\n",tof);
       continue;
@@ -891,10 +987,6 @@ void AliAnaCalorimeterQA::ClusterLoopHistograms(const TObjArray *caloClusters,
     // Cluster mathed with track?
     matched = GetCaloPID()->IsTrackMatched(clus,GetCaloUtils(), GetReader()->GetInputEvent());
     
-    // Get some time averages
-    Double_t averTime[4] = {0.,0.,0.,0.};
-    CalculateAverageTime(clus, cells, averTime);
-    
     //Get time of max cell
     Double_t tmax  = cells->GetCellTime(absIdMax);
     GetCaloUtils()->RecalibrateCellTime(tmax, fCalorimeter, absIdMax,GetReader()->GetInputEvent()->GetBunchCrossNumber());
@@ -902,7 +994,6 @@ void AliAnaCalorimeterQA::ClusterLoopHistograms(const TObjArray *caloClusters,
     
     // Fill histograms related to single cluster 
     
-    
     // Fill some histograms before applying the exotic cell / bad map cut
     fhNCellsPerClusterNoCut  ->Fill(clus->E(), nCaloCellsPerCluster);
     if(nModule >=0 && nModule < fNModules) fhNCellsPerClusterModNoCut[nModule]->Fill(clus->E(), nCaloCellsPerCluster);
@@ -923,20 +1014,17 @@ void AliAnaCalorimeterQA::ClusterLoopHistograms(const TObjArray *caloClusters,
     if(!goodCluster) 
     {
       BadClusterHistograms(clus, caloClusters, cells, absIdMax, 
-                           maxCellFraction, eCrossFrac, tmax, averTime); 
+                           maxCellFraction, eCrossFrac, tmax);
       continue;
     }
     
     ClusterHistograms(clus, caloClusters, cells, absIdMax, 
-                      maxCellFraction, eCrossFrac, tmax, averTime);    
+                      maxCellFraction, eCrossFrac, tmax);
     
     nCaloClustersAccepted++;
     nModule = GetModuleNumber(clus);
-    if(nModule >=0 && nModule < fNModules) 
-    {
-      if     (fCalorimeter=="EMCAL" && mom.E() > 2*fEMCALCellAmpMin)  nClustersInModule[nModule]++;
-      else if(fCalorimeter=="PHOS"  && mom.E() > 2*fPHOSCellAmpMin )  nClustersInModule[nModule]++;
-    }  
+    if(nModule >=0 && nModule < fNModules && mom.E() > 2*fCellAmpMin)
+     nClustersInModule[nModule]++;
         
     // Cluster weights
     if(fStudyWeight) WeightHistograms(clus, cells);
@@ -959,7 +1047,7 @@ void AliAnaCalorimeterQA::ClusterLoopHistograms(const TObjArray *caloClusters,
     // in cluster and remove low energy clusters
     if(fFillAllPi0Histo && nCaloClusters > 1 && nCaloCellsPerCluster > 1 && 
        GetCaloUtils()->GetNumberOfLocalMaxima(clus,cells) == 1 && 
-       clus->GetM02() < 0.5 && clus->E() > 0.3) 
+       clus->GetM02() < 0.5 && clus->E() > fMinInvMassECut)
       InvariantMassHistograms(iclus, mom, nModule, caloClusters,cells);
     
   }//cluster loop
@@ -1014,11 +1102,11 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
     return kFALSE;
   }
   
-  Int_t pdg0  =-1;Int_t status = -1; Int_t iMother = -1; Int_t iParent = -1;
-  Float_t vxMC= 0; Float_t vyMC = 0;   
-  Float_t eMC = 0; //Float_t ptMC= 0;
-  Float_t phiMC =0; Float_t etaMC = 0;
-  Int_t charge = 0;    
+  Int_t pdg0    =-1; Int_t status = -1; Int_t iMother = -1; Int_t iParent = -1;
+  Float_t vxMC  = 0; Float_t vyMC  = 0;
+  Float_t eMC   = 0; //Float_t ptMC= 0;
+  Float_t phiMC = 0; Float_t etaMC = 0;
+  Int_t charge  = 0;
   
   //Check the origin.
   Int_t tag = GetMCAnalysisUtils()->CheckOrigin(labels,nLabels, GetReader());
@@ -1145,7 +1233,7 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
     vyMC    = aodprimary->Yv();
     iParent = aodprimary->GetMother();
     
-    if(GetDebug() > 1 ) 
+    if( GetDebug() > 1 )
     {
       printf("AliAnaCalorimeterQA::ClusterHistograms() - Cluster most contributing mother: \n");
       printf("\t Mother label %d, pdg %d, Primary? %d, Physical Primary? %d, parent %d \n",
@@ -1153,9 +1241,9 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
     }
     
     //Get final particle, no conversion products
-    if(GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion))
+    if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion) )
     {
-      if(GetDebug() > 1 ) 
+      if( GetDebug() > 1 )
         printf("AliAnaCalorimeterQA::ClusterHistograms() - Converted cluster!. Find before conversion: \n");
       //Get the parent
       aodprimary = (AliAODMCParticle*)(GetReader()->GetAODMCParticles())->At(iParent);
@@ -1171,30 +1259,29 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
 
         // If gone too back and non stable, assign the decay photon/electron
         // there are other possible decays, ignore them for the moment
-        if(pdg==111 || pdg==221)
+        if( pdg == 111 || pdg == 221 )
         {
           aodprimary = (AliAODMCParticle*)(GetReader()->GetAODMCParticles())->At(iMotherOrg);
           break;
         }        
         
-        if(iParent < 0 ) 
+        if( iParent < 0 )
         {
           iParent = iMother;
           break;
         }
         
-        if(GetDebug() > 1 )
+        if( GetDebug() > 1 )
           printf("\t pdg %d, index %d, Primary? %d, Physical Primary? %d \n",
                  pdg, iMother, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary());      
       }        
       
-      if(GetDebug() > 1 ) 
+      if( GetDebug() > 1 )
       {
         printf("AliAnaCalorimeterQA::ClusterHistograms() - Converted Cluster mother before conversion: \n");
         printf("\t Mother label %d, pdg %d, parent %d, Primary? %d, Physical Primary? %d \n",
                iMother, pdg, iParent, aodprimary->IsPrimary(), aodprimary->IsPhysicalPrimary());
       }
-      
     }
     
     //Overlapped pi0 (or eta, there will be very few), get the meson
@@ -1202,6 +1289,7 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
        GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCEta))
     {
       if(GetDebug() > 1 ) printf("AliAnaCalorimeterQA::ClusterHistograms() - Overlapped Meson decay!, Find it: PDG %d, mom %d \n",pdg, iMother);
+  
       while(pdg != 111 && pdg != 221)
       {
         iMother    = iParent;
@@ -1210,9 +1298,9 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
         iParent    = aodprimary->GetMother();
         pdg        = TMath::Abs(aodprimary->GetPdgCode());
 
-        if(iParent < 0 ) break;
+        if( iParent < 0 ) break;
         
-        if(GetDebug() > 1 ) printf("\t pdg %d, index %d\n",pdg, iMother);
+        if( GetDebug() > 1 ) printf("\t pdg %d, index %d\n",pdg, iMother);
         
         if(iMother==-1) 
         {
@@ -1237,7 +1325,7 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
   
   //Float_t vz = primary->Vz();
   Float_t rVMC = TMath::Sqrt(vxMC*vxMC + vyMC*vyMC);
-  if((pdg == 22 || TMath::Abs(pdg)==11) && status!=1) 
+  if( ( pdg == 22 || TMath::Abs(pdg) == 11 ) && status != 1 )
   {
     fhEMVxyz   ->Fill(vxMC,vyMC);//,vz);
     fhEMR      ->Fill(e,rVMC);
@@ -1318,8 +1406,8 @@ Bool_t AliAnaCalorimeterQA::ClusterMCHistograms(TLorentzVector mom, Bool_t match
     fhHaR        ->Fill(e,rVMC);
   }
   
-  if(primary || aodprimary) return kTRUE ;
-  else                      return kFALSE;
+  if( primary || aodprimary ) return kTRUE ;
+  else                        return kFALSE;
   
 }
 
@@ -1334,14 +1422,11 @@ void AliAnaCalorimeterQA::ClusterMatchedWithTrackHistograms(AliVCluster *clus, T
   Float_t eta = mom.Eta();
   Float_t phi = mom.Phi();
   if(phi < 0) phi +=TMath::TwoPi();
-  
-  if(fFillAllTH12)
-  {
-    fhECharged      ->Fill(e); 
-    fhPtCharged     ->Fill(pt);
-    fhPhiCharged    ->Fill(phi);
-    fhEtaCharged    ->Fill(eta);
-  }
+
+  fhECharged   ->Fill(e);
+  fhPtCharged  ->Fill(pt);
+  fhPhiCharged ->Fill(phi);
+  fhEtaCharged ->Fill(eta);
     
   //Study the track and matched cluster if track exists.
     
@@ -1370,7 +1455,6 @@ void AliAnaCalorimeterQA::ClusterMatchedWithTrackHistograms(AliVCluster *clus, T
     
     if(track && positive)
     {
-      
       fhTrackMatchedDEtaPos->Fill(e,deta);
       fhTrackMatchedDPhiPos->Fill(e,dphi);
       if(e > 0.5) fhTrackMatchedDEtaDPhiPos->Fill(deta,dphi);
@@ -1427,7 +1511,7 @@ void AliAnaCalorimeterQA::ClusterMatchedWithTrackHistograms(AliVCluster *clus, T
     }
   }//DataMC
   
-  if(dR < 0.02 && eOverP > 0.6 && eOverP< 1.2
+  if(dR < 0.02 && eOverP > 0.6 && eOverP < 1.2
      && clus->GetNCells() > 1 && nITS > 3 && nTPC > 20) 
   {
     fh2EledEdx->Fill(tmom,dedx);
@@ -1568,6 +1652,9 @@ TObjString * AliAnaCalorimeterQA::GetAnalysisCuts()
   parList+=onePar ;
   snprintf(onePar,buffersize,"PHOS Cell Amplitude > %2.2f GeV, EMCAL Cell Amplitude > %2.2f GeV  \n",fPHOSCellAmpMin, fEMCALCellAmpMin) ;
   parList+=onePar ;
+  snprintf(onePar,buffersize,"Inv. Mass E1, E2 > %2.2f GeV \n",fMinInvMassECut) ;
+  parList+=onePar ;
+
   //Get parameters set in base class.
   //parList += GetBaseParametersList() ;
   
@@ -1696,24 +1783,22 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     fNRCU     = 4 ;
   }
   
-  fhE  = new TH1F ("hE","E reconstructed clusters ", nptbins*5,ptmin,ptmax*5);  
-  fhE->SetXTitle("E (GeV)");
+  fhE  = new TH1F ("hE","#it{E} reconstructed clusters ", nptbins*5,ptmin,ptmax*5);  
+  fhE->SetXTitle("#it{E} (GeV)");
   outputContainer->Add(fhE);
   
-  if(fFillAllTH12)
-  {
-    fhPt  = new TH1F ("hPt","p_{T} reconstructed clusters", nptbins,ptmin,ptmax); 
-    fhPt->SetXTitle("p_{T} (GeV/c)");
-    outputContainer->Add(fhPt);
-    
-    fhPhi  = new TH1F ("hPhi","#phi reconstructed clusters ",nphibins,phimin,phimax); 
-    fhPhi->SetXTitle("#phi (rad)");
-    outputContainer->Add(fhPhi);
-    
-    fhEta  = new TH1F ("hEta","#eta reconstructed clusters ",netabins,etamin,etamax); 
-    fhEta->SetXTitle("#eta ");
-    outputContainer->Add(fhEta);
-  }
+  fhPt  = new TH1F ("hPt","#it{p}_{T} reconstructed clusters", nptbins,ptmin,ptmax);
+  fhPt->SetXTitle("#it{p}_{T} (GeV/#it{c})");
+  outputContainer->Add(fhPt);
+  
+  fhPhi  = new TH1F ("hPhi","#phi reconstructed clusters ",nphibins,phimin,phimax);
+  fhPhi->SetXTitle("#phi (rad)");
+  outputContainer->Add(fhPhi);
+  
+  fhEta  = new TH1F ("hEta","#eta reconstructed clusters ",netabins,etamin,etamax);
+  fhEta->SetXTitle("#eta ");
+  outputContainer->Add(fhEta);
+  
   
   if(fFillAllTH3)
   {
@@ -1721,141 +1806,141 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
                            netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax); 
     fhEtaPhiE->SetXTitle("#eta ");
     fhEtaPhiE->SetYTitle("#phi (rad)");
-    fhEtaPhiE->SetZTitle("E (GeV) ");
+    fhEtaPhiE->SetZTitle("#it{E} (GeV) ");
     outputContainer->Add(fhEtaPhiE);
   }
   
   fhClusterTimeEnergy  = new TH2F ("hClusterTimeEnergy","energy vs TOF, reconstructed clusters",
                                    nptbins,ptmin,ptmax, ntimebins,timemin,timemax); 
-  fhClusterTimeEnergy->SetXTitle("E (GeV) ");
+  fhClusterTimeEnergy->SetXTitle("#it{E} (GeV) ");
   fhClusterTimeEnergy->SetYTitle("TOF (ns)");
   outputContainer->Add(fhClusterTimeEnergy);
   
   fhClusterPairDiffTimeE = new TH2F("hClusterPairDiffTimeE","cluster pair time difference vs E, only good clusters",
                                     nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
-  fhClusterPairDiffTimeE->SetXTitle("E_{cluster} (GeV)");
-  fhClusterPairDiffTimeE->SetYTitle("#Delta t (ns)");
+  fhClusterPairDiffTimeE->SetXTitle("#it{E}_{cluster} (GeV)");
+  fhClusterPairDiffTimeE->SetYTitle("#Delta #it{t} (ns)");
   outputContainer->Add(fhClusterPairDiffTimeE);  
   
   fhLambda0  = new TH2F ("hLambda0","shower shape, #lambda^{2}_{0} vs E",
                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-  fhLambda0->SetXTitle("E_{cluster}");
+  fhLambda0->SetXTitle("#it{E}_{cluster}");
   fhLambda0->SetYTitle("#lambda^{2}_{0}");
   outputContainer->Add(fhLambda0); 
   
   fhLambda1  = new TH2F ("hLambda1","shower shape, #lambda^{2}_{1} vs E for bad cluster ",
                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-  fhLambda1->SetXTitle("E_{cluster}");
+  fhLambda1->SetXTitle("#it{E}_{cluster}");
   fhLambda1->SetYTitle("#lambda^{2}_{1}");
   outputContainer->Add(fhLambda1); 
   
   fhDispersion  = new TH2F ("hDispersion","shower shape, Dispersion^{2} vs E for bad cluster ",
                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-  fhDispersion->SetXTitle("E_{cluster}");
+  fhDispersion->SetXTitle("#it{E}_{cluster}");
   fhDispersion->SetYTitle("Dispersion");
   outputContainer->Add(fhDispersion);       
   
   fhClusterMaxCellCloseCellRatio  = new TH2F ("hClusterMaxCellCloseCellRatio","energy vs ratio of max cell / neighbour cell, reconstructed clusters",
                                               nptbins,ptmin,ptmax, 100,0,1.); 
-  fhClusterMaxCellCloseCellRatio->SetXTitle("E_{cluster} (GeV) ");
-  fhClusterMaxCellCloseCellRatio->SetYTitle("E_{cell i}/E_{cell max}");
+  fhClusterMaxCellCloseCellRatio->SetXTitle("#it{E}_{cluster} (GeV) ");
+  fhClusterMaxCellCloseCellRatio->SetYTitle("#it{E}_{cell i}/#it{E}_{cell max}");
   outputContainer->Add(fhClusterMaxCellCloseCellRatio);
   
   fhClusterMaxCellCloseCellDiff  = new TH2F ("hClusterMaxCellCloseCellDiff","energy vs ratio of max cell / neighbour cell, reconstructed clusters",
                                              nptbins,ptmin,ptmax, 500,0,100.); 
-  fhClusterMaxCellCloseCellDiff->SetXTitle("E_{cluster} (GeV) ");
-  fhClusterMaxCellCloseCellDiff->SetYTitle("E_{cell max}-E_{cell i} (GeV)");
+  fhClusterMaxCellCloseCellDiff->SetXTitle("#it{E}_{cluster} (GeV) ");
+  fhClusterMaxCellCloseCellDiff->SetYTitle("#it{E}_{cell max}-#it{E}_{cell i} (GeV)");
   outputContainer->Add(fhClusterMaxCellCloseCellDiff);
   
   fhClusterMaxCellDiff  = new TH2F ("hClusterMaxCellDiff","energy vs difference of cluster energy - max cell energy / cluster energy, good clusters",
                                     nptbins,ptmin,ptmax, 500,0,1.); 
-  fhClusterMaxCellDiff->SetXTitle("E_{cluster} (GeV) ");
-  fhClusterMaxCellDiff->SetYTitle("(E_{cluster} - E_{cell max})/ E_{cluster}");
+  fhClusterMaxCellDiff->SetXTitle("#it{E}_{cluster} (GeV) ");
+  fhClusterMaxCellDiff->SetYTitle("(#it{E}_{cluster} - #it{E}_{cell max})/ #it{E}_{cluster}");
   outputContainer->Add(fhClusterMaxCellDiff);  
   
   fhClusterMaxCellDiffNoCut  = new TH2F ("hClusterMaxCellDiffNoCut","energy vs difference of cluster energy - max cell energy / cluster energy",
                                          nptbins,ptmin,ptmax, 500,0,1.); 
-  fhClusterMaxCellDiffNoCut->SetXTitle("E_{cluster} (GeV) ");
-  fhClusterMaxCellDiffNoCut->SetYTitle("(E_{cluster} - E_{cell max})/ E_{cluster}");
+  fhClusterMaxCellDiffNoCut->SetXTitle("#it{E}_{cluster} (GeV) ");
+  fhClusterMaxCellDiffNoCut->SetYTitle("(#it{E}_{cluster} - #it{E}_{cell max})/ #it{E}_{cluster}");
   outputContainer->Add(fhClusterMaxCellDiffNoCut);  
   
   fhClusterMaxCellECross  = new TH2F ("hClusterMaxCellECross","1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters",
                                        nptbins,ptmin,ptmax, 400,-1,1.); 
-  fhClusterMaxCellECross->SetXTitle("E_{cluster} (GeV) ");
-  fhClusterMaxCellECross->SetYTitle("1- E_{cross}/E_{cell max}");
+  fhClusterMaxCellECross->SetXTitle("#it{E}_{cluster} (GeV) ");
+  fhClusterMaxCellECross->SetYTitle("1- #it{E}_{cross}/#it{E}_{cell max}");
   outputContainer->Add(fhClusterMaxCellECross);    
   
   fhNCellsPerClusterNoCut  = new TH2F ("hNCellsPerClusterNoCut","# cells per cluster vs energy, no bad clusters cut",
                                        nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax); 
-  fhNCellsPerClusterNoCut->SetXTitle("E (GeV)");
-  fhNCellsPerClusterNoCut->SetYTitle("n cells");
+  fhNCellsPerClusterNoCut->SetXTitle("#it{E} (GeV)");
+  fhNCellsPerClusterNoCut->SetYTitle("#it{n}_{cells}");
   outputContainer->Add(fhNCellsPerClusterNoCut);
   
   fhNCellsPerCluster  = new TH2F ("hNCellsPerCluster","# cells per cluster vs energy",nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax); 
-  fhNCellsPerCluster->SetXTitle("E (GeV)");
-  fhNCellsPerCluster->SetYTitle("n cells");
+  fhNCellsPerCluster->SetXTitle("#it{E} (GeV)");
+  fhNCellsPerCluster->SetYTitle("#it{n}_{cells}");
   outputContainer->Add(fhNCellsPerCluster);
     
   fhNClusters  = new TH1F ("hNClusters","# clusters", nclbins,nclmin,nclmax); 
-  fhNClusters->SetXTitle("number of clusters");
+  fhNClusters->SetXTitle("#it{n}_{clusters}");
   outputContainer->Add(fhNClusters);
 
   if(fStudyBadClusters)
   {
     fhBadClusterEnergy  = new TH1F ("hBadClusterEnergy","Bad cluster energy", nptbins,ptmin,ptmax); 
-    fhBadClusterEnergy->SetXTitle("E_{cluster} (GeV) ");
+    fhBadClusterEnergy->SetXTitle("#it{E}_{cluster} (GeV) ");
     outputContainer->Add(fhBadClusterEnergy);
     
     fhBadClusterMaxCellCloseCellRatio  = new TH2F ("hBadClusterMaxCellCloseCellRatio","energy vs ratio of max cell / neighbour cell constributing cell, reconstructed bad clusters",
                                                    nptbins,ptmin,ptmax, 100,0,1.); 
-    fhBadClusterMaxCellCloseCellRatio->SetXTitle("E_{cluster} (GeV) ");
+    fhBadClusterMaxCellCloseCellRatio->SetXTitle("#it{E}_{cluster} (GeV) ");
     fhBadClusterMaxCellCloseCellRatio->SetYTitle("ratio");
     outputContainer->Add(fhBadClusterMaxCellCloseCellRatio);
     
     fhBadClusterMaxCellCloseCellDiff  = new TH2F ("hBadClusterMaxCellCloseCellDiff","energy vs ratio of max cell - neighbour cell constributing cell, reconstructed bad clusters",
                                                   nptbins,ptmin,ptmax, 500,0,100); 
-    fhBadClusterMaxCellCloseCellDiff->SetXTitle("E_{cluster} (GeV) ");
-    fhBadClusterMaxCellCloseCellDiff->SetYTitle("E_{cell max} - E_{cell i} (GeV)");
+    fhBadClusterMaxCellCloseCellDiff->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhBadClusterMaxCellCloseCellDiff->SetYTitle("#it{E}_{cell max} - #it{E}_{cell i} (GeV)");
     outputContainer->Add(fhBadClusterMaxCellCloseCellDiff);    
     
     fhBadClusterMaxCellDiff  = new TH2F ("hBadClusterMaxCellDiff","energy vs difference of cluster energy - max cell energy / cluster energy for bad clusters",
                                          nptbins,ptmin,ptmax, 500,0,1.); 
-    fhBadClusterMaxCellDiff->SetXTitle("E_{cluster} (GeV) ");
-    fhBadClusterMaxCellDiff->SetYTitle("(E_{cluster} - E_{cell max}) / E_{cluster}");
+    fhBadClusterMaxCellDiff->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhBadClusterMaxCellDiff->SetYTitle("(#it{E}_{cluster} - #it{E}_{cell max}) / #it{E}_{cluster}");
     outputContainer->Add(fhBadClusterMaxCellDiff);
     
     fhBadClusterTimeEnergy  = new TH2F ("hBadClusterTimeEnergy","energy vs TOF of reconstructed bad clusters",
                                         nptbins,ptmin,ptmax, ntimebins,timemin,timemax); 
-    fhBadClusterTimeEnergy->SetXTitle("E_{cluster} (GeV) ");
-    fhBadClusterTimeEnergy->SetYTitle("TOF (ns)");
+    fhBadClusterTimeEnergy->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhBadClusterTimeEnergy->SetYTitle("#it{t} (ns)");
     outputContainer->Add(fhBadClusterTimeEnergy);    
     
     fhBadClusterPairDiffTimeE = new TH2F("hBadClusterPairDiffTimeE","cluster pair time difference (bad - good) vs E from bad cluster",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
-    fhBadClusterPairDiffTimeE->SetXTitle("E_{bad cluster} (GeV)");
-    fhBadClusterPairDiffTimeE->SetYTitle("#Delta t (ns)");
+    fhBadClusterPairDiffTimeE->SetXTitle("#it{E}_{bad cluster} (GeV)");
+    fhBadClusterPairDiffTimeE->SetYTitle("#Delta #it{t} (ns)");
     outputContainer->Add(fhBadClusterPairDiffTimeE);    
     
-    fhBadClusterMaxCellECross  = new TH2F ("hBadClusterMaxCellECross","1 - Energy in cross around max energy cell / max energy cell vs cluster energy, bad clusters",
+    fhBadClusterMaxCellECross  = new TH2F ("hBadClusterMaxCellECross","1 - #it{E}_{+} around max energy cell / max energy cell vs cluster energy, bad clusters",
                                         nptbins,ptmin,ptmax, 400,-1,1.); 
-    fhBadClusterMaxCellECross->SetXTitle("E_{cluster} (GeV) ");
-    fhBadClusterMaxCellECross->SetYTitle("1- E_{cross}/E_{cell max}");
+    fhBadClusterMaxCellECross->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhBadClusterMaxCellECross->SetYTitle("1- #it{E}_{cross}/#it{E}_{cell max}");
     outputContainer->Add(fhBadClusterMaxCellECross);        
     
     if(fFillAllCellTimeHisto) 
     {
-      fhBadCellTimeSpreadRespectToCellMax = new TH2F ("hBadCellTimeSpreadRespectToCellMax","t_{cell max}-t_{cell i} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax); 
-      fhBadCellTimeSpreadRespectToCellMax->SetXTitle("E (GeV)");
-      fhBadCellTimeSpreadRespectToCellMax->SetYTitle("#Delta t_{cell max - i} (ns)");
+      fhBadCellTimeSpreadRespectToCellMax = new TH2F ("hBadCellTimeSpreadRespectToCellMax","#it{t}_{cell max}-#it{t}_{cell i} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
+      fhBadCellTimeSpreadRespectToCellMax->SetXTitle("#it{E} (GeV)");
+      fhBadCellTimeSpreadRespectToCellMax->SetYTitle("#Delta #it{t}_{cell max - i} (ns)");
       outputContainer->Add(fhBadCellTimeSpreadRespectToCellMax);
       
-      fhBadClusterMaxCellDiffAverageTime = new TH2F ("hBadClusterMaxCellDiffAverageTime","t_{cell max}-t_{average} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax); 
-      fhBadClusterMaxCellDiffAverageTime->SetXTitle("E (GeV)");
-      fhBadClusterMaxCellDiffAverageTime->SetYTitle("#Delta t_{cell max - average} (ns)");
+      fhBadClusterMaxCellDiffAverageTime = new TH2F ("hBadClusterMaxCellDiffAverageTime","#it{t}_{cell max}-#it{t}_{average} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
+      fhBadClusterMaxCellDiffAverageTime->SetXTitle("#it{E} (GeV)");
+      fhBadClusterMaxCellDiffAverageTime->SetYTitle("#Delta #it{t}_{cell max - average} (ns)");
       outputContainer->Add(fhBadClusterMaxCellDiffAverageTime);
             
-      fhBadClusterMaxCellDiffWeightedTime = new TH2F ("hBadClusterMaxCellDiffWeightedTime","t_{cell max}-t_{weighted} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax); 
-      fhBadClusterMaxCellDiffWeightedTime->SetXTitle("E (GeV)");
-      fhBadClusterMaxCellDiffWeightedTime->SetYTitle("#Delta t_{cell max - weighted} (ns)");
+      fhBadClusterMaxCellDiffWeightedTime = new TH2F ("hBadClusterMaxCellDiffWeightedTime","#it{t}_{cell max}-#it{t}_{weighted} from bad cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
+      fhBadClusterMaxCellDiffWeightedTime->SetXTitle("#it{E} (GeV)");
+      fhBadClusterMaxCellDiffWeightedTime->SetYTitle("#Delta #it{t}_{cell max - weighted} (ns)");
       outputContainer->Add(fhBadClusterMaxCellDiffWeightedTime);
       
     }  
@@ -1865,16 +1950,16 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
   if(fStudyExotic)
   {
     fhExoL0ECross  = new TH2F("hExoL0_ECross",
-                               "#lambda^{2}_{0} vs 1-E_{+}/E_{max} for E > 5 GeV",
+                               "#lambda^{2}_{0} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
                                400,0,1,ssbins,ssmin,ssmax); 
-    fhExoL0ECross ->SetXTitle("1-E_{+}/E_{cell max}");
+    fhExoL0ECross ->SetXTitle("1-#it{E}_{+}/#it{E}_{cell max}");
     fhExoL0ECross ->SetYTitle("#lambda^{2}_{0}");
     outputContainer->Add(fhExoL0ECross) ;     
 
     fhExoL1ECross  = new TH2F("hExoL1_ECross",
-                              "#lambda^{2}_{1} vs 1-E_{+}/E_{max} for E > 5 GeV",
+                              "#lambda^{2}_{1} vs 1-#it{E}_{+}/#it{E}_{max} for E > 5 GeV",
                               400,0,1,ssbins,ssmin,ssmax); 
-    fhExoL1ECross ->SetXTitle("1-E_{+}/E_{cell max}");
+    fhExoL1ECross ->SetXTitle("1-#it{E}_{+}/#it{E}_{cell max}");
     fhExoL1ECross ->SetYTitle("#lambda^{2}_{1}");
     outputContainer->Add(fhExoL1ECross) ;  
     
@@ -1882,60 +1967,60 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     {  
       
       fhExoDTime[ie]  = new TH2F(Form("hExoDTime_ECross%d",ie),
-                                 Form("#Delta time = t_{max}-t_{cells} vs E_{cluster} for exotic, 1-E_{+}/E_{max} < %2.2f",fExoECrossCuts[ie]),
+                                 Form("#Delta time = t_{max}-t_{cells} vs #it{E}_{cluster} for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f",fExoECrossCuts[ie]),
                                  nptbins,ptmin,ptmax,tdbins,tdmin,tdmax); 
-      fhExoDTime[ie] ->SetYTitle("#Delta t (ns)");
-      fhExoDTime[ie] ->SetXTitle("E (GeV)");
+      fhExoDTime[ie] ->SetYTitle("#Delta #it{t} (ns)");
+      fhExoDTime[ie] ->SetXTitle("#it{E} (GeV)");
       outputContainer->Add(fhExoDTime[ie]) ; 
       
       for(Int_t idt = 0; idt < fExoNDTimeCuts; idt++)
       {        
         fhExoNCell[ie][idt]  = new TH2F(Form("hExoNCell_ECross%d_DT%d",ie,idt),
-                                     Form("N cells per cluster vs E cluster, 1-E_{+}/E_{max} < %2.2f, #Delta t < %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
+                                     Form("N cells per cluster vs E cluster, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
                                      nptbins,ptmin,ptmax,nceclbins,nceclmin,nceclmax); 
-        fhExoNCell[ie][idt] ->SetYTitle("cells");
-        fhExoNCell[ie][idt] ->SetXTitle("E (GeV)");
+        fhExoNCell[ie][idt] ->SetYTitle("#it{n}_cells");
+        fhExoNCell[ie][idt] ->SetXTitle("#it{E} (GeV)");
         outputContainer->Add(fhExoNCell[ie][idt]) ; 
         
         fhExoL0   [ie][idt]  = new TH2F(Form("hExoL0_ECross%d_DT%d",ie,idt),
-                                     Form("#lambda^{2}_{0} vs E cluster for exotic, 1-E_{+}/E_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
+                                     Form("#lambda^{2}_{0} vs E cluster for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
         fhExoL0   [ie][idt] ->SetYTitle("#lambda^{2}_{0}");
-        fhExoL0   [ie][idt] ->SetXTitle("E (GeV)");
+        fhExoL0   [ie][idt] ->SetXTitle("#it{E} (GeV)");
         outputContainer->Add(fhExoL0[ie][idt]) ; 
 
         fhExoL1   [ie][idt]  = new TH2F(Form("hExoL1_ECross%d_DT%d",ie,idt),
-                                        Form("#lambda^{2}_{1} vs E cluster for exotic, 1-E_{+}/E_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
+                                        Form("#lambda^{2}_{1} vs E cluster for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
                                         nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
         fhExoL1   [ie][idt] ->SetYTitle("#lambda^{2}_{1}");
-        fhExoL1   [ie][idt] ->SetXTitle("E (GeV)");
+        fhExoL1   [ie][idt] ->SetXTitle("#it{E} (GeV)");
         outputContainer->Add(fhExoL1[ie][idt]) ; 
         
         fhExoECross[ie][idt]  = new TH2F(Form("hExoECross_ECross%d_DT%d",ie,idt),
-                                      Form("E cross for cells vs E cell, 1-E_{+}/E_{max} < %2.2f, #Delta t < %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
+                                      Form("#it{E} cross for cells vs E cell, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t < %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
                                       nptbins,ptmin,ptmax,400,0,1); 
-        fhExoECross[ie][idt] ->SetYTitle("1-E_{+}/E_{cell max}");
-        fhExoECross[ie][idt] ->SetXTitle("E_{cell} (GeV)");
+        fhExoECross[ie][idt] ->SetYTitle("1-#it{E}_{+}/#it{E}_{cell max}");
+        fhExoECross[ie][idt] ->SetXTitle("#it{E}_{cell} (GeV)");
         outputContainer->Add(fhExoECross[ie][idt]) ; 
         
         fhExoTime  [ie][idt]  = new TH2F(Form("hExoTime_ECross%d_DT%d",ie,idt),
-                                        Form("Time of cluster (max cell) vs E cluster for exotic, 1-E_{+}/E_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
+                                        Form("Time of cluster (max cell) vs E cluster for exotic, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
                                         nptbins,ptmin,ptmax,ntimebins,timemin,timemax); 
-        fhExoTime  [ie][idt] ->SetYTitle("time_{max} (ns)");
-        fhExoTime  [ie][idt] ->SetXTitle("E (GeV)");
+        fhExoTime  [ie][idt] ->SetYTitle("#it{t}_{max} (ns)");
+        fhExoTime  [ie][idt] ->SetXTitle("#it{E} (GeV)");
         outputContainer->Add(fhExoTime[ie][idt]) ; 
 
         fhExoL0NCell[ie][idt]  = new TH2F(Form("hExoL0_NCell%d_DT%d",ie,idt),
-                                          Form("#lambda^{2}_{0} vs N cells per clusters for E > 5 GeV, 1-E_{+}/E_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
+                                          Form("#lambda^{2}_{0} vs N cells per clusters for E > 5 GeV, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
                                           nptbins,ptmin,ptmax,ntimebins,timemin,timemax); 
-        fhExoL0NCell[ie][idt] ->SetYTitle("N cells");
+        fhExoL0NCell[ie][idt] ->SetYTitle("#it{n}_{cells}");
         fhExoL0NCell[ie][idt] ->SetXTitle("#lambda^{2}_{0}");
         outputContainer->Add(fhExoL0NCell[ie][idt]) ;  
         
         fhExoL1NCell[ie][idt]  = new TH2F(Form("hExoL1_NCell%d_DT%d",ie,idt),
-                                          Form("#lambda^{2}_{1} vs N cells per clusters for E > 5 GeV, 1-E_{+}/E_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
+                                          Form("#lambda^{2}_{1} vs N cells per clusters for E > 5 GeV, 1-#it{E}_{+}/#it{E}_{max} < %2.2f, #Delta t = %2.0f",fExoECrossCuts[ie],fExoDTimeCuts[idt]),
                                           nptbins,ptmin,ptmax,ntimebins,timemin,timemax); 
-        fhExoL1NCell[ie][idt] ->SetYTitle("N cells");
+        fhExoL1NCell[ie][idt] ->SetYTitle("#it{n}_{cells}");
         fhExoL1NCell[ie][idt] ->SetXTitle("#lambda^{2}_{1}");
         outputContainer->Add(fhExoL1NCell[ie][idt]) ;  
         
@@ -1946,19 +2031,19 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
   // Cluster size in terms of cells
   if(fStudyClustersAsymmetry)
   {
-    fhDeltaIEtaDeltaIPhiE0[0]  = new TH2F ("hDeltaIEtaDeltaIPhiE0"," Cluster size in columns vs rows for E < 2 GeV, n cells > 3",
+    fhDeltaIEtaDeltaIPhiE0[0]  = new TH2F ("hDeltaIEtaDeltaIPhiE0"," Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
                                            50,0,50,50,0,50); 
     fhDeltaIEtaDeltaIPhiE0[0]->SetXTitle("#Delta Column");
     fhDeltaIEtaDeltaIPhiE0[0]->SetYTitle("#Delta Row");
     outputContainer->Add(fhDeltaIEtaDeltaIPhiE0[0]); 
     
-    fhDeltaIEtaDeltaIPhiE2[0]  = new TH2F ("hDeltaIEtaDeltaIPhiE2"," Cluster size in columns vs rows for 2 <E < 6 GeV, n cells > 3",
+    fhDeltaIEtaDeltaIPhiE2[0]  = new TH2F ("hDeltaIEtaDeltaIPhiE2"," Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
                                            50,0,50,50,0,50); 
     fhDeltaIEtaDeltaIPhiE2[0]->SetXTitle("#Delta Column");
     fhDeltaIEtaDeltaIPhiE2[0]->SetYTitle("#Delta Row");
     outputContainer->Add(fhDeltaIEtaDeltaIPhiE2[0]); 
     
-    fhDeltaIEtaDeltaIPhiE6[0]  = new TH2F ("hDeltaIEtaDeltaIPhiE6"," Cluster size in columns vs rows for E > 6 GeV, n cells > 3",
+    fhDeltaIEtaDeltaIPhiE6[0]  = new TH2F ("hDeltaIEtaDeltaIPhiE6"," Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
                                            50,0,50,50,0,50); 
     fhDeltaIEtaDeltaIPhiE6[0]->SetXTitle("#Delta Column");
     fhDeltaIEtaDeltaIPhiE6[0]->SetYTitle("#Delta Row");
@@ -1966,42 +2051,42 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhDeltaIA[0]  = new TH2F ("hDeltaIA"," Cluster *asymmetry* in cell units vs E",
                               nptbins,ptmin,ptmax,21,-1.05,1.05); 
-    fhDeltaIA[0]->SetXTitle("E_{cluster}");
-    fhDeltaIA[0]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIA[0]->SetXTitle("#it{E}_{cluster}");
+    fhDeltaIA[0]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIA[0]); 
     
     fhDeltaIAL0[0]  = new TH2F ("hDeltaIAL0"," Cluster *asymmetry* in cell units vs #lambda^{2}_{0}",
                                 ssbins,ssmin,ssmax,21,-1.05,1.05); 
     fhDeltaIAL0[0]->SetXTitle("#lambda^{2}_{0}");
-    fhDeltaIAL0[0]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIAL0[0]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIAL0[0]); 
     
     fhDeltaIAL1[0]  = new TH2F ("hDeltaIAL1"," Cluster *asymmetry* in cell units vs #lambda^{2}_{1}",
                                 ssbins,ssmin,ssmax,21,-1.05,1.05); 
     fhDeltaIAL1[0]->SetXTitle("#lambda^{2}_{1}");
-    fhDeltaIAL1[0]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIAL1[0]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIAL1[0]); 
     
     fhDeltaIANCells[0]  = new TH2F ("hDeltaIANCells"," Cluster *asymmetry* in cell units vs N cells in cluster",
                                     nceclbins,nceclmin,nceclmax,21,-1.05,1.05); 
-    fhDeltaIANCells[0]->SetXTitle("N_{cell in cluster}");
-    fhDeltaIANCells[0]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIANCells[0]->SetXTitle("#it{n}_{cell in cluster}");
+    fhDeltaIANCells[0]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIANCells[0]); 
     
     
-    fhDeltaIEtaDeltaIPhiE0[1]  = new TH2F ("hDeltaIEtaDeltaIPhiE0Charged"," Cluster size in columns vs rows for E < 2 GeV, n cells > 3, matched with track",
+    fhDeltaIEtaDeltaIPhiE0[1]  = new TH2F ("hDeltaIEtaDeltaIPhiE0Charged"," Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3, matched with track",
                                            50,0,50,50,0,50); 
     fhDeltaIEtaDeltaIPhiE0[1]->SetXTitle("#Delta Column");
     fhDeltaIEtaDeltaIPhiE0[1]->SetYTitle("#Delta Row");
     outputContainer->Add(fhDeltaIEtaDeltaIPhiE0[1]); 
     
-    fhDeltaIEtaDeltaIPhiE2[1]  = new TH2F ("hDeltaIEtaDeltaIPhiE2Charged"," Cluster size in columns vs rows for 2 <E < 6 GeV, n cells > 3, matched with track",
+    fhDeltaIEtaDeltaIPhiE2[1]  = new TH2F ("hDeltaIEtaDeltaIPhiE2Charged"," Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3, matched with track",
                                            50,0,50,50,0,50); 
     fhDeltaIEtaDeltaIPhiE2[1]->SetXTitle("#Delta Column");
     fhDeltaIEtaDeltaIPhiE2[1]->SetYTitle("#Delta Row");
     outputContainer->Add(fhDeltaIEtaDeltaIPhiE2[1]); 
     
-    fhDeltaIEtaDeltaIPhiE6[1]  = new TH2F ("hDeltaIEtaDeltaIPhiE6Charged"," Cluster size in columns vs rows for E > 6 GeV, n cells > 3, matched with track",
+    fhDeltaIEtaDeltaIPhiE6[1]  = new TH2F ("hDeltaIEtaDeltaIPhiE6Charged"," Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3, matched with track",
                                            50,0,50,50,0,50); 
     fhDeltaIEtaDeltaIPhiE6[1]->SetXTitle("#Delta Column");
     fhDeltaIEtaDeltaIPhiE6[1]->SetYTitle("#Delta Row");
@@ -2009,26 +2094,26 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhDeltaIA[1]  = new TH2F ("hDeltaIACharged"," Cluster *asymmetry* in cell units vs E, matched with track",
                               nptbins,ptmin,ptmax,21,-1.05,1.05); 
-    fhDeltaIA[1]->SetXTitle("E_{cluster}");
-    fhDeltaIA[1]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIA[1]->SetXTitle("#it{E}_{cluster}");
+    fhDeltaIA[1]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIA[1]); 
     
     fhDeltaIAL0[1]  = new TH2F ("hDeltaIAL0Charged"," Cluster *asymmetry* in cell units vs #lambda^{2}_{0}, matched with track",
                                 ssbins,ssmin,ssmax,21,-1.05,1.05); 
     fhDeltaIAL0[1]->SetXTitle("#lambda^{2}_{0}");
-    fhDeltaIAL0[1]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIAL0[1]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIAL0[1]); 
     
     fhDeltaIAL1[1]  = new TH2F ("hDeltaIAL1Charged"," Cluster *asymmetry* in cell units vs #lambda^{2}_{1}, matched with track",
                                 ssbins,ssmin,ssmax,21,-1.05,1.05); 
     fhDeltaIAL1[1]->SetXTitle("#lambda^{2}_{1}");
-    fhDeltaIAL1[1]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIAL1[1]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIAL1[1]); 
     
     fhDeltaIANCells[1]  = new TH2F ("hDeltaIANCellsCharged"," Cluster *asymmetry* in cell units vs N cells in cluster, matched with track",
                                     nceclbins,nceclmin,nceclmax,21,-1.05,1.05); 
-    fhDeltaIANCells[1]->SetXTitle("N_{cell in cluster}");
-    fhDeltaIANCells[1]->SetYTitle("A_{cell in cluster}");
+    fhDeltaIANCells[1]->SetXTitle("#it{n}_{cell in cluster}");
+    fhDeltaIANCells[1]->SetYTitle("#it{A}_{cell in cluster}");
     outputContainer->Add(fhDeltaIANCells[1]); 
     
     if(IsDataMC()){
@@ -2037,27 +2122,27 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
         
         fhDeltaIAMC[iPart]  = new TH2F (Form("hDeltaIA_MC%s",particle[iPart].Data()),Form(" Cluster *asymmetry* in cell units vs E, from %s",particle[iPart].Data()),
                                         nptbins,ptmin,ptmax,21,-1.05,1.05); 
-        fhDeltaIAMC[iPart]->SetXTitle("E_{cluster}");
-        fhDeltaIAMC[iPart]->SetYTitle("A_{cell in cluster}");
+        fhDeltaIAMC[iPart]->SetXTitle("#it{E}_{cluster}");
+        fhDeltaIAMC[iPart]->SetYTitle("#it{A}_{cell in cluster}");
         outputContainer->Add(fhDeltaIAMC[iPart]);     
       }
     }
     
     if(fStudyBadClusters)
     {
-      fhBadClusterDeltaIEtaDeltaIPhiE0  = new TH2F ("hBadClusterDeltaIEtaDeltaIPhiE0"," Cluster size in columns vs rows for E < 2 GeV, n cells > 3",
+      fhBadClusterDeltaIEtaDeltaIPhiE0  = new TH2F ("hBadClusterDeltaIEtaDeltaIPhiE0"," Cluster size in columns vs rows for E < 2 GeV, #it{n}_{cells} > 3",
                                                     50,0,50,50,0,50); 
       fhBadClusterDeltaIEtaDeltaIPhiE0->SetXTitle("#Delta Column");
       fhBadClusterDeltaIEtaDeltaIPhiE0->SetYTitle("#Delta Row");
       outputContainer->Add(fhBadClusterDeltaIEtaDeltaIPhiE0); 
       
-      fhBadClusterDeltaIEtaDeltaIPhiE2  = new TH2F ("hBadClusterDeltaIEtaDeltaIPhiE2"," Cluster size in columns vs rows for 2 <E < 6 GeV, n cells > 3",
+      fhBadClusterDeltaIEtaDeltaIPhiE2  = new TH2F ("hBadClusterDeltaIEtaDeltaIPhiE2"," Cluster size in columns vs rows for 2 <E < 6 GeV, #it{n}_{cells} > 3",
                                                     50,0,50,50,0,50); 
       fhBadClusterDeltaIEtaDeltaIPhiE2->SetXTitle("#Delta Column");
       fhBadClusterDeltaIEtaDeltaIPhiE2->SetYTitle("#Delta Row");
       outputContainer->Add(fhBadClusterDeltaIEtaDeltaIPhiE2); 
       
-      fhBadClusterDeltaIEtaDeltaIPhiE6  = new TH2F ("hBadClusterDeltaIEtaDeltaIPhiE6"," Cluster size in columns vs rows for E > 6 GeV, n cells > 3",
+      fhBadClusterDeltaIEtaDeltaIPhiE6  = new TH2F ("hBadClusterDeltaIEtaDeltaIPhiE6"," Cluster size in columns vs rows for E > 6 GeV, #it{n}_{cells} > 3",
                                                     50,0,50,50,0,50); 
       fhBadClusterDeltaIEtaDeltaIPhiE6->SetXTitle("#Delta Column");
       fhBadClusterDeltaIEtaDeltaIPhiE6->SetYTitle("#Delta Row");
@@ -2065,8 +2150,8 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
       
       fhBadClusterDeltaIA  = new TH2F ("hBadClusterDeltaIA"," Cluster *asymmetry* in cell units vs E",
                                        nptbins,ptmin,ptmax,21,-1.05,1.05); 
-      fhBadClusterDeltaIA->SetXTitle("E_{cluster}");
-      fhBadClusterDeltaIA->SetYTitle("A_{cell in cluster}");
+      fhBadClusterDeltaIA->SetXTitle("#it{E}_{cluster}");
+      fhBadClusterDeltaIA->SetYTitle("#it{A}_{cell in cluster}");
       outputContainer->Add(fhBadClusterDeltaIA); 
     }
   }
@@ -2075,38 +2160,73 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
   {
     fhECellClusterRatio  = new TH2F ("hECellClusterRatio"," cell energy / cluster energy vs cluster energy",
                                      nptbins,ptmin,ptmax, 100,0,1.); 
-    fhECellClusterRatio->SetXTitle("E_{cluster} (GeV) ");
-    fhECellClusterRatio->SetYTitle("E_{cell i}/E_{cluster}");
+    fhECellClusterRatio->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhECellClusterRatio->SetYTitle("#it{E}_{cell i}/#it{E}_{cluster}");
     outputContainer->Add(fhECellClusterRatio);
     
     fhECellClusterLogRatio  = new TH2F ("hECellClusterLogRatio"," Log(cell energy / cluster energy) vs cluster energy",
                                         nptbins,ptmin,ptmax, 100,-10,0); 
-    fhECellClusterLogRatio->SetXTitle("E_{cluster} (GeV) ");
-    fhECellClusterLogRatio->SetYTitle("Log(E_{cell i}/E_{cluster})");
+    fhECellClusterLogRatio->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhECellClusterLogRatio->SetYTitle("Log(#it{E}_{cell i}/#it{E}_{cluster})");
     outputContainer->Add(fhECellClusterLogRatio);
     
     fhEMaxCellClusterRatio  = new TH2F ("hEMaxCellClusterRatio"," max cell energy / cluster energy vs cluster energy",
                                         nptbins,ptmin,ptmax, 100,0,1.); 
-    fhEMaxCellClusterRatio->SetXTitle("E_{cluster} (GeV) ");
-    fhEMaxCellClusterRatio->SetYTitle("E_{max cell}/E_{cluster}");
+    fhEMaxCellClusterRatio->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhEMaxCellClusterRatio->SetYTitle("#it{E}_{max cell}/#it{E}_{cluster}");
     outputContainer->Add(fhEMaxCellClusterRatio);
     
     fhEMaxCellClusterLogRatio  = new TH2F ("hEMaxCellClusterLogRatio"," Log(max cell energy / cluster energy) vs cluster energy",
                                            nptbins,ptmin,ptmax, 100,-10,0); 
-    fhEMaxCellClusterLogRatio->SetXTitle("E_{cluster} (GeV) ");
-    fhEMaxCellClusterLogRatio->SetYTitle("Log (E_{max cell}/E_{cluster})");
+    fhEMaxCellClusterLogRatio->SetXTitle("#it{E}_{cluster} (GeV) ");
+    fhEMaxCellClusterLogRatio->SetYTitle("Log (#it{E}_{max cell}/#it{E}_{cluster})");
     outputContainer->Add(fhEMaxCellClusterLogRatio);
     
-    for(Int_t iw = 0; iw < 14; iw++){
-      fhLambda0ForW0[iw]  = new TH2F (Form("hLambda0ForW0%d",iw),Form("shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f",1+0.5*iw),
+    fhECellTotalRatio  = new TH2F ("hECellTotalRatio"," cell energy / sum all energy vs all energy",
+                                     nptbins*2,ptmin,ptmax*2, 100,0,1.);
+    fhECellTotalRatio->SetXTitle("#it{E}_{total} (GeV) ");
+    fhECellTotalRatio->SetYTitle("#it{E}_{cell i}/#it{E}_{total}");
+    outputContainer->Add(fhECellTotalRatio);
+    
+    fhECellTotalLogRatio  = new TH2F ("hECellTotalLogRatio"," Log(cell energy / sum all energy) vs all energy",
+                                        nptbins*2,ptmin,ptmax*2, 100,-10,0);
+    fhECellTotalLogRatio->SetXTitle("#it{E}_{total} (GeV) ");
+    fhECellTotalLogRatio->SetYTitle("Log(#it{E}_{cell i}/#it{E}_{total})");
+    outputContainer->Add(fhECellTotalLogRatio);
+    
+    fhECellTotalRatioMod    = new TH2F*[fNModules];
+    fhECellTotalLogRatioMod = new TH2F*[fNModules];
+    
+    for(Int_t imod = 0; imod < fNModules; imod++)
+    {
+      fhECellTotalRatioMod[imod]  = new TH2F (Form("hECellTotalRatio_Mod%d",imod),
+                                              Form("#cell energy / sum all energy vs all energy in Module %d",imod),
+                                              nptbins*2,ptmin,ptmax*2, 100,0,1.);
+      fhECellTotalRatioMod[imod]->SetXTitle("#it{E} (GeV)");
+      fhECellTotalRatioMod[imod]->SetYTitle("#it{n}_{cells}");
+      outputContainer->Add(fhECellTotalRatioMod[imod]);
+      
+      fhECellTotalLogRatioMod[imod]  = new TH2F (Form("hECellTotalLogRatio_Mod%d",imod),
+                                              Form("Log(cell energy / sum all energy) vs all energy in Module %d",imod),
+                                              nptbins*2,ptmin,ptmax*2, 100,-10,0);
+      fhECellTotalLogRatioMod[imod]->SetXTitle("#it{E} (GeV)");
+      fhECellTotalLogRatioMod[imod]->SetYTitle("#it{n}_{cells}");
+      outputContainer->Add(fhECellTotalLogRatioMod[imod]);
+
+    }
+    
+    for(Int_t iw = 0; iw < 12; iw++)
+    {
+      Float_t w0 = 3+0.25*iw;
+      fhLambda0ForW0[iw]  = new TH2F (Form("hLambda0ForW0%d",iw),Form("shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f",w0),
                                       nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-      fhLambda0ForW0[iw]->SetXTitle("E_{cluster}");
+      fhLambda0ForW0[iw]->SetXTitle("#it{E}_{cluster}");
       fhLambda0ForW0[iw]->SetYTitle("#lambda^{2}_{0}");
       outputContainer->Add(fhLambda0ForW0[iw]); 
       
-//      fhLambda1ForW0[iw]  = new TH2F (Form("hLambda1ForW0%d",iw),Form("shower shape, #lambda^{2}_{1} vs E, w0 = %1.1f",1+0.5*iw),
+//      fhLambda1ForW0[iw]  = new TH2F (Form("hLambda1ForW0%d",iw),Form("shower shape, #lambda^{2}_{1} vs E, w0 = %1.1f",w0),
 //                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-//      fhLambda1ForW0[iw]->SetXTitle("E_{cluster}");
+//      fhLambda1ForW0[iw]->SetXTitle("#it{E}_{cluster}");
 //      fhLambda1ForW0[iw]->SetYTitle("#lambda^{2}_{1}");
 //      outputContainer->Add(fhLambda1ForW0[iw]); 
       
@@ -2114,16 +2234,16 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
         TString mcnames[] = {"Photon", "Electron","Conversion","Pi0","Hadron"};
         for(Int_t imc = 0; imc < 5; imc++){
           fhLambda0ForW0MC[iw][imc]  = new TH2F (Form("hLambda0ForW0%d_MC%s",iw,mcnames[imc].Data()),
-                                                 Form("shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",1+0.5*iw,mcnames[imc].Data()),
+                                                 Form("shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].Data()),
                                                  nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-          fhLambda0ForW0MC[iw][imc]->SetXTitle("E_{cluster}");
+          fhLambda0ForW0MC[iw][imc]->SetXTitle("#it{E}_{cluster}");
           fhLambda0ForW0MC[iw][imc]->SetYTitle("#lambda^{2}_{0}");
           outputContainer->Add(fhLambda0ForW0MC[iw][imc]); 
           
 //          fhLambda1ForW0MC[iw][imc]  = new TH2F (Form("hLambda1ForW0%d_MC%s",iw,mcnames[imc].Data()),
-//                                                 Form("shower shape, #lambda^{2}_{1} vs E, w0 = %1.1f, for MC %s",1+0.5*iw,mcnames[imc].Data()),
+//                                                 Form("shower shape, #lambda^{2}_{1} vs E, w0 = %1.1f, for MC %s",w0,mcnames[imc].Data()),
 //                                                 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-//          fhLambda1ForW0MC[iw][imc]->SetXTitle("E_{cluster}");
+//          fhLambda1ForW0MC[iw][imc]->SetXTitle("#it{E}_{cluster}");
 //          fhLambda1ForW0MC[iw][imc]->SetYTitle("#lambda^{2}_{1}");
 //          outputContainer->Add(fhLambda1ForW0MC[iw][imc]); 
         }
@@ -2144,12 +2264,12 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     fhTrackMatchedDEta  = new TH2F("hTrackMatchedDEta","d#eta of cluster-track vs cluster energy",
                                    nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
     fhTrackMatchedDEta->SetYTitle("d#eta");
-    fhTrackMatchedDEta->SetXTitle("E_{cluster} (GeV)");
+    fhTrackMatchedDEta->SetXTitle("#it{E}_{cluster} (GeV)");
     
     fhTrackMatchedDPhi  = new TH2F("hTrackMatchedDPhi","d#phi of cluster-track vs cluster energy",
                                    nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
     fhTrackMatchedDPhi->SetYTitle("d#phi (rad)");
-    fhTrackMatchedDPhi->SetXTitle("E_{cluster} (GeV)");
+    fhTrackMatchedDPhi->SetXTitle("#it{E}_{cluster} (GeV)");
     
     fhTrackMatchedDEtaDPhi  = new TH2F("hTrackMatchedDEtaDPhi","d#eta vs d#phi of cluster-track vs cluster energy",
                                        nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
@@ -2159,12 +2279,12 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     fhTrackMatchedDEtaPos  = new TH2F("hTrackMatchedDEtaPos","d#eta of cluster-track vs cluster energy",
                                       nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
     fhTrackMatchedDEtaPos->SetYTitle("d#eta");
-    fhTrackMatchedDEtaPos->SetXTitle("E_{cluster} (GeV)");
+    fhTrackMatchedDEtaPos->SetXTitle("#it{E}_{cluster} (GeV)");
     
     fhTrackMatchedDPhiPos  = new TH2F("hTrackMatchedDPhiPos","d#phi of cluster-track vs cluster energy",
                                       nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
     fhTrackMatchedDPhiPos->SetYTitle("d#phi (rad)");
-    fhTrackMatchedDPhiPos->SetXTitle("E_{cluster} (GeV)");
+    fhTrackMatchedDPhiPos->SetXTitle("#it{E}_{cluster} (GeV)");
     
     fhTrackMatchedDEtaDPhiPos  = new TH2F("hTrackMatchedDEtaDPhiPos","d#eta vs d#phi of cluster-track vs cluster energy",
                                           nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
@@ -2178,74 +2298,73 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhTrackMatchedDPhiPos) ;
     outputContainer->Add(fhTrackMatchedDEtaDPhiPos) ;
     
-    if(fFillAllTH12)
+    fhECharged  = new TH1F ("hECharged","#it{E} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
+    fhECharged->SetXTitle("#it{E} (GeV)");
+    outputContainer->Add(fhECharged);
+    
+    fhPtCharged  = new TH1F ("hPtCharged","#it{p}_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
+    fhPtCharged->SetXTitle("#it{p}_{T} (GeV/#it{c})");
+    outputContainer->Add(fhPtCharged);
+    
+    fhPhiCharged  = new TH1F ("hPhiCharged","#phi reconstructed clusters, matched with track",nphibins,phimin,phimax);
+    fhPhiCharged->SetXTitle("#phi (rad)");
+    outputContainer->Add(fhPhiCharged);
+    
+    fhEtaCharged  = new TH1F ("hEtaCharged","#eta reconstructed clusters, matched with track",netabins,etamin,etamax);
+    fhEtaCharged->SetXTitle("#eta ");
+    outputContainer->Add(fhEtaCharged);
+    
+    if(fFillAllTH3)
     {
-      fhECharged  = new TH1F ("hECharged","E reconstructed clusters, matched with track", nptbins,ptmin,ptmax);
-      fhECharged->SetXTitle("E (GeV)");
-      outputContainer->Add(fhECharged);
-      
-      fhPtCharged  = new TH1F ("hPtCharged","p_{T} reconstructed clusters, matched with track", nptbins,ptmin,ptmax); 
-      fhPtCharged->SetXTitle("p_{T} (GeV/c)");
-      outputContainer->Add(fhPtCharged);
-      
-      fhPhiCharged  = new TH1F ("hPhiCharged","#phi reconstructed clusters, matched with track",nphibins,phimin,phimax); 
-      fhPhiCharged->SetXTitle("#phi (rad)");
-      outputContainer->Add(fhPhiCharged);
-      
-      fhEtaCharged  = new TH1F ("hEtaCharged","#eta reconstructed clusters, matched with track",netabins,etamin,etamax); 
-      fhEtaCharged->SetXTitle("#eta ");
-      outputContainer->Add(fhEtaCharged);
-    }
-    if(fFillAllTH3){
       fhEtaPhiECharged  = new TH3F ("hEtaPhiECharged","#eta vs #phi, reconstructed clusters, matched with track",
                                     netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax); 
       fhEtaPhiECharged->SetXTitle("#eta ");
       fhEtaPhiECharged->SetYTitle("#phi ");
-      fhEtaPhiECharged->SetZTitle("E (GeV) ");
+      fhEtaPhiECharged->SetZTitle("#it{E} (GeV) ");
       outputContainer->Add(fhEtaPhiECharged);  
     }
     
-    fh1EOverP = new TH2F("h1EOverP","TRACK matches E/p",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fh1EOverP->SetYTitle("E/p");
-    fh1EOverP->SetXTitle("p_{T} (GeV/c)");
+    fh1EOverP = new TH2F("h1EOverP","TRACK matches #it{E}/#it{p}",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fh1EOverP->SetYTitle("#it{E}/#it{p}");
+    fh1EOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fh1EOverP);
     
-    fh2dR = new TH2F("h2dR","TRACK matches dR",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
-    fh2dR->SetXTitle("#Delta R (rad)");
-    fh2dR->SetXTitle("E cluster (GeV)");
+    fh2dR = new TH2F("h2dR","TRACK matches #Delta #it{R}",nptbins,ptmin,ptmax,ndRbins,dRmin,dRmax);
+    fh2dR->SetXTitle("#Delta #it{R} (rad)");
+    fh2dR->SetXTitle("#it{E} cluster (GeV)");
     outputContainer->Add(fh2dR) ;
     
-    fh2MatchdEdx = new TH2F("h2MatchdEdx","dE/dx vs. p for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
-    fh2MatchdEdx->SetXTitle("p (GeV/c)");
-    fh2MatchdEdx->SetYTitle("<dE/dx>");
+    fh2MatchdEdx = new TH2F("h2MatchdEdx","#it{dE/dx} vs. #it{p} for all matches",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
+    fh2MatchdEdx->SetXTitle("p (GeV/#it{c})");
+    fh2MatchdEdx->SetYTitle("#it{dE/dx}>");
     outputContainer->Add(fh2MatchdEdx);
     
-    fh2EledEdx = new TH2F("h2EledEdx","dE/dx vs. p for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
-    fh2EledEdx->SetXTitle("p (GeV/c)");
-    fh2EledEdx->SetYTitle("<dE/dx>");
+    fh2EledEdx = new TH2F("h2EledEdx","#it{dE/dx} vs. #it{p} for electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
+    fh2EledEdx->SetXTitle("p (GeV/#it{c})");
+    fh2EledEdx->SetYTitle("<#it{dE/dx}>");
     outputContainer->Add(fh2EledEdx) ;
     
-    fh1EOverPR02 = new TH2F("h1EOverPR02","TRACK matches E/p, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fh1EOverPR02->SetYTitle("E/p");
-    fh1EOverPR02->SetXTitle("p_{T} (GeV/c)");
+    fh1EOverPR02 = new TH2F("h1EOverPR02","TRACK matches #it{E}/#it{p}, all",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fh1EOverPR02->SetYTitle("#it{E}/#it{p}");
+    fh1EOverPR02->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fh1EOverPR02);        
 
-    fh1EleEOverP = new TH2F("h1EleEOverP","Electron candidates E/p (60<dEdx<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fh1EleEOverP->SetYTitle("E/p");
-    fh1EleEOverP->SetXTitle("p_{T} (GeV/c)");
+    fh1EleEOverP = new TH2F("h1EleEOverP","Electron candidates #it{E}/#it{p} (60<#it{dE/dx}<100)",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fh1EleEOverP->SetYTitle("#it{E}/#it{p}");
+    fh1EleEOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fh1EleEOverP);
   }
   
   if(fFillAllPi0Histo)
   {
     fhIM  = new TH2F ("hIM","Cluster pairs Invariant mass vs reconstructed pair energy, ncell > 1",nptbins,ptmin,ptmax,nmassbins,massmin,massmax); 
-    fhIM->SetXTitle("p_{T, cluster pairs} (GeV) ");
-    fhIM->SetYTitle("M_{cluster pairs} (GeV/c^{2})");
+    fhIM->SetXTitle("#it{p}_{T, cluster pairs} (GeV) ");
+    fhIM->SetYTitle("M_{cluster pairs} (GeV/#it{c}^{2})");
     outputContainer->Add(fhIM);
     
     fhAsym  = new TH2F ("hAssym","Cluster pairs Asymmetry vs reconstructed pair energy",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax); 
-    fhAsym->SetXTitle("p_{T, cluster pairs} (GeV) ");
-    fhAsym->SetYTitle("Asymmetry");
+    fhAsym->SetXTitle("#it{p}_{T, cluster pairs} (GeV) ");
+    fhAsym->SetYTitle("#it{Asymmetry}");
     outputContainer->Add(fhAsym);      
   }
   
@@ -2254,31 +2373,31 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
   {
     if(fFillAllTH3)
     {
-      fhXYZ  = new TH3F ("hXYZ","Cluster: x vs y vs z",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax); 
-      fhXYZ->SetXTitle("x (cm)");
-      fhXYZ->SetYTitle("y (cm)");
-      fhXYZ->SetZTitle("z (cm) ");
+      fhXYZ  = new TH3F ("hXYZ","Cluster: #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
+      fhXYZ->SetXTitle("#it{x} (cm)");
+      fhXYZ->SetYTitle("#it{y} (cm)");
+      fhXYZ->SetZTitle("#it{z} (cm) ");
       outputContainer->Add(fhXYZ);  
     }
     
     fhXNCells  = new TH2F ("hXNCells","Cluster X position vs N Cells per Cluster",xbins,xmin,xmax,nceclbins,nceclmin,nceclmax); 
-    fhXNCells->SetXTitle("x (cm)");
+    fhXNCells->SetXTitle("#it{x} (cm)");
     fhXNCells->SetYTitle("N cells per cluster");
     outputContainer->Add(fhXNCells);
     
     fhZNCells  = new TH2F ("hZNCells","Cluster Z position vs N Cells per Cluster",zbins,zmin,zmax,nceclbins,nceclmin,nceclmax); 
-    fhZNCells->SetXTitle("z (cm)");
+    fhZNCells->SetXTitle("#it{z} (cm)");
     fhZNCells->SetYTitle("N cells per cluster");
     outputContainer->Add(fhZNCells);
     
     fhXE  = new TH2F ("hXE","Cluster X position vs cluster energy",xbins,xmin,xmax,nptbins,ptmin,ptmax); 
-    fhXE->SetXTitle("x (cm)");
-    fhXE->SetYTitle("E (GeV)");
+    fhXE->SetXTitle("#it{x} (cm)");
+    fhXE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhXE);
     
     fhZE  = new TH2F ("hZE","Cluster Z position vs cluster energy",zbins,zmin,zmax,nptbins,ptmin,ptmax); 
-    fhZE->SetXTitle("z (cm)");
-    fhZE->SetYTitle("E (GeV)");
+    fhZE->SetXTitle("#it{z} (cm)");
+    fhZE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhZE);    
     
     fhRNCells  = new TH2F ("hRNCells","Cluster R position vs N Cells per Cluster",rbins,rmin,rmax,nceclbins,nceclmin,nceclmax); 
@@ -2288,18 +2407,18 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     
     fhYNCells  = new TH2F ("hYNCells","Cluster Y position vs N Cells per Cluster",ybins,ymin,ymax,nceclbins,nceclmin,nceclmax); 
-    fhYNCells->SetXTitle("y (cm)");
+    fhYNCells->SetXTitle("#it{y} (cm)");
     fhYNCells->SetYTitle("N cells per cluster");
     outputContainer->Add(fhYNCells);
     
     fhRE  = new TH2F ("hRE","Cluster R position vs cluster energy",rbins,rmin,rmax,nptbins,ptmin,ptmax); 
     fhRE->SetXTitle("r = #sqrt{x^{2}+y^{2}} (cm)");
-    fhRE->SetYTitle("E (GeV)");
+    fhRE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhRE);
     
     fhYE  = new TH2F ("hYE","Cluster Y position vs cluster energy",ybins,ymin,ymax,nptbins,ptmin,ptmax); 
-    fhYE->SetXTitle("y (cm)");
-    fhYE->SetYTitle("E (GeV)");
+    fhYE->SetXTitle("#it{y} (cm)");
+    fhYE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhYE);
   }
   
@@ -2307,28 +2426,28 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
   {
     fhRCellE  = new TH2F ("hRCellE","Cell R position vs cell energy",rbins,rmin,rmax,nptbins,ptmin,ptmax); 
     fhRCellE->SetXTitle("r = #sqrt{x^{2}+y^{2}} (cm)");
-    fhRCellE->SetYTitle("E (GeV)");
+    fhRCellE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhRCellE);
     
     fhXCellE  = new TH2F ("hXCellE","Cell X position vs cell energy",xbins,xmin,xmax,nptbins,ptmin,ptmax); 
-    fhXCellE->SetXTitle("x (cm)");
-    fhXCellE->SetYTitle("E (GeV)");
+    fhXCellE->SetXTitle("#it{x} (cm)");
+    fhXCellE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhXCellE);
     
     fhYCellE  = new TH2F ("hYCellE","Cell Y position vs cell energy",ybins,ymin,ymax,nptbins,ptmin,ptmax); 
-    fhYCellE->SetXTitle("y (cm)");
-    fhYCellE->SetYTitle("E (GeV)");
+    fhYCellE->SetXTitle("#it{y} (cm)");
+    fhYCellE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhYCellE);
     
     fhZCellE  = new TH2F ("hZCellE","Cell Z position vs cell energy",zbins,zmin,zmax,nptbins,ptmin,ptmax); 
-    fhZCellE->SetXTitle("z (cm)");
-    fhZCellE->SetYTitle("E (GeV)");
+    fhZCellE->SetXTitle("#it{z} (cm)");
+    fhZCellE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhZCellE);
     
-    fhXYZCell  = new TH3F ("hXYZCell","Cell : x vs y vs z",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax); 
-    fhXYZCell->SetXTitle("x (cm)");
-    fhXYZCell->SetYTitle("y (cm)");
-    fhXYZCell->SetZTitle("z (cm)");
+    fhXYZCell  = new TH3F ("hXYZCell","Cell : #it{x} vs #it{y} vs #it{z}",xbins,xmin,xmax,ybins,ymin,ymax,zbins,zmin,zmax);
+    fhXYZCell->SetXTitle("#it{x} (cm)");
+    fhXYZCell->SetYTitle("#it{y} (cm)");
+    fhXYZCell->SetZTitle("#it{z} (cm)");
     outputContainer->Add(fhXYZCell);
     
     
@@ -2339,80 +2458,84 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhDeltaCellClusterRNCells  = new TH2F ("hDeltaCellClusterRNCells","Cluster-Cell R position vs N Cells per Cluster",rbins*2,-dr,dr,nceclbins,nceclmin,nceclmax); 
     fhDeltaCellClusterRNCells->SetXTitle("r = #sqrt{x^{2}+y^{2}} (cm)");
-    fhDeltaCellClusterRNCells->SetYTitle("N cells per cluster");
+    fhDeltaCellClusterRNCells->SetYTitle("#it{n}_{cells per cluster}");
     outputContainer->Add(fhDeltaCellClusterRNCells);
     
     fhDeltaCellClusterXNCells  = new TH2F ("hDeltaCellClusterXNCells","Cluster-Cell X position vs N Cells per Cluster",xbins*2,-dx,dx,nceclbins,nceclmin,nceclmax); 
-    fhDeltaCellClusterXNCells->SetXTitle("x (cm)");
-    fhDeltaCellClusterXNCells->SetYTitle("N cells per cluster");
+    fhDeltaCellClusterXNCells->SetXTitle("#it{x} (cm)");
+    fhDeltaCellClusterXNCells->SetYTitle("#it{n}_{cells per cluster}");
     outputContainer->Add(fhDeltaCellClusterXNCells);
     
     fhDeltaCellClusterYNCells  = new TH2F ("hDeltaCellClusterYNCells","Cluster-Cell Y position vs N Cells per Cluster",ybins*2,-dy,dy,nceclbins,nceclmin,nceclmax); 
-    fhDeltaCellClusterYNCells->SetXTitle("y (cm)");
+    fhDeltaCellClusterYNCells->SetXTitle("#it{y} (cm)");
     fhDeltaCellClusterYNCells->SetYTitle("N cells per cluster");
     outputContainer->Add(fhDeltaCellClusterYNCells);
     
     fhDeltaCellClusterZNCells  = new TH2F ("hDeltaCellClusterZNCells","Cluster-Cell Z position vs N Cells per Cluster",zbins*2,-dz,dz,nceclbins,nceclmin,nceclmax); 
-    fhDeltaCellClusterZNCells->SetXTitle("z (cm)");
-    fhDeltaCellClusterZNCells->SetYTitle("N cells per cluster");
+    fhDeltaCellClusterZNCells->SetXTitle("#it{z} (cm)");
+    fhDeltaCellClusterZNCells->SetYTitle("#it{n}_{cells per cluster}");
     outputContainer->Add(fhDeltaCellClusterZNCells);
     
     fhDeltaCellClusterRE  = new TH2F ("hDeltaCellClusterRE","Cluster-Cell R position vs cluster energy",rbins*2,-dr,dr,nptbins,ptmin,ptmax); 
     fhDeltaCellClusterRE->SetXTitle("r = #sqrt{x^{2}+y^{2}} (cm)");
-    fhDeltaCellClusterRE->SetYTitle("E (GeV)");
+    fhDeltaCellClusterRE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhDeltaCellClusterRE);                
     
     fhDeltaCellClusterXE  = new TH2F ("hDeltaCellClusterXE","Cluster-Cell X position vs cluster energy",xbins*2,-dx,dx,nptbins,ptmin,ptmax); 
-    fhDeltaCellClusterXE->SetXTitle("x (cm)");
-    fhDeltaCellClusterXE->SetYTitle("E (GeV)");
+    fhDeltaCellClusterXE->SetXTitle("#it{x} (cm)");
+    fhDeltaCellClusterXE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhDeltaCellClusterXE);
     
     fhDeltaCellClusterYE  = new TH2F ("hDeltaCellClusterYE","Cluster-Cell Y position vs cluster energy",ybins*2,-dy,dy,nptbins,ptmin,ptmax); 
-    fhDeltaCellClusterYE->SetXTitle("y (cm)");
-    fhDeltaCellClusterYE->SetYTitle("E (GeV)");
+    fhDeltaCellClusterYE->SetXTitle("#it{y} (cm)");
+    fhDeltaCellClusterYE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhDeltaCellClusterYE);
     
     fhDeltaCellClusterZE  = new TH2F ("hDeltaCellClusterZE","Cluster-Cell Z position vs cluster energy",zbins*2,-dz,dz,nptbins,ptmin,ptmax); 
-    fhDeltaCellClusterZE->SetXTitle("z (cm)");
-    fhDeltaCellClusterZE->SetYTitle("E (GeV)");
+    fhDeltaCellClusterZE->SetXTitle("#it{z} (cm)");
+    fhDeltaCellClusterZE->SetYTitle("#it{E} (GeV)");
     outputContainer->Add(fhDeltaCellClusterZE);
     
     fhEtaPhiAmp  = new TH3F ("hEtaPhiAmp","Cell #eta vs cell #phi vs cell energy",netabins,etamin,etamax,nphibins,phimin,phimax,nptbins,ptmin,ptmax); 
     fhEtaPhiAmp->SetXTitle("#eta ");
     fhEtaPhiAmp->SetYTitle("#phi (rad)");
-    fhEtaPhiAmp->SetZTitle("E (GeV) ");
+    fhEtaPhiAmp->SetZTitle("#it{E} (GeV) ");
     outputContainer->Add(fhEtaPhiAmp);         
     
   }
   
   //Calo cells
   fhNCells  = new TH1F ("hNCells","# cells", ncebins,ncemin+0.5,ncemax); 
-  fhNCells->SetXTitle("n cells");
+  fhNCells->SetXTitle("#it{n}_{cells}");
   outputContainer->Add(fhNCells);
+
+  fhNCellsCutAmpMin  = new TH1F ("hNCellsCutAmpMin",Form("# cells amp > %1.2f-%1.2f",fEMCALCellAmpMin,fPHOSCellAmpMin), ncebins,ncemin+0.5,ncemax);
+  fhNCellsCutAmpMin->SetXTitle("#it{n}_{cells}");
+  outputContainer->Add(fhNCellsCutAmpMin);
   
-  fhAmplitude  = new TH1F ("hAmplitude","Cell Energy", nptbins*2,ptmin,ptmax); 
-  fhAmplitude->SetXTitle("Cell Energy (GeV)");
+  fhAmplitude  = new TH1F ("hAmplitude","#it{E}_{cell}", nptbins*2,ptmin,ptmax);
+  fhAmplitude->SetXTitle("#it{E}_{cell} (GeV)");
   outputContainer->Add(fhAmplitude);
   
-  fhAmpId  = new TH2F ("hAmpId","Cell Energy", nfineptbins,ptfinemin,ptfinemax,fNMaxRows*fNMaxCols*fNModules,0,fNMaxRows*fNMaxCols*fNModules); 
-  fhAmpId->SetXTitle("Cell Energy (GeV)");
+  fhAmpId  = new TH2F ("hAmpId","#it{E}_{cell}", nfineptbins,ptfinemin,ptfinemax,fNMaxRows*fNMaxCols*fNModules,0,fNMaxRows*fNMaxCols*fNModules); 
+  fhAmpId->SetXTitle("#it{E}_{cell} (GeV)");
   outputContainer->Add(fhAmpId);
   
   if(fFillAllCellTimeHisto) 
   {
     fhCellTimeSpreadRespectToCellMax = new TH2F ("hCellTimeSpreadRespectToCellMax","t_{cell max}-t_{cell i} per cluster", nptbins,ptmin,ptmax,tdbins,tdmin,tdmax); 
-    fhCellTimeSpreadRespectToCellMax->SetXTitle("E (GeV)");
-    fhCellTimeSpreadRespectToCellMax->SetYTitle("#Delta t_{cell max-i} (ns)");
+    fhCellTimeSpreadRespectToCellMax->SetXTitle("#it{E} (GeV)");
+    fhCellTimeSpreadRespectToCellMax->SetYTitle("#Delta #it{t}_{cell max-i} (ns)");
     outputContainer->Add(fhCellTimeSpreadRespectToCellMax);
     
     fhClusterMaxCellDiffAverageTime = new TH2F ("hClusterMaxCellDiffAverageTime","t_{cell max}-t_{average} per cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax); 
-    fhClusterMaxCellDiffAverageTime->SetXTitle("E (GeV)");
-    fhClusterMaxCellDiffAverageTime->SetYTitle("#Delta t_{cell max - average} (ns)");
+    fhClusterMaxCellDiffAverageTime->SetXTitle("#it{E} (GeV)");
+    fhClusterMaxCellDiffAverageTime->SetYTitle("#Delta #it{t}_{cell max - average} (ns)");
     outputContainer->Add(fhClusterMaxCellDiffAverageTime);
         
     fhClusterMaxCellDiffWeightedTime = new TH2F ("hClusterMaxCellDiffWeightedTime","t_{cell max}-t_{weighted} per cluster", nptbins,ptmin,ptmax, tdbins,tdmin,tdmax); 
-    fhClusterMaxCellDiffWeightedTime->SetXTitle("E (GeV)");
-    fhClusterMaxCellDiffWeightedTime->SetYTitle("#Delta t_{cell max - weighted} (ns)");
+    fhClusterMaxCellDiffWeightedTime->SetXTitle("#it{E} (GeV)");
+    fhClusterMaxCellDiffWeightedTime->SetYTitle("#Delta #it{t}_{cell max - weighted} (ns)");
     outputContainer->Add(fhClusterMaxCellDiffWeightedTime);
     
     fhCellIdCellLargeTimeSpread= new TH1F ("hCellIdCellLargeTimeSpread","Cells with time 100 ns larger than cell max in cluster ", 
@@ -2420,32 +2543,32 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     fhCellIdCellLargeTimeSpread->SetXTitle("Absolute Cell Id");
     outputContainer->Add(fhCellIdCellLargeTimeSpread);
     
-    fhTime  = new TH1F ("hTime","Cell Time",ntimebins,timemin,timemax); 
-    fhTime->SetXTitle("Cell Time (ns)");
+    fhTime  = new TH1F ("hTime","#it{t}_{cell}",ntimebins,timemin,timemax); 
+    fhTime->SetXTitle("#it{t}_{cell} (ns)");
     outputContainer->Add(fhTime);
     
-    fhTimeVz  = new TH2F ("hTimeVz","Cell Time vs vertex, amplitude > 0.5 GeV",100, 0, 50,ntimebins,timemin,timemax); 
+    fhTimeVz  = new TH2F ("hTimeVz","#it{t}_{cell} vs vertex, amplitude > 0.5 GeV",100, 0, 50,ntimebins,timemin,timemax); 
     fhTimeVz->SetXTitle("|v_{z}| (cm)");
-    fhTimeVz->SetYTitle("Cell Time (ns)");
+    fhTimeVz->SetYTitle("#it{t}_{cell} (ns)");
     outputContainer->Add(fhTimeVz);
     
-    fhTimeId  = new TH2F ("hTimeId","Cell Time vs Absolute Id",
+    fhTimeId  = new TH2F ("hTimeId","#it{t}_{cell} vs Absolute Id",
                           ntimebins,timemin,timemax,fNMaxRows*fNMaxCols*fNModules,0,fNMaxRows*fNMaxCols*fNModules); 
-    fhTimeId->SetXTitle("Cell Time (ns)");
+    fhTimeId->SetXTitle("#it{t}_{cell} (ns)");
     fhTimeId->SetYTitle("Cell Absolute Id");
     outputContainer->Add(fhTimeId);
     
-    fhTimeAmp  = new TH2F ("hTimeAmp","Cell Time vs Cell Energy",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax); 
-    fhTimeAmp->SetYTitle("Cell Time (ns)");
-    fhTimeAmp->SetXTitle("Cell Energy (GeV)");
+    fhTimeAmp  = new TH2F ("hTimeAmp","#it{t}_{cell} vs #it{E}_{cell}",nptbins*2,ptmin,ptmax,ntimebins,timemin,timemax); 
+    fhTimeAmp->SetYTitle("#it{t}_{cell} (ns)");
+    fhTimeAmp->SetXTitle("#it{E}_{cell} (GeV)");
     outputContainer->Add(fhTimeAmp);
     
   }
   
   fhCellECross  = new TH2F ("hCellECross","1 - Energy in cross around cell /  cell energy",
                             nptbins,ptmin,ptmax, 400,-1,1.); 
-  fhCellECross->SetXTitle("E_{cell} (GeV) ");
-  fhCellECross->SetYTitle("1- E_{cross}/E_{cell}");
+  fhCellECross->SetXTitle("#it{E}_{cell} (GeV) ");
+  fhCellECross->SetYTitle("1- #it{E}_{cross}/#it{E}_{cell}");
   outputContainer->Add(fhCellECross);    
   
   
@@ -2458,8 +2581,8 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhCaloCorrNClusters);
     
     fhCaloCorrEClusters  = new TH2F ("hCaloCorrEClusters","summed energy of clusters in EMCAL vs PHOS", nptbins,ptmin,ptmax*2,nptbins,ptmin,ptmax*2);
-    fhCaloCorrEClusters->SetXTitle("#Sigma E of clusters in EMCAL (GeV)");
-    fhCaloCorrEClusters->SetYTitle("#Sigma E of clusters in PHOS (GeV)");
+    fhCaloCorrEClusters->SetXTitle("#Sigma #it{E} of clusters in EMCAL (GeV)");
+    fhCaloCorrEClusters->SetYTitle("#Sigma #it{E} of clusters in PHOS (GeV)");
     outputContainer->Add(fhCaloCorrEClusters);
     
     fhCaloCorrNCells  = new TH2F ("hCaloCorrNCells","# Cells in EMCAL vs PHOS", ncebins,ncemin,ncemax, ncebins,ncemin,ncemax); 
@@ -2468,8 +2591,8 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhCaloCorrNCells);
     
     fhCaloCorrECells  = new TH2F ("hCaloCorrECells","summed energy of Cells in EMCAL vs PHOS", nptbins*2,ptmin,ptmax*4,nptbins*2,ptmin,ptmax*4);
-    fhCaloCorrECells->SetXTitle("#Sigma E of Cells in EMCAL (GeV)");
-    fhCaloCorrECells->SetYTitle("#Sigma E of Cells in PHOS (GeV)");
+    fhCaloCorrECells->SetXTitle("#Sigma #it{E} of Cells in EMCAL (GeV)");
+    fhCaloCorrECells->SetYTitle("#Sigma #it{E} of Cells in PHOS (GeV)");
     outputContainer->Add(fhCaloCorrECells);
     
     //Calorimeter VS V0 signal
@@ -2480,7 +2603,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhCaloV0SCorrEClusters  = new TH2F ("hCaloV0SEClusters",Form("summed energy of clusters in %s vs V0 signal",fCalorimeter.Data()), nv0sbins,nv0smin,nv0smax,nptbins,ptmin,ptmax*2);
     fhCaloV0SCorrEClusters->SetXTitle("V0 signal");
-    fhCaloV0SCorrEClusters->SetYTitle(Form("#Sigma E of clusters in %s (GeV)",fCalorimeter.Data()));
+    fhCaloV0SCorrEClusters->SetYTitle(Form("#Sigma #it{E} of clusters in %s (GeV)",fCalorimeter.Data()));
     outputContainer->Add(fhCaloV0SCorrEClusters);
     
     fhCaloV0SCorrNCells  = new TH2F ("hCaloV0SNCells",Form("# Cells in %s vs V0 signal",fCalorimeter.Data()), nv0sbins,nv0smin,nv0smax, ncebins,ncemin,ncemax); 
@@ -2490,7 +2613,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhCaloV0SCorrECells  = new TH2F ("hCaloV0SECells",Form("summed energy of Cells in %s vs V0 signal",fCalorimeter.Data()), nv0sbins,nv0smin,nv0smax,nptbins,ptmin,ptmax*2);
     fhCaloV0SCorrECells->SetXTitle("V0 signal");
-    fhCaloV0SCorrECells->SetYTitle(Form("#Sigma E of Cells in %s (GeV)",fCalorimeter.Data()));
+    fhCaloV0SCorrECells->SetYTitle(Form("#Sigma #it{E} of Cells in %s (GeV)",fCalorimeter.Data()));
     outputContainer->Add(fhCaloV0SCorrECells);    
     
     //Calorimeter VS V0 multiplicity
@@ -2501,7 +2624,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhCaloV0MCorrEClusters  = new TH2F ("hCaloV0MEClusters",Form("summed energy of clusters in %s vs V0 signal",fCalorimeter.Data()), nv0mbins,nv0mmin,nv0mmax,nptbins,ptmin,ptmax*2);
     fhCaloV0MCorrEClusters->SetXTitle("V0 signal");
-    fhCaloV0MCorrEClusters->SetYTitle(Form("#Sigma E of clusters in %s (GeV)",fCalorimeter.Data()));
+    fhCaloV0MCorrEClusters->SetYTitle(Form("#Sigma #it{E} of clusters in %s (GeV)",fCalorimeter.Data()));
     outputContainer->Add(fhCaloV0MCorrEClusters);
     
     fhCaloV0MCorrNCells  = new TH2F ("hCaloV0MNCells",Form("# Cells in %s vs V0 signal",fCalorimeter.Data()), nv0mbins,nv0mmin,nv0mmax, ncebins,ncemin,ncemax); 
@@ -2511,7 +2634,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhCaloV0MCorrECells  = new TH2F ("hCaloV0MECells",Form("summed energy of Cells in %s vs V0 signal",fCalorimeter.Data()), nv0mbins,nv0mmin,nv0mmax,nptbins,ptmin,ptmax*2);
     fhCaloV0MCorrECells->SetXTitle("V0 signal");
-    fhCaloV0MCorrECells->SetYTitle(Form("#Sigma E of Cells in %s (GeV)",fCalorimeter.Data()));
+    fhCaloV0MCorrECells->SetYTitle(Form("#Sigma #it{E} of Cells in %s (GeV)",fCalorimeter.Data()));
     outputContainer->Add(fhCaloV0MCorrECells);    
     
     //Calorimeter VS Track multiplicity
@@ -2522,7 +2645,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhCaloTrackMCorrEClusters  = new TH2F ("hCaloTrackMEClusters",Form("summed energy of clusters in %s vs # tracks",fCalorimeter.Data()), ntrmbins,ntrmmin,ntrmmax,nptbins,ptmin,ptmax*2);
     fhCaloTrackMCorrEClusters->SetXTitle("# tracks");
-    fhCaloTrackMCorrEClusters->SetYTitle(Form("#Sigma E of clusters in %s (GeV)",fCalorimeter.Data()));
+    fhCaloTrackMCorrEClusters->SetYTitle(Form("#Sigma #it{E} of clusters in %s (GeV)",fCalorimeter.Data()));
     outputContainer->Add(fhCaloTrackMCorrEClusters);
     
     fhCaloTrackMCorrNCells  = new TH2F ("hCaloTrackMNCells",Form("# Cells in %s vs # tracks",fCalorimeter.Data()), ntrmbins,ntrmmin,ntrmmax, ncebins,ncemin,ncemax); 
@@ -2532,7 +2655,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     
     fhCaloTrackMCorrECells  = new TH2F ("hCaloTrackMECells",Form("summed energy of Cells in %s vs # tracks",fCalorimeter.Data()), ntrmbins,ntrmmin,ntrmmax,nptbins,ptmin,ptmax*2);
     fhCaloTrackMCorrECells->SetXTitle("# tracks");
-    fhCaloTrackMCorrECells->SetYTitle(Form("#Sigma E of Cells in %s (GeV)",fCalorimeter.Data()));
+    fhCaloTrackMCorrECells->SetYTitle(Form("#Sigma #it{E} of Cells in %s (GeV)",fCalorimeter.Data()));
     outputContainer->Add(fhCaloTrackMCorrECells);    
     
     fhCaloCenNClusters  = new TH2F ("hCaloCenNClusters","# clusters in calorimeter vs centrality",100,0,100,nclbins,nclmin,nclmax);
@@ -2541,7 +2664,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhCaloCenNClusters);
     
     fhCaloCenEClusters  = new TH2F ("hCaloCenEClusters","summed energy of clusters in calorimeter vs centrality",100,0,100,nptbins,ptmin,ptmax*2);
-    fhCaloCenEClusters->SetYTitle("#Sigma E of clusters in calorimeter (GeV)");
+    fhCaloCenEClusters->SetYTitle("#Sigma #it{E} of clusters in calorimeter (GeV)");
     fhCaloCenEClusters->SetXTitle("Centrality");
     outputContainer->Add(fhCaloCenEClusters);
     
@@ -2551,7 +2674,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhCaloCenNCells);
     
     fhCaloCenECells  = new TH2F ("hCaloCenECells","summed energy of Cells in calorimeter vs centrality",100,0,100,nptbins*2,ptmin,ptmax*4);
-    fhCaloCenECells->SetYTitle("#Sigma E of Cells in calorimeter (GeV)");
+    fhCaloCenECells->SetYTitle("#Sigma #it{E} of Cells in calorimeter (GeV)");
     fhCaloCenECells->SetXTitle("Centrality");
     outputContainer->Add(fhCaloCenECells);
 
@@ -2561,7 +2684,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhCaloEvPNClusters);
     
     fhCaloEvPEClusters  = new TH2F ("hCaloEvPEClusters","summed energy of clusters in calorimeter vs  event plane angle",100,0,TMath::Pi(),nptbins,ptmin,ptmax*2);
-    fhCaloEvPEClusters->SetYTitle("#Sigma E of clusters in calorimeter (GeV)");
+    fhCaloEvPEClusters->SetYTitle("#Sigma #it{E} of clusters in calorimeter (GeV)");
     fhCaloEvPEClusters->SetXTitle("Event plane angle (rad)");
     outputContainer->Add(fhCaloEvPEClusters);
     
@@ -2571,7 +2694,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhCaloEvPNCells);
     
     fhCaloEvPECells  = new TH2F ("hCaloEvPECells","summed energy of Cells in calorimeter vs  event plane angle",100,0,TMath::Pi(),nptbins*2,ptmin,ptmax*4);
-    fhCaloEvPECells->SetYTitle("#Sigma E of Cells in calorimeter (GeV)");
+    fhCaloEvPECells->SetYTitle("#Sigma #it{E} of Cells in calorimeter (GeV)");
     fhCaloEvPECells->SetXTitle("Event plane angle (rad)");
     outputContainer->Add(fhCaloEvPECells);
     
@@ -2581,12 +2704,12 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
   //Module histograms
   
   fhEMod  = new TH2F ("hE_Mod","Cluster reconstructed Energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules); 
-  fhEMod->SetXTitle("E (GeV)");
+  fhEMod->SetXTitle("#it{E} (GeV)");
   fhEMod->SetYTitle("Module");
   outputContainer->Add(fhEMod);
   
   fhAmpMod  = new TH2F ("hAmp_Mod","Cell energy in each present Module",nptbins,ptmin,ptmax,fNModules,0,fNModules); 
-  fhAmpMod->SetXTitle("E (GeV)");
+  fhAmpMod->SetXTitle("#it{E} (GeV)");
   fhAmpMod->SetYTitle("Module");
   outputContainer->Add(fhAmpMod);
   
@@ -2604,7 +2727,7 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
   outputContainer->Add(fhNClustersMod);
   
   fhNCellsMod  = new TH2F ("hNCells_Mod","# cells vs Module", ncebins,ncemin+0.5,ncemax,fNModules,0,fNModules); 
-  fhNCellsMod->SetXTitle("n cells");
+  fhNCellsMod->SetXTitle("#it{n}_{cells}");
   fhNCellsMod->SetYTitle("Module");
   outputContainer->Add(fhNCellsMod);
   
@@ -2651,15 +2774,15 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     fhNCellsPerClusterMod[imod]  = new TH2F (Form("hNCellsPerCluster_Mod%d",imod),
                                              Form("# cells per cluster vs cluster energy in Module %d",imod), 
                                              nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax); 
-    fhNCellsPerClusterMod[imod]->SetXTitle("E (GeV)");
-    fhNCellsPerClusterMod[imod]->SetYTitle("n cells");
+    fhNCellsPerClusterMod[imod]->SetXTitle("#it{E} (GeV)");
+    fhNCellsPerClusterMod[imod]->SetYTitle("#it{n}_{cells}");
     outputContainer->Add(fhNCellsPerClusterMod[imod]);
     
     fhNCellsPerClusterModNoCut[imod]  = new TH2F (Form("hNCellsPerClusterNoCut_Mod%d",imod),
                                                   Form("# cells per cluster vs cluster energy in Module %d, no cut",imod), 
                                                   nptbins,ptmin,ptmax, nceclbins,nceclmin,nceclmax); 
-    fhNCellsPerClusterModNoCut[imod]->SetXTitle("E (GeV)");
-    fhNCellsPerClusterModNoCut[imod]->SetYTitle("n cells");
+    fhNCellsPerClusterModNoCut[imod]->SetXTitle("#it{E} (GeV)");
+    fhNCellsPerClusterModNoCut[imod]->SetYTitle("#it{n}_{cells}");
     outputContainer->Add(fhNCellsPerClusterModNoCut[imod]);
     
     if(fFillAllCellTimeHisto) 
@@ -2667,10 +2790,10 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
       for(Int_t ircu = 0; ircu < fNRCU; ircu++)
       {
         fhTimeAmpPerRCU[imod*fNRCU+ircu]  = new TH2F (Form("hTimeAmp_Mod%d_RCU%d",imod,ircu),
-                                                      Form("Cell Energy vs Cell Time in Module %d, RCU %d ",imod,ircu), 
+                                                      Form("#it{E}_{cell} vs #it{t}_{cell} in Module %d, RCU %d ",imod,ircu), 
                                                       nptbins,ptmin,ptmax,ntimebins,timemin,timemax); 
-        fhTimeAmpPerRCU[imod*fNRCU+ircu]->SetXTitle("E (GeV)");
-        fhTimeAmpPerRCU[imod*fNRCU+ircu]->SetYTitle("time (ns)");
+        fhTimeAmpPerRCU[imod*fNRCU+ircu]->SetXTitle("#it{E} (GeV)");
+        fhTimeAmpPerRCU[imod*fNRCU+ircu]->SetYTitle("#it{t} (ns)");
         outputContainer->Add(fhTimeAmpPerRCU[imod*fNRCU+ircu]);
         
       }
@@ -2681,8 +2804,8 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
       fhIMMod[imod]  = new TH2F (Form("hIM_Mod%d",imod),
                                  Form("Cluster pairs Invariant mass vs reconstructed pair energy in Module %d, n cell > 1",imod),
                                  nptbins,ptmin,ptmax,nmassbins,massmin,massmax); 
-      fhIMMod[imod]->SetXTitle("p_{T, cluster pairs} (GeV) ");
-      fhIMMod[imod]->SetYTitle("M_{cluster pairs} (GeV/c^{2})");
+      fhIMMod[imod]->SetXTitle("#it{p}_{T, cluster pairs} (GeV) ");
+      fhIMMod[imod]->SetYTitle("#it{M}_{cluster pairs} (GeV/#it{c}^{2})");
       outputContainer->Add(fhIMMod[imod]);
       
     }
@@ -2701,37 +2824,37 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
         fhRecoMCRatioE[iPart][iCh]  = new TH2F (Form("hRecoMCRatioE_%s_Match%d",particleName[iPart].Data(),iCh),
                                                 Form("Reconstructed/Generated E, %s, Matched %d",particleName[iPart].Data(),iCh), 
                                                 nptbins, ptmin, ptmax, 200,0,2); 
-        fhRecoMCRatioE[iPart][iCh]->SetYTitle("E_{reconstructed}/E_{generated}");
-        fhRecoMCRatioE[iPart][iCh]->SetXTitle("E_{reconstructed} (GeV)");
+        fhRecoMCRatioE[iPart][iCh]->SetYTitle("#it{E}_{reconstructed}/#it{E}_{generated}");
+        fhRecoMCRatioE[iPart][iCh]->SetXTitle("#it{E}_{reconstructed} (GeV)");
         outputContainer->Add(fhRecoMCRatioE[iPart][iCh]);
         
         
         fhRecoMCDeltaE[iPart][iCh]  = new TH2F (Form("hRecoMCDeltaE_%s_Match%d",particleName[iPart].Data(),iCh),
                                                 Form("Generated - Reconstructed E, %s, Matched %d",particleName[iPart].Data(),iCh), 
                                                 nptbins, ptmin, ptmax, nptbins*2,-ptmax,ptmax); 
-        fhRecoMCDeltaE[iPart][iCh]->SetYTitle("#Delta E (GeV)");
-        fhRecoMCDeltaE[iPart][iCh]->SetXTitle("E_{reconstructed} (GeV)");
+        fhRecoMCDeltaE[iPart][iCh]->SetYTitle("#Delta #it{E} (GeV)");
+        fhRecoMCDeltaE[iPart][iCh]->SetXTitle("#it{E}_{reconstructed} (GeV)");
         outputContainer->Add(fhRecoMCDeltaE[iPart][iCh]);
         
         fhRecoMCDeltaPhi[iPart][iCh]  = new TH2F (Form("hRecoMCDeltaPhi_%s_Match%d",particleName[iPart].Data(),iCh),
                                                   Form("Generated - Reconstructed #phi, %s, Matched %d",particleName[iPart].Data(),iCh),
                                                   nptbins, ptmin, ptmax, nphibins*2,-phimax,phimax); 
         fhRecoMCDeltaPhi[iPart][iCh]->SetYTitle("#Delta #phi (rad)");
-        fhRecoMCDeltaPhi[iPart][iCh]->SetXTitle("E_{reconstructed} (GeV)");
+        fhRecoMCDeltaPhi[iPart][iCh]->SetXTitle("#it{E}_{reconstructed} (GeV)");
         outputContainer->Add(fhRecoMCDeltaPhi[iPart][iCh]);
         
         fhRecoMCDeltaEta[iPart][iCh]  = new TH2F (Form("hRecoMCDeltaEta_%s_Match%d",particleName[iPart].Data(),iCh),
                                                   Form("Generated - Reconstructed #eta, %s, Matched %d",particleName[iPart].Data(),iCh),
                                                   nptbins, ptmin, ptmax,netabins*2,-etamax,etamax); 
         fhRecoMCDeltaEta[iPart][iCh]->SetYTitle("#Delta #eta ");
-        fhRecoMCDeltaEta[iPart][iCh]->SetXTitle("E_{reconstructed} (GeV)");
+        fhRecoMCDeltaEta[iPart][iCh]->SetXTitle("#it{E}_{reconstructed} (GeV)");
         outputContainer->Add(fhRecoMCDeltaEta[iPart][iCh]);
         
         fhRecoMCE[iPart][iCh]  = new TH2F (Form("hRecoMCE_%s_Match%d",particleName[iPart].Data(),iCh),
-                                           Form("E distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
+                                           Form("#it{E} distribution, reconstructed vs generated, %s, Matched %d",particleName[iPart].Data(),iCh),
                                            nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
-        fhRecoMCE[iPart][iCh]->SetXTitle("E_{rec} (GeV)");
-        fhRecoMCE[iPart][iCh]->SetYTitle("E_{gen} (GeV)");
+        fhRecoMCE[iPart][iCh]->SetXTitle("#it{E}_{rec} (GeV)");
+        fhRecoMCE[iPart][iCh]->SetYTitle("#it{E}_{gen} (GeV)");
         outputContainer->Add(fhRecoMCE[iPart][iCh]);     
         
         fhRecoMCPhi[iPart][iCh]  = new TH2F (Form("hRecoMCPhi_%s_Match%d",particleName[iPart].Data(),iCh),
@@ -2754,13 +2877,13 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     for(Int_t iPart = 0; iPart < 4; iPart++)
     {
       fhGenMCE[iPart]     = new TH1F(Form("hGenMCE_%s",particleName[iPart].Data()) ,
-                                     Form("p_{T} of generated %s",particleName[iPart].Data()),
+                                     Form("#it{p}_{T} of generated %s",particleName[iPart].Data()),
                                      nptbins,ptmin,ptmax);
       fhGenMCEtaPhi[iPart] = new TH2F(Form("hGenMCEtaPhi_%s",particleName[iPart].Data()),
                                       Form("Y vs #phi of generated %s",particleName[iPart].Data()),
                                       netabins,etamin,etamax,nphibins,phimin,phimax);
        
-      fhGenMCE[iPart]    ->SetXTitle("p_{T} (GeV/c)");
+      fhGenMCE[iPart]    ->SetXTitle("#it{p}_{T} (GeV/#it{c})");
       fhGenMCEtaPhi[iPart]->SetXTitle("#eta");
       fhGenMCEtaPhi[iPart]->SetYTitle("#phi (rad)");
       
@@ -2769,13 +2892,13 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
       
       
       fhGenMCAccE[iPart]     = new TH1F(Form("hGenMCAccE_%s",particleName[iPart].Data()) ,
-                                        Form("p_{T} of generated %s",particleName[iPart].Data()),
+                                        Form("#it{E} of generated %s",particleName[iPart].Data()),
                                         nptbins,ptmin,ptmax);
       fhGenMCAccEtaPhi[iPart] = new TH2F(Form("hGenMCAccEtaPhi_%s",particleName[iPart].Data()),
                                          Form("Y vs #phi of generated %s",particleName[iPart].Data()),
                                          netabins,etamin,etamax,nphibins,phimin,phimax);
        
-      fhGenMCAccE[iPart]    ->SetXTitle("p_{T} (GeV/c)");
+      fhGenMCAccE[iPart]    ->SetXTitle("#it{E} (GeV)");
       fhGenMCAccEtaPhi[iPart]->SetXTitle("#eta");
       fhGenMCAccEtaPhi[iPart]->SetYTitle("#phi (rad)");
       
@@ -2787,100 +2910,100 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     //Vertex of generated particles 
     
     fhEMVxyz  = new TH2F ("hEMVxyz","Production vertex of reconstructed ElectroMagnetic particles",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);//,100,0,500); 
-    fhEMVxyz->SetXTitle("v_{x}");
-    fhEMVxyz->SetYTitle("v_{y}");
+    fhEMVxyz->SetXTitle("#it{v}_{x}");
+    fhEMVxyz->SetYTitle("#it{v}_{y}");
     //fhEMVxyz->SetZTitle("v_{z}");
     outputContainer->Add(fhEMVxyz);
     
     fhHaVxyz  = new TH2F ("hHaVxyz","Production vertex of reconstructed hadrons",nvdistbins,vdistmin,vdistmax,nvdistbins,vdistmin,vdistmax);//,100,0,500); 
-    fhHaVxyz->SetXTitle("v_{x}");
-    fhHaVxyz->SetYTitle("v_{y}");
+    fhHaVxyz->SetXTitle("#it{v}_{x}");
+    fhHaVxyz->SetYTitle("#it{v}_{y}");
     //fhHaVxyz->SetZTitle("v_{z}");
     outputContainer->Add(fhHaVxyz);
     
     fhEMR  = new TH2F ("hEMR","Distance to production vertex of reconstructed ElectroMagnetic particles vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax); 
-    fhEMR->SetXTitle("E (GeV)");
+    fhEMR->SetXTitle("#it{E} (GeV)");
     fhEMR->SetYTitle("TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
     outputContainer->Add(fhEMR);
     
     fhHaR  = new TH2F ("hHaR","Distance to production vertex of reconstructed Hadrons vs E rec",nptbins,ptmin,ptmax,nvdistbins,vdistmin,vdistmax); 
-    fhHaR->SetXTitle("E (GeV)");
+    fhHaR->SetXTitle("#it{E} (GeV)");
     fhHaR->SetYTitle("TMath::Sqrt(v_{x}^{2}+v_{y}^{2})");
     outputContainer->Add(fhHaR);
     
     
     //Track Matching 
     
-    fhMCEle1EOverP = new TH2F("hMCEle1EOverP","TRACK matches E/p, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCEle1EOverP->SetYTitle("E/p");
-    fhMCEle1EOverP->SetXTitle("p_{T} (GeV/c)");
+    fhMCEle1EOverP = new TH2F("hMCEle1EOverP","TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCEle1EOverP->SetYTitle("#it{E}/#it{p}");
+    fhMCEle1EOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCEle1EOverP);
     
     fhMCEle1dR = new TH1F("hMCEle1dR","TRACK matches dR, MC electrons",ndRbins,dRmin,dRmax);
-    fhMCEle1dR->SetXTitle("#Delta R (rad)");
+    fhMCEle1dR->SetXTitle("#Delta #it{R} (rad)");
     outputContainer->Add(fhMCEle1dR) ;
     
-    fhMCEle2MatchdEdx = new TH2F("hMCEle2MatchdEdx","dE/dx vs. p for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
-    fhMCEle2MatchdEdx->SetXTitle("p (GeV/c)");
-    fhMCEle2MatchdEdx->SetYTitle("<dE/dx>");
+    fhMCEle2MatchdEdx = new TH2F("hMCEle2MatchdEdx","#it{dE/dx} vs. #it{p} for all matches, MC electrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
+    fhMCEle2MatchdEdx->SetXTitle("#it{p} (GeV/#it{c})");
+    fhMCEle2MatchdEdx->SetYTitle("<#it{dE/dx}>");
     outputContainer->Add(fhMCEle2MatchdEdx);
     
-    fhMCChHad1EOverP = new TH2F("hMCChHad1EOverP","TRACK matches E/p, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCChHad1EOverP->SetYTitle("E/p");
-    fhMCChHad1EOverP->SetXTitle("p_{T} (GeV/c)");
+    fhMCChHad1EOverP = new TH2F("hMCChHad1EOverP","TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCChHad1EOverP->SetYTitle("#it{E}/#it{p}");
+    fhMCChHad1EOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCChHad1EOverP);
     
     fhMCChHad1dR = new TH1F("hMCChHad1dR","TRACK matches dR, MC charged hadrons",ndRbins,dRmin,dRmax);
     fhMCChHad1dR->SetXTitle("#Delta R (rad)");
     outputContainer->Add(fhMCChHad1dR) ;
     
-    fhMCChHad2MatchdEdx = new TH2F("hMCChHad2MatchdEdx","dE/dx vs. p for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
-    fhMCChHad2MatchdEdx->SetXTitle("p (GeV/c)");
-    fhMCChHad2MatchdEdx->SetYTitle("<dE/dx>");
+    fhMCChHad2MatchdEdx = new TH2F("hMCChHad2MatchdEdx","#it{dE/dx} vs. #it{p} for all matches, MC charged hadrons",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
+    fhMCChHad2MatchdEdx->SetXTitle("#it{p} (GeV/#it{c})");
+    fhMCChHad2MatchdEdx->SetYTitle("#it{dE/dx}>");
     outputContainer->Add(fhMCChHad2MatchdEdx);
     
-    fhMCNeutral1EOverP = new TH2F("hMCNeutral1EOverP","TRACK matches E/p, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCNeutral1EOverP->SetYTitle("E/p");
-    fhMCNeutral1EOverP->SetXTitle("p_{T} (GeV/c)");
+    fhMCNeutral1EOverP = new TH2F("hMCNeutral1EOverP","TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCNeutral1EOverP->SetYTitle("#it{E}/#it{p}");
+    fhMCNeutral1EOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCNeutral1EOverP);
     
     fhMCNeutral1dR = new TH1F("hMCNeutral1dR","TRACK matches dR, MC neutrals",ndRbins,dRmin,dRmax);
-    fhMCNeutral1dR->SetXTitle("#Delta R (rad)");
+    fhMCNeutral1dR->SetXTitle("#Delta #it{R} (rad)");
     outputContainer->Add(fhMCNeutral1dR) ;
     
-    fhMCNeutral2MatchdEdx = new TH2F("hMCNeutral2MatchdEdx","dE/dx vs. p for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
-    fhMCNeutral2MatchdEdx->SetXTitle("p (GeV/c)");
-    fhMCNeutral2MatchdEdx->SetYTitle("<dE/dx>");
+    fhMCNeutral2MatchdEdx = new TH2F("hMCNeutral2MatchdEdx","#it{dE/dx} vs. #it{p} for all matches, MC neutrals",nptbins,ptmin,ptmax,ndedxbins,dedxmin,dedxmax);
+    fhMCNeutral2MatchdEdx->SetXTitle("#it{p} (GeV/#it{c})");
+    fhMCNeutral2MatchdEdx->SetYTitle("#it{dE/dx}>");
     outputContainer->Add(fhMCNeutral2MatchdEdx);
     
-    fhMCEle1EOverPR02 = new TH2F("hMCEle1EOverPR02","TRACK matches E/p, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCEle1EOverPR02->SetYTitle("E/p");
-    fhMCEle1EOverPR02->SetXTitle("p_{T} (GeV/c)");
+    fhMCEle1EOverPR02 = new TH2F("hMCEle1EOverPR02","TRACK matches #it{E}/#it{p}, MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCEle1EOverPR02->SetYTitle("#it{E}/#it{p}");
+    fhMCEle1EOverPR02->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCEle1EOverPR02);
     
-    fhMCChHad1EOverPR02 = new TH2F("hMCChHad1EOverPR02","TRACK matches E/p, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCChHad1EOverPR02->SetYTitle("E/p");
-    fhMCChHad1EOverPR02->SetXTitle("p_{T} (GeV/c)");
+    fhMCChHad1EOverPR02 = new TH2F("hMCChHad1EOverPR02","TRACK matches #it{E}/#it{p}, MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCChHad1EOverPR02->SetYTitle("#it{E}/#it{p}");
+    fhMCChHad1EOverPR02->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCChHad1EOverPR02);
     
-    fhMCNeutral1EOverPR02 = new TH2F("hMCNeutral1EOverPR02","TRACK matches E/p, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCNeutral1EOverPR02->SetYTitle("E/p");
-    fhMCNeutral1EOverPR02->SetXTitle("p_{T} (GeV/c)");
+    fhMCNeutral1EOverPR02 = new TH2F("hMCNeutral1EOverPR02","TRACK matches #it{E}/#it{p}, MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCNeutral1EOverPR02->SetYTitle("#it{E}/#it{p}");
+    fhMCNeutral1EOverPR02->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCNeutral1EOverPR02);
     
-    fhMCEle1EleEOverP = new TH2F("hMCEle1EleEOverP","Electron candidates E/p (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCEle1EleEOverP->SetYTitle("E/p");
-    fhMCEle1EleEOverP->SetXTitle("p_{T} (GeV/c)");
+    fhMCEle1EleEOverP = new TH2F("hMCEle1EleEOverP","Electron candidates #it{E}/#it{p} (60<dEdx<100), MC electrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCEle1EleEOverP->SetYTitle("#it{E}/#it{p}");
+    fhMCEle1EleEOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCEle1EleEOverP);
 
-    fhMCChHad1EleEOverP = new TH2F("hMCEle1EleEOverP","Electron candidates E/p (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCChHad1EleEOverP->SetYTitle("E/p");
-    fhMCChHad1EleEOverP->SetXTitle("p_{T} (GeV/c)");
+    fhMCChHad1EleEOverP = new TH2F("hMCEle1EleEOverP","Electron candidates #it{E}/#it{p} (60<dEdx<100), MC charged hadrons",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCChHad1EleEOverP->SetYTitle("#it{E}/#it{p}");
+    fhMCChHad1EleEOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCChHad1EleEOverP);
 
-    fhMCNeutral1EleEOverP = new TH2F("hMCNeutral1EleEOverP","Electron candidates E/p (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
-    fhMCNeutral1EleEOverP->SetYTitle("E/p");
-    fhMCNeutral1EleEOverP->SetXTitle("p_{T} (GeV/c)");
+    fhMCNeutral1EleEOverP = new TH2F("hMCNeutral1EleEOverP","Electron candidates #it{E}/#it{p} (60<dEdx<100), MC neutrals",nptbins,ptmin,ptmax, nPoverEbins,eOverPmin,eOverPmax);
+    fhMCNeutral1EleEOverP->SetYTitle("#it{E}/#it{p}");
+    fhMCNeutral1EleEOverP->SetXTitle("#it{p}_{T} (GeV/#it{c})");
     outputContainer->Add(fhMCNeutral1EleEOverP);
     
   }
@@ -2940,28 +3063,28 @@ Float_t AliAnaCalorimeterQA::GetECross(Int_t absID, AliVCaloCells* cells, Float_
     Float_t  ecell1  = 0, ecell2  = 0, ecell3  = 0, ecell4  = 0;
     Double_t tcell1  = 0, tcell2  = 0, tcell3  = 0, tcell4  = 0;
     
-    if(absID1 >0 )
+    if(absID1 > 0 )
     {
       ecell1 = cells->GetCellAmplitude(absID1);
       GetCaloUtils()->RecalibrateCellAmplitude(ecell1, fCalorimeter, absID1);
       tcell1 = cells->GetCellTime(absID1);
       GetCaloUtils()->RecalibrateCellTime     (tcell1, fCalorimeter, absID1,GetReader()->GetInputEvent()->GetBunchCrossNumber());    
     }
-    if(absID2 >0 )
+    if(absID2 > 0 )
     {
       ecell2 = cells->GetCellAmplitude(absID2);
       GetCaloUtils()->RecalibrateCellAmplitude(ecell2, fCalorimeter, absID2);
       tcell2 = cells->GetCellTime(absID2);
       GetCaloUtils()->RecalibrateCellTime     (tcell2, fCalorimeter, absID2, GetReader()->GetInputEvent()->GetBunchCrossNumber());    
     }
-    if(absID3 >0 )
+    if(absID3 > 0 )
     {
       ecell3 = cells->GetCellAmplitude(absID3);
       GetCaloUtils()->RecalibrateCellAmplitude(ecell3, fCalorimeter, absID3);
       tcell3 = cells->GetCellTime(absID3);
       GetCaloUtils()->RecalibrateCellTime     (tcell3, fCalorimeter, absID3, GetReader()->GetInputEvent()->GetBunchCrossNumber());    
     }
-    if(absID4 >0 )
+    if(absID4 > 0 )
     {
       ecell4 = cells->GetCellAmplitude(absID4);
       GetCaloUtils()->RecalibrateCellAmplitude(ecell4, fCalorimeter, absID4);
@@ -3026,13 +3149,13 @@ void AliAnaCalorimeterQA::InvariantMassHistograms(Int_t iclus,   TLorentzVector
     AliVCluster* clus2 =  (AliVCluster*)caloClusters->At(jclus);
 
     Float_t maxCellFraction = 0.;
-    Int_t absIdMax = GetCaloUtils()->GetMaxEnergyCell(cells, clus2,maxCellFraction);
+    Int_t absIdMax = GetCaloUtils()->GetMaxEnergyCell(cells, clus2, maxCellFraction);
     
     // Try to rediuce background with a mild shower shape cut and no more than 1 maxima 
     // in cluster and remove low energy clusters
     if( clus2->GetNCells() <= 1 || !IsGoodCluster(absIdMax,cells) || 
        GetCaloUtils()->GetNumberOfLocalMaxima(clus2,cells) > 1 || 
-       clus2->GetM02() > 0.5 || clus2->E() < 0.3) continue;
+       clus2->GetM02() > 0.5 || clus2->E() < fMinInvMassECut ) continue;
     
     //Get cluster kinematics
     clus2->GetMomentum(mom2,v);
@@ -3051,7 +3174,7 @@ void AliAnaCalorimeterQA::InvariantMassHistograms(Int_t iclus,   TLorentzVector
     fhIM  ->Fill((mom+mom2).Pt(),(mom+mom2).M());
 
     //Single module
-    if(nModule == nModule2 && nModule >=0 && nModule < fNModules)
+    if(nModule == nModule2 && nModule >= 0 && nModule < fNModules)
       fhIMMod[nModule]->Fill((mom+mom2).Pt(),(mom+mom2).M());
     
     
@@ -3084,10 +3207,14 @@ void AliAnaCalorimeterQA::InitParameters()
   fCalorimeter     = "EMCAL"; //or PHOS
   fNModules        = 22; // set maximum to maximum number of EMCAL modules
   fNRCU            = 2;  // set maximum number of RCU in EMCAL per SM
+  
   fTimeCutMin      = -9999999;
   fTimeCutMax      =  9999999;
-  fEMCALCellAmpMin = 0.2;
-  fPHOSCellAmpMin  = 0.2;
+  
+  fEMCALCellAmpMin = 0.2; // 200 MeV
+  fPHOSCellAmpMin  = 0.2; // 200 MeV
+  fCellAmpMin      = 0.2; // 200 MeV
+  fMinInvMassECut  = 0.5; // 500 MeV
   
   // Exotic studies
   fExoNECrossCuts  = 10 ;
@@ -3144,6 +3271,7 @@ void AliAnaCalorimeterQA::Print(const Option_t * opt) const
   printf("Time Cut: %3.1f < TOF  < %3.1f\n", fTimeCutMin, fTimeCutMax);
   printf("EMCAL Min Amplitude   : %2.1f GeV/c\n", fEMCALCellAmpMin) ;
   printf("PHOS Min Amplitude    : %2.1f GeV/c\n", fPHOSCellAmpMin) ;
+  printf("Inv. Mass min. E clus : %2.1f GeV/c\n", fMinInvMassECut) ;
   
 } 
 
@@ -3153,28 +3281,34 @@ void  AliAnaCalorimeterQA::MakeAnalysisFillHistograms()
   //Fill Calorimeter QA histograms
   
   //Play with the MC stack if available        
-  if(IsDataMC()) MCHistograms();       
+  if(IsDataMC()) MCHistograms();
   
-  //Get List with CaloClusters  
-  TObjArray * caloClusters = NULL;
-  if      (fCalorimeter == "PHOS")  caloClusters = GetPHOSClusters();
-  else if (fCalorimeter == "EMCAL") caloClusters = GetEMCALClusters();
-  else 
+  //Get List with CaloClusters , calo Cells, init min amplitude
+  TObjArray     * caloClusters = NULL;
+  AliVCaloCells * cells        = 0x0;
+  if      (fCalorimeter == "PHOS")
+  {
+    fCellAmpMin  = fPHOSCellAmpMin;
+    caloClusters = GetPHOSClusters();
+    cells        = GetPHOSCells();
+  }
+  else if (fCalorimeter == "EMCAL")
+  {
+    fCellAmpMin  = fEMCALCellAmpMin;
+    caloClusters = GetEMCALClusters();
+    cells        = GetEMCALCells();
+  }
+  else
     AliFatal(Form("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - Wrong calorimeter name <%s>, END\n", fCalorimeter.Data()));
   
-  // Do not do anything if there are no clusters
-  if(caloClusters->GetEntriesFast() == 0) return;
-  
-  //Get List with CaloCells
-  AliVCaloCells * cells = 0x0; 
-  if(fCalorimeter == "PHOS") cells =  GetPHOSCells();
-  else                                  cells =  GetEMCALCells();
-  
-  if(!caloClusters || !cells) {
+  if( !caloClusters || !cells )
+  {
     AliFatal(Form("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - No CaloClusters or CaloCells available\n"));
     return; // trick coverity
   }
   
+  if(caloClusters->GetEntriesFast() == 0) return ;
+  
   //printf("QA: N cells %d, N clusters %d \n",cells->GetNumberOfCells(),caloClusters->GetEntriesFast());
   
   // Correlate Calorimeters and V0 and track Multiplicity  
@@ -3198,8 +3332,8 @@ void AliAnaCalorimeterQA::MCHistograms()
   
   TLorentzVector mom  ;
   
-  if(GetReader()->ReadStack()){
-    
+  if(GetReader()->ReadStack())
+  {
     if(!GetMCStack()) 
       AliFatal("Stack not available, is the MC handler called?\n");
     
@@ -3212,9 +3346,9 @@ void AliAnaCalorimeterQA::MCHistograms()
       primary->Momentum(mom);
       MCHistograms(mom,TMath::Abs(primary->GetPdgCode()));
     } //primary loop
-  }
-  else if(GetReader()->ReadAODMCParticles()){
-    
+  } // ESD
+  else if(GetReader()->ReadAODMCParticles())
+  {
     if(!GetReader()->GetAODMCParticles())
       AliFatal("AODMCParticles not available!");
     
@@ -3228,8 +3362,7 @@ void AliAnaCalorimeterQA::MCHistograms()
       mom.SetPxPyPzE(aodprimary->Px(),aodprimary->Py(),aodprimary->Pz(),aodprimary->E());
       MCHistograms(mom,TMath::Abs(aodprimary->GetPdgCode()));
     } //primary loop
-    
-  }
+  } // AOD
 }
 
 //_______________________________________________________________________________
@@ -3324,7 +3457,12 @@ void AliAnaCalorimeterQA::WeightHistograms(AliVCluster *clus, AliVCaloCells* cel
   
   // First recalculate energy in case non linearity was applied
   Float_t  energy = 0;
-  Float_t  ampMax = 0;  
+  Float_t  ampMax = 0;
+  Float_t  energyOrg = clus->E();
+  
+  // Do study when there are enough cells in cluster
+  if(clus->GetNCells() < 3) return ;
+  
   for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++) 
   {
     Int_t id       = clus->GetCellsAbsId()[ipos];
@@ -3346,6 +3484,9 @@ void AliAnaCalorimeterQA::WeightHistograms(AliVCluster *clus, AliVCaloCells* cel
     return;
   }
   
+  //Remove non lin correction
+  clus->SetE(energy);
+  
   fhEMaxCellClusterRatio   ->Fill(energy,ampMax/energy);
   fhEMaxCellClusterLogRatio->Fill(energy,TMath::Log(ampMax/energy));
   
@@ -3368,45 +3509,47 @@ void AliAnaCalorimeterQA::WeightHistograms(AliVCluster *clus, AliVCaloCells* cel
     Float_t l0org = clus->GetM02();
     Float_t l1org = clus->GetM20();
     Float_t dorg  = clus->GetDispersion();
-    
-    for(Int_t iw = 0; iw < 14; iw++){
-      GetCaloUtils()->GetEMCALRecoUtils()->SetW0(1+iw*0.5); 
+
+    Int_t tagMC = -1;
+    if(IsDataMC() && clus->GetNLabels() > 0)
+    {
+      Int_t tag = GetMCAnalysisUtils()->CheckOrigin(clus->GetLabels(),clus->GetNLabels(), GetReader());
+      
+      if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPhoton)   &&
+         !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPi0)      &&
+         !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCEta)      &&
+         !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion)        ){
+        tagMC = 0;
+      } // Pure Photon
+      else if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCElectron) &&
+              !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion)        ){
+        tagMC = 1;
+      } // Electron
+      else if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion)        ){
+        tagMC = 2;
+      } // Conversion
+      else if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPi0) ){
+        tagMC = 3;
+      }// Pi0
+      else if(!GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCEta) &&
+              !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPhoton) ){
+        tagMC = 4;
+      }// Hadron
+    }// Is MC
+    
+    for(Int_t iw = 0; iw < 12; iw++)
+    {
+      GetCaloUtils()->GetEMCALRecoUtils()->SetW0(3+iw*0.25);
       GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
       
       fhLambda0ForW0[iw]->Fill(energy,clus->GetM02());
       //fhLambda1ForW0[iw]->Fill(energy,clus->GetM20());
       
-      if(IsDataMC()){  
-        
-        Int_t tag = GetMCAnalysisUtils()->CheckOrigin(clus->GetLabels(),clus->GetNLabels(), GetReader());
-        
-        if(   GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPhoton) && 
-           !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPi0)      && 
-           !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCEta)      &&
-           !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion)        ){
-          fhLambda0ForW0MC[iw][0]->Fill(energy,clus->GetM02());
-          //fhLambda1ForW0MC[iw][0]->Fill(energy,clus->GetM20());
-        } // Pure Photon
-        else if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCElectron) && 
-                !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion)        ){
-          fhLambda0ForW0MC[iw][1]->Fill(energy,clus->GetM02());
-          //fhLambda1ForW0MC[iw][1]->Fill(energy,clus->GetM20());
-        } // Electron
-        else if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCConversion)        ){
-          fhLambda0ForW0MC[iw][2]->Fill(energy,clus->GetM02());
-          //fhLambda1ForW0MC[iw][2]->Fill(energy,clus->GetM20());
-        } // Conversion
-        else if( GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPi0) ){
-          fhLambda0ForW0MC[iw][3]->Fill(energy,clus->GetM02());
-          //fhLambda1ForW0MC[iw][3]->Fill(energy,clus->GetM20());
-        }// Pi0
-        else if(!GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCEta) && 
-                !GetMCAnalysisUtils()->CheckTagBit(tag, AliMCAnalysisUtils::kMCPhoton) ){
-          fhLambda0ForW0MC[iw][4]->Fill(energy,clus->GetM02());
-          //fhLambda1ForW0MC[iw][4]->Fill(energy,clus->GetM20());
-        }// Hadron
-        
-      }// Is MC
+      if(IsDataMC() && tagMC >= 0)
+      {
+        fhLambda0ForW0MC[iw][tagMC]->Fill(energy,clus->GetM02());
+        //fhLambda1ForW0MC[iw][tagMC]->Fill(energy,clus->GetM20());
+      }
     } // w0 loop
     
     // Set the original values back
@@ -3415,7 +3558,9 @@ void AliAnaCalorimeterQA::WeightHistograms(AliVCluster *clus, AliVCaloCells* cel
     clus->SetDispersion(dorg);
     
   }// EMCAL
-  
+
+  clus->SetE(energyOrg);
+
 }
 
 
index ff6b2f0016d3b59458072facadbb1cf77f7face3..7defb5baca78fe698a21e8ea163f3cf05659654c 100755 (executable)
@@ -46,8 +46,7 @@ public:
   // Main methods
   
   void         BadClusterHistograms(AliVCluster* clus, const TObjArray *caloClusters,  AliVCaloCells * cells,
-                                    Int_t absIdMax,    Double_t maxCellFraction, Float_t eCrossFrac,
-                                    Double_t tmax,     Double_t timeAverages[2]);
+                                    Int_t absIdMax,    Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax);
     
   void         CalculateAverageTime(AliVCluster *clus, AliVCaloCells *cells, Double_t timeAverages[2]);
   
@@ -58,8 +57,7 @@ public:
   void         ClusterAsymmetryHistograms(AliVCluster* clus, Int_t absIdMax, const Bool_t goodCluster );
   
   void         ClusterHistograms(AliVCluster* cluster, const TObjArray *caloClusters,  AliVCaloCells * cells, 
-                                 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac,
-                                 Double_t tmax, Double_t timeAverages[2]);
+                                 Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax);
   
   void         ClusterLoopHistograms(const TObjArray * clusters, AliVCaloCells * cells);
   
@@ -95,7 +93,10 @@ public:
   
   Float_t      GetPHOSCellAmpMin()       const  { return fPHOSCellAmpMin     ; }
   void         SetPHOSCellAmpMin (Float_t amp)  { fPHOSCellAmpMin  = amp     ; }
-    
+  
+  Float_t      GetInvMassMinECut()       const  { return fMinInvMassECut     ; }
+  void         SetInvMassMinECut(Float_t cut)   { fMinInvMassECut = cut      ; }
+
   TString      GetCalorimeter()          const  { return fCalorimeter        ; }
   void         SetCalorimeter(TString calo)     { fCalorimeter = calo        ; }
   
@@ -115,9 +116,6 @@ public:
   void SwitchOnFillAllPositionHistogram2()      { fFillAllPosHisto2 = kTRUE  ; }
   void SwitchOffFillAllPositionHistogram2()     { fFillAllPosHisto2 = kFALSE ; }
   
-  void SwitchOnFillAllTH12Histogram()           { fFillAllTH12      = kTRUE  ; }
-  void SwitchOffFillAllTH12Histogram()          { fFillAllTH12      = kFALSE ; }
-  
   void SwitchOnFillAllTH3Histogram()            { fFillAllTH3       = kTRUE  ; }
   void SwitchOffFillAllTH3Histogram()           { fFillAllTH3       = kFALSE ; }
   
@@ -156,7 +154,6 @@ public:
   Bool_t   fFillAllCellTimeHisto;             // Fill all cell time histo
   Bool_t   fFillAllPosHisto;                  // Fill all the position related histograms 
   Bool_t   fFillAllPosHisto2;                 // Fill all the position related histograms 2
-  Bool_t   fFillAllTH12 ;                     // Fill simple histograms which information is already in TH3 histograms
   Bool_t   fFillAllTH3 ;                      // Fill TH3 histograms
   Bool_t   fFillAllTMHisto ;                  // Fill track matching histograms
   Bool_t   fFillAllPi0Histo ;                 // Fill invariant mass histograms
@@ -175,9 +172,12 @@ public:
   //Cuts
   Double_t fTimeCutMin  ;                     // Remove clusters/cells with time smaller than this value, in ns
   Double_t fTimeCutMax  ;                     // Remove clusters/cells with time larger than this value, in ns
+  Float_t  fCellAmpMin;                       // amplitude Threshold on calorimeter cells, set at execution time
   Float_t  fEMCALCellAmpMin;                  // amplitude Threshold on emcal cells
   Float_t  fPHOSCellAmpMin ;                  // amplitude Threshold on phos cells
   
+  Float_t  fMinInvMassECut;                   // Minimum energy cut value for clusters entering the invariant mass calculation
+  
   // Exotic studies
   Float_t  fExoNECrossCuts   ;                // Number of ecross cuts
   Float_t  fExoECrossCuts[10];                // List of ecross cuts
@@ -280,6 +280,7 @@ public:
        
   //Calo Cells
   TH1F *   fhNCells;                          //! Number of towers/crystals with signal
+  TH1F *   fhNCellsCutAmpMin;                 //! Number of towers/crystals with signal, with min amplitude
   TH1F *   fhAmplitude;                       //! Amplitude measured in towers/crystals
   TH2F *   fhAmpId;                           //! Amplitude measured in towers/crystals vs id of tower.        
   TH3F *   fhEtaPhiAmp;                       //! eta vs phi vs amplitude, cells
@@ -352,6 +353,11 @@ public:
   TH2F *   fhLambda0ForW0MC[14][5];            //! L0 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
   //TH2F * fhLambda1ForW0MC[7][5];              //! L1 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
   
+  TH2F *   fhECellTotalRatio;                 //! e cell / e total vs e total
+  TH2F *   fhECellTotalLogRatio;              //! log (e cell / e total)  vs e total
+  TH2F **  fhECellTotalRatioMod;              //! e cell / e total vs e total, per SM
+  TH2F **  fhECellTotalLogRatioMod;           //! log (e cell / e total)  vs e total, per SM
+
   // Exotic studies
   
   TH2F *   fhExoNCell  [10][5] ;               //! Number of cells per cluster for different cuts
@@ -426,7 +432,7 @@ public:
   AliAnaCalorimeterQA & operator = (const AliAnaCalorimeterQA & qa) ;//cpy assignment
   AliAnaCalorimeterQA(              const AliAnaCalorimeterQA & qa) ; // cpy ctor
   
-  ClassDef(AliAnaCalorimeterQA,27)
+  ClassDef(AliAnaCalorimeterQA,28)
 } ;
 
 
index 224b61e07af573dcdadf6f30ae174c2e29f7d048..c6e117789d1167fdb4b282492d7811960086eed9 100755 (executable)
@@ -62,7 +62,7 @@ AliAnaInsideClusterInvariantMass::AliAnaInsideClusterInvariantMass() :
   fFillIdEtaHisto(0),                        fFillHighMultHisto(0),
   fFillArmenterosHisto(0),                   fFillThetaStarHisto(0),
   fSSWeightN(0),                             fSSECellCutN(0),
-  fNLMSettingN(0),                           fWSimu(0),
+  fNLMSettingN(0),                           fWSimu(),
   fhMassAsyCutNLocMax1(0),                   fhMassAsyCutNLocMax2(0),                   fhMassAsyCutNLocMaxN(0),
   fhM02AsyCutNLocMax1(0),                    fhM02AsyCutNLocMax2(0),                    fhM02AsyCutNLocMaxN(0),
   fhMassM02CutNLocMax1(0),                   fhMassM02CutNLocMax2(0),                   fhMassM02CutNLocMaxN(0),
@@ -2771,19 +2771,14 @@ void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,
   else                        cells = GetPHOSCells();
   
   // First recalculate energy in case non linearity was applied
-  Float_t  energy = 0;
-  for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
+  Float_t energy =  GetCaloUtils()->RecalibrateClusterEnergy(clus, cells);// recalculate cluster energy, avoid non lin correction.
+  
+  Float_t simuTotWeight = 0;
+  if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
   {
-    
-    Int_t id       = clus->GetCellsAbsId()[ipos];
-    
-    //Recalibrate cell energy if needed
-    Float_t amp = cells->GetCellAmplitude(id);
-    GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
-    
-    energy    += amp;
-      
-  } // energy loop
+    simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(clus, cells,energy);
+    simuTotWeight/= energy;
+  }
   
   if(energy <=0 )
   {
@@ -2800,6 +2795,12 @@ void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,
   if(amp1 < amp2)        Info("FillSSWeightHistograms","Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
   if(amp1==0 || amp2==0) Info("FillSSWeightHistograms","Null E local maxima : id1 E %f, id2 E %f\n "        ,amp1,amp2);
   
+  if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
+  {
+    amp1*=GetCaloUtils()->GetMCECellClusFracCorrection(amp1,energy)/simuTotWeight;
+    amp2*=GetCaloUtils()->GetMCECellClusFracCorrection(amp2,energy)/simuTotWeight;
+  }
+  
   if(amp1>0)fhPi0CellEMaxEMax2Frac   [nlm]->Fill(energy,amp2/amp1);
   fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
   fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
@@ -2812,6 +2813,12 @@ void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,
     //Recalibrate cell energy if needed
     Float_t amp = cells->GetCellAmplitude(id);
     GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
+    if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
+    {
+      //printf("eCell a) %f",amp);
+      amp*=GetCaloUtils()->GetMCECellClusFracCorrection(amp,energy)/simuTotWeight;
+      //printf(", b)%f\n",amp);
+    }
     
     if(amp > 0)fhPi0CellE       [nlm]->Fill(energy,amp);
     fhPi0CellEFrac   [nlm]->Fill(energy,amp/energy);
@@ -2824,7 +2831,7 @@ void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,
     }
 
   }
-  
+
   //Recalculate shower shape for different W0
   if(fCalorimeter=="EMCAL")
   {
@@ -6342,6 +6349,9 @@ void AliAnaInsideClusterInvariantMass::InitParameters()
   fNLMMinE   [0] = 0.10; fNLMMinE   [1] = 0.20; fNLMMinE   [2] = 0.35; fNLMMinE   [3] = 0.50; fNLMMinE   [4] = 1.00;
   fNLMMinDiff[0] = 0.03; fNLMMinDiff[1] = 0.05; fNLMMinDiff[2] = 0.10; fNLMMinDiff[3] = 0.15; fNLMMinDiff[4] = 0.20;
   
+  fWSimu[0] = 1; // Default, do not correct, change to 1.05-1.1
+  fWSimu[1] = 0; // Default, do not correct, change to 0.07
+
 }
 
 
@@ -6668,36 +6678,16 @@ void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWi
   Double_t etaMean = 0.;
   Double_t phiMean = 0.;
     
-  //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
-  // and to check if the cluster is between 2 SM in eta
-  Int_t   iSM0   = -1;
-  Bool_t  shared = kFALSE;
-  Float_t energy = 0;
+  Bool_t  shared = GetCaloUtils()-> IsClusterSharedByTwoSuperModules(geom,cluster);
 
-  for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
+  Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(cluster, cells);
+  
+  Float_t simuTotWeight = 0;
+  if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
   {
-    //Get from the absid the supermodule, tower and eta/phi numbers
-    geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
-    geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
-    
-    //Check if there are cells of different SM
-    if     (iDigit == 0   ) iSM0 = iSupMod;
-    else if(iSupMod!= iSM0) shared = kTRUE;
-    
-    //Get the cell energy, if recalibration is on, apply factors
-    fraction  = cluster->GetCellAmplitudeFraction(iDigit);
-    if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
-    
-    if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
-    {
-      recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
-    }
-    
-    eCell  = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
-    
-    if(eCell > eCellMin) energy += eCell;
-    
-  }//cell loop
+    simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(cluster, cells,energy);
+    simuTotWeight/= energy;
+  }
   
   //Loop on cells, get weighted parameters
   for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
@@ -6723,10 +6713,13 @@ void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWi
     
     if(energy > 0 && eCell > eCellMin)
     {
+      if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
+        eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
+      
       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
 
       //correct weight, ONLY in simulation
-      w *= (1 - fWSimu * w );
+      w *= (fWSimu[0] - fWSimu[1] * w );
 
       etai=(Double_t)ieta;
       phii=(Double_t)iphi;
@@ -6779,10 +6772,13 @@ void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWi
     
     if(energy > 0 && eCell > eCellMin)
     {
+      if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
+        eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
+      
       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
       
       //correct weight, ONLY in simulation
-      w *= (1 - fWSimu * w );
+      w *= (fWSimu[0] - fWSimu[1] * w );
 
       etai=(Double_t)ieta;
       phii=(Double_t)iphi;
index 7794cc3fc3bf67a86eea1c6e810244c0eff718cd..d4409e2423427f1501281281a0347963a58a29f6 100755 (executable)
@@ -127,7 +127,7 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
 
   void         SetMinBadChannelDistance(Float_t cut)     { fMinBadDist  = cut ; }
 
-  void         SetWCorrectionParameter(Float_t p = 0.07) { fWSimu       = p   ; }
+  void         SetWCorrectionParameter(Int_t i, Float_t p = 0.07) { if( i<2 ) fWSimu[i] = p; }
   
   void         SwitchOnFillAngleHistograms()             { fFillAngleHisto      = kTRUE  ; }
   void         SwitchOffFillAngleHistograms()            { fFillAngleHisto      = kFALSE ; }
@@ -235,8 +235,8 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   Float_t      fNLMMinDiff[5];         // List of local maxima min difference cell energy
   Int_t        fNLMSettingN;           // Total number of NLM settings to test
   
-  Float_t      fWSimu;                 // Slope of the linear correction factor for the shower
-                                       // shape weight in simulation, about 0.07
+  Float_t      fWSimu[2];              // Constant and slope of the linear correction factor for the shower
+                                       // shape weight in simulation, about 1-0.07*w
   
   //Histograms
   
index cdcceeadf53b79ba7fae231af696debfb9439582..3d2320c3c00582dbbe83b1cd9044ad3ce85b7cc9 100755 (executable)
 #include "AliAODCaloCluster.h"
 #include "AliAODEvent.h"
 
+//jets
+#include "AliAODJetEventBackground.h"
+#include "TRandom2.h"
+
 ClassImp(AliAnaParticleJetFinderCorrelation)
   
 
 //________________________________________________________________________
-  AliAnaParticleJetFinderCorrelation::AliAnaParticleJetFinderCorrelation() : 
-    AliAnaCaloTrackCorrBaseClass(),  
-    fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), fRatioMaxCut(0.),  fRatioMinCut(0.), 
-    fConeSize(0), fPtThresholdInCone(0),fUseJetRefTracks(0), fMakeCorrelationInHistoMaker(0), fSelectIsolated(0),
-    fhDeltaEta(0), fhDeltaPhi(0), fhDeltaPt(0), fhPtRatio(0), fhPt(0),
-    fhFFz(0),fhFFxi(0),fhFFpt(0),fhNTracksInCone(0)
+AliAnaParticleJetFinderCorrelation::AliAnaParticleJetFinderCorrelation() : 
+AliAnaCaloTrackCorrBaseClass(),  
+  fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), fRatioMaxCut(0.),  fRatioMinCut(0.), 
+  fConeSize(0), fPtThresholdInCone(0),fUseJetRefTracks(0),
+  fMakeCorrelationInHistoMaker(0), fSelectIsolated(0),
+  fJetConeSize(0.4),fJetMinPt(5),fJetAreaFraction(0.6),
+  fNonStandardJetFromReader(kTRUE), fJetBranchName("jets"),
+  fBackgroundJetFromReader(kTRUE),fBkgJetBranchName("jets"),
+  fGammaConeSize(0.3),fUseBackgroundSubtractionGamma(0),fSaveGJTree(0),
+  fMostEnergetic(kFALSE),fMostOpposite(kTRUE), fUseHistogramJetBkg(kTRUE),
+  fUseHistogramTracks(kTRUE),fUseHistogramJetTracks(kTRUE),fGenerator(0),
+  fhDeltaEta(0), /*fhDeltaPhi(0),*/fhDeltaPhiCorrect(0),fhDeltaPhi0PiCorrect(0), fhDeltaPt(0), fhPtRatio(0), fhPt(0),
+  fhFFz(0),fhFFxi(0),fhFFpt(0),fhNTracksInCone(0),
+  fhJetFFz(0),fhJetFFxi(0),fhJetFFpt(0),fhJetFFzCor(0),fhJetFFxiCor(0),
+  fhBkgFFz(),fhBkgFFxi(),fhBkgFFpt(),fhBkgNTracksInCone(),fhBkgSumPtInCone(),fhBkgSumPtnTracksInCone(),//<<---new
+  fhNjetsNgammas(0),fhCuts(0),
+  fhDeltaEtaBefore(0),fhDeltaPhiBefore(0),fhDeltaPtBefore(0),fhPtRatioBefore(0),
+  fhPtBefore(0),fhDeltaPhi0PiCorrectBefore(0),
+  fhJetPtBefore(0),fhJetPt(0),fhJetPtMostEne(0),fhJetPhi(0),fhJetEta(0),fhJetEtaVsPt(0),
+  fhJetPhiVsEta(0),fhJetEtaVsNpartInJet(0),fhJetEtaVsNpartInJetBkg(0),fhJetChBkgEnergyVsPt(0),fhJetChAreaVsPt(0),/*fhJetNjet(0),*/
+  fhTrackPhiVsEta(0),fhTrackAveTrackPt(0),fhJetNjetOverPtCut(),
+/*fhJetChBkgEnergyVsPtEtaGt05(0),fhJetChBkgEnergyVsPtEtaLe05(0),fhJetChAreaVsPtEtaGt05(0),fhJetChAreaVsPtEtaLe05(0),*/
+  fhJetChBkgEnergyVsArea(0),fhJetRhoVsPt(0),fhJetRhoVsCentrality(0),//fhJetBkgRho(0),
+  fhJetNparticlesInJet(0),fhJetDeltaEtaDeltaPhi(0),fhJetDeltaEtaDeltaPhiAllTracks(0),
+  fhJetAveTrackPt(0),fhJetNtracksInJetAboveThr(),fhJetRatioNTrkAboveToNTrk(),fhJetNtrackRatioMostEne(),
+  fhJetNtrackRatioJet5GeV(),fhJetNtrackRatioLead5GeV(),
+  fhBkgJetBackground(),fhBkgJetSigma(),fhBkgJetArea(),fhPhotonPtMostEne(0),
+  fhPhotonAverageEnergy(0),fhPhotonRatioAveEneToMostEne(0),fhPhotonAverageEnergyMinus1(0),fhPhotonRatioAveEneMinus1ToMostEne(0),
+  fhPhotonNgammaMoreAverageToNgamma(0),fhPhotonNgammaMoreAverageMinus1ToNgamma(0),fhPhotonNgammaOverPtCut(),
+  fhPhotonBkgRhoVsNtracks(0),fhPhotonBkgRhoVsNclusters(0),fhPhotonBkgRhoVsCentrality(0),
+  fhPhotonBkgRhoVsNcells(0),fhPhotonPt(0),fhPhotonPtCorrected(0),fhPhotonPtCorrectedZoom(0),fhPhotonPtDiff(0),
+  fhPhotonPtDiffVsCentrality(0),fhPhotonPtDiffVsNcells(0),fhPhotonPtDiffVsNtracks(0),fhPhotonPtDiffVsNclusters(0),
+  fhPhotonSumPtInCone(0),fhPhotonSumPtCorrectInCone(0),fhPhotonSumPtChargedInCone(0),
+  fhSelectedJetPhiVsEta(0),fhSelectedJetChBkgEnergyVsPtJet(0),fhSelectedJetChAreaVsPtJet(0),fhSelectedJetNjet(0),fhSelectedNtracks(0),
+  fhSelectedTrackPhiVsEta(0),fhCuts2(0),
+  fhSelectedPhotonNLMVsPt(0),fhSelectedPhotonLambda0VsPt(0), fhRandomPhiEta(),
+fTreeGJ     (0),
+fGamPt     (0),
+fGamLambda0 (0),
+fGamNLM            (0),
+fGamSumPtCh (0),
+fGamTime    (0),
+fGamNcells  (0),
+fGamEta            (0),
+fGamPhi            (0),
+fGamSumPtNeu(0),
+fGamNtracks (0),
+fGamNclusters(0),
+fGamAvEne   (0),
+fJetPhi            (0),
+fJetEta            (0),
+fJetPt     (0),
+fJetBkgChEne(0),
+fJetArea    (0),
+fJetNtracks (0),
+fJetNtracks1(0),
+fJetNtracks2(0),
+fJetRho(0),
+fEventNumber(0),
+fNtracks    (0),
+fZvertex    (0),
+fCentrality (0),
+fIso(0),
+fGamRho(0)
+
 {
   //Default Ctor
+  //  printf("constructor\n");
   
   //Initialize parameters
   InitParameters();
+  for(Int_t i=0;i<10;i++){
+    fhJetNjetOverPtCut[i] = 0;
+    fhPhotonNgammaOverPtCut[i] = 0;
+  }
+  fGenerator = new TRandom2();
+  fGenerator->SetSeed(0);
 }
 
+//___________________________________________________________________
+AliAnaParticleJetFinderCorrelation::~AliAnaParticleJetFinderCorrelation(){
+  delete fGenerator;
+}
+
+
 //___________________________________________________________________
 TList *  AliAnaParticleJetFinderCorrelation::GetCreateOutputObjects()
 {  
   // Create histograms to be saved in output file and 
   // store them in fOutputContainer
-    
+  //  printf("GetCreateOutputObjects\n");    
+
   TList * outputContainer = new TList() ; 
   outputContainer->SetName("ParticleJetFinderHistos") ; 
   
@@ -70,22 +147,33 @@ TList *  AliAnaParticleJetFinderCorrelation::GetCreateOutputObjects()
   //   Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
 //     Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();        
   
-  fhDeltaPhi  = new TH2F("DeltaPhi","#phi_{jet} - #phi_{trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,100,-4,4); 
-  fhDeltaPhi->SetYTitle("#Delta #phi");
-  fhDeltaPhi->SetXTitle("p_{T trigger} (GeV/c)");
-  outputContainer->Add(fhDeltaPhi);
-  
-  fhDeltaEta  = new TH2F("DeltaEta","#eta_{jet} - #eta_{trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,100,-5,5); 
+//  fhDeltaPhi  = new TH2F("DeltaPhi","#phi_{trigger} - #phi_{jet} vs p_{T trigger}",nptbins,ptmin,ptmax,100,-6,4); 
+//  fhDeltaPhi->SetYTitle("#Delta #phi");
+//  fhDeltaPhi->SetXTitle("p_{T trigger} (GeV/c)");
+//  outputContainer->Add(fhDeltaPhi);
+
+  fhDeltaPhiCorrect  = new TH2F("DeltaPhiCorrect","#phi_{trigger} - #phi_{jet} vs p_{T trigger}",nptbins,ptmin,ptmax,100,0,6.5); 
+  fhDeltaPhiCorrect->SetYTitle("#Delta #phi");
+  fhDeltaPhiCorrect->SetXTitle("p_{T trigger} (GeV/c)");
+  outputContainer->Add(fhDeltaPhiCorrect);
+
+  fhDeltaPhi0PiCorrect  = new TH2F("DeltaPhi0PiCorrect","#phi_{trigger} - #phi_{jet} (0,#pi) vs p_{T trigger}",nptbins,ptmin,ptmax,100,0,3.5); 
+  fhDeltaPhi0PiCorrect->SetYTitle("#Delta #phi");
+  fhDeltaPhi0PiCorrect->SetXTitle("p_{T trigger} (GeV/c)");
+  outputContainer->Add(fhDeltaPhi0PiCorrect);
+
+
+  fhDeltaEta  = new TH2F("DeltaEta","#eta_{trigger} - #eta_{jet} vs p_{T trigger}",nptbins,ptmin,ptmax,100,-2,2); 
   fhDeltaEta->SetYTitle("#Delta #eta");
   fhDeltaEta->SetXTitle("p_{T trigger} (GeV/c)");
   outputContainer->Add(fhDeltaEta);
   
-  fhDeltaPt  = new TH2F("DeltaPt","p_{T trigger} - #p_{T jet} vs p_{T trigger}",nptbins,ptmin,ptmax,100,-50,50); 
-  fhDeltaPt->SetYTitle("#Delta #p_{T}");
+  fhDeltaPt  = new TH2F("DeltaPt","p_{T trigger} - p_{T jet} vs p_{T trigger}",nptbins,ptmin,ptmax,150,-50,100); 
+  fhDeltaPt->SetYTitle("#Delta p_{T}");
   fhDeltaPt->SetXTitle("p_{T trigger} (GeV/c)"); 
   outputContainer->Add(fhDeltaPt);
   
-  fhPtRatio  = new TH2F("PtRatio","p_{T jet} / #p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,200,0,2.); 
+  fhPtRatio  = new TH2F("PtRatio","p_{T jet} / p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,200,0,2.); 
   fhPtRatio->SetYTitle("ratio");
   fhPtRatio->SetXTitle("p_{T trigger} (GeV/c)");
   outputContainer->Add(fhPtRatio);
@@ -105,16 +193,538 @@ TList *  AliAnaParticleJetFinderCorrelation::GetCreateOutputObjects()
   fhFFxi->SetXTitle("p_{T trigger}");
   outputContainer->Add(fhFFxi) ;
   
-  fhFFpt  = new TH2F("FFpt","#xi = p_{T i charged}) vs p_{T trigger}", nptbins,ptmin,ptmax,100,0.,50.); 
+  fhFFpt  = new TH2F("FFpt","p_{T i charged} vs p_{T trigger}", nptbins,ptmin,ptmax,100,0.,50.); 
   fhFFpt->SetYTitle("p_{T charged hadron}");
   fhFFpt->SetXTitle("p_{T trigger}");
   outputContainer->Add(fhFFpt) ;
   
-  fhNTracksInCone  = new TH2F("NTracksInCone","#xi = p_{T i charged}) vs p_{T trigger}", nptbins,ptmin,ptmax,100,0.,50.); 
+  fhNTracksInCone  = new TH2F("NTracksInCone","Number of tracks in cone vs p_{T trigger}", nptbins,ptmin,ptmax,100,0.,150.); 
   fhNTracksInCone->SetYTitle("p_{T charged hadron}");
   fhNTracksInCone->SetXTitle("p_{T trigger}");
   outputContainer->Add(fhNTracksInCone) ;
   
+  //FF according to jet axis
+  fhJetFFz  = new TH2F("JetFFz","z = p_{T i charged}/p_{T jet} vs p_{T jet}",nptbins,ptmin,ptmax,200,0.,2);  
+  fhJetFFz->SetYTitle("z");
+  fhJetFFz->SetXTitle("p_{T jet}");
+  outputContainer->Add(fhJetFFz) ;
+       
+  fhJetFFxi  = new TH2F("JetFFxi","#xi = ln(p_{T jet}/p_{T i charged}) vs p_{T jet}", nptbins,ptmin,ptmax,100,0.,10.); 
+  fhJetFFxi->SetYTitle("#xi");
+  fhJetFFxi->SetXTitle("p_{T jet}");
+  outputContainer->Add(fhJetFFxi) ;
+  
+  fhJetFFpt  = new TH2F("JetFFpt","p_{T i charged} vs p_{T jet}", nptbins,ptmin,ptmax,100,0.,50.); 
+  fhJetFFpt->SetYTitle("p_{T charged hadron}");
+  fhJetFFpt->SetXTitle("p_{T jet}");
+  outputContainer->Add(fhJetFFpt) ;
+
+  fhJetFFzCor  = new TH2F("JetFFzCor","z = -cos(#alpha(jet,trig))*p_{T i charged}/p_{T jet} vs p_{T jet}",nptbins,ptmin,ptmax,200,0.,2);  
+  fhJetFFzCor->SetYTitle("z");
+  fhJetFFzCor->SetXTitle("p_{T jet}");
+  outputContainer->Add(fhJetFFzCor) ;
+       
+  fhJetFFxiCor  = new TH2F("JetFFxiCor","#xi = ln(p_{T jet}/(-cos(#alpha(jet,trig))*p_{T i charged})) vs p_{T jet}", nptbins,ptmin,ptmax,100,0.,10.); 
+  fhJetFFxiCor->SetYTitle("#xi");
+  fhJetFFxiCor->SetXTitle("p_{T jet}");
+  outputContainer->Add(fhJetFFxiCor) ;
+
+
+  //background FF
+  fhBkgFFz[0]  = new TH2F("BkgFFzRC",  "z = p_{T i charged}/p_{T trigger} vs p_{T trigger} Bkg RC"  ,nptbins,ptmin,ptmax,200,0.,2);  
+  fhBkgFFz[1]  = new TH2F("BkgFFzPCG", "z = p_{T i charged}/p_{T trigger} vs p_{T trigger} Bkg PCG" ,nptbins,ptmin,ptmax,200,0.,2);  
+  fhBkgFFz[2]  = new TH2F("BkgFFzPCJ", "z = p_{T i charged}/p_{T trigger} vs p_{T trigger} Bkg PCJ" ,nptbins,ptmin,ptmax,200,0.,2);  
+  fhBkgFFz[3]  = new TH2F("BkgFFzMP",  "z = p_{T i charged}/p_{T trigger} vs p_{T trigger} Bkg MP"  ,nptbins,ptmin,ptmax,200,0.,2);  
+  fhBkgFFz[4]  = new TH2F("BkgFFzTest","z = p_{T i charged}/p_{T trigger} vs p_{T trigger} Bkg Test",nptbins,ptmin,ptmax,200,0.,2);  
+  for(Int_t i=0;i<5;i++){
+    fhBkgFFz[i]->SetYTitle("z");
+    fhBkgFFz[i]->SetXTitle("p_{T trigger}");
+    outputContainer->Add(fhBkgFFz[i]) ;
+  }
+
+  fhBkgFFxi[0]  = new TH2F("BkgFFxiRC",  "#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger} Bkg RC",  nptbins,ptmin,ptmax,100,0.,10.); 
+  fhBkgFFxi[1]  = new TH2F("BkgFFxiPCG", "#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger} Bkg PCG", nptbins,ptmin,ptmax,100,0.,10.); 
+  fhBkgFFxi[2]  = new TH2F("BkgFFxiPCJ", "#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger} Bkg PCJ", nptbins,ptmin,ptmax,100,0.,10.); 
+  fhBkgFFxi[3]  = new TH2F("BkgFFxiMP",  "#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger} Bkg MP",  nptbins,ptmin,ptmax,100,0.,10.); 
+  fhBkgFFxi[4]  = new TH2F("BkgFFxiTest","#xi = ln(p_{T trigger}/p_{T i charged}) vs p_{T trigger} Bkg Test",nptbins,ptmin,ptmax,100,0.,10.); 
+  for(Int_t i=0;i<5;i++){
+    fhBkgFFxi[i]->SetYTitle("#xi");
+    fhBkgFFxi[i]->SetXTitle("p_{T trigger}");
+    outputContainer->Add(fhBkgFFxi[i]) ;
+  }
+
+  fhBkgFFpt[0]  = new TH2F("BkgFFptRC",  "p_{T i charged} vs p_{T trigger} Bkg RC",   nptbins,ptmin,ptmax,100,0.,50.); 
+  fhBkgFFpt[1]  = new TH2F("BkgFFptPCG", "p_{T i charged} vs p_{T trigger} Bkg PCG",  nptbins,ptmin,ptmax,100,0.,50.); 
+  fhBkgFFpt[2]  = new TH2F("BkgFFptPCJ", "p_{T i charged} vs p_{T trigger} Bkg PCJ",  nptbins,ptmin,ptmax,100,0.,50.); 
+  fhBkgFFpt[3]  = new TH2F("BkgFFptMP",  "p_{T i charged} vs p_{T trigger} Bkg MP",   nptbins,ptmin,ptmax,100,0.,50.); 
+  fhBkgFFpt[4]  = new TH2F("BkgFFptTest","p_{T i charged} vs p_{T trigger} Bkg Test", nptbins,ptmin,ptmax,100,0.,50.); 
+  for(Int_t i=0;i<5;i++){
+    fhBkgFFpt[i]->SetYTitle("p_{T charged hadron}");
+    fhBkgFFpt[i]->SetXTitle("p_{T trigger}");
+    outputContainer->Add(fhBkgFFpt[i]) ;
+  }
+
+  fhBkgNTracksInCone[0]  = new TH2F("BkgNTracksInConeRC",  "Number of tracks in cone vs p_{T trigger} Bkg RC",   nptbins,ptmin,ptmax,100,0.,150.); 
+  fhBkgNTracksInCone[1]  = new TH2F("BkgNTracksInConePCG", "Number of tracks in cone vs p_{T trigger} Bkg PCG",  nptbins,ptmin,ptmax,100,0.,150.); 
+  fhBkgNTracksInCone[2]  = new TH2F("BkgNTracksInConePCJ", "Number of tracks in cone vs p_{T trigger} Bkg PCJ",  nptbins,ptmin,ptmax,100,0.,150.); 
+  fhBkgNTracksInCone[3]  = new TH2F("BkgNTracksInConeMP",  "Number of tracks in cone vs p_{T trigger} Bkg MP",   nptbins,ptmin,ptmax,100,0.,150.); 
+  fhBkgNTracksInCone[4]  = new TH2F("BkgNTracksInConeTest","Number of tracks in cone vs p_{T trigger} Bkg Test", nptbins,ptmin,ptmax,100,0.,150.); 
+  for(Int_t i=0;i<5;i++){
+    fhBkgNTracksInCone[i]->SetYTitle("Number of tracks");
+    fhBkgNTracksInCone[i]->SetXTitle("p_{T trigger}");
+    outputContainer->Add(fhBkgNTracksInCone[i]) ;
+  }
+
+  fhBkgSumPtInCone[0]  = new TH2F("BkgSumPtInConeRC",  "Sum P_{T} in cone vs p_{T trigger} Bkg RC",   nptbins,ptmin,ptmax,100,0.,100.);
+  fhBkgSumPtInCone[1]  = new TH2F("BkgSumPtInConePCG", "Sum P_{T} in cone vs p_{T trigger} Bkg PCG",  nptbins,ptmin,ptmax,100,0.,100.);
+  fhBkgSumPtInCone[2]  = new TH2F("BkgSumPtInConePCJ", "Sum P_{T} in cone vs p_{T trigger} Bkg PCJ",  nptbins,ptmin,ptmax,100,0.,100.);
+  fhBkgSumPtInCone[3]  = new TH2F("BkgSumPtInConeMP",  "Sum P_{T} in cone vs p_{T trigger} Bkg MP",   nptbins,ptmin,ptmax,100,0.,100.);
+  fhBkgSumPtInCone[4]  = new TH2F("BkgSumPtInConeTest","Sum P_{T} in cone vs p_{T trigger} Bkg Test", nptbins,ptmin,ptmax,100,0.,100.);
+  for(Int_t i=0;i<5;i++){
+    fhBkgSumPtInCone[i]->SetYTitle("Sum P_{T}");
+    fhBkgSumPtInCone[i]->SetXTitle("p_{T trigger}");
+    outputContainer->Add(fhBkgSumPtInCone[i]) ;
+  }
+
+  fhBkgSumPtnTracksInCone[0]  = new TH2F("BkgSumPtnTracksInConeRC",  "Sum p_{T} / Number of tracks in cone vs p_{T trigger} Bkg RC",   nptbins,ptmin,ptmax,100,0.,20.);
+  fhBkgSumPtnTracksInCone[1]  = new TH2F("BkgSumPtnTracksInConePCG", "Sum p_{T} / Number of tracks in cone vs p_{T trigger} Bkg PCG",  nptbins,ptmin,ptmax,100,0.,20.);
+  fhBkgSumPtnTracksInCone[2]  = new TH2F("BkgSumPtnTracksInConePCJ", "Sum p_{T} / Number of tracks in cone vs p_{T trigger} Bkg PCJ",  nptbins,ptmin,ptmax,100,0.,20.);
+  fhBkgSumPtnTracksInCone[3]  = new TH2F("BkgSumPtnTracksInConeMP",  "Sum p_{T} / Number of tracks in cone vs p_{T trigger} Bkg MP",   nptbins,ptmin,ptmax,100,0.,20.);
+  fhBkgSumPtnTracksInCone[4]  = new TH2F("BkgSumPtnTracksInConeTest","Sum p_{T} / Number of tracks in cone vs p_{T trigger} Bkg Test", nptbins,ptmin,ptmax,100,0.,20.);
+  for(Int_t i=0;i<5;i++){
+    fhBkgSumPtnTracksInCone[i]->SetYTitle("Sum p_{T}/Number of tracks");
+    fhBkgSumPtnTracksInCone[i]->SetXTitle("p_{T trigger}");
+    outputContainer->Add(fhBkgSumPtnTracksInCone[i]) ;
+  }
+
+
+  //temporary histograms
+  fhNjetsNgammas  = new TH2F("NjetsNgammas"," Number of jets vs number of gammas in event",20,0.,100.,10,0.,80.);  
+  fhNjetsNgammas->SetYTitle("Number of gammas");
+  fhNjetsNgammas->SetXTitle("Number of jets");
+  outputContainer->Add(fhNjetsNgammas) ;
+
+  fhCuts  = new TH1F("Cuts"," Cuts",10,0.,10.);  
+  fhCuts->SetYTitle("Counts");
+  fhCuts->SetXTitle("Cut number");
+  outputContainer->Add(fhCuts) ;
+
+  fhDeltaPhiBefore  = new TH2F("DeltaPhiBefore","#phi_{trigger} - #phi_{jet} vs p_{T trigger}",nptbins,ptmin,ptmax,100,0,6.5); 
+  fhDeltaPhiBefore->SetYTitle("#Delta #phi");
+  fhDeltaPhiBefore->SetXTitle("p_{T trigger} (GeV/c)");
+  outputContainer->Add(fhDeltaPhiBefore);
+  
+  fhDeltaEtaBefore  = new TH2F("DeltaEtaBefore","#eta_{trigger} - #eta_{jet} vs p_{T trigger}",nptbins,ptmin,ptmax,100,-2,2); 
+  fhDeltaEtaBefore->SetYTitle("#Delta #eta");
+  fhDeltaEtaBefore->SetXTitle("p_{T trigger} (GeV/c)");
+  outputContainer->Add(fhDeltaEtaBefore);
+  
+  fhDeltaPtBefore  = new TH2F("DeltaPtBefore","p_{T trigger} - p_{T jet} vs p_{T trigger}",nptbins,ptmin,ptmax,100,-50,50); 
+  fhDeltaPtBefore->SetYTitle("#Delta p_{T}");
+  fhDeltaPtBefore->SetXTitle("p_{T trigger} (GeV/c)"); 
+  outputContainer->Add(fhDeltaPtBefore);
+  
+  fhPtRatioBefore  = new TH2F("PtRatioBefore","p_{T jet} / p_{T trigger} vs p_{T trigger}",nptbins,ptmin,ptmax,200,0,2.); 
+  fhPtRatioBefore->SetYTitle("ratio");
+  fhPtRatioBefore->SetXTitle("p_{T trigger} (GeV/c)");
+  outputContainer->Add(fhPtRatioBefore);
+  
+  fhPtBefore  = new TH2F("PtBefore","p_{T jet} vs p_{T trigger}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
+  fhPtBefore->SetYTitle("p_{T jet}(GeV/c)");
+  fhPtBefore->SetXTitle("p_{T trigger} (GeV/c)");
+  outputContainer->Add(fhPtBefore);
+
+  fhDeltaPhi0PiCorrectBefore  = new TH2F("DeltaPhi0PiCorrectBefore","#phi_{trigger} - #phi_{jet} (0,#pi) vs p_{T trigger}",nptbins,ptmin,ptmax,100,0,3.5); 
+  fhDeltaPhi0PiCorrectBefore->SetYTitle("#Delta #phi");
+  fhDeltaPhi0PiCorrectBefore->SetXTitle("p_{T trigger} (GeV/c)");
+  outputContainer->Add(fhDeltaPhi0PiCorrectBefore);
+
+  //temporary jet histograms
+  fhJetPtBefore            = new TH1F("JetPtBefore","JetPtBefore",150,-50,100); 
+  fhJetPtBefore->SetYTitle("Counts");
+  fhJetPtBefore->SetXTitle("p_{T jet}(GeV/c)");
+  outputContainer->Add(fhJetPtBefore) ;
+
+  fhJetPt            = new TH1F("JetPt","JetPt",150,-50,100); 
+  fhJetPt->SetYTitle("Counts");
+  fhJetPt->SetXTitle("p_{T jet}(GeV/c)");
+  outputContainer->Add(fhJetPt) ;
+
+  fhJetPtMostEne            = new TH1F("JetPtMostEne","JetPtMostEne",150,0,150); 
+  fhJetPtMostEne->SetYTitle("Counts");
+  fhJetPtMostEne->SetXTitle("p_{T jet}(GeV/c)");
+  outputContainer->Add(fhJetPtMostEne) ;
+
+  fhJetPhi          = new TH1F("JetPhi","JetPhi",130,0,6.5); 
+  fhJetPhi->SetYTitle("Counts");
+  fhJetPhi->SetXTitle("#phi_{jet}");
+  outputContainer->Add(fhJetPhi) ;
+
+  fhJetEta          = new TH1F("JetEta","JetEta",100,-1,1); 
+  fhJetEta->SetYTitle("Counts");
+  fhJetEta->SetXTitle("#eta_{jet}");
+  outputContainer->Add(fhJetEta) ;
+
+  fhJetEtaVsPt      = new TH2F("JetEtaVsPt","JetEtaVsPt",100,0,100,50,-1,1);
+  fhJetEtaVsPt->SetYTitle("#eta_{jet}");
+  fhJetEtaVsPt->SetXTitle("p_{T,jet}(GeV/c)");
+  outputContainer->Add(fhJetEtaVsPt) ;
+
+  fhJetPhiVsEta      = new TH2F("JetPhiVsEta","JetPhiVsEta",65,0,6.5,50,-1,1); 
+  fhJetPhiVsEta->SetYTitle("#eta_{jet}");
+  fhJetPhiVsEta->SetXTitle("#phi_{jet}");
+  outputContainer->Add(fhJetPhiVsEta) ;
+
+  fhJetEtaVsNpartInJet= new TH2F("JetEtaVsNpartInJet","JetEtaVsNpartInJet",50,-1,1,100,0.,200.); 
+  fhJetEtaVsNpartInJet->SetYTitle("N_{tracks-in-jet}");
+  fhJetEtaVsNpartInJet->SetXTitle("#eta_{jet}");
+  outputContainer->Add(fhJetEtaVsNpartInJet) ;
+
+  fhJetEtaVsNpartInJetBkg= new TH2F("JetEtaVsNpartInJetBkg","JetEtaVsNpartInJetBkg",50,-1,1,100,0.,200.); 
+  fhJetEtaVsNpartInJetBkg->SetYTitle("N_{tracks-in-jet}");
+  fhJetEtaVsNpartInJetBkg->SetXTitle("#eta_{jet}");
+  outputContainer->Add(fhJetEtaVsNpartInJetBkg) ;
+
+  fhJetChBkgEnergyVsPt = new TH2F("JetBkgChEnergyVsPt","JetBkgChEnergyVsPt",100,0,100,90,0,90); 
+  fhJetChBkgEnergyVsPt->SetYTitle("Jet Bkg Energy (GeV)");
+  fhJetChBkgEnergyVsPt->SetXTitle("p_{T,jet} (GeV/c)");
+  outputContainer->Add(fhJetChBkgEnergyVsPt);
+  
+  fhJetChAreaVsPt      = new TH2F("JetChAreaVsPt","JetChAreaVsPt",100,0,100,50,0,1); 
+  fhJetChAreaVsPt->SetYTitle("Jet Area");
+  fhJetChAreaVsPt->SetXTitle("p_{T,jet} (GeV/c)");
+  outputContainer->Add(fhJetChAreaVsPt);
+  
+  if(IsHistogramTracks()){
+    fhTrackPhiVsEta      = new TH2F("TrackPhiVsEta","TrackPhiVsEta",65,0,6.5,50,-1,1); 
+    fhTrackPhiVsEta->SetYTitle("#eta_{track}");
+    fhTrackPhiVsEta->SetXTitle("#phi_{track}");
+    outputContainer->Add(fhTrackPhiVsEta) ;
+
+    fhTrackAveTrackPt      = new TH1F("TrackAveTrackPt","TrackAveTrackPt",45,0,1.5);
+    fhTrackAveTrackPt->SetYTitle("Counts");
+    fhTrackAveTrackPt->SetXTitle("Average p_{T,track} (GeV/c)");
+    outputContainer->Add(fhTrackAveTrackPt);
+  
+  }//end of IsHistogramTracks()
+
+  for(Int_t i=0;i<10;i++){
+    fhJetNjetOverPtCut[i]      = new TH1F(Form("JetNjetOverPtCut%d", i),Form("JetNjetOverPtCut%d", i),100,0,100);
+    fhJetNjetOverPtCut[i]->SetYTitle("Counts");
+    fhJetNjetOverPtCut[i]->SetXTitle("N_{jets} over threshold");
+    outputContainer->Add(fhJetNjetOverPtCut[i]);
+  }
+
+  fhJetChBkgEnergyVsArea = new TH2F("JetBkgChEnergyVsArea","JetBkgChEnergyVsArea",100,0,100,70,0,0.7); 
+  fhJetChBkgEnergyVsArea->SetXTitle("Jet Bkg Energy (GeV)");
+  fhJetChBkgEnergyVsArea->SetYTitle("Area");
+  outputContainer->Add(fhJetChBkgEnergyVsArea);
+
+  fhJetRhoVsPt           = new TH2F("JetRhoVsPt","JetRhoVsPt",100,0,100,100,0,150); 
+  fhJetRhoVsPt->SetYTitle("Rho");
+  fhJetRhoVsPt->SetXTitle("p_{T,jet} (GeV/c)");
+  outputContainer->Add(fhJetRhoVsPt);
+
+  if(IsHistogramJetBkg()){
+    fhJetRhoVsCentrality           = new TH2F("JetRhoVsCentrality","JetRhoVsCentrality",100,0,100,100,0,200);
+    fhJetRhoVsCentrality->SetYTitle("Rho");
+    fhJetRhoVsCentrality->SetXTitle("Centrality");
+    outputContainer->Add(fhJetRhoVsCentrality);
+  }
+
+  fhJetNparticlesInJet           = new TH1F("JetNparticlesInJet","JetNparticlesInJet",100,0,200);
+  fhJetNparticlesInJet->SetXTitle("N^{particles}");
+  fhJetNparticlesInJet->SetYTitle("N^{jets}");
+  outputContainer->Add(fhJetNparticlesInJet);
+
+  fhJetDeltaEtaDeltaPhi      = new TH2F("JetDeltaEtaDeltaPhi","#Delta #eta^{jet-track} vs. #Delta #phi^{jet-track} for jet tracks",100,-0.8,0.8,100,-0.8,0.8);
+  fhJetDeltaEtaDeltaPhi->SetXTitle("#Delta #eta^{jet-track}");
+  fhJetDeltaEtaDeltaPhi->SetYTitle("#Delta #phi^{jet-track}");
+  outputContainer->Add(fhJetDeltaEtaDeltaPhi );
+
+
+  fhJetDeltaEtaDeltaPhiAllTracks      = new TH2F("JetDeltaEtaDeltaPhiAllTracks","#Delta #eta^{jet-track} vs. #Delta #phi^{jet-track} for all tracks",100,-3.2,3.2,100,-3.2,3.2);
+  fhJetDeltaEtaDeltaPhiAllTracks->SetXTitle("#Delta #eta^{jet-track}");
+  fhJetDeltaEtaDeltaPhiAllTracks->SetYTitle("#Delta #phi^{jet-track}");
+  outputContainer->Add(fhJetDeltaEtaDeltaPhiAllTracks);
+
+
+  if(IsHistogramJetTracks()){
+    fhJetAveTrackPt           = new TH1F("JetAveTrackPt","JetAveTrackPt",45,0.,1.5);
+    fhJetAveTrackPt->SetXTitle("Average p_{T,track} (GeV/c)");
+    fhJetAveTrackPt->SetYTitle("Counts");
+    outputContainer->Add(fhJetAveTrackPt);
+    
+    for(Int_t i=0;i<6;i++){
+      if(i==0) fhJetNtracksInJetAboveThr[i]      = new TH2F(Form("JetNtracksInJetAboveThr%d", i),Form("JetNtracksInJetAboveThr%d", i),100,0,100,100,0,200);
+      else fhJetNtracksInJetAboveThr[i]      = new TH2F(Form("JetNtracksInJetAboveThr%d", i),Form("JetNtracksInJetAboveThr%d", i),100,0,100,100,0,100);
+      fhJetNtracksInJetAboveThr[i]->SetXTitle("p_{T,jet} (GeV/c)");
+      fhJetNtracksInJetAboveThr[i]->SetYTitle("N_{tracks} over threshold");
+      outputContainer->Add(fhJetNtracksInJetAboveThr[i]);
+    }
+    
+    for(Int_t i=0;i<5;i++){
+      fhJetRatioNTrkAboveToNTrk[i]      = new TH2F(Form("JetRatioNTrkAboveToNTrk%d", i),Form("JetRatioNTrkAboveToNTrk%d", i),100,0,100,40,0,1);
+      fhJetRatioNTrkAboveToNTrk[i]->SetXTitle("p_{T,jet} (GeV/c)");
+      fhJetRatioNTrkAboveToNTrk[i]->SetYTitle("Ratio N_{tracks} over threshold to N_{tracks}");
+      outputContainer->Add(fhJetRatioNTrkAboveToNTrk[i]);
+      
+      fhJetNtrackRatioMostEne[i]      = new TH2F(Form("JetNtrackRatioMostEne%d", i),Form("JetNtrackRatioMostEne%d", i),100,0,100,40,0,1);
+      fhJetNtrackRatioMostEne[i]->SetXTitle("p_{T,jet} (GeV/c)");
+      fhJetNtrackRatioMostEne[i]->SetYTitle("Ratio N_{tracks} over threshold to N_{tracks}");
+      outputContainer->Add(fhJetNtrackRatioMostEne[i]);
+      
+      fhJetNtrackRatioJet5GeV[i]      = new TH2F(Form("JetNtrackRatioJet5GeV%d", i),Form("JetNtrackRatioJet5GeV%d", i),100,0,100,40,0,1);
+      fhJetNtrackRatioJet5GeV[i]->SetXTitle("p_{T,jet} (GeV/c)");
+      fhJetNtrackRatioJet5GeV[i]->SetYTitle("Ratio N_{tracks} over threshold to N_{tracks}");
+      outputContainer->Add(fhJetNtrackRatioJet5GeV[i]);
+      
+      fhJetNtrackRatioLead5GeV[i]      = new TH2F(Form("JetNtrackRatioLead5GeV%d", i),Form("JetNtrackRatioLead5GeV%d", i),100,0,100,40,0,1);
+      fhJetNtrackRatioLead5GeV[i]->SetXTitle("p_{T,jet} (GeV/c)");
+      fhJetNtrackRatioLead5GeV[i]->SetYTitle("Ratio N_{tracks} over threshold to N_{tracks}");
+      outputContainer->Add(fhJetNtrackRatioLead5GeV[i]);
+    }
+  }//end of if IsHistogramJetTracks
+
+  //temporary background jets histograms
+  if(IsHistogramJetBkg()){
+    for(Int_t i=0;i<4;i++){
+      fhBkgJetBackground[i]      = new TH1F(Form("BkgJetBackground%d", i),Form("BkgJetBackground%d", i),100,0,200);
+      fhBkgJetBackground[i]->SetXTitle("<#rho> (GeV/c)");
+      fhBkgJetBackground[i]->SetYTitle("Counts");
+      outputContainer->Add(fhBkgJetBackground[i]);
+      
+      fhBkgJetSigma[i]      = new TH1F(Form("BkgJetSigma%d", i),Form("BkgJetSigma%d", i),100,0,50);
+      fhBkgJetSigma[i]->SetXTitle("#sigma (GeV/c)");
+      fhBkgJetSigma[i]->SetYTitle("Counts");
+      outputContainer->Add(fhBkgJetSigma[i]);
+      
+      fhBkgJetArea[i]      = new TH1F(Form("BkgJetArea%d", i),Form("BkgJetArea%d", i),100,0,1);
+      fhBkgJetArea[i]->SetXTitle("<A>");
+      fhBkgJetArea[i]->SetYTitle("Counts");
+      outputContainer->Add(fhBkgJetArea[i]);
+    }
+  }
+
+  //temporary photon histograms
+  fhPhotonPtMostEne = new TH1F("PhotonPtMostEne","PhotonPtMostEne",100,0,100);
+  fhPhotonPtMostEne->SetYTitle("Counts");
+  fhPhotonPtMostEne->SetXTitle("p_{T,#gamma} (GeV/c)");
+  outputContainer->Add(fhPhotonPtMostEne);
+
+//  fhPhotonIndexMostEne = new TH1F("PhotonIndexMostEne","PhotonIndexMostEne",100,0,100);
+//  fhPhotonIndexMostEne->SetYTitle("Counts");
+//  fhPhotonIndexMostEne->SetXTitle("Index");
+//  outputContainer->Add(fhPhotonIndexMostEne);
+
+  fhPhotonAverageEnergy = new TH1F("PhotonAverageEnergy","PhotonAverageEnergy",100,0,10);
+  fhPhotonAverageEnergy->SetYTitle("Counts");
+  fhPhotonAverageEnergy->SetXTitle("p_{T,#gamma} (GeV/c)");
+  outputContainer->Add(fhPhotonAverageEnergy);
+
+  fhPhotonRatioAveEneToMostEne = new TH1F("PhotonRatioAveEneToMostEne","PhotonRatioAveEneToMostEne",100,0,1);
+  fhPhotonRatioAveEneToMostEne->SetYTitle("Counts");
+  fhPhotonRatioAveEneToMostEne->SetXTitle("Ratio");
+  outputContainer->Add(fhPhotonRatioAveEneToMostEne);
+
+  fhPhotonAverageEnergyMinus1 = new TH1F("PhotonAverageEnergyMinus1","PhotonAverageEnergyMinus1",100,0,10);
+  fhPhotonAverageEnergyMinus1->SetYTitle("Counts");
+  fhPhotonAverageEnergyMinus1->SetXTitle("p_{T,#gamma} (GeV/c)");
+  outputContainer->Add(fhPhotonAverageEnergyMinus1);
+
+  fhPhotonRatioAveEneMinus1ToMostEne = new TH1F("PhotonRatioAveEneMinus1ToMostEne","PhotonRatioAveEneMinus1ToMostEne",100,0,1);
+  fhPhotonRatioAveEneMinus1ToMostEne->SetYTitle("Counts");
+  fhPhotonRatioAveEneMinus1ToMostEne->SetXTitle("Ratio");
+  outputContainer->Add(fhPhotonRatioAveEneMinus1ToMostEne);
+
+  fhPhotonNgammaMoreAverageToNgamma = new TH1F("PhotonNgammaMoreAverageToNgamma","PhotonNgammaMoreAverageToNgamma",100,0,1);
+  fhPhotonNgammaMoreAverageToNgamma->SetYTitle("Counts");
+  fhPhotonNgammaMoreAverageToNgamma->SetXTitle("Ratio");
+  outputContainer->Add(fhPhotonNgammaMoreAverageToNgamma);
+
+  fhPhotonNgammaMoreAverageMinus1ToNgamma = new TH1F("PhotonNgammaMoreAverageMinus1ToNgamma","PhotonNgammaMoreAverageMinus1ToNgamma",100,0,1);
+  fhPhotonNgammaMoreAverageMinus1ToNgamma->SetYTitle("Counts");
+  fhPhotonNgammaMoreAverageMinus1ToNgamma->SetXTitle("Ratio");
+  outputContainer->Add(fhPhotonNgammaMoreAverageMinus1ToNgamma);
+
+  for(Int_t i=0;i<10;i++){
+    fhPhotonNgammaOverPtCut[i]      = new TH1F(Form("PhotonNgammaOverPtCut%d",i),Form("PhotonNgammaOverPtCut%d",i),100,0,100);
+    fhPhotonNgammaOverPtCut[i]->SetYTitle("Counts");
+    fhPhotonNgammaOverPtCut[i]->SetXTitle("N_{#gamma} over threshold");
+    outputContainer->Add(fhPhotonNgammaOverPtCut[i]);
+  }
+
+  fhPhotonBkgRhoVsNtracks = new TH2F("PhotonBkgRhoVsNtracks","PhotonBkgRhoVsNtracks",200,0,2500,75,0,1.5);
+  //fhPhotonBkgRhoVsNtracks->SetXTitle("Counts");
+  fhPhotonBkgRhoVsNtracks->SetXTitle("Ntracks");
+  fhPhotonBkgRhoVsNtracks->SetYTitle("Rho");
+  outputContainer->Add(fhPhotonBkgRhoVsNtracks);
+
+  fhPhotonBkgRhoVsNclusters = new TH2F("PhotonBkgRhoVsNclusters","PhotonBkgRhoVsNclusters",50,0,100,75,0,1.5);
+  fhPhotonBkgRhoVsNclusters->SetXTitle("Nclusters");
+  fhPhotonBkgRhoVsNclusters->SetYTitle("Rho");
+  outputContainer->Add(fhPhotonBkgRhoVsNclusters);
+
+  fhPhotonBkgRhoVsCentrality = new TH2F("PhotonBkgRhoVsCentrality","PhotonBkgRhoVsCentrality",100,0,100,75,0,1.5);
+  fhPhotonBkgRhoVsCentrality->SetXTitle("Centrality");
+  fhPhotonBkgRhoVsCentrality->SetYTitle("Rho");
+  outputContainer->Add(fhPhotonBkgRhoVsCentrality);
+
+  fhPhotonBkgRhoVsNcells = new TH2F("PhotonBkgRhoVsNcells","PhotonBkgRhoVsNcells",100,0,200,75,0,1.5);
+  fhPhotonBkgRhoVsNcells->SetXTitle("N_{cells}");
+  fhPhotonBkgRhoVsNcells->SetYTitle("Rho");
+  outputContainer->Add(fhPhotonBkgRhoVsNcells);
+
+  fhPhotonPt = new TH1F("PhotonPt","PhotonPt",220,-10,100);
+  fhPhotonPt->SetXTitle("p_{T,#gamma} (GeV/c)");
+  fhPhotonPt->SetYTitle("Counts");
+  outputContainer->Add(fhPhotonPt);
+
+  fhPhotonPtCorrected = new TH1F("PhotonPtCorrected","PhotonPtCorrected",220,-10,100);
+  fhPhotonPtCorrected->SetXTitle("p_{T,#gamma} (GeV/c)");
+  fhPhotonPtCorrected->SetYTitle("Counts");
+  outputContainer->Add(fhPhotonPtCorrected);
+
+  fhPhotonPtDiff = new TH1F("PhotonPtDiff","PhotonPtDiff",50,0,10);
+  fhPhotonPtDiff->SetXTitle("p_{T,#gamma} (GeV/c)");
+  fhPhotonPtDiff->SetYTitle("Counts");
+  outputContainer->Add(fhPhotonPtDiff);
+
+  fhPhotonPtDiffVsNtracks = new TH2F("PhotonPtDiffVsNtracks","PhotonPtDiffVsNtracks",200,0,2500,50,0,5);
+  fhPhotonPtDiffVsNtracks->SetXTitle("N_{tracks}");
+  fhPhotonPtDiffVsNtracks->SetYTitle("<#rho^{#gamma}>*N_{cells}");
+  outputContainer->Add(fhPhotonPtDiffVsNtracks);
+
+  fhPhotonPtDiffVsNclusters = new TH2F("PhotonPtDiffVsNclusters","PhotonPtDiffVsNclusters",50,0,100,50,0,5);
+  fhPhotonPtDiffVsNclusters->SetXTitle("N_{clusters}");
+  fhPhotonPtDiffVsNclusters->SetYTitle("<#rho^{#gamma}>*N_{cells}");
+  outputContainer->Add(fhPhotonPtDiffVsNclusters);
+
+  fhPhotonPtDiffVsCentrality = new TH2F("PhotonPtDiffVsCentrality","PhotonPtDiffVsCentrality",100,0,100,50,0,5);
+  fhPhotonPtDiffVsCentrality->SetXTitle("Centrality");
+  fhPhotonPtDiffVsCentrality->SetYTitle("<#rho^{#gamma}>*N_{cells}");
+  outputContainer->Add(fhPhotonPtDiffVsCentrality);
+
+  fhPhotonPtDiffVsNcells = new TH2F("PhotonPtDiffVsNcells","PhotonPtDiffVsNcells",100,0,200,50,0,5);
+  fhPhotonPtDiffVsNcells->SetXTitle("N_{cells}");
+  fhPhotonPtDiffVsNcells->SetYTitle("<#rho^{#gamma}>*N_{cells}");
+  outputContainer->Add(fhPhotonPtDiffVsNcells);
+
+
+  fhPhotonPtCorrectedZoom = new TH1F("PhotonPtCorrectedZoom","PhotonPtCorrectedZoom",200,-5,5);
+  fhPhotonPtCorrectedZoom->SetXTitle("p_{T,#gamma} (GeV/c)");
+  fhPhotonPtCorrectedZoom->SetYTitle("Counts");
+  outputContainer->Add(fhPhotonPtCorrectedZoom);
+
+  fhPhotonSumPtInCone = new TH1F("PhotonSumPtInCone","PhotonSumPtInCone",100,0,100);
+  fhPhotonSumPtInCone->SetXTitle("#Sigma p_{T,#gamma} (GeV/c)");
+  fhPhotonSumPtInCone->SetYTitle("Counts");
+  outputContainer->Add(fhPhotonSumPtInCone);
+
+  fhPhotonSumPtCorrectInCone = new TH1F("PhotonSumPtCorrectInCone","PhotonSumPtCorrectInCone",100,-20,80);
+  fhPhotonSumPtCorrectInCone->SetXTitle("#Sigma p_{T,#gamma} (GeV/c)");
+  fhPhotonSumPtCorrectInCone->SetYTitle("Counts");
+  outputContainer->Add(fhPhotonSumPtCorrectInCone);
+
+  fhPhotonSumPtChargedInCone = new TH1F("PhotonSumPtChargedInCone","PhotonSumPtChargedInCone",100,0,100);
+  fhPhotonSumPtChargedInCone->SetXTitle("#Sigma p_{T,#gamma}^{ch} (GeV/c)");
+  fhPhotonSumPtChargedInCone->SetYTitle("Counts");
+  outputContainer->Add(fhPhotonSumPtChargedInCone);
+
+
+  //temporary jet histograms after selection
+  fhSelectedJetPhiVsEta      = new TH2F("SelectedJetSelectedPhiVsEta","SelectedJetPhiVsEta",65,0,6.5,50,-1,1); 
+  fhSelectedJetPhiVsEta->SetYTitle("#eta_{jet}");
+  fhSelectedJetPhiVsEta->SetXTitle("#phi_{jet}");
+  outputContainer->Add(fhSelectedJetPhiVsEta) ;
+
+  fhSelectedJetChBkgEnergyVsPtJet = new TH2F("SelectedJetBkgChEnergyVsPtJet","SelectedJetBkgChEnergyVsPtJet",100,0,100,90,0,90); 
+  fhSelectedJetChBkgEnergyVsPtJet->SetYTitle("Jet Bkg Energy (GeV)");
+  fhSelectedJetChBkgEnergyVsPtJet->SetXTitle("p_{T,jet} (GeV/c)");
+  outputContainer->Add(fhSelectedJetChBkgEnergyVsPtJet);
+  
+  fhSelectedJetChAreaVsPtJet      = new TH2F("SelectedJetChAreaVsPtJet","SelectedJetChAreaVsPtJet",100,0,100,50,0,1); 
+  fhSelectedJetChAreaVsPtJet->SetYTitle("Jet Area");
+  fhSelectedJetChAreaVsPtJet->SetXTitle("p_{T,jet} (GeV/c)");
+  outputContainer->Add(fhSelectedJetChAreaVsPtJet);
+
+  fhSelectedJetNjet      = new TH1F("SelectedJetNjet","SelectedJetNjet",100,0,100); 
+  fhSelectedJetNjet->SetYTitle("Counts");
+  fhSelectedJetNjet->SetXTitle("N_{jets} per event");
+  outputContainer->Add(fhSelectedJetNjet);
+
+  fhSelectedNtracks      = new TH1F("SelectedNtracks","SelectedNtracks",100,0,2000); 
+  fhSelectedNtracks->SetYTitle("Counts");
+  fhSelectedNtracks->SetXTitle("N_{tracks} per event");
+  outputContainer->Add(fhSelectedNtracks);
+
+  fhSelectedTrackPhiVsEta      = new TH2F("SelectedTrackPhiVsEta","SelectedTrackPhiVsEta",65,0,6.5,50,-1,1); 
+  fhSelectedTrackPhiVsEta->SetYTitle("#eta_{track}");
+  fhSelectedTrackPhiVsEta->SetXTitle("#phi_{track}");
+  outputContainer->Add(fhSelectedTrackPhiVsEta) ;
+
+  fhCuts2      = new TH1F("Cuts2","Cuts2",10,0.,10.); 
+  fhCuts2->SetYTitle("Counts");
+  fhCuts2->SetXTitle("Cut number");
+  outputContainer->Add(fhCuts2);
+
+  fhSelectedPhotonNLMVsPt      = new TH2F("SelectedPhotonNLMVsPt","SelectedPhotonNLMVsPt",100,0,100,10,0,10);
+  fhSelectedPhotonNLMVsPt->SetYTitle("NLM");
+  fhSelectedPhotonNLMVsPt->SetXTitle("p_{T,#gamma} (GeV/c)");
+  outputContainer->Add(fhSelectedPhotonNLMVsPt);
+
+  fhSelectedPhotonLambda0VsPt      = new TH2F("SelectedPhotonLambda0VsPt","SelectedPhotonLambda0VsPt",100,0,100,50,0,5);
+  fhSelectedPhotonLambda0VsPt->SetYTitle("#lambda_{0}");
+  fhSelectedPhotonLambda0VsPt->SetXTitle("p_{T,#gamma} (GeV/c)");
+  outputContainer->Add(fhSelectedPhotonLambda0VsPt);
+
+  //random
+  fhRandomPhiEta[0]  = new TH2F("RandomPhiEtaRC",  "RandomPhiEtaRC",            100,0,6.5,100,-1.,1.);
+  fhRandomPhiEta[1]  = new TH2F("RandomPhiEtaPCG", "RandomPhiEtaPerpConePhoton",100,0,6.5,100,-1.,1.);
+  fhRandomPhiEta[2]  = new TH2F("RandomPhiEtaPCJ", "RandomPhiEtaPerpConeJet",   100,0,6.5,100,-1.,1.);
+  fhRandomPhiEta[3]  = new TH2F("RandomPhiEtaMP",  "RandomPhiEtaMidPoint",      100,0,6.5,100,-1.,1.);
+  fhRandomPhiEta[4]  = new TH2F("RandomPhiEtaTest","RandomPhiEtaTest",          100,0,6.5,100,-1.,1.);
+  for(Int_t i=0;i<5;i++){
+    fhRandomPhiEta[i]->SetXTitle("#phi");
+    fhRandomPhiEta[i]->SetYTitle("#eta");
+    outputContainer->Add(fhRandomPhiEta[i]);
+  }
+
+
+  //tree with data
+  if(fSaveGJTree){
+    fTreeGJ=new TTree("fTreeGJ","fTreeGJ");
+    fTreeGJ->Branch("fGamPt"      ,&fGamPt    ,"fGamPt/D");//! fGamPt
+    fTreeGJ->Branch("fGamLambda0" ,&fGamLambda0  ,"fGamLambda0/D");
+    fTreeGJ->Branch("fGamNLM"     ,&fGamNLM      ,"fGamNLM/I");
+    fTreeGJ->Branch("fGamSumPtCh" ,&fGamSumPtCh  ,"fGamSumPtCh/D");
+    fTreeGJ->Branch("fGamNtracks" ,&fGamNtracks  ,"fGamNtracks/I");
+    fTreeGJ->Branch("fGamTime"    ,&fGamTime     ,"fGamTime/D");
+    fTreeGJ->Branch("fGamNcells"  ,&fGamNcells   ,"fGamNcells/I");
+    fTreeGJ->Branch("fGamEta"     ,&fGamEta      ,"fGamEta/D");
+    fTreeGJ->Branch("fGamPhi"     ,&fGamPhi      ,"fGamPhi/D");
+    fTreeGJ->Branch("fGamSumPtNeu",&fGamSumPtNeu ,"fGamSumPtNeu/D");
+    fTreeGJ->Branch("fGamNclusters" ,&fGamNclusters  ,"fGamNclusters/I");
+    fTreeGJ->Branch("fGamAvEne"   ,&fGamAvEne    ,"fGamAvEne/D");
+    fTreeGJ->Branch("fJetPhi"     ,&fJetPhi      ,"fJetPhi/D");
+    fTreeGJ->Branch("fJetEta"     ,&fJetEta      ,"fJetEta/D");
+    fTreeGJ->Branch("fJetPt"      ,&fJetPt       ,"fJetPt/D");
+    fTreeGJ->Branch("fJetBkgChEne",&fJetBkgChEne ,"fJetBkgChEne/D");
+    fTreeGJ->Branch("fJetArea"    ,&fJetArea     ,"fJetArea/D");
+    fTreeGJ->Branch("fJetNtracks" ,&fJetNtracks  ,"fJetNtracks/I");
+    fTreeGJ->Branch("fJetNtracks1" ,&fJetNtracks1  ,"fJetNtracks1/I");
+    fTreeGJ->Branch("fJetNtracks2" ,&fJetNtracks2  ,"fJetNtracks2/I");
+    fTreeGJ->Branch("fJetRho" ,&fJetRho  ,"fJetRho/D");
+    fTreeGJ->Branch("fEventNumber",&fEventNumber ,"fEventNumber/I");
+    fTreeGJ->Branch("fNtracks"    ,&fNtracks     ,"fNtracks/I");
+    fTreeGJ->Branch("fZvertex"    ,&fZvertex     ,"fZvertex/D");
+    fTreeGJ->Branch("fCentrality" ,&fCentrality  ,"fCentrality/D");
+    fTreeGJ->Branch("fIso" ,&fIso  ,"fIso/O");
+    fTreeGJ->Branch("fGamRho" ,&fGamRho  ,"fGamRho/D");
+
+    outputContainer->Add(fTreeGJ);
+  }
+
   return outputContainer;
 
 }
@@ -122,6 +732,7 @@ TList *  AliAnaParticleJetFinderCorrelation::GetCreateOutputObjects()
 //_______________________________________________________
 void AliAnaParticleJetFinderCorrelation::InitParameters()
 {
+  //  printf("InitParameters\n");
   //Initialize the parameters of the analysis.
   SetInputAODName("PWG4Particle");
   AddToHistogramsName("AnaJetFinderCorr_");
@@ -135,59 +746,130 @@ void AliAnaParticleJetFinderCorrelation::InitParameters()
   fUseJetRefTracks   = kFALSE ;
   fMakeCorrelationInHistoMaker = kFALSE ;
   fSelectIsolated = kFALSE;
-  
+  fJetConeSize = 0.4 ;
+  fJetMinPt = 5 ; //GeV/c
+  fJetAreaFraction = 0.6 ;
+  fJetBranchName = "jets";
+  fBkgJetBranchName = "jets";
+  fGammaConeSize = 0.3;
+  fUseBackgroundSubtractionGamma = kFALSE;
+  fSaveGJTree = kTRUE;
+  fMostEnergetic = kFALSE;
+  fMostOpposite = kTRUE;
+  fUseHistogramJetBkg = kTRUE;
+  fUseHistogramTracks = kTRUE;
+  fUseHistogramJetTracks = kTRUE;
+
 }
 
-//__________________________________________________________________________________
-Int_t  AliAnaParticleJetFinderCorrelation::SelectJet(AliAODPWG4Particle * particle, 
-                                                     const AliAODEvent *event) const 
+//__________________________________________________________________
+Int_t  AliAnaParticleJetFinderCorrelation::SelectJet(AliAODPWG4Particle * particle, TClonesArray *aodRecJets)
 {
+  //Input for jets is TClonesArray *aodRecJets
   //Returns the index of the jet that is opposite to the particle
+  //  printf(" SelectJet ");
   
-  Int_t njets = event->GetNJets() ;    
+  Double_t particlePt=particle->Pt();
+  if(fUseBackgroundSubtractionGamma) {
+    Int_t clusterIDtmp = particle->GetCaloLabel(0) ;
+    Int_t nCells=0;
+    AliVCluster *cluster=0;
+    if(!(clusterIDtmp<0) ){
+      Int_t iclustmp = -1;
+      TObjArray* clusters = GetEMCALClusters();
+      cluster = FindCluster(clusters,clusterIDtmp,iclustmp);
+      nCells = cluster->GetNCells();
+    }
+    particlePt-=(fGamRho*nCells);
+  }
+  if(particlePt<=0) {
+    //printf("Particle with negative  or 0 pt\n");
+    return -2;
+  }
   
+  Int_t njets = aodRecJets->GetEntriesFast();
   AliAODJet * jet = 0 ;
   Int_t index = -1;
+  Double_t dphiprev= 10000;
+  Double_t particlePhi=particle->Phi();
+  Double_t deltaPhi=-10000.;// in the range (0; 2*pi)
+  Double_t jetPt=0.;
+  
   for(Int_t ijet = 0; ijet < njets ; ijet++){
-    jet = event->GetJet(ijet) ;          
-    Float_t dphi  = TMath::Abs(particle->Phi()-jet->Phi());
-    Float_t ratio = jet->Pt()/particle->Pt();
-    if(GetDebug() > 3)
-      printf("AliAnaParticleJetFinderCorrelation::SelectJet() - Jet %d, Ratio pT %2.3f, Delta phi %2.3f\n",ijet,ratio,dphi);     
-    Float_t dphiprev= 10000;
-    if((dphi > fDeltaPhiMinCut) && (dphi<fDeltaPhiMaxCut) &&
+    jet = dynamic_cast<AliAODJet*>(aodRecJets->At(ijet));
+    fhCuts2->Fill(2.,1.);
+    jetPt=jet->Pt();
+    if(fBackgroundJetFromReader ){
+      jetPt-= (fJetRho * jet->EffectiveAreaCharged() );
+    }
+    if(jetPt<0.) continue;
+    //put jet eta requirement here |eta_jet|<0.9-jet_cone_size
+    fhCuts2->Fill(3.,1.);
+    if(TMath::Abs(jet->Eta()) > (0.9 - fJetConeSize) ) continue;
+    fhCuts2->Fill(4.,1.);
+    //    if(jet->Pt()<5) continue;
+    if(jetPt<fJetMinPt) continue;
+    fhCuts2->Fill(5.,1.);
+    if(jet->EffectiveAreaCharged()<fJetAreaFraction*TMath::Pi()*fJetConeSize*fJetConeSize) continue;
+    fhCuts2->Fill(6.,1.);
+    //printf("jet found\n");
+    Double_t deltaPhi0pi  = TMath::Abs(particle->Phi()-jet->Phi());
+    Double_t ratio = jetPt/particlePt;
+    
+    deltaPhi = particlePhi - jet->Phi() ;
+    if ( deltaPhi0pi > TMath::Pi() ) deltaPhi0pi = 2. * TMath::Pi() - deltaPhi0pi ;
+    if(deltaPhi<0) deltaPhi +=(TMath::Pi()*2.);
+    
+    fhDeltaPtBefore ->Fill(particlePt, particlePt - jetPt);
+    fhDeltaPhiBefore->Fill(particlePt, deltaPhi);
+    fhDeltaEtaBefore->Fill(particlePt, particle->Eta() - jet->Eta());
+    fhPtRatioBefore ->Fill(particlePt, jetPt/particlePt);
+    fhPtBefore      ->Fill(particlePt, jetPt);
+    
+    fhDeltaPhi0PiCorrectBefore->Fill(particlePt, deltaPhi0pi);//good
+    
+    if(GetDebug() > 5)
+      printf("AliAnaParticleJetFinderCorrelation::SelectJet() - Jet %d, Ratio pT %2.3f, Delta phi %2.3f\n",ijet,ratio,deltaPhi);
+    
+    if((deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut) &&
        (ratio > fRatioMinCut) && (ratio < fRatioMaxCut)  &&
-       (TMath::Abs(dphi-3.14159) < TMath::Abs(dphiprev-3.14159))){//In case there is more than one jet select the most opposite.
-    dphiprev = dphi;
-    index = ijet ;     
-  }//Selection cuts
-}//AOD Jet loop
-
-return index ;
-
+       (TMath::Abs(deltaPhi-TMath::Pi()) < TMath::Abs(dphiprev-TMath::Pi())  )){//In case there is more than one jet select the most opposite.
+      dphiprev = deltaPhi;
+      index = ijet ;
+    }//Selection cuts
+  }//AOD Jet loop
+  
+  return index ;
+  
 }
 
 //__________________________________________________________________
-void  AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() 
-{  
+void  AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD()
+{
   //Particle-Jet Correlation Analysis, fill AODs
-
+  //  printf("I use MakeAnalysisFillAOD\n");
   //Get the event, check if there are AODs available, if not, skip this analysis
   AliAODEvent * event = NULL;
-  if(GetReader()->GetOutputEvent()) 
+  
+  //  cout<<"GetReader()->GetOutputEvent() "<<GetReader()->GetOutputEvent()<<endl;
+  //  cout<<"GetReader()->GetDataType() "<<GetReader()->GetDataType() <<endl;
+  //  cout<<"AliCaloTrackReader::kAOD "<<AliCaloTrackReader::kAOD<<endl;
+  //  cout<<"GetReader()->GetInputEvent() "<<GetReader()->GetInputEvent()<<endl;
+  
+  if(GetReader()->GetOutputEvent())
   {
-    event = dynamic_cast<AliAODEvent*>(GetReader()->GetOutputEvent()); 
+    event = dynamic_cast<AliAODEvent*>(GetReader()->GetOutputEvent());
   }
-  else if(GetReader()->GetDataType() == AliCaloTrackReader::kAOD) 
-  {   
-    event = dynamic_cast<AliAODEvent*>(GetReader()->GetInputEvent()); 
+  else if(GetReader()->GetDataType() == AliCaloTrackReader::kAOD)
+  {
+    event = dynamic_cast<AliAODEvent*>(GetReader()->GetInputEvent());
   }
-  else 
+  else
   {
     if(GetDebug() > 3) printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - There are no jets available for this analysis\n");
     return;
   }
-    
+  
   if(!GetInputAODBranch() || !event){
     printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s > \n",GetInputAODName().Data());
     abort();
@@ -197,44 +879,214 @@ void  AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD()
     printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - Wrong type of AOD object, change AOD class name in input AOD: It should be <AliAODPWG4ParticleCorrelation> and not <%s> \n",GetInputAODBranch()->GetClass()->GetName());
     abort();
   }
-       
-  Int_t ntrig =  GetInputAODBranch()->GetEntriesFast() ;  
+  
+  //
+  // non-standard jets
+  //
+  Int_t nJets=-1;
+  TClonesArray *aodRecJets = 0;
+  if(IsNonStandardJetFromReader()){//jet branch from reader
+    if(GetDebug() > 3) printf("GetNonStandardJets function (from reader) is called\n");
+    aodRecJets = GetNonStandardJets();
+    if(GetDebug() > 3) printf("aodRecJets %p\n",aodRecJets);
+    if(aodRecJets==0x0){
+      if(GetDebug() > 3) event->Print();
+      abort();
+    }
+    nJets=aodRecJets->GetEntries();
+    if(GetDebug() > 3) printf("nJets %d\n",nJets);
+  }
+  //end of new part
+  
+  if(nJets==0) {
+    //printf("Why number of jets = 0? Check what type of collision it is. If PbPb -problem.\n");
+    return;
+  }
+  
+  //
+  //Background jets
+  //
+  AliAODJetEventBackground* aodBkgJets = 0;
+  if(IsBackgroundJetFromReader()){//jet branch from reader
+    if(GetDebug() > 3) printf("GetBackgroundJets function is called\n");
+    aodBkgJets = GetBackgroundJets();
+    if(GetDebug() > 3) printf("aodBkgJets %p\n",aodBkgJets);
+    if(aodBkgJets==0x0){
+      if(GetDebug() > 3) event->Print();
+      abort();
+    }
+    if(GetDebug() > 3) aodBkgJets->Print("c");
+  }
+  
+  Double_t rhoEvent=0.;
+  if(aodBkgJets && IsBackgroundJetFromReader() ) {
+    rhoEvent = aodBkgJets->GetBackground(2);//hardcoded
+  }
+  fJetRho = rhoEvent;
+  
+  
+  Int_t ntrig =  GetInputAODBranch()->GetEntriesFast() ;
   if(GetDebug() > 3){
     printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - Begin jet finder  correlation analysis, fill AODs \n");
     printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - In particle branch aod entries %d\n", ntrig);
-    printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - In jet      branch aod entries %d\n", event->GetNJets());
+    printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - In standard jet branch aod entries %d\n", event->GetNJets());
+    printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - In non standard jet branch aod entries %d\n", nJets);
   }
   
-  //Loop on stored AOD particles, trigger
-  for(Int_t iaod = 0; iaod < ntrig ; iaod++){
-    AliAODPWG4ParticleCorrelation* particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
-       
-    //Correlate with jets
-    Int_t ijet = SelectJet(particle,event);
-    if(ijet > -1){
-      if(GetDebug() > 2) printf ("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - Jet with index %d selected \n",ijet);
-      AliAODJet *jet = event->GetJet(ijet);     
-      particle->SetRefJet(jet);        
+  //if(nJets==0)   return;//to speed up
+  //  cout<<"ntrig po return "<<ntrig<<endl;
+  
+  //
+  //calculate average cell energy without most energetic photon
+  //
+  Double_t medianPhotonRho=0.;
+  TObjArray* clusters = GetEMCALClusters();
+  Int_t clusterIDtmp;
+  Int_t iclustmp = -1;
+  AliVCluster *cluster=0;
+  
+  if(IsBackgroundSubtractionGamma()){
+    //
+    // Find most energetic photon without background subtraction
+    //
+    Double_t maxPt=0.;
+    Int_t maxIndex=-1;
+    AliAODPWG4ParticleCorrelation* particlecorr =0;
+    for(Int_t iaod = 0; iaod < ntrig ; iaod++){
+      particlecorr =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+      if(particlecorr->Pt() > maxPt) {
+        maxPt = particlecorr->Pt();
+        maxIndex = iaod;
+      }
     }
-  } // input aod loop            
+    
+    //
+    // calculate background energy per cell
+    //
+    Int_t numberOfcells=0;
+    if(ntrig>1){
+      Double_t *photonRhoArr=new Double_t[ntrig-1];
+      Int_t photonRhoArrayIndex=0;
+      for(Int_t iaod = 0; iaod < ntrig ; iaod++){
+        particlecorr =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+        if(iaod==maxIndex) continue;
+        clusterIDtmp = particlecorr->GetCaloLabel(0) ;
+        if(clusterIDtmp < 0) continue;
+        cluster = FindCluster(clusters,clusterIDtmp,iclustmp);
+        photonRhoArr[photonRhoArrayIndex]=particlecorr->Pt()/ cluster->GetNCells();
+        numberOfcells+=cluster->GetNCells();
+        photonRhoArrayIndex++;
+      }
+      if(photonRhoArrayIndex>0) medianPhotonRho=TMath::Median(photonRhoArrayIndex,photonRhoArr);
+      delete photonRhoArr;
+    }
+  }//end of if background calculation for gamma
+  fGamRho = medianPhotonRho;
+  
+  
+  //
+  //take most energetic photon and most energetic jet and combine
+  //
+  if(fMostEnergetic){
+    //
+    // most energetic photon with background subtraction
+    //
+    Double_t mostEnePhotonPt=0.;
+    Int_t indexMostEnePhoton=-1;
+    AliAODPWG4ParticleCorrelation* particle =0;
+    Double_t ptCorrect=0.;
+    Int_t nCells=0;
+    for(Int_t iaod = 0; iaod < ntrig ; iaod++){
+      particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+      clusterIDtmp = particle->GetCaloLabel(0) ;
+      if(!(clusterIDtmp<0)){
+        cluster = FindCluster(clusters,clusterIDtmp,iclustmp);
+        nCells = cluster->GetNCells();
+      }
+      ptCorrect = particle->Pt() - medianPhotonRho * nCells;
+      if( ptCorrect > mostEnePhotonPt ){
+        mostEnePhotonPt = ptCorrect;
+        indexMostEnePhoton = iaod ;
+      }
+    }
+    //    printf ("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - Photon with index %d selected \n",indexMostEnePhoton);
+    //
+    // most energetic jet with background subtraction
+    //
+    Double_t mostEneJetPt=0.;
+    Int_t indexMostEneJet=-1;
+    AliAODJet * jet = 0 ;
+    //Double_t ptCorrect=0.;
+    for(Int_t ijet = 0; ijet < nJets ; ijet++){
+      jet = dynamic_cast<AliAODJet*>(aodRecJets->At(ijet));
+      if(TMath::Abs(jet->Eta()) > (0.9 - fJetConeSize) ) continue;
+      if(jet->EffectiveAreaCharged()<fJetAreaFraction*TMath::Pi()*fJetConeSize*fJetConeSize) continue;
+      if(jet->Pt()<fJetMinPt) continue;
+      ptCorrect = jet->Pt() - rhoEvent * jet->EffectiveAreaCharged();
+      if(ptCorrect > mostEneJetPt){
+        mostEneJetPt = ptCorrect;
+        indexMostEneJet = ijet;
+      }
+    }
+    //    printf ("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - Jet with index %d selected \n",indexMostEneJet);
+    
+    //
+    // assign jet to photon
+    //
+    if(indexMostEneJet>=0 && indexMostEnePhoton>=0){
+      particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(indexMostEnePhoton));
+      jet = dynamic_cast<AliAODJet*>(aodRecJets-> At(indexMostEneJet));
+      particle->SetRefJet(jet);
+    }
+  }//end of take most energetic photon and most ene. jet after bkg subtraction
+  
+  if(fMostOpposite){
+    //Bool_t isJetFound=kFALSE;//new
+    //Loop on stored AOD particles, trigger
+    for(Int_t iaod = 0; iaod < ntrig ; iaod++){
+      AliAODPWG4ParticleCorrelation* particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+      
+      //Correlate with jets
+      Int_t ijet = SelectJet(particle,aodRecJets);//input for jets is TClonesArray
+      if(ijet > -1){
+        //isJetFound=kTRUE;
+        if(GetDebug() > 2) printf ("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - Jet with index %d selected \n",ijet);
+        AliAODJet *jet = dynamic_cast<AliAODJet*>(aodRecJets-> At(ijet));
+        particle->SetRefJet(jet);
+        //printf("Most opposite found\n");
+      }
+    } // input aod loop
+    //  if(GetReader()->WriteDeltaAODToFile() && isJetFound) WriteJetsToOutputBranch(aodRecJets);
+  }//end of take most opposite photon and jet after bkg subtraction
+  
   
   if(GetDebug() > 1 ) printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillAOD() - End fill AODs \n");
 } 
 
 //__________________________________________________________________
-void  AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms() 
+void  AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms()
 {
   //Particle-Jet Correlation Analysis, fill histograms
+  if(GetDebug() > 3 ) {
+    printf("I use MakeAnalysisFillHistograms\n");
+    printf("ntracks before iso %d\n",GetCTSTracks()->GetEntriesFast() );
+  }
   
   //Get the event, check if there are AODs available, if not, skip this analysis
   AliAODEvent * event = NULL;
-  if(GetReader()->GetOutputEvent()) 
+  
+  //printf("GetReader()->GetOutputEvent() %d\n",GetReader()->GetOutputEvent() );
+  //printf("GetReader()->GetDataType() %d\n",GetReader()->GetDataType() );
+  //printf("AliCaloTrackReader::kAOD %d\n",AliCaloTrackReader::kAOD );
+  //printf("GetReader()->GetInputEvent() %d\n",GetReader()->GetInputEvent() );
+  
+  if(GetReader()->GetOutputEvent())
   {
-    event = dynamic_cast<AliAODEvent*>(GetReader()->GetOutputEvent()); 
+    event = dynamic_cast<AliAODEvent*>(GetReader()->GetOutputEvent());
   }
-  else if(GetReader()->GetDataType() == AliCaloTrackReader::kAOD) 
-  {  
-    event = dynamic_cast<AliAODEvent*>(GetReader()->GetInputEvent()); 
+  else if(GetReader()->GetDataType() == AliCaloTrackReader::kAOD)
+  {
+    event = dynamic_cast<AliAODEvent*>(GetReader()->GetInputEvent());
   }
   else {
     if(GetDebug() > 3) printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms() - There are no jets available for this analysis\n");
@@ -246,65 +1098,543 @@ void  AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms()
     abort();
   }
   
-  Int_t ntrig   =  GetInputAODBranch()->GetEntriesFast() ;    
+  Int_t nJets=-1;
+  TClonesArray *aodRecJets = 0;
+  if(IsNonStandardJetFromReader()){//branch read in reader from reader
+    if (GetDebug() > 3) printf("GetNonStandardJets function (from reader) is called\n");
+    aodRecJets = GetNonStandardJets();
+    if(aodRecJets==0x0){
+      if(GetDebug() > 3) event->Print();
+      abort();
+    }
+    nJets=aodRecJets->GetEntries();
+  }
+  if(nJets==0) {
+    //    printf("Why number of jets = 0? Check what type of collision it is. If PbPb -problem.\n");
+    GetReader()->FillInputNonStandardJets();
+    aodRecJets = GetNonStandardJets();
+    nJets=aodRecJets->GetEntries();
+    //    printf("nJets = %d\n",nJets);
+    return;
+  }
+  
+  //
+  //Background jets
+  //
+  AliAODJetEventBackground* aodBkgJets = 0;
+  if(IsBackgroundJetFromReader()){//jet branch from reader
+    if(GetDebug() > 3) printf("GetBackgroundJets function is called\n");
+    aodBkgJets = GetBackgroundJets();
+    if(GetDebug() > 3) printf("aodBkgJets %p\n",aodBkgJets);
+    if(aodBkgJets==0x0){
+      if(GetDebug() > 3) event->Print();
+      abort();
+    }
+    if(GetDebug() > 3) aodBkgJets->Print("c");
+  }
+  
+  
+  //
+  // only background jets informations
+  //
+  //  Float_t pTback = 0;
+  Double_t rhoEvent=0.;
+  if(aodBkgJets) {
+    if(IsBackgroundJetFromReader() ) rhoEvent = aodBkgJets->GetBackground(2);
+    if(IsHistogramJetBkg()) {
+      fhJetRhoVsCentrality->Fill(GetEventCentrality(),rhoEvent);
+      for(Int_t i=0;i<4;i++){
+        fhBkgJetBackground[i]->Fill(aodBkgJets->GetBackground(i));
+        fhBkgJetSigma[i]->Fill(aodBkgJets->GetSigma(i));
+        fhBkgJetArea[i]->Fill(aodBkgJets->GetMeanarea(i));
+      }
+    }//end of if fill HistogramJetBkg
+  }//end if aodBkgJets exists
+  
+  //
+  //only track information
+  //
+  Int_t nCTSTracks = GetCTSTracks()->GetEntriesFast();
+  AliAODTrack *aodtrack;
+  Int_t itrack = 0;
+  if(IsHistogramTracks()) {
+    Double_t sumTrackPt=0;
+    for(itrack = 0; itrack < nCTSTracks ; itrack++){
+      aodtrack = dynamic_cast <AliAODTrack*>(GetCTSTracks()->At(itrack));
+      fhTrackPhiVsEta->Fill(aodtrack->Phi(),aodtrack->Eta());
+      sumTrackPt+=aodtrack->Pt();
+    }
+    if(nCTSTracks)
+      fhTrackAveTrackPt->Fill(sumTrackPt/nCTSTracks);
+  }//end if IsHistogramTracks
+  
+  //
+  //only jet informations
+  //
+  AliAODJet * jettmp = 0 ;
+  Double_t jetPttmp = 0.;
+  Double_t var1tmp = 0.;
+  Double_t var2tmp = 0.;
+  //  fhJetNjet->Fill(nJets);
+  Double_t ptMostEne=0;
+  //  Int_t indexMostEne=-1;
+  Int_t nJetsOverThreshold[10]={nJets,0,0,0,0,0,0,0,0,0};
+  Int_t iCounter=0;
+  Double_t sumJetTrackPt=0.;
+  Int_t sumNJetTrack=0;
+  Int_t nTracksInJet=0;
+  Int_t itrk=0;
+  for(Int_t ijet = 0; ijet < nJets ; ijet++){
+    jettmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ijet));
+    fhJetPtBefore->Fill(jettmp->Pt());
+    jetPttmp  = jettmp->Pt() - rhoEvent * jettmp->EffectiveAreaCharged();//<<---changed here
+    
+    //calculate number of tracks above 1,2,3,4,5 GeV in jet
+    AliVTrack* jettrack = 0x0 ;
+    
+    Int_t nTrackThrGeV[5]={0,0,0,0,0};
+    nTracksInJet=(jettmp->GetRefTracks())->GetEntriesFast();
+    fhJetNparticlesInJet->Fill(nTracksInJet);
+    if(nTracksInJet==0) continue;
+    sumNJetTrack+=nTracksInJet;
+    for(itrack=0;itrack<nTracksInJet;itrack++){
+      jettrack=(AliVTrack *) ((jettmp->GetRefTracks())->At(itrack));
+      if(!jettrack) continue;
+      
+      fhJetDeltaEtaDeltaPhi->Fill(jettmp->Eta()-jettrack->Eta(),jettmp->Phi()-jettrack->Phi());
+      sumJetTrackPt+=jettrack->Pt();
+      if(IsHistogramJetTracks()){
+        if(jettrack->Pt()>1.) nTrackThrGeV[0]++;
+        if(jettrack->Pt()>2.) nTrackThrGeV[1]++;
+        if(jettrack->Pt()>3.) nTrackThrGeV[2]++;
+        if(jettrack->Pt()>4.) nTrackThrGeV[3]++;
+        if(jettrack->Pt()>5.) nTrackThrGeV[4]++;
+      }//end of if IsHistogramJetTracks
+    }//end of jet track loop
+    //printf("jetPt %f ntrks %d ntrks>1,2,3,4,5GeV in jet %d, %d, %d, %d, %d\n",jetPttmp,nTracksInJet,nTrackThrGeV[0],nTrackThrGeV[1],nTrackThrGeV[2],nTrackThrGeV[3],nTrackThrGeV[4]);
+    
+    for(itrack = 0; itrack < nCTSTracks ; itrack++){
+      aodtrack = dynamic_cast <AliAODTrack*>(GetCTSTracks()->At(itrack));
+      fhJetDeltaEtaDeltaPhiAllTracks->Fill(jettmp->Eta()-aodtrack->Eta(),jettmp->Phi()-aodtrack->Phi());
+    }
+    
+    
+    if(IsHistogramJetTracks()){
+      fhJetNtracksInJetAboveThr[0]->Fill(jetPttmp,nTracksInJet);//all jets
+      
+      for(itrk=0;itrk<5;itrk++) {
+        fhJetNtracksInJetAboveThr[itrk+1]->Fill(jetPttmp,nTrackThrGeV[itrk]);//all jets
+        fhJetRatioNTrkAboveToNTrk[itrk]->Fill(jetPttmp,(Double_t)nTrackThrGeV[itrk]/(Double_t)nTracksInJet);//all jets
+      }
+      if(ijet==0){//most ene jet
+        for(itrk=0;itrk<5;itrk++)
+          fhJetNtrackRatioMostEne[itrk]->Fill(jetPttmp,(Double_t)nTrackThrGeV[itrk]/(Double_t)nTracksInJet);
+      }
+      if(jetPttmp>5){//jet with pt>5GeV/c
+        for(itrk=0;itrk<5;itrk++)
+          fhJetNtrackRatioJet5GeV[itrk]->Fill(jetPttmp,(Double_t)nTrackThrGeV[itrk]/(Double_t)nTracksInJet);
+      }
+      if(nTrackThrGeV[4]>0){//jet with leading particle pt>5GeV/c
+        for(itrk=0;itrk<5;itrk++)
+          fhJetNtrackRatioLead5GeV[itrk]->Fill(jetPttmp,(Double_t)nTrackThrGeV[itrk]/(Double_t)nTracksInJet);
+      }
+    }//end of if IsHistogramJetTracks
+    
+    
+    Double_t effectiveChargedBgEnergy=(IsBackgroundJetFromReader()?rhoEvent * jettmp->EffectiveAreaCharged():jettmp->ChargedBgEnergy());
+    
+    
+    fhJetChBkgEnergyVsArea->Fill(effectiveChargedBgEnergy,jettmp->EffectiveAreaCharged());
+    //if(jettmp->EffectiveAreaCharged()>0)
+    fhJetRhoVsPt->Fill(jetPttmp,jettmp->ChargedBgEnergy()*jettmp->EffectiveAreaCharged());
+    
+    if(jetPttmp>ptMostEne) {
+      ptMostEne = jetPttmp;
+      //indexMostEne=ijet;
+    }
+    fhJetPt->Fill(jetPttmp);
+    fhJetChBkgEnergyVsPt->Fill(jetPttmp,effectiveChargedBgEnergy);
+    fhJetChAreaVsPt->Fill(jetPttmp,jettmp->EffectiveAreaCharged());
+    if(GetDebug()>5) printf("ChargedBgEnergy %f EffectiveAreaCharged %f\n", jettmp->ChargedBgEnergy(),jettmp->EffectiveAreaCharged());
+    for(iCounter=1;iCounter<10;iCounter++){
+      if(jetPttmp>iCounter) nJetsOverThreshold[iCounter]++;
+    }
+    
+    var1tmp  = jettmp->Phi();
+    var2tmp  = jettmp->Eta();
+    fhJetPhi->Fill(var1tmp);
+    fhJetEta->Fill(var2tmp);
+    fhJetPhiVsEta->Fill(var1tmp,var2tmp);
+    fhJetEtaVsPt->Fill(jetPttmp,var2tmp);
+    fhJetEtaVsNpartInJet->Fill(var2tmp,nTracksInJet);
+    if(jetPttmp>0)
+      fhJetEtaVsNpartInJetBkg->Fill(var2tmp,nTracksInJet);
+    
+  }//end of jet loop
+  if(IsHistogramJetTracks()){
+    if(sumNJetTrack>0){
+      //printf("average track pt %f\n",sumJetTrackPt/sumNJetTrack);
+      fhJetAveTrackPt->Fill(sumJetTrackPt/sumNJetTrack);
+    }
+  }//end of if IsHistogramJetTracks
+  
+  
+  fhJetPtMostEne->Fill(ptMostEne);
+  for(iCounter=0;iCounter<10;iCounter++){
+    fhJetNjetOverPtCut[iCounter]->Fill(nJetsOverThreshold[iCounter]);
+    nJetsOverThreshold[iCounter]=0;
+  }
+  
+  //end of only jet part
+  
+  //
+  // Photons
+  //
+  Int_t ntrig   =  GetInputAODBranch()->GetEntriesFast() ;
   if(GetDebug() > 1){
     printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms() - Begin jet finder  correlation analysis, fill histograms \n");
     printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms() - In particle branch aod entries %d\n", ntrig);
     printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms() - In jet output branch aod entries %d\n", event->GetNJets());
   }
+  fhNjetsNgammas->Fill(nJets,ntrig);
+  
+  //if(nJets==0)   return;//to speed up
+  //printf("ntrig %d, njets %d\n",ntrig,nJets);
+  
+  //
+  //Fill only temporary photon histograms
+  //
+  Double_t maxPt=0.;
+  Int_t maxIndex=-1;
+  Double_t tmpPt=0.;
+  Double_t sumPt=0.;
+  nJetsOverThreshold[0]=ntrig;
+  for(Int_t iaod = 0; iaod < ntrig ; iaod++){
+    AliAODPWG4ParticleCorrelation* particlecorr =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+    tmpPt = particlecorr->Pt();
+    if(tmpPt>maxPt) {
+      maxPt = tmpPt;
+      maxIndex = iaod;
+    }
+    for(iCounter=1;iCounter<10;iCounter++){
+      if(tmpPt>iCounter) nJetsOverThreshold[iCounter]++;
+    }
+    sumPt+=tmpPt;
+  }
+  for(iCounter=0;iCounter<10;iCounter++){
+    fhPhotonNgammaOverPtCut[iCounter]->Fill(nJetsOverThreshold[iCounter]);
+    //    nJetsOverThreshold[iCounter]=0;
+  }
+  
+  fGamAvEne=0;
+  TObjArray* clusters = GetEMCALClusters();
+  //printf("calculate median bkg energy for photons ");
+  Double_t medianPhotonRho=0.;
+  Int_t clusterID;
+  Int_t iclustmp = -1;
+  Int_t numberOfcells=0;
+  AliVCluster *cluster = 0;
+  if(ntrig>1){
+    Double_t *photonRhoArr=new Double_t[ntrig-1];
+    fhPhotonPtMostEne->Fill(maxPt);
+    //    fhPhotonIndexMostEne->Fill(indexMaxPt);
+    fhPhotonAverageEnergy->Fill(sumPt/ntrig);
+    fhPhotonRatioAveEneToMostEne->Fill(sumPt/(ntrig*maxPt));
+    fhPhotonAverageEnergyMinus1->Fill((sumPt-maxPt)/(ntrig-1));
+    fGamAvEne=(sumPt-maxPt)/(ntrig-1);
+    fhPhotonRatioAveEneMinus1ToMostEne->Fill((sumPt-maxPt)/((ntrig-1)*maxPt));
+    
+    Int_t counterGamma=0;
+    Int_t counterGammaMinus1=0;
+    
+    Int_t photonRhoArrayIndex=0;
+    //TObjArray* clusterstmp = GetEMCALClusters();
+    for(Int_t iaod = 0; iaod < ntrig ; iaod++){
+      AliAODPWG4ParticleCorrelation* particlecorr =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+      if( particlecorr->Pt() > sumPt/ntrig ) counterGamma++;
+      if( particlecorr->Pt() > (sumPt-maxPt)/(ntrig-1) ) counterGammaMinus1++;
+      
+      if(iaod==maxIndex) continue;
+      clusterID = particlecorr->GetCaloLabel(0) ;
+      if(clusterID < 0) continue;
+      cluster = FindCluster(clusters,clusterID,iclustmp);
+      photonRhoArr[photonRhoArrayIndex]=particlecorr->Pt()/ cluster->GetNCells();
+      numberOfcells+=cluster->GetNCells();
+      photonRhoArrayIndex++;
+    }
+    if(photonRhoArrayIndex>0) medianPhotonRho=TMath::Median(photonRhoArrayIndex,photonRhoArr);
+    delete photonRhoArr;
+    fhPhotonNgammaMoreAverageToNgamma->Fill((Double_t)counterGamma / (Double_t)ntrig);
+    fhPhotonNgammaMoreAverageMinus1ToNgamma->Fill((Double_t)counterGammaMinus1 / (Double_t)ntrig);
+  }
+  //printf("median = %f\n",medianPhotonRho);
+  fhPhotonBkgRhoVsNtracks->Fill(GetCTSTracks()->GetEntriesFast(),medianPhotonRho);
+  fhPhotonBkgRhoVsNclusters->Fill(ntrig,medianPhotonRho);
+  fhPhotonBkgRhoVsCentrality->Fill(GetEventCentrality(),medianPhotonRho);
+  fhPhotonBkgRhoVsNcells->Fill(numberOfcells,medianPhotonRho);
+  
+  
+  AliVCluster *cluster2 = 0;
+  Double_t photon2Corrected=0;
+  Double_t sumPtTmp=0.;
+  Double_t sumPtCorrectTmp=0.;
+  AliVTrack* trackTmp = 0x0 ;
+  TVector3 p3Tmp;
+  
+  for(Int_t iaod = 0; iaod < ntrig ; iaod++){
+    AliAODPWG4ParticleCorrelation* particlecorr =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+    clusterID = particlecorr->GetCaloLabel(0) ;
+    if(clusterID < 0) continue;
+    cluster = FindCluster(clusters,clusterID,iclustmp);
+    fhPhotonPt->Fill(particlecorr->Pt());
+    fhPhotonPtCorrected->Fill(particlecorr->Pt() - cluster->GetNCells() * medianPhotonRho);
+    fhPhotonPtDiff->Fill(cluster->GetNCells() * medianPhotonRho);
+    fhPhotonPtDiffVsCentrality->Fill(GetEventCentrality(),cluster->GetNCells() * medianPhotonRho);
+    fhPhotonPtDiffVsNcells->Fill(numberOfcells,cluster->GetNCells() * medianPhotonRho);
+    fhPhotonPtDiffVsNtracks->Fill(GetCTSTracks()->GetEntriesFast(),cluster->GetNCells() * medianPhotonRho);
+    fhPhotonPtDiffVsNclusters->Fill(ntrig,cluster->GetNCells() * medianPhotonRho);
+    
+    fhPhotonPtCorrectedZoom->Fill(particlecorr->Pt() - cluster->GetNCells() * medianPhotonRho);
+    
+    //test: sum_pt in the cone 0.3 for each photon
+    //should be: random fake gamma from MB
+    //is: each gamma for EMCEGA
+    sumPtTmp=0.;
+    sumPtCorrectTmp=0.;
+    
+    for(Int_t iaod2 = 0; iaod2 < ntrig ; iaod2++){
+      if(iaod==iaod2) continue;
+      AliAODPWG4ParticleCorrelation* particlecorr2 =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod2));
+      clusterID = particlecorr2->GetCaloLabel(0) ;
+      if(clusterID < 0) continue;
+      cluster2 = FindCluster(clusters,clusterID,iclustmp);
+      photon2Corrected = particlecorr2->Pt() - cluster2->GetNCells() * medianPhotonRho;
+      
+      //if(Pt()<0.5) continue; //<<hardcoded here //FIXME
+      if( TMath::Sqrt((particlecorr->Eta()-particlecorr2->Eta())*(particlecorr->Eta()-particlecorr2->Eta()) +
+                      (particlecorr->Phi()-particlecorr2->Phi())*(particlecorr->Phi()-particlecorr2->Phi()) )<fGammaConeSize ){//if(/*cone is correct*/){
+        sumPtTmp+= particlecorr2->Pt();
+        sumPtCorrectTmp+=photon2Corrected;
+      }
+    }
+    fhPhotonSumPtInCone->Fill(sumPtTmp);
+    fhPhotonSumPtCorrectInCone->Fill(sumPtCorrectTmp);
+    
+    //test: sum_pt in the cone 0.3 for each track
+    //should be: random fake gamma from MB
+    //is: each gamma for EMCEGA
+    sumPtTmp=0.;
+    for(Int_t ipr = 0;ipr < GetCTSTracks()->GetEntriesFast() ; ipr ++){
+      trackTmp = (AliVTrack *) (GetCTSTracks()->At(ipr)) ;
+      p3Tmp.SetXYZ(trackTmp->Px(),trackTmp->Py(),trackTmp->Pz());
+      if( TMath::Sqrt((particlecorr->Eta()-p3Tmp.Eta())*(particlecorr->Eta()-p3Tmp.Eta()) +
+                      (particlecorr->Phi()-p3Tmp.Phi())*(particlecorr->Phi()-p3Tmp.Phi()) )<fGammaConeSize ){
+        sumPtTmp+=p3Tmp.Pt();
+      }
+    }//end of loop over tracks
+    fhPhotonSumPtChargedInCone->Fill(sumPtTmp);
+  }
+  
+  //End of Fill temporary photon histograms
+  
+  //
+  // Apply background subtraction for photons
+  //
+  fGamRho = medianPhotonRho;
+  if(!IsBackgroundSubtractionGamma()) medianPhotonRho=0;
   
+  
+  //
+  //Get vertex for cluster momentum calculation <<----new here
+  //
+  Double_t vertex[] = {0,0,0} ; //vertex ;
+  if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
+    GetReader()->GetVertex(vertex);
+  fZvertex = vertex[2];
+  
+  //
   //Loop on stored AOD particles, trigger
+  //
   for(Int_t iaod = 0; iaod < ntrig ; iaod++){
-    AliAODPWG4ParticleCorrelation* particlecorr =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));   
+    AliAODPWG4ParticleCorrelation* particlecorr =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
+    fhCuts->Fill(0);
+    fhCuts2->Fill(0.,(Double_t)nJets);
+    if(GetDebug() > 5) printf("OnlyIsolated %d  !particlecorr->IsIsolated() %d \n",OnlyIsolated(), !particlecorr->IsIsolated());
     
     if(OnlyIsolated() && !particlecorr->IsIsolated()) continue;
+    fhCuts->Fill(1);
+    fhCuts2->Fill(1.,nJets);
+    
+    if(nJets>0) {
+      fhCuts->Fill(2);
+    }
     
     //Recover the jet correlated, found previously.
     AliAODJet  * jet = particlecorr->GetJet();
     //If correlation not made before, do it now.
     if(fMakeCorrelationInHistoMaker){
       //Correlate with jets
-      Int_t ijet = SelectJet(particlecorr,event);
+      Int_t ijet = SelectJet(particlecorr,aodRecJets);//input for jets is TClonesArray
       if(ijet > -1){
         if(GetDebug() > 2) printf ("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms() - Jet with index %d selected \n",ijet);
-        jet = event->GetJet(ijet);
-        particlecorr->SetRefJet(jet);  
+        //jet = event->GetJet(ijet);
+        jet = dynamic_cast<AliAODJet*>(aodRecJets-> At(ijet));
+        
+        particlecorr->SetRefJet(jet);
+        
       }
     }
     
     if (!jet) continue ;
+    fhCuts->Fill(3);
+    fhCuts2->Fill(7.,1.);
     
-    //Fill Histograms
-    
-    Double_t ptTrig = particlecorr->Pt();
-    Double_t ptJet = jet->Pt();
+    //
+    //Fill Correlation Histograms
+    //
+    clusterID = particlecorr->GetCaloLabel(0) ;
+    if(!(clusterID<0)){
+      cluster = FindCluster(clusters,clusterID,iclustmp);
+      //fill tree variables
+      fGamNcells = cluster->GetNCells();
+    }
+    Double_t ptTrig = particlecorr->Pt() - medianPhotonRho * fGamNcells;//<<---changed here
+    Double_t ptJet = jet->Pt() - rhoEvent * jet->EffectiveAreaCharged();//<<---changed here
     Double_t phiTrig = particlecorr->Phi();
     Double_t phiJet = jet->Phi();
     Double_t etaTrig = particlecorr->Eta();
     Double_t etaJet = jet->Eta();
+    Double_t deltaPhi=phiTrig-phiJet;
+    if(deltaPhi<0)deltaPhi+=(TMath::Pi()*2.);
     //printf("pT trigger %2.3f, pT jet %2.3f, Delta phi %2.3f, Delta eta %2.3f, Delta pT %2.3f, ratio %2.3f \n",
     // ptTrig,ptJet, phiJet-phiTrig, etaJet-etaTrig, ptTrig-ptJet, ptJet/ptTrig);
     fhDeltaPt ->Fill(ptTrig, ptTrig-ptJet);
-    fhDeltaPhi->Fill(ptTrig, phiJet-phiTrig);
-    fhDeltaEta->Fill(ptTrig, etaJet-etaTrig);
+    //    fhDeltaPhi->Fill(ptTrig, phiTrig-phiJet);//need to be shifted by 2pi
+    
+    fhDeltaPhiCorrect->Fill(ptTrig, deltaPhi);//correct
+    
+    Double_t deltaPhiCorrect = TMath::Abs( particlecorr->Phi() - jet->Phi() );
+    if ( deltaPhiCorrect > TMath::Pi() ) deltaPhiCorrect = 2. * TMath::Pi() - deltaPhiCorrect ;
+    fhDeltaPhi0PiCorrect->Fill(ptTrig, deltaPhiCorrect);
+    
+    fhDeltaEta->Fill(ptTrig, etaTrig-etaJet);
     fhPtRatio ->Fill(ptTrig, ptJet/ptTrig);
     fhPt      ->Fill(ptTrig, ptJet);
     
-    //Fragmentation function
+    fhSelectedJetPhiVsEta->Fill(phiJet,etaJet);
+    fhSelectedJetChBkgEnergyVsPtJet->Fill(ptJet,(IsBackgroundJetFromReader()?rhoEvent * jet->EffectiveAreaCharged():jet->ChargedBgEnergy()) );
+    fhSelectedJetChAreaVsPtJet->Fill(ptJet,jet->EffectiveAreaCharged());
+    fhSelectedJetNjet->Fill(nJets);
+    fhSelectedNtracks->Fill(GetCTSTracks()->GetEntriesFast());//to be checked
+    fhSelectedPhotonNLMVsPt->Fill(ptTrig,particlecorr->GetFiducialArea());
+    
+    
+    if(clusterID < 0 ){
+      fhSelectedPhotonLambda0VsPt->Fill(ptTrig,-1);
+      //fill tree variables
+      fGamLambda0  = -1;
+      fGamTime = -1;
+      fGamNcells = 0;
+      fGamSumPtNeu=0;
+    }
+    else{
+      //Int_t iclus = -1;
+      //      TObjArray* clusters = GetEMCALClusters();
+      //cluster = FindCluster(clusters,clusterID,iclustmp);
+      Double_t lambda0=cluster->GetM02();
+      fhSelectedPhotonLambda0VsPt->Fill(ptTrig,lambda0);
+      //fill tree variables
+      fGamLambda0  = lambda0;
+      fGamTime = cluster->GetTOF();
+      //fGamNcells = cluster->GetNCells();
+      
+      fGamSumPtNeu=0;
+      fGamNclusters=0;
+      TLorentzVector mom ;
+      //TVector3 p3Tmp;
+      //Double_t scalarProduct=0;
+      //Double_t vectorLength=particlecorr->P();
+      for(Int_t icalo=0; icalo <clusters->GetEntriesFast(); icalo++){
+        AliVCluster* calo = (AliVCluster *) clusters->At(icalo);
+        if(clusterID==calo->GetID()) continue;//the same cluster as trigger
+        calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
+        //printf("min pt %f\n",GetMinPt());
+        if(mom.Pt()<GetMinPt()) continue; //<<hardcoded here //FIXME 0.5 check if correct
+        p3Tmp.SetXYZ(mom.Px(),mom.Py(),mom.Pz());
+        //calculate sum pt in the cone
+        if( TMath::Sqrt((particlecorr->Eta()-p3Tmp.Eta())*(particlecorr->Eta()-p3Tmp.Eta()) +
+                        (particlecorr->Phi()-p3Tmp.Phi())*(particlecorr->Phi()-p3Tmp.Phi()) )<fGammaConeSize ){
+          //scalarProduct = particlecorr->Px()*mom.Px() + particlecorr->Py()*mom.Py() + particlecorr->Pz()*mom.Pz();
+          //scalarProduct/=mom.P();
+          //scalarProduct/=vectorLength;
+          //if(scalarProduct>TMath::Cos(0.3)) {//FIXME photon radius
+          fGamSumPtNeu+=mom.Pt();
+          fGamNclusters++;
+        }
+      }
+    }
+    
+    //sum pt of charged tracks in the gamma isolation cone
+    //starts here
+    fGamSumPtCh=0;
+    fGamNtracks=0;
+    for(itrack = 0; itrack < nCTSTracks ; itrack++){
+      aodtrack = dynamic_cast <AliAODTrack*>(GetCTSTracks()->At(itrack));
+      fhSelectedTrackPhiVsEta->Fill(aodtrack->Phi(),aodtrack->Eta());//fill histogram here
+      //      if(aodtrack->Pt()<0.15) continue;//hardcoded
+      if(aodtrack->Pt()<fPtThresholdInCone) continue;
+      if(!aodtrack->IsHybridGlobalConstrainedGlobal()) continue;
+      if(TMath::Sqrt((particlecorr->Phi() - aodtrack->Phi())*(particlecorr->Phi() - aodtrack->Phi()) +
+                     (particlecorr->Eta() - aodtrack->Eta())*(particlecorr->Eta() - aodtrack->Eta()) ) <fGammaConeSize ) {
+        fGamSumPtCh+=aodtrack->Pt();
+        fGamNtracks++;
+      }
+    }
+    //ends here
+    
+    //    for(Int_t itrack = 0; itrack < nCTSTracks ; itrack++){
+    //      aodtrack = dynamic_cast <AliAODTrack*>(GetCTSTracks()->At(itrack));
+    //      fhSelectedTrackPhiVsEta->Fill(aodtrack->Phi(),aodtrack->Eta());
+    //    }
+    
+    //
+    // Background Fragmentation function
+    //
+    TVector3 gammaVector,jetVector;
+    gammaVector.SetXYZ(particlecorr->Px(),particlecorr->Py(),particlecorr->Pz());
+    jetVector.SetXYZ(jet->Px(),jet->Py(),jet->Pz());
+    CalculateBkg(gammaVector,jetVector,vertex,1);//jet perp
+    CalculateBkg(gammaVector,jetVector,vertex,2);//RC
+    CalculateBkg(gammaVector,jetVector,vertex,3);//mid point
+    CalculateBkg(gammaVector,jetVector,vertex,4);//gamma perp
+    //CalculateBkg(gammaVector,jetVector,vertex,5);/test
+    Double_t angleJetGam = gammaVector.Angle(jetVector);
+    //printf("angleJetGam %f\n",angleJetGam*180/TMath::Pi());
+    
+    //
+    // Fragmentation function
+    //
     Float_t     rad = 0, pt = 0, eta = 0, phi = 0;
     Int_t       npartcone = 0;
     TVector3 p3;
     
     Int_t ntracks =  0;
+    if(GetDebug()>3){
+      printf ("fUseJetRefTracks %d\n",fUseJetRefTracks );
+      printf ("jet->GetRefTracks() %p\n",jet->GetRefTracks());
+      printf ("GetCTSTracks() %p\n",GetCTSTracks() );
+    }
+    
     if(!fUseJetRefTracks)
       ntracks =GetCTSTracks()->GetEntriesFast();
     else //If you want to use jet tracks from JETAN
       ntracks =  (jet->GetRefTracks())->GetEntriesFast();
     
+    if(GetDebug()>3)    printf ("ntracks %d\n",ntracks);
     AliVTrack* track = 0x0 ;
     for(Int_t ipr = 0;ipr < ntracks ; ipr ++ ){
       if(!fUseJetRefTracks)
-        track = (AliVTrack *) (GetCTSTracks()->At(ipr)) ; 
+        track = (AliVTrack *) (GetCTSTracks()->At(ipr)) ;
       else //If you want to use jet tracks from JETAN
         track = (AliVTrack *) ((jet->GetRefTracks())->At(ipr));
       
@@ -316,18 +1646,66 @@ void  AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms()
       
       //Check if there is any particle inside cone with pt larger than  fPtThreshold
       rad = TMath::Sqrt((eta-etaJet)*(eta-etaJet)+ (phi-phiJet)*(phi-phiJet));
-      if(rad < fConeSize  && pt > fPtThresholdInCone){ 
+      if(rad < fConeSize  && pt > fPtThresholdInCone){
         //printf("charged in jet cone pt %f, phi %f, eta %f, R %f \n",pt,phi,eta,rad);
         npartcone++;
         fhFFz ->Fill(ptTrig, pt/ptTrig);
         fhFFxi->Fill(ptTrig, TMath::Log(ptTrig/pt));
         fhFFpt->Fill(ptTrig, pt);
+        
+        //according to jet axis
+        fhJetFFz ->Fill(ptJet, pt/ptJet);
+        fhJetFFxi->Fill(ptJet, TMath::Log(ptJet/pt));
+        fhJetFFpt->Fill(ptJet, pt);
+        
+        
+        if(TMath::Cos(angleJetGam)<0 && ptJet!=0 && pt!=0 ){
+          fhJetFFzCor ->Fill(ptJet, -pt*TMath::Cos(angleJetGam)/ptJet);
+          fhJetFFxiCor->Fill(ptJet, TMath::Log(ptJet/(-pt*TMath::Cos(angleJetGam))));
+        }
       }
     }//Tracks
     fhNTracksInCone->Fill(ptTrig, npartcone);
+    //fill tree here for each photon-jet (isolation required usually)
+    
+    fGamPt      = ptTrig;
+    //fGamLambda0  = ;//filled earlier
+    fGamNLM      = particlecorr->GetFiducialArea();
+    //fGamSumPtCh  = ;//filled earlier
+    //fGamTime     = particlecorr->GetTOF();//filled earlier
+    //fGamNcells   = particlecorr->GetNCells();//filled earlier
+    fGamEta      = etaTrig;
+    fGamPhi      = phiTrig;
+    //fGamSumPtNeu = ;//filled earlier
+    //fGamNtracks  = ;//filled earlier
+    //fGamNclusters= ;//filled earlier
+    //fGamAvEne    = ;//filled earlier
+    fJetPhi      = phiJet;
+    fJetEta      = etaJet;
+    fJetPt       = ptJet;
+    fJetBkgChEne = (IsBackgroundJetFromReader()?rhoEvent * jet->EffectiveAreaCharged():jet->ChargedBgEnergy());
+    fJetArea     = jet->EffectiveAreaCharged();
+    fJetNtracks  = (jet->GetRefTracks())->GetEntriesFast();
+    fEventNumber = 0;
+    fNtracks     = GetCTSTracks()->GetEntriesFast();
+    fCentrality  = GetEventCentrality();
+    fIso         = particlecorr->IsIsolated();
+    
+    Int_t nTrk1GeV=0;
+    Int_t nTrk2GeV=0;
+    for(itrack=0;itrack < fJetNtracks;itrack++){
+      track = (AliVTrack *) ((jet->GetRefTracks())->At(itrack));
+      if(track->Pt()>1.) nTrk1GeV++;
+      if(track->Pt()>2.) nTrk2GeV++;
+    }
+    
+    fJetNtracks1 = nTrk1GeV;
+    fJetNtracks2 = nTrk2GeV;
+    
+    if(fSaveGJTree) fTreeGJ->Fill();
   }//AOD trigger particle loop
   if(GetDebug() > 1) printf("AliAnaParticleJetFinderCorrelation::MakeAnalysisFillHistograms() - End fill histograms \n");
-} 
+}
 
 
 //__________________________________________________________________
@@ -350,6 +1728,361 @@ void AliAnaParticleJetFinderCorrelation::Print(const Option_t * opt) const
   printf("fUseJetRefTracks        =     %d\n",    fUseJetRefTracks) ;
   printf("fMakeCorrelationInHistoMaker    =     %d\n",    fMakeCorrelationInHistoMaker) ;      
   printf("Isolated Trigger?  %d\n", fSelectIsolated) ;
-  
+  printf("Reconstructed jet cone size = %3.2f\n", fJetConeSize) ;
+  printf("Reconstructed jet minimum pt = %3.2f\n", fJetMinPt) ;
+  printf("Reconstructed jet minimum area fraction = %3.2f\n", fJetAreaFraction) ;
+
+  if(!fNonStandardJetFromReader){
+    printf("fJetBranchName =   %s\n", fJetBranchName.Data()) ;
+  }
+  if(!fBackgroundJetFromReader){
+    printf("fBkgJetBranchName =   %s\n", fBkgJetBranchName.Data()) ;
+  }
+
+  printf("Isolation cone size = %3.2f\n", fGammaConeSize) ;
+  printf("fUseBackgroundSubtractionGamma = %d\n",fUseBackgroundSubtractionGamma);
+  printf("fSaveGJTree = %d\n",fSaveGJTree);
+  printf("fMostEnergetic = %d\n",fMostEnergetic);
+  printf("fMostOpposite = %d\n",fMostOpposite);
+
+  printf("fUseHistogramJetBkg = %d\n",fUseHistogramJetBkg);
+  printf("fUseHistogramTracks = %d\n",fUseHistogramTracks);
+  printf("fUseHistogramJetTracks = %d\n",fUseHistogramJetTracks);
+
 } 
 
+//__________________________________________________________________
+void AliAnaParticleJetFinderCorrelation::CalculateBkg(TVector3 gamma, TVector3 jet,Double_t vertex[3],Int_t type=2){
+  //
+  // calculate background for fragmentation function and fill histograms
+  // 1. 90 degrees from jet axis in random place = perpendicular cone
+  // 2. Random cone not belonging to jet cone nor photon cone
+  // 3. In the middle point from jet and photon momentum vectors
+  // 4. 90 degrees from photon direction in random place = perpendicular cone 2
+
+  //
+  // implementation of 2 works, 1 and 4 works
+  //
+  Double_t gammaPt  = gamma.Pt();
+  Double_t gammaEta = gamma.Eta();
+  Double_t gammaPhi = gamma.Phi();
+  Double_t jetEta   = jet.Eta();
+  Double_t jetPhi   = jet.Phi();
+
+  //refference direction of background
+  Double_t refEta=0.,refPhi=0.;
+  Double_t rad = 0,rad2 = 0.;
+  if(type==1){//perpendicular to jet axis
+    //printf("vertex: %f %f %f \n",vertex[0],vertex[1],vertex[2]);
+
+    Double_t xVar;
+    Double_t yVar;
+    Double_t newX=0.;
+    Double_t newY=0.;
+    Double_t newZ=0.;
+    //Z axis vector: [jet.Px(),jet.Py(),jet.Pz()]
+    Double_t jx=jet.Px();
+    Double_t jy=jet.Py();
+    Double_t jz=jet.Pz();
+    //if(jz==0)printf("problem\n");
+    //X axis 
+    Double_t Xx=1.0-vertex[0];
+    Double_t Xy=-1.0*vertex[1];
+    Double_t Xz=jx/jz*(vertex[0]-1.)+vertex[1]*jy/jz;
+    //Y axis
+    Double_t Yx=jy*Xz-jz*Xy;
+    Double_t Yy=jz*Xx-jx*Xz;
+    Double_t Yz=jx*Xy-jy*Xx;
+    //Determinant
+    Double_t det = Xx*Yy*jz + Xy*Yz*jx + Xz*Yx*jy - Xx*Yz*jy - Xy*Yx*jz - Xz*Yy*jx;
+    if(det==0)printf("problem det==0\n");
+    Double_t detX = 0.;
+    Double_t detY = 0.;
+    Double_t detZ = 0.;
+
+//    Double_t tmpScalar = jx*Xx+jy*Xy+jz*Xz;
+//    printf("scalar jet.P o X: %f\n",tmpScalar);
+//    tmpScalar = jet.Px()*Yx+jet.Py()*Yy+jet.Pz()*Yz;
+//    printf("scalar jet.P o Y: %f\n",tmpScalar);
+//    tmpScalar = Xx*Yx+Xy*Yy+Xz*Yz;
+//    printf("scalar X o Y: %f\n",tmpScalar);
+
+    TVector3 perp;
+    //randomise
+    do{
+      refPhi=fGenerator->Rndm()*TMath::Pi()*2.;
+      //refPhi=fGenerator->Uniform(-1,1)*TMath::Pi();
+      xVar=TMath::Cos(refPhi);
+      yVar=TMath::Sin(refPhi);
+      //yVar=TMath::Cos(-TMath::Pi()/2.+refPhi);
+      //zVar=0 in new surface frame
+      detX = xVar*Yy*jz + Xz*yVar*jy - xVar*Yz*jy - Xy*yVar*jz;
+      detY = Xx*yVar*jz + xVar*Yz*jx - xVar*Yx*jz - Xz*yVar*jx;
+      detZ = Xy*yVar*jx + xVar*Yx*jy - Xx*yVar*jy - xVar*Yy*jx;
+
+      newX=detX/det;
+      newY=detY/det;
+      newZ=detZ/det;
+
+      perp.SetXYZ(newX,newY,newZ);
+      refEta = perp.Eta();
+      refPhi = perp.Phi();//output in <-pi, pi> range
+      if(refPhi<0)refPhi+=2*TMath::Pi();
+      rad = TMath::Sqrt((gammaEta-refEta)*(gammaEta-refEta) + (gammaPhi-refPhi)*(gammaPhi-refPhi));
+      rad2 = TMath::Sqrt((jetEta-refEta)*(jetEta-refEta) + (jetPhi-refPhi)*(jetPhi-refPhi));
+      //printf("refEta,refPhi,rad,rad2: %f %f %f %f\n",refEta,refPhi,rad,rad2);
+    } while (rad<fJetConeSize+fGammaConeSize || rad2<fJetConeSize+fJetConeSize || TMath::Abs(refEta)>0.9-fJetConeSize);
+    fhRandomPhiEta[2]->Fill(refPhi,refEta);
+
+  }
+  else if(type==2){//random cone
+    //randomise
+    do{
+      refPhi=fGenerator->Rndm()*TMath::Pi()*2.;
+      refEta=fGenerator->Uniform(-(0.9-fJetConeSize),0.9-fJetConeSize);
+      rad = TMath::Sqrt((gammaEta-refEta)*(gammaEta-refEta) + (gammaPhi-refPhi)*(gammaPhi-refPhi));
+      rad2 = TMath::Sqrt((jetEta-refEta)*(jetEta-refEta) + (jetPhi-refPhi)*(jetPhi-refPhi));
+      //check if reference is not within jet cone or gamma cone +0.4
+      //example: FF fConeSize=0.4, fJetConeSize=0.4, fIsoGammaConeSize=0.3
+    } while (rad<fJetConeSize+fGammaConeSize || rad2<fJetConeSize+fJetConeSize);
+    //photon:0.7=0.4+0.3; jets:0.8=0.4 +0.4 //rad<fConeSize+fJetConeSize rad2<fConeSize+0.3
+    fhRandomPhiEta[0]->Fill(refPhi,refEta);
+  }
+  else if(type==4){//perpendicular to photon axis
+    Double_t xVar;
+    Double_t yVar;
+    Double_t newX=0.;
+    Double_t newY=0.;
+    Double_t newZ=0.;
+    //Z axis vector: [jet.Px(),jet.Py(),jet.Pz()]
+    Double_t jx=gamma.Px();
+    Double_t jy=gamma.Py();
+    Double_t jz=gamma.Pz();
+    //if(jz==0)printf("problem\n");
+    //X axis 
+    Double_t Xx=1.0-vertex[0];
+    Double_t Xy=-1.0*vertex[1];
+    Double_t Xz=jx/jz*(vertex[0]-1.)+vertex[1]*jy/jz;
+    //Y axis
+    Double_t Yx=jy*Xz-jz*Xy;
+    Double_t Yy=jz*Xx-jx*Xz;
+    Double_t Yz=jx*Xy-jy*Xx;
+    //Determinant
+    Double_t det = Xx*Yy*jz + Xy*Yz*jx + Xz*Yx*jy - Xx*Yz*jy - Xy*Yx*jz - Xz*Yy*jx;
+    if(det==0)printf("problem det==0\n");
+    Double_t detX = 0.;
+    Double_t detY = 0.;
+    Double_t detZ = 0.;
+
+//    Double_t tmpScalar = jx*Xx+jy*Xy+jz*Xz;
+//    printf("scalar jet.P o X: %f\n",tmpScalar);
+//    tmpScalar = jet.Px()*Yx+jet.Py()*Yy+jet.Pz()*Yz;
+//    printf("scalar jet.P o Y: %f\n",tmpScalar);
+//    tmpScalar = Xx*Yx+Xy*Yy+Xz*Yz;
+//    printf("scalar X o Y: %f\n",tmpScalar);
+
+    TVector3 perp;
+    //randomise
+    do{
+      refPhi=fGenerator->Rndm()*TMath::Pi()*2.;
+      //refPhi=fGenerator->Uniform(-1,1)*TMath::Pi();
+      xVar=TMath::Cos(refPhi);
+      yVar=TMath::Sin(refPhi);
+      //yVar=TMath::Cos(-TMath::Pi()/2.+refPhi);
+      //zVar=0 in new surface frame
+      detX = xVar*Yy*jz + Xz*yVar*jy - xVar*Yz*jy - Xy*yVar*jz;
+      detY = Xx*yVar*jz + xVar*Yz*jx - xVar*Yx*jz - Xz*yVar*jx;
+      detZ = Xy*yVar*jx + xVar*Yx*jy - Xx*yVar*jy - xVar*Yy*jx;
+
+      newX=detX/det;
+      newY=detY/det;
+      newZ=detZ/det;
+
+      perp.SetXYZ(newX,newY,newZ);
+      refEta = perp.Eta();
+      refPhi = perp.Phi();//output in <-pi, pi> range
+      if(refPhi<0)refPhi+=2*TMath::Pi();
+      rad = TMath::Sqrt((gammaEta-refEta)*(gammaEta-refEta) + (gammaPhi-refPhi)*(gammaPhi-refPhi));
+      rad2 = TMath::Sqrt((jetEta-refEta)*(jetEta-refEta) + (jetPhi-refPhi)*(jetPhi-refPhi));
+      //printf("refEta,refPhi,rad,rad2: %f %f %f %f\n",refEta,refPhi,rad,rad2);
+    } while (rad<fJetConeSize+fGammaConeSize || rad2<fJetConeSize+fJetConeSize || TMath::Abs(refEta)>0.9-fJetConeSize);
+    fhRandomPhiEta[1]->Fill(refPhi,refEta);
+
+  }
+  else if(type==3){//mid point
+
+    Double_t jx=jet.Px();
+    Double_t jy=jet.Py();
+    Double_t jz=jet.Pz();
+    //    if(jz==0)printf("problem\n");
+    Double_t gx=gamma.Px();
+    Double_t gy=gamma.Py();
+    Double_t gz=gamma.Pz();
+
+    Double_t cosAlpha=(jx*gx+jy*gy+jz*gz)/(jet.Mag()*gamma.Mag());
+    Double_t cosinus=TMath::Sqrt((cosAlpha+1.)/2.);
+    //perpendicular axis
+    Double_t Zx=gy*jz-gz*jy;
+    Double_t Zy=gz*jx-gx*jz;
+    Double_t Zz=gx*jy-gy*jx;
+
+    //Determinant
+    Double_t det = Zx*gy*jz + Zy*gz*jx + Zz*gx*jy - Zz*gy*jx - Zy*gx*jz - Zx*gz*jy;
+
+    Double_t newX=0.;
+    Double_t newY=0.;
+    Double_t newZ=0.;
+    if(det!=0) {
+      Double_t detX =            -Zy*gz*cosinus +Zz*cosinus*jy + Zz*gy*cosinus - Zy*cosinus*jz;
+      Double_t detY = Zx*cosinus*jz          - Zz*gx*cosinus - Zz*cosinus*jx            + Zx*gz*cosinus;
+      Double_t detZ = -Zx*gy*cosinus + Zy*cosinus*jx + Zy*gx*cosinus - Zx*cosinus*jy;
+
+      newX=detX/det;
+      newY=detY/det;
+      newZ=detZ/det;
+    }
+
+    TVector3 perp;
+    perp.SetXYZ(newX,newY,newZ);
+    refEta = perp.Eta();
+    refPhi = perp.Phi();//output in <-pi, pi> range
+    if(refPhi<0)refPhi+=2*TMath::Pi();
+    rad = TMath::Sqrt((gammaEta-refEta)*(gammaEta-refEta) + (gammaPhi-refPhi)*(gammaPhi-refPhi));
+    rad2 = TMath::Sqrt((jetEta-refEta)*(jetEta-refEta) + (jetPhi-refPhi)*(jetPhi-refPhi));
+      //printf("refEta,refPhi,rad,rad2: %f %f %f %f\n",refEta,refPhi,rad,rad2);
+
+    if (rad<fJetConeSize+fGammaConeSize || rad2<fJetConeSize+fJetConeSize || TMath::Abs(refEta)>0.9-fJetConeSize) fhRandomPhiEta[3]->Fill(refPhi,refEta);
+  }
+  else if(type==5){//tmp                                                                                                                                                   
+    //printf("vertex: %f %f %f \n",vertex[0],vertex[1],vertex[2]);                                                                                                         
+
+    Double_t xVar;
+    Double_t newX=0.;
+    Double_t newY=0.;
+    Double_t newZ=0.;
+    //Z axis vector: [jet.Px(),jet.Py(),jet.Pz()]                                                                                                                          
+    Double_t jx=jet.Px();
+    Double_t jy=jet.Py();
+    Double_t jz=jet.Pz();
+    //    if(jz==0)printf("problem\n");
+    //X axis                                                                                                                                                               
+    Double_t Xx=1.0-vertex[0];
+    Double_t Xy=-1.0*vertex[1];
+    Double_t Xz=jx/jz*(vertex[0]-1.)+vertex[1]*jy/jz;
+    //Y axis                                                                                                                                                               
+    Double_t Yx=jy*Xz-jz*Xy;
+    Double_t Yy=jz*Xx-jx*Xz;
+    Double_t Yz=jx*Xy-jy*Xx;
+
+    // X and Y length                                                                                                                                                      
+    Double_t Xlength=TMath::Sqrt(Xx*Xx+Xy*Xy+Xz*Xz);
+    Double_t Ylength=TMath::Sqrt(Yx*Yx+Yy*Yy+Yz*Yz);
+    Double_t ratio=Ylength/Xlength;
+
+    TVector3 perp;
+    //randomise                                                                                                                                                            
+    do{
+      refPhi=fGenerator->Rndm()*TMath::Pi()*2.;
+      xVar=TMath::Tan(refPhi)/ratio;
+      newX=xVar*Yx+Xx;
+      newY=xVar*Yy+Xy;
+      newZ=xVar*Yz+Xz;
+
+      perp.SetXYZ(newX,newY,newZ);
+      refEta = perp.Eta();
+      refPhi = perp.Phi();//output in <-pi, pi> range                                                                                                                      
+      if(refPhi<0)refPhi+=2*TMath::Pi();
+      rad = TMath::Sqrt((gammaEta-refEta)*(gammaEta-refEta) + (gammaPhi-refPhi)*(gammaPhi-refPhi));
+      rad2 = TMath::Sqrt((jetEta-refEta)*(jetEta-refEta) + (jetPhi-refPhi)*(jetPhi-refPhi));
+      //printf("refEta,refPhi,rad,rad2: %f %f %f %f\n",refEta,refPhi,rad,rad2);
+    } while (rad<fJetConeSize+fGammaConeSize || rad2<fJetConeSize+fJetConeSize || TMath::Abs(refEta)>0.9-fJetConeSize);
+    fhRandomPhiEta[4]->Fill(refPhi,refEta);
+  }
+
+
+
+  //calculate FF in background
+  Int_t ntracks =  0;
+  ntracks =GetCTSTracks()->GetEntriesFast();
+  AliVTrack* track = 0x0 ;
+  TVector3 p3;
+
+  Double_t pt = 0, eta = 0, phi = 0;
+  Int_t         npartcone = 0;
+  Double_t sumPt=0.;
+  for(Int_t ipr = 0;ipr < ntracks ; ipr ++ ){
+    track = (AliVTrack *) (GetCTSTracks()->At(ipr)) ;
+    p3.SetXYZ(track->Px(),track->Py(),track->Pz());
+    pt   = p3.Pt();
+    if(pt<fPtThresholdInCone) {//0.150
+      //printf("problem: track pt < %f MeV/c \n",fPtThresholdInCone);
+      continue;
+    }
+    eta  = p3.Eta() ;
+    phi  = p3.Phi() ;
+    if(phi < 0) phi+=TMath::TwoPi();
+    //Check if there is any particle inside cone with pt larger than  fPtThreshold
+    rad = TMath::Sqrt((eta-refEta)*(eta-refEta) + (phi-refPhi)*(phi-refPhi));
+    if(rad < fConeSize  && pt > fPtThresholdInCone){   
+      //printf("charged in jet cone pt %f, phi %f, eta %f, R %f \n",pt,phi,eta,rad);
+        npartcone++;
+       sumPt+=pt;
+       if(type==1){//perp jet
+         fhBkgFFz[1] ->Fill(gammaPt, pt/gammaPt);
+         fhBkgFFxi[1]->Fill(gammaPt, TMath::Log(gammaPt/pt));
+         fhBkgFFpt[1]->Fill(gammaPt, pt);
+       }
+       else if(type==2){//RC
+         fhBkgFFz[0] ->Fill(gammaPt, pt/gammaPt);
+         fhBkgFFxi[0]->Fill(gammaPt, TMath::Log(gammaPt/pt));
+         fhBkgFFpt[0]->Fill(gammaPt, pt);
+       }
+       else if(type==3){//mid point
+         fhBkgFFz[3] ->Fill(gammaPt, pt/gammaPt);
+         fhBkgFFxi[3]->Fill(gammaPt, TMath::Log(gammaPt/pt));
+         fhBkgFFpt[3]->Fill(gammaPt, pt);
+       }
+       else if(type==4){//perp jet
+         fhBkgFFz[2] ->Fill(gammaPt, pt/gammaPt);
+          fhBkgFFxi[2]->Fill(gammaPt, TMath::Log(gammaPt/pt));
+          fhBkgFFpt[2]->Fill(gammaPt, pt);
+        }
+       else if(type==5){//test
+         fhBkgFFz[4] ->Fill(gammaPt, pt/gammaPt);
+         fhBkgFFxi[4]->Fill(gammaPt, TMath::Log(gammaPt/pt));
+         fhBkgFFpt[4]->Fill(gammaPt, pt);
+       }
+
+
+    }
+  }//end of loop over tracks
+  Double_t sumOverTracks=0.;
+  if(npartcone!=0) sumOverTracks = sumPt/npartcone;
+  if(type==1) {
+    fhBkgNTracksInCone[1]->Fill(gammaPt, npartcone);
+    fhBkgSumPtInCone[1]->Fill(gammaPt,sumPt);
+    fhBkgSumPtnTracksInCone[1]->Fill(gammaPt,sumOverTracks);
+  }
+  else if(type==2) {
+    fhBkgNTracksInCone[0]->Fill(gammaPt, npartcone);
+    fhBkgSumPtInCone[0]->Fill(gammaPt,sumPt);
+    fhBkgSumPtnTracksInCone[0]->Fill(gammaPt,sumOverTracks);
+  }
+  else if(type==3) {
+    fhBkgNTracksInCone[3]->Fill(gammaPt, npartcone);
+    fhBkgSumPtInCone[3]->Fill(gammaPt,sumPt);
+    fhBkgSumPtnTracksInCone[3]->Fill(gammaPt,sumOverTracks);
+  }
+  else if(type==4) {
+    fhBkgNTracksInCone[2]->Fill(gammaPt, npartcone);
+    fhBkgSumPtInCone[2]->Fill(gammaPt,sumPt);
+    fhBkgSumPtnTracksInCone[2]->Fill(gammaPt,sumOverTracks);
+  }
+  else if(type==5) {
+    fhBkgNTracksInCone[4]->Fill(gammaPt, npartcone);
+    fhBkgSumPtInCone[4]->Fill(gammaPt,sumPt);
+    fhBkgSumPtnTracksInCone[4]->Fill(gammaPt,sumOverTracks);
+  }
+}
+
+
index e1d2d2d4d4c47d7e8889d2c2d1a77ca0b60881da..f9b75629900adfaa3842109e512ead1e1e290c5e 100755 (executable)
 // For Example direct isolated photon found in AliAnaGammaDirect and the jet with JETAN
 //
 //-- Author: Gustavo Conesa (INFN-LNF)
+//-- Modified by Adam Matyja (INP PAN, Krakow)
 
 // --- ROOT system ---
 class TH2F;
-
+class TTree;
+class TRandom2;
 //---- Analysis system ----
 #include "AliAnaCaloTrackCorrBaseClass.h"
 
@@ -21,7 +23,7 @@ class AliAnaParticleJetFinderCorrelation : public AliAnaCaloTrackCorrBaseClass {
        
  public:   
   AliAnaParticleJetFinderCorrelation() ;              // default ctor
-  virtual ~AliAnaParticleJetFinderCorrelation() { ; } // virtual dtor
+  virtual ~AliAnaParticleJetFinderCorrelation() ; // virtual dtor
 
   // General methods
   
@@ -33,7 +35,7 @@ class AliAnaParticleJetFinderCorrelation : public AliAnaCaloTrackCorrBaseClass {
   
   void     MakeAnalysisFillHistograms() ;
   
-  Int_t    SelectJet(AliAODPWG4Particle * particle, const AliAODEvent * event) const ;
+  Int_t    SelectJet(AliAODPWG4Particle * particle, TClonesArray * aodRecJets) ;//to access non standard branch
 
   void     Print(const Option_t * opt)           const;
   
@@ -50,7 +52,11 @@ class AliAnaParticleJetFinderCorrelation : public AliAnaCaloTrackCorrBaseClass {
   Double_t GetRatioMinCut()                      const { return fRatioMinCut                 ; }          
   Bool_t   AreJetRefTracks()                     const { return fUseJetRefTracks             ; }
   Bool_t   IsCorrelationMadeInHistoMaker()       const { return fMakeCorrelationInHistoMaker ; } 
-  
+  Double_t GetJetConeSize()                      const { return fJetConeSize                 ; } 
+  Double_t GetJetMinPt()                         const { return fJetMinPt                    ; }
+  Double_t GetJetAreaFraction()                  const { return fJetAreaFraction             ; }
+  Double_t GetGammaConeSize()                    const { return fGammaConeSize               ; }
+
   void     SetConeSize(Float_t cone)                   { fConeSize = cone                    ; }
   void     SetPtThresholdInCone(Float_t pt)            { fPtThresholdInCone = pt             ; }          
   void     SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
@@ -58,38 +64,242 @@ class AliAnaParticleJetFinderCorrelation : public AliAnaCaloTrackCorrBaseClass {
   void     SetRatioCutRange(Double_t ratiomin, Double_t ratiomax)
             { fRatioMaxCut =ratiomax;  fRatioMinCut = ratiomin                               ; }
   void     UseJetRefTracks(Bool_t use)                 { fUseJetRefTracks = use              ; }       
-  void     SetMakeCorrelationInHistoMaker(Bool_t make) { fMakeCorrelationInHistoMaker = make ; }       
-    
+  void     SetMakeCorrelationInHistoMaker(Bool_t make) { fMakeCorrelationInHistoMaker = make ; }
+  void     SetJetConeSize(Double_t cone)               { fJetConeSize = cone ;                 }
+  void     SetJetMinPt(Double_t minpt)                 { fJetMinPt = minpt ;                   }
+  void     SetJetAreaFraction(Double_t areafr)         { fJetAreaFraction = areafr ;           }
+  void     SetGammaConeSize(Float_t cone)              { fGammaConeSize = cone               ; }
+
+  // Settings for non standard jet branch
+  TString  GetJetBranchName()            const { return fJetBranchName             ; }
+  void     SetJetBranchName(const char *name)  { fJetBranchName = name             ; }
+  void     SwitchOnNonStandardJetFromReader()  { fNonStandardJetFromReader = kTRUE ; }
+  void     SwitchOffNonStandardJetFromReader() { fNonStandardJetFromReader = kFALSE; }
+  Bool_t   IsNonStandardJetFromReader()        { return fNonStandardJetFromReader  ; }
+
+  TString  GetBkgJetBranchName()           const { return fBkgJetBranchName          ; }
+  void     SetBkgJetBranchName(const char *name) { fBkgJetBranchName = name          ; }
+  void     SwitchOnBackgroundJetFromReader()     { fBackgroundJetFromReader = kTRUE  ; }
+  void     SwitchOffBackgroundJetFromReader()    { fBackgroundJetFromReader = kFALSE ; }
+  Bool_t   IsBackgroundJetFromReader()           { return fBackgroundJetFromReader   ; }
+
+  //switches for photons
+  void     SwitchOnBackgroundSubtractionGamma()  { fUseBackgroundSubtractionGamma = kTRUE ; }
+  void     SwitchOffBackgroundSubtractionGamma() { fUseBackgroundSubtractionGamma = kFALSE; }
+  Bool_t   IsBackgroundSubtractionGamma()        { return fUseBackgroundSubtractionGamma  ; }
+
+  void     CalculateBkg(TVector3 gamma, TVector3 jet,Double_t *vector,Int_t type);
+
+  void     SwitchOnSaveGJTree()     { fSaveGJTree = kTRUE ; }
+  void     SwitchOffSaveGJTree()    { fSaveGJTree = kFALSE; }
+  Bool_t   IsSaveGJTree()           { return fSaveGJTree  ; }
+
+  void     SwitchOnMostEnergetic()  { fMostEnergetic = kTRUE ; fMostOpposite = kFALSE; }
+  void     SwitchOffMostEnergetic() { fMostEnergetic = kFALSE; fMostOpposite = kTRUE ; }
+  void     SwitchOffMostOpposite()  { fMostEnergetic = kTRUE ; fMostOpposite = kFALSE; }
+  void     SwitchOnMostOpposite()   { fMostEnergetic = kFALSE; fMostOpposite = kTRUE ; }
+  Bool_t   IsMostEnergetic()        { return fMostEnergetic ; }
+  Bool_t   IsMostOpposite()         { return fMostOpposite; }
+
+  //switches for histograms
+  void     SwitchOnHistogramJetBkg()     { fUseHistogramJetBkg = kTRUE ; }
+  void     SwitchOffHistogramJetBkg()    { fUseHistogramJetBkg = kFALSE; }
+  Bool_t   IsHistogramJetBkg()           { return fUseHistogramJetBkg  ; }
+
+  void     SwitchOnHistogramTracks()     { fUseHistogramTracks = kTRUE ; }
+  void     SwitchOffHistogramTracks()    { fUseHistogramTracks = kFALSE; }
+  Bool_t   IsHistogramTracks()           { return fUseHistogramTracks  ; }
+
+  void     SwitchOnHistogramJetTracks()  { fUseHistogramJetTracks = kTRUE ; }
+  void     SwitchOffHistogramJetTracks() { fUseHistogramJetTracks = kFALSE; }
+  Bool_t   IsHistogramJetTracks()        { return fUseHistogramJetTracks  ; }
+
 private:
 
   //selection parameters  
   Double_t   fDeltaPhiMaxCut ;    //! Minimum Delta Phi Gamma-Leading
-  Double_t   fDeltaPhiMinCut ;    //!  Maximum Delta Phi Gamma-Leading
-  Double_t   fRatioMaxCut ;       //! Jet/ particle Ratio cut maximum
+  Double_t   fDeltaPhiMinCut ;    //! Maximum Delta Phi Gamma-Leading
+  Double_t   fRatioMaxCut ;       //! Jet/particle Ratio cut maximum
   Double_t   fRatioMinCut ;       //! Jet/particle Ratio cut minimum
   
-  Double_t   fConeSize  ;         //! Jet cone size 
+  Double_t   fConeSize  ;         //! Jet cone size to calculate fragmentation function
   Double_t   fPtThresholdInCone ; //! Jet pT threshold in jet cone
-  Bool_t     fUseJetRefTracks ;   //! Use track references from JETAN not the AOD tracks
-  Bool_t          fMakeCorrelationInHistoMaker ; //!Make particle-jet correlation in histogram maker
-  Bool_t     fSelectIsolated ;    // Select only trigger particles isolated
+  Bool_t     fUseJetRefTracks ;   //! Use track references from JETAN not the AOD tracks to calculate fragmentation function
+  Bool_t     fMakeCorrelationInHistoMaker ; //!Make particle-jet correlation in histogram maker
+  Bool_t     fSelectIsolated ;    //! Select only trigger particles isolated
   
+  Double_t   fJetConeSize ;       //! Reconstructed jet cone size 
+  Double_t   fJetMinPt ;          //! Minumum jet pt, default 5GeV/c
+  Double_t   fJetAreaFraction ;   //! Jet area fraction X in X*pi*R^2, default 0.6
+  Bool_t     fNonStandardJetFromReader; //! use non standard jet from reader //new
+  TString    fJetBranchName ;//! name of jet branch not set in reader part //new
+  Bool_t     fBackgroundJetFromReader; //! use background jet from reader //new
+  TString    fBkgJetBranchName ;//! name of background jet branch not set in reader part //new
+
+  Double_t   fGammaConeSize ;       //! Isolation cone radius
+  Bool_t     fUseBackgroundSubtractionGamma;//! flag to use backgrouind subtraction for photons or not
+  Bool_t     fSaveGJTree;//! flag to save gamma-jet tree
+  Bool_t     fMostEnergetic;//! flag to choose gamma-jet pairs most energetic
+  Bool_t     fMostOpposite;//! flag to choose gamma-jet pairs most opposite
+
+  Bool_t     fUseHistogramJetBkg;//! flag to save bkg jet histograms
+  Bool_t     fUseHistogramTracks;//! flag to save CTS tracks features
+  Bool_t     fUseHistogramJetTracks;//! flag to save jet tracks features
+
+  TRandom2 * fGenerator;//! pointer to random generator object
+
   // Histograms
-  TH2F *     fhDeltaEta;          //! Difference of jet eta and trigger particle eta as function of trigger particle pT
-  TH2F *     fhDeltaPhi;          //! Difference of jet phi and trigger particle phi as function of trigger particle pT
+  TH2F *     fhDeltaEta;           //! Difference of jet eta and trigger particle eta as function of trigger particle pT
+  //TH2F *     fhDeltaPhi;         //! Difference of jet phi and trigger particle phi as function of trigger particle pT
+  TH2F *     fhDeltaPhiCorrect;    //! Difference of jet phi and trigger particle phi as function of trigger particle pT
+  TH2F *     fhDeltaPhi0PiCorrect; //! Difference of jet phi and trigger particle phi as function of trigger particle pT
+
   TH2F *     fhDeltaPt;           //! Difference of jet pT and trigger particle pT as function of trigger particle pT
   TH2F *     fhPtRatio;           //! Ratio of jet pT and trigger particle pT as function of trigger particle pT
   TH2F *     fhPt;                //! jet pT vs trigger particle pT 
   
-  TH2F *     fhFFz ;              //! Accepted reconstructed jet fragmentation function, z=ptjet/pttrig
-  TH2F *     fhFFxi;              //! Accepted reconstructed jet fragmentation function, xsi = ln(pttrig/ptjet)
+  TH2F *     fhFFz ;              //! Accepted reconstructed jet fragmentation function, z=pt^particle,jet/pttrig
+  TH2F *     fhFFxi;              //! Accepted reconstructed jet fragmentation function, xsi = ln(pttrig/pt^particle,jet)
   TH2F *     fhFFpt;              //! Jet particle pt distribution in cone
   TH2F *     fhNTracksInCone;     //! jet multiplicity in cone
   
+  TH2F *     fhJetFFz ;           //! Accepted reconstructed jet fragmentation function, z=pt^particle,jet/ptjet
+  TH2F *     fhJetFFxi;           //! Accepted reconstructed jet fragmentation function, xsi = ln(ptjet/pt^particle,jet)
+  TH2F *     fhJetFFpt;           //! Jet particle pt distribution in jet cone
+  TH2F *     fhJetFFzCor ;        //! Accepted reconstructed jet fragmentation function, z=pt^particle,jet*-cos(jet,trig)/ptjet
+  TH2F *     fhJetFFxiCor;        //! Accepted reconstructed jet fragmentation function, xsi = ln(ptjet/pt^particle*-cos(jet,trig),jet)
+
+  //background from RC
+  TH2F *     fhBkgFFz[5] ;              //! Background fragmentation function, z=ptjet/pttrig
+  TH2F *     fhBkgFFxi[5];              //! Background fragmentation function, xsi = ln(pttrig/ptjet)
+  TH2F *     fhBkgFFpt[5];              //! Background particle pt distribution in cone
+  TH2F *     fhBkgNTracksInCone[5];     //! Background multiplicity in cone
+  TH2F *     fhBkgSumPtInCone[5];       //! Background sum pt in cone
+  TH2F *     fhBkgSumPtnTracksInCone[5];//! Background sum pt over ntracks in cone
+
+  //temporary histograms
+  TH2F * fhNjetsNgammas; //! Number of jets vs number of photons in the event
+  TH1F * fhCuts;         //! Number of events after cuts
+
+  TH2F * fhDeltaEtaBefore;  //! Difference of jet eta and trigger particle eta as function of trigger particle pT
+  TH2F * fhDeltaPhiBefore;  //! Difference of jet phi and trigger particle phi as function of trigger particle pT
+  TH2F * fhDeltaPtBefore;   //! Difference of jet pT and trigger particle pT as function of trigger particle pT
+  TH2F * fhPtRatioBefore;   //! Ratio of jet pT and trigger particle pT as function of trigger particle pT
+  TH2F * fhPtBefore;        //! jet pT vs trigger particle pT
+  TH2F * fhDeltaPhi0PiCorrectBefore; //! Difference of jet phi and trigger particle phi (0,pi) as function of trigger particle pT
+
+  //temporary jet histograms
+  TH1F * fhJetPtBefore;           //! Pt of all jets
+  TH1F * fhJetPt;                 //! Pt of all jets after bkg correction
+  TH1F * fhJetPtMostEne;          //! Pt of the most energetic jet
+  TH1F * fhJetPhi;                   //! Phi of all jets
+  TH1F * fhJetEta;                   //! Eta of all jets
+  TH2F * fhJetEtaVsPt;           //! Eta of all jets vs pt
+  TH2F * fhJetPhiVsEta;                  //! Phi vs eta of all jets
+  TH2F * fhJetEtaVsNpartInJet;    //! Eta vs number of particles in jet for all jets
+  TH2F * fhJetEtaVsNpartInJetBkg; //! Eta vs number of particles in jet for background subtracted jets
+  TH2F * fhJetChBkgEnergyVsPt;    //! background energy of each charged jet vs jet pt
+  TH2F * fhJetChAreaVsPt;         //! area of each charged jet vs jet pt
+  TH2F * fhTrackPhiVsEta;         //! Phi vs eta of all chosen tracks in all events
+  TH1F * fhTrackAveTrackPt;       //! average track pt in event
+  TH1F * fhJetNjetOverPtCut[10];  //! number of reconstructed jets in event over pT threshold
+  TH2F * fhJetChBkgEnergyVsArea;  //! area of each charged jet vs jet background
+  TH2F * fhJetRhoVsPt;            //! jet energy density vs jet pt
+  TH2F * fhJetRhoVsCentrality;    //! jet energy density vs centrality
+  TH1F * fhJetNparticlesInJet;    //! number of particles in jets
+  TH2F * fhJetDeltaEtaDeltaPhi;   //! delta eta vs delta phi for (jet-track) <-0.8,0.8>
+  TH2F * fhJetDeltaEtaDeltaPhiAllTracks;//! delta eta vs delta phi for (jet-track) <-pi,pi>
+
+
+
+  TH1F * fhJetAveTrackPt;              //! average track from jets pt in event
+  TH2F * fhJetNtracksInJetAboveThr[6]; //! number of tracks in jet with pt above 0,1,2,3,4,5GeV
+  TH2F * fhJetRatioNTrkAboveToNTrk[5]; //! ratio tracks in jet with pt above 1,2,3,4,5GeV to ntracks
+  TH2F * fhJetNtrackRatioMostEne[5];   //! the same for most energetic jet
+  TH2F * fhJetNtrackRatioJet5GeV[5];   //! the same for pt jet above 5 GeV
+  TH2F * fhJetNtrackRatioLead5GeV[5];  //! the same for jet with leading particle pt>5GeV
+
+  //temporary background jet histograms
+  TH1F * fhBkgJetBackground[4]; //! background from jet bkg branch
+  TH1F * fhBkgJetSigma[4];      //! sigma of jet in backgroud branch
+  TH1F * fhBkgJetArea[4];       //! area of jet in bkg branch
+
+  //temporary photon histograms
+  TH1F * fhPhotonPtMostEne;                       //! most pt photon
+  TH1F * fhPhotonAverageEnergy;                   //! average energy of photon
+  TH1F * fhPhotonRatioAveEneToMostEne;            //! ratio average energy to most energetic photon
+  TH1F * fhPhotonAverageEnergyMinus1;             //! average energy of photon w/o most ene photon
+  TH1F * fhPhotonRatioAveEneMinus1ToMostEne;      //! ratio average energy of photon w/o most ene photon to most energetic photon
+  TH1F * fhPhotonNgammaMoreAverageToNgamma;       //! number of gammas with ene. more than average ene divided by no. of gammas
+  TH1F * fhPhotonNgammaMoreAverageMinus1ToNgamma; //! number of gammas with ene. more than average ene (w/o most ene gamma) divided by no. of gammas
+  TH1F * fhPhotonNgammaOverPtCut[10];             //! number of photons in event over pT threshold
+  TH2F * fhPhotonBkgRhoVsNtracks;                 //! average energy in one cell vs n tracks
+  TH2F * fhPhotonBkgRhoVsNclusters;               //! average energy in one cell vs n clusters
+  TH2F * fhPhotonBkgRhoVsCentrality;              //! average energy in one cell vs centrality
+  TH2F * fhPhotonBkgRhoVsNcells;                  //! average energy in one cell vs n cells
+  TH1F * fhPhotonPt;                              //! pt of gamma before bkg correction
+  TH1F * fhPhotonPtCorrected;                     //! pt of gamma after background correction
+  TH1F * fhPhotonPtCorrectedZoom;                 //! pt of gamma after background correction in +-5 GeV/c
+  TH1F * fhPhotonPtDiff;                          //! bkg correction = n_cells * median_rho
+  TH2F * fhPhotonPtDiffVsCentrality;              //! correction vs centrality
+  TH2F * fhPhotonPtDiffVsNcells;                  //! correction vs Ncells
+  TH2F * fhPhotonPtDiffVsNtracks;                 //! correction vs Ntracks
+  TH2F * fhPhotonPtDiffVsNclusters;               //! correction vs Nclustres
+
+  TH1F * fhPhotonSumPtInCone;                     //! sum pt in cone before correction
+  TH1F * fhPhotonSumPtCorrectInCone;              //! sum pt in cone afrer correction
+  TH1F * fhPhotonSumPtChargedInCone;              //! sum pt of charged tracks in the cone before correction
+
+
+  //temporary jet histograms after selection
+  TH2F * fhSelectedJetPhiVsEta;                   //! phi vs eta of selected jet
+  TH2F * fhSelectedJetChBkgEnergyVsPtJet;  //! background energy of selected charged jet vs jet pt
+  TH2F * fhSelectedJetChAreaVsPtJet;       //! area of selected charged jet vs jet pt
+  TH1F * fhSelectedJetNjet;                //! number of jets in selected event
+  TH1F * fhSelectedNtracks;                //! number of tracks in selected event
+  TH2F * fhSelectedTrackPhiVsEta;          //! Phi vs eta of all chosen tracks in selected events
+
+  TH1F * fhCuts2;                          //! efficienct cuts
+
+  //temporary photon histogram after selection
+  TH2F * fhSelectedPhotonNLMVsPt;          //! nlm vs pt for selected photons
+  TH2F * fhSelectedPhotonLambda0VsPt;      //! lambda0 vs pt for selected photons
+  TH2F * fhRandomPhiEta[5];                //! eta and phi from random generator
+
+  //tree with data gamma and jet
+  TTree *  fTreeGJ;       //! gamma-jet tree
+  Double_t fGamPt;        //! pt
+  Double_t fGamLambda0;   //! lambda 0
+  Int_t    fGamNLM;       //! NLM
+  Double_t fGamSumPtCh;   //! energy in isolation cone charged
+  Double_t fGamTime;      //! time
+  Int_t    fGamNcells;    //! ncells
+  Double_t fGamEta;       //! eta photon
+  Double_t fGamPhi;       //! phi photon
+  Double_t fGamSumPtNeu;  //! energy in isolation cone neutral
+  Int_t    fGamNtracks;   //! number of tracks in iso cone
+  Int_t    fGamNclusters; //! number of clusters in iso cone
+  Double_t fGamAvEne;     //! average energy of photons (without most ene)
+  Double_t fJetPhi;       //! jet phi
+  Double_t fJetEta;       //! eta phi
+  Double_t fJetPt;        //! jet pt
+  Double_t fJetBkgChEne;  //! bkg energy of jet
+  Double_t fJetArea;      //! jet area
+  Int_t    fJetNtracks;   //! number of jet tracks
+  Int_t    fJetNtracks1;  //! number of jet tracks with pt>1 GeV/c
+  Int_t    fJetNtracks2;  //! number of jet tracks with pt>2 GeV/c
+  Double_t fJetRho;       //! jet rho in event
+  Int_t    fEventNumber;  //! event number
+  Int_t    fNtracks;      //! n tracks in event
+  Double_t fZvertex;      //! z vertex
+  Double_t fCentrality;   //! centrality
+  Bool_t   fIso;          //! flag isolated or not
+  Double_t fGamRho;       //! background energy for photons per cell in EMCal
+
   AliAnaParticleJetFinderCorrelation(              const AliAnaParticleJetFinderCorrelation & g) ; // cpy ctor
   AliAnaParticleJetFinderCorrelation & operator = (const AliAnaParticleJetFinderCorrelation & g) ; // cpy assignment
   
-  ClassDef(AliAnaParticleJetFinderCorrelation,2)
+  ClassDef(AliAnaParticleJetFinderCorrelation,3)
   
  } ;
 
index 98036236116d93737be54e2eab434b3a0dd4e90f..da40b304b1da2be9017783be8dc2b7ec5b0efae9 100644 (file)
@@ -102,47 +102,66 @@ void ana(Int_t mode=mLocal)
     TString outputFile = AliAnalysisManager::GetCommonFileName(); 
     AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
     
-    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
-    AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
-    
-    //gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
-    //AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(kTRUE);
+    if(kInputData=="ESD" && !kMC)
+    {
+      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
+      AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
+    }
     
     //Counting events tasks
-    AliAnalysisTaskCounter * counterMB = new AliAnalysisTaskCounter("CounterMB");
-    counterMB->SelectCollisionCandidates(AliVEvent::kMB);
-    
-    AliAnalysisDataContainer *coutputMB = 
+    if(!kMC)
+    {
+      AliAnalysisTaskCounter * counterMB = new AliAnalysisTaskCounter("CounterMB");
+      counterMB->SelectCollisionCandidates(AliVEvent::kMB);
+      
+      AliAnalysisDataContainer *coutputMB =
       mgr->CreateContainer("counterMB", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
-    mgr->AddTask(counterMB);
-    mgr->ConnectInput  (counterMB,  0, cinput1);
-    mgr->ConnectOutput (counterMB, 1, coutputMB);
-    
-    AliAnalysisTaskCounter * counterEMC = new AliAnalysisTaskCounter("CounterEMC");
-    counterEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
-    
-    AliAnalysisDataContainer *coutputEMC = 
+      mgr->AddTask(counterMB);
+      mgr->ConnectInput  (counterMB, 0, cinput1  );
+      mgr->ConnectOutput (counterMB, 1, coutputMB);
+      
+      AliAnalysisTaskCounter * counterEMC = new AliAnalysisTaskCounter("CounterEMC");
+      counterEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
+      
+      AliAnalysisDataContainer *coutputEMC =
       mgr->CreateContainer("counterEMC", TList::Class(), AliAnalysisManager::kOutputContainer,  outputFile.Data());
-    mgr->AddTask(counterEMC);
-    mgr->ConnectInput  (counterEMC,  0, cinput1);
-    mgr->ConnectOutput (counterEMC, 1, coutputEMC);
-    
-    AliAnalysisTaskCounter * counterINT = new AliAnalysisTaskCounter("CounterINT");
-    counterINT->SelectCollisionCandidates(AliVEvent::kINT7);
-    
-    AliAnalysisDataContainer *coutputINT = 
+      mgr->AddTask(counterEMC);
+      mgr->ConnectInput  (counterEMC, 0, cinput1   );
+      mgr->ConnectOutput (counterEMC, 1, coutputEMC);
+      
+      AliAnalysisTaskCounter * counterINT = new AliAnalysisTaskCounter("CounterINT");
+      counterINT->SelectCollisionCandidates(AliVEvent::kINT7);
+      
+      AliAnalysisDataContainer *coutputINT =
       mgr->CreateContainer("counterINT7", TList::Class(), AliAnalysisManager::kOutputContainer,  outputFile.Data());
-    mgr->AddTask(counterINT);
-    mgr->ConnectInput  (counterINT,  0, cinput1);
-    mgr->ConnectOutput (counterINT, 1, coutputINT);
+      mgr->AddTask(counterINT);
+      mgr->ConnectInput  (counterINT, 0, cinput1   );
+      mgr->ConnectOutput (counterINT, 1, coutputINT);
+    }
+    else
+    {
+      AliAnalysisDataContainer *coutput =
+      mgr->CreateContainer("counter", TList::Class(), AliAnalysisManager::kOutputContainer,  outputFile.Data());
+      mgr->AddTask(counter);
+      mgr->ConnectInput  (counter, 0, cinput1);
+      mgr->ConnectOutput (counter, 1, coutput);
+    }
     
+    // QA task
     
     gROOT->LoadMacro("$ALICE_ROOT/PWGGA/CaloTrackCorrelations/macros/QA/AddTaskCalorimeterQA.C");
-    AliAnalysisTaskCaloTrackCorrelation *taskQAEMC = AddTaskCalorimeterQA(kInputData,2011,kFALSE,kMC,"","kEMC7");
-    taskQAEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
-    AliAnalysisTaskCaloTrackCorrelation *taskQAINT = AddTaskCalorimeterQA(kInputData,2011,kFALSE,kMC,"","kINT7");
-    taskQAINT->SelectCollisionCandidates(AliVEvent::kINT7);
-
+    if(!kMC)
+    {
+      AliAnalysisTaskCaloTrackCorrelation *taskQAEMC = AddTaskCalorimeterQA("EMC",kMC,"",2012);
+      taskQAEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
+      AliAnalysisTaskCaloTrackCorrelation *taskQAINT = AddTaskCalorimeterQA("default",kMC,"",2012);
+      taskQAINT->SelectCollisionCandidates(AliVEvent::kINT7);
+    }
+    else
+    {
+      AliAnalysisTaskCaloTrackCorrelation *taskQA = AddTaskCalorimeterQA("default",kMC,"",2012);
+    }
+    
     //-----------------------
     // Run the analysis
     //-----------------------    
@@ -186,14 +205,26 @@ void  LoadLibraries(const anaModes mode) {
     //--------------------------------------------------------
  
     gSystem->Load("libSTEERBase.so");
+    gSystem->Load("libProof.so");
+    gSystem->Load("libOADB");
     gSystem->Load("libESD.so");
     gSystem->Load("libAOD.so");
     gSystem->Load("libANALYSIS.so");
     gSystem->Load("libANALYSISalice.so");
+    gSystem->Load("libESDfilter.so");
+
     gSystem->Load("libPHOSUtils");
     gSystem->Load("libEMCALUtils");
-    gSystem->Load("libPWG4PartCorrBase.so");
-    gSystem->Load("libPWG4PartCorrDep.so");
+    
+    gSystem->Load("libTENDER.so");
+    gSystem->Load("libTENDERSupplies.so");
+    
+    gSystem->Load("libCORRFW");
+    gSystem->Load("libPWGTools");
+    
+    gSystem->Load("libPWGCaloTrackCorrBase");
+    gSystem->Load("libPWGGACaloTrackCorrelations");
+
  
     //--------------------------------------------------------
     //If you want to use root and par files from aliroot
@@ -206,9 +237,10 @@ void  LoadLibraries(const anaModes mode) {
 //     //If your analysis needs PHOS geometry uncomment following lines
 //     SetupPar("PHOSUtils");
 //     SetupPar("EMCALUtils");
-//     //Create Geometry
-//     SetupPar("PWG4PartCorrBase");
-//     SetupPar("PWG4PartCorrDep");
+//
+//     SetupPar("PWGCaloTrackCorrBase");
+//     SetupPar("PWGGACaloTrackCorrelations");
+
 
   }
 
index cca5fc9a13becc881480c01dc67027bb5fcc4aba..57b68f7e842a8dd64910078b6cf2804fd65e585c 100644 (file)
@@ -709,8 +709,16 @@ void AliAnalysisTaskEMCALIsoPhoton::FillClusHists()
     outputValues[4] = alliso/*cecore*/-allisoue - trcore;
     outputValues[5] = ceiso;
     outputValues[6] = alliso - trcore;
-    outputValues[7] = c->GetTrackDx();
-    outputValues[8] = c->GetTrackDz();
+    if(fDebug)
+      printf("track-cluster dphi=%1.3f, deta=%1.3f\n",c->GetTrackDx(),c->GetTrackDz());
+    if(TMath::Abs(c->GetTrackDx())<0.1)
+      outputValues[7] = c->GetTrackDx();
+    else
+      outputValues[7] = 0.099*c->GetTrackDx()/TMath::Abs(c->GetTrackDx());
+    if(TMath::Abs(c->GetTrackDz())<0.05)
+      outputValues[8] = c->GetTrackDz();
+    else
+      outputValues[8] = 0.049*c->GetTrackDz()/TMath::Abs(c->GetTrackDz());
     outputValues[9] = clsVec.Eta();
     outputValues[10] = clsVec.Phi();
     if(fESDCells)
index d27352d2b47d4e105b136c67b16114a849502e02..12db4f0abc21b7015b6d2929eeeffa39f25e6eb3 100644 (file)
@@ -200,53 +200,76 @@ void AddTask_GammaConvV1_pp(  Int_t trainConfig = 1,  //change different set of
       cutarray[ 1] = "0000012002092970028280400000"; mesonCutArray[1] = "01525065000000"; //variation psi pair 0.2
       cutarray[ 2] = "0000012002092970028250000000"; mesonCutArray[2] = "01525065000000"; //variation cosPA -1
       cutarray[ 3] = "0000012002092970028250400000"; mesonCutArray[3] = "01525055000000"; //variation alpha 0.75
+       } else if (trainConfig == 22) {
+      cutarray[ 0] = "0004011002092970028250400000"; mesonCutArray[0] = "01525065000000"; // trigger kTRD
+      cutarray[ 1] = "0005011002092970028250400000"; mesonCutArray[1] = "01525065000000"; // trigger kHighMult
+      cutarray[ 2] = "0006011002092970028250400000"; mesonCutArray[2] = "01525065000000"; // trigger kEMCEJE
+      cutarray[ 3] = "0007011002092970028250400000"; mesonCutArray[3] = "01525065000000"; // trigger kEMCEGA
+       } else if (trainConfig == 23) {
+      cutarray[ 0] = "0008011002092970028250400000"; mesonCutArray[0] = "01525065000000"; // trigger kEMC7
+      cutarray[ 1] = "0009011002092970028250400000"; mesonCutArray[1] = "01525065000000"; // trigger kEMC8
+      cutarray[ 2] = "0000011002092970028250400000"; mesonCutArray[2] = "01525065000000"; // minimum bias
+      cutarray[ 3] = "0003011002092970028250400000"; mesonCutArray[3] = "01525065000000"; // trigger V0AND + wSDD
+               
        } else {
                Error(Form("GammaConvV1_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
                return;
    }
 
-   TList *ConvCutList = new TList();
-   TList *MesonCutList = new TList();
+       TList *ConvCutList = new TList();
+       TList *MesonCutList = new TList();
 
-   TList *HeaderList = new TList();
-   TObjString *Header2 = new TObjString("BOX");
-   HeaderList->Add(Header2);
+       TList *HeaderList = new TList();
+       TObjString *Header2 = new TObjString("BOX");
+       HeaderList->Add(Header2);
 
-   ConvCutList->SetOwner(kTRUE);
-   AliConversionCuts **analysisCuts = new AliConversionCuts*[numberOfCuts];
-   MesonCutList->SetOwner(kTRUE);
-   AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
+       ConvCutList->SetOwner(kTRUE);
+       AliConversionCuts **analysisCuts = new AliConversionCuts*[numberOfCuts];
+       MesonCutList->SetOwner(kTRUE);
+       AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
 
 
-   for(Int_t i = 0; i<numberOfCuts; i++){
-      analysisCuts[i] = new AliConversionCuts();
-      analysisCuts[i]->InitializeCutsFromCutString(cutarray[i].Data());
-      ConvCutList->Add(analysisCuts[i]);
+       for(Int_t i = 0; i<numberOfCuts; i++){
+               analysisCuts[i] = new AliConversionCuts();
+               analysisCuts[i]->InitializeCutsFromCutString(cutarray[i].Data());
+               if (trainConfig == 22){
+                       if (i == 0) analysisCuts[i]->SelectSpecialTrigger(AliVEvent::kTRD, "AliVEvent::kTRD" );
+                       if (i == 1) analysisCuts[i]->SelectSpecialTrigger(AliVEvent::kHighMult,"AliVEvent::kHighMult" );
+                       if (i == 2) analysisCuts[i]->SelectSpecialTrigger(AliVEvent::kEMCEJE,"AliVEvent::kEMCEJE" );
+                       if (i == 3) analysisCuts[i]->SelectSpecialTrigger(AliVEvent::kEMCEGA,"AliVEvent::kEMCEGA" );
+               }
+               if (trainConfig == 23){
+                       if (i == 0) analysisCuts[i]->SelectSpecialTrigger(AliVEvent::kEMC7, "AliVEvent::kEMC7" );
+                       if (i == 1) analysisCuts[i]->SelectSpecialTrigger(AliVEvent::kEMC8, "AliVEvent::kEMC8" );
+               }       
+               ConvCutList->Add(analysisCuts[i]);
+               
+               analysisCuts[i]->SetFillCutHistograms("",kFALSE);
+               
+               analysisMesonCuts[i] = new AliConversionMesonCuts();
+               analysisMesonCuts[i]->InitializeCutsFromCutString(mesonCutArray[i].Data());
+               MesonCutList->Add(analysisMesonCuts[i]);
+               analysisMesonCuts[i]->SetFillCutHistograms("");
+               analysisCuts[i]->SetAcceptedHeader(HeaderList);
+               
+       }
 
-      analysisCuts[i]->SetFillCutHistograms("",kFALSE);
-      analysisMesonCuts[i] = new AliConversionMesonCuts();
-      analysisMesonCuts[i]->InitializeCutsFromCutString(mesonCutArray[i].Data());
-      MesonCutList->Add(analysisMesonCuts[i]);
-      analysisMesonCuts[i]->SetFillCutHistograms("");
-      analysisCuts[i]->SetAcceptedHeader(HeaderList);
-   }
-
-   task->SetConversionCutList(numberOfCuts,ConvCutList);
-   task->SetMesonCutList(numberOfCuts,MesonCutList);
-   task->SetMoveParticleAccordingToVertex(kTRUE);
-   task->SetDoMesonAnalysis(kTRUE);
-   task->SetDoMesonQA(enableQAMesonTask); //Attention new switch for Pi0 QA
-   task->SetDoPhotonQA(enableQAPhotonTask);  //Attention new switch small for Photon QA
+       task->SetConversionCutList(numberOfCuts,ConvCutList);
+       task->SetMesonCutList(numberOfCuts,MesonCutList);
+       task->SetMoveParticleAccordingToVertex(kTRUE);
+       task->SetDoMesonAnalysis(kTRUE);
+       task->SetDoMesonQA(enableQAMesonTask); //Attention new switch for Pi0 QA
+       task->SetDoPhotonQA(enableQAPhotonTask);  //Attention new switch small for Photon QA
 
-   //connect containers
-   AliAnalysisDataContainer *coutput =
-      mgr->CreateContainer(Form("GammaConvV1_%i",trainConfig), TList::Class(),
-                           AliAnalysisManager::kOutputContainer,Form("GammaConvV1_%i.root",trainConfig));
+       //connect containers
+       AliAnalysisDataContainer *coutput =
+               mgr->CreateContainer(Form("GammaConvV1_%i",trainConfig), TList::Class(),
+                                                       AliAnalysisManager::kOutputContainer,Form("GammaConvV1_%i.root",trainConfig));
 
-   mgr->AddTask(task);
-   mgr->ConnectInput(task,0,cinput);
-   mgr->ConnectOutput(task,1,coutput);
+       mgr->AddTask(task);
+       mgr->ConnectInput(task,0,cinput);
+       mgr->ConnectOutput(task,1,coutput);
 
-   return;
+       return;
 
 }
index bf2733d70060666249974a455ef24f8c4007af59..f8d461a23bb9061499c0ad212f669a5afc22c8cb 100644 (file)
@@ -32,6 +32,10 @@ AliPHOSTenderTask* AddAODPHOSTender(const char* taskName = "PHOSTenderTask",
   if(isMC) //handle MC data
     PHOSSupply->SetMCProduction(options) ;
 
+
+  //Need MagFeild
+  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
+
   mgr->AddTask(tenderTask);
 
   // Connect input/output
index 6fcb9d84b6cf909dabf2c6f054d71085489b1130..c25d51f03e2c6f8dd543e04fcdd3a585f80eb104 100644 (file)
@@ -41,7 +41,8 @@
 #include "AliAODEvent.h" 
 #include "AliAODEvent.h" 
 #include "AliVCluster.h" 
-#include "AliAODPWG4Particle.h"
+#include "AliCaloPhoton.h"
+#include "AliAODMCParticle.h"
 #include "AliAnalysisManager.h"
 #include "AliLog.h"
 #include "TGeoManager.h"
@@ -51,7 +52,8 @@
 #include "AliPHOSGeometry.h"
 #include "AliTriggerAnalysis.h"
 #include "AliEMCALGeometry.h"
-
+#include "AliAnalysisUtils.h"
+#include "AliOADBContainer.h"
 
 ClassImp(AliAnalysisTaskTaggedPhotons)
 
@@ -65,20 +67,23 @@ AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons() :
   fPHOSEvent(0x0),
   fCurrentMixedList(0x0),
   fTriggerAnalysis(0x0),
+  fUtils(0x0),
   fZmax(0.),
   fZmin(0.),
   fPhimax(0.),
   fPhimin(0.),
   fCentrality(0.),
-  fCentBin(0) 
+  fCentBin(0), 
+  fIsMB(0),
+  fIsMC(0)
 {
   //Deafult constructor
   //no memory allocations
   for(Int_t i=0;i<10;i++)
     for(Int_t j=0;j<2;j++)
       fPHOSEvents[i][j]=0x0 ;    //Container for PHOS photons
-  for(Int_t mod=0; mod<6; mod++)
-    fPHOSBadMap[mod]=0x0 ;
+  for(Int_t i=0;i<6;i++)
+    fPHOSBadMap[i]=0x0;
 }
 //______________________________________________________________________________
 AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons(const char *name) : 
@@ -90,12 +95,15 @@ AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons(const char *name) :
   fPHOSEvent(0x0),
   fCurrentMixedList(0x0),
   fTriggerAnalysis(new AliTriggerAnalysis),
+  fUtils(0x0),
   fZmax(-60.),
   fZmin(60.),
   fPhimax(250.),
   fPhimin(320.),
   fCentrality(0.),
-  fCentBin(0)
+  fCentBin(0),
+  fIsMB(0),
+  fIsMC(0)
 {
   // Constructor.
 
@@ -105,10 +113,8 @@ AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons(const char *name) :
   for(Int_t i=0;i<1;i++)
     for(Int_t j=0;j<5;j++)
       fPHOSEvents[i][j]=0x0 ;    //Container for PHOS photons
-  // Create AOD track cut
-
-  for(Int_t mod=0; mod<6; mod++)
-    fPHOSBadMap[mod]=0x0 ;
+  for(Int_t i=0;i<6;i++)
+    fPHOSBadMap[i]=0x0;
   
   
 }
@@ -123,12 +129,15 @@ AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons(const AliAnalysisTask
   fPHOSEvent(0x0),
   fCurrentMixedList(0x0),
   fTriggerAnalysis(new AliTriggerAnalysis),  
+  fUtils(0x0),
   fZmax(-60.),
   fZmin(60.),
   fPhimax(250.),
   fPhimin(320.),
   fCentrality(0.),
-  fCentBin(0)
+  fCentBin(0),
+  fIsMB(0),
+  fIsMC(0)
 {
   // cpy ctor
   fZmax=ap.fZmax ;
@@ -138,8 +147,8 @@ AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons(const AliAnalysisTask
   for(Int_t i=0;i<1;i++)
     for(Int_t j=0;j<5;j++)
       fPHOSEvents[i][j]=0x0 ;    //Container for PHOS photons
-  for(Int_t mod=0; mod<6; mod++)
-    fPHOSBadMap[mod]=0x0 ;
+  for(Int_t i=0;i<6;i++)
+    fPHOSBadMap[i]=0x0;
 
 }
 
@@ -188,12 +197,14 @@ void AliAnalysisTaskTaggedPhotons::UserCreateOutputObjects()
   fOutputContainer->Add(new TH1F("hNvertexTracks","N of primary tracks from the primary vertex",150,0.,150.));
   fOutputContainer->Add(new TH1F("hZvertex","Z vertex",200,-50.,+50.));
   fOutputContainer->Add(new TH2F("hTrackMult","Charged track multiplicity",100,0.,100.,250,0.,500.));
+  fOutputContainer->Add(new TH2F("hTrackEtaPhi","Charged track eta vs phi distribution",200,-2.,2.,200,0.,TMath::TwoPi()));
+  fOutputContainer->Add(new TH2F("hTrackEtaPt","Charged track eta vs pt distribution",200,-2.,2.,200,0.,50.));
   
   //centrality
   fOutputContainer->Add(new TH1F("hCentrality","Ccentrality",100,0.,100.));
   fOutputContainer->Add(new TH2F("hPHOSCentrality","PHOS vs centrality",100,0.,100.,100,0.,100.)); 
   fOutputContainer->Add(new TH2F("hTOF","cluster TOF",200,0.,20.,300,-3.e-6,6.e-6));
-  
+  fOutputContainer->Add(new TH2F("hCenTrack","Centrality vs tracks", 100,0.,100.,100,0.,1500.)) ;    
   
   fOutputContainer->Add(new TH2F("hCluNXZM1","Clu (X,Z), M1"   ,64,0.5,64.5, 56,0.5,56.5));
   fOutputContainer->Add(new TH2F("hCluNXZM2","Clu (X,Z), M2"   ,64,0.5,64.5, 56,0.5,56.5));
@@ -209,6 +220,10 @@ void AliAnalysisTaskTaggedPhotons::UserCreateOutputObjects()
   fOutputContainer->Add(new TH2F("hCluArea3M2","Clu (X,Z), M1"   ,64,0.5,64.5, 56,0.5,56.5));
   fOutputContainer->Add(new TH2F("hCluArea3M3","Clu (X,Z), M1"   ,64,0.5,64.5, 56,0.5,56.5));
   
+  fOutputContainer->Add(new TH2F("hTofM1","TOF in mod1",200,-1.e-6,1.e-6,200,0.,20.)) ;
+  fOutputContainer->Add(new TH2F("hTofM2","TOF in mod2",200,-1.e-6,1.e-6,200,0.,20.)) ;
+  fOutputContainer->Add(new TH2F("hTofM3","TOF in mod3",200,-1.e-6,1.e-6,200,0.,20.)) ;
+
   char cPID[4][5] ;
   snprintf(cPID[0],5,"All") ;
   snprintf(cPID[1],5,"Disp");
@@ -288,15 +303,21 @@ void AliAnalysisTaskTaggedPhotons::UserCreateOutputObjects()
   }//centrality
   
   //MC  
-  char partName[4][10] ;
+  char partName[15][10] ;
   snprintf(partName[0],10,"gamma") ;
   snprintf(partName[1],10,"pi0");
   snprintf(partName[2],10,"eta") ;
   snprintf(partName[3],10,"omega"); 
+  snprintf(partName[4],10,"K0s"); 
+  snprintf(partName[5],10,"Kpm"); 
+  snprintf(partName[6],10,"pipm"); 
+  snprintf(partName[7],10,"n"); 
+  snprintf(partName[8],10,"nbar"); 
+  snprintf(partName[9],10,"p"); 
+  snprintf(partName[10],10,"pbar"); 
+  
   
-  if(AliAnalysisManager::GetAnalysisManager()){
-    AliMCEventHandler* mctruth = (AliMCEventHandler*)((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler());
-    if(mctruth){
+  if(fIsMC){
       
       fOutputContainer->Add(new TH1F("hMCConversionRadius","Clusters without label",600,0.,600.)) ;
       fOutputContainer->Add(new TH2F("hMCRecPi0Vtx","Secondary pi0s",100,0.,10.,600,0.,600.)) ;
@@ -307,67 +328,148 @@ void AliAnalysisTaskTaggedPhotons::UserCreateOutputObjects()
       fOutputContainer->Add(new TH2F("hMCRecK0lVtx","Secondary K0l",100,0.,10.,600,0.,600.)) ;
       fOutputContainer->Add(new TH2F("hMCGammaPi0MisConvR","Converted photons",400,0.,40.,600,0.,600.)) ;
  
-  for(Int_t cen=0; cen<nCenBin; cen++){
-  for(Int_t ipart=0; ipart<4; ipart++){  
+  for(Int_t ipart=0; ipart<11; ipart++){  
+    fOutputContainer->Add(new TH2F(Form("hMC%s_ptrap",partName[ipart]),"Spectrum of primary photons",100,0.,10.,100,-2.,2.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMC%s_ptphi",partName[ipart]),"Spectrum of primary photons",100,0.,10.,100,0.,TMath::TwoPi())) ;
     fOutputContainer->Add(new TH2F(Form("hMC_%s_vertex",partName[ipart]),"vertex",nPt,0.,ptMax,150,0.,600.)) ;
-    fOutputContainer->Add(new TH1F(Form("hMC_all_%s",partName[ipart]),"Spectum (full rapifity)",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMC_unitEta_%s",partName[ipart]),"Spectum, |y|<0.15",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMC_rap_%s",partName[ipart]),"Rapidity",100,-5.,5.)) ;
-    fOutputContainer->Add(new TH1F(Form("hMC_phi_%s",partName[ipart]),"Azimuthal angle",100,0.,TMath::TwoPi())) ;
+    for(Int_t cen=0; cen<nCenBin; cen++){
+       fOutputContainer->Add(new TH1F(Form("hMC_all_%s_cent%d",partName[ipart],cen),"Spectum (full rapifity)",nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMC_unitEta_%s_cent%d",partName[ipart],cen),"Spectum, |y|<0.15",nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMC_rap_%s_cent%d",partName[ipart],cen),"Rapidity",100,-5.,5.)) ;
+       fOutputContainer->Add(new TH1F(Form("hMC_phi_%s_cent%d",partName[ipart],cen),"Azimuthal angle",100,0.,TMath::TwoPi())) ;
+    }
   }
-
+  for(Int_t cen=0; cen<nCenBin; cen++){
   
-  fOutputContainer->Add(new TH2F(Form("LabelsNPrim_cent%d",cen),"vertex",nPt,0.,ptMax,20,0.,20.)) ;
-  fOutputContainer->Add(new TH1F(Form("LabelsGamma_cent%d",cen),"vertex",nPt,0.,ptMax)) ;
-  fOutputContainer->Add(new TH2F(Form("LabelsGammaE_cent%d",cen),"vertex",nPt,0.,ptMax,100,0.,2.)) ;
+    fOutputContainer->Add(new TH2F(Form("LabelsNPrim_cent%d",cen),"vertex",nPt,0.,ptMax,20,0.,20.)) ;
+    fOutputContainer->Add(new TH1F(Form("LabelsGamma_cent%d",cen),"vertex",nPt,0.,ptMax)) ;
+    fOutputContainer->Add(new TH2F(Form("LabelsGammaE_cent%d",cen),"vertex",nPt,0.,ptMax,100,0.,2.)) ;
+    
+    
+       //Sort registered particles spectra according MC information
+       for(Int_t iPID=0; iPID<4; iPID++){
+         fOutputContainer->Add(new TH1F(Form("hMCRecPhoton_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. photons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecE_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecPbar_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecNbar_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecCharg_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecNeutral_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecK0s_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecNoPRim_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecUnknown_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. electrons", nPt,0.,ptMax )) ;
+
+        //Decay photons         
+         fOutputContainer->Add(new TH1F(Form("hMCRecPhotPi0_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. photons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecPhotEta_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. photons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecPhotOmega_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. photons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecPhotOther_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. photons", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCRecPhotNoPrim_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. photons", nPt,0.,ptMax )) ;
+       
    
-  fOutputContainer->Add(new TH1F(Form("hMCRecNoLabel_cent%d",cen),"Clusters without label",nPt,0.,ptMax)) ;
-  fOutputContainer->Add(new TH1F(Form("hMCConversionRadius_cent%d",cen),"Clusters without label",600,0.,600.)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCRecPi0Vtx_cent%d",cen),"Secondary pi0s",100,0.,10.,600,0.,600.)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCRecEtaVtx_cent%d",cen),"Secondary etas",100,0.,10.,600,0.,600.)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCRecOmegaVtx_cent%d",cen),"Secondary etas",100,0.,10.,600,0.,600.)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCRecEtaprVtx_cent%d",cen),"Secondary etas",100,0.,10.,600,0.,600.)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCRecK0sVtx_cent%d",cen),"Secondary K0s",100,0.,10.,600,0.,600.)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCRecK0lVtx_cent%d",cen),"Secondary K0l",100,0.,10.,600,0.,600.)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCGammaPi0MisConvR_cent%d",cen),"Converted photons",400,0.,40.,600,0.,600.)) ;
+    
+         //MC tagging: reasons of partner loss etc.
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnStack_%s_cent%d",cPID[iPID],cen),"Decay photons with partner not in Stack", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWithFoundPartn_%s_cent%d",cPID[iPID],cen),"Decay photon with found partner", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWithWrongMass_%s_cent%d",cPID[iPID],cen),"Decay photon with wrong mass", nPt,0.,ptMax )) ;       
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAccept_%s_cent%d",cPID[iPID],cen),"Decay photon with parttner not in PHOS acc", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAcceptFA1_%s_cent%d",cPID[iPID],cen),"Decay photons with partner missed due geometry Fid. area. 1", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAcceptFA2_%s_cent%d",cPID[iPID],cen),"Decay photons with partner missed due geometry Fid. area. 2", nPt,0.,ptMax)) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAcceptFA3_%s_cent%d",cPID[iPID],cen),"Decay photons with partner missed due geometry Fid. area. 3", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnConv_%s_cent%d",cPID[iPID],cen),"Decay photons with partner missed due to conversion", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnEmin_%s_cent%d",cPID[iPID],cen),"Decay photons with partner missed due to low energy", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnOther_%s_cent%d",cPID[iPID],cen),"Decay photons with partner missed due unknown reason", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAll_%s_cent%d",cPID[iPID],cen),"Decay photons with partner missed due to any reason", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnNPhot_%s_cent%d",cPID[iPID],cen),"pi0 decay photon with non-photon partner", nPt,0.,ptMax )) ;
+
+       
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutEmin_%s_cent%d",cPID[iPID],cen),"Decay photons with rec. partner but failed Emin cut", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutNcell_%s_cent%d",cPID[iPID],cen),"Decay photons with rec. partner but failed Ncell cut", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutEcross_%s_cent%d",cPID[iPID],cen),"Decay photons with rec. partner but failed Ecross cut", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutM02_%s_cent%d",cPID[iPID],cen),"Decay photons with rec. partner but failed M02 cut", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnDefCuts_%s_cent%d",cPID[iPID],cen),"Decay photons with rec. partner but failed default cuts", nPt,0.,ptMax )) ;
+         fOutputContainer->Add(new TH1F(Form("hMCDecWRecPartn_%s_cent%d",cPID[iPID],cen),"Decay photons with rec partner", nPt,0.,ptMax )) ;
+
+        fOutputContainer->Add(new TH2F(Form("hMC_InvM_Re_%s_cent%d",cPID[iPID],cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
+         fOutputContainer->Add(new TH2F(Form("hMC_InvM_Re_Strict_%s_cent%d",cPID[iPID],cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
+       }    
+       fOutputContainer->Add(new TH2F(Form("hMCmass_cent%d",cen),"Mass with reconstructed decay partner",nM,0.,mMax,nPt,0.,ptMax )) ;                  
+    }
+    
+/*   
+    fOutputContainer->Add(new TH1F(Form("hMCRecNoLabel_cent%d",cen),"Clusters without label",nPt,0.,ptMax)) ;
+    fOutputContainer->Add(new TH1F(Form("hMCConversionRadius_cent%d",cen),"Clusters without label",600,0.,600.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCRecPi0Vtx_cent%d",cen),"Secondary pi0s",100,0.,10.,600,0.,600.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCRecEtaVtx_cent%d",cen),"Secondary etas",100,0.,10.,600,0.,600.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCRecOmegaVtx_cent%d",cen),"Secondary etas",100,0.,10.,600,0.,600.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCRecEtaprVtx_cent%d",cen),"Secondary etas",100,0.,10.,600,0.,600.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCRecK0sVtx_cent%d",cen),"Secondary K0s",100,0.,10.,600,0.,600.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCRecK0lVtx_cent%d",cen),"Secondary K0l",100,0.,10.,600,0.,600.)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCGammaPi0MisConvR_cent%d",cen),"Converted photons",400,0.,40.,600,0.,600.)) ;
   
   
-  fOutputContainer->Add(new TH2F(Form("hMCGammaPi0PrimMgg_cent%d",cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
-  fOutputContainer->Add(new TH2F(Form("hMCGammaPi0RecMgg_cent%d",cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCGammaPi0PrimMgg_cent%d",cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
+    fOutputContainer->Add(new TH2F(Form("hMCGammaPi0RecMgg_cent%d",cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
  
-  for(Int_t iPID=0; iPID<4; iPID++){    
-    fOutputContainer->Add(new TH1F(Form("hMCRecNoPrim_%s_cent%d",cPID[iPID],cen),"Reconstructed particles withour primary",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecGamma_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: Gamma",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecPhotConv_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: e+-",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecPi0_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: pi0",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecEta_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: eta",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecOmega_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: Gamma",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecEtapr_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: eta prime",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecPbar_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: bar(p)",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecNbar_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: bar(n)",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecPipm_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: pipm",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecN_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: n",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecP_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: p",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecKpm_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K+-",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecK0s_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0s",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecK0l_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0l",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecUnknownCh_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0l",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecUnknownNeu_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0l",nPt,0.,ptMax)) ;
-
-    //Decay photons
-    fOutputContainer->Add(new TH1F(Form("hMCRecGammaDir_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, no primary",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecGammaPi0_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecGammaEta_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from eta",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecGammaOmega_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from omega",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecGammaOther_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from other",nPt,0.,ptMax)) ;
+    for(Int_t iPID=0; iPID<4; iPID++){    
+      fOutputContainer->Add(new TH1F(Form("hMCRecNoPrim_%s_cent%d",cPID[iPID],cen),"Reconstructed particles withour primary",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecGamma_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: Gamma",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecPhotConv_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: e+-",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecPi0_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: pi0",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecEta_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: eta",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecOmega_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: Gamma",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecEtapr_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: eta prime",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecPbar_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: bar(p)",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecNbar_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: bar(n)",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecPipm_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: pipm",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecN_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: n",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecP_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: p",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecKpm_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K+-",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecK0s_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0s",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecK0l_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0l",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecUnknownCh_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0l",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecUnknownNeu_%s_cent%d",cPID[iPID],cen),"Reconstructed particles with primary: K0l",nPt,0.,ptMax)) ;
+
+      //Decay photons
+      fOutputContainer->Add(new TH1F(Form("hMCRecGammaDir_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, no primary",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecGammaPi0_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecGammaEta_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from eta",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecGammaOmega_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from omega",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecGammaOther_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from other",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecPhotNoPrim_%s_cent%d",cPID[iPID],cen),"Spectrum of rec. photons", nPt,0.,ptMax)) ;
     
-    //Pi0 decay photons
-    fOutputContainer->Add(new TH1F(Form("hMCRecGammaPi0Dalitz_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCRecGammaPi0NoStack_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCGammaPi02Gamma_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCGammaPi0Rec_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCGammaPi0RecSoft_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH1F(Form("hMCGammaPi0RecCells_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
+      //Pi0 decay photons
+      
+      //MC tagging: reasons of partner loss etc.
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnStack_cent%d",cen),"Decay photons with partner not in Stack", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWithFoundPartn_cent%d",cen),"Decay photon with found partner", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWithWrongMass_cent%d",cen),"Decay photon with wrong mass", nPt,0.,ptMax)) ;       
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAccept_cent%d",cen),"Decay photon with parttner not in PHOS acc", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAcceptFA1_cent%d",cen),"Decay photons with partner missed due geometry Fid. area. 1", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAcceptFA2_cent%d",cen),"Decay photons with partner missed due geometry Fid. area. 2", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAcceptFA3_cent%d",cen),"Decay photons with partner missed due geometry Fid. area. 3", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnConv_cent%d",cen),"Decay photons with partner missed due to conversion", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnEmin_cent%d",cen),"Decay photons with partner missed due to low energy", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnOther_cent%d",cen),"Decay photons with partner missed due unknown reason", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnAll_cent%d",cen),"Decay photons with partner missed due to any reason", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnNPhot_cent%d",cen),"pi0 decay photon with non-photon partner", nPt,0.,ptMax)) ;
+
+       
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutEmin_cent%d",cen),"Decay photons with rec. partner but failed Emin cut", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutNcell_cent%d",cen),"Decay photons with rec. partner but failed Ncell cut", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutEcross_cent%d",cen),"Decay photons with rec. partner but failed Ecross cut", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnCutM02_cent%d",cen),"Decay photons with rec. partner but failed M02 cut", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWMisPartnDefCuts_cent%d",cen),"Decay photons with rec. partner but failed default cuts", nPt,0.,ptMax)) ;
+       fOutputContainer->Add(new TH1F(Form("hMCDecWRecPartn_cent%d",cen),"Decay photons with rec partner", nPt,0.,ptMax)) ;
+       
+       fOutputContainer->Add(new TH2F(Form("hMCmass_cent%d",cen),"Mass with reconstructed decay partner",nM,0.,mMax,nPt,0.,ptMax)) ;                   
+      
+      
+      fOutputContainer->Add(new TH1F(Form("hMCRecGammaPi0Dalitz_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCRecGammaPi0NoStack_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCGammaPi02Gamma_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCGammaPi0Rec_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCGammaPi0RecSoft_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
+      fOutputContainer->Add(new TH1F(Form("hMCGammaPi0RecCells_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
 
     fOutputContainer->Add(new TH1F(Form("hMCGammaPi0Tagged_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
     fOutputContainer->Add(new TH1F(Form("hMCGammaPi0FakeTagged_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
@@ -387,15 +489,22 @@ void AliAnalysisTaskTaggedPhotons::UserCreateOutputObjects()
     //all clusters fake tagged
     fOutputContainer->Add(new TH1F(Form("hMCAllFakeTagged_%s_cent%d",cPID[iPID],cen),"Reconstructed gammas, from pi0",nPt,0.,ptMax)) ;
 
-    fOutputContainer->Add(new TH2F(Form("hMC_InvM_Re_%s_cent%d",cPID[iPID],cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
-    fOutputContainer->Add(new TH2F(Form("hMC_InvM_Re_Strict_%s_cent%d",cPID[iPID],cen),"Two-photon inv. mass vs first photon pt",nM,0.,mMax,nPt,0.,ptMax)) ;
    
   }
   fOutputContainer->Add(new TH1F(Form("hMCGammaPi0MisPartner_cent%d",cen),"Spectrum of missed partners",nPt,0.,ptMax)) ;
   fOutputContainer->Add(new TH2F(Form("hMCGammaPi0MisPartnerEtaPhi_cent%d",cen),"Spectrum of missed partners",100,-0.2,0.2,100,4.5,5.6)) ;
     }
-    }
-  }//If MC handler exists...
+*/    
+  }
+
+  //If we work with MC, need to set Sumw2 - we will use weights
+  if(fIsMC){
+      for(Int_t i=0; i<fOutputContainer->GetSize();i++){
+        ((TH1*)fOutputContainer->At(i))->Sumw2() ; 
+      }
+  }
+    
+  
   
   for(Int_t i=0;i<1;i++)
     for(Int_t j=0;j<5;j++)
@@ -414,10 +523,14 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
   //Select photons
   //Fill QA histograms
   //Fill Tagging histogsms
+
+  
+  const Double_t kEcrossCut=0.98 ;
+  const Double_t kTOFMaxCut= 100.e-9 ;  
+  const Double_t kTOFMinCut=-100.e-9 ;  
   
   // Event selection flags
-
-  FillHistogram("hSelEvents",1) ;
+  //  FillHistogram("hSelEvents",0) ;
     
   AliVEvent* event = (AliVEvent*)InputEvent();
   if(!event){
@@ -425,32 +538,31 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
     PostData(1, fOutputContainer);
     return;
   }
-  FillHistogram("hSelEvents",2) ;
+  FillHistogram("hSelEvents",1) ;
+
+  //MC stack init
+  fStack = (TClonesArray*)event->FindListObject(AliAODMCParticle::StdBranchName());
   
   //read geometry if not read yet
-  if(fPHOSgeom==0)
+  if(fPHOSgeom==0){
     InitGeometry() ;
-  
-  //MC stack init
-  fStack=0x0 ;
-  if(AliAnalysisManager::GetAnalysisManager()){
-    AliMCEventHandler* mctruth = (AliMCEventHandler*)((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler());
-    if(mctruth)
-      fStack = mctruth->MCEvent()->Stack();
   }
   
+  if(!fUtils) 
+    fUtils = new AliAnalysisUtils();
+
+  Bool_t isMB = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7)  ; 
+  Bool_t isPHI7 = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kPHI7);
+   
+  if((fIsMB && !isMB) || (fIsMB && isPHI7) || (!fIsMB && !isPHI7)){
+    PostData(1, fOutputContainer);
+    return;    
+  }
+  FillHistogram("hSelEvents",2) ;
   
   // Checks if we have a primary vertex
   // Get primary vertices form AOD
 
-/*  
-  if(event->GetPrimaryVertexTracks()->GetNContributors()>0)
-    eventVtxExist    = kTRUE;
-  else 
-    if(event->GetPrimaryVertexSPD()->GetNContributors()>0)
-      eventVtxExist    = kTRUE;
-*/
-
   Double_t vtx5[3];
   vtx5[0] = event->GetPrimaryVertex()->GetX();
   vtx5[1] = event->GetPrimaryVertex()->GetY();
@@ -470,9 +582,19 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
 //    PostData(1, fOutputContainer);
 //    return ;
 //  }
-
+  
+  if(!fUtils->IsVertexSelected2013pA(event)){
+    PostData(1, fOutputContainer);
+    return ;
+  }
   FillHistogram("hSelEvents",4) ;
-
+  
+  if(fUtils->IsPileUpEvent(event)){
+    PostData(1, fOutputContainer);
+    return ;
+  }
+  FillHistogram("hSelEvents",5) ;
+  
   //centrality
   AliCentrality *centrality = event->GetCentrality();
   if( centrality )
@@ -489,7 +611,7 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
   }
   fCentBin = (Int_t)(fCentrality/20.) ; 
 
-  FillHistogram("hSelEvents",5) ;
+  FillHistogram("hSelEvents",6) ;
   
   
   //Vtx class z-bin
@@ -500,14 +622,19 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
   if(fTrackEvent)
     fTrackEvent->Clear() ;
   else
-    fTrackEvent = new TClonesArray("AliAODPWG4Particle",event->GetNumberOfTracks()) ;
+    fTrackEvent = new TClonesArray("AliCaloPhoton",event->GetNumberOfTracks()) ;
+
   for (Int_t i=0;i<event->GetNumberOfTracks();++i) {
-    AliVParticle *track = event->GetTrack(i) ;
+    AliAODTrack *track = (AliAODTrack*)event->GetTrack(i) ;
+    if(!track->IsHybridGlobalConstrainedGlobal())
+      continue ;
     if(TMath::Abs(track->Eta())< 0.9){
       if(trackMult>=fTrackEvent->GetSize())
        fTrackEvent->Expand(2*trackMult) ;
-      new ((*fTrackEvent)[trackMult]) AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),track->P());
+      new ((*fTrackEvent)[trackMult]) AliCaloPhoton(track->Px(),track->Py(),track->Pz(),track->P());
       trackMult++;
+     FillHistogram("hTrackEtaPhi",track->Eta(),track->Phi()) ;
+     FillHistogram("hTrackEtaPt",track->Eta(),track->Pt()) ;
     }
   }
   FillHistogram("hTrackMult",fCentrality,trackMult+0.5) ;
@@ -521,7 +648,7 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
   //---------Select photons-------------------
   Int_t multClust = event->GetNumberOfCaloClusters();
   if(!fPHOSEvent)
-    fPHOSEvent   = new TClonesArray("AliAODPWG4Particle",multClust);
+    fPHOSEvent   = new TClonesArray("AliCaloPhoton",multClust);
   else
     fPHOSEvent->Clear() ;
   Int_t inList = 0; //counter of caloClusters
@@ -541,22 +668,14 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
     if(clu->GetM02()<0.2) 
       continue ;          
   
-    if(clu->GetMCEnergyFraction()>0.98) //Ecross cut, should be filled with Tender
+    if(clu->GetMCEnergyFraction()>kEcrossCut) //Ecross cut, should be filled with Tender
      continue ;    
-    
-    FillHistogram("hTOF",clu->E(),clu->GetTOF()) ;
-    if(TMath::Abs(clu->GetTOF())>100.e-9) 
-      continue ;          
-    
-//    if(clu->GetDistanceToBadChannel()<2.5)
-//      continue ;
 
     Float_t pos[3] ;
     clu->GetPosition(pos) ;
     Int_t fidArea=GetFiducialArea(pos) ;
-    if(fidArea==0) //Bad cell
-      continue; 
-
+//    if(fidArea==0) //Bad cell
+//      continue; 
     
     TVector3 global1(pos) ;
     Int_t relId[4] ;
@@ -565,6 +684,15 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
     Int_t cellX = relId[2];
     Int_t cellZ = relId[3] ;
     
+    FillHistogram("hTOF",clu->E(),clu->GetTOF()) ;
+    FillHistogram(Form("hTofM%d",mod),clu->GetTOF(),clu->E()) ;
+    if(clu->GetTOF() < kTOFMinCut || clu->GetTOF() > kTOFMaxCut)
+      continue ;          
+    
+//    if(clu->GetDistanceToBadChannel()<2.5)
+//      continue ;
+
+    
     FillHistogram(Form("hCluNXZM%d",mod),cellX,cellZ,1.);
     FillHistogram(Form("hCluEXZM%d",mod),cellX,cellZ,clu->E());
     if(fidArea>1){
@@ -576,51 +704,57 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
     
     TLorentzVector momentum ;
     clu->GetMomentum(momentum, vtx5);
-    AliAODPWG4Particle *p = new ((*fPHOSEvent)[inList]) AliAODPWG4Particle(momentum.Px(),momentum.Py(),momentum.Pz(),clu->E() );
+    AliCaloPhoton *p = new ((*fPHOSEvent)[inList]) AliCaloPhoton(momentum.Px(),momentum.Py(),momentum.Pz(),clu->E() );
     inList++;
 
     Int_t isolation = EvalIsolation(&momentum) ;
-    p->SetBtag(isolation) ;
+    p->SetIsolationTag(isolation) ;
     
     p->SetDistToBad((Int_t)(1.+clu->GetDistanceToBadChannel()/2.2));
     
-    p->SetTag(0); //Strict PID pi0 partner not found
+    p->SetTagInfo(0); //Strict PID pi0 partner not found
     p->SetTagged(kFALSE);   //Reconstructed pairs found
-    Bool_t sure = 0;
+    
     p->SetFiducialArea(fidArea) ;
 
-    if(fStack){    
-     //This is primary entered PHOS
-     Int_t primLabel=FindPrimary(clu,sure) ;
-     //Look what particle left vertex
-     if(primLabel>-1){
-       TParticle * prim = fStack->Particle(primLabel) ;
-       Int_t iparent=primLabel;
-       TParticle * parent = prim;
-       while((parent->R() > rcut) && (iparent>-1)){
-         iparent=parent->GetFirstMother();
-         parent=fStack->Particle(iparent);
-      }
-       p->SetCaloLabel(primLabel,iparent); //This and partner cluster
-     }
-     else{
-       p->SetCaloLabel(-1,-1); //This and partner cluster
-     }
-       
+    if(fIsMC){    
+       //This is primary entered PHOS
+       FillHistogram(Form("LabelsNPrim_cent%d",fCentBin),clu->E(),float(clu->GetNLabels())) ;
+       Int_t primLabel=clu->GetLabelAt(0) ; //FindPrimary(clu,sure) ;
+       //Look what particle left vertex
+       if(primLabel>-1){
+         AliAODMCParticle * prim = (AliAODMCParticle*)fStack->At(primLabel) ;
+         Int_t iparent=primLabel;
+         AliAODMCParticle * parent = prim;
+         Double_t r2=prim->Xv()*prim->Xv()+prim->Yv()*prim->Yv() ;
+         while((r2 > rcut*rcut) && (iparent>-1)){
+           iparent=parent->GetMother();
+           parent=(AliAODMCParticle*)fStack->At(iparent);
+           r2=parent->Xv()*parent->Xv()+parent->Yv()*parent->Yv() ;
+         }
+         p->SetPrimary(primLabel) ;
+         p->SetPrimaryAtVertex(iparent) ;
+        p->SetWeight(PrimaryParticleWeight(parent)) ;
+       }
+       else{
+         p->SetPrimary(-1); //Primary index    
+         p->SetPrimaryAtVertex(-1) ;
+        p->SetWeight(1.) ;
+       }
     }
     else{  
-     //This is primary at vertex(R<1cm)
-     p->SetCaloLabel(-1,-1); //This and partner cluster
+      p->SetPrimary(-1); //Primary index    
+      p->SetPrimaryAtVertex(-1) ;
+      p->SetWeight(1.) ;
     }
-    p->SetLabel(i); //Cluster index    
     //PID criteria
-//    p->SetDispBit(clu->Chi2()) ;
     p->SetDispBit(clu->Chi2()<2.5) ;
     p->SetTOFBit(TestTOF(clu->GetTOF(),clu->E())) ;
-    p->SetChargedBit(clu->GetEmcCpvDistance()>2.5) ;      
+    p->SetCPVBit(clu->GetEmcCpvDistance()>2.5) ;      
   }
   FillHistogram("hPHOSCentrality",fCentrality,inList+0.5) ;
   
+  
   FillMCHistos() ;
   FillTaggingHistos() ;
 
@@ -640,52 +774,83 @@ void AliAnalysisTaskTaggedPhotons::UserExec(Option_t *)
 void AliAnalysisTaskTaggedPhotons::FillMCHistos(){
    
   //MC info about this particle
-  if(!fStack)
+  if(!fIsMC)
     return ;
-  
   const Double_t rcut=1. ; //cut on vertex to consider particle as "primary" 
-  AliAODEvent* event = (AliAODEvent*)InputEvent();
+  const Double_t phiMin=260.*TMath::Pi()/180. ;
+  const Double_t phiMax=320.*TMath::Pi()/180. ;
+  
+  Int_t nPrim = fStack->GetEntriesFast() ;
+  //Fill Primary particl yields
   
-  //Fill spectra of primary particles
-  char partName[10] ;
-  for(Int_t i=0;i<fStack->GetNtrack();i++){
-    TParticle* particle =  fStack->Particle(i);
+  for(Int_t i=0;i<nPrim;i++){
+    AliAODMCParticle * prim = (AliAODMCParticle*)fStack->At(i) ;
+    Double_t r2=prim->Xv()*prim->Xv()+prim->Yv()*prim->Yv() ;
+    if(r2>rcut*rcut)
+      continue ;
+
+    Int_t pdg=prim->GetPdgCode() ;    
+    char partName[30] ;
+    if(pdg == 111)
+      snprintf(partName,30,"pi0") ;
+    else
+      if(pdg == 221)
+        snprintf(partName,30,"eta") ;
+      else
+        if(pdg == 22)
+           snprintf(partName,30,"gamma") ;
+       else
+          if(pdg == 310)
+             snprintf(partName,30,"K0s") ;
+         else
+            if(abs(pdg) == 321)
+              snprintf(partName,30,"Kpm") ;
+           else
+              if(abs(pdg) == 211)
+                snprintf(partName,30,"pipm") ;
+             else  
+                if(abs(pdg) == 2212)
+                  snprintf(partName,30,"p") ;
+               else  
+                  if(abs(pdg) ==-2212)
+                    snprintf(partName,30,"pbar") ;
+                 else  
+                    if(abs(pdg) == 2112)
+                      snprintf(partName,30,"n") ;
+                   else  
+                      if(abs(pdg) ==-2112)
+                        snprintf(partName,30,"nbar") ;
+                     else  
+                        continue ;                   
+
     //Primary particle
-    Double_t r=particle->R() ;
-
-    switch(particle->GetPdgCode()){
-      case 111:  snprintf(partName,10,"pi0") ; 
-                 break ;
-      case 221:  snprintf(partName,10,"eta") ;
-                 break ;
-      case 223:  snprintf(partName,10,"omega") ;
-                 break ;
-      case 22:   snprintf(partName,10,"gamma") ;
-                 break ;
-      default:   continue ;
-    }
-    
-    Double_t pt = particle->Pt() ;
-    //Distribution over vertex
-    FillHistogram(Form("hMC_%s_vertex",partName),pt,r) ;
+    Double_t phi=prim->Phi() ;
+    while(phi<0.)phi+=TMath::TwoPi() ;
+    while(phi>TMath::TwoPi())phi-=TMath::TwoPi() ;
+    Double_t pt=prim->Pt() ;
 
-    if(r >rcut)
-      continue ;
-   
     //Total number of pi0 with creation radius <1 cm
-    Double_t w = PrimaryParticleWeight(particle) ;  
-    FillHistogram(Form("hMC_all_%s",partName),pt,w) ;
-    if(TMath::Abs(particle->Y())<0.15){
-      FillHistogram(Form("hMC_unitEta_%s",partName),pt,w) ;
+    Double_t w = PrimaryParticleWeight(prim) ;  
+    FillHistogram(Form("hMC_all_%s_cent%d",partName,fCentBin),pt,w) ;
+    if(TMath::Abs(prim->Y())<0.13){
+      FillHistogram(Form("hMC_phi_%s_cent%d",partName,fCentBin),phi,w) ;
+      if(phi>phiMin && phi<phiMax)
+        FillHistogram(Form("hMC_unitEta_%s_cent%d",partName,fCentBin),pt,w) ;
     }
 
-    FillHistogram(Form("hMC_rap_%s",partName),particle->Y(),w) ;
+    FillHistogram(Form("hMC_rap_%s_cent%d",partName,fCentBin),prim->Y(),w) ;
+    //Some additional QA
+    if(pdg == 111){
+       FillHistogram("hMCpi0_ptrap",pt,prim->Y(),w) ;   
+       FillHistogram("hMCpi0_ptphi",pt,phi,w) ;   
+    }
+    if(pdg == 22){
+       FillHistogram("hMCgamma_ptrap",pt,prim->Y(),w) ;   
+       FillHistogram("hMCgamma_ptphi",pt,phi,w) ;   
+    }
     
-    Double_t phi=particle->Phi() ;
-    while(phi<0.)phi+=TMath::TwoPi() ;
-    while(phi>TMath::TwoPi())phi-=TMath::TwoPi() ;
-    FillHistogram(Form("hMC_phi_%s",partName),phi,w) ;
   }
+  
  
   
   //Clussify reconstructed clusters
@@ -695,332 +860,203 @@ void AliAnalysisTaskTaggedPhotons::FillMCHistos(){
   
   const Int_t n=fPHOSEvent->GetEntriesFast() ;
   for(Int_t i=0;i<n;i++){
-    AliAODPWG4Particle *p = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(i));
-    Int_t iprim=p->GetCaloLabel(0) ; //Particle entered PHOS
-    if(iprim<0){ //No label!
-      FillHistogram("hMCRecNoLabel",p->Pt());
+    AliCaloPhoton *p = static_cast<AliCaloPhoton*>(fPHOSEvent->At(i));
+    Int_t label=p->GetPrimary() ;
+    if(label<0){ //No label!
+      FillHistogram("hMCRecNoLabel",p->Pt(),p->GetWeight());
       continue ;
     }     
-    
-    TParticle * prim = fStack->Particle(iprim) ;
-      
-    //Look what particle left vertex
-    Int_t iparent=p->GetCaloLabel(1); //Particle left vertex
-    TParticle * parent =fStack->Particle(iparent); 
 
-    Int_t grandpaPDG=-1 ;
-    if(parent){
-      grandpaPDG=parent->GetPdgCode() ;
-    }
-    switch(grandpaPDG){
-    case -1: //no primary
-         FillPIDHistograms("hMCRecNoPrim",p);
-         break ;         
-    case 22:  
-         FillPIDHistograms("hMCRecGamma",p);
-         break ;
-    case  11:
-    case -11: //electron/positron conversion
-         FillPIDHistograms("hMCRecPhotConv",p);  //Reconstructed with photon from conversion primary
-         FillHistogram("hMCConversionRadius",prim->R());
+    
+    AliAODMCParticle * prim = (AliAODMCParticle*)fStack->At(p->GetPrimary()) ;
+    //Look what particle left virtex
+    Int_t iparent=p->GetPrimary();
+    AliAODMCParticle * parent = prim;
+    while(parent->Xv()*parent->Xv()+parent->Yv()*parent->Yv() > rcut*rcut){
+       iparent=parent->GetMother();
+       if(iparent<0)
          break ;
-    case 111: //Pi0 decay           //Primary decay photon (as in MC)
-         FillPIDHistograms("hMCRecPi0",p);
-          //Strange, vertex of pi0?
-         FillHistogram("hMCRecPi0Vtx",p->Pt(),parent->R());
+       parent = (AliAODMCParticle*)fStack->At(iparent) ;       
+      }
+      Int_t parentPDG=parent->GetPdgCode() ;     
+      switch(parentPDG){
+       case 22: //electron/positron conversion
+         FillPIDHistograms("hMCRecPhoton",p);  //Reconstructed with photon from conversion primary
          break ;
-    case 221: //eta decay
-         FillPIDHistograms("hMCRecEta",p);
-          //Strange, vertex of eta?
-         FillHistogram("hMCRecEtaVtx",p->Pt(),parent->R());
-         break ;  
-    case 223: //omega meson decay
-         FillPIDHistograms("hMCRecOmega",p);
-          //Strange, vertex of omega?
-         FillHistogram("hMCRecOmegaVtx",p->Pt(),parent->R());
+       case  11:
+       case -11: //electron/positron conversion
+         FillPIDHistograms("hMCRecE",p);  //Reconstructed with photon from conversion primary
          break ;
-    case 331: //eta' decay
-         FillPIDHistograms("hMCRecEtapr",p);
-          //Strange, vertex of eta'?
-         FillHistogram("hMCRecEtaprVtx",p->Pt(),parent->R());
-         break ;         
-    case -2212:
+       case -2212:
          FillPIDHistograms("hMCRecPbar",p);  //Reconstructed with photon from antibaryon annihilation
          break ;         
-    case -2112: //antineutron & antiproton 
+       case -2112: //antineutron & antiproton conversion
          FillPIDHistograms("hMCRecNbar",p);  //Reconstructed with photon from antibaryon annihilation
          break ;         
-    case  211:
-    case -211:
-         FillPIDHistograms("hMCRecPipm",p);  //Reconstructed with photon from antibaryon annihilation
-         break ;         
-    case 2112:
-         FillPIDHistograms("hMCRecN",p);  //Reconstructed with photon from antibaryon annihilation
-         break ;               
-    case 2212:
-         FillPIDHistograms("hMCRecP",p);  //Reconstructed with photon from antibaryon annihilation
-         break ;               
-    case  321:
-    case -321:
-         FillPIDHistograms("hMCRecKpm",p);  //Reconstructed with photon from conversion primary
+       case  211:
+       case -211:
+       case 2212:
+       case  321:
+       case -321:
+         FillPIDHistograms("hMCRecCharg",p);  //Reconstructed with photon from conversion primary
          break ;
-    case 130:
-         FillHistogram("hMCRecK0sVtx",p->Pt(),prim->R());
+       case 310:
          FillPIDHistograms("hMCRecK0s",p);  //Reconstructed with photon from conversion primary
          break ;
-    case 310:    
-         FillHistogram("hMCRecK0lVtx",p->Pt(),prim->R());
-         FillPIDHistograms("hMCRecK0l",p);  //Reconstructed with photon from conversion primary
+       case 2112: //antineutron & antiproton conversion
+       case 130:
+         FillPIDHistograms("hMCRecNeutral",p);  //Reconstructed with photon from antibaryon annihilation
          break ;
-    default:  
-          if(parent->GetPDG()->Charge()!=0)
-            FillPIDHistograms("hMCRecUnknownCh",p);
-         else
-            FillPIDHistograms("hMCRecUnknownNeu",p);
-         printf("Unknown PDG code: %d \n",grandpaPDG) ;
-    }  
-//Put here filling histograms vs PID...    
+       case -1: //direct photon or no primary
+         FillPIDHistograms("hMCRecNoPRim",p);
+         break ;         
+       default:  
+         printf("Unknown PDG: %d \n",parentPDG) ;
+         FillPIDHistograms("hMCRecUnknown",p);
+         break ;
+      }  
     
-        
-    //Now classify decay photons
-    if(grandpaPDG==22){
-      //Separate gammas from pi0s, eta, omega, eta', e+-, other, no primary
-      Int_t igrandpa = -1 ;
-      if(parent)
-        igrandpa=parent->GetFirstMother();
-      Int_t decayPDG=-1 ; 
-      TParticle * decay=0x0 ;
-      if(igrandpa>-1){
-       decay=fStack->Particle(igrandpa) ;
-       decayPDG=decay->GetPdgCode() ;
-      }
-      switch(decayPDG){
-       case -1 :// Direct gamma?
-            FillPIDHistograms("hMCRecGammaDir",p);
-           break ;
-       case 111 :// pi0 decays
-            FillPIDHistograms("hMCRecGammaPi0",p);
-           break ;
-       case 221 :// eta decays
-            FillPIDHistograms("hMCRecGammaEta",p);
-           break ;
-       case 223 :// omega decays
-            FillPIDHistograms("hMCRecGammaOmega",p);
-           break ;
-       default:
-            FillPIDHistograms("hMCRecGammaOther",p);
-      }            
-
-
-      //Classify photons from pi0 decay
-      if(decayPDG==111){
-       //Dalitz decay
-       if(decay->GetNDaughters()>2){
-          FillPIDHistograms("hMCRecGammaPi0Dalitz",p);
-         continue ;
-       }
-       Int_t ipartner = decay->GetFirstDaughter(); 
-       if(ipartner==iparent){ //look other
-          ipartner = decay->GetLastDaughter(); 
+    
+      //Now classify decay photon
+      if(parentPDG==22){
+       Int_t iGrandParent=parent->GetMother();
+       if(iGrandParent<0 || iGrandParent>=fStack->GetEntriesFast()){
+         FillPIDHistograms("hMCRecPhotNoPrim",p);
+          continue ;     
        }
-       //No partner in Stack
-       if(ipartner==-1){
-          FillPIDHistograms("hMCRecGammaPi0NoStack",p) ;
+       AliAODMCParticle * grandParent = (AliAODMCParticle*)fStack->At(iGrandParent) ;  
+        Int_t grandParentPDG=grandParent->GetPdgCode() ;     
+        switch(grandParentPDG){
+       case 111: //pi0
+         FillPIDHistograms("hMCRecPhotPi0",p);
+         break ;               
+       case 221: //eta decay
+         FillPIDHistograms("hMCRecPhotEta",p);
+         break ;  
+       case 223: //omega meson decay
+         FillPIDHistograms("hMCRecPhotOmega",p);
+         break ;
+       default:
+         FillPIDHistograms("hMCRecPhotOther",p);
        }
-        else{
-         //      
-          FillPIDHistograms("hMCGammaPi02Gamma",p) ;
-         TParticle * partner = fStack->Particle(ipartner);
-         //Check if partner is registered and made correct mass
-         Double_t mPrim=(parent->Energy()+partner->Energy())*(parent->Energy()+partner->Energy())-
-                        (parent->Px()+partner->Px())*(parent->Px()+partner->Px()) -
-                        (parent->Py()+partner->Py())*(parent->Py()+partner->Py()) -
-                        (parent->Pz()+partner->Pz())*(parent->Pz()+partner->Pz()) ;
-          if(mPrim>0.)mPrim=TMath::Sqrt(mPrim) ;
-         FillHistogram(Form("hMCGammaPi0PrimMgg_cent%d",fCentBin),mPrim,p->Pt()) ;       
-         
-         //find corresponding PWG4particle
-         Bool_t isPartnerRec=kFALSE ;
-         Bool_t isTagged=kFALSE ;
-          for(Int_t j=0;j<n;j++){
-           if(j==i) 
-             continue ;
-            AliAODPWG4Particle *p2 = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(j));
-           Double_t invMass = p->GetPairMass(p2);      
-            if(p2->GetCaloLabel(1)==ipartner){ //partner
-              isPartnerRec=kTRUE ;
-             FillHistogram("hMCGammaPi0RecMgg",invMass,p->Pt()) ;
-              FillPIDHistograms("hMCGammaPi0Rec",p) ;
-         
-             //estimate proportion passed PI0 cut
-              if(IsInPi0Band(invMass,p->Pt(),2)){ //Check type!!!!!!!!!!!!!!
-                FillPIDHistograms("hMCGammaPi0TrueTagged",p) ;           
-                if(isTagged)
-                  FillPIDHistograms("hMCGammaPi0MultyTagged",p) ;                
-               isTagged=kTRUE ;
-             }
+       //--------consider pi0 decays--------------------
+       if(grandParentPDG==111){
+         //First find which daughter is our cluster
+          //iparent - index of curent photon     
+         Int_t ipartner=grandParent->GetDaughter(0) ;
+         if(ipartner==iparent){//look for other
+           if(grandParent->GetNDaughters()>1){
+             ipartner=grandParent->GetDaughter(1);  
            }
            else{
-             if(IsInPi0Band(invMass,p->Pt(),2)){//Check type!!!!!!!!!!!!!!
-                FillPIDHistograms("hMCGammaPi0FakeTagged",p) ;
-                if(isTagged)
-                  FillPIDHistograms("hMCGammaPi0MultyTagged",p) ;                
-               isTagged=kTRUE ;                
-             }
+             ipartner=-1 ;
            }
          }
-          if(isTagged)          
-            FillPIDHistograms("hMCGammaPi0Tagged",p) ;
+       
+         //There is no partner in stack
+         if(ipartner==-1){
+            FillPIDHistograms("hMCDecWMisPartnStack",p) ;
+         }
+          else{
+           AliAODMCParticle * partner = (AliAODMCParticle *)fStack->At(ipartner);
+           //Check if partner is registered and made correct mass
+           //If not - trace the reason
+           AliCaloPhoton *pp = 0x0 ;
          
-         //If no PWG4particle trace the reason
-         if(!isPartnerRec){
-             //conversion
-             if(partner->GetPdgCode()==22){ 
+           for(Int_t ii=0;ii<n;ii++){
+             if(i==ii) continue; 
+             AliCaloPhoton * tmp = static_cast<AliCaloPhoton*>(fPHOSEvent->At(ii));
+             Int_t ipartnPrim = tmp->GetPrimary() ;
+             while(ipartnPrim>-1){
+                if(ipartnPrim==ipartner)
+                 break ;
+               ipartnPrim = ((AliAODMCParticle *)fStack->At(ipartnPrim))->GetMother();
+             }
+             if(ipartnPrim==ipartner){
+               pp=tmp ;
+               break ;
+             }
+           }
+
+           if(pp){
+             //Partner reconstructed, but did not pass cuts
+                FillPIDHistograms("hMCDecWRecPartn",p) ;       
+               Double_t invMass=(*p+ *pp).M() ;
+               FillHistogram("hMCmass",invMass,p->Pt(),p->GetWeight()) ;
+               if(IsInPi0Band(invMass,p->Pt())){
+                 FillPIDHistograms("hMCDecWithFoundPartn",p) ;
+               }
+               else{
+                 FillPIDHistograms("hMCDecWithWrongMass",p) ;
+               }
+           }
+           else{//Partner not reconstructed
+             if(partner->GetPdgCode()==22){
                Bool_t isPartnerLost=kFALSE; //If partner is lost for some reason
                
-               //did not hit PHOS      
-               Int_t modulenum ;
+               //Check if partner miss PHOS
+               Int_t modulenum ;
                Double_t ztmp=0.,xtmp=0. ;
-               Bool_t impact=fPHOSgeom->ImpactOnEmc(partner,modulenum,ztmp,xtmp) ;
-               //Check Bad Map
-               Int_t fidArea=0 ;                  
-               TVector3 partnerGlobaPos ;
-               if(impact){
-                  fPHOSgeom->Local2Global(modulenum,xtmp, ztmp,partnerGlobaPos) ;
-                  Float_t pos[3] ;
-                 partnerGlobaPos.GetXYZ(pos);
-                  fidArea=GetFiducialArea(pos) ;
-                }
-
-               if(!impact || (fidArea==0) ){ //this photon cannot hit PHOS               
-                 FillPIDHistograms("hMCGammaPi0MisGeo",p);
+               Double_t vtx[3]={partner->Xv(),partner->Yv(),partner->Zv()} ;
+               Bool_t impact=fPHOSgeom->ImpactOnEmc(vtx,partner->Theta(),partner->Phi(),modulenum,ztmp,xtmp) ;
+               
+               if(impact){//still check bad map
+                  Int_t relId[4] ;
+                  fPHOSgeom->RelPosToRelId(modulenum,xtmp,ztmp,relId) ;
+                  if ( !IsGoodChannel(modulenum,relId[2],relId[3]) ) {
+                     impact=kFALSE ;               
+                 }  
+               }
+               if(!impact){ //this photon cannot hit PHOS                
+                 FillPIDHistograms("hMCDecWMisPartnAccept",p) ;  //Spectrum of tagged with missed partner
                  Int_t iFidArea = p->GetFiducialArea(); 
                  if(iFidArea>0){
-                   FillPIDHistograms("hMCGammaPi0MisGeoFA1",p) ;  //Spectrum of tagged with missed partner
+                   FillPIDHistograms("hMCDecWMisPartnAcceptFA1",p) ;  //Spectrum of tagged with missed partner
                    if(iFidArea>1){
-                     FillPIDHistograms("hMCGammaPi0MisGeoFA2",p) ;  //Spectrum of tagged with missed partner
+                     FillPIDHistograms("hMCDecWMisPartnAcceptFA2",p) ;  //Spectrum of tagged with missed partner
                      if(iFidArea>2){
-                       FillPIDHistograms("hMCGammaPi0MisGeoFA3",p) ;  //Spectrum of tagged with missed partner
+                       FillPIDHistograms("hMCDecWMisPartnAcceptFA3",p) ;  //Spectrum of tagged with missed partner
                      }
                    }
                  }
                  isPartnerLost=kTRUE;
                }
-
-               //this photon is converted before it is registered
-               if(!isPartnerLost){
-                 if(partner->GetNDaughters()>0 && 
-                    fStack->Particle(partner->GetFirstDaughter())->R()<450.){  
-                   FillPIDHistograms("hMCGammaPi0MisConv",p);
-                   FillHistogram("hMCGammaPi0MisConvR",p->Pt(),fStack->Particle(partner->GetFirstDaughter())->R()) ;  //Spectrum of tagged with missed partner
-                   isPartnerLost=kTRUE;
-                 }
-               }
                
-               // too soft     
+                if(!isPartnerLost){
+                 //this photon is converted before it is registered
+                 if(partner->GetNDaughters()>0){
+                   AliAODMCParticle* tmpP=(AliAODMCParticle*)fStack->At(partner->GetDaughter(0));
+                   if(tmpP->Xv()*tmpP->Xv()+tmpP->Yv()*tmpP->Yv()<450.*450.){  
+                     FillPIDHistograms("hMCDecWMisPartnConv",p) ;  //Spectrum of tagged with missed partner
+                     isPartnerLost=kTRUE;
+                   }
+                 }
+               }
                if(!isPartnerLost && 
-                  partner->Energy()<0.3){ //energy is not enough to be registered by PHOS
-                 FillPIDHistograms("hMCGammaPi0MisEmin",p);  
+                  partner->E()<0.3){ //energy is not enough to be registered by PHOS
+                 FillPIDHistograms("hMCDecWMisPartnEmin",p) ;  //Spectrum of tagged with missed partner
                  isPartnerLost=kTRUE;
                }
-               //Other reason
-               if(!isPartnerLost){
-                 FillHistogram("hMCGammaPi0MisPartner",partner->Pt());
-                 FillHistogram("hMCGammaPi0MisPartnerEtaPhi",partner->Eta(),partner->Phi());   
-                 //May be overlap?
-                 Bool_t fakePrimary=kFALSE ;
-                  Int_t multClust = event->GetNumberOfCaloClusters();
-                  for (Int_t iclu=0; iclu<multClust; iclu++) {
-                    AliAODCaloCluster * clu = event->GetCaloCluster(iclu);
-                    Float_t pos[3] ;
-                    clu->GetPosition(pos) ;
-                    TVector3 global1(pos) ;
-                   Double_t d=(partnerGlobaPos-global1).Mag();
-                   if( d<4 ){//same cluster
-                      //check is partner is in list?
-                      Int_t nlab=clu->GetNLabels() ;
-                      for(Int_t ilab=0;  ilab<nlab;  ilab++){
-                       Int_t labelA = clu->GetLabelAt(ilab) ;
-                       while(labelA>-1){
-                         if(labelA==ipartner){
-                           if(clu->E()>0.3)
-                             FillPIDHistograms("hMCGammaPi0RecSoft",p);
-                           else
-                             if(clu->GetNCells()<3)
-                               FillPIDHistograms("hMCGammaPi0RecCells",p);
-                             else
-                                       FillPIDHistograms("hMCGammaPi0MisFoundPrim",p);
-                           break ; 
-                         }
-                          labelA=fStack->Particle(labelA)->GetFirstMother() ;
-                       }
-                     }                      
-                      fakePrimary=kTRUE ;
-                      break ;
-                   }
-                 }//end of loop over clusters
-                  //No cluster in this region
-                  if(fakePrimary)
-                   FillPIDHistograms("hMCGammaPi0MisFakePrim",p);
-                 else
-                   FillPIDHistograms("hMCGammaPi0MisOther",p);
-                 
+               if(!isPartnerLost){ //Reason not found!!!!!                               
+                 FillPIDHistograms("hMCDecWMisPartnOther",p);
+               }
+               else{//Sum of all missed partners
+                 FillPIDHistograms("hMCDecWMisPartnAll",p);
                }
              }//Partner - photon
              else{//partner not photon
-               FillPIDHistograms("hMCGammaPi0MisNPhot",p);                
+               FillPIDHistograms("hMCDecWMisPartnNPhot",p);                
              }
-           }
-         }
-       }
-      }
-    } //PHOS clusters 
-   
-   
-   //Fill histograms with all clusters fake tagging
-   for(Int_t i=0;i<n-1;i++){
-     AliAODPWG4Particle *p = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(i));
-
-     Int_t ipartner=-999 ; // this will be partner if this cluster from pi0 decay
-     //Look what particle left vertex
-     Int_t iparent=p->GetCaloLabel(1); //Particle left vertex
-     TParticle * parent =fStack->Particle(iparent); 
-     if(parent){       
-       Int_t grandpaPDG=parent->GetPdgCode() ;
-       if(grandpaPDG==22){
-         Int_t igrandpa =parent->GetFirstMother();
-         if(igrandpa>-1){
-           TParticle * decay=fStack->Particle(igrandpa) ;
-          Int_t decayPDG=decay->GetPdgCode() ;
-           if(decayPDG==111){
-            //Dalitz decay
-            if(decay->GetNDaughters()==2){     
-              ipartner = decay->GetFirstDaughter(); 
-              if(ipartner==iparent){ //look other
-                 ipartner = decay->GetLastDaughter(); 
-              }
-              if(ipartner==-1) //no partner
-                 ipartner=-999 ;
-            }
-          }
-        }
-       }
-     }
-     for(Int_t j=i+1;j<n;j++){
-       AliAODPWG4Particle *p2 = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(j));
-       if(p2->GetCaloLabel(1)!=ipartner){ //partner
-         Double_t invMass = p->GetPairMass(p2);      
-        if(IsInPi0Band(invMass,p->Pt(),2)){
-             FillPIDHistograms("hMCAllFakeTagged",p) ;
-        }
-        if(IsInPi0Band(invMass,p2->Pt(),2)){
-             FillPIDHistograms("hMCAllFakeTagged",p2) ;
-         }
-       }
-     }
-   } 
+             
+           }//Partner not reconstructed
+         }//Partner in stack
+       }//photon from pi0 decay
+      }//photon
+    } //PHOS clusters    
    
 }
+    
 //________________________________________________
 void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
   //Fill all necessary histograms
@@ -1030,18 +1066,18 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
   //Invariant Mass analysis
   const Int_t n=fPHOSEvent->GetEntriesFast() ;
   for(Int_t i=0;i<n-1;i++){
-    AliAODPWG4Particle *p1 = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(i));
+    AliCaloPhoton *p1 = static_cast<AliCaloPhoton*>(fPHOSEvent->At(i));
     for(Int_t j = i+1 ; j < n ; j++) {
-      AliAODPWG4Particle * p2 = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(j));
+      AliCaloPhoton * p2 = static_cast<AliCaloPhoton*>(fPHOSEvent->At(j));
       
-      Double_t invMass = p1->GetPairMass(p2);   
+      Double_t invMass = (*p1 + *p2).M();   
 
       if((p1->E()>0.1) && (p2->E()>0.1)){
-        FillPIDHistograms("hInvM_Re_Emin1",p1,p2,invMass) ;
+        FillPIDHistograms("hInvM_Re_Emin1",p1,p2,invMass,kTRUE) ;
         if((p1->E()>0.2) && (p2->E()>0.2)){
-          FillPIDHistograms("hInvM_Re_Emin2",p1,p2,invMass) ;
+          FillPIDHistograms("hInvM_Re_Emin2",p1,p2,invMass,kTRUE) ;
           if((p1->E()>0.3) && (p2->E()>0.3)){
-            FillPIDHistograms("hInvM_Re_Emin3",p1,p2,invMass) ;
+            FillPIDHistograms("hInvM_Re_Emin3",p1,p2,invMass,kTRUE) ;
          }
        }
       }
@@ -1088,7 +1124,7 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
          }
        }
       }
-      if(IsSamePi0(p1,p2)){
+      if(IsSameParent(p1,p2)==111){
         FillPIDHistograms("hMC_InvM_Re",p1,invMass) ;
         FillPIDHistograms("hMC_InvM_Re",p2,invMass) ;
         if(TestPID(3, p2)){
@@ -1106,7 +1142,7 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
       for(Int_t eminType=0; eminType<3; eminType++){
         if(p2->E()>0.1*(eminType+1)){
          //Set corresponding bit
-         Double_t nsigma = IsInPi0Band(invMass,p1->Pt(),eminType) ; //in band with n sigmas
+         Double_t nsigma = IsInPi0Band(invMass,p1->Pt()) ; //in band with n sigmas
          for(Int_t isigma=0; isigma<3; isigma++){
            if(nsigma<1+isigma){
              tag1|= (1 << (3*eminType+isigma)) ;
@@ -1116,12 +1152,12 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
          }
        }
       }
-      p1->SetTag(tag1) ;
+      p1->SetTagInfo(tag1) ;
       Int_t tag2=0 ;
       for(Int_t eminType=0; eminType<3; eminType++){
         if(p1->E()>0.1*(eminType+1)){
          //Set corresponding bit
-         Double_t nsigma = IsInPi0Band(invMass,p2->Pt(),eminType) ; //in band with n sigmas
+         Double_t nsigma = IsInPi0Band(invMass,p2->Pt()) ; //in band with n sigmas
          for(Int_t isigma=0; isigma<3; isigma++){
            if(nsigma<1+isigma){
              tag2|= (1 << (3*eminType+isigma)) ;
@@ -1131,17 +1167,17 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
          }
        }
       }
-      p2->SetTag(tag2) ;
+      p2->SetTagInfo(tag2) ;
       
       if(tag1 & (1<<7)){ //2 sigma, Emin=0.3: default tagging
         if(p1->IsTagged()){//Multiple tagging
-          FillHistogram(Form("hTaggedMult_cent%d",fCentBin),p1->Pt());
+          FillHistogram(Form("hTaggedMult_cent%d",fCentBin),p1->Pt(),p1->GetWeight());
         }  
         p1->SetTagged(kTRUE) ;
       }
       if(tag2 & (1<<7)){ //2 sigma, Emin=0.3: default tagging
         if(p2->IsTagged()){//Multiple tagging
-          FillHistogram(Form("hTaggedMult_cent%d",fCentBin),p2->Pt());
+          FillHistogram(Form("hTaggedMult_cent%d",fCentBin),p2->Pt(),p2->GetWeight());
         }  
         p2->SetTagged(kTRUE) ;
       }      
@@ -1152,9 +1188,9 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
   
   //Single particle histgams
   for(Int_t i=0;i<n;i++){
-    AliAODPWG4Particle *p = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(i));
+    AliCaloPhoton *p = static_cast<AliCaloPhoton*>(fPHOSEvent->At(i));
 
-    Int_t isolation = p->GetBtag();
+    Int_t isolation = p->GetIsolationTag();
 
     //Inclusive spectra
     FillPIDHistograms("hPhot",p) ;
@@ -1186,7 +1222,7 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
       //3 Emin cuts
       //Default Emin, 1,2,3 sigmas
       //strict and loose PID cut on partner
-      Int_t tag=p->GetTag() ;
+      Int_t tag=p->GetTagInfo() ;
       for(Int_t ibit=0; ibit<18; ibit++){
         if((tag & (1<<ibit))==0){ 
           FillPIDHistograms(Form("hPhot_nTagged%d_Area1",ibit),p) ;
@@ -1220,19 +1256,19 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
    //Fill Mixed InvMass distributions:
   TIter nextEv(fCurrentMixedList) ;
   for(Int_t i=0;i<n;i++){
-    AliAODPWG4Particle *p1 = static_cast<AliAODPWG4Particle*>(fPHOSEvent->At(i));
+    AliCaloPhoton *p1 = static_cast<AliCaloPhoton*>(fPHOSEvent->At(i));
     while(TClonesArray * event2 = static_cast<TClonesArray*>(nextEv())){
       Int_t nPhotons2 = event2->GetEntriesFast() ;
       for(Int_t j=0; j < nPhotons2 ; j++){
-        AliAODPWG4Particle * p2 = static_cast<AliAODPWG4Particle*>(event2->At(j)) ;
-        Double_t invMass = p1->GetPairMass(p2);
+        AliCaloPhoton * p2 = static_cast<AliCaloPhoton*>(event2->At(j)) ;
+        Double_t invMass = (*p1 + *p2).M();
 
         if((p1->E()>0.1) && (p2->E()>0.1)){
-          FillPIDHistograms("hInvM_Mi_Emin1",p1,p2,invMass) ;
+          FillPIDHistograms("hInvM_Mi_Emin1",p1,p2,invMass,kFALSE) ;
           if((p1->E())>0.2 && (p2->E()>0.2)){
-            FillPIDHistograms("hInvM_Mi_Emin2",p1,p2,invMass) ;
+            FillPIDHistograms("hInvM_Mi_Emin2",p1,p2,invMass,kFALSE) ;
             if((p1->E())>0.3 && (p2->E()>0.3)){
-              FillPIDHistograms("hInvM_Mi_Emin3",p1,p2,invMass) ;
+              FillPIDHistograms("hInvM_Mi_Emin3",p1,p2,invMass,kFALSE) ;
            }
          }
         }
@@ -1282,7 +1318,6 @@ void AliAnalysisTaskTaggedPhotons::FillTaggingHistos(){
       }
     }
   } 
   
 }
 
@@ -1299,41 +1334,35 @@ void AliAnalysisTaskTaggedPhotons::Terminate(Option_t *)
   if (fDebug > 1) Printf("Terminate()");
 }
 //______________________________________________________________________________
-Bool_t AliAnalysisTaskTaggedPhotons::IsInPi0Band(Double_t m, Double_t pt, Int_t /*type*/)const
+Bool_t AliAnalysisTaskTaggedPhotons::IsInPi0Band(Double_t m, Double_t pt)const
 {
   //Parameterization of the pi0 peak region
-//  Double_t mpi0mean =  1.33259e-01 -  2.910e-03 * TMath::Exp(-pt/3.616) ;
   //for LHC13bcdef
   Double_t mpi0mean =  0.13447 - 1.41259e-03 * TMath::Exp(-pt/1.30044) ;  
-//  Double_t mpi0mean = 0.136 ; //fPi0MeanP0 + fPi0MeanP1 * pt + fPi0MeanP2 * pt*pt + fPi0MeanP3 * pt*pt*pt;
 
-//    Double_t mpi0sigma=TMath::Sqrt(4.17927e-03*4.17927e-03+2.81581e-03*2.81581e-03/pt+3.59218e-04*3.59218e-04*pt*pt) ;
-    Double_t mpi0sigma=TMath::Sqrt(5.22245e-03*5.22245e-03 +2.86851e-03*2.86851e-03/pt) + 9.09932e-05*pt ;
+  Double_t mpi0sigma=TMath::Sqrt(5.22245e-03*5.22245e-03 +2.86851e-03*2.86851e-03/pt) + 9.09932e-05*pt ;
  
   return (m>mpi0mean-2*mpi0sigma && m<mpi0mean+2*mpi0sigma) ;
 }
 //______________________________________________________________________________
-Bool_t AliAnalysisTaskTaggedPhotons::IsSamePi0(const AliAODPWG4Particle *p1, const AliAODPWG4Particle *p2)const{
+Int_t AliAnalysisTaskTaggedPhotons::IsSameParent(const AliCaloPhoton *p1, const AliCaloPhoton *p2)const{
   //Looks through parents and finds if there was commont pi0 among ancestors
 
-  if(!fStack)
-    return kFALSE ; //can not say anything
+  if(!fIsMC)
+    return 0 ; //can not say anything
 
-  Int_t prim1 = p1->GetCaloLabel(0);
+  Int_t prim1 = p1->GetPrimary();
   while(prim1!=-1){ 
-    Int_t prim2 = p2->GetCaloLabel(0);
-    while(prim2!=-1){ 
+    Int_t prim2 = p2->GetPrimary();
+    while(prim2!=-1){       
       if(prim1==prim2){
-        if(fStack->Particle(prim1)->GetPdgCode()==111)
-          return kTRUE ;
-        else
-          return kFALSE ;
+       return ((AliAODMCParticle*)fStack->At(prim1))->GetPdgCode() ;
       }
-      prim2=fStack->Particle(prim2)->GetFirstMother() ;
+      prim2=((AliAODMCParticle*)fStack->At(prim2))->GetMother() ;
     }
-    prim1=fStack->Particle(prim1)->GetFirstMother() ;
+    prim1=((AliAODMCParticle*)fStack->At(prim1))->GetMother() ;
   }
-  return kFALSE ;
+  return 0 ;
 }
 //______________________________________________________________________________
 Int_t AliAnalysisTaskTaggedPhotons::GetFiducialArea(const Float_t * position)const{
@@ -1342,13 +1371,10 @@ Int_t AliAnalysisTaskTaggedPhotons::GetFiducialArea(const Float_t * position)con
   TVector3 global1(position) ;
   Int_t relId[4] ;
   fPHOSgeom->GlobalPos2RelId(global1,relId) ;
-  Int_t mod  = relId[0] ;
+//  Int_t mod  = relId[0] ;
   Int_t cellX = relId[2];
   Int_t cellZ = relId[3] ;
 
-  if(fPHOSBadMap[mod] && fPHOSBadMap[mod]->GetBinContent(cellX,cellZ)>0)
-    return 0 ;
-
   //New we are in good channel, 
   //calculate distance to the closest group of bad channels
   const Int_t cut1=10;
@@ -1359,15 +1385,11 @@ Int_t AliAnalysisTaskTaggedPhotons::GetFiducialArea(const Float_t * position)con
   if( cellX<=cut1 ||  cellX>=65-cut1 || cellZ<=cut1 || cellZ>=57-cut1)
     return 1;
 //  //and from large dead area
-//  if(fPHOSBadMap[mod]->Integral(cellX-cut1,cellX+cut1,cellZ-cut1,cellZ+cut1)>0.2*cut1*cut1)
-//    return 1 ;
 //Full configuration
 //    if((mod==3 && cellX<=cut2) || (mod==1 && cellX>=65-cut2) || cellZ<=cut2 || cellZ>=57-cut2)
 //1+3 configuration
   if( cellX<=cut2 || cellX>=65-cut2 || cellZ<=cut2 || cellZ>=57-cut2)
     return 2;
-//  if(fPHOSBadMap[mod]->Integral(cellX-cut2,cellX+cut2,cellZ-cut2,cellZ+cut2)>0.8*cut2*cut2)
-//    return 2 ;
   //Very good channel
   return 3 ;
 
@@ -1377,9 +1399,40 @@ void  AliAnalysisTaskTaggedPhotons::InitGeometry(){
   //Rotation matrixes are set with Tender
   
   if(fPHOSgeom) return ;
-  else
-    fPHOSgeom = AliPHOSGeometry::GetInstance() ;
   
+  
+  fPHOSgeom = AliPHOSGeometry::GetInstance() ;
+  if(!fPHOSgeom){ //Geometry not yet constructed with Tender
+    fPHOSgeom = AliPHOSGeometry::GetInstance("IHEP","");
+
+    AliOADBContainer geomContainer("phosGeo");
+    geomContainer.InitFromFile("$ALICE_ROOT/OADB/PHOS/PHOSGeometry.root","PHOSRotationMatrixes");
+    TObjArray *matrixes = (TObjArray*)geomContainer.GetObject(170000,"PHOSRotationMatrixes");
+    for(Int_t mod=0; mod<5; mod++) {
+      if(!matrixes->At(mod)) continue;
+      fPHOSgeom->SetMisalMatrix(((TGeoHMatrix*)matrixes->At(mod)),mod) ;   
+    }
+  }
+    
+  //Read BadMap for MC simulations
+  Int_t runNumber=196208 ; //LHC13bcdef
+  AliOADBContainer badmapContainer(Form("phosBadMap"));
+  badmapContainer.InitFromFile("$ALICE_ROOT/OADB/PHOS/PHOSBadMaps.root","phosBadMap");
+  TObjArray *maps = (TObjArray*)badmapContainer.GetObject(runNumber,"phosBadMap");
+  if(!maps){
+      AliError("TaggedPhotons: Can not read Bad map\n") ;    
+  }
+  else{
+    AliInfo(Form("TaggedPhotons: Setting PHOS bad map with name %s \n",maps->GetName())) ;
+    for(Int_t mod=0; mod<5;mod++){
+      if(fPHOSBadMap[mod]) 
+        delete fPHOSBadMap[mod] ;
+      TH2I * h = (TH2I*)maps->At(mod) ;      
+      if(h)
+        fPHOSBadMap[mod]=new TH2I(*h) ;
+    }
+  }    
 }
 //_____________________________________________________________________________
 void AliAnalysisTaskTaggedPhotons::FillHistogram(const char * key,Double_t x)const{
@@ -1438,40 +1491,44 @@ void AliAnalysisTaskTaggedPhotons::FillHistogram(const char * key,Double_t x,Dou
   }
 }
 //_____________________________________________________________________________
-void AliAnalysisTaskTaggedPhotons::FillPIDHistograms(const char * name, const AliAODPWG4Particle * p) const{
-
-  FillHistogram(Form("%s_All_cent%d",name,fCentBin),p->Pt()) ;
-  if(p->GetDispBit())
-    FillHistogram(Form("%s_Disp_cent%d",name,fCentBin),p->Pt()) ;
-  if(p->GetChargedBit())
-    FillHistogram(Form("%s_CPV_cent%d",name,fCentBin),p->Pt()) ;
-  if(p->GetDispBit() && p->GetChargedBit()) 
-    FillHistogram(Form("%s_Both_cent%d",name,fCentBin),p->Pt()) ;
+void AliAnalysisTaskTaggedPhotons::FillPIDHistograms(const char * name, const AliCaloPhoton * p) const{
+
+  FillHistogram(Form("%s_All_cent%d",name,fCentBin),p->Pt(),p->GetWeight()) ;
+  if(p->IsDispOK())
+    FillHistogram(Form("%s_Disp_cent%d",name,fCentBin),p->Pt(),p->GetWeight()) ;
+  if(p->IsCPVOK())
+    FillHistogram(Form("%s_CPV_cent%d",name,fCentBin),p->Pt(),p->GetWeight()) ;
+  if(p->IsDispOK() && p->IsCPVOK()) 
+    FillHistogram(Form("%s_Both_cent%d",name,fCentBin),p->Pt(),p->GetWeight()) ;
   
 }
 //_____________________________________________________________________________
-void AliAnalysisTaskTaggedPhotons::FillPIDHistograms(const char * name, const AliAODPWG4Particle * p,Double_t x) const{
-
-  FillHistogram(Form("%s_All_cent%d",name,fCentBin),x,p->Pt()) ;
-  if(p->GetDispBit())
-    FillHistogram(Form("%s_Disp_cent%d",name,fCentBin),x,p->Pt()) ;
-  if(p->GetChargedBit())
-    FillHistogram(Form("%s_CPV_cent%d",name,fCentBin),x,p->Pt()) ;
-  if(p->GetDispBit() && p->GetChargedBit()) 
-    FillHistogram(Form("%s_Both_cent%d",name,fCentBin),x,p->Pt()) ;
+void AliAnalysisTaskTaggedPhotons::FillPIDHistograms(const char * name, const AliCaloPhoton * p,Double_t x) const{
+
+  FillHistogram(Form("%s_All_cent%d",name,fCentBin),x,p->Pt(),p->GetWeight()) ;
+  if(p->IsDispOK())
+    FillHistogram(Form("%s_Disp_cent%d",name,fCentBin),x,p->Pt(),p->GetWeight()) ;
+  if(p->IsCPVOK())
+    FillHistogram(Form("%s_CPV_cent%d",name,fCentBin),x,p->Pt(),p->GetWeight()) ;
+  if(p->IsDispOK() && p->IsCPVOK()) 
+    FillHistogram(Form("%s_Both_cent%d",name,fCentBin),x,p->Pt(),p->GetWeight()) ;
   
 }
 //_____________________________________________________________________________
-void AliAnalysisTaskTaggedPhotons::FillPIDHistograms(const char * name, const AliAODPWG4Particle * p1,const AliAODPWG4Particle * p2,Double_t x) const{
-
-  Double_t ptPi = (*(p1->Momentum()) + *(p2->Momentum())).Pt() ;
-  FillHistogram(Form("%s_All_cent%d",name,fCentBin),x,ptPi) ;
-  if(p1->GetDispBit() && p2->GetDispBit())
-    FillHistogram(Form("%s_Disp_cent%d",name,fCentBin),x,ptPi) ;
-  if(p1->GetChargedBit() && p2->GetChargedBit())
-    FillHistogram(Form("%s_CPV_cent%d",name,fCentBin),x,ptPi) ;
-  if(p1->GetDispBit() && p1->GetChargedBit() && p2->GetDispBit() && p2->GetChargedBit()) 
-    FillHistogram(Form("%s_Both_cent%d",name,fCentBin),x,ptPi) ;
+void AliAnalysisTaskTaggedPhotons::FillPIDHistograms(const char * name, const AliCaloPhoton * p1,const AliCaloPhoton * p2,Double_t x, Bool_t isRe) const{
+
+  Double_t ptPi = (*p1 + *p2).Pt() ;
+  Double_t w=p1->GetWeight()*p2->GetWeight() ;
+  if(isRe)
+    if(IsSameParent(p1,p2)>0)
+      w=p1->GetWeight() ;
+  FillHistogram(Form("%s_All_cent%d",name,fCentBin),x,ptPi,w) ;
+  if(p1->IsDispOK() && p2->IsDispOK())
+    FillHistogram(Form("%s_Disp_cent%d",name,fCentBin),x,ptPi,w) ;
+  if(p1->IsCPVOK() && p2->IsCPVOK())
+    FillHistogram(Form("%s_CPV_cent%d",name,fCentBin),x,ptPi,w) ;
+  if(p1->IsDispOK() && p1->IsCPVOK() && p2->IsDispOK() && p2->IsCPVOK()) 
+    FillHistogram(Form("%s_Both_cent%d",name,fCentBin),x,ptPi,w) ;
   
 }
 //_____________________________________________________________________________
@@ -1514,7 +1571,7 @@ Int_t AliAnalysisTaskTaggedPhotons::EvalIsolation(TLorentzVector * ph){
 
    Int_t n=fTrackEvent->GetEntriesFast() ;
    for(Int_t itr=0; itr<n; itr++){
-     AliAODPWG4Particle * track = (AliAODPWG4Particle*)fTrackEvent->At(itr) ;
+     AliCaloPhoton * track = (AliCaloPhoton*)fTrackEvent->At(itr) ;
          
      Double_t deleta = etaTrig - track->Eta() ;
      Double_t delphi = phiTrig - track->Phi() ;      
@@ -1556,20 +1613,71 @@ Int_t AliAnalysisTaskTaggedPhotons::EvalIsolation(TLorentzVector * ph){
     return isolation ;             
 }
 //_________________________________________________________________________________
-Bool_t AliAnalysisTaskTaggedPhotons::TestPID(Int_t iPID, AliAODPWG4Particle* part){
+Bool_t AliAnalysisTaskTaggedPhotons::TestPID(Int_t iPID, AliCaloPhoton* part){
 //   //Checks PID of particle
   
   if(!part) return kFALSE ;
   if(iPID==0) return kTRUE ;
-  if(iPID==1) return part->GetDispBit() ;
-  if(iPID==2) return part->GetChargedBit() ;
-  if(iPID==3) return part->GetDispBit() && part->GetChargedBit() ;
+  if(iPID==1) return part->IsDispOK() ;
+  if(iPID==2) return part->IsCPVOK() ;
+  if(iPID==3) return part->IsDispOK() && part->IsCPVOK() ;
   return kFALSE ;
     
 }
 //_________________________________________________________________________________
-Double_t AliAnalysisTaskTaggedPhotons::PrimaryParticleWeight(TParticle * /*particle*/){
-  return 1;
+Double_t AliAnalysisTaskTaggedPhotons::PrimaryParticleWeight(AliAODMCParticle * particle){
+  if(!fIsMC)  //This is real data
+     return 1;
+  //Classify parent at vertex
+  //Introduce for eta and pi0 weights   
+
+  Double_t r2=particle->Xv()*particle->Xv()+particle->Yv()*particle->Yv() ;
+  Int_t mother = particle->GetMother() ;
+  while(mother>-1){
+    if(r2<1.)
+      break ;
+    particle = (AliAODMCParticle*) fStack->At(mother);
+    mother = particle->GetMother() ;
+    r2=particle->Xv()*particle->Xv()+particle->Yv()*particle->Yv() ;
+  }
+  
+  //Particle within 1 cm from the virtex
+  Int_t pdg = particle->GetPdgCode() ;
+  Double_t x = particle->Pt() ;
+  mother = particle->GetMother() ;
+  while(TMath::Abs(pdg)<100){//gamma, electrons, muons 
+    if(mother>-1){
+      AliAODMCParticle * tmpP=(AliAODMCParticle*)fStack->At(mother) ;
+      pdg=tmpP->GetPdgCode() ;
+      x = tmpP->Pt() ;
+      mother = tmpP->GetMother() ;
+    }
+    else{ //direct photon/electron....
+      return 1.; 
+    }
+  } 
+  if(pdg == 111){
+  //Pi0
+     if(x<1) return 1. ;
+     else return fWeightParamPi0[0]*TMath::Power(x,fWeightParamPi0[1])*
+       (1.+fWeightParamPi0[2]*x+fWeightParamPi0[3]*x*x)/
+       (1.+fWeightParamPi0[4]*x+fWeightParamPi0[5]*x*x) ;
+  }
+  return 1. ;
+}
+//_________________________________________________________________________________
+void AliAnalysisTaskTaggedPhotons::SetPi0WeightParameters(TArrayD * ar){
+  for(Int_t i=0; i<6; i++){ //Array range
+    if(ar->GetSize()>i) fWeightParamPi0[i]=ar->At(i) ;
+    else fWeightParamPi0[i]=0.;
+  }
+  //normalize to obtain smooth transition at 1 GeV
+  Double_t x=1. ;
+  fWeightParamPi0[0]=1./(TMath::Power(x,fWeightParamPi0[1])*
+       (1.+fWeightParamPi0[2]*x+fWeightParamPi0[3]*x*x)/
+       (1.+fWeightParamPi0[4]*x+fWeightParamPi0[5]*x*x)) ;
+  
   
 }
 //___________________________________________________________________________
@@ -1587,12 +1695,12 @@ Int_t AliAnalysisTaskTaggedPhotons::FindPrimary(AliVCluster*clu,  Bool_t&sure){
   Bool_t hasGamma=kFALSE ;
   Double_t eMax=0. ;
   for(Int_t i=0;  i<n;  i++){
-    TParticle*  p=  fStack->Particle(clu->GetLabelAt(i)) ;
+    AliAODMCParticle*  p=  (AliAODMCParticle*)fStack->At(clu->GetLabelAt(i)) ;
     Int_t pdg = p->GetPdgCode() ;
     if(pdg==22){
       hasGamma=kTRUE ;
-      if(p->Energy()>eMax){
-       eMax=p->Energy();
+      if(p->E()>eMax){
+       eMax=p->E();
       }
     }
   }
@@ -1602,10 +1710,10 @@ Int_t AliAnalysisTaskTaggedPhotons::FindPrimary(AliVCluster*clu,  Bool_t&sure){
   }  
   
   for(Int_t i=0;  i<n;  i++){
-    TParticle*  p=  fStack->Particle(clu->GetLabelAt(i)) ;
+    AliAODMCParticle*  p= (AliAODMCParticle*) fStack->At(clu->GetLabelAt(i)) ;
     Int_t pdg = p->GetPdgCode() ;
     if(pdg==22  ||  pdg==11 || pdg == -11){
-      if(p->Energy()>emFraction*clu->E()){
+      if(p->E()>emFraction*clu->E()){
        sure=kTRUE ;
        return clu->GetLabelAt(i);
       }
@@ -1614,7 +1722,7 @@ Int_t AliAnalysisTaskTaggedPhotons::FindPrimary(AliVCluster*clu,  Bool_t&sure){
 
   Double_t*  Ekin=  new  Double_t[n] ;
   for(Int_t i=0;  i<n;  i++){
-    TParticle*  p=  fStack->Particle(clu->GetLabelAt(i)) ;
+    AliAODMCParticle*  p=(AliAODMCParticle*) fStack->At(clu->GetLabelAt(i)) ;
     Ekin[i]=p->P() ;  // estimate of kinetic energy
     if(p->GetPdgCode()==-2212  ||  p->GetPdgCode()==-2112){
       Ekin[i]+=1.8  ;  //due to annihilation
@@ -1637,5 +1745,21 @@ Int_t AliAnalysisTaskTaggedPhotons::FindPrimary(AliVCluster*clu,  Bool_t&sure){
   delete[]  Ekin;
   return  clu->GetLabelAt(iMax) ;
 }
+//___________________________________________________________________________
+Bool_t AliAnalysisTaskTaggedPhotons::IsGoodChannel(Int_t mod, Int_t ix, Int_t iz)
+{
+  //Check if this channel belogs to the good ones
+  
+  if(mod>4 || mod<1){
+    return kTRUE ;
+  }
+  if(!fPHOSBadMap[mod]){
+     return kTRUE ;
+  }
+  if(fPHOSBadMap[mod]->GetBinContent(ix,iz)>0)
+    return kFALSE ;
+  else
+    return kTRUE ;
+}
 
 
index 5b3671ba61df53ff6f81a5f0f994b08f50756f3d..71c6880491406d3acf83c07267c589e186b215be 100644 (file)
 //////////////////////////////////////////////////////////////////////////////
 
 #include "AliAnalysisTaskSE.h"  
-
-class AliStack ; 
+class AliAnalysisUtils ;
 class AliAODEvent ; 
 class THashList ; 
 class TH2I ;
 class AliPHOSGeometry;
-class AliAODPWG4Particle;
+class AliCaloPhoton;
+class AliAODMCParticle ;
 class AliVCluster ;
 class AliTriggerAnalysis ;
 class TParticle ;
@@ -39,59 +39,58 @@ public:
   virtual void UserExec(Option_t * opt = "") ;
   virtual void Terminate(Option_t * opt = "") ;
 
-  void SetPHOSBadMap(Int_t mod,TH2I * h)
-  {
-    if(fPHOSBadMap[mod]) delete fPHOSBadMap[mod] ;
-    fPHOSBadMap[mod]=new TH2I(*h) ;
-    printf("Set %s \n",fPHOSBadMap[mod]->GetName());
-  }
+  void SetTrigger(Bool_t isPHOSTrig){fIsMB=isPHOSTrig;}
+  void SetMC(Bool_t isMC=kTRUE){fIsMC=isMC;}
+  void SetPi0WeightParameters(TArrayD * ar) ;
 
 protected:
   void    FillMCHistos() ;
   void    FillTaggingHistos() ;
   Int_t   GetFiducialArea(const Float_t * pos)const ; //what kind of fiducial area hit the photon
-  Bool_t  IsSamePi0(const AliAODPWG4Particle *p1, const AliAODPWG4Particle *p2) const; //Check MC genealogy
-  Bool_t  IsInPi0Band(Double_t m, Double_t pt,Int_t type)const; //Check if invariant mass is within pi0 peak
+  Int_t   IsSameParent(const AliCaloPhoton *p1, const AliCaloPhoton *p2) const; //Check MC genealogy; return PDG of parent
+  Bool_t  IsGoodChannel(Int_t mod, Int_t ix, Int_t iz) ;
+  Bool_t  IsInPi0Band(Double_t m, Double_t pt)const; //Check if invariant mass is within pi0 peak
   Bool_t  TestDisp(Double_t l0, Double_t l1, Double_t e)const  ;
   Bool_t  TestTOF(Double_t /*t*/,Double_t /*en*/)const{return kTRUE;} 
   Bool_t  TestCharged(Double_t dr,Double_t en)const ;
   void    InitGeometry() ;  //read reotation matrixes from AOD/AOD
   Int_t   EvalIsolation(TLorentzVector * ph) ;
   Bool_t  TestLambda(Double_t pt,Double_t l1,Double_t l2) ;
-  Bool_t  TestPID(Int_t iPID, AliAODPWG4Particle* part) ;
-  Double_t PrimaryParticleWeight(TParticle * particle) ;
+  Bool_t  TestPID(Int_t iPID, AliCaloPhoton* part) ;
+  Double_t PrimaryParticleWeight(AliAODMCParticle * particle) ;
   Int_t   FindPrimary(AliVCluster*, Bool_t&);
   void FillHistogram(const char * key,Double_t x) const ; //Fill 1D histogram witn name key
   void FillHistogram(const char * key,Double_t x, Double_t y) const ; //Fill 2D histogram witn name key
   void FillHistogram(const char * key,Double_t x, Double_t y, Double_t z) const ; //Fill 3D histogram witn name key
-  void FillPIDHistograms(const char * name, const AliAODPWG4Particle * p) const ;
-  void FillPIDHistograms(const char * name, const AliAODPWG4Particle * p ,Double_t y) const ;
-  void FillPIDHistograms(const char * name, const AliAODPWG4Particle * p , const AliAODPWG4Particle * p2,Double_t y) const ;
+  void FillPIDHistograms(const char * name, const AliCaloPhoton * p) const ;
+  void FillPIDHistograms(const char * name, const AliCaloPhoton * p ,Double_t y) const ;
+  void FillPIDHistograms(const char * name, const AliCaloPhoton * p , const AliCaloPhoton * p2,Double_t y, Bool_t isReal) const ;
 
 private:
 
   AliPHOSGeometry  *fPHOSgeom;   //!PHOS geometry
   THashList *   fOutputContainer ;   //! List of output histograms
-  AliStack        *fStack ;      //!Pointer to MC stack
+  TClonesArray *fStack ;             //!Pointer to MC stack
   TClonesArray * fTrackEvent ;   //!List of tracks in the event
   TClonesArray * fPHOSEvent ;    //!List of tracks in the event
   TList   * fPHOSEvents[1][5] ; //!Previous events for mixing
   TList   * fCurrentMixedList;   //! list of previous evetns for given centrality
   AliTriggerAnalysis * fTriggerAnalysis ; //!
+  AliAnalysisUtils * fUtils ;
  
   //Fiducial area parameters
   Float_t fZmax ;               //Rectangular
   Float_t fZmin ;               //area
   Float_t fPhimax ;             //covered by
   Float_t fPhimin ;             //full calorimeter
-
+  Double_t fWeightParamPi0[6] ; //Parameters to calculate weights
   //
   Double_t fCentrality;
   Int_t fCentBin ;
-  
-  // Histograms
+  Bool_t fIsMB ; //which trigger to use
+  Bool_t fIsMC ; //Is this is MC
   TH2I * fPHOSBadMap[6] ; 
-  
+    
   ClassDef(AliAnalysisTaskTaggedPhotons, 2);   // a PHOS photon analysis task 
 };
 #endif // ALIANALYSISTASKTAGGEDPHOTONS_H
index d43b0e480aec3ce1760310fbe03564178941221f..bebba4c589948f82a2bb53ae39562646febee57b 100644 (file)
@@ -36,23 +36,27 @@ AliCaloPhoton::AliCaloPhoton() :
   fIsIsolated(0),
   fIsPhoton(0),
   fUnfolded(0),
-  fX(0.),
-  fY(0.),
-  fZ(0.),
-  fLambda0(0.),
-  fLambda1(0.),
-  fTime(0.),
   fModule(0),
   fBC(0),
   fBadDist(0),
   fNCells(0),
+  fFiducialArea(0),
   fPi0Decayflag(0),
   fPi0Id(0),
   fConverted(0),
   fConvertedPartner(0),
+  fIsolationTag(0),
+  fTagInfo(0),
+  fPrimary(-1),
+  fPrimaryAtVertex(-1),
+  fX(0.),
+  fY(0.),
+  fZ(0.),
+  fLambda0(0.),
+  fLambda1(0.),
+  fTime(0.),
   fPartnerPt(0),
   fWeight(1.),
-  fPrimary(0),
   fCluster(0x0)
 {
 
@@ -73,23 +77,27 @@ AliCaloPhoton::AliCaloPhoton(Double_t px,Double_t py,Double_t pz,Double_t energy
   fIsIsolated(0),
   fIsPhoton(0),
   fUnfolded(0),
-  fX(0.),
-  fY(0.),
-  fZ(0.),
-  fLambda0(0.),
-  fLambda1(0.),
-  fTime(0.),
   fModule(0),
   fBC(0),
   fBadDist(0),
   fNCells(0),
+  fFiducialArea(0),
   fPi0Decayflag(0),
   fPi0Id(0),
   fConverted(0),
   fConvertedPartner(0),
+  fIsolationTag(0),
+  fTagInfo(0),
+  fPrimary(-1),
+  fPrimaryAtVertex(-1),
+  fX(0.),
+  fY(0.),
+  fZ(0.),
+  fLambda0(0.),
+  fLambda1(0.),
+  fTime(0.),
   fPartnerPt(0),
   fWeight(1.),
-  fPrimary(0),
   fCluster(0x0)
 {
   
index d49baee635c90f52f70024cd381a201f7efb13de..abcc75ba190bbe988c97fa2a33362357091ec0e9 100644 (file)
@@ -26,80 +26,87 @@ class AliCaloPhoton :public TLorentzVector{
   ~AliCaloPhoton(){} 
 
    const TLorentzVector * GetMomV2()const{return &fMomV2;}
-   Double_t EMCx(void)const {return fX;}
-   Double_t EMCy(void)const {return fY;}
-   Double_t EMCz(void)const {return fZ;}
-   Int_t    Module(void)const{return fModule;}
-   Int_t    GetBC()const{return fBC;}
-   Int_t    DistToBad()const  {return fBadDist ;}
-   Int_t    GetNCells()const { return fNCells ;} 
-   Double_t GetTime(void) const {return fTime ;}
-   void SetTime(Double_t t) {fTime=t ;}
+   Int_t    DistToBad() const {return fBadDist ;}
+   Double_t EMCx(void)  const {return fX;}
+   Double_t EMCy(void)  const {return fY;}
+   Double_t EMCz(void)  const {return fZ;}
+   Int_t    Module(void)const {return fModule;}
+   Int_t    GetBC(void) const {return fBC;}
+   Int_t    GetFiducialArea(void) const {return fFiducialArea ;}
+   Int_t    GetIsolationTag(void) const {return fIsolationTag ;}
+   Double_t GetLambda1(void) const {return fLambda0;}
+   Double_t GetLambda2(void) const {return fLambda1;}
+   Int_t    GetNCells() const { return fNCells ;} 
+   Int_t    GetPrimary()const {return fPrimary;}
+   Int_t    GetPrimaryAtVertex()  const {return fPrimaryAtVertex;}
+   Double_t GetPartnerPt(void)    const {return fPartnerPt;}  
+   Int_t    GetTagInfo(void) const {return fTagInfo;}
+   Double_t GetTime(void)    const {return fTime ;}
+   Double_t GetWeight(void)  const {return fWeight;}
 
-   Bool_t   IsDispOK(void)const {return fDisp;}
-   Bool_t   IsDisp2OK(void)const {return fDisp2;} //stricter cut
-   Bool_t   IsTOFOK(void)const {return fTof;}
-   Bool_t   IsCPVOK(void)const {return fCpv;}
-   Bool_t   IsCPV2OK(void)const {return fCpv2;}
-   Bool_t   IsIsolated(void)const{return fIsIsolated ;}
-   Bool_t   IsTagged(void) const{return fIsTagged ;} //check if this photon is tagged
-   Bool_t   IsTagged(Int_t i,Int_t k) const{return fIsTagged_reg[i][k] ;} //check if this photon is tagged
+   Int_t    IsConvertedPartner() const { if(fConvertedPartner == 1) return 1; else return 0; }
+   Bool_t   IsCPVOK(void)   const {return fCpv;}
+   Bool_t   IsCPV2OK(void)  const {return fCpv2;}
+   Bool_t   IsDispOK(void)  const {return fDisp;}
+   Bool_t   IsDisp2OK(void) const {return fDisp2;} //stricter cut
+   Bool_t   IsIsolated(void)const {return fIsIsolated ;}
+   Bool_t   IsPhoton() const {return fIsPhoton ;} //check if this particle is indeed photon (this bit is set with MC stack info
    Bool_t   IsPIDOK(const Int_t ipid) const ;
-   Bool_t   IsPhoton()const {return fIsPhoton ;} //check if this particle is indeed photon (this bit is set with MC stack info
-   Bool_t   IsntUnfolded()const{return fUnfolded;}
-   Int_t    IsConvertedPartner(){ if(fConvertedPartner == 1) return 1; else return 0; }
-   Bool_t   IsTrig(void)const{ return fTrig ; }
-   Double_t GetWeight(void){return fWeight;}
+   Bool_t   IsTagged(void)  const {return fIsTagged ;} //check if this photon is tagged
+   Bool_t   IsTagged(Int_t i,Int_t k) const {return fIsTagged_reg[i][k] ;} //check if this photon is tagged
+   Bool_t   IsTOFOK(void)   const {return fTof;}
+   Bool_t   IsTrig(void)    const{ return fTrig ; }
+   Bool_t   IsntUnfolded(void)const{return fUnfolded;}
 
    //ConvertedPair bit is set for events when photon's FirstMother is not e+/e- but pi0, but after pi0 decayed
 //there is conversion of one or both of the photons and results of their conversion are registered by PHOS.
 //This process is marked as tagged photons but actually the energy of photons is changed and pi0 can't be
 //correctly found.
-   Int_t IsConverted(){ if(fConverted == 1) return 1; else return 0; }
+   Int_t IsConverted(void) const { if(fConverted == 1) return 1; else return 0; }
 //Converted bit is set if this photon originate from e+/e- conversion on medium
-   Int_t IsPi0Decay(){ if(fPi0Decayflag == 1) return 1; else return 0; }
+   Int_t IsPi0Decay(void) const { if(fPi0Decayflag == 1) return 1; else return 0; }
 //Pi0Decayflag is set if this photon originate from pi0 decay
    void Pi0Decay(Int_t flag){ fPi0Decayflag=flag; }
    void Pi0Id(Int_t id){ fPi0Id=id; }
 //Id of pi0 from which this photon is decayed (to check if 2 photons originate from the same pi0 or not)
 
+   Int_t ComparePi0Ids( AliCaloPhoton *phot) { if(AliCaloPhoton::fPi0Id!=0 && (*phot).fPi0Id !=0 && AliCaloPhoton::fPi0Id == (*phot).fPi0Id) return 1; else return 0; }
 
-   void SetMomV2(TLorentzVector * p){fMomV2=(*p);}
-   void SetNCells(Int_t n){fNCells=n;}
+   void SetBC(Int_t bc){fBC = bc;}
+   void SetCluster(AliVCluster* cluster) { fCluster = cluster; }
    void SetConverted(Int_t flag){ fConverted=flag; }
-   Int_t ComparePi0Ids( AliCaloPhoton *phot) { if(AliCaloPhoton::fPi0Id!=0 && (*phot).fPi0Id !=0 && AliCaloPhoton::fPi0Id == (*phot).fPi0Id) return 1; else return 0; }
    void SetConvertedPartner(Int_t flag){ fConvertedPartner=flag; }
-   void SetPhoton(Int_t flag){ fIsPhoton=flag; }
-   void SetDispBit(Bool_t chi2){fDisp = chi2 ;} 
-   void SetDisp2Bit(Bool_t chi2){fDisp2 = chi2 ;} 
-   void SetTOFBit(Bool_t tof){fTof = tof ;} 
    void SetCPVBit(Bool_t cpv){fCpv = cpv; }
    void SetCPV2Bit(Bool_t cpv){fCpv2 = cpv; }
-   void SetPCAPID(Bool_t pca){fPCA = pca;}
-   void SetTrig(Bool_t trig){fTrig=trig;}
+   void SetDispBit(Bool_t chi2){fDisp = chi2 ;} 
+   void SetDisp2Bit(Bool_t chi2){fDisp2 = chi2 ;} 
+   void SetDistToBad(Int_t dist){fBadDist=dist;} 
    void SetEMCx(Double_t x){fX = x ;} 
    void SetEMCy(Double_t y){fY = y ;} 
    void SetEMCz(Double_t z){fZ = z ;} 
-   void SetModule(Int_t mod){fModule = mod ;} 
-   void SetBC(Int_t bc){fBC = bc;}
-   void SetDistToBad(Int_t dist){fBadDist=dist;} 
-   void SetTagged(Bool_t bit){fIsTagged=bit;}
-   void SetTagged(Bool_t bit,Int_t i,Int_t k){fIsTagged_reg[i][k]=bit;}
+   void SetFiducialArea(Int_t a){fFiducialArea=a ;}
+   void SetIsolationTag(Int_t tag){fIsolationTag=tag ;}
    void SetIsolated(Bool_t bit){fIsIsolated=bit;}
+   void SetLambdas(Double_t l1,Double_t l2){fLambda0=l1; fLambda1=l2;}
+   void SetModule(Int_t mod){fModule = mod ;} 
+   void SetMomV2(TLorentzVector * p){fMomV2=(*p);}
+   void SetNCells(Int_t n){fNCells=n;}
    void SetPartnerPt(Double_t pt){fPartnerPt=pt;}
+   void SetPCAPID(Bool_t pca){fPCA = pca;}
+   void SetPhoton(Int_t flag){ fIsPhoton=flag; }
    void SetPrimary(Int_t label){fPrimary=label;}
+   void SetPrimaryAtVertex(Int_t label){fPrimaryAtVertex=label;}
+   void SetTagged(Bool_t bit){fIsTagged=bit;}
+   void SetTagged(Bool_t bit,Int_t i,Int_t k){fIsTagged_reg[i][k]=bit;}
+   void SetTagInfo(Int_t bits){fTagInfo=bits;}
+   void SetTime(Double_t t) {fTime=t ;}
+   void SetTOFBit(Bool_t tof){fTof = tof ;} 
+   void SetTrig(Bool_t trig){fTrig=trig;}
    void SetUnfolded(Bool_t wasNotUnfolded){fUnfolded=wasNotUnfolded;} 
    void SetWeight(Double_t w){fWeight=w;}
 
-   void SetCluster(AliVCluster* cluster) { fCluster = cluster; }
    AliVCluster* GetCluster() { return fCluster; }
 
-   void SetLambdas(Double_t l1,Double_t l2){fLambda0=l1; fLambda1=l2;}
-   Double_t GetLambda1(void){return fLambda0;}
-   Double_t GetLambda2(void){return fLambda1;}
-
-   Int_t GetPrimary(){return fPrimary;}
-   Double_t GetPartnerPt(){return fPartnerPt;}  
 private:
   AliCaloPhoton(const AliCaloPhoton&); // not implemented
   AliCaloPhoton& operator=(const AliCaloPhoton&);
@@ -117,26 +124,30 @@ private:
   Bool_t    fIsIsolated ; //it is isolated
   Bool_t    fIsPhoton; //If it is really photon or not
   Bool_t    fUnfolded;  //True if was not unfolded
-  Double_t  fX ;        //Cluster coordinates in ALICE ref system 
-  Double_t  fY ;        //Cluster coordinates in ALICE ref system
-  Double_t  fZ ;        //Cluster coordinates in ALICE ref system
-  Double_t  fLambda0 ;  //Short and 
-  Double_t  fLambda1 ;  //Long dispersion axis
-  Double_t  fTime ;     //time of the cluster
   Int_t     fModule ;   //Module number
   Int_t     fBC ;       //Bunch crossing number (BC=0 is main-main collision)
   Int_t     fBadDist ;  //Distance to bad module in module units
   Int_t     fNCells ;   //Number of cells in cluster
+  Int_t     fFiducialArea ; //class of fiducial areas
   Int_t     fPi0Decayflag; //if this photon is from pi0 decay (from simulation)
   Int_t     fPi0Id;
   Int_t     fConverted; //If this photon originated from convertion on material (i.e. its primary is electron)
   Int_t            fConvertedPartner;
+  Int_t     fIsolationTag ;
+  Int_t     fTagInfo ;
+  Int_t     fPrimary;   //Primary entered PHOS
+  Int_t     fPrimaryAtVertex;   //Primary at vertex
+  Double_t  fX ;        //Cluster coordinates in ALICE ref system 
+  Double_t  fY ;        //Cluster coordinates in ALICE ref system
+  Double_t  fZ ;        //Cluster coordinates in ALICE ref system
+  Double_t  fLambda0 ;  //Short and 
+  Double_t  fLambda1 ;  //Long dispersion axis
+  Double_t  fTime ;     //time of the cluster
   Double_t  fPartnerPt;
   Double_t  fWeight ;   //Weight of parent particle
-  Int_t     fPrimary;   //Primary label
   AliVCluster* fCluster; //! Originating Cluster the Photon Candidate is based on
 
-  ClassDef(AliCaloPhoton,6);
+  ClassDef(AliCaloPhoton,7);
 
 };
 
index 0710de7b7c5d6329dc0090de91b9175b2ce98052..ab725a40b97342e5d88d10bdd9ffeddb374bf021 100644 (file)
@@ -105,4 +105,4 @@ string (REPLACE ".cxx" ".h" HDRS "${SRCS}")
 
 set ( DHDR  PWGHFhfeLinkDef.h)
 
-set ( EINCLUDE PWG/muon PWGHF/hfe TPC CORRFW STEER/STEERBase PWG/FLOW/Base PWG/FLOW/Tasks ANALYSIS)
+set ( EINCLUDE EMCAL PWG/muon PWGHF/hfe TPC CORRFW STEER/STEERBase PWG/FLOW/Base PWG/FLOW/Tasks ANALYSIS)
index 662250f33825363f059398e24ffec1aa0a420cbd..c309816cd9dc27ffa9dffd29c295c041a5ac104a 100644 (file)
@@ -19,7 +19,7 @@
        //      Task for Heavy-flavour electron analysis in pPb collisions    //
        //      (+ Electron-Hadron Jetlike Azimuthal Correlation)             //
        //                                                                                                                                        //
-       //              version: March 23, 2014.                                                                      //
+       //              version: May 30, 2014.                                                                //
        //                                                                    //
        //          Authors                                                                               //
        //              Elienos Pereira de Oliveira Filho (epereira@cern.ch)          //
        //include to use reader as Lucile does
 #include "AliCaloTrackAODReader.h"
 #include "AliCaloTrackReader.h"
+#include "AliEMCALRecoUtils.h" //to remove exotics
+#include "AliAODHeader.h"
+#include "AliEMCALGeometry.h"
+
+
+
+       // --- ANALYSIS system ---
+#include "AliCalorimeterUtils.h"
+#include "AliESDEvent.h"
+#include "AliMCEvent.h"
+#include "AliStack.h"
+#include "AliAODPWG4Particle.h"
+#include "AliVCluster.h"
+#include "AliVCaloCells.h"
+#include "AliMixedEvent.h"
+#include "AliAODCaloCluster.h"
+#include "AliOADBContainer.h"
+#include "AliAnalysisManager.h"
+
+       // --- Detector ---
+#include "AliEMCALGeometry.h"
+#include "AliPHOSGeoUtils.h"
 
        //______________________________________________________________________
 
@@ -104,6 +126,7 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA(const char *name)
 ,fCorrelationFlag(0)
 ,fIsMC(0)
 ,fUseEMCal(kFALSE)
+
 ,fUseTrigger(kFALSE)
 ,fUseShowerShapeCut(kFALSE)
 ,fFillBackground(kFALSE)
@@ -136,8 +159,9 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA(const char *name)
 ,fZvtx(0)
 ,fEstimator(0)
 ,fClus(0)
-       //,fClusESD(0)
+//,fClusESD(0)
 ,fNevent(0)
+,fNevent2(0)
 ,fPtElec_Inc(0)
 ,fPtPrim(0)
 ,fPtSec(0)
@@ -181,9 +205,21 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA(const char *name)
 ,fTPCnsigma_phi(0)
 ,fECluster(0)
 ,fECluster_pure(0)
+,fECluster_not_exotic(0)
+,fECluster_not_exotic1(0)
+,fECluster_not_exotic2(0)
+,fECluster_exotic(0)
+,fNCluster_pure(0)
+,fNCluster_pure_aod(0)
+,fNCluster_ECluster(0)
+,fNcells_energy(0)
+,fNcells_energy_elec_selected(0)
+,fNcells_energy_not_exotic(0)
+
 ,fEtaPhi(0)
 ,fEtaPhi_num(0)
 ,fEtaPhi_den(0)
+,fEtaPhi_data(0)
 ,fpt_reco_pt_MC_num(0)
 ,fpt_reco_pt_MC_den(0)
 ,fVtxZ(0)
@@ -193,8 +229,15 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA(const char *name)
 ,fVtxZ_new3(0)
 ,fVtxZ_new4(0)
 
+,fzRes1(0)
+,fzRes2(0)
+,fSPD_track_vtx1(0)
+,fSPD_track_vtx2(0)
+
+
 ,fEtad(0)
 ,fNTracks(0)
+,fTrack_Multi(0)
 ,fNTracks_pt(0)
 ,fNTracks_eta(0)
 ,fNTracks_phi(0)
@@ -290,6 +333,8 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA(const char *name)
 ,fPtMCeta(0)
 ,fPtMCpi02(0)
 ,fPtMCeta2(0)
+,fPtMCpi03(0)
+,fPtMCeta3(0)
 ,fPtMC_EMCal_All(0)
 ,fPtMC_EMCal_Selected(0)
 ,fPtMC_TPC_All(0)
@@ -335,10 +380,21 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA(const char *name)
 ,fEventMixingFlag(0)
 ,fCEtaPhi_Inc_DiHadron(0)
 ,fPtTrigger_Inc(0)
+       //,fEMCALRecoUtils(new AliEMCALRecoUtils)
+       //,fEMCALGeo(0x0)
+       //,fCaloUtils(0x0)
+
+,fBitEGA(0)
+//,fEMCALRecoUtils(0)//exotic
+
 {
                //Named constructor 
                // Define input and output slots here
                // Input slot #0 works with a TChain
+       
+               //exotic
+               //fEMCALRecoUtils  = new AliEMCALRecoUtils();
+       
        DefineInput(0, TChain::Class());
                // Output slot #0 id reserved by the base class for AOD
                // Output slot #1 writes into a TH1 container
@@ -386,6 +442,7 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA()
 ,fClus(0)
        //,fClusESD(0)
 ,fNevent(0)
+,fNevent2(0)
 ,fPtElec_Inc(0)
 ,fPtPrim(0)
 ,fPtSec(0)
@@ -429,9 +486,20 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA()
 ,fTPCnsigma_phi(0)
 ,fECluster(0)
 ,fECluster_pure(0)
+,fECluster_not_exotic(0)
+,fECluster_not_exotic1(0)
+,fECluster_not_exotic2(0)
+,fECluster_exotic(0)
+,fNCluster_pure(0)
+,fNCluster_pure_aod(0)
+,fNCluster_ECluster(0)
+,fNcells_energy(0)
+,fNcells_energy_elec_selected(0)
+,fNcells_energy_not_exotic(0)
 ,fEtaPhi(0)
 ,fEtaPhi_num(0)
 ,fEtaPhi_den(0)
+,fEtaPhi_data(0)
 ,fpt_reco_pt_MC_num(0)
 ,fpt_reco_pt_MC_den(0)
 ,fVtxZ(0)
@@ -441,8 +509,16 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA()
 ,fVtxZ_new3(0)
 ,fVtxZ_new4(0)
 
+,fzRes1(0)
+,fzRes2(0)
+,fSPD_track_vtx1(0)
+,fSPD_track_vtx2(0)
+
+
+
 ,fEtad(0)
 ,fNTracks(0)
+,fTrack_Multi(0)
 ,fNTracks_pt(0)
 ,fNTracks_eta(0)
 ,fNTracks_phi(0)
@@ -538,6 +614,8 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA()
 ,fPtMCeta(0)
 ,fPtMCpi02(0)
 ,fPtMCeta2(0)
+,fPtMCpi03(0)
+,fPtMCeta3(0)
 ,fPtMC_EMCal_All(0)
 ,fPtMC_EMCal_Selected(0)
 ,fPtMC_TPC_All(0)
@@ -583,10 +661,19 @@ AliAnalysisTaskEMCalHFEpA::AliAnalysisTaskEMCalHFEpA()
 ,fEventMixingFlag(0)
 ,fCEtaPhi_Inc_DiHadron(0)
 ,fPtTrigger_Inc(0)
+       //,fEMCALRecoUtils(new AliEMCALRecoUtils)
+       //,fEMCALGeo(0x0)
+       //,fCaloUtils(0x0)
+,fBitEGA(0)
+       //,fEMCALRecoUtils(0)//exotic
 {
                // Constructor
                // Define input and output slots here
                // Input slot #0 works with a TChain
+       
+               //exotic
+               // fEMCALRecoUtils  = new AliEMCALRecoUtils();
+       
        DefineInput(0, TChain::Class());
                // Output slot #0 id reserved by the base class for AOD
                // Output slot #1 writes into a TH1 container
@@ -605,6 +692,7 @@ AliAnalysisTaskEMCalHFEpA::~AliAnalysisTaskEMCalHFEpA()
        delete fPIDqa;
        //Lucile
        //delete reader; 
+       //if(fEMCALRecoUtils)   delete fEMCALRecoUtils ;
 }
 
        //______________________________________________________________________
@@ -659,9 +747,11 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
        
                //Store the number of events
                //Define the histo
-       fNevent = new TH1F("fNevent","Number of Events",15,0,15);
+       fNevent = new TH1F("fNevent","Number of Events",30,0,30);
+       fNevent2 = new TH1F("fNevent2","Number of Events 2",30,0,30);
                //And then, add to the output list
        fOutputList->Add(fNevent);
+       fOutputList->Add(fNevent2);
        
        fpid = new TH1F("fpid","PID flag",5,0,5);
        fOutputList->Add(fpid);
@@ -705,6 +795,7 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
        fShowerShapeCut = new TH2F("fShowerShapeCut","Shower Shape;M02;M20",500,0,1.8,500,0,1.8);
        fEtaPhi_num=new TH2F("fEtaPhi_num","#eta x #phi track;#phi;#eta",200,0.,5,50,-1.,1.);
        fEtaPhi_den=new TH2F("fEtaPhi_den","#eta x #phi track;#phi;#eta",200,0.,5,50,-1.,1.);
+       fEtaPhi_data=new TH2F("fEtaPhi_data","#eta x #phi track;#phi;#eta",200,0.,5,50,-1.,1.);
                
        fpt_reco_pt_MC_num=new TH2F("fpt_reco_pt_MC_num","pt reco x pt MC;pt reco; pt MC",300,0.,30,300,0.,30);
        fpt_reco_pt_MC_den=new TH2F("fpt_reco_pt_MC_den","pt reco x pt MC;pt reco; pt MC",300,0.,30,300,0.,30);
@@ -714,6 +805,21 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
        fCharge_p = new TH1F("fCharge_p","Inclusive Positrons (Positive Charge); p_{t} (GeV/c); Count",200,0,30);
        
        fECluster_pure= new TH1F("fECluster_pure", ";ECluster pure",2000,0,100);
+       fECluster_not_exotic= new TH1F("fECluster_not_exotic", ";ECluster not exotic - function ",2000,0,100);
+       
+       fECluster_not_exotic1= new TH1F("fECluster_not_exotic1", ";ECluster not exotic Ncells > E/3+1",2000,0,100);
+
+       fECluster_not_exotic2= new TH1F("fECluster_not_exotic2", ";ECluster not exotic 2",2000,0,100);
+       fECluster_exotic= new TH1F("fECluster_exotic", ";ECluster exotic",2000,0,100);
+       
+       //not associated with tracks
+       fNCluster_pure= new TH1F("fNCluster_pure", ";Number of clusters - pure",2000,-1,1999);
+       fNCluster_pure_aod= new TH1F("fNCluster_pure_aod", ";Number of clusters - pure -aod",2000,-1,1999);
+       fNCluster_ECluster= new TH2F("fNCluster_ECluster", ";Number of clusters vs. Energy of Cluster",2000,-1,1999, 4000, -1, 1999);
+       
+       fNcells_energy= new TH2F("fNcells_energy", "all clusters;Number of cells;Energy of Cluster",100,0,100, 2000, 0, 100);
+       fNcells_energy_elec_selected= new TH2F("fNcells_energy_elec_selected", "clusters for electrons on TPC;Number of cells;Energy of Cluster",100,0,100, 2000, 0, 100);
+       fNcells_energy_not_exotic= new TH2F("fNcells_energy_not_exotic", "not exotic cluster;Number of cells;Energy of Cluster ",100,0,100, 2000, 0, 100);
        
        if(fUseEMCal){
                
@@ -739,6 +845,7 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
        
        fOutputList->Add(fEtaPhi_num);
        fOutputList->Add(fEtaPhi_den);
+       fOutputList->Add(fEtaPhi_data);
        
        fOutputList->Add(fpt_reco_pt_MC_num);
        fOutputList->Add(fpt_reco_pt_MC_den);
@@ -778,6 +885,19 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
        fOutputList->Add(fCharge_p);
        
        fOutputList->Add(fECluster_pure);
+       fOutputList->Add(fECluster_not_exotic);
+       fOutputList->Add(fECluster_not_exotic1);
+       fOutputList->Add(fECluster_not_exotic2);
+       fOutputList->Add(fECluster_exotic);
+       
+       fOutputList->Add(fNCluster_pure);
+       fOutputList->Add(fNCluster_pure_aod);
+
+       fOutputList->Add(fNCluster_ECluster);
+       fOutputList->Add(fNcells_energy);
+       fOutputList->Add(fNcells_energy_elec_selected);
+       fOutputList->Add(fNcells_energy_not_exotic);
+
        
        if(fUseEMCal){
                
@@ -800,11 +920,17 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
                
        }
        
-       fVtxZ_new1= new  TH1F("fVtxZ_new1","fVtxZ_new1",1000, -50,50);
-       fVtxZ_new2= new  TH1F("fVtxZ_new2","fVtxZ_new2",1000, -50,50);
-       fVtxZ_new3= new  TH1F("fVtxZ_new3","fVtxZ_new3",1000, -50,50);
-       fVtxZ_new4= new  TH1F("fVtxZ_new4","fVtxZ_new4",1000, -50,50);
+       fVtxZ_new1= new  TH1F("fVtxZ_new1","fVtxZ_new1",4000, -50,50);
+       fVtxZ_new2= new  TH1F("fVtxZ_new2","fVtxZ_new2",4000, -50,50);
+       fVtxZ_new3= new  TH1F("fVtxZ_new3","fVtxZ_new3",4000, -50,50);
+       fVtxZ_new4= new  TH1F("fVtxZ_new4","fVtxZ_new4",4000, -50,50);
+       
+       fzRes1= new  TH1F("fzRes1","fzRes1",4000, 0,1);
+       fzRes2= new  TH1F("fzRes2","fzRes2",4000, 0,1);
+       fSPD_track_vtx1= new  TH1F("fSPD_track_vtx1","fSPD_track_vtx1",4000, -5,5);
+       fSPD_track_vtx2= new  TH1F("fSPD_track_vtx2","fSPD_track_vtx2",4000, -5,5);
        
+               
                //General Histograms
        
                //Steps
@@ -875,6 +1001,8 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
                fOutputList->Add(fTPCNcls_EoverP[i]);
        }
        
+       fTrack_Multi= new  TH1F("fTrack_Multi","fTrack_Multi",1000, 0,1000);
+       
        for(Int_t i = 0; i < 4; i++)
        {
                fTPCNcls_pid[i]= new TH2F(Form("fTPCNcls_pid%d",i),"fTPCNcls_pid;NCls;NCls for PID",200,0,200,200,0,200);
@@ -1100,6 +1228,10 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
        fOutputList->Add(fVtxZ_new3);
        fOutputList->Add(fVtxZ_new4);
        
+       fOutputList->Add(fzRes1);
+       fOutputList->Add(fzRes2);
+       fOutputList->Add(fSPD_track_vtx1);
+       fOutputList->Add(fSPD_track_vtx2);
        
 
        
@@ -1140,6 +1272,9 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
                fPtMCeta = new TH1F("fPtMCeta",";p_{T} (GeV/c);Count",200,0,30);
                fPtMCpi02 = new TH1F("fPtMCpi02",";p_{t} (GeV/c);Count",200,0,30);
                fPtMCeta2 = new TH1F("fPtMCeta2",";p_{T} (GeV/c);Count",200,0,30);
+               fPtMCpi03 = new TH1F("fPtMCpi03",";p_{t} (GeV/c);Count",200,0,30);
+               fPtMCeta3 = new TH1F("fPtMCeta3",";p_{T} (GeV/c);Count",200,0,30);
+               
                fPtMC_EMCal_All= new TH1F("fPtMC_EMCal_All",";p_{t} (GeV/c);Count",200,0,40);
                fPtMC_EMCal_Selected= new TH1F("fPtMC_EMCal_Selected",";p_{t} (GeV/c);Count",200,0,40);
                fPtMC_TPC_All= new TH1F("fPtMC_TPC_All",";p_{T} (GeV/c);Count",200,0,40);
@@ -1187,6 +1322,8 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
                fOutputList->Add(fPtMCeta);
                fOutputList->Add(fPtMCpi02);
                fOutputList->Add(fPtMCeta2);
+               fOutputList->Add(fPtMCpi03);
+               fOutputList->Add(fPtMCeta3);
                fOutputList->Add(fPtMC_EMCal_All);
                fOutputList->Add(fPtMC_EMCal_Selected);
                fOutputList->Add(fPtMC_TPC_All);
@@ -1205,8 +1342,8 @@ void AliAnalysisTaskEMCalHFEpA::UserCreateOutputObjects()
        fOutputList->Add(fCentralityHist);
        fOutputList->Add(fCentralityHistPass);
        
-               //______________________________________________________________________
-               //Mixed event analysis
+       //______________________________________________________________________
+       //Mixed event analysis
        if(fEventMixingFlag)
        {
                fPoolNevents = new TH1F("fPoolNevents","Event Mixing Statistics; Number of events; Count",1000,0,1000);
@@ -1294,16 +1431,21 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
        Int_t fNumberOfVertices = 0; 
        Int_t fNumberOfMotherkink = 0;
        
-               //______________________________________________________________________
-               //Vertex Selection
+               
+       //total event before event selection
+       fNevent->Fill(1);
+       
+       //______________________________________________________________________
+       //Vertex Selection
        if(fIsAOD)
        {
-                       
                const AliAODVertex* trkVtx = fAOD->GetPrimaryVertex();
                if(!trkVtx || trkVtx->GetNContributors()<=0) return;
                TString vtxTtl = trkVtx->GetTitle();
                if(!vtxTtl.Contains("VertexerTracks")) return;
-               Float_t zvtx = trkVtx->GetZ();
+                       //Float_t zvtx = trkVtx->GetZ();
+               Float_t zvtx = -100;
+               zvtx=trkVtx->GetZ();
                fZvtx = zvtx;
                
                fVtxZ_new1->Fill(fZvtx);
@@ -1314,13 +1456,24 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                Double_t cov[6]={0};
                spdVtx->GetCovarianceMatrix(cov);
                Double_t zRes = TMath::Sqrt(cov[5]);
+               
+               fzRes1->Fill(zRes);
                if(vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return;
+               fzRes2->Fill(zRes);
+               
+               fSPD_track_vtx1->Fill(spdVtx->GetZ() - trkVtx->GetZ());
                if(TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return;
-               if(TMath::Abs(zvtx) > 10) return;
+               fSPD_track_vtx2->Fill(spdVtx->GetZ() - trkVtx->GetZ());
+               
                
+               if(TMath::Abs(zvtx) > 10) return;
                fVtxZ_new2->Fill(fZvtx);
                
-                       //Look for kink mother for AOD
+               if(fabs(zvtx>10.0))return; 
+               fVtxZ_new3->Fill(fZvtx);
+               
+               
+               //Look for kink mother for AOD
                
                fNumberOfVertices = 0; 
                fNumberOfMotherkink = 0;
@@ -1356,7 +1509,9 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                if(!trkVtx || trkVtx->GetNContributors()<=0) return;
                TString vtxTtl = trkVtx->GetTitle();
                if(!vtxTtl.Contains("VertexerTracks")) return;
-               Float_t zvtx = trkVtx->GetZ();
+               Float_t zvtx = -100;
+               zvtx=trkVtx->GetZ();
+               
                
                const AliESDVertex* spdVtx = fESD->GetPrimaryVertexSPD();
                if(spdVtx->GetNContributors()<=0) return;
@@ -1369,23 +1524,99 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                if(TMath::Abs(zvtx) > 10) return;
        }
        
-               //______________________________________________________________________
+       //______________________________________________________________________
+       //after vertex selection
+       fNevent->Fill(10);
+       
+       //______________________________________________________________________
+       //EMCal Trigger Selection (Threshold selection)
+       
+       TString firedTrigger;
+       TString TriggerEG1("EG1"); //takes trigger with name with EG1, ex: CEMC7EG1-B-NOPF-CENTNOTRD  
+       TString TriggerEG2("EG2");
+       //Jan 17, 2014
+       //TString TriggerEJE("EJE");
+       
+       if(fAOD) firedTrigger = fAOD->GetFiredTriggerClasses();
+       else if(fESD) firedTrigger = fESD->GetFiredTriggerClasses();
        
+               //Bool_t IsEventEMCALL0=kTRUE;
+       Bool_t IsEventEMCALL1=kFALSE;
        
+       if(firedTrigger.Contains(TriggerEG1)){ 
+               fNevent->Fill(2);
+               IsEventEMCALL1=kTRUE;
+       }
+       if(firedTrigger.Contains(TriggerEG2)){
+               fNevent->Fill(3);
+               IsEventEMCALL1=kTRUE;
+       }
+       
+       //if the flag is for a given threshold and it was not fired, return.
+       
+       if(fEMCEG1){
+               if(!firedTrigger.Contains(TriggerEG1))return;
+               if(firedTrigger.Contains(TriggerEG2)){
+                       fNevent->Fill(4);
+                       
+               }
+
+       }
+       
+       
+       if(fEMCEG2){
+               if(!firedTrigger.Contains(TriggerEG2))return;
+               if(firedTrigger.Contains(TriggerEG1)){
+                       fNevent->Fill(5);
+               }
                
-               //Only events with at least 2 tracks are accepted
-       Int_t fNOtrks =  fVevent->GetNumberOfTracks();
+       }
+
+       
+               
+       //______________________________________________________________________
+       //Testing if there is an overlap EGA and EJE
+       //none
+       /*
+       if(!(firedTrigger.Contains(TriggerEG1) && firedTrigger.Contains(TriggerEG2) ) && !firedTrigger.Contains(TriggerEJE))
+       { 
+               fNevent->Fill(6);
+       }
+               //only GA
+       if((firedTrigger.Contains(TriggerEG1) || firedTrigger.Contains(TriggerEG2)) && !firedTrigger.Contains(TriggerEJE))
+       { 
+               fNevent->Fill(7);
+       }
+               //only JE
+       if(!(firedTrigger.Contains(TriggerEG1) && firedTrigger.Contains(TriggerEG2)) && firedTrigger.Contains(TriggerEJE))
+       { 
+               fNevent->Fill(8);
+       }
+               //both
+       if((firedTrigger.Contains(TriggerEG1) || firedTrigger.Contains(TriggerEG2)) && firedTrigger.Contains(TriggerEJE))
+       { 
+               fNevent->Fill(9);
+       }
+       */
        
-       //if(fIsAOD) Int_t fNOtrks =  fAOD->GetNumberOfTracks();
-       //if(!fIsAOD) Int_t fNOtrks =  fESD->GetNumberOfTracks();
        
-               //commented to test
+       
+               
+       //Only events with at least 2 tracks are accepted
+       Int_t fNOtrks =  fVevent->GetNumberOfTracks();
        if(fNOtrks<2) return;
-
        
-       //new track loop to select events
+       fNevent->Fill(11);
        
-       fNevent->Fill(13);
+       if(fIsAOD){
+               Int_t fNOtrks2 =  fAOD->GetNumberOfTracks();
+               if(fNOtrks2<2) return;
+       }
+       fNevent->Fill(12);      
+       
+       //______________________________________________________________________
+       //new track loop to select events
+       //track pt cut (at least 2)
        /*
        if(fUseTrigger){
                if(fIsAOD){
@@ -1393,50 +1624,115 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                        for(Int_t iTracks = 0; iTracks < fVevent->GetNumberOfTracks(); iTracks++) 
                        {
                                AliVParticle* Vtrack = fVevent->GetTrack(iTracks);
-                               if (!Vtrack) 
-                               {
-                                       printf("ERROR: Could not receive track %d\n", iTracks);
-                                       continue;
-                               }
-               
+                               if (!Vtrack) continue;
+                               
                                AliVTrack *track = dynamic_cast<AliVTrack*>(Vtrack);
-                                       //AliESDtrack *etrack = dynamic_cast<AliESDtrack*>(Vtrack);
-                               AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack);
+                                       //AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack);
                
                                if((track->Pt())<0.2 || (track->Pt())>1000.0) continue;
-                               //if it is not a hybrid track, continue
-                               if(!atrack->TestFilterBit(768)) continue;
-                               else fTrackMulti=fTrackMulti+1;
+                               else fTrackMulti=fTrackMulti+1;
                
                        }
                                //Only take event if track multiplicity is bigger than 2.
                        if(fTrackMulti<2) return;
                }
        }
-        */
-       
-       fVtxZ_new3->Fill(fZvtx);
-       
-       fNevent->Fill(14);
+       fNevent->Fill(13);      
+       //______________________________________________________________________
+       //Using more cuts than I have beeing using
+       //eta cut and primary (at least 2)
+       if(fUseTrigger){
+               if(fIsAOD){
+                       double fTrackMulti2=0;
+                       for(Int_t i = 0; i < fVevent->GetNumberOfTracks(); i++) 
+                       {
+                               AliVParticle* Vtrack2 = fVevent->GetTrack(i);
+                               if (!Vtrack2) continue;
+                               
+                               
+                               AliVTrack *track_new = dynamic_cast<AliVTrack*>(Vtrack2);
+                               AliAODTrack *aodtrack = dynamic_cast<AliAODTrack*>(Vtrack2);
+                               
+                               
+                               if(aodtrack)
+                               {
+                                       
+                                       
+                                   if(TMath::Abs(track_new->Eta())> 0.9) continue;
+                                       if (aodtrack->GetType()!= AliAODTrack::kPrimary) continue ;
+                                   else fTrackMulti2=fTrackMulti2+1;
+                               }
+                       }
+                               //Only take event if track multiplicity is bigger than 2.
+                       if(fTrackMulti2<2) return;
+
+                       
+               }
+       }
+       fNevent->Fill(14);      
+//______________________________________________________________________
+//Using more cuts than I have beeing using
+//hybrid (at least2)
+       if(fUseTrigger){
+               if(fIsAOD){
+                       double fTrackMulti3=0;
+                       for(Int_t i = 0; i < fVevent->GetNumberOfTracks(); i++) 
+                       {
+                               AliVParticle* Vtrack3 = fVevent->GetTrack(i);
+                               if (!Vtrack3) continue;
+                                                               
+                                       //AliVTrack *track_new = dynamic_cast<AliVTrack*>(Vtrack3);
+                               AliAODTrack *aodtrack = dynamic_cast<AliAODTrack*>(Vtrack3);
+                               
+                               
+                               if(aodtrack)
+                               {
+                                       
+                                       if (!aodtrack->IsHybridGlobalConstrainedGlobal()) continue ;
+                                               //another option if I don't want to use hybrid
+                                               //if ( aodtrack->TestFilterBit(128)==kFALSE) continue ;
+                                   else fTrackMulti3=fTrackMulti3+1;
+                               }
+                       }
+                       //Only take event if track multiplicity is bigger than 2.
+                       if(fTrackMulti3<2) return;
+
+               }
+       }
+       fNevent->Fill(15);      
+//______________________________________________________________________
        
-               
-       //trying to use same as Lucile
-       /*if(fIsAOD) {
-                       //reader = new AliCaloTrackAODReader();
-               reader->SwitchOnCTS();
-               reader->SetCTSPtMin(0.2);
-               reader->SetCTSPtMax(1000);      
-               reader->SwitchOffRecalculateVertexBC();
-               reader->SwitchOffVertexBCEventSelection();
-               reader->SwitchOffUseTrackTimeCut();     
-               reader->SwitchOffUseTrackDCACut();      
-               reader->SwitchOnAODHybridTrackSelection();
-               reader->SwitchOnRejectNoTrackEvents();
-       }*/
        
+       if(fUseTrigger){
+               if(fIsAOD){
+                       double fTrackMulti4=0;
+                       for(Int_t iTracks = 0; iTracks < fVevent->GetNumberOfTracks(); iTracks++) 
+                       {
+                               AliVParticle* Vtrack4 = fVevent->GetTrack(iTracks);
+                               if (!Vtrack4) continue;
+                               
+                               
+                                       //AliVTrack *track = dynamic_cast<AliVTrack*>(Vtrack4);
+                               AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack4);
+                               
+                               if(!atrack->TestFilterBit(768)) continue;
+                               if(!atrack->IsHybridGlobalConstrainedGlobal()) continue ;
+                               
+                               
+                               else fTrackMulti4=fTrackMulti4+1;
+                               
+                       }
+                       //Only take event if track multiplicity is bigger than 2.
+                       if(fTrackMulti4<2) return;
+                       fTrack_Multi->Fill(fTrackMulti4);
+               }
+       }
+       fNevent->Fill(16);      
+//______________________________________________________________________
+       */
        
-               //______________________________________________________________________
-               //Centrality Selection
+//______________________________________________________________________
+//Centrality Selection
        if(fHasCentralitySelection)
        {
                Float_t centrality = -1;
@@ -1461,9 +1757,12 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                
                fCentralityHistPass->Fill(centrality);
        }
-               //______________________________________________________________________
+       //______________________________________________________________________
        
-               //______________________________________________________________________
+       
+       fNevent->Fill(17);
+       
+       //______________________________________________________________________
        
        if(fIsMC)
        {
@@ -1492,6 +1791,31 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                                
                                Int_t pdg = fMCparticle->GetPdgCode();
                                
+                               //====================================================================
+                               //trying take pions spectra 27/May/2014
+                               //IsPrimary only take events from pythia
+                               //IsPhysicalPrimariee: (all prompt particles, including strong decay products plus weak decay product from heavy-flavor).
+                               //eta cut same as MinJung
+                               
+                               if(fMCparticle->Eta()>=-0.8 && fMCparticle->Eta()<=0.8)
+                               {
+                                       if(fMCparticle->IsPrimary()){
+                                       
+                                               if(TMath::Abs(pdg)==111) fPtMCpi0->Fill(fMCparticle->Pt());
+                                               if(TMath::Abs(pdg)==221) fPtMCeta->Fill(fMCparticle->Pt());
+                                               //eta cut same as MinJung
+                                       }
+                                               
+                                       if(fMCparticle->IsPhysicalPrimary()){
+                                               if(TMath::Abs(pdg)==111) fPtMCpi02->Fill(fMCparticle->Pt());
+                                               if(TMath::Abs(pdg)==221) fPtMCeta2->Fill(fMCparticle->Pt());
+                                               
+                                       }
+                                                               
+                                       if(TMath::Abs(pdg)==111) fPtMCpi03->Fill(fMCparticle->Pt());
+                                       if(TMath::Abs(pdg)==221) fPtMCeta3->Fill(fMCparticle->Pt());
+                               }
+                               //====================================================================
                                                        
                                double proX = fMCparticle->Xv();
                                double proY = fMCparticle->Yv();
@@ -1513,7 +1837,9 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                }
                                        }
                                        
-                                       if (TMath::Abs(pdg) == 11 && fMCparticle->IsPhysicalPrimary()) fPtMCparticleAlle_Primary->Fill(fMCparticle->Pt()); //denominator for total efficiency for all electrons primary
+                                       if (TMath::Abs(pdg) == 11 && fMCparticle->IsPhysicalPrimary()){ 
+                                               fPtMCparticleAlle_Primary->Fill(fMCparticle->Pt()); //denominator for total efficiency for all electrons primary
+                                       } 
                                        
                                        if( TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 || TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13 ) 
                                        {
@@ -1535,28 +1861,41 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                                        
                                                                
                                                                } //denominator for total efficiency and tracking
-                                                               if(fIsHFE2) fPtMCparticleAllHfe2->Fill(fMCparticle->Pt());
+                                                               if(fIsHFE2){
+                                                                       fPtMCparticleAllHfe2->Fill(fMCparticle->Pt());
+                                                               }
                                                        }
                                                }
                                        }
                                }//eta cut
                                
-                               //only primary pions 
-                               if(fMCparticle->IsPhysicalPrimary()){
-                                       if(TMath::Abs(pdg)==111) fPtMCpi0->Fill(fMCparticle->Pt());
-                                       if(TMath::Abs(pdg)==221) fPtMCeta->Fill(fMCparticle->Pt());
+                               
+                                                               
+                       }//loop tracks
+                       
+                       
+                       
+                       //second loop over track, but only the primaries ones
+                       //only primary pions --> how to take the primaries ones in AOD?
+                       /*
+                       for(Int_t iMC = 0; iMC < fMCarray->GetNPrimary(); iMC++){
+                               fMCparticle = (AliAODMCParticle*) fMCarray->At(iMC);
+                               pdg = fMCparticle->GetPdgCode();
+
+                               if(TMath::Abs(pdg)==111) fPtMCpi0->Fill(fMCparticle->Pt());
+                               if(TMath::Abs(pdg)==221) fPtMCeta->Fill(fMCparticle->Pt());
+                               
+                               if(fMCparticle->Eta()>=fEtaCutMin && fMCparticle->Eta()<=fEtaCutMax)
+                               {
                                        
-                                       if(fMCparticle->Eta()>=fEtaCutMin && fMCparticle->Eta()<=fEtaCutMax)
-                                       {
-                                               
-                                               if(TMath::Abs(pdg)==111) fPtMCpi02->Fill(fMCparticle->Pt());
-                                               if(TMath::Abs(pdg)==221) fPtMCeta2->Fill(fMCparticle->Pt());
-                                               
-                                       }
+                                       if(TMath::Abs(pdg)==111) fPtMCpi02->Fill(fMCparticle->Pt());
+                                       if(TMath::Abs(pdg)==221) fPtMCeta2->Fill(fMCparticle->Pt());
                                        
                                }
-                               
-                       }//loop tracks
+                       }
+                        */
+                       
+                       
                }//AOD
                else
                {
@@ -1574,6 +1913,40 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                        
                        fMCstack = fMCevent->Stack();
                        
+                       //pion and eta spectrum
+                       //MinJung code
+                       
+                       //----------------------------------------------------------------------------------------------------
+                       AliVParticle *mctrack2 = NULL;
+                       AliMCParticle *mctrack0 = NULL;
+                       
+                       
+                       for(Int_t imc = 0; imc <fMCEvent->GetNumberOfPrimaries(); imc++){
+                               if(!(mctrack2 = fMCEvent->GetTrack(imc))) continue;
+                               TParticle* mcpart0 = fMCEvent->Stack()->Particle(imc);
+                               if(!mcpart0) continue;
+                               mctrack0 = dynamic_cast<AliMCParticle *>(mctrack2);
+                               if(!mctrack0) continue;
+                               
+                               if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8){ 
+                               
+                                       if(TMath::Abs(mctrack0->PdgCode()) == 111) // pi0
+                                       {
+                                               fPtMCpi0->Fill(mctrack0->Pt());
+                                       }
+                               
+                                       if(TMath::Abs(mctrack0->PdgCode()) == 221) // eta
+                                       {
+                                               fPtMCeta->Fill(mctrack0->Pt());
+                                       }
+                                       
+                               }
+                               
+                       }
+                       // end of MinJung
+                       //----------------------------------------------------------------------------------------------------
+                       
+                       
                for(Int_t iMC = 0; iMC < fMCstack->GetNtrack(); iMC++)
                {
                                
@@ -1623,7 +1996,9 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                                        fPtMCparticleAllHfe1->Fill(fMCtrack->Pt());//denominator for total efficiency and tracking
                                                                        fEtaPhi_den->Fill(fMCtrack->Phi(),fMCtrack->Eta());
                                                                }
-                                                               if(fIsHFE2) fPtMCparticleAllHfe2->Fill(fMCtrack->Pt());
+                                                               if(fIsHFE2){ 
+                                                                       fPtMCparticleAllHfe2->Fill(fMCtrack->Pt());
+                                                               }
                                                        }
                                                }//Is Physical primary
                                        }       
@@ -1632,91 +2007,143 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                }//ESD
        }//Is MC
        
-       //______________________________________________________________________
-       //EMCal Trigger Selection (Threshold selection)
-       TString firedTrigger;
-       TString TriggerEG1("CEMC7EG1"); //takes trigger with name with EG1, ex: CEMC7EG1-B-NOPF-CENTNOTRD  
-       TString TriggerEG2("CEMC7EG2");
-       //Jan 17, 2014
-       TString TriggerEJE("EJE");
-               
-       if(fAOD) firedTrigger = fAOD->GetFiredTriggerClasses();
-       else if(fESD) firedTrigger = fESD->GetFiredTriggerClasses();
+//______________________________________________________________________
+//threshold selection was here
+//______________________________________________________________________
+//all events selected
        
        fNevent->Fill(0);
-       if(firedTrigger.Contains(TriggerEG1)) fNevent->Fill(1);
-       if(firedTrigger.Contains(TriggerEG2)) fNevent->Fill(2);
        
-       // Jan 06, 2014: I changed the counters: Only fill with 3 or 4 if we want the trigger threshold selected.
-       //EG1
+       
+//______________________________________________________________________
+//events in the threshold
+       
        if(firedTrigger.Contains(TriggerEG1))
        { 
-               if(fEMCEG1) fNevent->Fill(3);
-       }
-       else 
-       {
-               if(fEMCEG1) return;
+               if(fEMCEG1){
+                       fNevent->Fill(18);
+                   if(!firedTrigger.Contains(TriggerEG2)) fNevent->Fill(19);
+                               //if(firedTrigger.Contains(TriggerEG2)) return;
+               }
        }
        
+       
        //EG2
        if(firedTrigger.Contains(TriggerEG2))
        { 
-               if(fEMCEG2) fNevent->Fill(4);
-       }
-       else
-       { 
-               if(fEMCEG2) return;
+               if(fEMCEG2){
+                       fNevent->Fill(20);
+                       if(!firedTrigger.Contains(TriggerEG1)) fNevent->Fill(21);
+                               //if(firedTrigger.Contains(TriggerEG1)) return;
+               }
        }
        
-       //______________________________________________________________________
-       //Testing if there is an overlap EGA and EJE
-       //none
-       if(!(firedTrigger.Contains(TriggerEG1) && firedTrigger.Contains(TriggerEG2) ) && !firedTrigger.Contains(TriggerEJE))
-       { 
-               fNevent->Fill(6);
-       }
-       //only GA
-       if((firedTrigger.Contains(TriggerEG1) || firedTrigger.Contains(TriggerEG2)) && !firedTrigger.Contains(TriggerEJE))
-       { 
-               fNevent->Fill(7);
-       }
-       //only JE
-       if(!(firedTrigger.Contains(TriggerEG1) && firedTrigger.Contains(TriggerEG2)) && firedTrigger.Contains(TriggerEJE))
-       { 
-               fNevent->Fill(8);
-       }
-       //both
-       if((firedTrigger.Contains(TriggerEG1) || firedTrigger.Contains(TriggerEG2)) && firedTrigger.Contains(TriggerEJE))
-       { 
-               fNevent->Fill(9);
-       }
        
-               
+       
        //New cluster information 
        //after trigger threshold selection
-       Int_t ClsNo2 = fVevent->GetNumberOfCaloClusters(); 
+       Int_t ClsNo2 = -999;
+       ClsNo2 = fVevent->GetNumberOfCaloClusters(); 
+       fNCluster_pure->Fill(ClsNo2);
+       
+       
        
        if(ClsNo2<=0){
-               fNevent->Fill(11); //events with no cluster
+               fNevent->Fill(22); //events with no cluster
                return;
        } 
-       for (Int_t i=0; i< ClsNo2; i++ ){
+       
+       //in order to include time cut
+       //fEMCALCells = fAOD->GetEMCALCells();
+       //Double_t tof = clus->GetTOF();
+       //clus->GetNCells()
+       //if ( clus->E() < minE ) continue ;
+       
                
-               fClus = fVevent->GetCaloCluster(i);
-               if(fClus->IsEMCAL())
-               {
-                       //pure cluster information
-                       fECluster_pure->Fill(fClus->E());
+       
+       if(fUseTrigger && fIsAOD){
+               
+               AliAODHeader * aodh = fAOD->GetHeader();
+                       //Int_t bc= aodh->GetBunchCrossNumber();
+
+               
+               Int_t ClsNo_aod = -999;
+               ClsNo_aod = fAOD->GetNumberOfCaloClusters(); 
+               fNCluster_pure_aod->Fill(ClsNo_aod);
+                       //Bool_t exotic=kTRUE;
+               
+               for (Int_t i=0; i< ClsNo_aod; i++ ){
+               
+                       //fClus = fVevent->GetCaloCluster(i);
+                       //to be compatible with Shingo
+                   AliVCluster *clust = 0x0;
+                       clust = (AliVCluster*) fAOD->GetCaloCluster(i);
+               
+                       if(clust && clust->IsEMCAL())
+                       {
+                               //pure cluster information
+                               fECluster_pure->Fill(clust->E());
+                               
+                               fNcells_energy->Fill(clust->GetNCells(),clust->E());
+                               fNCluster_ECluster->Fill(ClsNo_aod,clust->E());
+                               
+                               if(clust->E()>1000) fNevent->Fill(23);
+                               
+                               //exotic
+                               /*
+                               exotic   = fEMCALRecoUtils->IsExoticCluster(clust, (AliVCaloCells*)fAOD->GetEMCALCells(), bc);
+                               if(exotic == kFALSE){ 
+                                       fECluster_not_exotic->Fill(clust->E());
+                                       fNcells_energy_not_exotic->Fill(clust->GetNCells(),clust->E());
+                               }
+                               */
+                               
+                               //approximation to remove exotics
+                               if(clust->GetNCells()<5 && clust->E()>15.0){
+                                       fECluster_exotic->Fill(clust->E());
+                               }
+                               //Marcel cut
+                               else if((clust->GetNCells())> ((clust->E())/3+1)){
+                                       fECluster_not_exotic1->Fill(clust->E());
+                               }
+                               else{
+                                       fECluster_not_exotic2->Fill(clust->E());
+                               }
+                               
+                       
+                       }
+                       /*
+                       //______________________________________________________________________
+                       //Trying to remove events with bad cells and find patches
+                       //First, I will try to count them
+                       //______________________________________________________________________
+
+                       if(clust && clust->IsEMCAL())
+                       {
+                               Bool_t badchannel = ContainsBadChannel("EMCAL", clust->GetCellsAbsId(),clust->GetNCells() );
+                               printf("Contém bad channel? %d ", badchannel);
+                               if(badchannel)fNevent2->Fill(0); 
+                               
+                               //trying to find patches
+                               TArrayI patches_found=GetTriggerPatches(IsEventEMCALL0, IsEventEMCALL1);
+                               printf("N patches %d, first %d, last %d\n",patches_found.GetSize(),  patches_found.At(0), patches_found.At(patches_found.GetSize()-1));
+
+                       }
+                       
+                       //end of bad cells
+                       //______________________________________________________________________
+*/
+                       
                }
        }
        
-       fNevent->Fill(12); //events with cluster
        
+       fNevent->Fill(24); //events with cluster
+               
        
        fVtxZ_new4->Fill(fZvtx);
        
-       //__________________________________________________________________
-       
+
        Int_t ClsNo = -999;
        if(!fIsAOD) ClsNo = fESD->GetNumberOfCaloClusters(); 
        else ClsNo = fAOD->GetNumberOfCaloClusters(); 
@@ -1738,9 +2165,7 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                AliESDtrack *etrack = dynamic_cast<AliESDtrack*>(Vtrack);
                AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack);
                
-               //aod test -- Francesco suggestion
-               AliAODTrack *aod_track=fAOD->GetTrack(iTracks);
-               
+                               
                Double_t fTPCnSigma = -999;
                Double_t fTOFnSigma = -999;
                Double_t fTPCnSigma_pion = -999;
@@ -1900,6 +2325,9 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                
                if(fIsAOD){     
                                //AOD test -- Fancesco suggestion
+                               //aod test -- Francesco suggestion
+                       AliAODTrack *aod_track=fAOD->GetTrack(iTracks);
+
                        Int_t type=aod_track->GetType();
                        if(type==AliAODTrack::kPrimary) fPtPrim->Fill(aod_track->Pt());
                        if(type==AliAODTrack::kSecondary) fPtSec->Fill(aod_track->Pt());
@@ -1920,11 +2348,15 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                
                if(fIsMC  && track->GetLabel()>=0)
                {
-                       if(fIsAOD){
+                       if(fIsAOD)
+                       {
                                fMCparticle = (AliAODMCParticle*) fMCarray->At(track->GetLabel());
                        
                                                                                        
-                               if(fMCparticle->IsPhysicalPrimary()) fPtIsPhysicaPrimary->Fill(fPt);
+                               if(fMCparticle->IsPhysicalPrimary())
+                               {
+                                       fPtIsPhysicaPrimary->Fill(fPt);
+                               }
                        
                                Int_t pdg = fMCparticle->GetPdgCode();
                                if(fMCparticle->Eta()>=fEtaCutMin && fMCparticle->Eta()<=fEtaCutMax && fMCparticle->Charge()!=0)
@@ -1942,13 +2374,16 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                        Bool_t MotherFound = FindMother(track->GetLabel());
                                                        if(MotherFound)
                                                        {
-                                                               if(fIsHFE1){
+                                                               if(fIsHFE1)
+                                                               {
                                                                        fPtMCparticleRecoHfe1->Fill(fMCparticle->Pt());//numerator tracking
                                                                        //unfolding
                                                                        fpt_reco_pt_MC_den->Fill(track->Pt(),fMCparticle->Pt());
 
                                                                }
-                                                               if(fIsHFE2) fPtMCparticleRecoHfe2->Fill(fMCparticle->Pt());
+                                                               if(fIsHFE2){ 
+                                                                       fPtMCparticleRecoHfe2->Fill(fMCparticle->Pt());
+                                                               }
                                                        }
                                                }
                                        }
@@ -2449,8 +2884,8 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                        
                                        
                                        //----------------------------------------------------------------------------------------
-                                       
-                                       // EtaCut electrons histogram
+                                       //
+                                       //EtaCut electrons histogram
                                        //Shower Shape Cut
                                        if(track->Eta()>=fEtaCutMin && track->Eta()<=fEtaCutMax ){
                                                
@@ -2458,6 +2893,8 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                        if(M02 >= fM02CutMin && M02<=fM02CutMax && M20>=fM20CutMin && M20<=fM20CutMax){
                                                                fEoverP_pt[2]->Fill(fPt,(fClus->E() / fP));
                                                                fShowerShapeCut->Fill(M02,M20);
+                                                                       //in order to check if there are exotic cluster in this selected cluster (27 may 2014)
+                                                               fNcells_energy_elec_selected->Fill(ncells,Energy);
                                                                
                                                        }
                                                        
@@ -2465,6 +2902,8 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                if(!fUseShowerShapeCut){
                                                        fEoverP_pt[2]->Fill(fPt,(fClus->E() / fP));
                                                        fShowerShapeCut->Fill(M02,M20);
+                                                       fNcells_energy_elec_selected->Fill(ncells,Energy);
+
                                                        
                                                }
                                                if(fUseEMCal) fShowerShape_ele->Fill(M02,M20);
@@ -2575,12 +3014,19 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                        if((fClus->E() / fP) >= fEoverPCutMin && (fClus->E() / fP) <= fEoverPCutMax)
                                        {       
                                                
-                                           fECluster[2]->Fill(Energy);
-                                               fTPCNcls_pid[3]->Fill(TPCNcls, TPCNcls_pid);
+                                               
+                                                       fECluster[2]->Fill(Energy);
+                                                       fTPCNcls_pid[3]->Fill(TPCNcls, TPCNcls_pid);
+                                               
                                                
                                                if(fUseEMCal)
                                                {
-                                                       fPtElec_Inc->Fill(fPt);
+                                                       if(track->Eta()>=fEtaCutMin && track->Eta()<=fEtaCutMax ){
+                                                               fPtElec_Inc->Fill(fPt);
+                                                               //eta phi distribution for data
+                                                               fEtaPhi_data->Fill(track->Phi(),track->Eta());
+                                                       }
+                                                       
                                                        //Eta cut for background
                                                        if(fFillBackground){
                                                                fEtad[2]->Fill(track->Eta());
@@ -2697,23 +3143,33 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                        if(track->Charge()>0)  fCharge_p->Fill(fPt);
                                                        
                                                        fMCtrack = fMCstack->Particle(track->GetLabel());
-                                                       if(fMCtrack->GetFirstMother()>0) fMCtrackMother = fMCstack->Particle(fMCtrack->GetFirstMother());
+                                                       if(fMCtrack->GetFirstMother()>0)
+                                                       { 
+                                                               fMCtrackMother = fMCstack->Particle(fMCtrack->GetFirstMother());
+                                                       }
                                                        TParticle *particle=fMCstack->Particle(track->GetLabel());
 
                                                        Int_t pdg = fMCtrack->GetPdgCode();
                                                        
                                                        
-                                                       if(fMCtrack->Eta()>=fEtaCutMin && fMCtrack->Eta()<=fEtaCutMax){
-                                                               if( TMath::Abs(pdg) == 11 && fMCtrack->GetFirstMother()>0 ){
+                                                       if(fMCtrack->Eta()>=fEtaCutMin && fMCtrack->Eta()<=fEtaCutMax)
+                                                       {
+                                                               if( TMath::Abs(pdg) == 11 && fMCtrack->GetFirstMother()>0 )
+                                                               {
                                                                        Int_t mpdg = fMCtrackMother->GetPdgCode();
-                                                                       if(TMath::Abs(mpdg) == 221 || TMath::Abs(mpdg) == 22 || TMath::Abs(mpdg) == 111){
+                                                                       if(TMath::Abs(mpdg) == 221 || TMath::Abs(mpdg) == 22 || TMath::Abs(mpdg) == 111)
+                                                                       {
                                                                                Double_t proR=particle->R();
-                                                                               if(proR<7){
+                                                                               if(proR<7)
+                                                                               {
                                                                                  fPtMCelectronAfterAll_nonPrimary->Fill(fMCtrack->Pt()); //numerator for the total efficiency, non Primary track
                                                                                }
                                                                        }
                                                                }
-                                                               if( TMath::Abs(pdg) == 11 && fMCstack->IsPhysicalPrimary(track->GetLabel())) fPtMCelectronAfterAll_Primary->Fill(fMCtrack->Pt());
+                                                               if( TMath::Abs(pdg) == 11 && fMCstack->IsPhysicalPrimary(track->GetLabel()))
+                                                               { 
+                                                                       fPtMCelectronAfterAll_Primary->Fill(fMCtrack->Pt());
+                                                               }
                                                        }
                                                        
                                                        if(fMCstack->IsPhysicalPrimary(track->GetLabel()))
@@ -2722,9 +3178,8 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                            
                                                                if(MotherFound)
                                                                {
-                                                                       if(fMCtrack->Eta()>=fEtaCutMin && fMCtrack->Eta()<=fEtaCutMax){
-                                                                               
-                                                                               
+                                                                       if(fMCtrack->Eta()>=fEtaCutMin && fMCtrack->Eta()<=fEtaCutMax)
+                                                                       {
                                                                                if(!fUseShowerShapeCut){
                                                                                        if(fIsHFE1){
                                                                                                fPtMCelectronAfterAll->Fill(fMCtrack->Pt()); //numerator for the total efficiency ESD
@@ -2759,7 +3214,7 @@ void AliAnalysisTaskEMCalHFEpA::UserExec(Option_t *)
                                                                                        fMCtrackMother = fMCstack->Particle(fMCtrack->GetFirstMother());
                                                                                        if( TMath::Abs(pdg) == 11 && fMCtrackMother->GetPdgCode()!=22 ){
                                                                                        
-                                                                                               if(fIsHFE1)fPtMC_EMCal_Selected->Fill(fMCtrack->Pt());  
+                                                                                               if(fIsHFE1){fPtMC_EMCal_Selected->Fill(fMCtrack->Pt());}
                                                                                        }
                                                                                }
                                                                        }
@@ -2856,7 +3311,7 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
 {
        ///_________________________________________________________________
        ///MC analysis
-       Bool_t IsMCefix=kFALSE; //to make correction on efix, use kTRUE (do not change the efficiency, so I will keep the correction only for d3)
+       //Bool_t IsMCefix=kFALSE; //to make correction on efix, use kTRUE (do not change the efficiency, so I will keep the correction only for d3)
                
                if(fIsMC)
                {
@@ -2888,118 +3343,20 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                Double_t mPt=fMCparticleMother->Pt();
                                                Double_t mweight=1;
                                                
-                                                       //________________________________________________________________
-                                                       //correction for efix based on data - parametrization from MinJung
-                                               if(IsMCefix){
-                                                       if(TMath::Abs(fMCparticleMother->GetPdgCode())==111){
-                                                               Double_t x=mPt;
-                                                               if(0.100000 <= x < 0.112797 ) mweight=1.030419;
-                                                               if(0.112797 <= x < 0.127231 ) mweight=1.044554;
-                                                               if(0.127231 <= x < 0.143512 ) mweight=1.062733;
-                                                               if(0.143512 <= x < 0.161877 ) mweight=1.085332;
-                                                               if(0.161877 <= x < 0.182592 ) mweight=1.115248;
-                                                               if(0.182592 <= x < 0.205957 ) mweight=1.153990;
-                                                               if(0.205957 <= x < 0.232313 ) mweight=1.201346;
-                                                               if(0.232313 <= x < 0.262041 ) mweight=1.257332;
-                                                               if(0.262041 <= x < 0.295573 ) mweight=1.315488;
-                                                               if(0.295573 <= x < 0.333397 ) mweight=1.369138;
-                                                               if(0.333397 <= x < 0.376060 ) mweight=1.407632;
-                                                               if(0.376060 <= x < 0.424183 ) mweight=1.422232;
-                                                               if(0.424183 <= x < 0.478465 ) mweight=1.406922;
-                                                               if(0.478465 <= x < 0.539692 ) mweight=1.360082;
-                                                               if(0.539692 <= x < 0.608754 ) mweight=1.284405;
-                                                               if(0.608754 <= x < 0.686654 ) mweight=1.182017;
-                                                               if(0.686654 <= x < 0.774523 ) mweight=1.062002;
-                                                               if(0.774523 <= x < 0.873636 ) mweight=0.935533;
-                                                               if(0.873636 <= x < 0.985432 ) mweight=0.816081;
-                                                               if(0.985432 <= x < 1.111534 ) mweight=0.717527;
-                                                               if(1.111534 <= x < 1.253773 ) mweight=0.647465;
-                                                               if(1.253773 <= x < 1.414214 ) mweight=0.607212;
-                                                               if(1.414214 <= x < 1.595185 ) mweight=0.589750;
-                                                               if(1.595185 <= x < 1.799315 ) mweight=0.587406;
-                                                               if(1.799315 <= x < 2.029567 ) mweight=0.592858;
-                                                               if(2.029567 <= x < 2.289283 ) mweight=0.601059;
-                                                               if(2.289283 <= x < 2.582235 ) mweight=0.608003;
-                                                               if(2.582235 <= x < 2.912674 ) mweight=0.611705;
-                                                               if(2.912674 <= x < 3.285398 ) mweight=0.610086;
-                                                               if(3.285398 <= x < 3.705818 ) mweight=0.605015;
-                                                               if(3.705818 <= x < 4.180038 ) mweight=0.596299;
-                                                               if(4.180038 <= x < 4.714942 ) mweight=0.590727;
-                                                               if(4.714942 <= x < 5.318296 ) mweight=0.585358;
-                                                               if(5.318296 <= x < 5.998859 ) mweight=0.585257;
-                                                               if(5.998859 <= x < 6.766511 ) mweight=0.580812;
-                                                               if(6.766511 <= x < 7.632396 ) mweight=0.576207;
-                                                               if(7.632396 <= x < 8.609086 ) mweight=0.575912;
-                                                               if(8.609086 <= x < 9.710759 ) mweight=0.558718;
-                                                               if(9.710759 <= x < 10.953409 ) mweight=0.555625;
-                                                               if(10.953409 <= x < 12.355077 ) mweight=0.558886;
-                                                               if(12.355077 <= x < 13.936111 ) mweight=0.545318;
-                                                               if(13.936111 <= x < 15.719464 ) mweight=0.517607;
-                                                               if(15.719464 <= x < 17.731026 ) mweight=0.512366;
-                                                               if(17.731026 <= x < 20.000000 ) mweight=0.497034;
-                                                               
-                                                               
-                                                       }
                                                        
-                                                       
-                                               }//end of IsMCefix
+                                               //________________________________________________________________
+                                               //correction for d3 based on data //from Jan
                                                
-                                                       //________________________________________________________________
-                                                       //correction for d3 based on data //from Jan
-                                               if(!IsMCefix){
                                                        if(TMath::Abs(fMCparticleMother->GetPdgCode())==111){
                                                                Double_t x=mPt;
-                                                               if(0.100000 <= x < 0.112797 ) mweight=1.262120;
-                                                               if(0.112797 <= x < 0.127231 ) mweight=1.277765;
-                                                               if(0.127231 <= x < 0.143512 ) mweight=1.295605;
-                                                               if(0.143512 <= x < 0.161877 ) mweight=1.318155;
-                                                               if(0.161877 <= x < 0.182592 ) mweight=1.348693;
-                                                               if(0.182592 <= x < 0.205957 ) mweight=1.388636;
-                                                               if(0.205957 <= x < 0.232313 ) mweight=1.439122;
-                                                               if(0.232313 <= x < 0.262041 ) mweight=1.497452;
-                                                               if(0.262041 <= x < 0.295573 ) mweight=1.559409;
-                                                               if(0.295573 <= x < 0.333397 ) mweight=1.615169;
-                                                               if(0.333397 <= x < 0.376060 ) mweight=1.654954;
-                                                               if(0.376060 <= x < 0.424183 ) mweight=1.668753;
-                                                               if(0.424183 <= x < 0.478465 ) mweight=1.652225;
-                                                               if(0.478465 <= x < 0.539692 ) mweight=1.603119;
-                                                               if(0.539692 <= x < 0.608754 ) mweight=1.526049;
-                                                               if(0.608754 <= x < 0.686654 ) mweight=1.426724;
-                                                               if(0.686654 <= x < 0.774523 ) mweight=1.312684;
-                                                               if(0.774523 <= x < 0.873636 ) mweight=1.195395;
-                                                               if(0.873636 <= x < 0.985432 ) mweight=1.086264;
-                                                               if(0.985432 <= x < 1.111534 ) mweight=0.993666;
-                                                               if(1.111534 <= x < 1.253773 ) mweight=0.922587;
-                                                               if(1.253773 <= x < 1.414214 ) mweight=0.875739;
-                                                               if(1.414214 <= x < 1.595185 ) mweight=0.852181;
-                                                               if(1.595185 <= x < 1.799315 ) mweight=0.847828;
-                                                               if(1.799315 <= x < 2.029567 ) mweight=0.863875;
-                                                               if(2.029567 <= x < 2.289283 ) mweight=0.899112;
-                                                               if(2.289283 <= x < 2.582235 ) mweight=0.955194;
-                                                               if(2.582235 <= x < 2.912674 ) mweight=1.033824;
-                                                               if(2.912674 <= x < 3.285398 ) mweight=1.133714;
-                                                               if(3.285398 <= x < 3.705818 ) mweight=1.259471;
-                                                               if(3.705818 <= x < 4.180038 ) mweight=1.406883;
-                                                               if(4.180038 <= x < 4.714942 ) mweight=1.578923;
-                                                               if(4.714942 <= x < 5.318296 ) mweight=1.778513;
-                                                               if(5.318296 <= x < 5.998859 ) mweight=2.001171;
-                                                               if(5.998859 <= x < 6.766511 ) mweight=2.223161;
-                                                               if(6.766511 <= x < 7.632396 ) mweight=2.449445;
-                                                               if(7.632396 <= x < 8.609086 ) mweight=2.661734;
-                                                               if(8.609086 <= x < 9.710759 ) mweight=2.851935;
-                                                               if(9.710759 <= x < 10.953409 ) mweight=2.974319;
-                                                               if(10.953409 <= x < 12.355077 ) mweight=3.106314;
-                                                               if(12.355077 <= x < 13.936111 ) mweight=3.126815;
-                                                               if(13.936111 <= x < 15.719464 ) mweight=3.150053;
-                                                               if(15.719464 <= x < 17.731026 ) mweight=3.218509;
-                                                               if(17.731026 <= x < 20.000000 ) mweight=3.252141;
-                                                               
                                                                
+                                                               mweight=CalculateWeight(111, x);
+                                                                                                                               
                                                        }
-                                               }
-                                                       //________________________________________________________________
                                                
-                                                       //Histo pT mother versus pT electron
+                                               //________________________________________________________________
+                                               
+                                               //Histo pT mother versus pT electron
                                                fpT_m_electron->Fill(mPt, track->Pt());
                                                
                                                if(!IsTPConly)fPtBackgroundBeforeReco_weight->Fill(track->Pt(), 1./mweight);
@@ -3010,120 +3367,18 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                Double_t gmPt=fMCparticleGMother->Pt();
                                                Double_t gmweight=1;
                                                
-                                                       //________________________________________________________________
-                                                       //correction for efix based on data - parametrization from MinJung
-                                               if(IsMCefix){
-                                                       if(TMath::Abs(fMCparticleGMother->GetPdgCode())==111){
-                                                               Double_t x=gmPt;
-                                                               if(0.100000 <= x < 0.112797 ) gmweight=1.030419;
-                                                               if(0.112797 <= x < 0.127231 ) gmweight=1.044554;
-                                                               if(0.127231 <= x < 0.143512 ) gmweight=1.062733;
-                                                               if(0.143512 <= x < 0.161877 ) gmweight=1.085332;
-                                                               if(0.161877 <= x < 0.182592 ) gmweight=1.115248;
-                                                               if(0.182592 <= x < 0.205957 ) gmweight=1.153990;
-                                                               if(0.205957 <= x < 0.232313 ) gmweight=1.201346;
-                                                               if(0.232313 <= x < 0.262041 ) gmweight=1.257332;
-                                                               if(0.262041 <= x < 0.295573 ) gmweight=1.315488;
-                                                               if(0.295573 <= x < 0.333397 ) gmweight=1.369138;
-                                                               if(0.333397 <= x < 0.376060 ) gmweight=1.407632;
-                                                               if(0.376060 <= x < 0.424183 ) gmweight=1.422232;
-                                                               if(0.424183 <= x < 0.478465 ) gmweight=1.406922;
-                                                               if(0.478465 <= x < 0.539692 ) gmweight=1.360082;
-                                                               if(0.539692 <= x < 0.608754 ) gmweight=1.284405;
-                                                               if(0.608754 <= x < 0.686654 ) gmweight=1.182017;
-                                                               if(0.686654 <= x < 0.774523 ) gmweight=1.062002;
-                                                               if(0.774523 <= x < 0.873636 ) gmweight=0.935533;
-                                                               if(0.873636 <= x < 0.985432 ) gmweight=0.816081;
-                                                               if(0.985432 <= x < 1.111534 ) gmweight=0.717527;
-                                                               if(1.111534 <= x < 1.253773 ) gmweight=0.647465;
-                                                               if(1.253773 <= x < 1.414214 ) gmweight=0.607212;
-                                                               if(1.414214 <= x < 1.595185 ) gmweight=0.589750;
-                                                               if(1.595185 <= x < 1.799315 ) gmweight=0.587406;
-                                                               if(1.799315 <= x < 2.029567 ) gmweight=0.592858;
-                                                               if(2.029567 <= x < 2.289283 ) gmweight=0.601059;
-                                                               if(2.289283 <= x < 2.582235 ) gmweight=0.608003;
-                                                               if(2.582235 <= x < 2.912674 ) gmweight=0.611705;
-                                                               if(2.912674 <= x < 3.285398 ) gmweight=0.610086;
-                                                               if(3.285398 <= x < 3.705818 ) gmweight=0.605015;
-                                                               if(3.705818 <= x < 4.180038 ) gmweight=0.596299;
-                                                               if(4.180038 <= x < 4.714942 ) gmweight=0.590727;
-                                                               if(4.714942 <= x < 5.318296 ) gmweight=0.585358;
-                                                               if(5.318296 <= x < 5.998859 ) gmweight=0.585257;
-                                                               if(5.998859 <= x < 6.766511 ) gmweight=0.580812;
-                                                               if(6.766511 <= x < 7.632396 ) gmweight=0.576207;
-                                                               if(7.632396 <= x < 8.609086 ) gmweight=0.575912;
-                                                               if(8.609086 <= x < 9.710759 ) gmweight=0.558718;
-                                                               if(9.710759 <= x < 10.953409 ) gmweight=0.555625;
-                                                               if(10.953409 <= x < 12.355077 ) gmweight=0.558886;
-                                                               if(12.355077 <= x < 13.936111 ) gmweight=0.545318;
-                                                               if(13.936111 <= x < 15.719464 ) gmweight=0.517607;
-                                                               if(15.719464 <= x < 17.731026 ) gmweight=0.512366;
-                                                               if(17.731026 <= x < 20.000000 ) gmweight=0.497034;
-                                                               
-                                                               
-                                                               
-                                                       }
-                                                       
-                                                       
-                                               }//end of IsMCefix
+                                               //________________________________________________________________
+                                               //correction for d3 based on data
                                                
-                                                       //________________________________________________________________
-                                                       //correction for d3 based on data
-                                               if(!IsMCefix){
                                                        if(TMath::Abs(fMCparticleGMother->GetPdgCode())==111){
                                                                Double_t x=gmPt;
-                                                               if(0.100000 <= x < 0.112797 ) gmweight=1.262120;
-                                                               if(0.112797 <= x < 0.127231 ) gmweight=1.277765;
-                                                               if(0.127231 <= x < 0.143512 ) gmweight=1.295605;
-                                                               if(0.143512 <= x < 0.161877 ) gmweight=1.318155;
-                                                               if(0.161877 <= x < 0.182592 ) gmweight=1.348693;
-                                                               if(0.182592 <= x < 0.205957 ) gmweight=1.388636;
-                                                               if(0.205957 <= x < 0.232313 ) gmweight=1.439122;
-                                                               if(0.232313 <= x < 0.262041 ) gmweight=1.497452;
-                                                               if(0.262041 <= x < 0.295573 ) gmweight=1.559409;
-                                                               if(0.295573 <= x < 0.333397 ) gmweight=1.615169;
-                                                               if(0.333397 <= x < 0.376060 ) gmweight=1.654954;
-                                                               if(0.376060 <= x < 0.424183 ) gmweight=1.668753;
-                                                               if(0.424183 <= x < 0.478465 ) gmweight=1.652225;
-                                                               if(0.478465 <= x < 0.539692 ) gmweight=1.603119;
-                                                               if(0.539692 <= x < 0.608754 ) gmweight=1.526049;
-                                                               if(0.608754 <= x < 0.686654 ) gmweight=1.426724;
-                                                               if(0.686654 <= x < 0.774523 ) gmweight=1.312684;
-                                                               if(0.774523 <= x < 0.873636 ) gmweight=1.195395;
-                                                               if(0.873636 <= x < 0.985432 ) gmweight=1.086264;
-                                                               if(0.985432 <= x < 1.111534 ) gmweight=0.993666;
-                                                               if(1.111534 <= x < 1.253773 ) gmweight=0.922587;
-                                                               if(1.253773 <= x < 1.414214 ) gmweight=0.875739;
-                                                               if(1.414214 <= x < 1.595185 ) gmweight=0.852181;
-                                                               if(1.595185 <= x < 1.799315 ) gmweight=0.847828;
-                                                               if(1.799315 <= x < 2.029567 ) gmweight=0.863875;
-                                                               if(2.029567 <= x < 2.289283 ) gmweight=0.899112;
-                                                               if(2.289283 <= x < 2.582235 ) gmweight=0.955194;
-                                                               if(2.582235 <= x < 2.912674 ) gmweight=1.033824;
-                                                               if(2.912674 <= x < 3.285398 ) gmweight=1.133714;
-                                                               if(3.285398 <= x < 3.705818 ) gmweight=1.259471;
-                                                               if(3.705818 <= x < 4.180038 ) gmweight=1.406883;
-                                                               if(4.180038 <= x < 4.714942 ) gmweight=1.578923;
-                                                               if(4.714942 <= x < 5.318296 ) gmweight=1.778513;
-                                                               if(5.318296 <= x < 5.998859 ) gmweight=2.001171;
-                                                               if(5.998859 <= x < 6.766511 ) gmweight=2.223161;
-                                                               if(6.766511 <= x < 7.632396 ) gmweight=2.449445;
-                                                               if(7.632396 <= x < 8.609086 ) gmweight=2.661734;
-                                                               if(8.609086 <= x < 9.710759 ) gmweight=2.851935;
-                                                               if(9.710759 <= x < 10.953409 ) gmweight=2.974319;
-                                                               if(10.953409 <= x < 12.355077 ) gmweight=3.106314;
-                                                               if(12.355077 <= x < 13.936111 ) gmweight=3.126815;
-                                                               if(13.936111 <= x < 15.719464 ) gmweight=3.150053;
-                                                               if(15.719464 <= x < 17.731026 ) gmweight=3.218509;
-                                                               if(17.731026 <= x < 20.000000 ) gmweight=3.252141;
-                                                               
+                                                               gmweight=CalculateWeight(111, x);
                                                        }
-                                               }
                                                
-                                                       //________________________________________________________________
                                                
+                                               //________________________________________________________________
+                                               //Histo pT gmother versus pT electron 
                                                
-                                                       //Histo pT gmother versus pT electron 
                                                fpT_gm_electron->Fill(gmPt, track->Pt());
                                                
                                                if(!IsTPConly)fPtBackgroundBeforeReco_weight->Fill(track->Pt(), 1./gmweight);
@@ -3153,24 +3408,24 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                        }
                }//IsMC
                
-                       ///_________________________________________________________________
+               ///_________________________________________________________________
                
-                       //________________________________________________
-                       //Associated particle cut
+               //________________________________________________
+               //Associated particle cut
                fPartnerCuts->SetAcceptKinkDaughters(kFALSE);
                fPartnerCuts->SetRequireITSRefit(kTRUE);
                fPartnerCuts->SetRequireTPCRefit(kTRUE);
                fPartnerCuts->SetEtaRange(-0.9,0.9);
                fPartnerCuts->SetMaxChi2PerClusterTPC(4.0);
                fPartnerCuts->SetMinNClustersTPC(80);
-               fPartnerCuts->SetPtRange(0.3,1e10);
-                       //fPartnerCuts->SetRequireSigmaToVertex(kTRUE);
-                       //fPartnerCuts->SetMaxDCAToVertexXY(1);
-                       //fPartnerCuts->SetMaxDCAToVertexZ(3);
-                       //_________________________________________________
-               
-                       ///#################################################################
-                       //Non-HFE reconstruction
+               fPartnerCuts->SetPtRange(0,1e10);
+               //fPartnerCuts->SetRequireSigmaToVertex(kTRUE);
+               //fPartnerCuts->SetMaxDCAToVertexXY(1);
+               //fPartnerCuts->SetMaxDCAToVertexZ(3);
+               //_________________________________________________
+               
+               ///#################################################################
+               //Non-HFE reconstruction
                fNonHFE = new AliSelectNonHFE();
                fNonHFE->SetAODanalysis(fIsAOD);
                if(fMassCutFlag) fNonHFE->SetInvariantMassCut(fMassCut);
@@ -3232,118 +3487,19 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                
                                                if(TMath::Abs(fMCparticleMother->GetPdgCode())==111 || TMath::Abs(fMCparticleMother->GetPdgCode())==221){
                                                        Double_t mPt=fMCparticleMother->Pt();
-                                                       Double_t mweight1=1;
-                                                       Double_t mweight2=1;
+                                                               Double_t mweight1=1;
+                                                               Double_t mweight2=1;
                                                                //Double_t weight=1;
                                                        
-                                                               //----------------------------------------------------------------------------
-                                                       if(IsMCefix){
-                                                               if(TMath::Abs(fMCparticleMother->GetPdgCode())==111){
-                                                                       Double_t x=mPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.030419;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.044554;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.062733;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.085332;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.115248;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.153990;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.201346;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.257332;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.315488;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.369138;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.407632;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.422232;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.406922;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.360082;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.284405;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.182017;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.062002;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=0.935533;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=0.816081;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.717527;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.647465;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.607212;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.589750;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.587406;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.592858;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.601059;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.608003;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=0.611705;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=0.610086;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=0.605015;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=0.596299;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=0.590727;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=0.585358;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=0.585257;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=0.580812;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=0.576207;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=0.575912;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=0.558718;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=0.555625;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=0.558886;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=0.545318;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=0.517607;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=0.512366;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=0.497034;
-                                                                       
-                                                                       
-                                                               }
                                                                
-                                                               
-                                                       }//end of IsMCefix
                                                         //----------------------------------------------------------------------------
                                                         //correction based on data only for pi0
-                                                       if(!IsMCefix){
                                                                if(TMath::Abs(fMCparticleMother->GetPdgCode())==111){
                                                                        Double_t x=mPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.262120;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.277765;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.295605;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.318155;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.348693;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.388636;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.439122;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.497452;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.559409;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.615169;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.654954;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.668753;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.652225;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.603119;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.526049;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.426724;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.312684;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=1.195395;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=1.086264;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.993666;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.922587;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.875739;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.852181;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.847828;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.863875;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.899112;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.955194;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=1.033824;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=1.133714;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=1.259471;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=1.406883;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=1.578923;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=1.778513;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=2.001171;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=2.223161;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=2.449445;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=2.661734;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=2.851935;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=2.974319;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=3.106314;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=3.126815;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=3.150053;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=3.218509;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=3.252141;
-                                                                       
-                                                                       
+                                                                       weight=CalculateWeight(111, x);
                                                                }
                                                                
-                                                       }
+                                                       
                                                                //----------------------------------------------------------------------------
                                                        
                                                                //check this
@@ -3356,118 +3512,21 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                }
                                                else if(fMCparticleMother->GetMother()>0 && (TMath::Abs(fMCparticleGMother->GetPdgCode())==111 || TMath::Abs(fMCparticleGMother->GetPdgCode())==221 )){
                                                        Double_t gmPt=fMCparticleGMother->Pt();
-                                                       Double_t gmweight1=1;
-                                                       Double_t gmweight2=1;
+                                                               Double_t gmweight1=1;
+                                                               Double_t gmweight2=1;
                                                                //Double_t weight=1;
                                                        
-                                                               //----------------------------------------------------------------------------
-                                                       if(IsMCefix){
-                                                               if(TMath::Abs(fMCparticleGMother->GetPdgCode())==111){
-                                                                       Double_t x=gmPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.030419;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.044554;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.062733;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.085332;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.115248;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.153990;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.201346;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.257332;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.315488;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.369138;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.407632;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.422232;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.406922;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.360082;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.284405;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.182017;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.062002;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=0.935533;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=0.816081;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.717527;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.647465;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.607212;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.589750;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.587406;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.592858;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.601059;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.608003;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=0.611705;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=0.610086;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=0.605015;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=0.596299;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=0.590727;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=0.585358;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=0.585257;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=0.580812;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=0.576207;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=0.575912;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=0.558718;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=0.555625;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=0.558886;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=0.545318;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=0.517607;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=0.512366;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=0.497034;
-                                                                       
-                                                                       
-                                                               }
-                                                               
-                                                               
-                                                       }//end of IsMCefix
-                                                        //----------------------------------------------------------------------------
+                                                       //----------------------------------------------------------------------------
+                                                       
+                                                       //----------------------------------------------------------------------------
+                                                       
+                                                       //correction based on data only for pi0
                                                        
-                                                               //correction based on data only for pi0
-                                                       if(!IsMCefix){
                                                                if(TMath::Abs(fMCparticleGMother->GetPdgCode())==111){
                                                                        Double_t x=gmPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.262120;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.277765;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.295605;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.318155;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.348693;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.388636;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.439122;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.497452;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.559409;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.615169;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.654954;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.668753;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.652225;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.603119;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.526049;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.426724;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.312684;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=1.195395;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=1.086264;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.993666;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.922587;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.875739;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.852181;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.847828;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.863875;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.899112;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.955194;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=1.033824;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=1.133714;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=1.259471;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=1.406883;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=1.578923;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=1.778513;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=2.001171;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=2.223161;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=2.449445;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=2.661734;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=2.851935;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=2.974319;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=3.106314;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=3.126815;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=3.150053;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=3.218509;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=3.252141;
-                                                                       
-                                                                       
+                                                                       weight=CalculateWeight(111, x);
                                                                }
-                                                       }
+                                                       
                                                        
                                                        
                                                        
@@ -3492,125 +3551,25 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                if(fNonHFE->IsULS()) fPtElec_ULS2->Fill(fPtE,fNonHFE->GetNULS());
                                                if(fNonHFE->IsLS()) fPtElec_LS2->Fill(fPtE,fNonHFE->GetNLS());
                                                
-                                               
-                                               
-                                               
                                                        //new 08 October        //weighted histograms 
                                                if(TMath::Abs(fMCparticleMother->GetPdgCode())==111 || TMath::Abs(fMCparticleMother->GetPdgCode())==221){
                                                        Double_t mPt=fMCparticleMother->Pt();
                                                        
-                                                       Double_t mweight1=1;
-                                                       Double_t mweight2=1;
+                                                               Double_t mweight1=1;
+                                                               Double_t mweight2=1;
                                                                //Double_t weight=1;
                                                        
-                                                               //----------------------------------------------------------------------------
-                                                       if(IsMCefix){
-                                                               if(TMath::Abs(fMCparticleMother->GetPdgCode())==111){
-                                                                       Double_t x=mPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.030419;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.044554;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.062733;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.085332;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.115248;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.153990;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.201346;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.257332;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.315488;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.369138;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.407632;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.422232;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.406922;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.360082;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.284405;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.182017;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.062002;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=0.935533;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=0.816081;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.717527;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.647465;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.607212;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.589750;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.587406;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.592858;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.601059;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.608003;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=0.611705;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=0.610086;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=0.605015;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=0.596299;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=0.590727;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=0.585358;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=0.585257;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=0.580812;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=0.576207;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=0.575912;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=0.558718;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=0.555625;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=0.558886;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=0.545318;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=0.517607;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=0.512366;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=0.497034;
-                                                                       
-                                                                       
-                                                               }
-                                                               
                                                                
-                                                       }//end of IsMCefix
                                                         //----------------------------------------------------------------------------
                                                        
-                                                               //correction based on data only for pi0 for d3
-                                                       if(!IsMCefix){
+                                                       //correction based on data only for pi0 for d3
+                                                       
                                                                if(TMath::Abs(fMCparticleMother->GetPdgCode())==111){
                                                                        Double_t x=mPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.262120;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.277765;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.295605;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.318155;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.348693;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.388636;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.439122;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.497452;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.559409;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.615169;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.654954;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.668753;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.652225;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.603119;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.526049;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.426724;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.312684;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=1.195395;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=1.086264;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.993666;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.922587;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.875739;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.852181;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.847828;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.863875;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.899112;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.955194;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=1.033824;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=1.133714;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=1.259471;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=1.406883;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=1.578923;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=1.778513;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=2.001171;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=2.223161;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=2.449445;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=2.661734;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=2.851935;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=2.974319;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=3.106314;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=3.126815;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=3.150053;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=3.218509;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=3.252141;
-                                                                       
-                                                                       
+                                                                       weight=CalculateWeight(111, x);
+                                                                                                                                                                                                                       
                                                                }
-                                                       }
+                                                       
                                                        
                                                                //check this
                                                        if(fNonHFE->IsULS()) mweight1=(fNonHFE->GetNULS())/weight;
@@ -3627,113 +3586,16 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                                //Double_t weight=1;
                                                        
                                                        
-                                                               //----------------------------------------------------------------------------
-                                                       if(IsMCefix){
-                                                               if(TMath::Abs(fMCparticleGMother->GetPdgCode())==111){
-                                                                       Double_t x=gmPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.030419;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.044554;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.062733;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.085332;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.115248;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.153990;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.201346;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.257332;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.315488;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.369138;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.407632;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.422232;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.406922;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.360082;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.284405;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.182017;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.062002;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=0.935533;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=0.816081;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.717527;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.647465;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.607212;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.589750;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.587406;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.592858;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.601059;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.608003;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=0.611705;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=0.610086;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=0.605015;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=0.596299;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=0.590727;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=0.585358;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=0.585257;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=0.580812;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=0.576207;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=0.575912;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=0.558718;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=0.555625;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=0.558886;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=0.545318;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=0.517607;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=0.512366;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=0.497034;
-                                                                       
-                                                                       
-                                                               }
-                                                               
-                                                               
-                                                       }//end of IsMCefix
-                                                        //----------------------------------------------------------------------------
+                                                       //----------------------------------------------------------------------------
                                                         //correction based on data only for pi0
-                                                       if(!IsMCefix){
+                                                       
                                                                if(TMath::Abs(fMCparticleGMother->GetPdgCode())==111){
                                                                        Double_t x=gmPt;
-                                                                       if(0.100000 <= x < 0.112797 ) weight=1.262120;
-                                                                       if(0.112797 <= x < 0.127231 ) weight=1.277765;
-                                                                       if(0.127231 <= x < 0.143512 ) weight=1.295605;
-                                                                       if(0.143512 <= x < 0.161877 ) weight=1.318155;
-                                                                       if(0.161877 <= x < 0.182592 ) weight=1.348693;
-                                                                       if(0.182592 <= x < 0.205957 ) weight=1.388636;
-                                                                       if(0.205957 <= x < 0.232313 ) weight=1.439122;
-                                                                       if(0.232313 <= x < 0.262041 ) weight=1.497452;
-                                                                       if(0.262041 <= x < 0.295573 ) weight=1.559409;
-                                                                       if(0.295573 <= x < 0.333397 ) weight=1.615169;
-                                                                       if(0.333397 <= x < 0.376060 ) weight=1.654954;
-                                                                       if(0.376060 <= x < 0.424183 ) weight=1.668753;
-                                                                       if(0.424183 <= x < 0.478465 ) weight=1.652225;
-                                                                       if(0.478465 <= x < 0.539692 ) weight=1.603119;
-                                                                       if(0.539692 <= x < 0.608754 ) weight=1.526049;
-                                                                       if(0.608754 <= x < 0.686654 ) weight=1.426724;
-                                                                       if(0.686654 <= x < 0.774523 ) weight=1.312684;
-                                                                       if(0.774523 <= x < 0.873636 ) weight=1.195395;
-                                                                       if(0.873636 <= x < 0.985432 ) weight=1.086264;
-                                                                       if(0.985432 <= x < 1.111534 ) weight=0.993666;
-                                                                       if(1.111534 <= x < 1.253773 ) weight=0.922587;
-                                                                       if(1.253773 <= x < 1.414214 ) weight=0.875739;
-                                                                       if(1.414214 <= x < 1.595185 ) weight=0.852181;
-                                                                       if(1.595185 <= x < 1.799315 ) weight=0.847828;
-                                                                       if(1.799315 <= x < 2.029567 ) weight=0.863875;
-                                                                       if(2.029567 <= x < 2.289283 ) weight=0.899112;
-                                                                       if(2.289283 <= x < 2.582235 ) weight=0.955194;
-                                                                       if(2.582235 <= x < 2.912674 ) weight=1.033824;
-                                                                       if(2.912674 <= x < 3.285398 ) weight=1.133714;
-                                                                       if(3.285398 <= x < 3.705818 ) weight=1.259471;
-                                                                       if(3.705818 <= x < 4.180038 ) weight=1.406883;
-                                                                       if(4.180038 <= x < 4.714942 ) weight=1.578923;
-                                                                       if(4.714942 <= x < 5.318296 ) weight=1.778513;
-                                                                       if(5.318296 <= x < 5.998859 ) weight=2.001171;
-                                                                       if(5.998859 <= x < 6.766511 ) weight=2.223161;
-                                                                       if(6.766511 <= x < 7.632396 ) weight=2.449445;
-                                                                       if(7.632396 <= x < 8.609086 ) weight=2.661734;
-                                                                       if(8.609086 <= x < 9.710759 ) weight=2.851935;
-                                                                       if(9.710759 <= x < 10.953409 ) weight=2.974319;
-                                                                       if(10.953409 <= x < 12.355077 ) weight=3.106314;
-                                                                       if(12.355077 <= x < 13.936111 ) weight=3.126815;
-                                                                       if(13.936111 <= x < 15.719464 ) weight=3.150053;
-                                                                       if(15.719464 <= x < 17.731026 ) weight=3.218509;
-                                                                       if(17.731026 <= x < 20.000000 ) weight=3.252141;
                                                                        
+                                                                       weight=CalculateWeight(111, x);
                                                                        
                                                                }
-                                                       }
+                                                       
                                                        //----------------------------------------------------------------------------
                                                        
                                                        
@@ -3751,8 +3613,12 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                        if(fNonHFE->IsLS()) fPtElec_LS2_weight->Fill(fPtE,fNonHFE->GetNLS());                           
                                                }
                                                
-                                                       //ULS with no weight from ULS-LS original
-                                                       // we have to know if track2 comes from same mother!!!
+                                                       
+                                               //----------------------------------------------------------------------------
+                                               //to check other way to calculate efficiency
+                                               //ULS with no weight from ULS-LS original
+                                               //we have to know if track2 comes from same mother!!!
+                                               //----------------------------------------------------------------------------
                                                if(fNonHFE->IsULS()){
                                                        
                                                        for(Int_t iTracks = 0; iTracks < fVevent->GetNumberOfTracks(); iTracks++) 
@@ -3773,228 +3639,44 @@ void AliAnalysisTaskEMCalHFEpA::Background(AliVTrack *track, Int_t trackIndex, A
                                                                {
                                                                        if(fUlsPartner[i]==iTracks){
                                                                                        //only fill if it has same mother
-                                                                               
-                                                                               if(fMCparticle2->GetMother()==fMCparticle->GetMother()) fPtElec_ULS_MC->Fill(fPtE);
+                                                                                       //with weight to take into account the number of partners
+                                                                               if(fMCparticle2->GetMother()==fMCparticle->GetMother()) fPtElec_ULS_MC->Fill(fPtE, fNonHFE->GetNULS());
                                                                                
                                                                                //-----------------------------------------------------------------------------------------------------------
                                                                                //weight for mother
-                                                                               Double_t weight2=1;
+                                                                               //Double_t weight2=1;
                                                                                Double_t mPt=fMCparticleMother->Pt();
                                                                                
                                                                                                                                                                
                                                                                if(TMath::Abs(fMCparticleMother->GetPdgCode())==111){
                                                                                        Double_t x=mPt;
-                                                                                       
-                                                                                       if(!IsMCefix){
-                                                                                               if(0.100000 <= x < 0.112797 ) weight=1.262120;
-                                                                                               if(0.112797 <= x < 0.127231 ) weight=1.277765;
-                                                                                               if(0.127231 <= x < 0.143512 ) weight=1.295605;
-                                                                                               if(0.143512 <= x < 0.161877 ) weight=1.318155;
-                                                                                               if(0.161877 <= x < 0.182592 ) weight=1.348693;
-                                                                                               if(0.182592 <= x < 0.205957 ) weight=1.388636;
-                                                                                               if(0.205957 <= x < 0.232313 ) weight=1.439122;
-                                                                                               if(0.232313 <= x < 0.262041 ) weight=1.497452;
-                                                                                               if(0.262041 <= x < 0.295573 ) weight=1.559409;
-                                                                                               if(0.295573 <= x < 0.333397 ) weight=1.615169;
-                                                                                               if(0.333397 <= x < 0.376060 ) weight=1.654954;
-                                                                                               if(0.376060 <= x < 0.424183 ) weight=1.668753;
-                                                                                               if(0.424183 <= x < 0.478465 ) weight=1.652225;
-                                                                                               if(0.478465 <= x < 0.539692 ) weight=1.603119;
-                                                                                               if(0.539692 <= x < 0.608754 ) weight=1.526049;
-                                                                                               if(0.608754 <= x < 0.686654 ) weight=1.426724;
-                                                                                               if(0.686654 <= x < 0.774523 ) weight=1.312684;
-                                                                                               if(0.774523 <= x < 0.873636 ) weight=1.195395;
-                                                                                               if(0.873636 <= x < 0.985432 ) weight=1.086264;
-                                                                                               if(0.985432 <= x < 1.111534 ) weight=0.993666;
-                                                                                               if(1.111534 <= x < 1.253773 ) weight=0.922587;
-                                                                                               if(1.253773 <= x < 1.414214 ) weight=0.875739;
-                                                                                               if(1.414214 <= x < 1.595185 ) weight=0.852181;
-                                                                                               if(1.595185 <= x < 1.799315 ) weight=0.847828;
-                                                                                               if(1.799315 <= x < 2.029567 ) weight=0.863875;
-                                                                                               if(2.029567 <= x < 2.289283 ) weight=0.899112;
-                                                                                               if(2.289283 <= x < 2.582235 ) weight=0.955194;
-                                                                                               if(2.582235 <= x < 2.912674 ) weight=1.033824;
-                                                                                               if(2.912674 <= x < 3.285398 ) weight=1.133714;
-                                                                                               if(3.285398 <= x < 3.705818 ) weight=1.259471;
-                                                                                               if(3.705818 <= x < 4.180038 ) weight=1.406883;
-                                                                                               if(4.180038 <= x < 4.714942 ) weight=1.578923;
-                                                                                               if(4.714942 <= x < 5.318296 ) weight=1.778513;
-                                                                                               if(5.318296 <= x < 5.998859 ) weight=2.001171;
-                                                                                               if(5.998859 <= x < 6.766511 ) weight=2.223161;
-                                                                                               if(6.766511 <= x < 7.632396 ) weight=2.449445;
-                                                                                               if(7.632396 <= x < 8.609086 ) weight=2.661734;
-                                                                                               if(8.609086 <= x < 9.710759 ) weight=2.851935;
-                                                                                               if(9.710759 <= x < 10.953409 ) weight=2.974319;
-                                                                                               if(10.953409 <= x < 12.355077 ) weight=3.106314;
-                                                                                               if(12.355077 <= x < 13.936111 ) weight=3.126815;
-                                                                                               if(13.936111 <= x < 15.719464 ) weight=3.150053;
-                                                                                               if(15.719464 <= x < 17.731026 ) weight=3.218509;
-                                                                                               if(17.731026 <= x < 20.000000 ) weight=3.252141;
-                                                                                               
-                                                                                       }
-                                                                                       if(IsMCefix){
-                                                                                               
-                                                                                               if(0.100000 <= x < 0.112797 ) weight2=1.030419;
-                                                                                               if(0.112797 <= x < 0.127231 ) weight2=1.044554;
-                                                                                               if(0.127231 <= x < 0.143512 ) weight2=1.062733;
-                                                                                               if(0.143512 <= x < 0.161877 ) weight2=1.085332;
-                                                                                               if(0.161877 <= x < 0.182592 ) weight2=1.115248;
-                                                                                               if(0.182592 <= x < 0.205957 ) weight2=1.153990;
-                                                                                               if(0.205957 <= x < 0.232313 ) weight2=1.201346;
-                                                                                               if(0.232313 <= x < 0.262041 ) weight2=1.257332;
-                                                                                               if(0.262041 <= x < 0.295573 ) weight2=1.315488;
-                                                                                               if(0.295573 <= x < 0.333397 ) weight2=1.369138;
-                                                                                               if(0.333397 <= x < 0.376060 ) weight2=1.407632;
-                                                                                               if(0.376060 <= x < 0.424183 ) weight2=1.422232;
-                                                                                               if(0.424183 <= x < 0.478465 ) weight2=1.406922;
-                                                                                               if(0.478465 <= x < 0.539692 ) weight2=1.360082;
-                                                                                               if(0.539692 <= x < 0.608754 ) weight2=1.284405;
-                                                                                               if(0.608754 <= x < 0.686654 ) weight2=1.182017;
-                                                                                               if(0.686654 <= x < 0.774523 ) weight2=1.062002;
-                                                                                               if(0.774523 <= x < 0.873636 ) weight2=0.935533;
-                                                                                               if(0.873636 <= x < 0.985432 ) weight2=0.816081;
-                                                                                               if(0.985432 <= x < 1.111534 ) weight2=0.717527;
-                                                                                               if(1.111534 <= x < 1.253773 ) weight2=0.647465;
-                                                                                               if(1.253773 <= x < 1.414214 ) weight2=0.607212;
-                                                                                               if(1.414214 <= x < 1.595185 ) weight2=0.589750;
-                                                                                               if(1.595185 <= x < 1.799315 ) weight2=0.587406;
-                                                                                               if(1.799315 <= x < 2.029567 ) weight2=0.592858;
-                                                                                               if(2.029567 <= x < 2.289283 ) weight2=0.601059;
-                                                                                               if(2.289283 <= x < 2.582235 ) weight2=0.608003;
-                                                                                               if(2.582235 <= x < 2.912674 ) weight2=0.611705;
-                                                                                               if(2.912674 <= x < 3.285398 ) weight2=0.610086;
-                                                                                               if(3.285398 <= x < 3.705818 ) weight2=0.605015;
-                                                                                               if(3.705818 <= x < 4.180038 ) weight2=0.596299;
-                                                                                               if(4.180038 <= x < 4.714942 ) weight2=0.590727;
-                                                                                               if(4.714942 <= x < 5.318296 ) weight2=0.585358;
-                                                                                               if(5.318296 <= x < 5.998859 ) weight2=0.585257;
-                                                                                               if(5.998859 <= x < 6.766511 ) weight2=0.580812;
-                                                                                               if(6.766511 <= x < 7.632396 ) weight2=0.576207;
-                                                                                               if(7.632396 <= x < 8.609086 ) weight2=0.575912;
-                                                                                               if(8.609086 <= x < 9.710759 ) weight2=0.558718;
-                                                                                               if(9.710759 <= x < 10.953409 ) weight2=0.555625;
-                                                                                               if(10.953409 <= x < 12.355077 ) weight2=0.558886;
-                                                                                               if(12.355077 <= x < 13.936111 ) weight2=0.545318;
-                                                                                               if(13.936111 <= x < 15.719464 ) weight2=0.517607;
-                                                                                               if(15.719464 <= x < 17.731026 ) weight2=0.512366;
-                                                                                               if(17.731026 <= x < 20.000000 ) weight2=0.497034;
-                                                                                               
-                                                                                               
-                                                                                       }
+                                                                                       weight=CalculateWeight(111, x);
+                                                                                                                                                                                                                                                                       
                                                                                        
                                                                                }
-                                                                                       //weight for grandmother
+                                                                               
+                                                                               //weight for grandmother
                                                                                Double_t gmPt=fMCparticleGMother->Pt();
                                                                                if(TMath::Abs((fMCparticleMother->GetMother()>0) && ((fMCparticleGMother->GetPdgCode())==111))){
                                                                                        Double_t x=gmPt;
-                                                                                       
-                                                                                       if(!IsMCefix){
-                                                                                               if(0.100000 <= x < 0.112797 ) weight=1.262120;
-                                                                                               if(0.112797 <= x < 0.127231 ) weight=1.277765;
-                                                                                               if(0.127231 <= x < 0.143512 ) weight=1.295605;
-                                                                                               if(0.143512 <= x < 0.161877 ) weight=1.318155;
-                                                                                               if(0.161877 <= x < 0.182592 ) weight=1.348693;
-                                                                                               if(0.182592 <= x < 0.205957 ) weight=1.388636;
-                                                                                               if(0.205957 <= x < 0.232313 ) weight=1.439122;
-                                                                                               if(0.232313 <= x < 0.262041 ) weight=1.497452;
-                                                                                               if(0.262041 <= x < 0.295573 ) weight=1.559409;
-                                                                                               if(0.295573 <= x < 0.333397 ) weight=1.615169;
-                                                                                               if(0.333397 <= x < 0.376060 ) weight=1.654954;
-                                                                                               if(0.376060 <= x < 0.424183 ) weight=1.668753;
-                                                                                               if(0.424183 <= x < 0.478465 ) weight=1.652225;
-                                                                                               if(0.478465 <= x < 0.539692 ) weight=1.603119;
-                                                                                               if(0.539692 <= x < 0.608754 ) weight=1.526049;
-                                                                                               if(0.608754 <= x < 0.686654 ) weight=1.426724;
-                                                                                               if(0.686654 <= x < 0.774523 ) weight=1.312684;
-                                                                                               if(0.774523 <= x < 0.873636 ) weight=1.195395;
-                                                                                               if(0.873636 <= x < 0.985432 ) weight=1.086264;
-                                                                                               if(0.985432 <= x < 1.111534 ) weight=0.993666;
-                                                                                               if(1.111534 <= x < 1.253773 ) weight=0.922587;
-                                                                                               if(1.253773 <= x < 1.414214 ) weight=0.875739;
-                                                                                               if(1.414214 <= x < 1.595185 ) weight=0.852181;
-                                                                                               if(1.595185 <= x < 1.799315 ) weight=0.847828;
-                                                                                               if(1.799315 <= x < 2.029567 ) weight=0.863875;
-                                                                                               if(2.029567 <= x < 2.289283 ) weight=0.899112;
-                                                                                               if(2.289283 <= x < 2.582235 ) weight=0.955194;
-                                                                                               if(2.582235 <= x < 2.912674 ) weight=1.033824;
-                                                                                               if(2.912674 <= x < 3.285398 ) weight=1.133714;
-                                                                                               if(3.285398 <= x < 3.705818 ) weight=1.259471;
-                                                                                               if(3.705818 <= x < 4.180038 ) weight=1.406883;
-                                                                                               if(4.180038 <= x < 4.714942 ) weight=1.578923;
-                                                                                               if(4.714942 <= x < 5.318296 ) weight=1.778513;
-                                                                                               if(5.318296 <= x < 5.998859 ) weight=2.001171;
-                                                                                               if(5.998859 <= x < 6.766511 ) weight=2.223161;
-                                                                                               if(6.766511 <= x < 7.632396 ) weight=2.449445;
-                                                                                               if(7.632396 <= x < 8.609086 ) weight=2.661734;
-                                                                                               if(8.609086 <= x < 9.710759 ) weight=2.851935;
-                                                                                               if(9.710759 <= x < 10.953409 ) weight=2.974319;
-                                                                                               if(10.953409 <= x < 12.355077 ) weight=3.106314;
-                                                                                               if(12.355077 <= x < 13.936111 ) weight=3.126815;
-                                                                                               if(13.936111 <= x < 15.719464 ) weight=3.150053;
-                                                                                               if(15.719464 <= x < 17.731026 ) weight=3.218509;
-                                                                                               if(17.731026 <= x < 20.000000 ) weight=3.252141;
-                                                                                               
-                                                                                       }
-                                                                                       if(IsMCefix){
-                                                                                               
-                                                                                               if(0.100000 <= x < 0.112797 ) weight2=1.030419;
-                                                                                               if(0.112797 <= x < 0.127231 ) weight2=1.044554;
-                                                                                               if(0.127231 <= x < 0.143512 ) weight2=1.062733;
-                                                                                               if(0.143512 <= x < 0.161877 ) weight2=1.085332;
-                                                                                               if(0.161877 <= x < 0.182592 ) weight2=1.115248;
-                                                                                               if(0.182592 <= x < 0.205957 ) weight2=1.153990;
-                                                                                               if(0.205957 <= x < 0.232313 ) weight2=1.201346;
-                                                                                               if(0.232313 <= x < 0.262041 ) weight2=1.257332;
-                                                                                               if(0.262041 <= x < 0.295573 ) weight2=1.315488;
-                                                                                               if(0.295573 <= x < 0.333397 ) weight2=1.369138;
-                                                                                               if(0.333397 <= x < 0.376060 ) weight2=1.407632;
-                                                                                               if(0.376060 <= x < 0.424183 ) weight2=1.422232;
-                                                                                               if(0.424183 <= x < 0.478465 ) weight2=1.406922;
-                                                                                               if(0.478465 <= x < 0.539692 ) weight2=1.360082;
-                                                                                               if(0.539692 <= x < 0.608754 ) weight2=1.284405;
-                                                                                               if(0.608754 <= x < 0.686654 ) weight2=1.182017;
-                                                                                               if(0.686654 <= x < 0.774523 ) weight2=1.062002;
-                                                                                               if(0.774523 <= x < 0.873636 ) weight2=0.935533;
-                                                                                               if(0.873636 <= x < 0.985432 ) weight2=0.816081;
-                                                                                               if(0.985432 <= x < 1.111534 ) weight2=0.717527;
-                                                                                               if(1.111534 <= x < 1.253773 ) weight2=0.647465;
-                                                                                               if(1.253773 <= x < 1.414214 ) weight2=0.607212;
-                                                                                               if(1.414214 <= x < 1.595185 ) weight2=0.589750;
-                                                                                               if(1.595185 <= x < 1.799315 ) weight2=0.587406;
-                                                                                               if(1.799315 <= x < 2.029567 ) weight2=0.592858;
-                                                                                               if(2.029567 <= x < 2.289283 ) weight2=0.601059;
-                                                                                               if(2.289283 <= x < 2.582235 ) weight2=0.608003;
-                                                                                               if(2.582235 <= x < 2.912674 ) weight2=0.611705;
-                                                                                               if(2.912674 <= x < 3.285398 ) weight2=0.610086;
-                                                                                               if(3.285398 <= x < 3.705818 ) weight2=0.605015;
-                                                                                               if(3.705818 <= x < 4.180038 ) weight2=0.596299;
-                                                                                               if(4.180038 <= x < 4.714942 ) weight2=0.590727;
-                                                                                               if(4.714942 <= x < 5.318296 ) weight2=0.585358;
-                                                                                               if(5.318296 <= x < 5.998859 ) weight2=0.585257;
-                                                                                               if(5.998859 <= x < 6.766511 ) weight2=0.580812;
-                                                                                               if(6.766511 <= x < 7.632396 ) weight2=0.576207;
-                                                                                               if(7.632396 <= x < 8.609086 ) weight2=0.575912;
-                                                                                               if(8.609086 <= x < 9.710759 ) weight2=0.558718;
-                                                                                               if(9.710759 <= x < 10.953409 ) weight2=0.555625;
-                                                                                               if(10.953409 <= x < 12.355077 ) weight2=0.558886;
-                                                                                               if(12.355077 <= x < 13.936111 ) weight2=0.545318;
-                                                                                               if(13.936111 <= x < 15.719464 ) weight2=0.517607;
-                                                                                               if(15.719464 <= x < 17.731026 ) weight2=0.512366;
-                                                                                               if(17.731026 <= x < 20.000000 ) weight2=0.497034;
-                                                                                               
-                                                                                       }
+                                                                                       weight=CalculateWeight(111, x);
+                                                                                                                                                                                                                       
                                                                                }
                                                                                
-                                                                               if(fMCparticle2->GetMother()==fMCparticle->GetMother()) fPtElec_ULS_MC_weight->Fill(fPtE, 1./weight2);
                                                                                
-                                                                                       //-----------------------------------------------------------------------------------------------------------
-                                                                                       //end of weight
+                                                                               if(fMCparticle2->GetMother()==fMCparticle->GetMother()) fPtElec_ULS_MC_weight->Fill(fPtE, (fNonHFE->GetNULS())*1./weight);
+                                                                               
+                                                                               //-----------------------------------------------------------------------------------------------------------
+                                                                               //end of weight
                                                                                
                                                                        }//partner found same as track
                                                                }//loop in all partner
                                                                
                                                        }//track
                                                }//is ULS
+                                               //----------------------------------------------------------------------------
+                                               //end of part to check other way to calculate efficiency
+                                               //----------------------------------------------------------------------------
                                                
                                        }//IsTPConly
                                        
@@ -4681,3 +4363,169 @@ Bool_t AliAnalysisTaskEMCalHFEpA::FindMother(Int_t mcIndex)
                }
        }
 }
+/*
+Bool_t AliAnalysisTaskEMCalHFEpA::ContainsBadChannel(TString calorimeter,UShort_t* cellList, Int_t nCells)
+{
+               // Check that in the cluster cells, there is no bad channel of those stored 
+               // in fEMCALBadChannelMap 
+               // adapted from AliCalorimeterUtils
+       
+               //if (!fRemoveBadChannels) return kFALSE;
+               //printf("fEMCALBadChannelMap %p, fPHOSBadChannelMap %p \n",fEMCALBadChannelMap,fPHOSBadChannelMap);
+       if( !fEMCALRecoUtils->GetEMCALChannelStatusMap(0)) return kFALSE;
+               
+               //Int_t icol = -1;
+               //Int_t irow = -1;
+               //Int_t imod = -1;
+       for(Int_t iCell = 0; iCell<nCells; iCell++){
+               
+                       //Get the column and row
+               if(calorimeter == "EMCAL"){
+                       return fEMCALRecoUtils->ClusterContainsBadChannel((AliEMCALGeometry*)fEMCALGeo,cellList,nCells);
+               }
+               else return kFALSE;
+               
+       }// cell cluster loop
+       
+       return kFALSE;
+       
+}
+*/
+/*
+
+//________________________________________________________________________________
+TArrayI AliAnalysisTaskEMCalHFEpA::GetTriggerPatches(Bool_t IsEventEMCALL0, Bool_t IsEventEMCALL1)
+{
+       // Select the patches that triggered
+       // Depend on L0 or L1
+       
+       // some variables
+       //Int_t  trigtimes[30], globCol, globRow,ntimes, i;
+       Int_t   globCol, globRow;
+
+       Int_t  absId  = -1; //[100];
+       Int_t  nPatch = 0;
+       
+       TArrayI patches(0);
+       
+               // get object pointer
+       AliVCaloTrigger *caloTrigger = InputEvent()->GetCaloTrigger( "EMCAL" );
+       
+               // class is not empty
+       if( caloTrigger->GetEntries() > 0 )
+       {
+                       // must reset before usage, or the class will fail
+               caloTrigger->Reset();
+               
+                       // go throuth the trigger channels
+               while( caloTrigger->Next() )
+               {
+                               // get position in global 2x2 tower coordinates
+                       caloTrigger->GetPosition( globCol, globRow );
+                       
+                       //L0
+                       if(IsEventEMCALL0)
+                       {
+                           //not implemented
+                       }
+                               
+                                       
+                       else if(IsEventEMCALL1) // L1
+                       {
+                                       Int_t bit = 0;
+                                       caloTrigger->GetTriggerBits(bit);
+                                       
+                                       Bool_t isEGA = ((bit >> fBitEGA) & 0x1);
+                                       //Bool_t isEJE = ((bit >> fBitEJE) & 0x1) && IsEventEMCALL1Jet  () ;
+                                       
+                                       if(!isEGA) continue;
+                                       
+                                       Int_t patchsize = -1;
+                                       if(isEGA) patchsize =  2;
+                                       //else if (isEJE) patchsize = 16;
+                                       
+                                       // add 2x2 (EGA) or 16x16 (EJE) patches
+                                       for(Int_t irow=0; irow < patchsize; irow++)
+                                       {
+                                               for(Int_t icol=0; icol < patchsize; icol++)
+                                               {
+                                                       GetCaloUtils()->GetEMCALGeometry()->GetAbsFastORIndexFromPositionInEMCAL(globCol+icol,globRow+irow, absId);
+                                                       //printf("pass the time cut globCol %d, globRow %d absId %d\n",globCol,globRow, absIDTrig[nTrig]);
+                                                       patches.Set(nPatch+1); // Set size of this array to nPatch+1 ints.
+                                                       patches.AddAt(absId,nPatch++); //Add Int_t absId at position nPatch++
+                                               }
+                                       }
+                                       
+                       } // L1
+                       
+               } // trigger iterator
+       } // go thorough triggers
+       
+       printf("N patches %d, test %d,first %d, last %d\n",patches.GetSize(), nPatch, patches.At(0), patches.At(patches.GetSize()-1));
+       
+       return patches;
+}
+ */
+Double_t AliAnalysisTaskEMCalHFEpA::CalculateWeight(Int_t pdg_particle, Double_t x)
+{
+               //weight for d3 based on MinJung parametrization //sent by Jan
+           Double_t weight=1;
+               if(pdg_particle==111){
+                       if(x>= 0.100000 &&  x < 0.112797 ) weight=1.262120;
+                       if(x>= 0.112797 &&  x < 0.127231 ) weight=1.277765;
+                       if(x>= 0.127231 &&  x < 0.143512 ) weight=1.295605;
+                       if(x>= 0.143512 &&  x < 0.161877 ) weight=1.318155;
+                       if(x>= 0.161877 &&  x < 0.182592 ) weight=1.348693;
+                       if(x>= 0.182592 &&  x < 0.205957 ) weight=1.388636;
+                       if(x>= 0.205957 &&  x < 0.232313 ) weight=1.439122;
+                       if(x>= 0.232313 &&  x < 0.262041 ) weight=1.497452;
+                       if(x>= 0.262041 &&  x < 0.295573 ) weight=1.559409;
+                       if(x>= 0.295573 &&  x < 0.333397 ) weight=1.615169;
+                       if(x>= 0.333397 &&  x < 0.376060 ) weight=1.654954;
+                       if(x>= 0.376060 &&  x < 0.424183 ) weight=1.668753;
+                       if(x>= 0.424183 &&  x < 0.478465 ) weight=1.652225;
+                       if(x>= 0.478465 &&  x < 0.539692 ) weight=1.603119;
+                       if(x>= 0.539692 &&  x < 0.608754 ) weight=1.526049;
+                       if(x>= 0.608754 &&  x < 0.686654 ) weight=1.426724;
+                       if(x>= 0.686654 &&  x < 0.774523 ) weight=1.312684;
+                       if(x>= 0.774523 &&  x < 0.873636 ) weight=1.195395;
+                       if(x>= 0.873636 &&  x < 0.985432 ) weight=1.086264;
+                       if(x>= 0.985432 &&  x < 1.111534 ) weight=0.993666;
+                       if(x>= 1.111534 &&  x < 1.253773 ) weight=0.922587;
+                       if(x>= 1.253773 &&  x < 1.414214 ) weight=0.875739;
+                       if(x>= 1.414214 &&  x < 1.595185 ) weight=0.852181;
+                       if(x>= 1.595185 &&  x < 1.799315 ) weight=0.847828;
+                       if(x>= 1.799315 &&  x < 2.029567 ) weight=0.863875;
+                       if(x>= 2.029567 &&  x < 2.289283 ) weight=0.899112;
+                       if(x>= 2.289283 &&  x < 2.582235 ) weight=0.955194;
+                       if(x>= 2.582235 &&  x < 2.912674 ) weight=1.033824;
+                       if(x>= 2.912674 &&  x < 3.285398 ) weight=1.133714;
+                       if(x>= 3.285398 &&  x < 3.705818 ) weight=1.259471;
+                       if(x>= 3.705818 &&  x < 4.180038 ) weight=1.406883;
+                       if(x>= 4.180038 &&  x < 4.714942 ) weight=1.578923;
+                       if(x>= 4.714942 &&  x < 5.318296 ) weight=1.778513;
+                       if(x>= 5.318296 &&  x < 5.998859 ) weight=2.001171;
+                       if(x>= 5.998859 &&  x < 6.766511 ) weight=2.223161;
+                       if(x>= 6.766511 &&  x < 7.632396 ) weight=2.449445;
+                       if(x>= 7.632396 &&  x < 8.609086 ) weight=2.661734;
+                       if(x>= 8.609086 &&  x < 9.710759 ) weight=2.851935;
+                       if(x>= 9.710759 &&  x < 10.953409 ) weight=2.974319;
+                       if(x>= 10.953409 &&  x < 12.355077 ) weight=3.106314;
+                       if(x>= 12.355077 &&  x < 13.936111 ) weight=3.126815;
+                       if(x>= 13.936111 &&  x < 15.719464 ) weight=3.150053;
+                       if(x>= 15.719464 &&  x < 17.731026 ) weight=3.218509;
+                       if(x>= 17.731026 &&  x < 20.000000 ) weight=3.252141;                   
+                       
+               }
+           else if(pdg_particle==221){
+                  weight=1;
+               }
+           else weight=1;
+       
+           return weight;
+       
+}
+
+       
+
+
index 335053970e4ace48860ea7dabfe79a1d9091b5e2..57ec18873a22543486eeb27c07807757efe69635 100644 (file)
@@ -39,6 +39,28 @@ class TObjArray;
        //Lucile
 class AliCaloTrackAODReader;
 class AliCaloTrackReader;
+       //exotic
+class AliEMCALRecoUtils;
+class AliAODReader;
+class AliCalorimeterUtils;
+
+       // --- ROOT system ---
+#include <TObject.h> 
+#include <TString.h>
+#include <TObjArray.h>
+class TArrayF;  
+#include <TH2I.h>
+#include <TGeoMatrix.h>
+
+       //--- ANALYSIS system ---
+class AliVEvent;
+class AliVTrack;
+class AliAODPWG4Particle;
+class AliAODCaloCluster;
+class AliVCaloCells;
+class AliPHOSGeoUtils;
+class AliEMCALGeometry;
+#include "AliEMCALRecoUtils.h"
 
 
        //______________________________________________________________________
@@ -96,6 +118,12 @@ public:
        
                //Getters
        AliHFEpid *GetPID() const {return fPID;};
+               //bad channel
+               //AliEMCALGeometry * GetEMCALGeometry()              const { return fEMCALGeo; }
+               //AliCalorimeterUtils * GetCaloUtils()               const { return fCaloUtils; }
+       /*AliCalorimeterUtils * GetCaloUtils()                                { if(!fCaloUtils) fCaloUtils = new AliCalorimeterUtils(); 
+               return fCaloUtils      ; }*/
+
                //______________________________________________________________________
        
                //______________________________________________________________________
@@ -113,6 +141,9 @@ private:
        void DiHadronCorrelation(AliVTrack *track, Int_t trackIndex);
                //Find Mothers (Finde HFE and NonHFE from MC information)
        Bool_t FindMother(Int_t mcIndex);
+       Bool_t ContainsBadChannel(TString calorimeter,UShort_t* cellList, Int_t nCells);
+       TArrayI GetTriggerPatches(Bool_t IsEventEMCALL0, Bool_t IsEventEMCALL1);
+       Double_t CalculateWeight(Int_t pdg_particle, Double_t x);
        
                //Flags for specifics analysis
        Bool_t                          fCorrelationFlag;
@@ -166,6 +197,7 @@ private:
        
                //Histograms
        TH1F                            *fNevent;
+       TH1F                            *fNevent2;
        TH1F                            *fPtElec_Inc;
        
        TH1F                            *fPtPrim;
@@ -204,15 +236,11 @@ private:
        TH2F                            *fTOF01;
        TH2F                            *fTOF02;
        TH2F                            *fTOF03;
-
        TH1F                            *fpid;          
-       
        TH2F                            **fEoverP_pt;
        TH2F                            **fEoverP_tpc;
-       
        TH1F                            **fTPC_pt;
        TH2F                            **fTPC_p;
-       
        TH1F                            **fTPCnsigma_pt;
        TH2F                            **fTPCnsigma_p;
        TH2F                            *fTPCnsigma_pt_2D;
@@ -221,38 +249,46 @@ private:
        TH2F                            *fShowerShapeM20_EoverP;
        TH2F                            *fShowerShape_ha;
        TH2F                            *fShowerShape_ele;
-       
        TH2F                            *fTPCnsigma_eta;
        TH2F                            *fTPCnsigma_phi;
-       
-       
        TH1F                            **fECluster;
        TH1F                            *fECluster_pure;
+       TH1F                            *fECluster_not_exotic;
+       TH1F                            *fECluster_not_exotic1;
+       TH1F                            *fECluster_not_exotic2;
+       TH1F                            *fECluster_exotic;
+       TH1F                            *fNCluster_pure;
+       TH1F                            *fNCluster_pure_aod;
+       TH2F                            *fNCluster_ECluster;
+       TH2F                            *fNcells_energy;
+       TH2F                            *fNcells_energy_elec_selected;
+       TH2F                            *fNcells_energy_not_exotic;
        TH2F                            **fEtaPhi;
        TH2F                            *fEtaPhi_num;
        TH2F                            *fEtaPhi_den;
-       
+       TH2F                            *fEtaPhi_data;
        TH2F                            *fpt_reco_pt_MC_num;
        TH2F                            *fpt_reco_pt_MC_den;
-       
        TH1F                            **fVtxZ;
-       
        TH1F                            *fVtxZ_new1;
        TH1F                            *fVtxZ_new2;
        TH1F                            *fVtxZ_new3;
        TH1F                            *fVtxZ_new4;
        
+       TH1F                    *fzRes1;
+       TH1F                    *fzRes2;
+       TH1F                    *fSPD_track_vtx1;
+       TH1F                        *fSPD_track_vtx2;
+       
        TH1F                            **fEtad;
        TH1F                            **fNTracks;
-       
+       TH1F                            *fTrack_Multi;
        TH2F                            **fNTracks_pt;
        TH2F                            **fNTracks_eta;
        TH2F                            **fNTracks_phi;
-       
        TH1F                            **fNClusters;
        TH2F                            **fTPCNcls_EoverP;
        TH2F                            **fTPCNcls_pid;
-       
        TH1F                            **fEta;
        TH1F                            **fPhi;
        TH1F                            **fR;
@@ -268,57 +304,45 @@ private:
        TH2F                            **fM20_EoverP;
        TH2F                            **fTPCnsigma_eta_electrons;
        TH2F                            **fTPCnsigma_eta_hadrons;
-       
        TH2F                            *fEoverP_pt_pions;
-       
        TH2F                            *ftpc_p_EoverPcut;
        TH2F                            *fnsigma_p_EoverPcut;
-       
        TH2F                            *fEoverP_pt_pions2;
        TH2F                            *fNcells_pt;
        TH2F                            *fEoverP_pt_hadrons;
-       
                //Electron-Hadron Correlation Histograms
        TH2F                            **fCEtaPhi_Inc;
-       
        TH2F                            **fCEtaPhi_ULS;
        TH2F                            **fCEtaPhi_LS;
        TH2F                            **fCEtaPhi_ULS_NoP;
        TH2F                            **fCEtaPhi_LS_NoP;
-       
        TH2F                            **fCEtaPhi_ULS_Weight;
        TH2F                            **fCEtaPhi_LS_Weight;
        TH2F                            **fCEtaPhi_ULS_NoP_Weight;
        TH2F                            **fCEtaPhi_LS_NoP_Weight;
-       
        TH1F                            *fInvMass;
        TH1F                            *fInvMassBack;
        TH1F                            *fDCA;
        TH1F                            *fDCABack;
        TH1F                            *fOpAngle;
        TH1F                            *fOpAngleBack;
-       
        TH1F                            *fInvMass2;
        TH1F                            *fInvMassBack2;
        TH1F                            *fDCA2;
        TH1F                            *fDCABack2;
        TH1F                            *fOpAngle2;
        TH1F                            *fOpAngleBack2;
-       
        Double_t                        fMassCut;
        Double_t                        fEtaCutMin;
        Double_t                        fEtaCutMax;
-       
        Double_t                        fdPhiCut;
        Double_t                        fdEtaCut;
-       
        Double_t                        fEoverPCutMin;
        Double_t                        fEoverPCutMax;
        Double_t                        fM20CutMin;
        Double_t                        fM20CutMax;
        Double_t                        fM02CutMin;
        Double_t                        fM02CutMax;
-       
        Double_t                        fAngleCut;
        Double_t                        fChi2Cut;
        Double_t                        fDCAcut;
@@ -326,31 +350,24 @@ private:
        Bool_t                          fAngleCutFlag;
        Bool_t                          fChi2CutFlag;
        Bool_t                          fDCAcutFlag;
-       
        //Correlation Function
        Double_t                        fAssHadronPtMin;
        Double_t                        fAssHadronPtMax;
-       
-               //Non-HFE reconstruction efficiency
+       //Non-HFE reconstruction efficiency
        TH1F                            *fPtBackgroundBeforeReco;
        TH1F                            *fPtBackgroundBeforeReco2;
        TH1F                            *fPtBackgroundBeforeReco_weight;
        TH1F                            *fPtBackgroundBeforeReco2_weight;
-       
        TH2F                            *fpT_m_electron;
        TH2F                            *fpT_gm_electron;
-       
        TH1F                            *fPtBackgroundAfterReco;
-       
        Double_t                        fPtMinAsso;
        Int_t                   fTpcNclsAsso;
-       
                //Tracking Efficiency
        TH1F                            *fPtMCparticleAll;
        TH1F                            *fPtMCparticleAll_nonPrimary;
        TH1F                            *fPtMCparticleAlle_nonPrimary;
        TH1F                            *fPtMCparticleAlle_Primary;
-
        TH1F                            *fPtMCparticleReco;
        TH1F                            *fPtMCparticleReco_nonPrimary;
        TH1F                            *fPtMCparticleAllHfe1;
@@ -366,6 +383,8 @@ private:
        TH1F                            *fPtMCeta;
        TH1F                            *fPtMCpi02;
        TH1F                            *fPtMCeta2;
+       TH1F                            *fPtMCpi03;
+       TH1F                            *fPtMCeta3;
        
        TH1F                            *fPtMC_EMCal_All;
        TH1F                            *fPtMC_EMCal_Selected;
@@ -430,6 +449,14 @@ private:
                //Di-hadron correlation
        TH2F                            **fCEtaPhi_Inc_DiHadron;
        TH1F                            *fPtTrigger_Inc;
+       
+               //AliEMCALRecoUtils             *fEMCALRecoUtils;   // EMCAL Reco Utils //exotic
+                                                                                               //AliEMCALGeometry *fEMCALGeo ;             //! EMCAL geometry pointer
+                                                                                               //AliCalorimeterUtils *fCaloUtils;
+       
+       Int_t            fBitEGA;                    // Trigger bit on VCaloTrigger for EGA
+
+        
                //______________________________________________________________________
        
        AliAnalysisTaskEMCalHFEpA(const AliAnalysisTaskEMCalHFEpA&);                    // not implemented
index 136a23cee73552cdecd16af9885ee72da72ca27d..a587bc94fe40fbdfa7167efc1711f8236684b761 100644 (file)
@@ -217,7 +217,8 @@ AliAnalysisTaskHFECal::AliAnalysisTaskHFECal(const char *name)
   ,fIncRecoMaxE(0)
   ,fPhoRecoMaxE(0)
   ,fSamRecoMaxE(0) 
-  ,fPhoVertexReco_HFE(0)
+  ,fPhoVertexReco_TPC(0)
+  ,fPhoVertexReco_TPC_Invmass(0)
   ,fPhoVertexReco_EMCal(0)
   ,fPhoVertexReco_Invmass(0)
   ,fPhoVertexReco_step0(0)
@@ -379,7 +380,8 @@ AliAnalysisTaskHFECal::AliAnalysisTaskHFECal()
   ,fIncRecoMaxE(0)
   ,fPhoRecoMaxE(0)
   ,fSamRecoMaxE(0)
-  ,fPhoVertexReco_HFE(0)
+  ,fPhoVertexReco_TPC(0)
+  ,fPhoVertexReco_TPC_Invmass(0)
   ,fPhoVertexReco_EMCal(0)
   ,fPhoVertexReco_Invmass(0)
   ,fPhoVertexReco_step0(0)
@@ -603,7 +605,7 @@ void AliAnalysisTaskHFECal::UserExec(Option_t*)
       {
        Int_t label = TMath::Abs(track->GetLabel());
        //mcLabel = track->GetLabel();
-       mcLabel = fabs(track->GetLabel()); // check for conv. issue
+       mcLabel = abs(track->GetLabel()); // check for conv. issue
        
        if(mcLabel>-1)
        {
@@ -868,7 +870,6 @@ void AliAnalysisTaskHFECal::UserExec(Option_t*)
     if(nITS<2.5)continue;
     if(nTPCcl<100)continue;
  
-    if(mcPho)fPhoVertexReco_HFE->Fill(track->Pt(),conv_proR,mcWeight); // check MC vertex
   
     CheckNclust->Fill(nTPCcl); 
     CheckNits->Fill(nITS); 
@@ -927,6 +928,8 @@ void AliAnalysisTaskHFECal::UserExec(Option_t*)
            fIncpTMCpho_pi0e_TPC->Fill(phoval,mcWeight);    
            if(fFlagPhotonicTPC) fPhoElecPtMC_pi0e_TPC->Fill(phoval,mcWeight);
            if(fFlagConvinatTPC) fSameElecPtMC_pi0e_TPC->Fill(phoval,mcWeight);
+           fPhoVertexReco_TPC->Fill(track->Pt(),conv_proR,mcWeight); // check MC vertex
+           if(fFlagPhotonicTPC)fPhoVertexReco_TPC_Invmass->Fill(track->Pt(),conv_proR,mcWeight); // check MC vertex
           }
         if(mcOrgEta)
           {
@@ -954,11 +957,16 @@ void AliAnalysisTaskHFECal::UserExec(Option_t*)
      // check fake rejection
     if(mcOrgPi0 || mcOrgEta)
       {
+       double phiacc0 = 80.0/180.0*acos(-1);
+       double phiacc1 = 180.0/180.0*acos(-1);
        int TrStat = 0;
-       if(track->GetLabel()>0)TrStat = 1;
-       fFakeRejection0->Fill(TrStat,pt,mcWeight); 
-       if(eop>-1.0)fFakeRejection1->Fill(TrStat,pt,mcWeight); // have match
-       if(eop>0.9 && eop<1.3)fFakeRejection2->Fill(TrStat,pt,mcWeight); // have PID 
+       if(phi>phiacc0 && phi<phiacc1)
+         {
+          if(track->GetLabel()>0)TrStat = 1;
+          fFakeRejection0->Fill(TrStat,pt,mcWeight); 
+          if(eop>-1.0)fFakeRejection1->Fill(TrStat,pt,mcWeight); // have match
+          if(eop>0.9 && eop<1.3)fFakeRejection2->Fill(TrStat,pt,mcWeight); // have PID
+        } 
       }
 
     //+++++++  E/p cut ++++++++++++++++   
@@ -1544,9 +1552,13 @@ void AliAnalysisTaskHFECal::UserCreateOutputObjects()
   fSamRecoMaxE = new TH2D("fSamRecoMaxE","Same",10,0,100,100,0,500);
   fOutputList->Add(fSamRecoMaxE);
 
-  fPhoVertexReco_HFE = new TH2D("fPhoVertexReco_HFE","photon production Vertex mass selection",40,0,20,250,0,50);
-  fPhoVertexReco_HFE->Sumw2();
-  fOutputList->Add(fPhoVertexReco_HFE);
+  fPhoVertexReco_TPC = new TH2D("fPhoVertexReco_TPC","photon production Vertex mass selection TPC",40,0,20,250,0,50);
+  fPhoVertexReco_TPC->Sumw2();
+  fOutputList->Add(fPhoVertexReco_TPC);
+
+  fPhoVertexReco_TPC_Invmass = new TH2D("fPhoVertexReco_TPC_Invmass","photon production Vertex mass selection TPC Invmass",40,0,20,250,0,50);
+  fPhoVertexReco_TPC_Invmass->Sumw2();
+  fOutputList->Add(fPhoVertexReco_TPC_Invmass);
 
   fPhoVertexReco_EMCal = new TH2D("fPhoVertexReco_EMCal","photon production Vertex mass selection",40,0,20,250,0,50);
   fPhoVertexReco_EMCal->Sumw2();
@@ -1580,12 +1592,15 @@ void AliAnalysisTaskHFECal::UserCreateOutputObjects()
   fOutputList->Add(fpair);
 
   fFakeRejection0 = new TH2D("fFakeRejection0","TPC PID",2,-0.5,1.5,100,0,20);
+  fFakeRejection0->Sumw2();
   fOutputList->Add(fFakeRejection0);
 
   fFakeRejection1 = new TH2D("fFakeRejection1","TPC PID + Tr match",2,-0.5,1.5,100,0,20);
+  fFakeRejection1->Sumw2();
   fOutputList->Add(fFakeRejection1);
 
   fFakeRejection2 = new TH2D("fFakeRejection2","TPC PID + Tr match + E/p",2,-0.5,1.5,100,0,20);
+  fFakeRejection2->Sumw2();
   fOutputList->Add(fFakeRejection2);
 
   PostData(1,fOutputList);
index 610d93e675e93acbc0b44b969c8064a8d23bb0b0..81fc2d2c4113fd02e302fc975b620ffc49947e6d 100644 (file)
@@ -211,7 +211,8 @@ class AliAnalysisTaskHFECal : public AliAnalysisTaskSE {
  TH2D                   *fIncRecoMaxE;
  TH2D                   *fPhoRecoMaxE;
  TH2D                   *fSamRecoMaxE; 
- TH2D                   *fPhoVertexReco_HFE;
+ TH2D                   *fPhoVertexReco_TPC;
+ TH2D                   *fPhoVertexReco_TPC_Invmass;
  TH2D                   *fPhoVertexReco_EMCal;
  TH2D                   *fPhoVertexReco_Invmass;
  TH2D                   *fPhoVertexReco_step0;
index 4b51e89a2eacdd76978e05cad0f1a3d119bc64a6..1e5b00046eda900ee92cd4f65bc7bd6f9bbe9ead 100644 (file)
@@ -4,9 +4,10 @@ AliAnalysisTaskEMCalHFEpA *AddTaskEMCalHFEpA(
                         Int_t   triggerIndex    = 0, 
                         Int_t   configIndex     = 0, 
                         Int_t   centralityIndex = 0, 
-                        Bool_t  isAOD                   = kFALSE,
-                        Bool_t isEMCal                  = kFALSE,
-                        char * period                   = "b",
+                        Bool_t  isAOD           = kFALSE,
+                        Bool_t isEMCal          = kFALSE,
+                                               Bool_t isTrigger                = kFALSE,
+                        char * period           = "b",
                         Int_t EMCalThreshould   = 0
                 )
 {
@@ -26,7 +27,7 @@ AliAnalysisTaskEMCalHFEpA *AddTaskEMCalHFEpA(
         //Config Task
         //gROOT->LoadMacro("ConfigEMCalHFEpA.C");
         gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigEMCalHFEpA.C");
-        AliAnalysisTaskEMCalHFEpA *task = ConfigEMCalHFEpA(isMC,triggerIndex,configIndex,centralityIndex,isAOD,isEMCal, EMCalThreshould);
+        AliAnalysisTaskEMCalHFEpA *task = ConfigEMCalHFEpA(isMC,triggerIndex,configIndex,centralityIndex,isAOD,isEMCal,isTrigger, EMCalThreshould);
         
         //_______________________
         //Trigger
index eb0c4b27c8146d3c7c17a7de6935d0005b26b178..e4edbddbf4aef7c1f1bef21885d79bcff88fcfd1 100644 (file)
@@ -13,6 +13,7 @@ Int_t configIndex=0,
 Int_t centralityIndex=0, 
 Bool_t isAOD = kFALSE,
 Bool_t isEMCal = kFALSE,
+Bool_t isTrigger = kFALSE,
 Int_t EMCalThreshould = 0 //0 == EG1, 1 == EG2
 )
 
@@ -56,7 +57,8 @@ Int_t EMCalThreshould = 0 //0 == EG1, 1 == EG2
        
        //Additional Cuts
        hfecuts->SetPtRange(2, 1e6);                                                                                //Transversal momentum range in GeV/c
-       //hfecuts->SetMaxImpactParam(1,2);                                                                          //DCA to vertex
+       //DCA cut included in the analysis 12 March 2014
+       hfecuts->SetMaxImpactParam(1,2);                                                                            //DCA to vertex
        
        //Event Selection
        hfecuts->SetVertexRange(10.);                                                                                                   //
@@ -82,8 +84,11 @@ Int_t EMCalThreshould = 0 //0 == EG1, 1 == EG2
        if(EMCalThreshould==1 && triggerIndex==2) task->SetEMCalTriggerEG2();
        
        if(isEMCal) task->SetUseEMCal();
+               //Bool_t isTrigger = kFALSE;
+       if(isTrigger) task->SetUseTrigger();
        
        
+               
        if(configIndex==100){
                task->SetUseShowerShapeCut(kTRUE);
                //task->SetM02Cut(0.0,0.3);
@@ -120,18 +125,15 @@ Int_t EMCalThreshould = 0 //0 == EG1, 1 == EG2
         
        
        //eta cuts
-       if(configIndex==37) task->SetEtaCut(-0.6,0);
-       else if (configIndex==38) task->SetEtaCut(0,0.6);
-       else if (configIndex==39) task->SetEtaCut(-0.5,0.5);
-       else if (configIndex==40) task->SetEtaCut(-0.6,-0.2);
-       else if (configIndex==41) task->SetEtaCut(-0.5,-0.1);
-       else if (configIndex==42) task->SetEtaCut(-0.4,0);
-       else if (configIndex==43) task->SetEtaCut(-0.3,0.1);
-       else if (configIndex==44) task->SetEtaCut(-0.2,0.2);
-       else if (configIndex==45) task->SetEtaCut(-0.1,0.3);
-       else if (configIndex==46) task->SetEtaCut(0,0.4);
-       else if (configIndex==47) task->SetEtaCut(-0.4,0.4);
-       else if (configIndex==48) task->SetEtaCut(-0.3,0.3);
+       if(configIndex==40) task->SetEtaCut(-0.6,0);
+       else if (configIndex==41) task->SetEtaCut(-0.5,0.1);
+       else if (configIndex==42) task->SetEtaCut(0,0.6);
+       else if (configIndex==43) task->SetEtaCut(-0.1,0.5);
+       else if (configIndex==44) task->SetEtaCut(-0.5,0.5);
+       else if (configIndex==45) task->SetEtaCut(-0.4,0.4);
+       else if (configIndex==46) task->SetEtaCut(-0.3,0.3);
+               //else if (configIndex==47) task->SetEtaCut(-0.4,0.4);
+               //else if (configIndex==48) task->SetEtaCut(-0.3,0.3);
        else task->SetEtaCut(-0.6,0.6);
        
        //track matching cuts
@@ -191,8 +193,8 @@ Int_t EMCalThreshould = 0 //0 == EG1, 1 == EG2
        
        if(configIndex==70) params[0] = -1.5;
        else if (configIndex==71) params[0] = -0.5;
-       else if (configIndex==72) params[0] = -1.25;
-       else if (configIndex==73) params[0] = -0.75;
+       else if (configIndex==72) params[0] = 0;
+       else if (configIndex==73) params[0] = 0.25;
        else if (configIndex==74) params[0] = -1.75;
        else params[0] = -1;
        
old mode 100755 (executable)
new mode 100644 (file)
index 5ce0bb5..dff7055
@@ -911,13 +911,14 @@ void AliCFTaskVertexingHF::UserExec(Option_t *)
                
     Bool_t signAssociation = cfVtxHF->SetRecoCandidateParam((AliAODRecoDecayHF*)charmCandidate);
     if (!signAssociation){
-      charmCandidate = 0x0;
+      if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
       continue;
     }
 
     Int_t isPartOrAntipart = cfVtxHF->CheckReflexion(fSign);
     if (isPartOrAntipart == 0){
       AliDebug(2, Form("The candidate pdg code doesn't match the requirement set in the task (fSign = %d)",fSign));
+      if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
       continue;
     }
 
@@ -939,8 +940,10 @@ void AliCFTaskVertexingHF::UserExec(Option_t *)
        AliDebug(2, Form("pt = %f, weight = %f",containerInput[0], fWeight));
       }
 
-      if (!fCuts->IsInFiducialAcceptance(containerInput[0],containerInput[1])) continue;
-                       
+      if (!fCuts->IsInFiducialAcceptance(containerInput[0],containerInput[1])){
+       if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
+       continue;
+      }                
       //Reco Step
       Bool_t recoStep = cfVtxHF->RecoStep();
       Bool_t vtxCheck = fCuts->IsEventSelected(aodEvent);
@@ -955,8 +958,10 @@ void AliCFTaskVertexingHF::UserExec(Option_t *)
       }else if(fDecayChannel==33){
        if(fUseSelectionBit && !charmCandidate->HasSelectionBit(AliRDHFCuts::kDsCuts)) isBitSelected = kFALSE;
       }
-      if(!isBitSelected) continue;
-
+      if(!isBitSelected){
+       if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
+       continue;
+      }
 
 
       if (recoStep && recoContFilled && vtxCheck){
@@ -1036,26 +1041,31 @@ void AliCFTaskVertexingHF::UserExec(Option_t *)
              }
              else {
                AliDebug(3, "Analysis Cuts step not passed \n");
+               if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
                continue;
              }
            }
            else {
              AliDebug(3, "PID selection not passed \n");
+             if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
              continue;
            }
          }
          else{
            AliDebug(3, "Number of ITS cluster step not passed\n");
+           if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
            continue;
          }
        }
        else{
          AliDebug(3, "Reco acceptance step not passed\n");
+         if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
          continue;
        }
       }
       else {
        AliDebug(3, "Reco step not passed\n");
+       if(unsetvtx) charmCandidate->UnsetOwnPrimaryVtx();
        continue;
       }
     }
@@ -1401,7 +1411,7 @@ void AliCFTaskVertexingHF::SetPtWeightsFromFONLL276andBAMPSoverLHC12a17b(){
 
 //_________________________________________________________________________
 void AliCFTaskVertexingHF::SetPtWeightsFromFONLL5overLHC13d3(){
-  // weight function from the ratio of the LHC12a17b MC
+  // weight function from the ratio of the LHC13d3 MC
   // and FONLL calculations for pp data
   if(fFuncWeight) delete fFuncWeight;
   fFuncWeight=new TF1("funcWeight","([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,30.);
@@ -1411,7 +1421,7 @@ void AliCFTaskVertexingHF::SetPtWeightsFromFONLL5overLHC13d3(){
 
 //_________________________________________________________________________
 void AliCFTaskVertexingHF::SetPtWeightsFromFONLL7overLHC10f6a(){
-  // weight function from the ratio of the LHC12a17b MC
+  // weight function from the ratio of the LHC10f6a MC
   // and FONLL calculations for pp data
   if(fFuncWeight) delete fFuncWeight;
   fFuncWeight=new TF1("funcWeight","([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,40.);
@@ -1419,9 +1429,39 @@ void AliCFTaskVertexingHF::SetPtWeightsFromFONLL7overLHC10f6a(){
   fUseWeight=kTRUE;
 }
 
+//_________________________________________________________________________
+void AliCFTaskVertexingHF::SetPtWeightsFromFONLL7overLHC12a12(){
+  // weight function from the ratio of the LHC12a12 MC
+  // and FONLL calculations for pp data
+  if(fFuncWeight) delete fFuncWeight;
+  fFuncWeight=new TF1("funcWeight","([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,50.);
+  fFuncWeight->SetParameters(1.31497e+01,3.30503e+00,3.45594e+00,2.5,2.28642e-02,1.42372e+00,2.32892e-04,5.21986e-02,-2.14236e-01,3.86200e+00);
+  fUseWeight=kTRUE;
+}
+
+//_________________________________________________________________________
+void AliCFTaskVertexingHF::SetPtWeightsFromFONLL7overLHC12a12bis(){
+  // weight function from the ratio of the LHC12a12bis MC
+  // and FONLL calculations for pp data
+  if(fFuncWeight) delete fFuncWeight;
+  fFuncWeight=new TF1("funcWeight","([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,50.);
+  fFuncWeight->SetParameters(6.54519e+00,2.74007e+00,2.48325e+00,2.5,1.61113e-01,-5.32546e-01,-3.75916e-04,2.38189e-01,-2.17561e-01,2.35975e+00);
+  fUseWeight=kTRUE;
+}
+
+//_________________________________________________________________________
+void AliCFTaskVertexingHF::SetPtWeightsFromFONLL7overLHC13e2fix(){
+  // weight function from the ratio of the LHC13e2fix MC
+  // and FONLL calculations for pp data
+  if(fFuncWeight) delete fFuncWeight;
+  fFuncWeight=new TF1("funcWeight","([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,50.);
+  fFuncWeight->SetParameters(1.85862e+01,2.48171e+00,3.39356e+00,2.5,1.70426e-02,2.28453e+00,-4.57749e-02,5.84585e-02,-3.19719e-01,4.16789e+00);
+  fUseWeight=kTRUE;
+}
+
 //________________________________________________________________
 void AliCFTaskVertexingHF::SetPtWeightsFromFONLL5overLHC10f6a(){
-  // weight function from the ratio of the LHC12a17b MC
+  // weight function from the ratio of the LHC10f6a MC
   // and FONLL calculations for pp data
   if(fFuncWeight) delete fFuncWeight;
   fFuncWeight=new TF1("funcWeight","([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,40.);
@@ -1431,7 +1471,7 @@ void AliCFTaskVertexingHF::SetPtWeightsFromFONLL5overLHC10f6a(){
 
 //________________________________________________________________
 void AliCFTaskVertexingHF::SetPtWeightsFromFONLL276overLHC10f6a(){
-  // weight function from the ratio of the LHC12a17b MC
+  // weight function from the ratio of the LHC10f6a MC
   // and FONLL calculations for pp data
   if(fFuncWeight) delete fFuncWeight;
   fFuncWeight=new TF1("funcWeight","([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,40.);
index 12be59a07f7e6ee798d069a36f50ab50fe011fa6..891d6b4baa7d8470fb6ebe32a04a80bf1f1cc3f0 100755 (executable)
@@ -208,10 +208,13 @@ public:
        void SetPtWeightsFromDataPbPb276overLHC12a17a();
        void SetPtWeightsFromFONLL276overLHC12a17b();
        void SetPtWeightsFromFONLL276andBAMPSoverLHC12a17b();
-       void SetPtWeightsFromFONLL5overLHC13d3();
+       void SetPtWeightsFromFONLL276overLHC10f6a();
        void SetPtWeightsFromFONLL7overLHC10f6a();
+       void SetPtWeightsFromFONLL7overLHC12a12();
+       void SetPtWeightsFromFONLL7overLHC12a12bis();
+       void SetPtWeightsFromFONLL7overLHC13e2fix();
        void SetPtWeightsFromFONLL5overLHC10f6a();
-       void SetPtWeightsFromFONLL276overLHC10f6a();
+       void SetPtWeightsFromFONLL5overLHC13d3();
 
         void SetResonantDecay(UInt_t resonantDecay) {fResonantDecay = resonantDecay;}
         UInt_t GetResonantDecay() const {return fResonantDecay;}
index f6426fcf733292f860df153533ef9f1ff658c726..e1eb3420de82ea601f6df8254831d6c2cea93d39 100644 (file)
@@ -95,9 +95,7 @@ AliCFTaskVertexingHF *AddTaskCFVertexingHF3Prong(TString suffixName="", const ch
          TFile *fileMult = TFile::Open(multFile.Data());
          if(isPPbData) hMult = (TH1F*)fileMult->Get("hNtrUnCorrEvWithCandWeight");
          else {
-           TDirectoryFile *dir1 = (TDirectoryFile*)fileMult->Get("PWG3_D2H_DMult_DplusLoose");
-           TList* list1=(TList*)dir1->Get("coutputDplusLoose");
-           hMult=(TH1F*)list1->FindObject("hGenPrimaryParticlesInelGt0");
+           hMult=(TH1F*)fileMult->Get("hGenPrimaryParticlesInelGt0");
          }
        }
        
index b9f2eb51d3f344b9663d8ad61f79e607253847d4..76a73119463a849493a6adf3146814e6d57f02ed 100755 (executable)
@@ -14,11 +14,9 @@ AliAnalysisTaskSEDvsMultiplicity *AddTaskDvsMultiplicity(Int_t system=0,
                                                         Bool_t isPPbData=kFALSE)
 {
   //
-  // Test macro for the AliAnalysisTaskSE for D+ candidates
-  //Invariant mass histogram and    
-  // association with MC truth (using MC info in AOD)
-  //  R. Bala, bala@to.infn.it
-  // Get the pointer to the existing analysis manager via the static access method. 
+  // Macro for the AliAnalysisTaskSE for D candidates vs Multiplicity
+  // Invariant mass histogram in pt and multiplicity bins in a 3D histogram
+  //   different estimators implemented
   //============================================================================== 
   
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
index 8ae3f3ca0e961da819c773bbb98cbbb157840141..f99fa83c3e9e38d3b609efe08dd1c676bbca6b36 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 //
 // Emcal jet class.
 //
@@ -268,6 +267,50 @@ void AliEmcalJet::SortConstituents()
   std::sort(fTrackIDs.GetArray(), fTrackIDs.GetArray() + fTrackIDs.GetSize());
 }
 
+//__________________________________________________________________________________________________
+Double_t AliEmcalJet::DeltaR (const AliVParticle* part) const
+{ // Helper function to calculate the distance between two jets or a jet and a particle
+    Double_t dPhi = this->Phi() - part->Phi();
+    Double_t dEta = this->Eta() - part->Eta();
+    dPhi = TVector2::Phi_mpi_pi ( dPhi );
+
+    return TMath::Sqrt ( dPhi * dPhi + dEta * dEta );
+}
+
+
+//__________________________________________________________________________________________________
+std::vector<int> AliEmcalJet::SortConstituentsPt( TClonesArray *tracks ) const
+{   //___________________________________________
+    // Sorting by p_T (decreasing) jet constituents
+    //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    typedef std::pair<Double_t, Int_t> ptidx_pair;
+
+    // Create vector for Pt sorting
+    std::vector<ptidx_pair> pair_list ;
+
+    for ( Int_t i_entry = 0; i_entry < GetNumberOfTracks(); i_entry++ )
+        {
+        AliVParticle *track = TrackAt(i_entry, tracks);
+        if (!track)
+            {
+            AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)", i_entry, tracks->GetName(), TrackAt(i_entry), tracks->GetEntriesFast()));
+            continue;
+            }
+
+        pair_list.push_back( std::make_pair ( track->Pt(), i_entry ) );
+        }
+
+    std::stable_sort( pair_list.begin() , pair_list.end() , sort_descend() );
+
+    // return an vector of indexes of constituents (sorted descending by pt)
+    std::vector <int> index_sorted_list;
+
+    for ( std::vector< std::pair<Double_t,Int_t> >::iterator it = pair_list.begin(); it != pair_list.end(); ++it)
+        { index_sorted_list.push_back( (*it).second ); } // populating the return object with indexes of sorted tracks
+
+    return index_sorted_list;
+}
+
 //__________________________________________________________________________________________________
 AliVParticle* AliEmcalJet::GetLeadingTrack(TClonesArray *tracks) const
 {
index 5b7e4f787c4ae303a07c1185e6b33df98f4ed4eb..2a9672c48be06d2b43b27c26b2c2804a9b42e1c2 100644 (file)
@@ -1,12 +1,14 @@
 #ifndef AliEmcalJet_H
 #define AliEmcalJet_H
 
-// $Id$
-
+#include <vector>
+#include <algorithm>
+#include <utility>
 #include <TArrayS.h>
 #include <TLorentzVector.h>
 #include <TMath.h>
 #include <TClonesArray.h>
+#include <TVector2.h>
 
 #include "AliVParticle.h"
 #include "AliVCluster.h"
@@ -94,6 +96,7 @@ class AliEmcalJet : public AliVParticle
   void              AddTrackAt(Int_t track, Int_t idx) { fTrackIDs.AddAt(track, idx);      }
   void              Clear(Option_t */*option*/="")     { fClusterIDs.Set(0); fTrackIDs.Set(0); fClosestJets[0] = 0; fClosestJets[1] = 0; 
                                                          fClosestJetsDist[0] = 0; fClosestJetsDist[1] = 0; fMatched = 0; fPtSub = 0; }
+  Double_t          DeltaR(const AliVParticle* part) const;
   void              SetArea(Double_t a)                { fArea    = a;                     }
   void              SetAreaEta(Double_t a)             { fAreaEta = a;                     }
   void              SetAreaPhi(Double_t a)             { fAreaPhi = a;                     }
@@ -109,6 +112,7 @@ class AliEmcalJet : public AliVParticle
   void              SetNumberOfNeutrals(Int_t n)       { fNn = n;                          }
   void              SetMCPt(Double_t p)                { fMCPt = p;                        }
   void              SortConstituents();
+  std::vector<int>  SortConstituentsPt(TClonesArray *tracks) const;
   void              SetNEmc(Int_t n)                   { fNEmc           = n;              }
   void              SetPtEmc(Double_t pt)              { fPtEmc          = pt;             }
   void              SetPtSub(Double_t ps)              { fPtSub          = ps;             } 
@@ -169,6 +173,13 @@ class AliEmcalJet : public AliVParticle
   Double_t          fPtVectSub;           //!          background vector subtracted pt (not stored set from outside) 
   UInt_t            fTriggers;            //!          triggers that the jet might have fired (AliVEvent::EOfflineTriggerTypes)
 
-  ClassDef(AliEmcalJet,12) // Emcal jet class in cylindrical coordinates
+  private:
+    struct sort_descend
+        { // sort in decreasing order
+          // first value of the pair is Pt and the second is entry index
+        bool operator () (const std::pair<Double_t, Int_t>& p1, const std::pair<Double_t, Int_t>& p2)  { return p1.first > p2.first ; }
+        };
+
+  ClassDef(AliEmcalJet,13) // Emcal jet class in cylindrical coordinates
 };
 #endif
index d75eeacb68399bc5e98f69504a7de980d9e2fc53..98ef9b9327c2734535ae90197041e8bcad55cef0 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 //
 // Emcal jet finder task.
 //
index 80b2efa4fc1749eb0a89b23fb9fedcf626bb9aa0..81fee038cf61d1b0903fe4496dc8624375ec93ef 100644 (file)
@@ -1,8 +1,6 @@
 #ifndef ALIEMCALJETTASK_H
 #define ALIEMCALJETTASK_H
 
-// $Id$
-
 class TClonesArray;
 class AliVEvent;
 
@@ -82,6 +80,33 @@ class AliEmcalJetTask : public AliAnalysisTaskSE {
   UInt_t                 GetJetType()                     { return fJetType; }
   Bool_t                 GetLegacyMode()                  { return fLegacyMode; }
 
+  const char*            GetJetsName()                    { return fJetsName.Data(); }
+  Double_t               GetRadius()                      { return fRadius; }
+  const char*            GetTracksName()                  { return fTracksName.Data(); }
+  const char*            GetClusName()                    { return fCaloName.Data(); }
+  UInt_t                 GetMarkConstituents()            { return fMarkConst; }
+  Double_t               GetMinJetArea()                  { return fMinJetArea; }
+  Double_t               GetMinJetClusPt()                { return fMinJetClusPt; }
+  Double_t               GetMinJetPt()                    { return fMinJetPt; }
+  Double_t               GetMinJetTrackPt()               { return fMinJetTrackPt; }
+  Double_t               GetTrackEfficiency()             { return fTrackEfficiency; }
+  Double_t               GetGhostArea()                   { return fGhostArea; }
+  Int_t                  GetMinMCLabel()                  { return fMinMCLabel; }
+  Int_t                  GetRecombScheme()                { return fRecombScheme; }
+  Double_t               GetEtaMin()                      { return fEtaMin; }
+  Double_t               GetEtaMax()                      { return fEtaMax; }
+  Double_t               GetPhiMin()                      { return fPhiMin; }
+  Double_t               GetPhiMax()                      { return fPhiMax; }
+  Double_t               GetJetEtaMin()                   { return fJetEtaMin; }
+  Double_t               GetJetEtaMax()                   { return fJetEtaMax; }
+  Double_t               GetJetPhiMin()                   { return fJetPhiMin; }
+  Double_t               GetJetPhiMax()                   { return fJetPhiMax; }
+
+  AliVEvent*             GetEvent()                       { return fEvent;}
+  TClonesArray*          GetClusters()                    { return fClus;}
+  TClonesArray*          GetTracks()                      { return fTracks;}
+  TClonesArray*          GetJets()                        { return fJets;}
+
  protected:
   void                   FindJets();
   Bool_t                 DoInit();
@@ -126,6 +151,6 @@ class AliEmcalJetTask : public AliAnalysisTaskSE {
   AliEmcalJetTask(const AliEmcalJetTask&);            // not implemented
   AliEmcalJetTask &operator=(const AliEmcalJetTask&); // not implemented
 
-  ClassDef(AliEmcalJetTask, 10) // Jet producing task
+  ClassDef(AliEmcalJetTask, 11) // Jet producing task
 };
 #endif
index 3aba6c61ebd79110ffa4f44ef60a364fe3214680..0bedfa8466b9f71b57f8535244b83103cb8b0cde 100644 (file)
@@ -371,7 +371,7 @@ inline Double_t AliAnalysisTaskChargedJetsPA::GetCorrectedConePt(Double_t eta, D
       if(IsTrackInCone(tmpTrack, eta, phi, radius))
         tmpConePt = tmpConePt + tmpTrack->Pt();
   }
-  Double_t realConeArea = (2.0*(fMaxEta-fMinEta)) * TMath::TwoPi() * MCGetOverlapCircleRectancle(eta, phi, radius, fMinEta, fMaxEta, 0., TMath::TwoPi());
+  Double_t realConeArea = (1.0*(fMaxEta-fMinEta)) * TMath::TwoPi() * MCGetOverlapCircleRectancle(eta, phi, radius, fMinEta, fMaxEta, 0., TMath::TwoPi());
   tmpConePt -= background * realConeArea; // subtract background
 
   return tmpConePt;
@@ -1269,7 +1269,7 @@ void AliAnalysisTaskChargedJetsPA::GetTRBackgroundDensity(Int_t numberExcludeLea
 
   // Calculate the correct area where the tracks were taking from
 
-  Double_t tmpFullTPCArea = (2.0*(fMaxEta-fMinEta)) * TMath::TwoPi();
+  Double_t tmpFullTPCArea = (1.0*(fMaxEta-fMinEta)) * TMath::TwoPi();
   Double_t tmpAreaCone02     = tmpFullTPCArea;
   Double_t tmpAreaCone04     = tmpFullTPCArea;
   Double_t tmpAreaCone06     = tmpFullTPCArea;
@@ -1361,7 +1361,7 @@ void AliAnalysisTaskChargedJetsPA::GetTRBackgroundDensity(Int_t numberExcludeLea
 
   if (trackCountAccepted > 0)
   {
-    Double_t tmpArea = 2.0*(fMaxEta-fMinEta)*TMath::TwoPi()  - 2*(tmpRadius*tmpRadius * TMath::Pi()); //TPC area - excluding jet area
+    Double_t tmpArea = 1.0*(fMaxEta-fMinEta)*TMath::TwoPi()  - 2*(tmpRadius*tmpRadius * TMath::Pi()); //TPC area - excluding jet area
     rhoMean = summedTracksPt/tmpArea;
     area = tmpArea;
   }
index 7640a2f736daa0967cba2c04c7a0ce5b3cc522e5..b1884f2d9436fe190e7f362fa40affe5dea5c4ad 100644 (file)
@@ -77,8 +77,8 @@ AliAnalysisTaskEmcalJetHadEPpid::AliAnalysisTaskEmcalJetHadEPpid() :
   fDoEventMixing(0), fMixingTracks(50000),
   doPlotGlobalRho(0), doVariableBinning(0), dovarbinTHnSparse(0), 
   makeQAhistos(0), makeBIAShistos(0), makeextraCORRhistos(0), makeoldJEThadhistos(0),
-  useAOD(0), fcutType("EMCAL"), doPID(0), doPIDtrackBIAS(0),
-  doComments(0),
+  allpidAXIS(0), fcutType("EMCAL"), doPID(0), doPIDtrackBIAS(0),
+  doComments(0), doIOon(0),
   fLocalRhoVal(0),
   fTracksName(""), fJetsName(""),
   event(0),
@@ -163,8 +163,8 @@ AliAnalysisTaskEmcalJetHadEPpid::AliAnalysisTaskEmcalJetHadEPpid() :
   SetMakeGeneralHistograms(kTRUE);
   
   // define input and output slots here
-  DefineInput(0, TChain::Class());
-  DefineOutput(1, TList::Class());
+  if(doIOon > 0 ) DefineInput(0, TChain::Class());
+  if(doIOon > 0 ) DefineOutput(1, TList::Class());
 }
 
 //________________________________________________________________________
@@ -177,8 +177,8 @@ AliAnalysisTaskEmcalJetHadEPpid::AliAnalysisTaskEmcalJetHadEPpid(const char *nam
   fDoEventMixing(0), fMixingTracks(50000),
   doPlotGlobalRho(0), doVariableBinning(0), dovarbinTHnSparse(0), 
   makeQAhistos(0), makeBIAShistos(0), makeextraCORRhistos(0), makeoldJEThadhistos(0),
-  useAOD(0), fcutType("EMCAL"), doPID(0), doPIDtrackBIAS(0),
-  doComments(0),
+  allpidAXIS(0), fcutType("EMCAL"), doPID(0), doPIDtrackBIAS(0),
+  doComments(0), doIOon(0),
   fLocalRhoVal(0),
   fTracksName(""), fJetsName(""),
   event(0),
@@ -263,8 +263,8 @@ AliAnalysisTaskEmcalJetHadEPpid::AliAnalysisTaskEmcalJetHadEPpid(const char *nam
   SetMakeGeneralHistograms(kTRUE);
 
   // define input and output slots here
-  DefineInput(0, TChain::Class());
-  DefineOutput(1, TList::Class());
+  if(doIOon > 0 ) DefineInput(0, TChain::Class());
+  if(doIOon > 0 ) DefineOutput(1, TList::Class());
 }
 
 //_______________________________________________________________________
@@ -592,13 +592,13 @@ void AliAnalysisTaskEmcalJetHadEPpid::UserCreateOutputObjects()
   } // end of do-eventmixing
 
   // variable binned pt
-  Double_t xlowjetPT[] = {-50,-45,-40,-35,-30,-25,-20,-18,-16,-14,-12,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,35,40,45,50,60,70,80,90,100,120,140,160,180,200,250,300,350,400};
+  //Double_t xlowjetPT[] = {-50,-45,-40,-35,-30,-25,-20,-18,-16,-14,-12,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,35,40,45,50,60,70,80,90,100,120,140,160,180,200,250,300,350,400};
   Double_t xlowtrPT[] = {0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.25,2.50,2.75,3.0,3.25,3.5,3.75,4.0,4.25,4.50,4.75,5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,24.0,26.0,28.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.0};
 
   // number of bins you tell histogram should be (# in array - 1) because the last bin
   // is the right-most edge of the histogram 
   // i.e. this is for PT and there are 57 numbers (bins) thus we have 56 bins in our histo
-  Int_t nbinsjetPT = sizeof(xlowjetPT)/sizeof(Double_t) - 1;
+  //Int_t nbinsjetPT = sizeof(xlowjetPT)/sizeof(Double_t) - 1;
   Int_t nbinstrPT = sizeof(xlowtrPT)/sizeof(Double_t) - 1;
 
   // set up PID sparse
@@ -625,14 +625,20 @@ void AliAnalysisTaskEmcalJetHadEPpid::UserCreateOutputObjects()
     SetfHistPIDcounterLabels(fHistPID);
     fOutput->Add(fHistPID);
 
-    bitcode = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9 |
+    if(allpidAXIS) {
+      bitcode = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9 |
               1<<10 | 1<<11 | 1<<12 | 1<<13 | 1<<14 | 1<<15 | 1<<16 | 1<<17 | 1<<18 | 1<<19 |
-              1<<20 | 1<<21 | 1<<22;
-    fhnPID = NewTHnSparseDPID("fhnPID", bitcode);
+              1<<20;
+      fhnPID = NewTHnSparseDPID("fhnPID", bitcode);
+    } else {
+         bitcode = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9 |
+              1<<10 | 1<<11 | 1<<12 | 1<<13;
+      fhnPID = NewTHnSparseDPID("fhnPID", bitcode);
+       }
 
     if(dovarbinTHnSparse){
-     fhnPID->GetAxis(1)->Set(nbinsjetPT, xlowjetPT);
-     fhnPID->GetAxis(2)->Set(nbinstrPT, xlowtrPT);
+     //fhnPID->GetAxis(1)->Set(nbinsjetPT, xlowjetPT);
+     fhnPID->GetAxis(1)->Set(nbinstrPT, xlowtrPT);
     }
 
     fOutput->Add(fhnPID);
@@ -691,6 +697,10 @@ Bool_t AliAnalysisTaskEmcalJetHadEPpid::Run()
   }
 
   // what kind of event do we have: AOD or ESD?
+  Bool_t useAOD; 
+  if (dynamic_cast<AliAODEvent*>(InputEvent())) useAOD = kTRUE;
+  else useAOD = kFALSE;
+
   // if we have ESD event, set up ESD object
   if(!useAOD){
     fESD = dynamic_cast<AliESDEvent*>(InputEvent());
@@ -853,7 +863,7 @@ Bool_t AliAnalysisTaskEmcalJetHadEPpid::Run()
      if (ijet==ijethi) leadjet=1;
 
      // check on leading hadron pt
-     leadhadronPT = GetLeadingHadronPt(jet);
+     if (ijet==ijethi) leadhadronPT = GetLeadingHadronPt(jet);
 
      // initialize and calculate various parameters: pt, eta, phi, rho, etc...
      Double_t jetphi = jet->Phi();      // phi of jet
@@ -862,10 +872,10 @@ Bool_t AliAnalysisTaskEmcalJetHadEPpid::Run()
      Double_t jeteta = jet->Eta();     // ETA of jet
      Double_t jetPt = -500; 
      Double_t jetPtGlobal = -500; 
-     Double_t jetPtLocal = -500;            // initialize corr jet pt
+     //Double_t jetPtLocal = -500;            // initialize corr jet pt
      jetPt = jet->Pt();
      jetPtGlobal = jet->Pt()-jet->Area()*fRhoVal;  // corrected pT of jet from rho value
-     jetPtLocal = jet->Pt()-jet->Area()*fLocalRhoVal; // corrected pT of jet using Rho modulated for V2 and V3
+     //jetPtLocal = jet->Pt()-jet->Area()*fLocalRhoVal; // corrected pT of jet using Rho modulated for V2 and V3
      Double_t dEP = -500;                    // initialize angle between jet and event plane
      dEP = RelativeEPJET(jetphi,fEPV0); // angle betweeen jet and event plane
 
@@ -915,7 +925,8 @@ Bool_t AliAnalysisTaskEmcalJetHadEPpid::Run()
     }
 
     // cut on HIGHEST jet pt in event (15 GeV default)
-    if (highestjetpt>fJetPtcut) {
+    //if (highestjetpt>fJetPtcut) {
+    if (jet->Pt() > fJetPtcut) {
 
       // does our max track or cluster pass the bias?
       if ((jet->MaxTrackPt()>fTrkBias) || (jet->MaxClusterPt()>fClusBias)){
@@ -999,7 +1010,6 @@ Bool_t AliAnalysisTaskEmcalJetHadEPpid::Run()
         }
 
         // some variables for PID
-           Double_t eta = -999; 
         Double_t pt = -999; 
         Double_t dEdx = -999;
         Double_t ITSsig = -999;
@@ -1014,7 +1024,6 @@ Bool_t AliAnalysisTaskEmcalJetHadEPpid::Run()
         if(doPID){
           // get parameters of track
           charge = track->Charge();    // charge of track
-          eta    = track->Eta();       // ETA of track
           pt     = track->Pt();        // pT of track
 
           // extra attempt 
@@ -1166,13 +1175,24 @@ Bool_t AliAnalysisTaskEmcalJetHadEPpid::Run()
              fHistPID->Fill(nPID);
 
           // PID sparse getting filled 
-          Double_t pid_Entries[23] = {fCent,jetPtLocal,pt,charge,eta,deta,dphijh,leadjet,zVtx,dEP,jetPt,
-                                      nSigmaPion_TPC, nSigmaProton_TPC, nSigmaKaon_TPC,  //nSig in TPC
-                                      nSigmaPion_ITS, nSigmaProton_ITS, nSigmaKaon_ITS,  //nSig in ITS
-                                      nSigmaPion_TOF, nSigmaProton_TOF, nSigmaKaon_TOF,  //nSig in TOF
-                                                                 nPIDtpc, nPIDits, nPIDtof                          //PID label for each detector
+          if (allpidAXIS) { // FILL ALL axis
+                       Double_t pid_EntriesALL[21] = {fCent,pt,charge,deta,dphijh,leadjet,zVtx,dEP,jetPt,
+                                      nSigmaPion_TPC, nSigmaPion_TOF, // pion nSig values in TPC/TOF
+                                                                 nPIDtpc, nPIDits, nPIDtof,       // PID label for each detector
+                                                                         nSigmaProton_TPC, nSigmaKaon_TPC,  // nSig in TPC
+                                      nSigmaPion_ITS, nSigmaProton_ITS, nSigmaKaon_ITS,  // nSig in ITS
+                                      nSigmaProton_TOF, nSigmaKaon_TOF,  // nSig in TOF
+                                      }; //array for PID sparse     
+                   fhnPID->Fill(pid_EntriesALL);
+                 } else {
+            // PID sparse getting filled 
+            Double_t pid_Entries[14] = {fCent,pt,charge,deta,dphijh,leadjet,zVtx,dEP,jetPt,
+                                      nSigmaPion_TPC, nSigmaPion_TOF, // pion nSig values in TPC/TOF
+                                                                 nPIDtpc, nPIDits, nPIDtof       // PID label for each detector
                                       }; //array for PID sparse                           
-          fhnPID->Fill(pid_Entries);   // fill Sparse histo of PID tracks 
+            fhnPID->Fill(pid_Entries);   // fill Sparse histo of PID tracks 
+                 } // minimal pid sparse filling
+
                } // end of doPID check
 
            // get track pt bin
@@ -1678,159 +1698,145 @@ void AliAnalysisTaskEmcalJetHadEPpid::GetDimParamsPID(Int_t iEntry, TString &lab
       break;
 
    case 1:
-      label = "Corrected Jet p_{T}";
-      nbins = 216; 
-      xmin = -50.;
-      xmax = 166.;
-      break;
-
-   case 2:
       label = "Track p_{T}";
       nbins = 750; 
       xmin = 0.;
       xmax = 75.; 
       break;
 
-   case 3:
+   case 2:
       label = "Charge of Track";
       nbins = 3;
       xmin = -1.5;
       xmax = 1.5;
       break;
 
-   case 4:
-      label = "Track Eta";
-      nbins = 48;
-      xmin = -1.2;
-      xmax = 1.2;
-      break;
-
-   case 5:
+   case 3:
       label = "Relative Eta of Track and Jet";
       nbins = 48;
       xmin = -1.6;
       xmax = 1.6;
       break;
 
-   case 6:
+   case 4:
       label = "Relative Phi of Track and Jet";
       nbins = 72;
       xmin = -0.5*pi;
       xmax = 1.5*pi;
       break;
 
-   case 7:
+   case 5:
       label = "leading jet";
       nbins = 3;
       xmin = -.5;
       xmax = 2.5;
       break;
 
-   case 8:
+   case 6:
       label = "Z-vertex";
       nbins = 10;
       xmin = -10.;
       xmax = 10.;
       break;
 
-   case 9
+   case 7
       label = "Relative angle: Jet and Reaction Plane";
       nbins = 48;
       xmin = 0.;
       xmax = 0.5*pi;
       break;
 
-   case 10
-      label = "Jet Pt";
+   case 8
+      label = "Jet p_{T}";
       nbins = 216; 
       xmin = 0.;
       xmax = 216.;
       break;
 
-   case 11:
+   case 9:
       label = "N-Sigma of pions in TPC";
       nbins = 200;
       xmin = -10.0;
       xmax = 10.0; 
       break;
 
+   case 10:
+      label = "N-Sigma of pions in TOF";
+      nbins = 200;
+      xmin = -10.;
+      xmax = 10.; 
+      break;
+
+   case 11:
+      label = "TPC PID determination";
+      nbins = 5;
+      xmin = 0.;
+      xmax = 5.;
+      break;
+
    case 12:
+      label = "ITS PID determination";
+      nbins = 5;
+      xmin = 0.;
+      xmax = 5.;
+      break;
+
+   case 13:
+      label = "TOF PID determination";
+      nbins = 5;
+      xmin = 0.;
+      xmax = 5.;
+      break;
+
+   case 14:
       label = "N-Sigma of protons in TPC";
       nbins = 200;
       xmin = -10.;
       xmax = 10.;
       break;
 
-   case 13:
+   case 15:
       label = "N-Sigma of kaons in TPC";
       nbins = 200;
       xmin = -10.;
       xmax = 10.;
       break;
 
-   case 14:
+   case 16:
       label = "N-Sigma of pions in ITS";
       nbins = 200;
       xmin = -10.0;
       xmax = 10.0; 
       break;
 
-   case 15:
+   case 17:
       label = "N-Sigma of protons in ITS";
       nbins = 200;
       xmin = -10.;
       xmax = 10.;
       break;
 
-   case 16:
+   case 18:
       label = "N-Sigma of kaons in ITS";
       nbins = 200;
       xmin = -10.;
       xmax = 10.;
       break;
 
-   case 17:
-      label = "N-Sigma of pions in TOF";
-      nbins = 200;
-      xmin = -10.;
-      xmax = 10.; 
-      break;
-
-   case 18:
+   case 19:
       label = "N-Sigma of protons in TOF";
       nbins = 200;
       xmin = -10.;
       xmax = 10.;
       break;
 
-   case 19:
+   case 20:
       label = "N-Sigma of kaons in TOF";
       nbins = 200;
       xmin = -10.;
       xmax = 10.;
       break;
 
-   case 20:
-      label = "TPC PID determination";
-      nbins = 5;
-      xmin = 0.;
-      xmax = 5.;
-      break;
-
-   case 21:
-      label = "ITS PID determination";
-      nbins = 5;
-      xmin = 0.;
-      xmax = 5.;
-      break;
-
-   case 22:
-      label = "TOF PID determination";
-      nbins = 5;
-      xmin = 0.;
-      xmax = 5.;
-      break;
-
    } // end of switch
 } // end of get dimension parameters PID
 
index 0ff76375ea04fc5dc523cf167557aace8522f759..fbecd7d3dbc728b0a1ef5b32f811abc3384c8b35 100644 (file)
@@ -67,13 +67,13 @@ class AliAnalysisTaskEmcalJetHadEPpid : public AliAnalysisTaskEmcalJet {
   void                    SetPlotGlobalRho(Bool_t g)            { doPlotGlobalRho = g; } // plot global rho switch
   void                    SetVariableBinning(Bool_t v)          { doVariableBinning = v; } // do variable binning switch
   void                       SetvarbinTHnSparse(Bool_t vb)         { dovarbinTHnSparse = vb; } // variable THnSparse bin switch
+  void                                   SetallpidAXIS(Bool_t allAXIS)                 { allpidAXIS = allAXIS; } // fill all PID sparse axis's
   void                                   SetmakeQAhistos(Bool_t QAhist)        { makeQAhistos = QAhist; } // make QA histos  
   void                                   SetmakeBIAShistos(Bool_t BIAShist)    { makeBIAShistos = BIAShist; } // make bias histos
   void                           SetmakeextraCORRhistos(Bool_t Xhist)  { makeextraCORRhistos = Xhist; } // make extra correlations histos
   void                                   SetoldJEThadhistos(Bool_t oldJH)      { makeoldJEThadhistos = oldJH; } // make older JH histos for comparison
 
   // set data, detectors type, and PID and PID w bias switches
-  void                       SetDataType(Bool_t data)                  { useAOD = data; }    // data type switch
   void                                   SetcutType(TString cut)                               { fcutType = cut; }    // EMCAL / TPC acceptance cut
   void                    SetdoPID(Bool_t p)                    { doPID = p; }   // do PID switch
   void                                           SetdoPIDtrackBIAS(Bool_t PIDbias)     { doPIDtrackBIAS = PIDbias; } // do PID track bias switch
@@ -81,6 +81,9 @@ class AliAnalysisTaskEmcalJetHadEPpid : public AliAnalysisTaskEmcalJet {
   // give comments setter
   void                                   SetdoComments(Bool_t comm)                    { doComments = comm; } // give comment switch
 
+  // define I/O
+  void                                   SetIOon(Bool_t IO)                                    { doIOon = IO; } // set on IO in constructor (temp)
+
   // getters
   TString                GetLocalRhoName() const               {return fLocalRhoName; }
 
@@ -150,9 +153,7 @@ protected:
   Bool_t                makeBIAShistos;
   Bool_t                makeextraCORRhistos; 
   Bool_t                makeoldJEThadhistos;
-
-  // data type switch
-  Bool_t            useAOD;
+  Bool_t                allpidAXIS;
 
   // Cut type (EMCAL/TPC acceptance)
   TString        fcutType;
@@ -164,6 +165,9 @@ protected:
   // do comment switch
   Bool_t                doComments;
 
+  // do I/O on switch
+  Bool_t                doIOon;
+
   // local rho value
   Double_t              fLocalRhoVal;
 
@@ -180,8 +184,8 @@ protected:
   Bool_t                isPItof, isKtof, isPtof;
 
   // event pool
-  TObjArray*               CloneAndReduceTrackList(TObjArray* tracks);
-  AliEventPoolManager   *fPoolMgr;  // event pool Manager object
+  TObjArray                *CloneAndReduceTrackList(TObjArray* tracks);
+  AliEventPoolManager   *fPoolMgr;//!  // event pool Manager object
 
   // PID
   AliPIDResponse       *fPIDResponse;   // PID response object
@@ -189,14 +193,14 @@ protected:
 
  private:
   // needed for PID, track objects
-  AliESDEvent       *fESD;          // ESD object
-  AliAODEvent      *fAOD;                // AOD object
+  AliESDEvent       *fESD;//!         // ESD object
+  AliAODEvent      *fAOD;//!             // AOD object
 
-  TH2F                  *fHistTPCdEdX;
-  TH2F                 *fHistITSsignal;
-//  TH2F                   *fHistTOFsignal;
+  TH2F                  *fHistTPCdEdX;//!
+  TH2F                 *fHistITSsignal;//!
+//  TH2F                   *fHistTOFsignal;//!
 
-  TH2F                  *fHistRhovsCent; //!
+  TH2F                  *fHistRhovsCent;//!
   TH2F                  *fHistNjetvsCent;//! number of jets versus Centrality
   TH2F                  *fHistJetPtvsTrackPt[6];//!
   TH2F                  *fHistRawJetPtvsTrackPt[6];//!
@@ -208,66 +212,66 @@ protected:
   TH1F                                 *fHistJetPtcorrGlRho[6];//!
   TH2F                  *fHistJetPtvsdEP[6];//!
   TH2F                  *fHistJetPtvsdEPBias[6];//!
-  TH2F                  *fHistRhovsdEP[6]; //!
+  TH2F                  *fHistRhovsdEP[6];//!
   TH3F                  *fHistJetEtaPhiPt[6];//!
   TH3F                  *fHistJetEtaPhiPtBias[6];//!
   TH2F                  *fHistJetPtArea[6];//!
   TH2F                  *fHistJetPtAreaBias[6];//!
-  TH2F                  *fHistJetPtNcon[6]; //!
-  TH2F                  *fHistJetPtNconBias[6]; //!
-  TH2F                  *fHistJetPtNconCh[6]; //!
-  TH2F                  *fHistJetPtNconBiasCh[6]; //!
-  TH2F                  *fHistJetPtNconEm[6]; //!
-  TH2F                  *fHistJetPtNconBiasEm[6]; //!
-  TH1F                     *fHistJetHaddPhiINcent[6];
-  TH1F                         *fHistJetHaddPhiOUTcent[6];
-  TH1F                         *fHistJetHaddPhiMIDcent[6];
-
-  TH1                   *fHistCentrality;
-  TH1                   *fHistZvtx;
-  TH1                   *fHistMult;
-  TH1                          *fHistJetPhi;
-  TH1                      *fHistTrackPhi;
-  TH1                      *fHistJetHaddPhiIN;
-  TH1                          *fHistJetHaddPhiOUT;
-  TH1                          *fHistJetHaddPhiMID;
-  TH1                                  *fHistJetHaddPhiBias;
-  TH1                                  *fHistJetHaddPhiINBias;
-  TH1                                  *fHistJetHaddPhiOUTBias;
-  TH1                                  *fHistJetHaddPhiMIDBias;
-
-  TH1                   *fHistMEdPHI; // phi distrubtion of mixed events
-  TH1                                  *fHistTrackPtallcent;
-
-  TH2                   *fHistJetEtaPhi;  
-  TH2                   *fHistTrackEtaPhi[4][7];
-  TH1                          *fHistJetHadbindPhi[9]; 
-  TH1                                  *fHistJetHadbindPhiIN[9]; 
-  TH1                                  *fHistJetHadbindPhiMID[9]; 
-  TH1                          *fHistJetHadbindPhiOUT[9]; 
-  TH2                   *fHistJetHEtaPhi;
-
-  TH1                   *fHistJetPt[6];
-  TH1                   *fHistJetPtBias[6];
-  TH1                   *fHistJetPtTT[6];
-  TH2                   *fHistAreavsRawPt[6];
-  TH2                   *fHistJetH[6][5][3];
-  TH2                   *fHistJetHBias[6][5][3];
-  TH2                   *fHistJetHTT[6][5][3];
-  TH1F                                 *fHistJetHdPHI[11];
-  TH2F                                 *fHistJetHdETAdPHI[11];
-  TH2F                  *fHistSEphieta; // single events phi-eta distributions
-  TH2F                  *fHistMEphieta; // mixed events phi-eta distributions
-  TH1F                                 *fHistJetHaddPHI;
+  TH2F                  *fHistJetPtNcon[6];//!
+  TH2F                  *fHistJetPtNconBias[6];//!
+  TH2F                  *fHistJetPtNconCh[6];//!
+  TH2F                  *fHistJetPtNconBiasCh[6];//!
+  TH2F                  *fHistJetPtNconEm[6];//!
+  TH2F                  *fHistJetPtNconBiasEm[6];//!
+  TH1F                     *fHistJetHaddPhiINcent[6];//!
+  TH1F                         *fHistJetHaddPhiOUTcent[6];//!
+  TH1F                         *fHistJetHaddPhiMIDcent[6];//!
+
+  TH1                   *fHistCentrality;//!
+  TH1                   *fHistZvtx;//!
+  TH1                   *fHistMult;//!
+  TH1                          *fHistJetPhi;//!
+  TH1                      *fHistTrackPhi;//!
+  TH1                      *fHistJetHaddPhiIN;//!
+  TH1                          *fHistJetHaddPhiOUT;//!
+  TH1                          *fHistJetHaddPhiMID;//!
+  TH1                                  *fHistJetHaddPhiBias;//!
+  TH1                                  *fHistJetHaddPhiINBias;//!
+  TH1                                  *fHistJetHaddPhiOUTBias;//!
+  TH1                                  *fHistJetHaddPhiMIDBias;//!
+
+  TH1                   *fHistMEdPHI;//! // phi distrubtion of mixed events
+  TH1                                  *fHistTrackPtallcent;//!
+
+  TH2                   *fHistJetEtaPhi;//!  
+  TH2                   *fHistTrackEtaPhi[4][7];//!
+  TH1                          *fHistJetHadbindPhi[9];//! 
+  TH1                                  *fHistJetHadbindPhiIN[9];//! 
+  TH1                                  *fHistJetHadbindPhiMID[9];//! 
+  TH1                          *fHistJetHadbindPhiOUT[9];//! 
+  TH2                   *fHistJetHEtaPhi;//!
+
+  TH1                   *fHistJetPt[6];//!
+  TH1                   *fHistJetPtBias[6];//!
+  TH1                   *fHistJetPtTT[6];//!
+  TH2                   *fHistAreavsRawPt[6];//!
+  TH2                   *fHistJetH[6][5][3];//!
+  TH2                   *fHistJetHBias[6][5][3];//!
+  TH2                   *fHistJetHTT[6][5][3];//!
+  TH1F                                 *fHistJetHdPHI[11];//!
+  TH2F                                 *fHistJetHdETAdPHI[11];//!
+  TH2F                  *fHistSEphieta;//! // single events phi-eta distributions
+  TH2F                  *fHistMEphieta;//! // mixed events phi-eta distributions
+  TH1F                                 *fHistJetHaddPHI;//!
 
   // PID status histo's
-  TH1                                  *fHistPID;
+  TH1                                  *fHistPID;//!
 
   // THn Sparse's
-  THnSparse             *fhnPID;          // PID sparse
-  THnSparse             *fhnMixedEvents;  // mixed events matrix
-  THnSparse             *fhnJH;           // jet hadron events matrix
-  THnSparse                            *fhnCorr;                 // sparse to get # jet triggers
+  THnSparse             *fhnPID;//!          // PID sparse
+  THnSparse             *fhnMixedEvents;//!  // mixed events matrix
+  THnSparse             *fhnJH;//!           // jet hadron events matrix
+  THnSparse                            *fhnCorr;//!              // sparse to get # jet triggers
 
   // container objects
   AliJetContainer            *fJetsCont;                   //!Jets
index ba686fae38948dfb15e58f0e8412e96a8f7e931f..4edcd0a6385b1cd8f3b4cb8aac262e333f28c961 100644 (file)
@@ -231,10 +231,10 @@ void AliAnalysisTaskHJetDphi::UserCreateOutputObjects()
   const Double_t hiBinJetqa[dimJetqa]  = {upJetPtBin,    360, 0.6, 1.2, 500, 10, 11};
 
   // h-jet analysis
-  const Int_t dimTT = 3;
-  const Int_t nBinsTT[dimTT]     = {nTrkPtBins,  10,  11};
-  const Double_t lowBinTT[dimTT] = {lowTrkPtBin, 0,   0};
-  const Double_t hiBinTT[dimTT]  = {upTrkPtBin,  100, 11}; 
+  const Int_t dimTT = 4;
+  const Int_t nBinsTT[dimTT]     = {nTrkPtBins,  10,  11, 10};
+  const Double_t lowBinTT[dimTT] = {lowTrkPtBin, 0,   0,   0};
+  const Double_t hiBinTT[dimTT]  = {upTrkPtBin,  100, 11,  10}; 
   
   const Int_t dimCor = 8;
   const Int_t nBinsCor[dimCor]     = {nTrkPtBins, nJetPtBins,  140,     6,   10, 40,    11, 10};
@@ -645,8 +645,8 @@ void AliAnalysisTaskHJetDphi::UserExec(Option_t *)
       RunSingleInclHJetCorr(trigPt, trigPhi, trigEta, fJetArray, fRhoValue, fhTTPt[fTriggerType][0], fHJetPhiCorr[fTriggerType][0]);
       if(fRunBkgFlow)
        {
-         RunSingleInclHJetCorr(trigPt, trigPhi, trigEta, fJetArray, fRhoValue+1, 0x0, fHJetPhiCorrUp[fTriggerType]);
-         RunSingleInclHJetCorr(trigPt, trigPhi, trigEta, fJetArray, fRhoValue-1, 0x0, fHJetPhiCorrDown[fTriggerType]);
+         RunSingleInclHJetCorr(trigPt, trigPhi, trigEta, fJetArray, fRhoValue+1.8, 0x0, fHJetPhiCorrUp[fTriggerType]);
+         RunSingleInclHJetCorr(trigPt, trigPhi, trigEta, fJetArray, fRhoValue-1.8, 0x0, fHJetPhiCorrDown[fTriggerType]);
        }
 
       if(fIsEmbedding)
@@ -772,7 +772,7 @@ void AliAnalysisTaskHJetDphi::RunSingleInclHJetCorr(Double_t trigPt, Double_t tr
 
   if(hTT)
     {
-      Double_t fillTT[] = {trigPt, fCentrality, (Double_t)fPtHardBin};
+      Double_t fillTT[] = {trigPt, fCentrality, (Double_t)fPtHardBin,static_cast<Double_t>(Entry()%10)};
       hTT->Fill(fillTT);
     }
 
index 2f3ae307e67dc25058f98faf680b2af417eee373..7208b3586015ae4d269e74357c01aa32340bb3d1 100644 (file)
@@ -13,6 +13,7 @@
 #include <TH2F.h>
 #include <TH1D.h>
 #include <TH1I.h>
+#include <TArrayF.h>
 #include <THnSparse.h>
 #include <TCanvas.h>
 #include <TList.h>
@@ -46,6 +47,7 @@
 #include "AliAnalysisUtils.h"
 #include "AliRhoParameter.h"
 #include "TVector3.h"
+#include "AliVVertex.h"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -152,38 +154,57 @@ inline Double_t AliAnalysisTaskHJetSpectra::GetConePt(Double_t eta, Double_t phi
 
 
 //________________________________________________________________________
-/*inline Double_t AliAnalysisTaskHJetSpectra::GetPtHard()
-{
-  #ifdef DEBUGMODE
-    AliInfo("Starting GetPtHard.");
-  #endif
-  AliGenPythiaEventHeader* pythiaHeader = dynamic_cast<AliGenPythiaEventHeader*>(MCEvent()->GenEventHeader());
-  if (MCEvent()) 
-    if (!pythiaHeader)
-    {
-      // Check if AOD
-      AliAODMCHeader* aodMCH = dynamic_cast<AliAODMCHeader*>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
+inline Double_t AliAnalysisTaskHJetSpectra::GetPtHard(){
+
+   AliGenPythiaEventHeader* pythiaHeader = dynamic_cast<AliGenPythiaEventHeader*>(MCEvent()->GenEventHeader());
+   if(MCEvent()){ 
+      if(!pythiaHeader){
+         // Check if AOD
+         AliAODMCHeader* aodMCH = dynamic_cast<AliAODMCHeader*>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
+
+         if(aodMCH){
+            for(UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++){
+               pythiaHeader = dynamic_cast<AliGenPythiaEventHeader*>(aodMCH->GetCocktailHeader(i));
+               if(pythiaHeader) break;
+            }
+         }
+      }
+   }
+   if(pythiaHeader){
+      return pythiaHeader->GetPtHard();
+   }
+   AliWarning(Form("In task %s: GetPtHard() failed!", GetName()));
+   return -1.0;
+}
 
-      if (aodMCH)
-      {
-        for(UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++)
-        {
-          pythiaHeader = dynamic_cast<AliGenPythiaEventHeader*>(aodMCH->GetCocktailHeader(i));
-          if (pythiaHeader) break;
-        }
+//________________________________________________________________________
+inline Double_t AliAnalysisTaskHJetSpectra::GetPythiaPrimaryVertex(){
+
+   AliGenPythiaEventHeader* pythiaHeader = NULL; 
+   if(MCEvent()){ 
+      pythiaHeader = dynamic_cast<AliGenPythiaEventHeader*>(MCEvent()->GenEventHeader());
+      if(!pythiaHeader){
+         // Check if AOD
+         AliAODMCHeader* aodMCH = dynamic_cast<AliAODMCHeader*>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
+
+         if(aodMCH){
+            for(UInt_t i = 0; i<aodMCH->GetNCocktailHeaders(); i++){
+               pythiaHeader = dynamic_cast<AliGenPythiaEventHeader*>(aodMCH->GetCocktailHeader(i));
+               if(pythiaHeader) break;
+            }
+         }
       }
-    }
+   }
+   if(pythiaHeader){
+      TArrayF pyVtx(3);
+      pythiaHeader->PrimaryVertex(pyVtx);
+      return (Double_t) (pyVtx[2]);
+   }
+   AliWarning(Form("In task %s: Pythia Vertex failed!", GetName()));
+   return 9999.0;
+}
 
-  #ifdef DEBUGMODE
-    AliInfo("Ending GetPtHard.");
-  #endif
-  if (pythiaHeader)
-    return pythiaHeader->GetPtHard();
 
-  AliWarning(Form("In task %s: GetPtHard() failed!", GetName()));
-  return -1.0;
-}
-*/
 
 //________________________________________________________________________
 /*inline Double_t AliAnalysisTaskHJetSpectra::GetPythiaTrials()
@@ -241,6 +262,24 @@ inline Bool_t AliAnalysisTaskHJetSpectra::IsEventInAcceptance(AliVEvent* event){
 
 
    if(!event) return kFALSE;
+
+   //___________________________________________________
+
+   if(fAnalyzePythia){ //PURE MC
+      if(!MCEvent()) return kFALSE;
+
+       //BEFORE VERTEX CUT
+      Double_t vtxMC = GetPythiaPrimaryVertex();
+      fhVertexZ->Fill(vtxMC);
+
+      if(TMath::Abs(vtxMC) > 10.0){
+         fHistEvtSelection->Fill(3); //count events rejected by vertex cut 
+         return kFALSE;
+      }
+      fhVertexZAccept->Fill(vtxMC);
+
+      return kTRUE;
+   }
    //___________________________________________________
    //TEST PILE UP
    if(fUsePileUpCut){
@@ -443,6 +482,10 @@ void  AliAnalysisTaskHJetSpectra::GetDeltaPt(Double_t rho1, Double_t &dpt1, Doub
 void AliAnalysisTaskHJetSpectra::Calculate(AliVEvent* event){
    //Analyze the event and Fill histograms
 
+   if(fAnalyzePythia){
+      fh1PtHard->Fill(GetPtHard());
+   }
+
    //_________________________________________________________________
    //  FILL EVENT STATISTICS
    fHistEvtSelection->Fill(1); //Count input event
@@ -521,6 +564,10 @@ void AliAnalysisTaskHJetSpectra::Calculate(AliVEvent* event){
    rhoCone           = EstimateBgCone();
    rhoCMS            = GetExternalRho();
 
+   fhRhoCellMedianIncl->Fill((Float_t) rhoFromCellMedian,(Float_t) centralityPercentile);
+   fhRhoConeIncl->Fill(      (Float_t) rhoCone,          (Float_t) centralityPercentile); 
+   fhRhoCMSIncl->Fill(       (Float_t) rhoCMS,           (Float_t) centralityPercentile); 
    Double_t deltaptCellMedian, deltaptCone, deltaptCMS;        
    for(Int_t irc=0; irc<fNofRandomCones; irc++){ //generate 4 random cones per event
       GetDeltaPt(rhoFromCellMedian, deltaptCellMedian,rhoCone, deltaptCone, rhoCMS, deltaptCMS);
@@ -528,12 +575,7 @@ void AliAnalysisTaskHJetSpectra::Calculate(AliVEvent* event){
       fhDeltaPtMedianIncl->Fill(deltaptCellMedian, (Double_t) centralityPercentile); 
       fhDeltaPtConeIncl->Fill( deltaptCone,        (Double_t) centralityPercentile); 
       fhDeltaPtCMSIncl->Fill( deltaptCMS,          (Double_t) centralityPercentile); 
-   
-      fhRhoCellMedianIncl->Fill((Float_t) rhoFromCellMedian,(Float_t) centralityPercentile);
-      fhRhoConeIncl->Fill(      (Float_t) rhoCone,          (Float_t) centralityPercentile); 
-      fhRhoCMSIncl->Fill(       (Float_t) rhoCMS,           (Float_t) centralityPercentile); 
-   
-   
+  
       if(ntriggers>0 || bContainesHighPtTrack){
          //fill delta pt histograms
          fhDeltaPtMedian->Fill( deltaptCellMedian, (Double_t) centralityPercentile); 
@@ -712,6 +754,11 @@ AliAnalysisTaskHJetSpectra::~AliAnalysisTaskHJetSpectra(){
       delete fOutputList;
    }
    delete fRandom;
+   delete fTrackArrayName;
+   delete fJetArrayName;
+   delete fBackgroundJetArrayName;
+   delete fHelperClass;
 } 
 
 //________________________________________________________________________
index cb620ce7f865b2a3402b6dff651751d90bcac986..0fb0a12ca8d501846c84dccbf87b96eb7d5c958f 100644 (file)
@@ -68,7 +68,8 @@ class AliAnalysisTaskHJetSpectra : public AliAnalysisTaskSE {
 
 
   Double_t    GetConePt(Double_t eta, Double_t phi, Double_t radius); 
-//FK//  Double_t    GetPtHard();
+  Double_t    GetPtHard();
+  Double_t    GetPythiaPrimaryVertex();
 //FK//  Double_t    GetPythiaTrials();
 
   void        GetPerpendicularCone(Double_t vecPhi, Double_t vecTheta, Double_t& conePt);
@@ -138,10 +139,10 @@ class AliAnalysisTaskHJetSpectra : public AliAnalysisTaskSE {
 
    TH1I               *fHistEvtSelection;     //!  event statistics
    TH2F               *fh2Ntriggers;  //! trigger counter
-   THnSparse         *fHJetSpec;//!  TT associated spectrum of jets
-   THnSparse         *fHJetSpecSubUeMedian;//! TT associated spectrum of jets, jetPT corredted for UE cell median
-   THnSparse         *fHJetSpecSubUeCone;//! TT associated spectrum of jets, jetPT corredted for UE perp cone
-   THnSparse         *fHJetSpecSubUeCMS; //! TT associated spectrum of jets, jetPT corredted for UE CMS
+   THnSparse          *fHJetSpec;//!  TT associated spectrum of jets
+   THnSparse          *fHJetSpecSubUeMedian;//! TT associated spectrum of jets, jetPT corredted for UE cell median
+   THnSparse          *fHJetSpecSubUeCone;//! TT associated spectrum of jets, jetPT corredted for UE perp cone
+   THnSparse          *fHJetSpecSubUeCMS; //! TT associated spectrum of jets, jetPT corredted for UE CMS
 
    TH2F    *fhRhoCellMedian; //! X=rho from cell median Y=centrality
    TH2F    *fhRhoCone; //! X=rho from perp cone, Y=centrality
@@ -197,7 +198,7 @@ class AliAnalysisTaskHJetSpectra : public AliAnalysisTaskSE {
   AliAnalysisTaskHJetSpectra(const AliAnalysisTaskHJetSpectra&);
   AliAnalysisTaskHJetSpectra& operator=(const AliAnalysisTaskHJetSpectra&);
 
-  ClassDef(AliAnalysisTaskHJetSpectra, 1); // Charged jet analysis for pA
+  ClassDef(AliAnalysisTaskHJetSpectra, 2); // Charged jet analysis for pA
 
 };
 #endif
index 1c94eb73c5340268038ce4eb516c60c2792aaae1..3cdb6a1b6e005e0c6af82deb3cefc1144679cc54 100644 (file)
@@ -44,42 +44,37 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
   fDoV0QA(0),
   fDoEPQA(0),
   fDoLeadingObjectPosition(0),
-  fMaxCellsInCluster(30),
+  fMaxCellsInCluster(50),
   fCent2(0),
   fCent3(0),
   fVZERO(0),
   fV0ATotMult(0),
   fV0CTotMult(0),
-  fHistEventQA(0)
+  fHistEventQA(0),
+  fHistTrNegativeLabels(0),
+  fHistTrZeroLabels(0),
+  fHistTrPhiEtaPt(0),
+  fHistTrPhiEtaZeroLab(0),
+  fHistTrPtZeroLab(0),
+  fHistTrEmcPhiEta(0),
+  fHistTrEmcPt(0),
+  fHistTrPhiEtaNonProp(0),
+  fHistTrPtNonProp(0),
+  fHistDeltaEtaPt(0),
+  fHistDeltaPhiPt(0),
+  fHistDeltaPtvsPt(0),
+  fHistClusPhiEtaEnergy(0),
+  fHistClusDeltaPhiEPEnergy(0),
+  fHistNCellsEnergy(0),
+  fHistFcrossEnergy(0),
+  fHistClusTimeEnergy(0),
+  fHistClusMCEnergyFraction(0),
+  fHistCellsAbsIdEnergy(0),
+  fHistJetsPhiEta(0),
+  fHistJetsPtArea(0)
 {
   // Default constructor.
 
-  fHistTrNegativeLabels = 0;
-  fHistTrZeroLabels = 0;
-  fHistTrPhiEtaZeroLab = 0;
-  fHistTrPtZeroLab = 0;
-  fHistTrEmcPhiEta = 0;
-  fHistTrEmcPt = 0;
-  fHistTrPhiEtaNonProp = 0;
-  fHistTrPtNonProp = 0;
-  fHistDeltaEtaPt = 0;
-  fHistDeltaPhiPt = 0;
-  fHistDeltaPtvsPt = 0;
-
-  fHistClusPhiEtaEnergy = 0;
-  fHistClusDeltaPhiEPEnergy = 0;
-  fHistNCellsEnergy = 0;
-  fHistFcrossEnergy = 0;
-  fHistClusTimeEnergy = 0;
-  fHistClusMCEnergyFraction = 0;
-
-  fHistCellsAbsIdEnergy = 0;
-
-  fHistJetsPhiEta = 0;
-  fHistJetsPtArea = 0;
-
-  fHistTrPhiEtaPt = 0;
-
   SetMakeGeneralHistograms(kTRUE);
 }
 
@@ -94,42 +89,37 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
   fDoV0QA(0),
   fDoEPQA(0),
   fDoLeadingObjectPosition(0),
-  fMaxCellsInCluster(30),
+  fMaxCellsInCluster(50),
   fCent2(0),
   fCent3(0),
   fVZERO(0),
   fV0ATotMult(0),
   fV0CTotMult(0),
-  fHistEventQA(0)
+  fHistEventQA(0),
+  fHistTrNegativeLabels(0),
+  fHistTrZeroLabels(0),
+  fHistTrPhiEtaPt(0),
+  fHistTrPhiEtaZeroLab(0),
+  fHistTrPtZeroLab(0),
+  fHistTrEmcPhiEta(0),
+  fHistTrEmcPt(0),
+  fHistTrPhiEtaNonProp(0),
+  fHistTrPtNonProp(0),
+  fHistDeltaEtaPt(0),
+  fHistDeltaPhiPt(0),
+  fHistDeltaPtvsPt(0),
+  fHistClusPhiEtaEnergy(0),
+  fHistClusDeltaPhiEPEnergy(0),
+  fHistNCellsEnergy(0),
+  fHistFcrossEnergy(0),
+  fHistClusTimeEnergy(0),
+  fHistClusMCEnergyFraction(0),
+  fHistCellsAbsIdEnergy(0),
+  fHistJetsPhiEta(0),
+  fHistJetsPtArea(0)
 {
   // Standard 
 
-  fHistTrNegativeLabels = 0;
-  fHistTrZeroLabels = 0;
-  fHistTrPhiEtaZeroLab = 0;
-  fHistTrPtZeroLab = 0;
-  fHistTrEmcPhiEta = 0;
-  fHistTrEmcPt = 0;
-  fHistTrPhiEtaNonProp = 0;
-  fHistTrPtNonProp = 0;
-  fHistDeltaEtaPt = 0;
-  fHistDeltaPhiPt = 0;
-  fHistDeltaPtvsPt = 0;
-
-  fHistClusPhiEtaEnergy = 0;
-  fHistClusDeltaPhiEPEnergy = 0;
-  fHistNCellsEnergy = 0;
-  fHistFcrossEnergy = 0;
-  fHistClusTimeEnergy = 0;
-  fHistClusMCEnergyFraction = 0;
-
-  fHistCellsAbsIdEnergy = 0;
-
-  fHistJetsPhiEta = 0;
-  fHistJetsPtArea = 0;
-
-  fHistTrPhiEtaPt = 0;
-
   SetMakeGeneralHistograms(kTRUE);
 }
 
index db4b988ab8dcfd207f3a55bb02d138ec7250190f..f2a19cc9287aab38a9a2b326b4235e4efe6d015a 100644 (file)
@@ -17,7 +17,7 @@ AliAnalysisTaskEmcalJetHadEPpid* AddTaskEmcalJetHadEPpid(
    Bool_t      PID               = 0, //kFALSE,
    Bool_t   PIDtrackBIAS      = 0, //kFALSE,
    Bool_t   varbinTHnSparse   = 0, //kFALSE,
-   Bool_t   isAOD             = 0, //kFALSE,
+   Bool_t   allpidAXIS           = 0, //kFALSE,
    Bool_t   QAhistos             = 0, //kFALSE,
    Bool_t   BIAShistos        = 0, //kFALSE,
    Bool_t   extraCORRhistos   = 0, //kFALSE,
@@ -28,6 +28,7 @@ AliAnalysisTaskEmcalJetHadEPpid* AddTaskEmcalJetHadEPpid(
    const Int_t MixingTracks   = 50000,
    TString cutType                       = "EMCAL",
    Bool_t   Comments             = 0,
+   Bool_t   IO                           = 0,
    Int_t esdcuts                         = 10001006
 )
 {  
@@ -48,7 +49,7 @@ AliAnalysisTaskEmcalJetHadEPpid* AddTaskEmcalJetHadEPpid(
     ::Error("AddTaskEmcalJetHadEPpid", "This task requires an input event handler");
     return NULL;
   }
-  
+
   //-------------------------------------------------------
   // Init the task and do settings
   //-------------------------------------------------------
@@ -70,7 +71,7 @@ AliAnalysisTaskEmcalJetHadEPpid* AddTaskEmcalJetHadEPpid(
   correlationtask->SetdoPID(PID);
   correlationtask->SetdoPIDtrackBIAS(PIDtrackBIAS);
   correlationtask->SetvarbinTHnSparse(varbinTHnSparse);
-  correlationtask->SetDataType(isAOD);
+  correlationtask->SetallpidAXIS(allpidAXIS);
   correlationtask->SetmakeQAhistos(QAhistos);
   correlationtask->SetmakeBIAShistos(BIAShistos);  
   correlationtask->SetmakeextraCORRhistos(extraCORRhistos);
@@ -81,6 +82,7 @@ AliAnalysisTaskEmcalJetHadEPpid* AddTaskEmcalJetHadEPpid(
   correlationtask->SetMixingTracks(MixingTracks);
   correlationtask->SetcutType(cutType);
   correlationtask->SetdoComments(Comments);
+  correlationtask->SetIOon(IO);
 
   // =================== set up containers ================================================
   // Cluster Container
index f5bdd2bad22b4006fa27bdddd769c1a2ef27213f..ced43d578e8bd78cf65b1abf66ddf2829e0ae390 100644 (file)
@@ -115,7 +115,9 @@ AliAnalysisTaskHJetSpectra* AddTaskHJetSpectra(
    task->SetMinPtOfJetsToBeRemovedInBg(15.0); 
    //task->SetMC(isMC);
    task->SetNofRandomCones(1);
+
+   if(isMC) task->SetAnalyzePythia(1);
+
    // output container
    contHistos = manager->CreateContainer(myContName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChJetSpectra%s", AliAnalysisManager::GetCommonFileName(), myContName.Data()));
  
index 129dc71dd5d2defa230237e1f77899b8a3c6d490..68471363c82737984ae5e14a2b308663d70f3845 100644 (file)
@@ -38,7 +38,7 @@ void runEMCalJetAnalysis(
          const char*    runPeriod           = "LHC11h",                    // set the run period (used on grid)
          const char*    uniqueName          = "EMCalJF_LEGOTrainTest",     // sets base string for the name of the task on the grid
          UInt_t         pSel                = AliVEvent::kAny,             // used event selection for every task except for the analysis tasks
-         Bool_t         useTender           = kFALSE,                      // trigger, if tender task should be used
+         Bool_t         useTender           = kTRUE,                       // trigger, if tender, track and cluster selection should be used (always)
          Bool_t         isMC                = kFALSE,                      // trigger, if MC handler should be used
         Bool_t         doBkg               = kTRUE,
          // Here you have to specify additional code files you want to use but that are not in aliroot
@@ -104,7 +104,7 @@ void runEMCalJetAnalysis(
   {
     cout << "Data type not recognized! You have to specify ESD, AOD, or sESD!\n";
   }
-  
+
   if(!useGrid)
     cout << "Using " << localFiles.Data() << " as input file list.\n";
 
@@ -147,22 +147,16 @@ void runEMCalJetAnalysis(
   setupTask->SetGeoPath("$ALICE_ROOT/OADB/EMCAL");
   
   // Tender Supplies
-  if (useTender)
-  {
-    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEMCALTender.C");
-    AliAnalysisTaskSE *tender = AddTaskEMCALTender(runPeriod, kTRUE, kTRUE, kTRUE, kTRUE, kTRUE, kFALSE, kTRUE, kTRUE, kTRUE,
-                                                   AliEMCALRecoUtils::kBeamTestCorrected,kTRUE,0.1,0.05,AliEMCALRecParam::kClusterizerv2,
-                                                  kFALSE,kFALSE,-1,1e6,1e6);
-    if (usedData != "AOD" && !useGrid) {
-      AliTender *alitender = dynamic_cast<AliTender*>(tender);
-      alitender->SetDefaultCDBStorage("local://$ALICE_ROOT/OCDB"); 
-    }
+  if (useTender) {
+    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPreparation.C");
+    //adjust pass when running locally. On grid give empty string, will be picked up automatically from path to ESD/AOD file
+    AliAnalysisTaskSE *clusm = AddTaskEmcalPreparation(runPeriod,"pass1"); 
   }
 
   // Names of the different objects passed around; these are the default names; added here mostly for documentation purposes
   // rhoName is only set if the background subtraction is switched on (doBkg)
   TString tracksName = "PicoTracks";
-  TString clustersName = "CaloClusters";
+  TString clustersName = "EmcCaloClusters";
   TString clustersCorrName = "CaloClustersCorr";
   TString rhoName = "";
 
index 853f45f7a779c1a9fb74c2e2dd0f6ee0afbb3690..21f94052ae8a6daf4e79d58a4011a5936a55b02b 100644 (file)
@@ -226,20 +226,33 @@ void AliAnalysisTaskJetAntenna::UserCreateOutputObjects()
   fOutputList->Add(fh1JetEntries);
   fh2Circularity=new TH2F("Circcularity","",10,0,1,150,0,150);
   fOutputList->Add(fh2Circularity);
-  Int_t nbinsJet[6]={15,30,9,36,10,20};
-  Double_t binlowJet[6]= {0, 0, 0,-0.5*TMath::Pi(),0,0};
-  Double_t binupJet[6]= {1.5, 150,150,1.5*TMath::Pi(),1,200};
-  fhnJetTM = new THnSparseF("fhnJetTM", "fhnJetTM; dr;pt_jet;pt_track;phi;",6,nbinsJet,binlowJet,binupJet);
-  Double_t xPt3[10];
+  Int_t nbinsJet[8]={10,9,7,9,36,10,2,10};
+  Double_t binlowJet[8]= {0,0, 0, 0,-0.5*TMath::Pi(),0,0,-0.5};
+  Double_t binupJet[8]= {100,0.9, 150,150,1.5*TMath::Pi(),1,200,9.5};
+  fhnJetTM = new THnSparseF("fhnJetTM", "fhnJetTM; cent;dr;pt_jet;pt_track;phi;circ;nc;pthard",8,nbinsJet,binlowJet,binupJet);
+  Double_t *xPt3=new Double_t[10];
   xPt3[0] = 0.;
   for(Int_t i = 1;i<=9;i++){
     if(xPt3[i-1]<2)xPt3[i] = xPt3[i-1] + 0.4; // 1 - 5
     else if(xPt3[i-1]<11)xPt3[i] = xPt3[i-1] + 3; // 5 - 12
     else xPt3[i] = xPt3[i-1] + 150.; // 18
   }
-  fhnJetTM->SetBinEdges(2,xPt3);
+  fhnJetTM->SetBinEdges(3,xPt3);
+
+  Double_t *xPt2=new Double_t[10];
+  xPt2[0] = 0.;
+  xPt2[1]=20;
+  xPt2[2]=40;
+  xPt2[3]=60;
+  xPt2[4]=80;
+  xPt2[5]=100;
+  xPt2[6]=120;
+  xPt2[7]=150; 
+  
+  fhnJetTM->SetBinEdges(2,xPt2);
   fOutputList->Add(fhnJetTM);
-
+   delete [] xPt3;
+   delete [] xPt2;
   // =========== Switch on Sumw2 for all histos ===========
   for (Int_t i=0; i<fOutputList->GetEntries(); ++i) {
     TH1 *h1 = dynamic_cast<TH1*>(fOutputList->At(i));
@@ -363,7 +376,12 @@ void AliAnalysisTaskJetAntenna::UserExec(Option_t *)
   fHistEvtSelection->Fill(0);
   // accepted events
   // -- end event selection --
-
+  // pt hard
+  Double_t pthard=0;
+  Double_t pthardbin=0;
+  if(fDoMatching){
+  pthard = AliAnalysisTaskFastEmbedding::GetPtHard();
+  pthardbin = GetPtHardBin(pthard);}
   // get background
   AliAODJetEventBackground* externalBackground = 0;
   if(fAODOut&&!externalBackground&&fBackgroundBranch.Length()){
@@ -588,7 +606,7 @@ void AliAnalysisTaskJetAntenna::UserExec(Option_t *)
       if(phistr<-0.5*TMath::Pi()) phistr += 2*TMath::Pi();
       if(phistr>1.5*TMath::Pi()) phistr -= 2*TMath::Pi();
 
-      double jetEntries[6] = {dRR,ptbig,pt,phistr,circ,static_cast<double>(nc)};
+      double jetEntries[8] = {centValue,dRR,ptbig,pt,phistr,circ,static_cast<double>(nc),pthardbin};
       fhnJetTM->Fill(jetEntries);
 
     } // 2nd Track loop
@@ -650,7 +668,30 @@ Int_t  AliAnalysisTaskJetAntenna::GetListOfTracksExtra(TList *list){
   else aod = fAODOut;
   if(!aod)return 0;
  
-      TClonesArray *aodExtraTracks = dynamic_cast<TClonesArray*>(aod->FindListObject("aodExtraTracks"));
+    for(int it = 0;it < aod->GetNumberOfTracks();++it){
+    AliAODTrack *tr = aod->GetTrack(it);
+    Bool_t bGood = false;
+    if(fFilterType == 0)bGood = true;
+    else if(fFilterType == 1)bGood = tr->IsHybridTPCConstrainedGlobal();
+    else if(fFilterType == 2)bGood = tr->IsHybridGlobalConstrainedGlobal();
+    if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
+    if(fRequireITSRefit==1){if((tr->GetStatus()&AliESDtrack::kITSrefit)==0)continue;}
+    if(bGood==false) continue;
+    if (fApplySharedClusterCut) {
+      Double_t frac = Double_t(tr->GetTPCnclsS()) /Double_t(tr->GetTPCncls());
+      if (frac > 0.4) continue;
+    }
+    if(TMath::Abs(tr->Eta())>0.9)continue;
+    if(tr->Pt()<0.15)continue;
+    list->Add(tr);
+    iCount++;
+    } 
+
+
+
+
+
+     TClonesArray *aodExtraTracks = dynamic_cast<TClonesArray*>(aod->FindListObject("aodExtraTracks"));
       if(!aodExtraTracks)return iCount;
       for(int it =0; it<aodExtraTracks->GetEntries(); it++) {
        AliVParticle *track = dynamic_cast<AliVParticle*> ((*aodExtraTracks)[it]);
@@ -674,7 +715,7 @@ Int_t  AliAnalysisTaskJetAntenna::GetListOfTracksExtra(TList *list){
        if(fDebug) printf("pt extra track %.2f \n", trackAOD->Pt());
        list->Add(trackAOD);
        iCount++;
-        }
+      }
     
      return iCount;
 }
@@ -700,3 +741,16 @@ Int_t AliAnalysisTaskJetAntenna::GetPhiBin(Double_t phi)
     if(phibin<0||phibin>=fNRPBins){AliError("Phi Bin not defined");}
     return phibin;
 }
+
+Int_t AliAnalysisTaskJetAntenna::GetPtHardBin(Double_t ptHard){
+
+   const Int_t nBins = 10;
+  Double_t binLimits[nBins] = { 5., 11., 21., 36., 57., 84., 117., 156., 200., 249. }; // lower limits
+   
+  Int_t bin = -1;
+  while(bin<nBins-1 && binLimits[bin+1]<ptHard){
+    bin++;
+  }
+   
+  return bin;
+}
index 68e3fa8bd09f26bdc2bc60edcaf17ed5a1cd4f44..c88d0496ac827ff99b0f55f89cf3d0102ac8b2b1 100644 (file)
@@ -38,7 +38,7 @@ public:
 
    Double_t RelativePhi(Double_t angle1,Double_t angle2);     
    Int_t   GetPhiBin(Double_t phi);
-   
+   Int_t      GetPtHardBin(Double_t ptHard);
   
    virtual AliVEvent::EOfflineTriggerTypes GetOfflineTrgMask() const { return fOfflineTrgMask; }
    virtual void     GetBranchNames(TString &branch1, TString &branch2) const { branch1 = fJetBranchName[0]; branch2 = fJetBranchName[1]; }
@@ -105,6 +105,7 @@ private:
    Int_t   SelectTrigger(TList *list,Double_t minT,Double_t maxT,Int_t &number);
    Int_t   GetHardestTrackBackToJet(AliAODJet *jet);
    Int_t   GetListOfTracksCloseToJet(TList *list,AliAODJet *jet);
+  
    // jets to compare
    TString fJetBranchName[2]; //  name of jet branches to compare
    TList *fListJets[2];       //! jet lists
similarity index 75%
rename from TEvtGen/CMakelibphotos.pkg
rename to PWGLF/CMakelibPWGLFspectraJET.pkg
index dcc107e81711dac107604d5eec0b2a3e41c031ee..249adfb64687f9800d93a3563cfb56a4e8f03a21 100644 (file)
@@ -1,5 +1,6 @@
+# -*- mode: CMake -*-
 #--------------------------------------------------------------------------------#
-# Package File for photos                                                        #
+# Package File for PWGLFresonances                                                #
 # Author : Johny Jose (johny.jose@cern.ch)                                       #
 # Variables Defined :                                                            #
 #                                                                                #
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( FSRCS  PHOTOS/phcork.F PHOTOS/phint.F PHOTOS/phint1.F PHOTOS/phlupa.F PHOTOS/phoan1.F PHOTOS/phoan2.F PHOTOS/phobo3.F PHOTOS/phobos.F PHOTOS/phocha.F PHOTOS/phochk.F PHOTOS/phocin.F PHOTOS/phocor.F PHOTOS/phodo.F PHOTOS/phoene.F PHOTOS/phoerr.F PHOTOS/phofac.F PHOTOS/phoin.F PHOTOS/phoinf.F PHOTOS/phoini.F PHOTOS/phomak.F PHOTOS/phooma.F PHOTOS/phoout.F PHOTOS/phopre.F PHOTOS/phoran.F PHOTOS/phorep.F PHOTOS/phorin.F PHOTOS/phoro2.F PHOTOS/phoro3.F PHOTOS/phospi.F PHOTOS/photos.F PHOTOS/photos_get.F PHOTOS/photos_make.F PHOTOS/photos_set.F PHOTOS/photri.F PHOTOS/photwo.F PHOTOS/phtype.F)
+set ( SRCS 
+        SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx
+ )
+
+string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
+
+set ( DHDR PWGLFspectraJETLinkDef.h)
+
+set ( EXPORT )
+
+set ( EINCLUDE  PWGLF/SPECTRA/PiKaPr/TestAOD TPC TOF STEER/STEER STEER/ESD STEER/AOD STEER/CDB STEER/STEERBase ANALYSIS)
diff --git a/PWGLF/PWGLFspectraJETLinkDef.h b/PWGLF/PWGLFspectraJETLinkDef.h
new file mode 100644 (file)
index 0000000..ae56f36
--- /dev/null
@@ -0,0 +1,6 @@
+#ifdef __CINT__
+
+#pragma link C++ class AliAnalysisTaskJetSpectraAOD+;
+
+
+#endif
index d8b4cdd6db39e850be6772cc6a3513515fbb9aa6..d16d8907118133c8165db360c22669b3087e259e 100644 (file)
@@ -50,8 +50,8 @@ AliRsnMiniAnalysisTask *AddTaskSigmaStar
  Int_t       pairCutSetID = 0,
  Int_t       mixingConfigID = 0,
  Int_t       aodFilterBit = 5,
Int_t       piPIDCut = 3.0,
Int_t       pPIDCut = 3.0,
Float_t       piPIDCut = 3.0,
Float_t       pPIDCut = 3.0,
  Float_t     trackDCAcut = 7.0,
  Float_t     massTol = 0.01,
  Float_t     lambdaDCA = 0.3,
@@ -168,7 +168,7 @@ AliRsnMiniAnalysisTask *AddTaskSigmaStar
    else if(collSyst==kPPb) collSystName="pPb";
    else collSystName="PbPb";
 
-   TString taskName = Form("SigmaStar%s%s_%.1f_%d_%.1f_%.1f_%.2f_%.2f_%.1f_%.2f_%.1f", 
+   TString taskName = Form("SigmaStar%s%s_%.1f_%d_%.1f_%.1f_%.2f_%.4f_%.2f_%.2f_%.1f", 
                           collSystName.Data(), (isMC ? "MC" : "Data"),cutV,NTPCcluster,piPIDCut,pPIDCut,trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA);
 
    AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC);
@@ -298,10 +298,14 @@ AliRsnMiniAnalysisTask *AddTaskSigmaStar
    //  outputFileName += ":Rsn";
    Printf("AddTaskSigmaStar - Set OutputFileName : \n %s\n", outputFileName.Data() );
    
-   AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s_%.1f_%d_%.1f_%.1f_%.2f_%.2f_%.1f_%.2f_%.1f",outNameSuffix.Data(),cutV,NTPCcluster,piPIDCut,pPIDCut,trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA), 
+   
+   AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s_%.1f_%d_%.1f_%.1f_%.2f_%.4f_%.2f_%.2f_%.1f",
+                                                               outNameSuffix.Data(),cutV,NTPCcluster,piPIDCut,pPIDCut,
+                                                               trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA), 
                                                           TList::Class(), 
                                                           AliAnalysisManager::kOutputContainer, 
                                                           outputFileName);
+   
    mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput(task, 1, output);
    
index 3d71f5a1e049449941e6498af772e27d3f41aaec..c41980a2e6a95c1e95aebcce188eeb34930da7ce 100644 (file)
@@ -275,8 +275,8 @@ Bool_t SetCustomQualityCut(AliRsnCutTrackQuality * trkQualityCut, Int_t customQu
   trkQualityCut->SetAODTestFilterBit(customFilterBit); 
   //apply all other cuts "by hand"
   trkQualityCut->SetCheckOnlyFilterBit(kFALSE);
-  trkQualityCut->SetMinNCrossedRowsTPC(70);
-  trkQualityCut->SetMinNCrossedRowsOverFindableClsTPC(0.8);
+  trkQualityCut->SetMinNCrossedRowsTPC(70, kTRUE);
+  trkQualityCut->SetMinNCrossedRowsOverFindableClsTPC(0.8, kTRUE);
   trkQualityCut->SetMaxChi2TPCConstrainedGlobal(36);//used for ESD only - for AOD does not correspond to any cut
   trkQualityCut->SetTPCmaxChi2(4.0); //already in filter bit 0
   trkQualityCut->SetRejectKinkDaughters(kTRUE); //already in filter bit 0
@@ -303,19 +303,19 @@ Bool_t SetCustomQualityCut(AliRsnCutTrackQuality * trkQualityCut, Int_t customQu
   }
   
   if (customQualityCutsID==AliRsnCutSetDaughterParticle::kStdCrossedRows60){
-    trkQualityCut->SetMinNCrossedRowsTPC(60);
+    trkQualityCut->SetMinNCrossedRowsTPC(60, kTRUE);
   }
   
   if (customQualityCutsID==AliRsnCutSetDaughterParticle::kStdCrossedRows80){
-    trkQualityCut->SetMinNCrossedRowsTPC(80);
+    trkQualityCut->SetMinNCrossedRowsTPC(80, kTRUE);
   }
   
   if (customQualityCutsID==AliRsnCutSetDaughterParticle::kStdRowsToCls075){
-    trkQualityCut->SetMinNCrossedRowsOverFindableClsTPC(0.75);
+    trkQualityCut->SetMinNCrossedRowsOverFindableClsTPC(0.75, kTRUE);
   }
   
   if (customQualityCutsID==AliRsnCutSetDaughterParticle::kStdRowsToCls085){
-    trkQualityCut->SetMinNCrossedRowsOverFindableClsTPC(0.85);
+    trkQualityCut->SetMinNCrossedRowsOverFindableClsTPC(0.85, kTRUE);
   }
   
   if (customQualityCutsID==AliRsnCutSetDaughterParticle::kStdCls70){
index 1093d3c1407f8746c76ef1f61320150ba08b7a30..993256812ad8ea0fc544f84bab1713e2b67bb07a 100644 (file)
@@ -650,6 +650,7 @@ void AlidNdPtAnalysisPbPbAOD::UserExec(Option_t *option)
   // only take tracks of events, which are triggered
   if(nTriggerFired == 0) { return; } 
   
+  
   //   if( !bIsEventSelected || nTriggerFired>1 ) return;
   
   //   fEventStatistics->Fill("events with only coll. cand.", 1);
@@ -686,6 +687,13 @@ void AlidNdPtAnalysisPbPbAOD::UserExec(Option_t *option)
   Double_t dCentrality = aCentrality->GetCentralityPercentile("V0M");
   
   if( dCentrality < 0 ) return;
+  
+  // protection for bias on pt spectra if all triggers selected
+//   if( (bIsEventSelectedCentral) /*&& (!bIsEventSelectedSemi) && (!bIsEventSelectedMB)*/ && (dCentrality > 10) ) return;
+//   if( /*(!bIsEventSelectedCentral) &&*/ (bIsEventSelectedSemi) /*&& (!bIsEventSelectedMB)*/ && (dCentrality < 20) && (dCentrality > 50)) return;
+    if( (bIsEventSelectedCentral)  && (dCentrality > 10) ) return;
+    if( (bIsEventSelectedSemi) && ((dCentrality < 20) || (dCentrality > 50))) return;
+  
   fEventStatistics->Fill("after centrality selection",1);
   
   // get event plane Angle from AODHeader, default is Q
diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskJetSpectraAOD.C b/PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskJetSpectraAOD.C
new file mode 100644 (file)
index 0000000..0cbc7b7
--- /dev/null
@@ -0,0 +1,103 @@
+AliAnalysisTaskJetSpectraAOD* AddTaskJetSpectraAOD(
+                                                      Bool_t mc=kFALSE,
+                                                      Double_t CentCutMin=0,
+                                                      Double_t CentCutMax=100,
+                                                      Double_t QvecCutMin=0,
+                                                      Double_t QvecCutMax=100,
+                                                      Double_t EtaMin=-0.9,
+                                                      Double_t EtaMax=0.9,
+                                                      Double_t pt=50.,
+                                                      Double_t ptTofMatch=.6,
+                                                       UInt_t trkbit=1,
+                                                      Double_t DCA=100000,
+                                                      UInt_t minNclsTPC=70,
+                                                      TString opt="",
+                                                      //jet settings
+                                                      const char * RecJet,
+                                                      const char * BckBranch,
+                                                      Float_t jetParameterR = 0.4,
+                                                      UInt_t filterMask = 272,
+                                                      Float_t ptJetMin = 0.15){
+  
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  if (!mgr) 
+    {
+      ::Error("AddAliAnalysisTaskJetSpectraAOD", "No analysis manager to connect to.");
+      return NULL;
+    }   
+  
+  // Check the analysis type using the event handlers connected to the analysis manager.
+  //==============================================================================
+  if (!mgr->GetInputEventHandler()) 
+    {
+      ::Error("AliAnalysisTaskJetSpectraAOD", "This task requires an input event handler");
+      return NULL;
+    }   
+  
+  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
+  if(type.Contains("ESD"))
+    {
+      ::Error("AliAnalysisTaskJetSpectraAOD", "This task requires to run on AOD");
+      return NULL;
+    }
+  
+  AliSpectraAODTrackCuts  * trcuts = new AliSpectraAODTrackCuts(Form("TrackCuts%s",opt.Data()));  
+  trcuts->SetDCA(DCA);
+  trcuts->SetTrackBits(trkbit);
+  trcuts->SetPt(pt);
+  trcuts->SetPtTOFMatching(ptTofMatch);   
+  trcuts->SetEta(EtaMin,EtaMax);
+  trcuts->SetMinTPCcls(minNclsTPC);
+  trcuts->PrintCuts();
+  
+  AliSpectraAODEventCuts * evcuts = new AliSpectraAODEventCuts(Form("EventCuts%s",opt.Data()));
+  evcuts->SetQVectorCut(QvecCutMin,QvecCutMax);
+  evcuts->SetCentralityCutMax(CentCutMax);  
+  evcuts->SetCentralityCutMin(CentCutMin);
+  if(mc==1)evcuts->SetIsMC(kTRUE);
+  evcuts->PrintCuts();
+  
+  
+  AliAnalysisTaskJetSpectraAOD *task = new AliAnalysisTaskJetSpectraAOD(Form("TaskAODSpectraCent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_TrBit%d%s",    
+                                                                                CentCutMin,
+                                                                                CentCutMax,
+                                                                                QvecCutMin,
+                                                                                QvecCutMax,
+                                                                                EtaMin,
+                                                                                EtaMax,
+                                                                                trkbit,
+                                                                                opt.Data()));
+  task->SetEventCuts(evcuts);
+  task->SetTrackCuts(trcuts);
+  if(mc==1)task->SetIsMC(kTRUE);
+  
+  //jet settings
+  task->SetBranchNames(RecJet);
+  task->SetRecBackgroundBranch(BckBranch);  
+  task->SetFilterMask(filterMask); 
+  task->SetJetPtMin(ptJetMin);
+
+  Float_t EtaJetMin = EtaMin + jetParameterR;
+  Float_t EtaJetMax = EtaMax - jetParameterR;
+  task->SetEtaJet(EtaJetMin,EtaJetMax);
+  
+  TString outputFileName = AliAnalysisManager::GetCommonFileName();
+  
+  TString typeofdata=mc?"MC":"Data";
+  
+  outputFileName += Form(":SpectraESE_%s%s",typeofdata.Data(),opt.Data());
+  
+  cout<<"outputFileName:  "<<outputFileName<<endl;
+  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();      
+  AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chist%s",opt.Data()),                      TList::Class(),     AliAnalysisManager::kOutputContainer,outputFileName);
+  AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcut%s",opt.Data()), AliSpectraAODEventCuts::Class(),     AliAnalysisManager::kOutputContainer,outputFileName);
+  AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcut%s",opt.Data()), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, outputFileName);
+  mgr->AddTask(task);
+  
+  mgr->ConnectInput(task, 0, cinput);
+  mgr->ConnectOutput(task, 1, coutputpt1);
+  mgr->ConnectOutput(task, 2, coutputpt2);
+  mgr->ConnectOutput(task, 3, coutputpt3);
+  
+  return task;
+}
diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx
new file mode 100644 (file)
index 0000000..c59b5d5
--- /dev/null
@@ -0,0 +1,298 @@
+/**************************************************************************
+ * Copyright(c) 1998-2009, 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.                  *
+ **************************************************************************/
+
+//-----------------------------------------------------------------
+//         AliAnalysisTaskJetSpectraAOD class
+//-----------------------------------------------------------------
+
+#include "TChain.h"
+#include "TTree.h"
+#include "TLegend.h"
+#include "TH1F.h"
+#include "TH2F.h"
+#include "THnSparse.h"
+#include "TCanvas.h"
+#include "AliAnalysisTask.h"
+#include "AliAnalysisManager.h"
+#include "AliVTrack.h"
+#include "AliAODMCParticle.h"
+#include "AliVParticle.h"
+#include "AliAODEvent.h"
+#include "AliAODTrack.h"
+#include "AliAODInputHandler.h"
+#include "AliAnalysisTaskJetSpectraAOD.h"
+#include "AliAnalysisTaskESDfilter.h"
+#include "AliAnalysisDataContainer.h"
+#include "AliCentrality.h"
+#include "TProof.h"
+#include "AliVEvent.h"
+#include "AliStack.h"
+#include <TMCProcess.h>
+
+#include "AliSpectraAODTrackCuts.h"
+#include "AliSpectraAODEventCuts.h"
+
+//jet include
+#include "AliAODHandler.h"
+#include "AliAODJetEventBackground.h"
+#include "AliAODJet.h"
+
+#include <iostream>
+
+using namespace std;
+
+ClassImp(AliAnalysisTaskJetSpectraAOD) 
+
+//________________________________________________________________________
+AliAnalysisTaskJetSpectraAOD::AliAnalysisTaskJetSpectraAOD(const char *name) : AliAnalysisTaskSE(name),
+  fAOD(0),
+  fIsMC(0),
+  fEventCuts(0),
+  fTrackCuts(0),
+  fVZEROside(0),
+  fOutput(0),
+  fAODJets(0),
+  fJetBranchName(""),
+  fListJets(0),
+  fBackgroundBranch(""),
+  fFilterMask(0),
+  fJetPtMin(0),
+  fJetEtaMin(0x0),
+  fJetEtaMax(0x0),
+  fnCentBins(20),
+  fnQvecBins(20),
+  fIsQvecCalibMode(0),
+  fQvecUpperLim(100),
+  fIsQvecCut(0),
+  fQvecMin(0),
+  fQvecMax(100)
+{
+  // Default constructor
+  
+  DefineInput(0, TChain::Class());
+  DefineOutput(1, TList::Class());
+  DefineOutput(2, AliSpectraAODEventCuts::Class());
+  DefineOutput(3, AliSpectraAODTrackCuts::Class());
+  
+}
+
+//________________________________________________________________________
+AliAnalysisTaskJetSpectraAOD::~AliAnalysisTaskJetSpectraAOD()
+{
+   delete fListJets;
+}
+//________________________________________________________________________
+//________________________________________________________________________
+void AliAnalysisTaskJetSpectraAOD::UserCreateOutputObjects()
+{
+  Printf("\n\n\n\n\n\n In CreateOutput Object:");
+  
+  fOutput = new TList();
+  fOutput->SetOwner();
+  fOutput->SetName("chistpt");
+  
+  fListJets = new TList;
+  
+  if (!fTrackCuts) AliFatal("Track Cuts should be set in the steering macro");
+  if (!fEventCuts) AliFatal("Event Cuts should be set in the steering macro");
+    
+  // binning common to all the THn
+  const Double_t ptBins[] = {0.15,5.,10.,15.,20.,25.,30.,35.,40.,50.,75.,100.,150.,200.};
+  const Int_t nptBins=13;
+  
+  //dimensions of THnSparse for jets
+  const Int_t nvarjet=5;
+  //                                        pt_raw    pt_corr           cent             Q vec            rho
+  Int_t    binsHistRealJet[nvarjet] = {    nptBins,   nptBins,       fnCentBins,      fnQvecBins,          40.};
+  Double_t xminHistRealJet[nvarjet] = {         0.,        0.,             0.,                0.,           0.};
+  Double_t xmaxHistRealJet[nvarjet] = {       200.,      200.,           100.,     fQvecUpperLim,         200.};    
+  THnSparseF* NSparseHistJet = new THnSparseF("NSparseHistJet","NSparseHistJet",nvarjet,binsHistRealJet,xminHistRealJet,xmaxHistRealJet);
+  NSparseHistJet->GetAxis(0)->SetTitle("#it{p}_{T,raw}");
+  NSparseHistJet->GetAxis(0)->SetName("pT_raw");
+  NSparseHistJet->SetBinEdges(0,ptBins);
+  NSparseHistJet->GetAxis(1)->SetTitle("#it{p}_{T,corr}");
+  NSparseHistJet->GetAxis(1)->SetName("pT_corr");
+  NSparseHistJet->SetBinEdges(1,ptBins);
+  NSparseHistJet->GetAxis(2)->SetTitle(Form("%s cent",fEventCuts->GetCentralityMethod().Data()));
+  NSparseHistJet->GetAxis(2)->SetName(Form("%s_cent",fEventCuts->GetCentralityMethod().Data()));
+  NSparseHistJet->GetAxis(3)->SetTitle("Q vec");
+  NSparseHistJet->GetAxis(3)->SetName("Q_vec");
+  NSparseHistJet->GetAxis(4)->SetTitle("rho");
+  NSparseHistJet->GetAxis(4)->SetName("rho");
+  fOutput->Add(NSparseHistJet);
+  
+  //dimensions of THnSparse for the normalization
+  const Int_t nvarev=3;
+  //                                             cent         Q vec         rho
+  Int_t    binsHistRealEv[nvarev] = {    fnCentBins,      fnQvecBins,       40.};
+  Double_t xminHistRealEv[nvarev] = {           0.,               0.,        0.};
+  Double_t xmaxHistRealEv[nvarev] = {         100.,      fQvecUpperLim,    200.};
+  THnSparseF* NSparseHistEv = new THnSparseF("NSparseHistEv","NSparseHistEv",nvarev,binsHistRealEv,xminHistRealEv,xmaxHistRealEv);
+  NSparseHistEv->GetAxis(0)->SetTitle(Form("%s cent",fEventCuts->GetCentralityMethod().Data()));
+  NSparseHistEv->GetAxis(0)->SetName(Form("%s_cent",fEventCuts->GetCentralityMethod().Data()));
+  NSparseHistEv->GetAxis(1)->SetTitle("Q vec");
+  NSparseHistEv->GetAxis(1)->SetName("Q_vec");
+  NSparseHistEv->GetAxis(2)->SetTitle("rho");
+  NSparseHistEv->GetAxis(2)->SetName("rho");
+  fOutput->Add(NSparseHistEv);
+  
+//   TH1F* fHistTest = new TH1F("fHistTest","fHistTest",nptBins-1,ptBins);
+//   fOutput->Add(fHistTest);
+  
+  PostData(1, fOutput  );
+  PostData(2, fEventCuts);
+  PostData(3, fTrackCuts);
+  
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskJetSpectraAOD::UserExec(Option_t *)
+{
+  
+  // check for jet branches
+  if(!strlen(fJetBranchName.Data())){
+    AliError("Jet branch name not set.");
+    return;
+  }
+  
+  // main event loop
+  fAOD = dynamic_cast<AliAODEvent*>(fInputEvent);
+  if (!fAOD) {
+    AliWarning("ERROR: AliAODEvent not available \n");
+    return;
+  }
+    
+  if (strcmp(fAOD->ClassName(), "AliAODEvent"))
+    {
+      AliFatal("Not processing AODs");
+    }
+  
+  TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
+  if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
+    fAODJets = ((AliAODHandler*)outHandler)->GetAOD();
+  }
+
+// -- event selection --
+
+  //event cuts
+  if(!fEventCuts->IsSelected(fAOD,fTrackCuts))return;//event selection  //FIXME in our event selection need to put fAODJets?
+  
+  Double_t Qvec=0.;//in case of MC we save space in the memory
+  if(!fIsMC){
+    if(fIsQvecCalibMode){
+      if(fVZEROside==0)Qvec=fEventCuts->GetqV0A();
+      else if (fVZEROside==1)Qvec=fEventCuts->GetqV0C();
+    }
+    else Qvec=fEventCuts->GetQvecPercentile(fVZEROside);
+  }
+  
+  if(fIsQvecCut && (Qvec<fQvecMin || Qvec>fQvecMax) ) return;
+  
+  Double_t Cent=fEventCuts->GetCent();
+  
+  // accepted events  
+  // -- end event selection --
+  
+  
+  // get background
+  AliAODJetEventBackground* externalBackground = 0;
+  if(fAODJets && !externalBackground && fBackgroundBranch.Length()){
+    externalBackground =  (AliAODJetEventBackground*)(fAODJets->FindListObject(fBackgroundBranch.Data()));
+    if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
+  }
+  
+  Float_t rho = 0;
+  if(externalBackground)rho = externalBackground->GetBackground(0);  //default schema
+  
+  // fetch jets
+  TClonesArray *aodJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fJetBranchName.Data()));
+  if(!aodJets){
+    AliError(Form("no jet branch \"%s\" found, in the AODs are:", fJetBranchName.Data()));
+    if(fAOD){
+      Printf("Input AOD >>>>");
+      fAOD->Print();    
+    }
+    return;
+  }
+  
+  fListJets->Clear();
+  for (Int_t iJet = 0; iJet < aodJets->GetEntriesFast(); iJet++) {
+    AliAODJet *jet = dynamic_cast<AliAODJet*>((*aodJets)[iJet]);
+    if (jet) fListJets->Add(jet);
+  }
+  
+
+
+  for(Int_t i=0; i<fListJets->GetEntries(); ++i){
+    AliAODJet* jet = (AliAODJet*)(fListJets->At(i));
+    
+    if((jet->Eta()<fJetEtaMin)||(jet->Eta()>fJetEtaMax)) continue;
+    
+    Double_t ptJet   = jet->Pt();
+    
+    Double_t areaJet = jet->EffectiveAreaCharged();
+
+    Double_t ptcorr = ptJet-rho*areaJet;
+           
+    Double_t varJet[5];
+    varJet[0]=jet->Pt();
+    varJet[1]=(Double_t)ptcorr;
+    varJet[2]=(Double_t)Cent;
+    varJet[3]=(Double_t)Qvec;
+    varJet[4]=(Double_t)rho;
+    
+    ((THnSparseF*)fOutput->FindObject("NSparseHistJet"))->Fill(varJet);//jet loop
+  }
+  
+  
+//   //track loop
+//   for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {  //FIXME loop on aod track... should be on jet tracks???
+//     AliAODTrack* track = fAOD->GetTrack(iTracks);
+// //     if(!(track->TestFilterBit(1024)))continue;
+//     if (!fTrackCuts->IsSelected(track,kTRUE)) continue;
+//       
+//     TH1F* h=(TH1F*)fOutput->FindObject("fHistTest");h->Fill(track->Pt());
+//     
+//   } // end loop on tracks
+  
+  Double_t varEv[3];
+  varEv[0]=Cent;
+  varEv[1]=Qvec;
+  varEv[2]=rho;
+  ((THnSparseF*)fOutput->FindObject("NSparseHistEv"))->Fill(varEv);//event loop
+  
+  PostData(1,fOutput);
+  PostData(2, fEventCuts);
+  PostData(3, fTrackCuts);
+  //Printf("............. end of Exec");
+  
+}
+//_________________________________________________________________
+void   AliAnalysisTaskJetSpectraAOD::Terminate(Option_t *)
+{
+  // Terminate
+  printf("AliAnalysisTaskJetSpectraAOD: Terminate() \n");
+}
+
+//jet
+void AliAnalysisTaskJetSpectraAOD::SetBranchNames(const TString &branch)
+{
+   fJetBranchName = branch;
+}
+
+void AliAnalysisTaskJetSpectraAOD::SetRecBackgroundBranch(const TString &bckbranch)
+{
+   fBackgroundBranch = bckbranch;
+}
\ No newline at end of file
diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.h b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.h
new file mode 100644 (file)
index 0000000..bac484a
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef ALIANALYSISTASKJETSPECTRAAOD_H
+#define ALIANALYSISTASKJETSPECTRAAOD_H
+
+class TH1F;
+class TH2F;
+class AliAODEvent;
+class AliSpectraAODTrackCuts;
+class AliSpectraAODEventCuts;
+class AliHelperPID;
+
+#include "AliAnalysisTaskSE.h"
+
+class AliAnalysisTaskJetSpectraAOD : public AliAnalysisTaskSE
+{
+ public:
+  
+  // constructors
+  AliAnalysisTaskJetSpectraAOD() : AliAnalysisTaskSE(),
+     fAOD(0),
+     fIsMC(0),
+     fEventCuts(0), 
+     fTrackCuts(0),
+     fVZEROside(0),
+     fOutput(0),
+     fAODJets(0),
+     fJetBranchName(""),
+     fListJets(0),
+     fBackgroundBranch(""),
+     fFilterMask(0),
+     fJetPtMin(0),
+     fJetEtaMin(0x0),
+     fJetEtaMax(0x0),
+     fnCentBins(20),
+     fnQvecBins(20),
+     fIsQvecCalibMode(0),
+     fQvecUpperLim(100),
+     fIsQvecCut(0),
+     fQvecMin(0),
+     fQvecMax(100)
+       {}
+  AliAnalysisTaskJetSpectraAOD(const char *name);
+  virtual ~AliAnalysisTaskJetSpectraAOD();
+  
+  void SetIsMC(Bool_t isMC = kFALSE)    {fIsMC = isMC; }
+  Bool_t GetIsMC()           const           { return fIsMC;}
+  
+  AliSpectraAODTrackCuts * GetTrackCuts()         {  return fTrackCuts; }
+  AliSpectraAODEventCuts * GetEventCuts()         {  return fEventCuts; }
+  TList * GetOutputList()                         {  return fOutput;    }
+  
+  void SetTrackCuts(AliSpectraAODTrackCuts * tc)   {   fTrackCuts = tc; }
+  void SetEventCuts(AliSpectraAODEventCuts * vc)   {   fEventCuts = vc; }
+  void SetnCentBins(Int_t val)                     {   fnCentBins = val; }
+  void SetnQvecBins(Int_t val)                     {   fnQvecBins = val; }
+  void SetQvecCalibMode(Bool_t mode)               {   fIsQvecCalibMode = mode; }
+  void SetQvecUpperLimit(Double_t val)             {   fQvecUpperLim = val; }
+  
+  //jet getter
+  void     GetBranchNames(TString &branch) const { branch = fJetBranchName; }
+  void     GetBackgroundBranchNames(TString &branch) const { branch = fBackgroundBranch; }
+  Float_t  GetJetPtMin() const { return fJetPtMin; }
+  Float_t  GetJetEtaMin() const { return fJetEtaMin; }
+  Float_t  GetJetEtaMax() const { return fJetEtaMax; }
+  //jet setter
+  void     SetBranchNames(const TString &branch);
+  void     SetRecBackgroundBranch(const TString &bckbranch);
+  void     SetFilterMask(UInt_t i){fFilterMask = i;}
+  void     SetJetPtMin(Float_t pt) { fJetPtMin = pt; }
+  void     SetEtaJet(Float_t etamin,Float_t etamax)   { fJetEtaMin = etamin; fJetEtaMax = etamax; }
+  
+  void SetVZEROside(Int_t side = 0)    {fVZEROside = side; }
+  Int_t GetVZEROside()           const           { return fVZEROside;}
+  
+  void SetQvecCut(Bool_t qcut) { fIsQvecCut = qcut; }
+  void SetQvecCutLimits(Float_t qmin,Float_t qmax)   { fQvecMin = qmin; fQvecMax = qmax; }
+  
+
+  void   UserCreateOutputObjects();
+  void   UserExec(Option_t *option);
+  void   Terminate(Option_t *);
+  
+ private:
+  
+  AliAODEvent           *fAOD;         //! AOD object
+  Bool_t          fIsMC;// true if processing MC
+  AliSpectraAODEventCuts      * fEventCuts;     // Event Cuts
+  AliSpectraAODTrackCuts      * fTrackCuts;     // Track Cuts
+  
+  Int_t                      fVZEROside;                  // 0: VZERO-A 1: VZERO-C
+  
+  TList                       * fOutput;        // output list
+  
+  //jet
+  AliAODEvent                 * fAODJets;         //! AOD jet object
+  TString                       fJetBranchName;   //  name of jet branches to compare
+  TList                       * fListJets;        //! jet lists
+  TString                       fBackgroundBranch;
+   
+  UInt_t  fFilterMask;       // filter bit for slecected tracks
+  Float_t fJetPtMin;         // minimum jet pT
+  Float_t fJetEtaMin;        // lower bound on eta for found jets
+  Float_t fJetEtaMax;        // upper bound on eta for found jets
+  
+  Int_t                            fnCentBins;            // number of bins for the centrality axis
+  Int_t                            fnQvecBins;            // number of bins for the q vector axis
+  Bool_t                           fIsQvecCalibMode;      // calib mode for Qvector percentile
+  Double_t                         fQvecUpperLim;         // Upper limit for Qvector
+  
+  Bool_t                           fIsQvecCut;            // Q-vec cut switch
+  Double_t                         fQvecMin;              // lower bound for Qvec
+  Double_t                         fQvecMax;              // upper bound for Qvec
+  
+  AliAnalysisTaskJetSpectraAOD(const AliAnalysisTaskJetSpectraAOD&);
+  AliAnalysisTaskJetSpectraAOD& operator=(const AliAnalysisTaskJetSpectraAOD&);
+  
+  ClassDef(AliAnalysisTaskJetSpectraAOD, 1);
+};
+
+#endif
index 4a84e11d10c9035d9816b5beded84cea67874317..e1f2bde1435e444b3f0a22a7e3ff39caf4587634 100644 (file)
@@ -1,3 +1,16 @@
+#if !defined (__CINT__) || (defined(__MAKECINT__))
+#include <iostream>
+#include "TH1.h"
+#include "TVirtualFitter.h"
+#include "TMath.h"
+#include "TFile.h"
+#include "TF1.h"
+#include "TCanvas.h"
+#include "TROOT.h"
+#include "TRandom.h"
+
+#endif
+using namespace std;
 /* definition of the fields in the histogram returned */
 enum EValue_t {
   kYield = 1,
@@ -10,6 +23,22 @@ enum EValue_t {
   kMeanSysLo
 };
 
+
+void YieldMean_IntegralMean(TH1 *hdata, TH1 *hlo, TH1 *hhi, Double_t &integral, Double_t &mean,Bool_t printinfo=kFALSE);
+TH1* YieldMean_LowExtrapolationHisto(TH1 *h, TF1 *f, Double_t min, Double_t binwidth = 0.01);
+TH1 * YieldMean_HighExtrapolationHisto(TH1 *h, TF1 *f, Double_t max, Double_t binwidth = 0.1);
+TH1 * YieldMean_ReturnRandom(TH1 *hin);
+TH1 * YieldMean_ReturnCoherentRandom(TH1 *hin);
+TH1 *YieldMean_ReturnExtremeHisto(TH1 *hin, Float_t sign = 1.);
+TH1 *YieldMean_ReturnExtremeHardHisto(TH1 *hin);
+TH1 *YieldMean_ReturnExtremeSoftHisto(TH1 *hin);
+TH1 * YieldMean_ReturnExtremeLowHisto(TH1 *hin);
+
+TH1 * YieldMean_ReturnExtremeHighHisto(TH1 *hin);
+
+
+
+
 TH1 *
 YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max = 10., Double_t loprecision = 0.01, Double_t hiprecision = 0.1, Option_t *opt = "0q",TString logfilename="log.root")
 {
@@ -31,8 +60,17 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
   /*
    *   measure the central value 
    */
-  
-  do Int_t fitres = htot->Fit(f, opt);
+  Int_t fitres;
+  Int_t trials = 0;
+  trials = 0;
+  do {
+    fitres = htot->Fit(f, opt);
+    Printf("Trial: %d", trials++);
+    if(trials > 10) {
+      Printf("FIT DOES NOT CONVERGE IN LINE %d",__LINE__);
+      break;
+    }
+  }
   while (fitres != 0);
   TFile* filewithfits=TFile::Open(logfilename.Data(),"UPDATE");
   htot->Write();
@@ -60,7 +98,15 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
    */
 
   /* fit with stat error */
-  do Int_t fitres = hstat->Fit(f, opt);
+  trials = 0;
+  do {
+    fitres = hstat->Fit(f, opt);
+    Printf("Trial: %d", trials++);
+    if(trials > 10) {
+      Printf("FIT DOES NOT CONVERGE IN LINE %d",__LINE__);
+      break;
+    }
+  }
   while (fitres != 0);
   hlo = YieldMean_LowExtrapolationHisto(hstat, f, min, loprecision);
   hhi = YieldMean_HighExtrapolationHisto(hstat, f, max, hiprecision);
@@ -81,7 +127,7 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
     delete hrnd;
     delete hrndlo;
     delete hrndhi;
-  }
+   }
   /* random generation with integration (fine) */
   TH1 *hIntegral = new TH1F("hIntegral", "", 100, 
                             hIntegral_tmp->GetMean() - 10. * hIntegral_tmp->GetRMS(),
@@ -134,7 +180,15 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
    */
 
   TH1 *hhigh = YieldMean_ReturnExtremeHighHisto(hsys);
-  do Int_t fitres = hhigh->Fit(f, opt);
+  trials = 0;
+  do {
+    fitres = hhigh->Fit(f, opt);
+    Printf("Trial: %d", trials++);
+    if(trials > 10) {
+      Printf("FIT DOES NOT CONVERGE IN LINE %d",__LINE__);
+      break;
+    }
+  }
   while (fitres != 0);
   hlo = YieldMean_LowExtrapolationHisto(hhigh, f, min, loprecision);
   hhi = YieldMean_HighExtrapolationHisto(hhigh, f, max, hiprecision);
@@ -151,7 +205,15 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
    */
 
   TH1 *hhard = YieldMean_ReturnExtremeHardHisto(hsys);
-  do Int_t fitres = hhard->Fit(f, opt);
+  trials = 0;
+  do {
+    fitres = hhard->Fit(f, opt);
+    Printf("Trial: %d", trials++);
+    if(trials > 10) {
+      Printf("FIT DOES NOT CONVERGE IN LINE %d",__LINE__);
+      break;
+    }
+  }
   while (fitres != 0);
   hlo = YieldMean_LowExtrapolationHisto(hhard, f, min, loprecision);
   hhi = YieldMean_HighExtrapolationHisto(hhard, f, max, hiprecision);
@@ -168,7 +230,15 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
    */
 
   TH1 *hlow = YieldMean_ReturnExtremeLowHisto(hsys);
-  do Int_t fitres = hlow->Fit(f, opt);
+  trials = 0;
+  do {
+    fitres = hlow->Fit(f, opt);
+    Printf("Trial: %d", trials++);
+    if(trials > 10) {
+      Printf("FIT DOES NOT CONVERGE IN LINE %d",__LINE__);
+      break;
+    }
+  }
   while (fitres != 0);
   hlo = YieldMean_LowExtrapolationHisto(hlow, f, min, loprecision);
   hhi = YieldMean_HighExtrapolationHisto(hlow, f, max, hiprecision);
@@ -185,7 +255,15 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
    */
 
   TH1 *hsoft = YieldMean_ReturnExtremeSoftHisto(hsys);
-  do Int_t fitres = hsoft->Fit(f, opt);
+  trials = 0;
+  do {
+    fitres = hsoft->Fit(f, opt);
+    Printf("Trial: %d", trials++);
+    if(trials > 10) {
+      Printf("FIT DOES NOT CONVERGE IN LINE %d",__LINE__);
+      break;
+    }
+  }
   while (fitres != 0);
   hlo = YieldMean_LowExtrapolationHisto(hsoft, f, min, loprecision);
   hhi = YieldMean_HighExtrapolationHisto(hsoft, f, max, hiprecision);
@@ -201,7 +279,7 @@ YieldMean(TH1 *hstat, TH1 *hsys, TF1 *f = NULL, Double_t min = 0., Double_t max
 }
 
 TH1 *
-YieldMean_LowExtrapolationHisto(TH1 *h, TF1 *f, Double_t min, Double_t binwidth = 0.01)
+YieldMean_LowExtrapolationHisto(TH1 *h, TF1 *f, Double_t min, Double_t binwidth)
 {
   /* find lowest edge in histo */
   Int_t binlo;
@@ -231,7 +309,7 @@ YieldMean_LowExtrapolationHisto(TH1 *h, TF1 *f, Double_t min, Double_t binwidth
 }
 
 TH1 *
-YieldMean_HighExtrapolationHisto(TH1 *h, TF1 *f, Double_t max, Double_t binwidth = 0.1)
+YieldMean_HighExtrapolationHisto(TH1 *h, TF1 *f, Double_t max, Double_t binwidth)
 {
   /* find highest edge in histo */
   Int_t binhi;
@@ -243,7 +321,9 @@ YieldMean_HighExtrapolationHisto(TH1 *h, TF1 *f, Double_t max, Double_t binwidth
       break;
     }
   }
-  
+  if(max<hi) {
+    Printf("Warning! You should probably set a higher max value (Max = %f, hi = %f)", max, hi);
+  }
   Int_t nbins = (max - hi) / binwidth;
   TH1 *hhi = new TH1F("hhi", "", nbins, hi, max);
   
@@ -332,7 +412,7 @@ YieldMean_ReturnExtremeHardHisto(TH1 *hin)
 }
 
 TH1 *
-YieldMean_ReturnExtremeHisto(TH1 *hin, Float_t sign = 1.)
+YieldMean_ReturnExtremeHisto(TH1 *hin, Float_t sign)
 {
   Double_t ptlow, pthigh;
   for (Int_t ibin = 0; ibin < hin->GetNbinsX(); ibin++) {
@@ -379,13 +459,13 @@ YieldMean_ReturnExtremeHisto(TH1 *hin, Float_t sign = 1.)
   return hmax;
 }
 
-YieldMean_IntegralMean(TH1 *hdata, TH1 *hlo, TH1 *hhi, Double_t &integral, Double_t &mean,Bool_t printinfo=kFALSE)
+void YieldMean_IntegralMean(TH1 *hdata, TH1 *hlo, TH1 *hhi, Double_t &integral, Double_t &mean,Bool_t printinfo)
 {
   
   /*
    * compute integrals
    */
-
+  
   Double_t cont, err, width, cent;
   Double_t I = 0., IX = 0., Ierr = 0., IXerr = 0., Ilerr = 0., IXlerr = 0.;
   Double_t M = 0., Merr = 0., Mlerr = 0., C;
@@ -401,6 +481,7 @@ YieldMean_IntegralMean(TH1 *hdata, TH1 *hlo, TH1 *hhi, Double_t &integral, Doubl
     I += cont;
     IX += cont * cent;
   }
+  
   dataonly=I;  
   /* integrate low */
   for (Int_t ibin = 0; ibin < hlo->GetNbinsX(); ibin++) {
index 00f25648dcbc5dc4b6450682b6bd6a19201bbe4e..afa4ebc791117a22e74a662c3e7b402038a3dbd1 100644 (file)
@@ -64,6 +64,8 @@ TGraphErrors*  PlotThermusYields(const char * filename, Int_t color, Int_t lineS
                                  const char * tag);
 TGraphErrors * PlotGSIYields(const char * fileName, Int_t color=kBlack, Int_t lineStyle = kSolid,
                              const char * tag ="", Bool_t isPbPb = 1);
+TGraphErrors*  PlotFlorenceYields(const char * filename, Int_t color, Int_t lineStyle,
+                                  const char * tag) ;
 
 void AddLineToThermalLegend(TObject * obj, TString line, const char * optFirst = "L");
 
@@ -72,11 +74,15 @@ void SaveCanvas(const char * name) ;
 
 // Ratios to be draw. Remember to change the labels in DrawFrame if you change this
 const Int_t nratio = 10;
-//  Int_t denum[nratio]    = {kPDGPi , kPDGPi     , kPDGKS0    ,  kPDGPi , kPDGPi    , kPDGPi       , kPDGDeuteron , kPDGPi          , kPDGK   , -kPDGK};
-
 Int_t num  [nratio]            = {kPDGK  , kPDGProton , kPDGLambda , kPDGXi  , kPDGOmega , kPDGDeuteron , kPDGHE3      , kPDGHyperTriton , kPDGPhi , kPDGKStar};
 Int_t denum[nratio]            = {kPDGPi , kPDGPi     , kPDGKS0    ,  kPDGPi , kPDGPi    , kPDGProton   , kPDGDeuteron , kPDGPi          , kPDGK   , kPDGK};
 Int_t isSum[nratio]            = {1      , 1          ,  1         ,   1     , 1         , 1            , 0            , 1               , 1       , 1      };
+
+// const Int_t nratio = 10;
+// Int_t num  [nratio]            = {kPDGK  , kPDGProton , kPDGLambda , kPDGXi  , kPDGOmega , kPDGDeuteron , kPDGHE3      , kPDGHyperTriton , kPDGPhi , kPDGKStar};
+// Int_t denum[nratio]            = {kPDGPi , kPDGPi     , kPDGKS0    ,  kPDGPi , kPDGPi    , kPDGProton   , kPDGDeuteron , kPDGPi          , kPDGK   , kPDGK};
+// Int_t isSum[nratio]            = {1      , 1          ,  1         ,   1     , 1         , 1            , 0            , 1               , 1       , 1      };
+
 const char * ratiosLabels[]          = {"#frac{K^{+}+K^{-}}{#pi^{+}+#pi^{-}}", 
                                         "#frac{p+#bar{p}}{#pi^{+}+#pi^{-}}", 
                                         "#frac{2#Lambda}{K_{S}^{0}}", 
@@ -87,7 +93,8 @@ const char * ratiosLabels[]          = {"#frac{K^{+}+K^{-}}{#pi^{+}+#pi^{-}}",
                                         "#frac{{}^{3}_{#Lambda}H+{}^{3}_{#Lambda}#bar{H} }{#pi^{+}+#pi^{-}}",
                                         "#frac{#phi}{K^{+}+K^{-}}",
                                         "#frac{K*+#bar{K}*}{K^{+}+K^{-}}",};
-static const Double_t scale[]  = {1      , 3          ,  0.5       ,  30     ,  250      , 50           , 100          , 4e5             , 2       , 1      };
+//static const Double_t scale[]  = {1      , 3          ,  0.5       ,  30     ,  250      , 50           , 100          , 4e5             , 2       , 1      };
+static const Double_t scale[]  = {1      , 3          ,  0.5       ,  80     ,  1000      , 50           , 100          , 4e5             , 2       , 1      };
 //static const Double_t scale[]  = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,};
 const Int_t npart = 12;
 Int_t particleYields  [npart] = {kPDGPi ,kPDGK   ,kPDGKS0, kPDGKStar, kPDGPhi, kPDGProton , kPDGLambda , kPDGXi  , kPDGOmega , kPDGDeuteron, kPDGHyperTriton, kPDGHE3    };
@@ -133,7 +140,7 @@ TPad    *myPadLabel  =0;
 TLegend * legThermal = 0;
 #endif
 
-Bool_t saveCanvas = 0; // if true, the canvas is saved and copied to the analysis note folder
+Bool_t saveCanvas = 1; // if true, the canvas is saved and copied to the analysis note folder
 
 TClonesArray * PlotRatiosForQM14() {
 #if !(!defined (__CINT__) || (defined(__MAKECINT__)))
@@ -146,7 +153,7 @@ TClonesArray * PlotRatiosForQM14() {
   // Uncomment stuff in this section to save the inputs for thermal models
   //#define SAVE_INPUT_THERMAL_MODEL
 #ifdef SAVE_INPUT_THERMAL_MODEL
-  PrepareThermalModelsInputFiles(arrPbPb, AliParticleYield::kCSPbPb, 2760, "V0M0010", /*separateCharges*/1);
+    PrepareThermalModelsInputFiles(arrPbPb, AliParticleYield::kCSPbPb, 2760, "V0M0010", /*separateCharges*/1);
   // PrepareThermalModelsInputFiles(arrpp7, AliParticleYield::kCSpp, 7000, "", /*separateCharges*/1);
   // PrepareThermalModelsInputFiles(arrpPb, AliParticleYield::kCSpPb, 5020, "V0A0005", /*separateCharges*/1);
   // PrepareThermalModelsInputFiles(arrpPb, AliParticleYield::kCSpPb, 5020, "V0A2040", /*separateCharges*/1);
@@ -168,37 +175,42 @@ TClonesArray * PlotRatiosForQM14() {
 
   SetStyle();
 
-  //  DrawRatio("allpp");  
+  DrawRatio("allpp");  
+  //  DrawRatio("allppWithRHIC");  
   //  DrawRatio("PbPbWithPP7TeV");
   //DrawRatio("allsyst");
   //DrawRatio("PbPb6080andpPb0005");
   //  DrawRatio("pp_vsRHIC");
   //  DrawRatio("PbPb_vsRHIC");
-  //  DrawRatio("aliceall");
+  //DrawRatio("aliceall");
 
 
   // Yields and FITS
   //  maxy=2000;
 
-  //DrawRatio("fit_ReferenceFit_PbPb0010", 1);
-  //DrawRatio("fitSHARE_NoPionsNoProtons_PbPb0010",1);
+  // DrawRatio("fit_ReferenceFit_PbPb0010", 1);
+  //  DrawRatio("fit_ReferenceFit_GSIONLY_PbPb0010", 1);
+  //  DrawRatio("fit_ReferenceFit_GSITHERMUS_PbPb0010",1);
+  // DrawRatio("fitSHARE_NoPionsNoProtons_PbPb0010",1);
   //  DrawRatio("fitGSI_NoPionsNoProtons_PbPb0010", 1);
-  //DrawRatio("fitShare_All_PbPb0010", 1);
+  // DrawRatio("fitShare_All_PbPb0010", 1);
 
   //  DrawRatio("fitShareWithWithoutNuclei_PbPb0010", 1);
   // maxy=200;
   // DrawRatio("fitGSI_PbPb6080", 1);
-    // maxy=150;
-    // DrawRatio("fitGSI_PbPb2040", 1);
-  maxy = 60;
-  //  DrawRatio("fitThermus_GammaSFree_pPb0005");
-  DrawRatio("fitShare_pPb0005");
-   // maxy=20;
-   // DrawRatio("fitThermus_GammaSFree_pPb2040");
-   // maxy=9;
-   // DrawRatio("fitThermus_GammaSFree_pPb6080");
-   // maxy=9;
-   // DrawRatio("fitGSI_pp");
+  //   maxy=150;
+  //   DrawRatio("fitGSI_PbPb2040", 1);
+  //  maxy = 60;
+  // DrawRatio("fitThermus_GammaSFree_pPb0005");
+  //  DrawRatio("fitShare_pPb0005");
+  //  DrawRatio("fitShare_pPb0005_NoOmega", 1);
+  //  maxy=20;
+  //  DrawRatio("fitThermus_GammaSFree_pPb2040");
+  //  maxy=9;
+  //  DrawRatio("fitThermus_GammaSFree_pPb6080");
+  //  maxy=9;
+  //    DrawRatio("fitGSI_pp");
+  //  DrawRatio("fitFlorence_pp");
 
   //  NewLegendQM();
   return arrPbPb;
@@ -871,6 +883,20 @@ void DrawRatio(TString what, Bool_t isYield, Double_t shift) {
 
     SaveCanvas("Ratios_pponly");
   }
+  else if (what == "allppWithRHIC"){
+    DrawRatio("frame");    
+    DrawRatio("pp900", 0, 0.05);
+    DrawRatio("pp276", 0, 0.20);
+    DrawRatio("pp7", 0, 0.35);
+    DrawRatio("ppPHENIX", 0, -0.35);
+    DrawRatio("ppSTAR", 0, -0.15);
+
+    array =0;
+    
+    NewLegendQM(0.588353, 0.636857, 0.910643, 0.948352);
+
+    SaveCanvas("Ratios_pponly_withRHIC");
+  }
   else if (what == "PbPbWithPP7TeV"){
     
     DrawRatio("frame");
@@ -970,7 +996,49 @@ void DrawRatio(TString what, Bool_t isYield, Double_t shift) {
     SaveCanvas("Fit_PbPb0010_Reference");
 
     array =0;
-  } else if( what == "fitSHARE_NoPionsNoProtons_PbPb0010") {
+  }  else if( what == "fit_ReferenceFit_GSIONLY_PbPb0010") {
+
+    DrawRatio("frame",1);  
+    DrawRatio("PbPb_0010",1);  
+    particlesToExcludeFromChi2="[313]"; // do not consider K* 
+    legThermal->SetNColumns(4);
+    AddLineToThermalLegend(legThermal, "Model,T (MeV), V (fm^{3}), #chi^{2}/NDF", "0");    
+    // FIXME: sistemare valori rapporti   
+    shiftRatioDataModel =0;
+    PlotGSIYields("data+therm_fit2_s2760_0-10qm14.dat"                        , kBlack  , kSolid     , "GSI      , 156 #pm 2  , 5330 #pm 505 , 17.4/9");
+
+    myPadHisto->cd();
+    NewLegendQM(0.651606, 0.765993, 0.909639, 0.865951, 1);
+    DrawMarkerKStarNoFit() ;
+    DrawExtrapolatedSymbolsYieldsPbPb0010();
+
+    SaveCanvas("Fit_PbPb0010_Reference_GSI");
+
+    array =0;
+  } else if( what == "fit_ReferenceFit_GSITHERMUS_PbPb0010") {
+
+    DrawRatio("frame",1);  
+    DrawRatio("PbPb_0010",1);  
+    particlesToExcludeFromChi2="[313]"; // do not consider K* 
+    legThermal->SetNColumns(4);
+    AddLineToThermalLegend(legThermal, "Model,T (MeV), V (fm^{3}), #chi^{2}/NDF", "0");    
+    // FIXME: sistemare valori rapporti   
+    shiftRatioDataModel =-0.1;
+    PlotThermusYields("lhc2760_final_0005_single_gc_output_gs1_wevc_nkst.txt" , kBlack     , kSolid      , "THERMUS 2.3 , 155 #pm 2 , 5924 #pm 543 , 23.6/9");
+    shiftRatioDataModel =0.1;
+    PlotGSIYields("data+therm_fit2_s2760_0-10qm14.dat"                        , kOrange-1  , kDashed     , "GSI      , 156 #pm 2  , 5330 #pm 505 , 17.4/9");
+
+
+    myPadHisto->cd();
+    NewLegendQM(0.651606, 0.765993, 0.909639, 0.865951, 1);
+    DrawMarkerKStarNoFit() ;
+    DrawExtrapolatedSymbolsYieldsPbPb0010();
+
+    SaveCanvas("Fit_PbPb0010_Reference_GSITHERMUS");
+    //    SaveCanvas("");
+
+    array =0;
+  }else if( what == "fitSHARE_NoPionsNoProtons_PbPb0010") {
     array =0;
 
     DrawRatio("frame",1);  
@@ -1242,17 +1310,66 @@ void DrawRatio(TString what, Bool_t isYield, Double_t shift) {
     std::cout << "MISSING DATA" << std::endl;
     array =0;
   } else if( what == "fitShare_pPb0005") {
+
+
     DrawRatio("frame",1);  
-    DrawRatio("pPb0005",1);  
-    legThermal->SetNColumns(1);
-    PlotThermusYields("fit_gamma_q_s_fixed_pPb_0005.txt"   , kGreen   , kDashDotted , "SHARE 3 q fix s fix");
-    PlotThermusYields("fit_gamma_q_fixed_pPb_0005.txt"    , kBlue  , kDashDotted , "SHARE 3 q fix   s free");
-    PlotThermusYields("fit_gamma_q_s_free_pPb_0005.txt"   , kRed   , kDashDotted , "SHARE 3 q free  s free");
-    PlotThermusYields("fit_gamma_q_s_free_with_d_pPb_0005.txt", kBlack, kSolid, "SHARE 3 (with d) q free  s free");
-    NewLegendQM(0.613454, 0.701578, 0.940763, 0.918272, 1);
+    DrawRatio("pPb0005",1, 0.00001);  
+    legThermal->SetNColumns(6);
+    AddLineToThermalLegend(legThermal, "Model,T (MeV), V (fm^{3}), #gamma_{s}, #gamma_{q}, #chi^{2}/NDF", "0");    
+    particlesToExcludeFromChi2="[313][1000010020][1000020030][1010010030]"; // do not consider K* and nuclei 
+    shiftRatioDataModel = -0.2;
+    PlotThermusYields("NEW_fit_gamma_q_s_fixed_pPb_0005_without_nuclei.txt" , kBlack    , kSolid      , "SHARE 3 , 158 #pm 3 , 121 #pm 18  , 1 (fix)       , 1 (fix) , 24.3/6");
+    shiftRatioDataModel = 0;
+    PlotThermusYields("NEW_fit_gamma_q_fixed_pPb_0005_without_nuclei.txt"   , kBlue+1   , kDashDotted , "SHARE 3 , 161 #pm 3 , 115 #pm 17  , 0.93 #pm 0.04 , 1 (fix) , 20.3/5");
+    shiftRatioDataModel = 0.2;
+    PlotThermusYields("NEW_fit_gamma_q_s_free_pPb_0005_without_nuclei.txt"  , kOrange+2 , kDashDotted , "SHARE 3 , 144 #pm 1 , 81 #pm 25   ,  1.599 #pm 0 , 1.71 #pm 0.06 , 11.4/4");
+
+    NewLegendQM(0.650602, 0.694971, 0.909639, 0.865951, 1);
+    DrawExtrapNotInFitpPb0005() ;
+    DrawMarkerNucleiNoFit();
+    legThermal->SetX1(0.124498 ); 
+    legThermal->SetY1(0.0715488); 
+    legThermal->SetX2(0.672691 ); 
+    legThermal->SetY2(0.384575 ); 
+
+    SaveCanvas("Fit_pPb0005_SHARE");
+
+
     array =0;
 
-  } else if( what == "fitShare_pPb2040") {
+  } else if( what == "fitShare_pPb0005_NoOmega") {
+
+
+    DrawRatio("frame",1);  
+    DrawRatio("pPb0005",1, 0.00001);  
+    legThermal->SetNColumns(6);
+    AddLineToThermalLegend(legThermal, "Model,T (MeV), V (fm^{3}), #gamma_{s}, #gamma_{q}, #chi^{2}/NDF", "0");    
+    particlesToExcludeFromChi2="[313][1000010020][1000020030][1010010030]"; // do not consider K* and nuclei 
+    shiftRatioDataModel = -0.3;
+    PlotThermusYields("NEW_fit_gamma_q_s_fixed_pPb_0005_without_nuclei.txt"                 , kBlack    , kSolid      , "SHARE 3                 , 158 #pm 3  , 121 #pm 18  , 1 (fix)       , 1 (fix), 24.3/6");
+    shiftRatioDataModel = -.1;                                                                                                                                                                       
+    PlotThermusYields("NEW_fit_gamma_q_s_fixed_pPb_0005_without_nuclei_excluding_Omega.txt" , kBlue+1   , kDashDotted , "SHARE 3 (No #Omega)     , 163 #pm 4  ,  99 #pm 17  , 1 (fix)       , 1 (fix), 15.6/5");
+    shiftRatioDataModel = 0.1;                                                                                                                                                                       
+    PlotThermusYields("NEW_fit_gamma_q_fixed_pPb_0005_without_nuclei_excluding_Omega.txt"   , kOrange+2 , kDashed     , "SHARE 3 (No #Omega)     , 163 #pm 3  , 100 #pm 16  , 0.96 #pm 0.04 , 1 (fix), 14.7/4");
+    shiftRatioDataModel = 0.3;                                                                                                                                                                       
+    PlotThermusYields("NEW_fit_gamma_q_s_fixed_pPb_0005_with_nuclei_excluding_Omega.txt"    , kCyan+2   , kDotted     , "SHARE 3 (No #Omega + d) , 160 #pm 3  , 114 #pm 17  , 1 (fix)       , 1 (fix), 18.6/6");
+
+    NewLegendQM(0.650602, 0.694971, 0.909639, 0.865951, 1);
+    DrawExtrapNotInFitpPb0005() ;
+    DrawMarkerNucleiNoFit();
+    legThermal->SetX1(0.124498 ); 
+    legThermal->SetY1(0.0715488); 
+    legThermal->SetX2(0.672691 ); 
+    legThermal->SetY2(0.384575 ); 
+
+    SaveCanvas("Fit_pPb0005_SHARE_NoOmega");
+
+
+    array =0;
+
+  }  else if( what == "fitShare_pPb2040") {
     std::cout << "MISSING DATA" << std::endl;
     array =0;
   } else if( what == "fitShare_pPb6080") {
@@ -1299,6 +1416,23 @@ void DrawRatio(TString what, Bool_t isYield, Double_t shift) {
     SaveCanvas("Fit_pp7000_GSI");
     //DrawExtrapNotInFitpPb0005(0);
     array =0;
+  }else if( what == "fitFlorence_pp") {
+    DrawRatio("frame",1);
+    DrawRatio("pp7",1, 0.00001);
+    legThermal->SetNColumns(1);
+    AddLineToThermalLegend(legThermal, "Model", "0");
+    shiftRatioDataModel = -0.1;
+    particlesToExcludeFromChi2 = "[1000020030][1010010030][1000010020]";
+    PlotFlorenceYields("pp7000_Florence.txt", kBlack, kSolid, "Becattini et al.");
+    shiftRatioDataModel = 0.1;
+    particlesToExcludeFromChi2 = "[313][1000020030][1010010030]";
+    PlotGSIYields    ("data+therm_fit2_s7000gs.dat", kRed+1, kDashed, "GSI GC",0);
+    myPadHisto->cd();
+    NewLegendQM(0.725904, 0.761431, 0.874498, 0.841323, 1);
+
+    SaveCanvas("Fit_pp7000_Florence");
+    //DrawExtrapNotInFitpPb0005(0);
+    array =0;
   } else if( what == "fitGSI_fullCanonical") {
     std::cout << "MISSING DATA" << std::endl;
     array =0;
@@ -1345,7 +1479,7 @@ void DrawRatio(TString what, Bool_t isYield, Double_t shift) {
 
 void DrawFrame(Bool_t isYield) {
 
-  myCan = new TCanvas("myCan","ThermalFits",50,10,1000,isYield ? 820 : 650);
+  myCan = new TCanvas("myCan","ThermalFits",50,10,1000,isYield ? 950 : 650);
   myCan->Draw();
   myCan->cd();
   // Set the Pads
@@ -1358,14 +1492,14 @@ void DrawFrame(Bool_t isYield) {
   myPadSetUp(myPadHisto);
   myPadHisto->Draw();
 
-  myPadStdDev = new TPad("myPadStdDev","myPadStdDev",0.0,0.0,1.0,0.2,0);
+  myPadStdDev = new TPad("myPadStdDev","myPadStdDev",0.0,0.035,1.0,0.215,0);
   myPadSetUp(myPadStdDev);
   if(isYield)  myPadStdDev->Draw();
   myPadStdDev->SetGridx();
   myPadStdDev->SetGridy();
 
   // This pad is for the ratios data/model
-  myPadRatio = new TPad("myPadRatio","myPadRatio",0.0,0.2,1.0,0.4,0);
+  myPadRatio = new TPad("myPadRatio","myPadRatio",0.0,0.22,1.0,0.4,0);
   myPadSetUp(myPadRatio);
   if(isYield)  myPadRatio->Draw();
   myPadRatio->SetGridx();
@@ -1599,6 +1733,74 @@ TGraphErrors*  PlotThermusYields(const char * filename, Int_t color, Int_t lineS
   return gThermus;
 }
 
+TGraphErrors*  PlotFlorenceYields(const char * filename, Int_t color, Int_t lineStyle,
+                                 const char * tag) {
+
+  Int_t lw = lineStyle == kSolid ? 2 : 3; // Set line width
+
+
+  std::map<Int_t,Double_t> mapYields;
+  std::map<Int_t,Double_t> mapStdDev;
+
+  Int_t pdg;
+  Double_t yield, yieldbar, stddev;
+  ifstream thermusFile(filename);
+  TString line;
+  std::cout << "---"<<tag<<"---" << std::endl;
+
+  //  std::istream is(thermusFile);
+  // Read the std dev and the ratio in 2 maps, then plot them in a graph.
+  while(line.ReadLine(thermusFile, kTRUE)) {
+    if(line.BeginsWith("#")) continue;
+    TObjArray * tokens = line.Tokenize(" \t");
+    if(tokens->GetEntries() != 4) continue;// not a line with data
+    //    thermusFile >> pdg >> yield >> stddev;
+    pdg      = ((TObjString*)tokens->At(0))->String().Atof();
+    yield    = ((TObjString*)tokens->At(2))->String().Atof();
+    yieldbar = ((TObjString*)tokens->At(3))->String().Atof(); // Antiparticle yield
+    if(pdg == 0) {
+      // not a line with data
+      delete tokens;
+      continue ;
+    }
+    if( thermusFile.eof() ) break;
+    std::cout << "PDG " << pdg << " " << yield << " " << yieldbar << std::endl;
+    
+    mapYields[TMath::Abs(pdg)] += yieldbar ? ((yield+yieldbar)/2) : yield; // If the antiparticle exists, use the average
+
+    delete tokens;
+  }
+
+  // Now plot
+  TGraphErrors * gFlorence = new TGraphErrors;
+  for(Int_t ipart = 0; ipart < npart; ipart++){
+    gFlorence->SetPoint(ipart, ipart+1.5, mapYields[particleYields[ipart]]);
+    gFlorence->SetPointError(ipart, 0.3, 0);
+  }
+
+  myPadHisto->cd();
+  gFlorence->Draw("PZ");
+  gFlorence->SetLineWidth(lw);
+
+  gFlorence->SetLineColor(color);
+  gFlorence->SetLineStyle(lineStyle);
+  gFlorence->SetTitle("NoLegend");
+
+
+
+  TGraphErrors* gStdDev2 = 0;
+  TGraphErrors* gRatio   = 0;
+  std::cout << "CHI2: " 
+           <<  GetGraphRatioAndStdDev(gFlorence, gRatio, gStdDev2)
+           << std::endl;
+  myPadRatio->cd(); 
+  gRatio->Draw("PZ");
+  myPadStdDev->cd();
+  gStdDev2->Draw("PZ");
+  myPadHisto->cd();
+  AddLineToThermalLegend(gFlorence, tag, "l");
+  return gFlorence;
+}
 
 
 TGraphErrors*  PlotGSIYields(const char * filename, Int_t color, Int_t lineStyle,
index df49db6d303c2c3a10da9e9daa588b54a5aedaa1..388962745be4993d2eb79846459e3755aea86e43 100644 (file)
@@ -85,742 +85,742 @@ protected:
 
        Double_t fTotaltotET, fTotalAcctotET, fTotalRectotET, fTotalRectotETDep;//Total ET
        
-       AliEMCALGeometry *fGeoUt;//EMCal geometry object
+       AliEMCALGeometry *fGeoUt;//!//EMCal geometry object
 
        // *******************
        // primaries ET
        // *******************
-       TH2F *fHistPrimEtaEET;//total ET - Eta vs E 
-       TH2F *fHistPrimEtaPtET;//total ET - Eta vs pt 
-       TH2F *fHistPrimEtaET;//total ET - Eta
-       TH1F *fHistPrimtotET;//total ET distribution
+       TH2F *fHistPrimEtaEET;//!//total ET - Eta vs E 
+       TH2F *fHistPrimEtaPtET;//!//total ET - Eta vs pt 
+       TH2F *fHistPrimEtaET;//!//total ET - Eta
+       TH1F *fHistPrimtotET;//!//total ET distribution
        
-       TH2F *fHistPrimAccEtaEET;//acceptance ET - Eta vs E 
-       TH2F *fHistPrimAccEtaPtET;//acceptance ET - Eta vs pt 
-       TH2F *fHistPrimAccEtaET;//acceptance ET - Eta
-       TH1F *fHistPrimAcctotET;//acceptance ET distribution
+       TH2F *fHistPrimAccEtaEET;//!//acceptance ET - Eta vs E 
+       TH2F *fHistPrimAccEtaPtET;//!//acceptance ET - Eta vs pt 
+       TH2F *fHistPrimAccEtaET;//!//acceptance ET - Eta
+       TH1F *fHistPrimAcctotET;//!//acceptance ET distribution
        
-       TH2F *fHistPrimRecEtaEET;//reconstructed ET - Eta vs E 
-       TH2F *fHistPrimRecEtaPtET;//reconstructed ET - Eta vs pt 
-       TH2F *fHistPrimRecEtaET;//reconstructed ET - Eta
-       TH1F *fHistPrimRectotET;//reconstructed ET distribution
+       TH2F *fHistPrimRecEtaEET;//!//reconstructed ET - Eta vs E 
+       TH2F *fHistPrimRecEtaPtET;//!//reconstructed ET - Eta vs pt 
+       TH2F *fHistPrimRecEtaET;//!//reconstructed ET - Eta
+       TH1F *fHistPrimRectotET;//!//reconstructed ET distribution
 
-       TH2F *fHistPrimRecEtaEDepETDep;//deposited ET - Eta vs E deposited
-       TH2F *fHistPrimRecEtaPtETDep;//deposited ET - Eta vs pt 
-       TH2F *fHistPrimRecEtaETDep;//deposited ET - Eta 
-       TH1F *fHistPrimRectotETDep;//deposited ET distribution
+       TH2F *fHistPrimRecEtaEDepETDep;//!//deposited ET - Eta vs E deposited
+       TH2F *fHistPrimRecEtaPtETDep;//!//deposited ET - Eta vs pt 
+       TH2F *fHistPrimRecEtaETDep;//!//deposited ET - Eta 
+       TH1F *fHistPrimRectotETDep;//!//deposited ET distribution
        
        // *******************
        // electron ET
        // *******************
-       TH2F *fHistElectronEtaEET;// ET - Eta vs E 
-       TH2F *fHistElectronEtaPtET;//ET - Eta vs pt
-       TH2F *fHistElectronEtaET;// ET - Eta 
-       TH2F *fHistElectronEtaE;// multiplicity - Eta vs E
-       TH2F *fHistElectronEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistElectrontotET;// total ET distribution 
+       TH2F *fHistElectronEtaEET;//!// ET - Eta vs E 
+       TH2F *fHistElectronEtaPtET;//!//ET - Eta vs pt
+       TH2F *fHistElectronEtaET;//!// ET - Eta 
+       TH2F *fHistElectronEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistElectronEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistElectrontotET;//!// total ET distribution 
 
-       TH2F *fHistConvElectronEtaEET;//ET - Eta vs E   
-       TH2F *fHistConvElectronEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistConvElectronEtaET;//  ET - Eta
-       TH2F *fHistConvElectronEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistConvElectronEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistConvElectrontotET;// total ET distribution 
+       TH2F *fHistConvElectronEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistConvElectronEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistConvElectronEtaET;//!//  ET - Eta
+       TH2F *fHistConvElectronEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistConvElectronEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistConvElectrontotET;//!// total ET distribution 
 
-       TH2F *fHistScatElectronEtaEET;//ET - Eta vs E  
-       TH2F *fHistScatElectronEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistScatElectronEtaET;//  ET - Eta
-       TH2F *fHistScatElectronEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistScatElectronEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistScatElectrontotET;//  total ET distribution
+       TH2F *fHistScatElectronEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistScatElectronEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistScatElectronEtaET;//!//  ET - Eta
+       TH2F *fHistScatElectronEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistScatElectronEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistScatElectrontotET;//!//  total ET distribution
        
        // *******************
        // total electron ET
        // *******************
-       TH1F *fHistTotElectrontotET;//total ET distribution
+       TH1F *fHistTotElectrontotET;//!//total ET distribution
        
        // *******************
        // gamma ET
        // *******************
-       TH2F *fHistGammaEtaEET;//ET - Eta vs E  
-       TH2F *fHistGammaEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistGammaEtaET;//  ET - Eta
-       TH2F *fHistGammaEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistGammaEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistGammatotET;//  total ET distribution
+       TH2F *fHistGammaEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistGammaEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistGammaEtaET;//!//  ET - Eta
+       TH2F *fHistGammaEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistGammaEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistGammatotET;//!//  total ET distribution
        
-       TH2F *fHistAnnihGammaEtaEET;//ET - Eta vs E  
-       TH2F *fHistAnnihGammaEtaPtET;//ET - Eta vs pt
-       TH2F *fHistAnnihGammaEtaET;//  ET - Eta
-       TH2F *fHistAnnihGammaEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistAnnihGammaEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistAnnihGammatotET;//  total ET distribution
+       TH2F *fHistAnnihGammaEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistAnnihGammaEtaPtET;//!//ET - Eta vs pt
+       TH2F *fHistAnnihGammaEtaET;//!//  ET - Eta
+       TH2F *fHistAnnihGammaEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistAnnihGammaEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistAnnihGammatotET;//!//  total ET distribution
 
-       TH2F *fHistScatGammaEtaEET;//ET - Eta vs E   
-       TH2F *fHistScatGammaEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistScatGammaEtaET;//  ET - Eta
-       TH2F *fHistScatGammaEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistScatGammaEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistScatGammatotET;//  total ET distribution
+       TH2F *fHistScatGammaEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistScatGammaEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistScatGammaEtaET;//!//  ET - Eta
+       TH2F *fHistScatGammaEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistScatGammaEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistScatGammatotET;//!//  total ET distribution
 
-       TH2F *fHistConvGammaEtaEET;//ET - Eta vs E  
-       TH2F *fHistConvGammaEtaPtET;//ET - Eta vs pt
-       TH2F *fHistConvGammaEtaET;//  ET - Eta
-       TH2F *fHistConvGammaEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistConvGammaEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistConvGammatotET;//  total ET distribution
+       TH2F *fHistConvGammaEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistConvGammaEtaPtET;//!//ET - Eta vs pt
+       TH2F *fHistConvGammaEtaET;//!//  ET - Eta
+       TH2F *fHistConvGammaEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistConvGammaEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistConvGammatotET;//!//  total ET distribution
        
-       TH2F *fHistNonConvGammaEtaEET;//ET - Eta vs E  
-       TH2F *fHistNonConvGammaEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNonConvGammaEtaET;//  ET - Eta
-       TH2F *fHistNonConvGammaEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistNonConvGammaEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistNonConvGammatotET;//  total ET distribution
+       TH2F *fHistNonConvGammaEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistNonConvGammaEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNonConvGammaEtaET;//!//  ET - Eta
+       TH2F *fHistNonConvGammaEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistNonConvGammaEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistNonConvGammatotET;//!//  total ET distribution
        
        
        
        // *******************
        // total gamma ET
        // *******************
-       TH1F *fHistTotGammatotET;//total ET distribution
+       TH1F *fHistTotGammatotET;//!//total ET distribution
 
        // *******************
        // total electromagnetic ET
        // *******************
-       TH1F *fHistTotEMtotET;//total ET distribution
+       TH1F *fHistTotEMtotET;//!//total ET distribution
 
        // non-primary electromagnetic ET
-       TH2F *fHistNPPElectronEtaEET;//ET - Eta vs E 
-       TH2F *fHistNPPElectronEtaPtET;//ET - Eta vs pt
-       TH2F *fHistNPPElectronEtaET;// ET - Eta
-       TH2F *fHistNPPElectronEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPElectronEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistNPPElectrontotET;// total ET distribution
-
-       TH2F *fHistNPPGammaEtaEET;//ET - Eta vs E  
-       TH2F *fHistNPPGammaEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNPPGammaEtaET;// ET - Eta
-       TH2F *fHistNPPGammaEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPGammaEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistNPPGammatotET;// total ET distribution
-
-       TH1F *fHistTotNPPEMtotET;//total ET distribution
-
-       TH2F *fHistNPPPi0GammaEtaEET;//ET - Eta vs E  
-       TH2F *fHistNPPPi0GammaEtaPtET;//ET - Eta vs pt
-       TH2F *fHistNPPPi0GammaEtaET;// ET - Eta
-       TH2F *fHistNPPPi0GammaEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPPi0GammaEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistNPPPi0GammatotET;// total ET distribution
+       TH2F *fHistNPPElectronEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistNPPElectronEtaPtET;//!//ET - Eta vs pt
+       TH2F *fHistNPPElectronEtaET;//!// ET - Eta
+       TH2F *fHistNPPElectronEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPElectronEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistNPPElectrontotET;//!// total ET distribution
+
+       TH2F *fHistNPPGammaEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistNPPGammaEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNPPGammaEtaET;//!// ET - Eta
+       TH2F *fHistNPPGammaEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPGammaEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistNPPGammatotET;//!// total ET distribution
+
+       TH1F *fHistTotNPPEMtotET;//!//total ET distribution
+
+       TH2F *fHistNPPPi0GammaEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistNPPPi0GammaEtaPtET;//!//ET - Eta vs pt
+       TH2F *fHistNPPPi0GammaEtaET;//!// ET - Eta
+       TH2F *fHistNPPPi0GammaEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPPi0GammaEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistNPPPi0GammatotET;//!// total ET distribution
                
        // *******************
        // electron ET inside EMCal acceptance
        // *******************
-       TH2F *fHistElectronAccEtaEET;//ET - Eta vs E  
-       TH2F *fHistElectronAccEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistElectronAccEtaET;// ET - Eta
-       TH2F *fHistElectronAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistElectronAccEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistElectronAcctotET;// total ET distribution
+       TH2F *fHistElectronAccEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistElectronAccEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistElectronAccEtaET;//!// ET - Eta
+       TH2F *fHistElectronAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistElectronAccEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistElectronAcctotET;//!// total ET distribution
        
-       TH2F *fHistConvElectronAccEtaEET;//ET - Eta vs E   
-       TH2F *fHistConvElectronAccEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistConvElectronAccEtaET;//  ET - Eta
-       TH2F *fHistConvElectronAccEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistConvElectronAccEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistConvElectronAcctotET;//  total ET distribution
+       TH2F *fHistConvElectronAccEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistConvElectronAccEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistConvElectronAccEtaET;//!//  ET - Eta
+       TH2F *fHistConvElectronAccEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistConvElectronAccEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistConvElectronAcctotET;//!//  total ET distribution
        
-       TH2F *fHistScatElectronAccEtaEET;//ET - Eta vs E   
-       TH2F *fHistScatElectronAccEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistScatElectronAccEtaET;//  ET - Eta
-       TH2F *fHistScatElectronAccEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistScatElectronAccEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistScatElectronAcctotET;//  total ET distribution
+       TH2F *fHistScatElectronAccEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistScatElectronAccEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistScatElectronAccEtaET;//!//  ET - Eta
+       TH2F *fHistScatElectronAccEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistScatElectronAccEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistScatElectronAcctotET;//!//  total ET distribution
        
        // *******************
        // total electron ET inside EMCal acceptance
        // *******************
-       TH1F *fHistTotElectronAcctotET;//total ET distribution
+       TH1F *fHistTotElectronAcctotET;//!//total ET distribution
 
        // *******************
        // gamma ET inside EMCal acceptance
        // *******************
-       TH2F *fHistGammaAccEtaEET;//ET - Eta vs E   
-       TH2F *fHistGammaAccEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistGammaAccEtaET;//  ET - Eta
-       TH2F *fHistGammaAccEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistGammaAccEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistGammaAcctotET;//  total ET distribution
-       
-       TH2F *fHistAnnihGammaAccEtaEET;//ET - Eta vs E 
-       TH2F *fHistAnnihGammaAccEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistAnnihGammaAccEtaET;//  ET - Eta
-       TH2F *fHistAnnihGammaAccEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistAnnihGammaAccEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistAnnihGammaAcctotET;//  total ET distribution
-       
-       TH2F *fHistScatGammaAccEtaEET;//ET - Eta vs E  
-       TH2F *fHistScatGammaAccEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistScatGammaAccEtaET;//  ET - Eta
-       TH2F *fHistScatGammaAccEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistScatGammaAccEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistScatGammaAcctotET;//  total ET distribution
-       
-       TH2F *fHistConvGammaAccEtaEET;//ET - Eta vs E   
-       TH2F *fHistConvGammaAccEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistConvGammaAccEtaET;//  ET - Eta
-       TH2F *fHistConvGammaAccEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistConvGammaAccEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistConvGammaAcctotET;//  total ET distribution
-       
-       TH2F *fHistNonConvGammaAccEtaEET;//ET - Eta vs E   
-       TH2F *fHistNonConvGammaAccEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNonConvGammaAccEtaET;//  ET - Eta
-       TH2F *fHistNonConvGammaAccEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistNonConvGammaAccEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistNonConvGammaAcctotET;//  total ET distribution
+       TH2F *fHistGammaAccEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistGammaAccEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistGammaAccEtaET;//!//  ET - Eta
+       TH2F *fHistGammaAccEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistGammaAccEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistGammaAcctotET;//!//  total ET distribution
+       
+       TH2F *fHistAnnihGammaAccEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistAnnihGammaAccEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistAnnihGammaAccEtaET;//!//  ET - Eta
+       TH2F *fHistAnnihGammaAccEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistAnnihGammaAccEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistAnnihGammaAcctotET;//!//  total ET distribution
+       
+       TH2F *fHistScatGammaAccEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistScatGammaAccEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistScatGammaAccEtaET;//!//  ET - Eta
+       TH2F *fHistScatGammaAccEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistScatGammaAccEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistScatGammaAcctotET;//!//  total ET distribution
+       
+       TH2F *fHistConvGammaAccEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistConvGammaAccEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistConvGammaAccEtaET;//!//  ET - Eta
+       TH2F *fHistConvGammaAccEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistConvGammaAccEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistConvGammaAcctotET;//!//  total ET distribution
+       
+       TH2F *fHistNonConvGammaAccEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistNonConvGammaAccEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNonConvGammaAccEtaET;//!//  ET - Eta
+       TH2F *fHistNonConvGammaAccEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistNonConvGammaAccEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistNonConvGammaAcctotET;//!//  total ET distribution
        
        
        // *******************
        // total gamma ET inside EMCal acceptance
        // *******************
-       TH1F *fHistTotGammaAcctotET;//total ET distribution
+       TH1F *fHistTotGammaAcctotET;//!//total ET distribution
 
        // *******************
        // total electromagnetic ET inside EMCal acceptance
        // *******************
-       TH1F *fHistTotEMAcctotET;//total ET distribution
+       TH1F *fHistTotEMAcctotET;//!//total ET distribution
 
        // non-primary electromagnetic ET
-       TH2F *fHistNPPElectronAccEtaEET;//ET - Eta vs E 
-       TH2F *fHistNPPElectronAccEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNPPElectronAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPElectronAccEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistNPPElectronAccEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistNPPElectronAccEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNPPElectronAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPElectronAccEtaPt;//!// multiplicity - Eta vs pt
        
-       TH2F *fHistNPPGammaAccEtaEET;//ET - Eta vs E  
-       TH2F *fHistNPPGammaAccEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNPPGammaAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPGammaAccEtaPt;//  multiplicity - Eta vs pt
+       TH2F *fHistNPPGammaAccEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistNPPGammaAccEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNPPGammaAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPGammaAccEtaPt;//!//       multiplicity - Eta vs pt
        
        // *******************
        // electron ET reconstructed in EMCal
        // *******************
-       TH2F *fHistElectronRecEtaEET;//ET - Eta vs E  
-       TH2F *fHistElectronRecEtaPtET;//ET - Eta vs pt
-       TH2F *fHistElectronRecEtaET;// ET - Eta
-       TH2F *fHistElectronRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistElectronRecEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistElectronRectotET;// total ET distribution
+       TH2F *fHistElectronRecEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistElectronRecEtaPtET;//!//ET - Eta vs pt
+       TH2F *fHistElectronRecEtaET;//!// ET - Eta
+       TH2F *fHistElectronRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistElectronRecEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistElectronRectotET;//!// total ET distribution
        
-       TH2F *fHistConvElectronRecEtaEET;//ET - Eta vs E   
-       TH2F *fHistConvElectronRecEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistConvElectronRecEtaET;//  ET - Eta
-       TH2F *fHistConvElectronRecEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistConvElectronRecEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistConvElectronRectotET;//  total ET distribution
+       TH2F *fHistConvElectronRecEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistConvElectronRecEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistConvElectronRecEtaET;//!//  ET - Eta
+       TH2F *fHistConvElectronRecEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistConvElectronRecEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistConvElectronRectotET;//!//  total ET distribution
        
-       TH2F *fHistScatElectronRecEtaEET;//ET - Eta vs E   
-       TH2F *fHistScatElectronRecEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistScatElectronRecEtaET;//  ET - Eta
-       TH2F *fHistScatElectronRecEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistScatElectronRecEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistScatElectronRectotET;//  total ET distribution
+       TH2F *fHistScatElectronRecEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistScatElectronRecEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistScatElectronRecEtaET;//!//  ET - Eta
+       TH2F *fHistScatElectronRecEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistScatElectronRecEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistScatElectronRectotET;//!//  total ET distribution
        
        // *******************
        // total Electron ET reconstructed in EMCal
        // *******************
-       TH1F *fHistTotElectronRectotET;//total ET distribution
+       TH1F *fHistTotElectronRectotET;//!//total ET distribution
 
        // *******************
        // gamma ET reconstructed in EMCal
        // *******************
-       TH2F *fHistGammaRecEtaEET;//ET - Eta vs E   
-       TH2F *fHistGammaRecEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistGammaRecEtaET;//  ET - Eta
-       TH2F *fHistGammaRecEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistGammaRecEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistGammaRectotET;//  total ET distribution
+       TH2F *fHistGammaRecEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistGammaRecEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistGammaRecEtaET;//!//  ET - Eta
+       TH2F *fHistGammaRecEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistGammaRecEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistGammaRectotET;//!//  total ET distribution
        
        
        
-       TH2F *fHistGammaRecResEET;// ET - track matching residual vs E_Added CAIO
-       TH2F *fHistGammaRecResPtET;// ET - track matching residual vs pt_Added CAIO
-       TH2F *fHistGammaRecResE;// multiplicity - track matching residual vs E_Added CAIO
-       TH2F *fHistGammaRecResPt;// multiplicity - track matching residual vs pt_Added CAIO 
-       TH2F *fHistGammaRecResEDepETDep;// ET deposited - track matching residual vs E deposited_Added CAIO
-       TH2F *fHistGammaRecResPtETDep;// ET deposited - track matching residual vs pt_Added Caio
+       TH2F *fHistGammaRecResEET;//!// ET - track matching residual vs E_Added CAIO
+       TH2F *fHistGammaRecResPtET;//!// ET - track matching residual vs pt_Added CAIO
+       TH2F *fHistGammaRecResE;//!// multiplicity - track matching residual vs E_Added CAIO
+       TH2F *fHistGammaRecResPt;//!// multiplicity - track matching residual vs pt_Added CAIO 
+       TH2F *fHistGammaRecResEDepETDep;//!// ET deposited - track matching residual vs E deposited_Added CAIO
+       TH2F *fHistGammaRecResPtETDep;//!// ET deposited - track matching residual vs pt_Added Caio
 
        
-       TH2F *fHistAnnihGammaRecEtaEET;//ET - Eta vs E   
-       TH2F *fHistAnnihGammaRecEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistAnnihGammaRecEtaET;//  ET - Eta
-       TH2F *fHistAnnihGammaRecEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistAnnihGammaRecEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistAnnihGammaRectotET;//  total ET distribution
+       TH2F *fHistAnnihGammaRecEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistAnnihGammaRecEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistAnnihGammaRecEtaET;//!//  ET - Eta
+       TH2F *fHistAnnihGammaRecEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistAnnihGammaRecEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistAnnihGammaRectotET;//!//  total ET distribution
        
-       TH2F *fHistScatGammaRecEtaEET;//ET - Eta vs E   
-       TH2F *fHistScatGammaRecEtaPtET;//ET - Eta vs pt  
-       TH2F *fHistScatGammaRecEtaET;//  ET - Eta
-       TH2F *fHistScatGammaRecEtaE;//  multiplicity - Eta vs E
-       TH2F *fHistScatGammaRecEtaPt;//  multiplicity - Eta vs pt
-       TH1F *fHistScatGammaRectotET;//  total ET distribution
+       TH2F *fHistScatGammaRecEtaEET;//!//ET - Eta vs E   
+       TH2F *fHistScatGammaRecEtaPtET;//!//ET - Eta vs pt  
+       TH2F *fHistScatGammaRecEtaET;//!//  ET - Eta
+       TH2F *fHistScatGammaRecEtaE;//!//  multiplicity - Eta vs E
+       TH2F *fHistScatGammaRecEtaPt;//!//  multiplicity - Eta vs pt
+       TH1F *fHistScatGammaRectotET;//!//  total ET distribution
        
        
        // *******************
        // total gamma ET reconstructed in EMCal
        // *******************
-       TH1F *fHistTotGammaRectotET;//total ET distribution
+       TH1F *fHistTotGammaRectotET;//!//total ET distribution
 
        // *******************
        // total EM ET reconstructed in EMCal
        // *******************
-       TH1F *fHistTotEMRectotET;//total ET distribution
+       TH1F *fHistTotEMRectotET;//!//total ET distribution
 
        // non-primary electromagnetic ET
-       TH2F *fHistNPPElectronRecEtaEET;//ET - Eta vs E  
-       TH2F *fHistNPPElectronRecEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNPPElectronRecEtaET;// ET - Eta
-       TH2F *fHistNPPElectronRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPElectronRecEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistNPPElectronRectotET;// total ET distribution
-       
-       TH2F *fHistNPPGammaRecEtaEET;//ET - Eta vs E  
-       TH2F *fHistNPPGammaRecEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNPPGammaRecEtaET;// ET - Eta
-       TH2F *fHistNPPGammaRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPGammaRecEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistNPPGammaRectotET;// total ET distribution
-       
-       TH1F *fHistTotNPPEMRectotET;//total ET distribution
-
-       TH2F *fHistNPPPi0GammaRecEtaEET;//ET - Eta vs E  
-       TH2F *fHistNPPPi0GammaRecEtaPtET;//ET - Eta vs pt 
-       TH2F *fHistNPPPi0GammaRecEtaET;// ET - Eta
-       TH2F *fHistNPPPi0GammaRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNPPPi0GammaRecEtaPt;// multiplicity - Eta vs pt
-       TH1F *fHistNPPPi0GammaRectotET;// total ET distribution
+       TH2F *fHistNPPElectronRecEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistNPPElectronRecEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNPPElectronRecEtaET;//!// ET - Eta
+       TH2F *fHistNPPElectronRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPElectronRecEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistNPPElectronRectotET;//!// total ET distribution
+       
+       TH2F *fHistNPPGammaRecEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistNPPGammaRecEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNPPGammaRecEtaET;//!// ET - Eta
+       TH2F *fHistNPPGammaRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPGammaRecEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistNPPGammaRectotET;//!// total ET distribution
+       
+       TH1F *fHistTotNPPEMRectotET;//!//total ET distribution
+
+       TH2F *fHistNPPPi0GammaRecEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistNPPPi0GammaRecEtaPtET;//!//ET - Eta vs pt 
+       TH2F *fHistNPPPi0GammaRecEtaET;//!// ET - Eta
+       TH2F *fHistNPPPi0GammaRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNPPPi0GammaRecEtaPt;//!// multiplicity - Eta vs pt
+       TH1F *fHistNPPPi0GammaRectotET;//!// total ET distribution
        
        // *******************
        // muon ET (+ and -)
        // *******************
-       TH2F *fHistMuonEtaEET;//ET - Eta vs E  
-       TH2F *fHistMuonAccEtaEET;//ET - Eta vs E 
-       TH2F *fHistMuonRecEtaEET;//ET - Eta vs E 
-       TH2F *fHistMuonMatchEtaEET;//ET - Eta vs E 
+       TH2F *fHistMuonEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistMuonAccEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistMuonRecEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistMuonMatchEtaEET;//!//ET - Eta vs E 
 
-       TH2F *fHistMuonEtaPtET;// ET - Eta vs pt
-       TH2F *fHistMuonAccEtaPtET;// ET - Eta vs pt
-       TH2F *fHistMuonRecEtaPtET;// ET - Eta vs pt
-       TH2F *fHistMuonMatchEtaPtET;// ET - Eta vs pt
+       TH2F *fHistMuonEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistMuonAccEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistMuonRecEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistMuonMatchEtaPtET;//!// ET - Eta vs pt
 
-       TH2F *fHistMuonEtaET;// ET - Eta
-       TH2F *fHistMuonAccEtaET;// ET - Eta
-       TH2F *fHistMuonRecEtaET;// ET - Eta
-       TH2F *fHistMuonMatchEtaET;// ET - Eta
+       TH2F *fHistMuonEtaET;//!// ET - Eta
+       TH2F *fHistMuonAccEtaET;//!// ET - Eta
+       TH2F *fHistMuonRecEtaET;//!// ET - Eta
+       TH2F *fHistMuonMatchEtaET;//!// ET - Eta
        
-       TH2F *fHistMuonEtaE;// multiplicity - Eta vs E
-       TH2F *fHistMuonAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistMuonRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistMuonMatchEtaE;// multiplicity - Eta vs E
+       TH2F *fHistMuonEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistMuonAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistMuonRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistMuonMatchEtaE;//!// multiplicity - Eta vs E
        
-       TH2F *fHistMuonEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistMuonAccEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistMuonRecEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistMuonMatchEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistMuonEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistMuonAccEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistMuonRecEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistMuonMatchEtaPt;//!// multiplicity - Eta vs pt
        
-       TH1F *fHistMuontotET;// total ET distribution
-       TH1F *fHistMuonAcctotET;// total ET distribution
-       TH1F *fHistMuonRectotET;// total ET distribution
-       TH1F *fHistMuonMatchtotET;// total ET distribution
+       TH1F *fHistMuontotET;//!// total ET distribution
+       TH1F *fHistMuonAcctotET;//!// total ET distribution
+       TH1F *fHistMuonRectotET;//!// total ET distribution
+       TH1F *fHistMuonMatchtotET;//!// total ET distribution
        
-       TH1F *fHistMuonRectotETDep;//total deposited ET distribution
-       TH1F *fHistMuonMatchtotETDep;// total deposited ET distribution
+       TH1F *fHistMuonRectotETDep;//!//total deposited ET distribution
+       TH1F *fHistMuonMatchtotETDep;//!// total deposited ET distribution
        
-       TH2F *fHistMuonRecEtaEDepETDep;// ET deposited - Eta vs E deposited
-       TH2F *fHistMuonMatchEtaEDepETDep;// ET deposited - Eta vs E deposited
+       TH2F *fHistMuonRecEtaEDepETDep;//!// ET deposited - Eta vs E deposited
+       TH2F *fHistMuonMatchEtaEDepETDep;//!// ET deposited - Eta vs E deposited
 
-       TH2F *fHistMuonRecEtaPtETDep;// ET deposited - Eta vs pt
-       TH2F *fHistMuonMatchEtaPtETDep;// ET deposited - Eta vs pt
+       TH2F *fHistMuonRecEtaPtETDep;//!// ET deposited - Eta vs pt
+       TH2F *fHistMuonMatchEtaPtETDep;//!// ET deposited - Eta vs pt
        
-       TH2F *fHistMuonRecEtaETDep;// ET deposited - Eta
-       TH2F *fHistMuonMatchEtaETDep;// ET deposited - Eta
+       TH2F *fHistMuonRecEtaETDep;//!// ET deposited - Eta
+       TH2F *fHistMuonMatchEtaETDep;//!// ET deposited - Eta
 
-       TH2F *fHistMuonRecResEET;// ET - track matching residual vs E
-       TH2F *fHistMuonRecResPtET;// ET - track matching residual vs pt
-       TH2F *fHistMuonRecResE;// multiplicity - track matching residual vs E
-       TH2F *fHistMuonRecResPt;// multiplicity - track matching residual vs pt 
-       TH2F *fHistMuonRecResEDepETDep;// ET deposited - track matching residual vs E deposited
-       TH2F *fHistMuonRecResPtETDep;// ET deposited - track matching residual vs pt
+       TH2F *fHistMuonRecResEET;//!// ET - track matching residual vs E
+       TH2F *fHistMuonRecResPtET;//!// ET - track matching residual vs pt
+       TH2F *fHistMuonRecResE;//!// multiplicity - track matching residual vs E
+       TH2F *fHistMuonRecResPt;//!// multiplicity - track matching residual vs pt 
+       TH2F *fHistMuonRecResEDepETDep;//!// ET deposited - track matching residual vs E deposited
+       TH2F *fHistMuonRecResPtETDep;//!// ET deposited - track matching residual vs pt
        
        // *******************
        // pion ET (+ and -)
        // *******************
        
-       TH2F *fHistPionEtaEET;//ET - Eta vs E  
-       TH2F *fHistPionAccEtaEET;//ET - Eta vs E 
-       TH2F *fHistPionRecEtaEET;//ET - Eta vs E 
-       TH2F *fHistPionMatchEtaEET;//ET - Eta vs E 
+       TH2F *fHistPionEtaEET;//!//ET - Eta vs E  
+       TH2F *fHistPionAccEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistPionRecEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistPionMatchEtaEET;//!//ET - Eta vs E 
        
-       TH2F *fHistPionEtaPtET;// ET - Eta vs pt
-       TH2F *fHistPionAccEtaPtET;// ET - Eta vs pt
-       TH2F *fHistPionRecEtaPtET;// ET - Eta vs pt
-       TH2F *fHistPionMatchEtaPtET;// ET - Eta vs pt
+       TH2F *fHistPionEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistPionAccEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistPionRecEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistPionMatchEtaPtET;//!// ET - Eta vs pt
        
-       TH2F *fHistPionEtaET;// ET - Eta
-       TH2F *fHistPionAccEtaET;// ET - Eta
-       TH2F *fHistPionRecEtaET;// ET - Eta
-       TH2F *fHistPionMatchEtaET;// ET - Eta
+       TH2F *fHistPionEtaET;//!// ET - Eta
+       TH2F *fHistPionAccEtaET;//!// ET - Eta
+       TH2F *fHistPionRecEtaET;//!// ET - Eta
+       TH2F *fHistPionMatchEtaET;//!// ET - Eta
        
-       TH2F *fHistPionEtaE;// multiplicity - Eta vs E
-       TH2F *fHistPionAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistPionRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistPionMatchEtaE;// multiplicity - Eta vs E
+       TH2F *fHistPionEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistPionAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistPionRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistPionMatchEtaE;//!// multiplicity - Eta vs E
        
-       TH2F *fHistPionEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistPionAccEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistPionRecEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistPionMatchEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistPionEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistPionAccEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistPionRecEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistPionMatchEtaPt;//!// multiplicity - Eta vs pt
        
-       TH1F *fHistPiontotET;// total ET distribution
-       TH1F *fHistPionAcctotET;// total ET distribution
-       TH1F *fHistPionRectotET;// total ET distribution
-       TH1F *fHistPionMatchtotET;// total ET distribution
+       TH1F *fHistPiontotET;//!// total ET distribution
+       TH1F *fHistPionAcctotET;//!// total ET distribution
+       TH1F *fHistPionRectotET;//!// total ET distribution
+       TH1F *fHistPionMatchtotET;//!// total ET distribution
        
-       TH1F *fHistPionRectotETDep;// total deposited ET distribution
-       TH1F *fHistPionMatchtotETDep;// total deposited ET distribution
+       TH1F *fHistPionRectotETDep;//!// total deposited ET distribution
+       TH1F *fHistPionMatchtotETDep;//!// total deposited ET distribution
        
-       TH2F *fHistPionRecEtaEDepETDep;// ET deposited - Eta vs E deposited
-       TH2F *fHistPionMatchEtaEDepETDep;// ET deposited - Eta vs E deposited
+       TH2F *fHistPionRecEtaEDepETDep;//!// ET deposited - Eta vs E deposited
+       TH2F *fHistPionMatchEtaEDepETDep;//!// ET deposited - Eta vs E deposited
 
-       TH2F *fHistPionRecEtaPtETDep;// ET deposited - Eta vs pt
-       TH2F *fHistPionMatchEtaPtETDep;// ET deposited - Eta vs pt
+       TH2F *fHistPionRecEtaPtETDep;//!// ET deposited - Eta vs pt
+       TH2F *fHistPionMatchEtaPtETDep;//!// ET deposited - Eta vs pt
        
-       TH2F *fHistPionRecEtaETDep;// ET deposited - Eta
-       TH2F *fHistPionMatchEtaETDep;// ET deposited - Eta
+       TH2F *fHistPionRecEtaETDep;//!// ET deposited - Eta
+       TH2F *fHistPionMatchEtaETDep;//!// ET deposited - Eta
        
-       TH2F *fHistPionRecResEET;// ET - track matching residual vs E
-       TH2F *fHistPionRecResPtET;// ET - track matching residual vs pt
-       TH2F *fHistPionRecResE;// multiplicity - track matching residual vs E
-       TH2F *fHistPionRecResPt;// multiplicity - track matching residual vs pt
-       TH2F *fHistPionRecResEDepETDep;// ET deposited - track matching residual vs E deposited
-       TH2F *fHistPionRecResPtETDep;// ET deposited - track matching residual vs pt
+       TH2F *fHistPionRecResEET;//!// ET - track matching residual vs E
+       TH2F *fHistPionRecResPtET;//!// ET - track matching residual vs pt
+       TH2F *fHistPionRecResE;//!// multiplicity - track matching residual vs E
+       TH2F *fHistPionRecResPt;//!// multiplicity - track matching residual vs pt
+       TH2F *fHistPionRecResEDepETDep;//!// ET deposited - track matching residual vs E deposited
+       TH2F *fHistPionRecResPtETDep;//!// ET deposited - track matching residual vs pt
        
        // *******************
        // charged kaon (+ and -) ET
        // *******************
-       TH2F *fHistKaonEtaEET;//ET - Eta vs E 
-       TH2F *fHistKaonAccEtaEET;//ET - Eta vs E 
-       TH2F *fHistKaonRecEtaEET;//ET - Eta vs E 
-       TH2F *fHistKaonMatchEtaEET;//ET - Eta vs E 
+       TH2F *fHistKaonEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistKaonAccEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistKaonRecEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistKaonMatchEtaEET;//!//ET - Eta vs E 
        
-       TH2F *fHistKaonEtaPtET;// ET - Eta vs pt
-       TH2F *fHistKaonAccEtaPtET;// ET - Eta vs pt
-       TH2F *fHistKaonRecEtaPtET;// ET - Eta vs pt
-       TH2F *fHistKaonMatchEtaPtET;// ET - Eta vs pt
+       TH2F *fHistKaonEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistKaonAccEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistKaonRecEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistKaonMatchEtaPtET;//!// ET - Eta vs pt
        
-       TH2F *fHistKaonEtaET;// ET - Eta
-       TH2F *fHistKaonAccEtaET;// ET - Eta
-       TH2F *fHistKaonRecEtaET;// ET - Eta
-       TH2F *fHistKaonMatchEtaET;// ET - Eta
+       TH2F *fHistKaonEtaET;//!// ET - Eta
+       TH2F *fHistKaonAccEtaET;//!// ET - Eta
+       TH2F *fHistKaonRecEtaET;//!// ET - Eta
+       TH2F *fHistKaonMatchEtaET;//!// ET - Eta
        
-       TH2F *fHistKaonEtaE;// multiplicity - Eta vs E
-       TH2F *fHistKaonAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistKaonRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistKaonMatchEtaE;// multiplicity - Eta vs E
+       TH2F *fHistKaonEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistKaonAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistKaonRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistKaonMatchEtaE;//!// multiplicity - Eta vs E
        
-       TH2F *fHistKaonEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistKaonAccEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistKaonRecEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistKaonMatchEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistKaonEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistKaonAccEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistKaonRecEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistKaonMatchEtaPt;//!// multiplicity - Eta vs pt
 
-       TH1F *fHistKaontotET;// total ET distribution
-       TH1F *fHistKaonAcctotET;// total ET distribution
-       TH1F *fHistKaonRectotET;// total ET distribution
-       TH1F *fHistKaonMatchtotET;// total ET distribution
+       TH1F *fHistKaontotET;//!// total ET distribution
+       TH1F *fHistKaonAcctotET;//!// total ET distribution
+       TH1F *fHistKaonRectotET;//!// total ET distribution
+       TH1F *fHistKaonMatchtotET;//!// total ET distribution
        
-       TH1F *fHistKaonRectotETDep;// total deposited ET distribution
-       TH1F *fHistKaonMatchtotETDep;// total deposited ET distribution
+       TH1F *fHistKaonRectotETDep;//!// total deposited ET distribution
+       TH1F *fHistKaonMatchtotETDep;//!// total deposited ET distribution
        
-       TH2F *fHistKaonRecEtaEDepETDep;// ET deposited - Eta vs E deposited
-       TH2F *fHistKaonMatchEtaEDepETDep;// ET deposited - Eta vs E deposited
+       TH2F *fHistKaonRecEtaEDepETDep;//!// ET deposited - Eta vs E deposited
+       TH2F *fHistKaonMatchEtaEDepETDep;//!// ET deposited - Eta vs E deposited
 
-       TH2F *fHistKaonRecEtaPtETDep;// ET deposited - Eta vs pt
-       TH2F *fHistKaonMatchEtaPtETDep;// ET deposited - Eta vs pt
+       TH2F *fHistKaonRecEtaPtETDep;//!// ET deposited - Eta vs pt
+       TH2F *fHistKaonMatchEtaPtETDep;//!// ET deposited - Eta vs pt
        
-       TH2F *fHistKaonRecEtaETDep;// ET deposited - Eta
-       TH2F *fHistKaonMatchEtaETDep;// ET deposited - Eta
+       TH2F *fHistKaonRecEtaETDep;//!// ET deposited - Eta
+       TH2F *fHistKaonMatchEtaETDep;//!// ET deposited - Eta
        
-       TH2F *fHistKaonRecResEET;// ET - track matching residual vs E
-       TH2F *fHistKaonRecResPtET;// ET - track matching residual vs pt
-       TH2F *fHistKaonRecResE;// multiplicity - track matching residual vs E
-       TH2F *fHistKaonRecResPt;// multiplicity - track matching residual vs pt
-       TH2F *fHistKaonRecResEDepETDep;// ET deposited - track matching residual vs E deposited
-       TH2F *fHistKaonRecResPtETDep;// ET deposited - track matching residual vs pt
+       TH2F *fHistKaonRecResEET;//!// ET - track matching residual vs E
+       TH2F *fHistKaonRecResPtET;//!// ET - track matching residual vs pt
+       TH2F *fHistKaonRecResE;//!// multiplicity - track matching residual vs E
+       TH2F *fHistKaonRecResPt;//!// multiplicity - track matching residual vs pt
+       TH2F *fHistKaonRecResEDepETDep;//!// ET deposited - track matching residual vs E deposited
+       TH2F *fHistKaonRecResPtETDep;//!// ET deposited - track matching residual vs pt
        
        // *******************
        // proton (anti) ET
        // *******************
-       TH2F *fHistProtonEtaEET;//ET - Eta vs E 
-       TH2F *fHistProtonAccEtaEET;//ET - Eta vs E 
-       TH2F *fHistProtonRecEtaEET;//ET - Eta vs E 
-       TH2F *fHistProtonMatchEtaEET;//ET - Eta vs E 
+       TH2F *fHistProtonEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistProtonAccEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistProtonRecEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistProtonMatchEtaEET;//!//ET - Eta vs E 
        
-       TH2F *fHistProtonEtaPtET;// ET - Eta vs pt
-       TH2F *fHistProtonAccEtaPtET;// ET - Eta vs pt
-       TH2F *fHistProtonRecEtaPtET;// ET - Eta vs pt
-       TH2F *fHistProtonMatchEtaPtET;// ET - Eta vs pt
+       TH2F *fHistProtonEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistProtonAccEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistProtonRecEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistProtonMatchEtaPtET;//!// ET - Eta vs pt
        
-       TH2F *fHistProtonEtaET;// ET - Eta
-       TH2F *fHistProtonAccEtaET;// ET - Eta
-       TH2F *fHistProtonRecEtaET;// ET - Eta
-       TH2F *fHistProtonMatchEtaET;// ET - Eta
+       TH2F *fHistProtonEtaET;//!// ET - Eta
+       TH2F *fHistProtonAccEtaET;//!// ET - Eta
+       TH2F *fHistProtonRecEtaET;//!// ET - Eta
+       TH2F *fHistProtonMatchEtaET;//!// ET - Eta
        
-       TH2F *fHistProtonEtaE;// multiplicity - Eta vs E
-       TH2F *fHistProtonAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistProtonRecEtaE;// multiplicity - Eta vs E
-       TH2F *fHistProtonMatchEtaE;// multiplicity - Eta vs E
+       TH2F *fHistProtonEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistProtonAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistProtonRecEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistProtonMatchEtaE;//!// multiplicity - Eta vs E
        
-       TH2F *fHistProtonEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistProtonAccEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistProtonRecEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistProtonMatchEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistProtonEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistProtonAccEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistProtonRecEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistProtonMatchEtaPt;//!// multiplicity - Eta vs pt
 
-       TH1F *fHistProtontotET;// total ET distribution
-       TH1F *fHistProtonAcctotET;// total ET distribution
-       TH1F *fHistProtonRectotET;// total ET distribution
-       TH1F *fHistProtonMatchtotET;// total ET distribution
+       TH1F *fHistProtontotET;//!// total ET distribution
+       TH1F *fHistProtonAcctotET;//!// total ET distribution
+       TH1F *fHistProtonRectotET;//!// total ET distribution
+       TH1F *fHistProtonMatchtotET;//!// total ET distribution
        
-       TH1F *fHistProtonRectotETDep;// total deposited ET distribution
-       TH1F *fHistProtonMatchtotETDep;// total deposited ET distribution
+       TH1F *fHistProtonRectotETDep;//!// total deposited ET distribution
+       TH1F *fHistProtonMatchtotETDep;//!// total deposited ET distribution
        
-       TH2F *fHistProtonRecEtaEDepETDep;// ET deposited - Eta vs E deposited
-       TH2F *fHistProtonMatchEtaEDepETDep;// ET deposited - Eta vs E deposited
+       TH2F *fHistProtonRecEtaEDepETDep;//!// ET deposited - Eta vs E deposited
+       TH2F *fHistProtonMatchEtaEDepETDep;//!// ET deposited - Eta vs E deposited
        
-       TH2F *fHistProtonRecEtaPtETDep;// ET deposited - Eta vs pt
-       TH2F *fHistProtonMatchEtaPtETDep;// ET deposited - Eta vs pt
+       TH2F *fHistProtonRecEtaPtETDep;//!// ET deposited - Eta vs pt
+       TH2F *fHistProtonMatchEtaPtETDep;//!// ET deposited - Eta vs pt
        
-       TH2F *fHistProtonRecEtaETDep;// ET deposited - Eta
-       TH2F *fHistProtonMatchEtaETDep;// ET deposited - Eta
+       TH2F *fHistProtonRecEtaETDep;//!// ET deposited - Eta
+       TH2F *fHistProtonMatchEtaETDep;//!// ET deposited - Eta
 
-       TH2F *fHistProtonRecResEET;// ET - track matching residual vs E
-       TH2F *fHistProtonRecResPtET;// ET - track matching residual vs pt
-       TH2F *fHistProtonRecResE;// multiplicity - track matching residual vs E
-       TH2F *fHistProtonRecResPt;// multiplicity - track matching residual vs pt
-       TH2F *fHistProtonRecResEDepETDep;// ET deposited - track matching residual vs E deposited
-       TH2F *fHistProtonRecResPtETDep;// ET deposited - track matching residual vs pt
+       TH2F *fHistProtonRecResEET;//!// ET - track matching residual vs E
+       TH2F *fHistProtonRecResPtET;//!// ET - track matching residual vs pt
+       TH2F *fHistProtonRecResE;//!// multiplicity - track matching residual vs E
+       TH2F *fHistProtonRecResPt;//!// multiplicity - track matching residual vs pt
+       TH2F *fHistProtonRecResEDepETDep;//!// ET deposited - track matching residual vs E deposited
+       TH2F *fHistProtonRecResPtETDep;//!// ET deposited - track matching residual vs pt
        
        // *******************
        // total charged ET
        // *******************
-       TH1F *fHistTotChargedtotET;//total ET distribution
-       TH1F *fHistTotChargedAcctotET;//total ET distribution
-       TH1F *fHistTotChargedRectotET;//total ET distribution
-       TH1F *fHistTotChargedRectotETDep;//total deposited ET distribution
-       TH1F *fHistTotChargedMatchtotET;//total ET distribution
-       TH1F *fHistTotChargedMatchtotETDep;//total deposited ET distribution
+       TH1F *fHistTotChargedtotET;//!//total ET distribution
+       TH1F *fHistTotChargedAcctotET;//!//total ET distribution
+       TH1F *fHistTotChargedRectotET;//!//total ET distribution
+       TH1F *fHistTotChargedRectotETDep;//!//total deposited ET distribution
+       TH1F *fHistTotChargedMatchtotET;//!//total ET distribution
+       TH1F *fHistTotChargedMatchtotETDep;//!//total deposited ET distribution
        
        // *******************
        // neutron (anti) ET
        // *******************
-       TH2F *fHistNeutronEtaEET;//ET - Eta vs E 
-       TH2F *fHistNeutronAccEtaEET;//ET - Eta vs E 
-       TH2F *fHistNeutronRecEtaEET;//ET - Eta vs E 
+       TH2F *fHistNeutronEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistNeutronAccEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistNeutronRecEtaEET;//!//ET - Eta vs E 
        
-       TH2F *fHistNeutronEtaPtET;// ET - Eta vs pt
-       TH2F *fHistNeutronAccEtaPtET;// ET - Eta vs pt
-       TH2F *fHistNeutronRecEtaPtET;// ET - Eta vs pt
+       TH2F *fHistNeutronEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistNeutronAccEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistNeutronRecEtaPtET;//!// ET - Eta vs pt
        
-       TH2F *fHistNeutronEtaET;// ET - Eta
-       TH2F *fHistNeutronAccEtaET;// ET - Eta
-       TH2F *fHistNeutronRecEtaET;// ET - Eta
+       TH2F *fHistNeutronEtaET;//!// ET - Eta
+       TH2F *fHistNeutronAccEtaET;//!// ET - Eta
+       TH2F *fHistNeutronRecEtaET;//!// ET - Eta
        
-       TH2F *fHistNeutronEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNeutronAccEtaE;// multiplicity - Eta vs E
-       TH2F *fHistNeutronRecEtaE;// multiplicity - Eta vs E
+       TH2F *fHistNeutronEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNeutronAccEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistNeutronRecEtaE;//!// multiplicity - Eta vs E
        
-       TH2F *fHistNeutronEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistNeutronAccEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistNeutronRecEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistNeutronEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistNeutronAccEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistNeutronRecEtaPt;//!// multiplicity - Eta vs pt
        
-       TH1F *fHistNeutrontotET;// total ET distribution
-       TH1F *fHistNeutronAcctotET;// total ET distribution
-       TH1F *fHistNeutronRectotET;// total ET distribution
-       TH1F *fHistNeutronRectotETDep;// total deposited ET distribution
+       TH1F *fHistNeutrontotET;//!// total ET distribution
+       TH1F *fHistNeutronAcctotET;//!// total ET distribution
+       TH1F *fHistNeutronRectotET;//!// total ET distribution
+       TH1F *fHistNeutronRectotETDep;//!// total deposited ET distribution
        
-       TH2F *fHistNeutronRecEtaEDepETDep;// ET deposited - Eta vs E deposited
-       TH2F *fHistNeutronRecEtaETDep;// ET deposited - Eta
+       TH2F *fHistNeutronRecEtaEDepETDep;//!// ET deposited - Eta vs E deposited
+       TH2F *fHistNeutronRecEtaETDep;//!// ET deposited - Eta
        
-       TH2F *fHistNeutronRecEtaPtETDep;// ET deposited - Eta vs pt
+       TH2F *fHistNeutronRecEtaPtETDep;//!// ET deposited - Eta vs pt
                
        // *******************
        // neutral kaon ET
        // *******************
-       TH2F *fHistK0EtaEET;//ET - Eta vs E 
-       TH2F *fHistK0RecEtaEET;//ET - Eta vs E 
+       TH2F *fHistK0EtaEET;//!//ET - Eta vs E 
+       TH2F *fHistK0RecEtaEET;//!//ET - Eta vs E 
        
-       TH2F *fHistK0EtaPtET;// ET - Eta vs pt
-       TH2F *fHistK0RecEtaPtET;// ET - Eta vs pt
+       TH2F *fHistK0EtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistK0RecEtaPtET;//!// ET - Eta vs pt
        
-       TH2F *fHistK0EtaET;// ET - Eta
-       TH2F *fHistK0RecEtaET;// ET - Eta
+       TH2F *fHistK0EtaET;//!// ET - Eta
+       TH2F *fHistK0RecEtaET;//!// ET - Eta
        
-       TH2F *fHistK0EtaE;// multiplicity - Eta vs E
-       TH2F *fHistK0RecEtaE;// multiplicity - Eta vs E
+       TH2F *fHistK0EtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistK0RecEtaE;//!// multiplicity - Eta vs E
        
-       TH2F *fHistK0EtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistK0RecEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistK0EtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistK0RecEtaPt;//!// multiplicity - Eta vs pt
 
-       TH1F *fHistK0totET;// total ET distribution
-       TH1F *fHistK0RectotET;// total ET distribution
+       TH1F *fHistK0totET;//!// total ET distribution
+       TH1F *fHistK0RectotET;//!// total ET distribution
        
-       TH1F *fHistK0RectotETDep;// total deposited ET distribution
+       TH1F *fHistK0RectotETDep;//!// total deposited ET distribution
        
-       TH2F *fHistK0RecEtaEDepETDep;// ET deposited - Eta vs E deposited
-       TH2F *fHistK0RecEtaETDep;// ET deposited - Eta
+       TH2F *fHistK0RecEtaEDepETDep;//!// ET deposited - Eta vs E deposited
+       TH2F *fHistK0RecEtaETDep;//!// ET deposited - Eta
        
-       TH2F *fHistK0RecEtaPtETDep;// ET deposited - Eta vs pt
+       TH2F *fHistK0RecEtaPtETDep;//!// ET deposited - Eta vs pt
                
        // *******************
        // Lambda(anti) ET
        // *******************
-       TH2F *fHistLambdaEtaEET;//ET - Eta vs E 
-       TH2F *fHistLambdaRecEtaEET;//ET - Eta vs E 
+       TH2F *fHistLambdaEtaEET;//!//ET - Eta vs E 
+       TH2F *fHistLambdaRecEtaEET;//!//ET - Eta vs E 
        
-       TH2F *fHistLambdaEtaPtET;// ET - Eta vs pt
-       TH2F *fHistLambdaRecEtaPtET;// ET - Eta vs pt
+       TH2F *fHistLambdaEtaPtET;//!// ET - Eta vs pt
+       TH2F *fHistLambdaRecEtaPtET;//!// ET - Eta vs pt
        
-       TH2F *fHistLambdaEtaET;// ET - Eta
-       TH2F *fHistLambdaRecEtaET;// ET - Eta
+       TH2F *fHistLambdaEtaET;//!// ET - Eta
+       TH2F *fHistLambdaRecEtaET;//!// ET - Eta
        
-       TH2F *fHistLambdaEtaE;// multiplicity - Eta vs E
-       TH2F *fHistLambdaRecEtaE;// multiplicity - Eta vs E
+       TH2F *fHistLambdaEtaE;//!// multiplicity - Eta vs E
+       TH2F *fHistLambdaRecEtaE;//!// multiplicity - Eta vs E
        
-       TH2F *fHistLambdaEtaPt;// multiplicity - Eta vs pt
-       TH2F *fHistLambdaRecEtaPt;// multiplicity - Eta vs pt
+       TH2F *fHistLambdaEtaPt;//!// multiplicity - Eta vs pt
+       TH2F *fHistLambdaRecEtaPt;//!// multiplicity - Eta vs pt
        
-       TH1F *fHistLambdatotET;// total ET distribution
-       TH1F *fHistLambdaRectotET;// total ET distribution
+       TH1F *fHistLambdatotET;//!// total ET distribution
+       TH1F *fHistLambdaRectotET;//!// total ET distribution
        
-       TH1F *fHistLambdaRectotETDep;// total deposited ET distribution
+       TH1F *fHistLambdaRectotETDep;//!// total deposited ET distribution
        
-       TH2F *fHistLambdaRecEtaEDepETDep;// ET deposited - Eta vs E deposited
-       TH2F *fHistLambdaRecEtaETDep;// ET deposited - Eta
+       TH2F *fHistLambdaRecEtaEDepETDep;//!// ET deposited - Eta vs E deposited
+       TH2F *fHistLambdaRecEtaETDep;//!// ET deposited - Eta
        
-       TH2F *fHistLambdaRecEtaPtETDep;// ET deposited - Eta vs pt
+       TH2F *fHistLambdaRecEtaPtETDep;//!// ET deposited - Eta vs pt
 
        // *******************
        // total neutral ET
        // *******************
-       TH1F *fHistTotNeutraltotET;//total ET distribution
-       TH1F *fHistTotNeutralRectotET;//total ET distribution
-       TH1F *fHistTotNeutralRectotETDep;//total deposited ET distribution
+       TH1F *fHistTotNeutraltotET;//!//total ET distribution
+       TH1F *fHistTotNeutralRectotET;//!//total ET distribution
+       TH1F *fHistTotNeutralRectotETDep;//!//total deposited ET distribution
        
        // *******************
        // total ET
        // *******************
-       TH1F *fHistTotaltotET;//total ET distribution
-       TH1F *fHistTotalAcctotET;//total ET distribution
-       TH1F *fHistTotalRectotET;//total ET distribution
-       TH1F *fHistTotalRectotETDep;//total deposited ET distribution
+       TH1F *fHistTotaltotET;//!//total ET distribution
+       TH1F *fHistTotalAcctotET;//!//total ET distribution
+       TH1F *fHistTotalRectotET;//!//total ET distribution
+       TH1F *fHistTotalRectotETDep;//!//total deposited ET distribution
        
        // *******************
        // some checks
        // *******************
 
        // check produced electrons
-       TH1F *fHistElectronFirstMother;// first mother ID
-       TH2F *fHistElectronFirstMotherXY;// first mother XY position 
-       TH1F *fHistElectronNDaughters;// number of daughters 
-       TH1F *fHistElectronDaughters;// daughters ID
-       TH2F *fHistElectronDaughtersXY;// daughters XY position
-
-       TH1F *fHistElectronFirstMotherAcc;// first mother ID
-       TH2F *fHistElectronFirstMotherXYAcc;// first mother XY position 
-       TH1F *fHistElectronNDaughtersAcc;// number of daughters
-       TH1F *fHistElectronDaughtersAcc;// daughters ID
-       TH2F *fHistElectronDaughtersXYAcc;// daughters XY position
-
-       TH1F *fHistElectronFirstMotherRec;// first mother ID 
-       TH2F *fHistElectronFirstMotherXYRec;//  first mother XY position
-       TH1F *fHistElectronNDaughtersRec;// number of daughters
-       TH1F *fHistElectronDaughtersRec;// daughters ID
-       TH2F *fHistElectronDaughtersXYRec;// daughters XY position
-
-       TH1F *fHistNPPElectronFirstMother;//  first mother ID 
-       TH2F *fHistNPPElectronFirstMotherXY;// first mother XY position
-       TH1F *fHistNPPElectronNDaughters;// number of daughters
-       TH1F *fHistNPPElectronDaughters;// daughters ID
-       TH2F *fHistNPPElectronDaughtersXY;// daughters XY position
-       
-       TH1F *fHistNPPElectronFirstMotherAcc;//  first mother ID 
-       TH2F *fHistNPPElectronFirstMotherXYAcc;//  first mother XY position
-       TH1F *fHistNPPElectronNDaughtersAcc;// number of daughters
-       TH1F *fHistNPPElectronDaughtersAcc;// daughters ID
-       TH2F *fHistNPPElectronDaughtersXYAcc;// daughters XY position
-       
-       TH1F *fHistNPPElectronFirstMotherRec;// first mother ID  
-       TH2F *fHistNPPElectronFirstMotherXYRec;//  first mother XY position
-       TH1F *fHistNPPElectronNDaughtersRec;// number of daughters
-       TH1F *fHistNPPElectronDaughtersRec;// daughters ID
-       TH2F *fHistNPPElectronDaughtersXYRec;// daughters XY position
+       TH1F *fHistElectronFirstMother;//!// first mother ID
+       TH2F *fHistElectronFirstMotherXY;//!// first mother XY position 
+       TH1F *fHistElectronNDaughters;//!// number of daughters 
+       TH1F *fHistElectronDaughters;//!// daughters ID
+       TH2F *fHistElectronDaughtersXY;//!// daughters XY position
+
+       TH1F *fHistElectronFirstMotherAcc;//!// first mother ID
+       TH2F *fHistElectronFirstMotherXYAcc;//!// first mother XY position 
+       TH1F *fHistElectronNDaughtersAcc;//!// number of daughters
+       TH1F *fHistElectronDaughtersAcc;//!// daughters ID
+       TH2F *fHistElectronDaughtersXYAcc;//!// daughters XY position
+
+       TH1F *fHistElectronFirstMotherRec;//!// first mother ID 
+       TH2F *fHistElectronFirstMotherXYRec;//!//  first mother XY position
+       TH1F *fHistElectronNDaughtersRec;//!// number of daughters
+       TH1F *fHistElectronDaughtersRec;//!// daughters ID
+       TH2F *fHistElectronDaughtersXYRec;//!// daughters XY position
+
+       TH1F *fHistNPPElectronFirstMother;//!//  first mother ID 
+       TH2F *fHistNPPElectronFirstMotherXY;//!// first mother XY position
+       TH1F *fHistNPPElectronNDaughters;//!// number of daughters
+       TH1F *fHistNPPElectronDaughters;//!// daughters ID
+       TH2F *fHistNPPElectronDaughtersXY;//!// daughters XY position
+       
+       TH1F *fHistNPPElectronFirstMotherAcc;//!//  first mother ID 
+       TH2F *fHistNPPElectronFirstMotherXYAcc;//!//  first mother XY position
+       TH1F *fHistNPPElectronNDaughtersAcc;//!// number of daughters
+       TH1F *fHistNPPElectronDaughtersAcc;//!// daughters ID
+       TH2F *fHistNPPElectronDaughtersXYAcc;//!// daughters XY position
+       
+       TH1F *fHistNPPElectronFirstMotherRec;//!// first mother ID  
+       TH2F *fHistNPPElectronFirstMotherXYRec;//!//  first mother XY position
+       TH1F *fHistNPPElectronNDaughtersRec;//!// number of daughters
+       TH1F *fHistNPPElectronDaughtersRec;//!// daughters ID
+       TH2F *fHistNPPElectronDaughtersXYRec;//!// daughters XY position
        
        // check produced gammas
-       TH1F *fHistGammaFirstMother;// first mother ID 
-       TH2F *fHistGammaFirstMotherXY;// first mother XY position
-       TH1F *fHistGammaNDaughters;// number of daughters
-       TH1F *fHistGammaDaughters;// daughters ID
-       TH2F *fHistGammaDaughtersXY;// daughters XY position
-       TH2F *fHistConvGammaDaughtersXY;// daughters XY position
-       TH2F *fHistNonConvGammaDaughtersXY;// daughters XY position
-       
-       TH1F *fHistGammaFirstMotherAcc;// first mother ID  
-       TH2F *fHistGammaFirstMotherXYAcc;//  first mother XY position
-       TH1F *fHistGammaNDaughtersAcc;// number of daughters
-       TH1F *fHistGammaDaughtersAcc;// daughters ID
-       TH2F *fHistGammaDaughtersXYAcc;// daughters XY position
-       TH2F *fHistConvGammaDaughtersXYAcc;// daughters XY position
-       TH2F *fHistNonConvGammaDaughtersXYAcc;// daughters XY position
-       
-       TH1F *fHistGammaFirstMotherRec;// first mother ID  
-       TH2F *fHistGammaFirstMotherXYRec;//  first mother XY position
-       TH1F *fHistGammaNDaughtersRec;// number of daughters
-       TH1F *fHistGammaDaughtersRec;// daughters ID
-       TH2F *fHistGammaDaughtersXYRec;// daughters XY position
-       TH2F *fHistConvGammaDaughtersXYRec;// daughters XY position
-       TH2F *fHistNonConvGammaDaughtersXYRec;// daughters XY position
-       
-       TH1F *fHistNPPGammaFirstMother;// first mother ID 
-       TH2F *fHistNPPGammaFirstMotherXY;// first mother XY position
-       TH1F *fHistNPPGammaNDaughters;// number of daughters
-       TH1F *fHistNPPGammaDaughters;// daughters ID
-       TH2F *fHistNPPGammaDaughtersXY;// daughters XY position
-       
-       TH1F *fHistNPPGammaFirstMotherAcc;// first mother ID  
-       TH2F *fHistNPPGammaFirstMotherXYAcc;//  first mother XY position
-       TH1F *fHistNPPGammaNDaughtersAcc;// number of daughters
-       TH1F *fHistNPPGammaDaughtersAcc;// daughters ID
-       TH2F *fHistNPPGammaDaughtersXYAcc;// daughters XY position
-       
-       TH1F *fHistNPPGammaFirstMotherRec;// first mother ID  
-       TH2F *fHistNPPGammaFirstMotherXYRec;//  first mother XY position
-       TH1F *fHistNPPGammaNDaughtersRec;// number of daughters
-       TH1F *fHistNPPGammaDaughtersRec;// daughters ID
-       TH2F *fHistNPPGammaDaughtersXYRec;// daughters XY position
+       TH1F *fHistGammaFirstMother;//!// first mother ID 
+       TH2F *fHistGammaFirstMotherXY;//!// first mother XY position
+       TH1F *fHistGammaNDaughters;//!// number of daughters
+       TH1F *fHistGammaDaughters;//!// daughters ID
+       TH2F *fHistGammaDaughtersXY;//!// daughters XY position
+       TH2F *fHistConvGammaDaughtersXY;//!// daughters XY position
+       TH2F *fHistNonConvGammaDaughtersXY;//!// daughters XY position
+       
+       TH1F *fHistGammaFirstMotherAcc;//!// first mother ID  
+       TH2F *fHistGammaFirstMotherXYAcc;//!//  first mother XY position
+       TH1F *fHistGammaNDaughtersAcc;//!// number of daughters
+       TH1F *fHistGammaDaughtersAcc;//!// daughters ID
+       TH2F *fHistGammaDaughtersXYAcc;//!// daughters XY position
+       TH2F *fHistConvGammaDaughtersXYAcc;//!// daughters XY position
+       TH2F *fHistNonConvGammaDaughtersXYAcc;//!// daughters XY position
+       
+       TH1F *fHistGammaFirstMotherRec;//!// first mother ID  
+       TH2F *fHistGammaFirstMotherXYRec;//!//  first mother XY position
+       TH1F *fHistGammaNDaughtersRec;//!// number of daughters
+       TH1F *fHistGammaDaughtersRec;//!// daughters ID
+       TH2F *fHistGammaDaughtersXYRec;//!// daughters XY position
+       TH2F *fHistConvGammaDaughtersXYRec;//!// daughters XY position
+       TH2F *fHistNonConvGammaDaughtersXYRec;//!// daughters XY position
+       
+       TH1F *fHistNPPGammaFirstMother;//!// first mother ID 
+       TH2F *fHistNPPGammaFirstMotherXY;//!// first mother XY position
+       TH1F *fHistNPPGammaNDaughters;//!// number of daughters
+       TH1F *fHistNPPGammaDaughters;//!// daughters ID
+       TH2F *fHistNPPGammaDaughtersXY;//!// daughters XY position
+       
+       TH1F *fHistNPPGammaFirstMotherAcc;//!// first mother ID  
+       TH2F *fHistNPPGammaFirstMotherXYAcc;//!//  first mother XY position
+       TH1F *fHistNPPGammaNDaughtersAcc;//!// number of daughters
+       TH1F *fHistNPPGammaDaughtersAcc;//!// daughters ID
+       TH2F *fHistNPPGammaDaughtersXYAcc;//!// daughters XY position
+       
+       TH1F *fHistNPPGammaFirstMotherRec;//!// first mother ID  
+       TH2F *fHistNPPGammaFirstMotherXYRec;//!//  first mother XY position
+       TH1F *fHistNPPGammaNDaughtersRec;//!// number of daughters
+       TH1F *fHistNPPGammaDaughtersRec;//!// daughters ID
+       TH2F *fHistNPPGammaDaughtersXYRec;//!// daughters XY position
 
        //check projections
-       TH2F *fHistAllERecEMC;// E reconstructed vs E MC        
-       TH2F *fHistAllPtRecPtMC;// pt reconstructed vs pt MC
-       TH2F *fHistElectronERecEMC;// E reconstructed vs E MC   
-       TH2F *fHistGammaERecEMC;// E reconstructed vs E MC
-       
-       TH2F *fHistChargedRes;// charged particle track matching residual
-       TH2F *fHistChargedRes2;// charged particle track matching residual
-       TH2F *fHistChargedRes3;// charged particle track matching residual
-       TH2F *fHistNeutralRes;// neutral particle track matching residual
-       TH2F *fHistElectronRes;// electron track matching residual
-       TH2F *fHistGammaRes;// gamma track matching residual
-       
-       TH2F *fHistIsInAcc;// EMCal acceptance check
+       TH2F *fHistAllERecEMC;//!// E reconstructed vs E MC     
+       TH2F *fHistAllPtRecPtMC;//!// pt reconstructed vs pt MC
+       TH2F *fHistElectronERecEMC;//!// E reconstructed vs E MC        
+       TH2F *fHistGammaERecEMC;//!// E reconstructed vs E MC
+       
+       TH2F *fHistChargedRes;//!// charged particle track matching residual
+       TH2F *fHistChargedRes2;//!// charged particle track matching residual
+       TH2F *fHistChargedRes3;//!// charged particle track matching residual
+       TH2F *fHistNeutralRes;//!// neutral particle track matching residual
+       TH2F *fHistElectronRes;//!// electron track matching residual
+       TH2F *fHistGammaRes;//!// gamma track matching residual
+       
+       TH2F *fHistIsInAcc;//!// EMCal acceptance check
        
  private:
 
index a2c7139cfdc5e5e2e63c4634a8467f3fd4f9a9ed..00614a4f50121ceb868004927a85534bfed29cea 100644 (file)
@@ -51,83 +51,83 @@ protected:
        Double_t fTotChargedMatchtotETDep;// total Et deposited - matched chagred particles
        Double_t fTotalRectotETDep;// total ET deposited
        
-       AliESDEvent *fESD;// ESD object
-/*     AliEMCALGeometry *fGeoUt;// EMCal geometry object */
+       AliESDEvent *fESD;//!// ESD object
+/*     AliEMCALGeometry *fGeoUt;//!// EMCal geometry object */
 
        // *******************
        // all ET
        // *******************
-       THnSparseF* fHistAllRecETDep;// ET deposited - all particles
-       THnSparseF* fHistAllRec;// mutliplicity - all particles
-       TH1F *fHistAllRectotETDep;// total ET deposited - all particles
+       THnSparseF* fHistAllRecETDep;//!// ET deposited - all particles
+       THnSparseF* fHistAllRec;//!// mutliplicity - all particles
+       TH1F *fHistAllRectotETDep;//!// total ET deposited - all particles
        
        // *******************
        // electron ET reconstructed in EMCal
        // *******************
-       THnSparseF* fHistElectronRecETDep;// Et deposited - matched electrons
-       THnSparseF* fHistElectronRec;// multiplicity - matched electrons
-       TH1F *fHistElectronMatchtotETDep;// total Et deposited - matched electrons
+       THnSparseF* fHistElectronRecETDep;//!// Et deposited - matched electrons
+       THnSparseF* fHistElectronRec;//!// multiplicity - matched electrons
+       TH1F *fHistElectronMatchtotETDep;//!// total Et deposited - matched electrons
        
-       TH2F *fHistElectronRecdEdxP;// electron dEdx vs p
+       TH2F *fHistElectronRecdEdxP;//!// electron dEdx vs p
 
        // *******************
        // Neutral ET reconstructed in EMCal
        // *******************
-       TH1F *fHistNeutralRectotET;// total ET - neutral particles 
+       TH1F *fHistNeutralRectotET;//!// total ET - neutral particles 
 
        // *******************
        // total EM ET reconstructed in EMCal
        // *******************
-       TH1F *fHistTotEMRectotET;// total electromagnetic ET
+       TH1F *fHistTotEMRectotET;//!// total electromagnetic ET
 
        // *******************
        // muon ET (+ and -)
        // *******************
-       THnSparseF* fHistMuonRecETDep;// Et deposited
-       THnSparseF* fHistMuonRec;// multiplicity
-       TH1F *fHistMuonMatchtotETDep;// total Et deposited
+       THnSparseF* fHistMuonRecETDep;//!// Et deposited
+       THnSparseF* fHistMuonRec;//!// multiplicity
+       TH1F *fHistMuonMatchtotETDep;//!// total Et deposited
 
-       TH2F *fHistMuonRecdEdxP;// dEdx vs p
+       TH2F *fHistMuonRecdEdxP;//!// dEdx vs p
        
        // *******************
        // pion ET (+ and -)
        // *******************
-       THnSparseF* fHistPionRecETDep;// Et deposited 
-       THnSparseF* fHistPionRec;// multiplicity
-       TH1F *fHistPionMatchtotETDep;// total Et deposited
+       THnSparseF* fHistPionRecETDep;//!// Et deposited 
+       THnSparseF* fHistPionRec;//!// multiplicity
+       TH1F *fHistPionMatchtotETDep;//!// total Et deposited
 
-       TH2F *fHistPionRecdEdxP;// dEdx vs p
+       TH2F *fHistPionRecdEdxP;//!// dEdx vs p
 
        // *******************
        // charged kaon (+ and -) ET
        // *******************
-       THnSparseF* fHistKaonRecETDep;// Et deposited
-       THnSparseF* fHistKaonRec;// multiplicity
-       TH1F *fHistKaonMatchtotETDep;// total Et deposited
+       THnSparseF* fHistKaonRecETDep;//!// Et deposited
+       THnSparseF* fHistKaonRec;//!// multiplicity
+       TH1F *fHistKaonMatchtotETDep;//!// total Et deposited
 
-       TH2F *fHistKaonRecdEdxP;// dEdx vs p
+       TH2F *fHistKaonRecdEdxP;//!// dEdx vs p
        
        // *******************
        // proton (anti) ET
        // *******************
-       THnSparseF* fHistProtonRecETDep;// Et deposited
-       THnSparseF* fHistProtonRec;// multiplicity
-       TH1F *fHistProtonMatchtotETDep;// total Et deposited
+       THnSparseF* fHistProtonRecETDep;//!// Et deposited
+       THnSparseF* fHistProtonRec;//!// multiplicity
+       TH1F *fHistProtonMatchtotETDep;//!// total Et deposited
 
-       TH2F *fHistProtonRecdEdxP;// dEdx vs p
+       TH2F *fHistProtonRecdEdxP;//!// dEdx vs p
        
        // *******************
        // total charged ET
        // *******************
-       TH1F *fHistTotChargedMatchtotETDep;// total Et deposited - all charged particles 
+       TH1F *fHistTotChargedMatchtotETDep;//!// total Et deposited - all charged particles 
        
        // *******************
        // total ET
        // *******************
-       TH1F *fHistTotalRectotETDep;// total Et deposited - all particles
+       TH1F *fHistTotalRectotETDep;//!// total Et deposited - all particles
        
        //few checks
-       TH2F *fHistDeltaRZ;// track-cluster matching residual
+       TH2F *fHistDeltaRZ;//!// track-cluster matching residual
        
  private:
   //Declare it private to avoid compilation warning
index 5f31253b3590bc1817ef21107c423fa430cd17a4..3737d774b0a38a86d5327c5185d59fb44a7ef098 100644 (file)
@@ -147,11 +147,11 @@ protected:
     // Reconstruction efficiency corrections
     AliAnalysisEtRecEffCorrection *fReCorrections;
     
-    TTree *fEventSummaryTree; // Contains event level information
+    TTree *fEventSummaryTree; //! Contains event level information
 
-    TTree *fAcceptedTree; // Tree for information about accepted particles
+    TTree *fAcceptedTree; //! Tree for information about accepted particles
     
-    TTree *fDepositTree; // optional TTree for energy deposit measurements
+    TTree *fDepositTree; //! optional TTree for energy deposit measurements
     
     Double_t fTotEt;/** Total Et in the event (without acceptance cuts) */
 
@@ -283,14 +283,14 @@ protected:
     // Declare the histograms
 
     /** The EM Et spectrum measured */
-    TH1F *fHistEt; //Et spectrum
+    TH1F *fHistEt; //!Et spectrum
 
     /** Multiplicity of neutral particles in the events */
-    TH1F *fHistNeutralMult; //Multiplicity
+    TH1F *fHistNeutralMult; //!Multiplicity
 
     // Acceptance plots 
-    TH2F *fHistPhivsPtPos; //phi vs pT plot for positive tracks
-    TH2F *fHistPhivsPtNeg; //phi vs pT plot for negative tracks
+    TH2F *fHistPhivsPtPos; //!phi vs pT plot for positive tracks
+    TH2F *fHistPhivsPtNeg; //!phi vs pT plot for negative tracks
 
     /* Auxiliary Histogram variables */
     static Float_t fgEtaAxis[17];//bins for eta axis of histograms
@@ -303,15 +303,15 @@ protected:
     static Int_t fgNumOfRBins;//number of R bins
 
     /** Centrality object */
-    AliCentrality *fCentrality; //Centrality object
+    AliCentrality *fCentrality; //!Centrality object
 
     Bool_t fMakeSparse;//Boolean for whether or not to make sparse histograms
 
-    TH1I *fCutFlow; // Cut flow
+    TH1I *fCutFlow; //! Cut flow
     
-    AliAnalysisEtSelector *fSelector; // Selector class
+    AliAnalysisEtSelector *fSelector; //! Selector class
 
-    AliPIDResponse *fPIDResponse;
+    AliPIDResponse *fPIDResponse;//!
 
     Float_t fsub;
     
index 300d19aa3efd8d17ec9fc68fd189e5de3072e90a..26d940006fd4924983d3f219abdeada5c22aa9ad 100644 (file)
@@ -61,7 +61,7 @@ protected:
     
     TString fHistogramNameSuffix; /** The suffix for the histogram names */
 
-    AliAnalysisEtCuts *fCuts; // keeper of basic cuts
+    AliAnalysisEtCuts *fCuts; //! keeper of basic cuts
 
     Int_t fDataSet;//Integer corresponding to data set.  Used as a switch to set appropriate track cuts.  By default set to 2010 p+p
     //2009 = 900 GeV p+p data from 2009
@@ -121,15 +121,15 @@ protected:
     Float_t K0Weight(Float_t pt);//Function which gives the factor to reweigh a K0 so it roughly matches the data
     Float_t LambdaWeight(Float_t pt);//Function which gives the factor to reweigh a Lambda so it roughly matches the data
     Float_t AntiLambdaWeight(Float_t pt);//Function which gives the factor to reweigh a Lambda so it roughly matches the data
-    TF1 *fK0PythiaD6T;//function with Levy fit parameters for K0S in PYTHIA D6T
-    TF1 *fLambdaPythiaD6T;//function with Levy fit parameters for Lambda in PYTHIA D6T
-    TF1 *fAntiLambdaPythiaD6T;//function with Levy fit parameters for AntiLambda in PYTHIA D6T
-    TF1 *fK0Data;//function with Levy fit parameters for K0S in data
-    TF1 *fLambdaData;//function with Levy fit parameters for Lambda in data
-    TF1 *fAntiLambdaData;//function with Levy fit parameters for AntiLambda in data
-
-    TF1 *fLambdaEnhancement;//function to describe lambda enhancement
-    TF1 *fProtonEnhancement;//function to describe anti-lambda enhancement
+    TF1 *fK0PythiaD6T;//!function with Levy fit parameters for K0S in PYTHIA D6T
+    TF1 *fLambdaPythiaD6T;//!function with Levy fit parameters for Lambda in PYTHIA D6T
+    TF1 *fAntiLambdaPythiaD6T;//!function with Levy fit parameters for AntiLambda in PYTHIA D6T
+    TF1 *fK0Data;//!function with Levy fit parameters for K0S in data
+    TF1 *fLambdaData;//!function with Levy fit parameters for Lambda in data
+    TF1 *fAntiLambdaData;//!function with Levy fit parameters for AntiLambda in data
+
+    TF1 *fLambdaEnhancement;//!function to describe lambda enhancement
+    TF1 *fProtonEnhancement;//!function to describe anti-lambda enhancement
     Float_t LambdaBaryonEnhancement(Float_t pt);//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC
     Float_t ProtonBaryonEnhancement(Float_t pt);//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC
     TString fCentralityMethod;//string specifying the centrality method, see https://twiki.cern.ch/twiki/bin/viewauth/ALICE/CentStudies
index 7172b29cf573c19f9e5066a02a77b22f4d4bb297..b54f0ceef408f5b2c3f1ce48c944b914ec3e4b18 100644 (file)
@@ -69,7 +69,7 @@ AliAnalysisEtCuts::AliAnalysisEtCuts() :
   ,fMonteCarloSingleChargedParticle(3)
   ,fMonteCarloNeutralParticle(0)
 
-  ,fHistMakeTree(kTRUE)
+  ,fHistMakeTree(kFALSE)
   ,fHistMakeTreeDeposit(kFALSE)
   ,fHistNbinsMult(2000)
   ,fHistMinMult(-0.5)
index fd8c312ba5cedaecfa746a94fcc54c19d7f188cc..da05f4ee8c1a01a28957863e2c03505b07bf773e 100644 (file)
@@ -965,6 +965,7 @@ Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
    
        
        Bool_t nottrackmatched = kTRUE;//default to no track matched
+       Bool_t countasmatched = kFALSE;
        Float_t matchedTrackp = 0.0;
        Float_t matchedTrackpt = 0.0;
         fDepositedCode = part->GetPdgCode();
@@ -997,10 +998,14 @@ Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
            //cout<<"rcorr "<<rcorr<<endl;
            Int_t n=caloCluster->GetNLabels() ;
            //if(fReconstructedE - fsub* track->P() > 0.0){//if more energy was deposited than the momentum of the track  and more than one particle led to the cluster
+           //cout<<"was matched"<<endl;
            if(fSelector->PassMinEnergyCut( (fReconstructedE - fsub* track->P())*TMath::Sin(cp.Theta()) )){//if more energy was deposited than the momentum of the track  and more than one particle led to the cluster
              //then we say the cluster was not track matched but correct the energy
              nottrackmatched = kTRUE;
-             //cout<<"Reassigning energy "<<fReconstructedEt;
+             //but we don't want to double count the matched tracks...
+             countasmatched = kTRUE;
+             //cout<<" fsub "<<fsub;
+             //cout<<" Reassigning energy "<<fReconstructedEt;
              fReconstructedE = fReconstructedE - fsub* track->P();
              fReconstructedEt = fReconstructedE*TMath::Sin(cp.Theta());
              //cout<<" to "<<fReconstructedEt<<endl;
@@ -1023,7 +1028,7 @@ Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                  }
                }
                Double_t eMax=0.;//eSubMax=0. ;
-               cout<<"n="<<n<<", ";
+               //cout<<"n="<<n<<", ";
                for(Int_t i=0;  i<n;  i++){
                    Int_t label = caloCluster->GetLabelAt(i);
                    if(label!=trackMatchedIndex){
@@ -1238,7 +1243,7 @@ Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
          }
          else{
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%BEGIN NEUTRAL SECONDARIES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-           if(nottrackmatched){//secondaries not removed
+           if(nottrackmatched  && !countasmatched){//secondaries not removed
 //           cout<<"Neutral Secondary ";
 //           PrintFamilyTreeShort(iPart, stack);
 
@@ -1313,7 +1318,7 @@ Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
              etAntiProtonDeposited += clEt;
              etAntiProtonDepositedNoEffCorr += fReconstructedEt;
            }
-           if(nottrackmatched){//not removed but should be
+           if(nottrackmatched && !countasmatched){//not removed but should be
              subtotalHadronEnergy += fReconstructedEt;
              etHadronCrossCheckTrue += clEt;
              etPiKPDepositedNotTrackMatched += clEt;
@@ -1364,6 +1369,7 @@ Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
              }
            }
            else{//removed and should have been
+             //if(countasmatched) cout<<" I was counted as matched even though some of my energy might have been saved."<<endl;
              //cout<<" t.m. primary"<<endl;
              Int_t trackindex =  fSelector->GetLabel(caloCluster,stack);// (caloCluster->GetLabelsArray())->At(0);
              fHistChargedTrackDepositsAcceptedVsPt->Fill(part->Pt(), fCentClass,fReconstructedEt);
@@ -1539,7 +1545,7 @@ Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
          }
          //===================================END NEUTRONS==================================================
        }
-        fPrimaryTree->Fill();
+        if(fCuts->GetHistMakeTree()) fPrimaryTree->Fill();
     } // end of loop over clusters     
 
 
index 5fca03e068637c9b231871c1bb8cf47f31eff7fb..0876b1532afb79d7a5ec904f269342140b7259ec 100644 (file)
@@ -115,94 +115,94 @@ protected:
 
     Int_t fClusterMult;
 
-    TH3F *fHistDecayVertexNonRemovedCharged; // Decay vertex for non-removed charged particles
-    TH3F *fHistDecayVertexRemovedCharged; // Decay vertex for non-removed charged particles
-    TH3F *fHistDecayVertexNonRemovedNeutral; // Decay vertex for non-removed charged particles
-    TH3F *fHistDecayVertexRemovedNeutral; // Decay vertex for non-removed charged particles
-
-    TH2F *fHistRemovedOrNot; // If charged/neutral particles were removed or not
-
-    TH2F *fHistEtNonRemovedProtons; // enter comment here
-    TH2F *fHistEtNonRemovedAntiProtons; // enter comment here
-    TH2F *fHistEtNonRemovedPiPlus; // enter comment here
-    TH2F *fHistEtNonRemovedPiMinus; // enter comment here
-    TH2F *fHistEtNonRemovedKaonPlus; // enter comment here
-    TH2F *fHistEtNonRemovedKaonMinus; // enter comment here
-    TH2F *fHistEtNonRemovedK0s; // enter comment here
-    TH2F *fHistEtNonRemovedK0L; // enter comment here
-    TH2F *fHistEtNonRemovedLambdas; // enter comment here
-    TH2F *fHistEtNonRemovedElectrons; // enter comment here
-    TH2F *fHistEtNonRemovedPositrons; // enter comment here
-    TH2F *fHistEtNonRemovedMuPlus; // enter comment here
-    TH2F *fHistEtNonRemovedMuMinus; // enter comment here
-    TH2F *fHistEtNonRemovedNeutrons; // enter comment here
-    TH2F *fHistEtNonRemovedAntiNeutrons; // enter comment here
-    TH2F *fHistEtNonRemovedGammas; // enter comment here
-    TH2F *fHistEtNonRemovedGammasFromPi0; // enter comment here
-
-    TH2F *fHistEtRemovedGammas; // enter comment here
-    TH2F *fHistEtRemovedNeutrons; // enter comment here
-    TH2F *fHistEtRemovedAntiNeutrons; // enter comment here
-
-    TH2F *fHistEtRemovedCharged; // enter comment here
-    TH2F *fHistEtRemovedNeutrals; // enter comment here
-
-    TH2F *fHistEtNonRemovedCharged; // enter comment here
-    TH2F *fHistEtNonRemovedNeutrals; // enter comment here
-
-    TH2F *fHistMultNonRemovedProtons; // enter comment here
-    TH2F *fHistMultNonRemovedAntiProtons; // enter comment here
-    TH2F *fHistMultNonRemovedPiPlus; // enter comment here
-    TH2F *fHistMultNonRemovedPiMinus; // enter comment here
-    TH2F *fHistMultNonRemovedKaonPlus; // enter comment here
-    TH2F *fHistMultNonRemovedKaonMinus; // enter comment here
-    TH2F *fHistMultNonRemovedK0s; // enter comment here
-    TH2F *fHistMultNonRemovedK0L; // enter comment here
-    TH2F *fHistMultNonRemovedLambdas; // enter comment here
-    TH2F *fHistMultNonRemovedElectrons; // enter comment here
-    TH2F *fHistMultNonRemovedPositrons; // enter comment here
-    TH2F *fHistMultNonRemovedMuPlus; // enter comment here
-    TH2F *fHistMultNonRemovedMuMinus; // enter comment here
-    TH2F *fHistMultNonRemovedNeutrons; // enter comment here
-    TH2F *fHistMultNonRemovedAntiNeutrons; // enter comment here
-    TH2F *fHistMultNonRemovedGammas; // enter comment here
-
-    TH2F *fHistMultRemovedGammas; // enter comment here
-    TH2F *fHistMultRemovedNeutrons; // enter comment here
-    TH2F *fHistMultRemovedAntiNeutrons; // enter comment here
-
-    TH2F *fHistMultRemovedCharged; // enter comment here
-    TH2F *fHistMultRemovedNeutrals; // enter comment here
-
-    TH2F *fHistMultNonRemovedCharged; // enter comment here
-    TH2F *fHistMultNonRemovedNeutrals; // enter comment here
-
-    TH2F *fHistTrackMultvsNonRemovedCharged; // enter comment here
-    TH2F *fHistTrackMultvsNonRemovedNeutral; // enter comment here
-    TH2F *fHistTrackMultvsRemovedGamma; // enter comment here
-
-    TH2F *fHistClusterMultvsNonRemovedCharged; // enter comment here
-    TH2F *fHistClusterMultvsNonRemovedNeutral; // enter comment here
-    TH2F *fHistClusterMultvsRemovedGamma; // enter comment here
-
-    TH2F *fHistMultvsNonRemovedChargedE; // enter comment here
-    TH2F *fHistMultvsNonRemovedNeutralE; // enter comment here
-    TH2F *fHistMultvsRemovedGammaE; // enter comment here
+    TH3F *fHistDecayVertexNonRemovedCharged; //! Decay vertex for non-removed charged particles
+    TH3F *fHistDecayVertexRemovedCharged; //! Decay vertex for non-removed charged particles
+    TH3F *fHistDecayVertexNonRemovedNeutral; //! Decay vertex for non-removed charged particles
+    TH3F *fHistDecayVertexRemovedNeutral; //! Decay vertex for non-removed charged particles
+
+    TH2F *fHistRemovedOrNot; //! If charged/neutral particles were removed or not
+
+    TH2F *fHistEtNonRemovedProtons; //! enter comment here
+    TH2F *fHistEtNonRemovedAntiProtons; //! enter comment here
+    TH2F *fHistEtNonRemovedPiPlus; //! enter comment here
+    TH2F *fHistEtNonRemovedPiMinus; //! enter comment here
+    TH2F *fHistEtNonRemovedKaonPlus; //! enter comment here
+    TH2F *fHistEtNonRemovedKaonMinus; //! enter comment here
+    TH2F *fHistEtNonRemovedK0s; //! enter comment here
+    TH2F *fHistEtNonRemovedK0L; //! enter comment here
+    TH2F *fHistEtNonRemovedLambdas; //! enter comment here
+    TH2F *fHistEtNonRemovedElectrons; //! enter comment here
+    TH2F *fHistEtNonRemovedPositrons; //! enter comment here
+    TH2F *fHistEtNonRemovedMuPlus; //! enter comment here
+    TH2F *fHistEtNonRemovedMuMinus; //! enter comment here
+    TH2F *fHistEtNonRemovedNeutrons; //! enter comment here
+    TH2F *fHistEtNonRemovedAntiNeutrons; //! enter comment here
+    TH2F *fHistEtNonRemovedGammas; //! enter comment here
+    TH2F *fHistEtNonRemovedGammasFromPi0; //! enter comment here
+
+    TH2F *fHistEtRemovedGammas; //! enter comment here
+    TH2F *fHistEtRemovedNeutrons; //! enter comment here
+    TH2F *fHistEtRemovedAntiNeutrons; //! enter comment here
+
+    TH2F *fHistEtRemovedCharged; //! enter comment here
+    TH2F *fHistEtRemovedNeutrals; //! enter comment here
+
+    TH2F *fHistEtNonRemovedCharged; //! enter comment here
+    TH2F *fHistEtNonRemovedNeutrals; //! enter comment here
+
+    TH2F *fHistMultNonRemovedProtons; //! enter comment here
+    TH2F *fHistMultNonRemovedAntiProtons; //! enter comment here
+    TH2F *fHistMultNonRemovedPiPlus; //! enter comment here
+    TH2F *fHistMultNonRemovedPiMinus; //! enter comment here
+    TH2F *fHistMultNonRemovedKaonPlus; //! enter comment here
+    TH2F *fHistMultNonRemovedKaonMinus; //! enter comment here
+    TH2F *fHistMultNonRemovedK0s; //! enter comment here
+    TH2F *fHistMultNonRemovedK0L; //! enter comment here
+    TH2F *fHistMultNonRemovedLambdas; //! enter comment here
+    TH2F *fHistMultNonRemovedElectrons; //! enter comment here
+    TH2F *fHistMultNonRemovedPositrons; //! enter comment here
+    TH2F *fHistMultNonRemovedMuPlus; //! enter comment here
+    TH2F *fHistMultNonRemovedMuMinus; //! enter comment here
+    TH2F *fHistMultNonRemovedNeutrons; //! enter comment here
+    TH2F *fHistMultNonRemovedAntiNeutrons; //! enter comment here
+    TH2F *fHistMultNonRemovedGammas; //! enter comment here
+
+    TH2F *fHistMultRemovedGammas; //! enter comment here
+    TH2F *fHistMultRemovedNeutrons; //! enter comment here
+    TH2F *fHistMultRemovedAntiNeutrons; //! enter comment here
+
+    TH2F *fHistMultRemovedCharged; //! enter comment here
+    TH2F *fHistMultRemovedNeutrals; //! enter comment here
+
+    TH2F *fHistMultNonRemovedCharged; //! enter comment here
+    TH2F *fHistMultNonRemovedNeutrals; //! enter comment here
+
+    TH2F *fHistTrackMultvsNonRemovedCharged; //! enter comment here
+    TH2F *fHistTrackMultvsNonRemovedNeutral; //! enter comment here
+    TH2F *fHistTrackMultvsRemovedGamma; //! enter comment here
+
+    TH2F *fHistClusterMultvsNonRemovedCharged; //! enter comment here
+    TH2F *fHistClusterMultvsNonRemovedNeutral; //! enter comment here
+    TH2F *fHistClusterMultvsRemovedGamma; //! enter comment here
+
+    TH2F *fHistMultvsNonRemovedChargedE; //! enter comment here
+    TH2F *fHistMultvsNonRemovedNeutralE; //! enter comment here
+    TH2F *fHistMultvsRemovedGammaE; //! enter comment here
 
     Bool_t fCalcForKaonCorrection;//turns on and off creation of kaon correction histograms
-    TH3F *fHistK0EDepositsVsPtInAcceptance; // enter comment here
-    TH3F *fHistK0EGammaVsPtInAcceptance; // enter comment here
-    TH3F *fHistK0EDepositsVsPtOutOfAcceptance; // enter comment here
-    TH3F *fHistK0EGammaVsPtOutOfAcceptance; // enter comment here
-    TH1F *fHistSimKaonsInAcceptance;// enter comment here
-    TH1F *fHistSimK0SInAcceptance;// enter comment here
-    TH1F *fHistSimKPlusInAcceptance;// enter comment here
-    TH1F *fHistSimKMinusInAcceptance;// enter comment here
-    TH1F *fHistSimK0LInAcceptance;// enter comment here
-    TH1F *fHistSimKaonsOutOfAcceptance;// enter comment here
-    TH1F *fHistSimKaonsInAcceptanceWithDepositsPrimaries;// enter comment here
-    TH1F *fHistSimKaonsOutOfAcceptanceWithDepositsSecondaries;// enter comment here
-    TH1F *fHistSimKaonsOutOfAcceptanceWithDepositsPrimaries;// enter comment here
+    TH3F *fHistK0EDepositsVsPtInAcceptance; //! enter comment here
+    TH3F *fHistK0EGammaVsPtInAcceptance; //! enter comment here
+    TH3F *fHistK0EDepositsVsPtOutOfAcceptance; //! enter comment here
+    TH3F *fHistK0EGammaVsPtOutOfAcceptance; //! enter comment here
+    TH1F *fHistSimKaonsInAcceptance;//! enter comment here
+    TH1F *fHistSimK0SInAcceptance;//! enter comment here
+    TH1F *fHistSimKPlusInAcceptance;//! enter comment here
+    TH1F *fHistSimKMinusInAcceptance;//! enter comment here
+    TH1F *fHistSimK0LInAcceptance;//! enter comment here
+    TH1F *fHistSimKaonsOutOfAcceptance;//! enter comment here
+    TH1F *fHistSimKaonsInAcceptanceWithDepositsPrimaries;//! enter comment here
+    TH1F *fHistSimKaonsOutOfAcceptanceWithDepositsSecondaries;//! enter comment here
+    TH1F *fHistSimKaonsOutOfAcceptanceWithDepositsPrimaries;//! enter comment here
 
     Float_t fEtNonRemovedProtons; // enter comment here
     Float_t fEtNonRemovedAntiProtons; // enter comment here
@@ -280,18 +280,18 @@ protected:
     Int_t fTrackMultInAcc; // enter comment here
 
 
-    TH2F *fHistDxDzNonRemovedCharged; // enter comment here
-    TH2F *fHistDxDzRemovedCharged; // enter comment here
-    TH2F *fHistDxDzNonRemovedNeutral; // enter comment here
-    TH2F *fHistDxDzRemovedNeutral; // enter comment here
+    TH2F *fHistDxDzNonRemovedCharged; //! enter comment here
+    TH2F *fHistDxDzRemovedCharged; //! enter comment here
+    TH2F *fHistDxDzNonRemovedNeutral; //! enter comment here
+    TH2F *fHistDxDzRemovedNeutral; //! enter comment here
 
-    TH1F *fHistPiPlusMult; // enter comment here
-    TH1F *fHistPiMinusMult; // enter comment here
-    TH1F *fHistPiZeroMult; // enter comment here
+    TH1F *fHistPiPlusMult; //! enter comment here
+    TH1F *fHistPiMinusMult; //! enter comment here
+    TH1F *fHistPiZeroMult; //! enter comment here
 
-    TH1F *fHistPiPlusMultAcc; // enter comment here
-    TH1F *fHistPiMinusMultAcc; // enter comment here
-    TH1F *fHistPiZeroMultAcc; // enter comment here
+    TH1F *fHistPiPlusMultAcc; //! enter comment here
+    TH1F *fHistPiMinusMultAcc; //! enter comment here
+    TH1F *fHistPiZeroMultAcc; //! enter comment here
 
    // Int_t fPiPlusMult; // enter comment here
    // Int_t fPiMinusMult; // enter comment here
@@ -322,160 +322,160 @@ protected:
     Double_t fTotNeutralEtAfterMinEnergyCut; // enter comment here
     
     Bool_t fCalcTrackMatchVsMult;
-    TH1F *fHistGammasFound;
-    TH1F *fHistGammasGenerated;
-    TH2F *fHistGammasFoundCent;
-    TH2F *fHistGammasFoundOutOfAccCent;
-    TH2F *fHistGammasFoundAltCent;
-    TH2F *fHistGammasFoundOutOfAccAltCent;
-    TH2F *fHistGammasGeneratedCent;
-    TH2F *fHistGammasFoundRecoEnergyCent;
-    TH2F *fHistGammasFoundOutOfAccRecoEnergyCent;
-    TH1F *fHistChargedTracksCut;
-    TH1F *fHistChargedTracksAccepted;
-    TH1F *fHistGammasCut;
-    TH1F *fHistGammasAccepted;
-    TH2F *fHistChargedTrackDepositsAcceptedVsPt;
-    TH2F *fHistChargedTrackDepositsAllVsPt;
-    TH2F *fHistChargedTrackDepositsAcceptedVsPtEffCorr;
-    TH2F *fHistChargedTrackDepositsAllVsPtEffCorr;
-    TH2F *fHistChargedTracksCutMult;
-    TH2F *fHistChargedTracksAcceptedMult;
-    TH2F *fHistChargedTracksAcceptedLowPtCentEffCorr;
-    TH2F *fHistChargedTracksAcceptedLowPtCent;
-    TH2F *fHistChargedTracksAcceptedLowPtCent500MeV;
-    TH2F *fHistChargedTracksAcceptedLowPtCentNoAntiProtons;
-    TH2F *fHistChargedTracksAcceptedLowPtCentAntiProtons;
-    TH2F *fHistGammasCutMult;
-    TH2F *fHistGammasAcceptedMult;
-    TH1F *fHistBadTrackMatches;
-    TH2F *fHistMatchedTracksEvspTBkgd;
-    TH2F *fHistMatchedTracksEvspTSignal;
-    TH2F *fHistMatchedTracksEvspTBkgdPeripheral;
-    TH2F *fHistMatchedTracksEvspTSignalPeripheral;
-    TH3F *fHistMatchedTracksEvspTBkgdvsCent;
-    TH3F *fHistMatchedTracksEvspTSignalvsCent;
-    TH3F *fHistMatchedTracksEvspTBkgdvsCentEffCorr;
-    TH3F *fHistMatchedTracksEvspTSignalvsCentEffCorr;
-    TH1F *fHistChargedTracksCutPeripheral;
-    TH1F *fHistChargedTracksAcceptedPeripheral;
-    TH1F *fHistGammasCutPeripheral;
-    TH1F *fHistGammasAcceptedPeripheral;
-    TH2F *fHistBadTrackMatchesdPhidEta;
-    TH2F *fHistGoodTrackMatchesdPhidEta;
-    TH1F *fHistHadronDepositsAll;
-    TH1F *fHistHadronDepositsReco;
-    TH2F *fHistHadronDepositsAllCent;
-    TH2F *fHistHadronDepositsAllCent500MeV;
-    TH2F *fHistHadronDepositsRecoCent;
-    TH2F *fHistHadronDepositsAllvsECent;
-    TH2F *fHistHadronDepositsRecovsECent;
-    TH2F *fHistHadronsAllCent;
-    TH3F *fHistMultChVsSignalVsMult;
-    TH2F *fHistNeutralRemovedSecondaryEtVsCent;
-    TH2F *fHistChargedRemovedSecondaryEtVsCent;
-    TH2F *fHistNeutralNotRemovedSecondaryEtVsCent;
-    TH2F *fHistChargedNotRemovedSecondaryEtVsCent;
-    TH2F *fHistNeutralRemovedSecondaryNumVsNCluster;
-    TH2F *fHistChargedRemovedSecondaryNumVsNCluster;
-    TH2F *fHistNeutralNotRemovedSecondaryNumVsNCluster;
-    TH2F *fHistChargedNotRemovedSecondaryNumVsNCluster;
-    TH2F *fHistNeutralRemovedSecondaryNumVsCent;
-    TH2F *fHistChargedRemovedSecondaryNumVsCent;
-    TH2F *fHistNeutralNotRemovedSecondaryNumVsCent;
-    TH2F *fHistChargedNotRemovedSecondaryNumVsCent;
-    TH2F *fHistNeutronsEtVsCent;
-    TH2F *fHistNeutronsNumVsCent;
-    TH2F *fHistNotNeutronsNumVsCent;
-    TH2F *fHistPiKPDepositedVsNch;
-    TH2F *fHistPiKPNotTrackMatchedDepositedVsNch;
-
-    TH2F *fHistNeutronsDepositedVsNch;
-    TH2F *fHistAntiNeutronsDepositedVsNch;
-    TH2F *fHistProtonsDepositedVsNch;
-    TH2F *fHistAntiProtonsDepositedVsNch;
-    TH2F *fHistProtonsNotTrackMatchedDepositedVsNch;
-    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNch;//
-    TH2F *fHistNeutronsDepositedVsNcl;
-    TH2F *fHistAntiNeutronsDepositedVsNcl;
-    TH2F *fHistProtonsDepositedVsNcl;
-    TH2F *fHistAntiProtonsDepositedVsNcl;
-    TH2F *fHistProtonsNotTrackMatchedDepositedVsNcl;
-    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNcl;
-    TH2F *fHistSecondariesVsNch;
-    TH2F *fHistSecondariesVsNcl;
-    TH2F *fHistSecondariesEffCorrVsNch;
-    TH2F *fHistSecondariesEffCorrVsNcl;
-    TH2F *fHistSecondariesOutOfAccEffCorrVsNch;
-    TH2F *fHistSecondariesDetectorCoverEffCorrVsNch;
-
-
-    TH2F *fHistNeutronsDepositedVsNchNoEffCorr;//filled
-    TH2F *fHistAntiNeutronsDepositedVsNchNoEffCorr;//filled
-    TH2F *fHistProtonsDepositedVsNchNoEffCorr;//filled
-    TH2F *fHistAntiProtonsDepositedVsNchNoEffCorr;//filled
-    TH2F *fHistProtonsNotTrackMatchedDepositedVsNchNoEffCorr;//filled
-    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNchNoEffCorr;//filled
-    TH2F *fHistNeutronsDepositedVsNclNoEffCorr;//filled
-    TH2F *fHistAntiNeutronsDepositedVsNclNoEffCorr;//filled
-    TH2F *fHistProtonsDepositedVsNclNoEffCorr;//filled
-    TH2F *fHistAntiProtonsDepositedVsNclNoEffCorr;//filled
-    TH2F *fHistProtonsNotTrackMatchedDepositedVsNclNoEffCorr;//filled
-    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNclNoEffCorr;//filled
-
-    TH3F *fHistCentVsNchVsNcl;
-    TH3F *fHistSecondaryPositionInDetector;
-    //TH2F *fHistSecondaryPositionInDetector2D;
-    TH2F *fClusterPositionWeird;
-    //TH3F *fHistSecondaryPositionInDetectorMultiple;
-    TH1F *fSecondaryClusterEnergy; // Distribution of cluster energies
-
-    TH2F *fHistGammaCrossCheck;
-    TH2F *fHistGammaCrossCheckAlt;//includes gammas that did not hit as gammas
-    TH2F *fHistGammaEnergyCrossCheck;
-    TH2F *fHistGammaEnergyCrossCheckAlt;//includes gammas that did not hit as gammas
-    TH2F *fHistNeutronCrossCheck;
-    TH2F *fHistSecondaryCrossCheck;
-    TH2F *fHistHadronCrossCheck;
-    TH2F *fHistKaonCrossCheck;
-
-    TH1F *fHistAllEnergy;//energy of all clusters passing cuts vs centrality
-    TH1F *fHistSignalEnergy;//signal of signal clusters passing cuts vs centrality
-    TH1F *fHistNeutronEnergy;//signal of neutron clusters passing cuts vs centrality
-    TH1F *fHistKaonEnergy;//signal of kaon clusters passing cuts vs centrality
-    TH1F *fHistHadronEnergy;//signal of hadron clusters passing cuts vs centrality
-    TH1F *fHistSecondaryEnergy;//signal of secondary clusters passing cuts vs centrality
-    TH1F *fHistSecondaryChargedEnergy;//signal of secondary clusters passing cuts vs centrality
-    TH1F *fHistSecondaryNeutronEnergy;//signal of secondary clusters passing cuts vs centrality
-    TH1F *fHistSecondaryGammaEnergy;//signal of secondary clusters passing cuts vs centrality
-    TH1F *fHistSecondaryElectronEnergy;//signal of secondary clusters passing cuts vs centrality
-    TH1F *fHistSecondaryOtherEnergy;//signal of secondary clusters passing cuts vs centrality
-    TH1F *fHistSimulatedGammaEnergy;//signal of signal clusters passing cuts vs centrality
-    TH1F *fHistReconstructedGammaEnergy;//signal of signal clusters passing cuts vs centrality
-    TH1F *fHistSimulatedGammaEnergyAboveThreshold;//signal of signal clusters passing cuts vs centrality
-    TH1F *fHistReconstructedSignalEnergy;//signal of signal clusters passing cuts vs centrality
-
-    TH2F *fHistFracSignalVsNClusters;//Fraction of signal vs number of clusters
-    TH2F *fHistFracHadronsVsNClusters;//Fraction of hadrons vs number of clusters
-    TH2F *fHistFracNeutronsVsNClusters;//Fraction of signal vs number of clusters
-    TH2F *fHistFracKaonsVsNClusters;//Fraction of signal vs number of clusters
-    TH2F *fHistFracSecondariesVsNClusters;//Fraction of signal vs number of clusters
-    TH2F *fHistFracSignalVsNMultiplicity;//Fraction of signal vs charged track multiplicity
-    TH2F *fHistFracHadronsVsNMultiplicity;//Fraction of hadrons vs charged track multiplicity
-    TH2F *fHistFracNeutronsVsNMultiplicity;//Fraction of signal vs charged track multiplicity
-    TH2F *fHistFracKaonsVsNMultiplicity;//Fraction of signal vs charged track multiplicity
-    TH2F *fHistFracSecondariesVsNMultiplicity;//Fraction of signal vs charged track multiplicity
-    TH2F *fHistFracSignalVsNMatchedTracks;//Fraction of signal vs number of matched tracks
-    TH2F *fHistFracHadronsVsNMatchedTracks;//Fraction of hadrons vs number of matched tracks
-    TH2F *fHistFracNeutronsVsNMatchedTracks;//Fraction of signal vs number of matched tracks
-    TH2F *fHistFracKaonsVsNMatchedTracks;//Fraction of signal vs number of matched tracks
-    TH2F *fHistFracSecondariesVsNMatchedTracks;//Fraction of signal vs number of matched tracks
-    TH2F *fHistFracSignalVsNTotalTracks;//Fraction of signal vs number of total tracks
-    TH2F *fHistFracHadronsVsNTotalTracks;//Fraction of hadrons vs number of total tracks
-    TH2F *fHistFracNeutronsVsNTotalTracks;//Fraction of signal vs number of total tracks
-    TH2F *fHistFracKaonsVsNTotalTracks;//Fraction of signal vs number of total tracks
-    TH2F *fHistFracSecondariesVsNTotalTracks;//Fraction of signal vs number of total tracks
-    TH3F *fHistRCorrVsPtVsCent; // enter comment here
+    TH1F *fHistGammasFound;//!
+    TH1F *fHistGammasGenerated;//!
+    TH2F *fHistGammasFoundCent;//!
+    TH2F *fHistGammasFoundOutOfAccCent;//!
+    TH2F *fHistGammasFoundAltCent;//!
+    TH2F *fHistGammasFoundOutOfAccAltCent;//!
+    TH2F *fHistGammasGeneratedCent;//!
+    TH2F *fHistGammasFoundRecoEnergyCent;//!
+    TH2F *fHistGammasFoundOutOfAccRecoEnergyCent;//!
+    TH1F *fHistChargedTracksCut;//!
+    TH1F *fHistChargedTracksAccepted;//!
+    TH1F *fHistGammasCut;//!
+    TH1F *fHistGammasAccepted;//!
+    TH2F *fHistChargedTrackDepositsAcceptedVsPt;//!
+    TH2F *fHistChargedTrackDepositsAllVsPt;//!
+    TH2F *fHistChargedTrackDepositsAcceptedVsPtEffCorr;//!
+    TH2F *fHistChargedTrackDepositsAllVsPtEffCorr;//!
+    TH2F *fHistChargedTracksCutMult;//!
+    TH2F *fHistChargedTracksAcceptedMult;//!
+    TH2F *fHistChargedTracksAcceptedLowPtCentEffCorr;//!
+    TH2F *fHistChargedTracksAcceptedLowPtCent;//!
+    TH2F *fHistChargedTracksAcceptedLowPtCent500MeV;//!
+    TH2F *fHistChargedTracksAcceptedLowPtCentNoAntiProtons;//!
+    TH2F *fHistChargedTracksAcceptedLowPtCentAntiProtons;//!
+    TH2F *fHistGammasCutMult;//!
+    TH2F *fHistGammasAcceptedMult;//!
+    TH1F *fHistBadTrackMatches;//!
+    TH2F *fHistMatchedTracksEvspTBkgd;//!
+    TH2F *fHistMatchedTracksEvspTSignal;//!
+    TH2F *fHistMatchedTracksEvspTBkgdPeripheral;//!
+    TH2F *fHistMatchedTracksEvspTSignalPeripheral;//!
+    TH3F *fHistMatchedTracksEvspTBkgdvsCent;//!
+    TH3F *fHistMatchedTracksEvspTSignalvsCent;//!
+    TH3F *fHistMatchedTracksEvspTBkgdvsCentEffCorr;//!
+    TH3F *fHistMatchedTracksEvspTSignalvsCentEffCorr;//!
+    TH1F *fHistChargedTracksCutPeripheral;//!
+    TH1F *fHistChargedTracksAcceptedPeripheral;//!
+    TH1F *fHistGammasCutPeripheral;//!
+    TH1F *fHistGammasAcceptedPeripheral;//!
+    TH2F *fHistBadTrackMatchesdPhidEta;//!
+    TH2F *fHistGoodTrackMatchesdPhidEta;//!
+    TH1F *fHistHadronDepositsAll;//!
+    TH1F *fHistHadronDepositsReco;//!
+    TH2F *fHistHadronDepositsAllCent;//!
+    TH2F *fHistHadronDepositsAllCent500MeV;//!
+    TH2F *fHistHadronDepositsRecoCent;//!
+    TH2F *fHistHadronDepositsAllvsECent;//!
+    TH2F *fHistHadronDepositsRecovsECent;//!
+    TH2F *fHistHadronsAllCent;//!
+    TH3F *fHistMultChVsSignalVsMult;//!
+    TH2F *fHistNeutralRemovedSecondaryEtVsCent;//!
+    TH2F *fHistChargedRemovedSecondaryEtVsCent;//!
+    TH2F *fHistNeutralNotRemovedSecondaryEtVsCent;//!
+    TH2F *fHistChargedNotRemovedSecondaryEtVsCent;//!
+    TH2F *fHistNeutralRemovedSecondaryNumVsNCluster;//!
+    TH2F *fHistChargedRemovedSecondaryNumVsNCluster;//!
+    TH2F *fHistNeutralNotRemovedSecondaryNumVsNCluster;//!
+    TH2F *fHistChargedNotRemovedSecondaryNumVsNCluster;//!
+    TH2F *fHistNeutralRemovedSecondaryNumVsCent;//!
+    TH2F *fHistChargedRemovedSecondaryNumVsCent;//!
+    TH2F *fHistNeutralNotRemovedSecondaryNumVsCent;//!
+    TH2F *fHistChargedNotRemovedSecondaryNumVsCent;//!
+    TH2F *fHistNeutronsEtVsCent;//!
+    TH2F *fHistNeutronsNumVsCent;//!
+    TH2F *fHistNotNeutronsNumVsCent;//!
+    TH2F *fHistPiKPDepositedVsNch;//!
+    TH2F *fHistPiKPNotTrackMatchedDepositedVsNch;//!
+
+    TH2F *fHistNeutronsDepositedVsNch;//!
+    TH2F *fHistAntiNeutronsDepositedVsNch;//!
+    TH2F *fHistProtonsDepositedVsNch;//!
+    TH2F *fHistAntiProtonsDepositedVsNch;//!
+    TH2F *fHistProtonsNotTrackMatchedDepositedVsNch;//!
+    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNch;//!//
+    TH2F *fHistNeutronsDepositedVsNcl;//!
+    TH2F *fHistAntiNeutronsDepositedVsNcl;//!
+    TH2F *fHistProtonsDepositedVsNcl;//!
+    TH2F *fHistAntiProtonsDepositedVsNcl;//!
+    TH2F *fHistProtonsNotTrackMatchedDepositedVsNcl;//!
+    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNcl;//!
+    TH2F *fHistSecondariesVsNch;//!
+    TH2F *fHistSecondariesVsNcl;//!
+    TH2F *fHistSecondariesEffCorrVsNch;//!
+    TH2F *fHistSecondariesEffCorrVsNcl;//!
+    TH2F *fHistSecondariesOutOfAccEffCorrVsNch;//!
+    TH2F *fHistSecondariesDetectorCoverEffCorrVsNch;//!
+
+
+    TH2F *fHistNeutronsDepositedVsNchNoEffCorr;//!//filled
+    TH2F *fHistAntiNeutronsDepositedVsNchNoEffCorr;//!//filled
+    TH2F *fHistProtonsDepositedVsNchNoEffCorr;//!//filled
+    TH2F *fHistAntiProtonsDepositedVsNchNoEffCorr;//!//filled
+    TH2F *fHistProtonsNotTrackMatchedDepositedVsNchNoEffCorr;//!//filled
+    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNchNoEffCorr;//!//filled
+    TH2F *fHistNeutronsDepositedVsNclNoEffCorr;//!//filled
+    TH2F *fHistAntiNeutronsDepositedVsNclNoEffCorr;//!//filled
+    TH2F *fHistProtonsDepositedVsNclNoEffCorr;//!//filled
+    TH2F *fHistAntiProtonsDepositedVsNclNoEffCorr;//!//filled
+    TH2F *fHistProtonsNotTrackMatchedDepositedVsNclNoEffCorr;//!//filled
+    TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNclNoEffCorr;//!//filled
+
+    TH3F *fHistCentVsNchVsNcl;//!
+    TH3F *fHistSecondaryPositionInDetector;//!
+    //TH2F *fHistSecondaryPositionInDetector2D;//!
+    TH2F *fClusterPositionWeird;//!
+    //TH3F *fHistSecondaryPositionInDetectorMultiple;//!
+    TH1F *fSecondaryClusterEnergy;//! // Distribution of cluster energies
+
+    TH2F *fHistGammaCrossCheck;//!
+    TH2F *fHistGammaCrossCheckAlt;//!//includes gammas that did not hit as gammas
+    TH2F *fHistGammaEnergyCrossCheck;//!
+    TH2F *fHistGammaEnergyCrossCheckAlt;//!//includes gammas that did not hit as gammas
+    TH2F *fHistNeutronCrossCheck;//!
+    TH2F *fHistSecondaryCrossCheck;//!
+    TH2F *fHistHadronCrossCheck;//!
+    TH2F *fHistKaonCrossCheck;//!
+
+    TH1F *fHistAllEnergy;//!//energy of all clusters passing cuts vs centrality
+    TH1F *fHistSignalEnergy;//!//signal of signal clusters passing cuts vs centrality
+    TH1F *fHistNeutronEnergy;//!//signal of neutron clusters passing cuts vs centrality
+    TH1F *fHistKaonEnergy;//!//signal of kaon clusters passing cuts vs centrality
+    TH1F *fHistHadronEnergy;//!//signal of hadron clusters passing cuts vs centrality
+    TH1F *fHistSecondaryEnergy;//!//signal of secondary clusters passing cuts vs centrality
+    TH1F *fHistSecondaryChargedEnergy;//!//signal of secondary clusters passing cuts vs centrality
+    TH1F *fHistSecondaryNeutronEnergy;//!//signal of secondary clusters passing cuts vs centrality
+    TH1F *fHistSecondaryGammaEnergy;//!//signal of secondary clusters passing cuts vs centrality
+    TH1F *fHistSecondaryElectronEnergy;//!//signal of secondary clusters passing cuts vs centrality
+    TH1F *fHistSecondaryOtherEnergy;//!//signal of secondary clusters passing cuts vs centrality
+    TH1F *fHistSimulatedGammaEnergy;//!//signal of signal clusters passing cuts vs centrality
+    TH1F *fHistReconstructedGammaEnergy;//!//signal of signal clusters passing cuts vs centrality
+    TH1F *fHistSimulatedGammaEnergyAboveThreshold;//!//signal of signal clusters passing cuts vs centrality
+    TH1F *fHistReconstructedSignalEnergy;//!//signal of signal clusters passing cuts vs centrality
+
+    TH2F *fHistFracSignalVsNClusters;//!//Fraction of signal vs number of clusters
+    TH2F *fHistFracHadronsVsNClusters;//!//Fraction of hadrons vs number of clusters
+    TH2F *fHistFracNeutronsVsNClusters;//!//Fraction of signal vs number of clusters
+    TH2F *fHistFracKaonsVsNClusters;//!//Fraction of signal vs number of clusters
+    TH2F *fHistFracSecondariesVsNClusters;//!//Fraction of signal vs number of clusters
+    TH2F *fHistFracSignalVsNMultiplicity;//!//Fraction of signal vs charged track multiplicity
+    TH2F *fHistFracHadronsVsNMultiplicity;//!//Fraction of hadrons vs charged track multiplicity
+    TH2F *fHistFracNeutronsVsNMultiplicity;//!//Fraction of signal vs charged track multiplicity
+    TH2F *fHistFracKaonsVsNMultiplicity;//!//Fraction of signal vs charged track multiplicity
+    TH2F *fHistFracSecondariesVsNMultiplicity;//!//Fraction of signal vs charged track multiplicity
+    TH2F *fHistFracSignalVsNMatchedTracks;//!//Fraction of signal vs number of matched tracks
+    TH2F *fHistFracHadronsVsNMatchedTracks;//!//Fraction of hadrons vs number of matched tracks
+    TH2F *fHistFracNeutronsVsNMatchedTracks;//!//Fraction of signal vs number of matched tracks
+    TH2F *fHistFracKaonsVsNMatchedTracks;//!//Fraction of signal vs number of matched tracks
+    TH2F *fHistFracSecondariesVsNMatchedTracks;//!//Fraction of signal vs number of matched tracks
+    TH2F *fHistFracSignalVsNTotalTracks;//!//Fraction of signal vs number of total tracks
+    TH2F *fHistFracHadronsVsNTotalTracks;//!//Fraction of hadrons vs number of total tracks
+    TH2F *fHistFracNeutronsVsNTotalTracks;//!//Fraction of signal vs number of total tracks
+    TH2F *fHistFracKaonsVsNTotalTracks;//!//Fraction of signal vs number of total tracks
+    TH2F *fHistFracSecondariesVsNTotalTracks;//!//Fraction of signal vs number of total tracks
+    TH3F *fHistRCorrVsPtVsCent;//! // enter comment here
 
 
 private:
index e85bac5523cccf3a3dcf119c2c75a141e4cd253a..c236dfc53133dab756e501dfb604752645b557f3 100644 (file)
@@ -26,11 +26,11 @@ protected:
 
  private:
    
-    TH2I *fBadMapM2; // Bad map
-    TH2I *fBadMapM3; // Bad map
-    TH2I *fBadMapM4; // Bad map
+    TH2I *fBadMapM2; //! Bad map
+    TH2I *fBadMapM3; //! Bad map
+    TH2I *fBadMapM4; //! Bad map
 
-    AliPHOSGeoUtils *fGeoUtils; // Geo utils
+    AliPHOSGeoUtils *fGeoUtils;//! // Geo utils
     
     // Prohibited
     AliAnalysisEtMonteCarloPhos & operator = (const AliAnalysisEtMonteCarloPhos&) ;//cpy assignment
index cc868dfb5d48ce4beece640002b77652e31e39f4..eb7f27553f3132271233ad8869b96ef916c7dbac 100644 (file)
@@ -74,8 +74,8 @@ public:
 private:
 
     // Energy correction function
-    TF1 *fEnergyCorrection;//
-    TH2F *fRecoEff;//Reconstruction efficiency, x axis = pT, y axis = multiplicity, z = efficiency
+    TF1 *fEnergyCorrection;//!
+    TH2F *fRecoEff;//!Reconstruction efficiency, x axis = pT, y axis = multiplicity, z = efficiency
     
     
     
index da234cb806c2288b60ddba32e837420b4579995e..816f0831a0af27c7e29f0c5aa76357ed88c3e1ee 100644 (file)
@@ -50,87 +50,87 @@ protected:
 
     virtual Double_t GetCorrectionModification(const AliESDCaloCluster& cluster,Int_t nonLinCorr, Int_t effCorr, Int_t cent);//nonLinCorr 0 = nominal 1 = high -1 = low, effCorr  0 = nominal 1 = high -1 = low
 
-    AliAnalysisHadEtCorrections *fCorrections;//corrections needed for hadronic et
+    AliAnalysisHadEtCorrections *fCorrections;//!//corrections needed for hadronic et
 
     Double_t fPidCut; // cut on the pid probability
     Float_t nChargedHadronsMeasured;
     Float_t nChargedHadronsTotal;
 
-    TH2F *fHistChargedPionEnergyDeposit; /** Energy deposited in calorimeter by charged pions */
-    TH2F *fHistProtonEnergyDeposit; /** Energy deposited in calorimeter by protons */
-    TH2F *fHistAntiProtonEnergyDeposit; /** Energy deposited in calorimeter by anti-protons */
-    TH2F *fHistChargedKaonEnergyDeposit; /** Energy deposited in calorimeter by charged kaons */
-    TH2F *fHistMuonEnergyDeposit; /** Energy deposited in calorimeter by muons */
+    TH2F *fHistChargedPionEnergyDeposit;//! /** Energy deposited in calorimeter by charged pions */
+    TH2F *fHistProtonEnergyDeposit;//! /** Energy deposited in calorimeter by protons */
+    TH2F *fHistAntiProtonEnergyDeposit;//! /** Energy deposited in calorimeter by anti-protons */
+    TH2F *fHistChargedKaonEnergyDeposit;//! /** Energy deposited in calorimeter by charged kaons */
+    TH2F *fHistMuonEnergyDeposit;//! /** Energy deposited in calorimeter by muons */
 
-    TH1F *fHistRemovedEnergy; // removed energy
+    TH1F *fHistRemovedEnergy;//! // removed energy
     
     Double_t fGeomCorrection; // geometry correction
     Double_t fEMinCorrection; // Emin correction
     
     Double_t fRecEffCorrection; // Eff correction
     
-    TH2D *fClusterPositionAccepted; // Position of clusters
-    TH2D *fClusterPositionAll; // Position of clusters
-    TH2D *fClusterPositionAcceptedEnergy; // Position of clusters
-    TH2D *fClusterPositionAllEnergy; // Position of clusters
-    TH1F *fClusterEnergy; // Distribution of cluster energies
-    TH2F *fClusterEnergyCent; // Distribution of cluster energies vs centrality bin
-    TH2F *fClusterEnergyCentMatched; // Distribution of cluster energies vs centrality bin
-    TH2F *fClusterEnergyCentNotMatched; // Distribution of cluster energies vs centrality bin
-    TH1F *fClusterEt; // Distribution of cluster energies
+    TH2D *fClusterPositionAccepted;//! // Position of clusters
+    TH2D *fClusterPositionAll;//! // Position of clusters
+    TH2D *fClusterPositionAcceptedEnergy;//! // Position of clusters
+    TH2D *fClusterPositionAllEnergy;//! // Position of clusters
+    TH1F *fClusterEnergy;//! // Distribution of cluster energies
+    TH2F *fClusterEnergyCent;//! // Distribution of cluster energies vs centrality bin
+    TH2F *fClusterEnergyCentMatched;//! // Distribution of cluster energies vs centrality bin
+    TH2F *fClusterEnergyCentNotMatched;//! // Distribution of cluster energies vs centrality bin
+    TH1F *fClusterEt;//! // Distribution of cluster energies
     
-    TH2D *fHistChargedEnergyRemoved; // Charged energy removed
-    TH2D *fHistNeutralEnergyRemoved; // Neutral energy removed
-    TH2D *fHistGammaEnergyAdded; // gamma energy added
-
-    TH3F *fHistMatchedTracksEvspTvsCent;   //For measuring hadron deposits
-    TH3F *fHistMatchedTracksEvspTvsCentEffCorr;   //For measuring hadron deposits
-    TH3F *fHistMatchedTracksEvspTvsCentEffTMCorr;   //For measuring hadron deposits
-    TH3F *fHistPeripheralMatchedTracksEvspTvsCentEffTMCorr;   //For measuring hadron deposits - uses peripheral bins and different centralities' efficiences
-    TH3F *fHistMatchedTracksEvspTvsCentEffTMCorr500MeV;   //For measuring hadron deposits
-    TH2F *fHistFoundHadronsvsCent;   //For measuring hadron deposits
-    TH2F *fHistNotFoundHadronsvsCent;   //For measuring hadron deposits
-    TH2F *fHistFoundHadronsEtvsCent;   //For measuring hadron deposits
-    TH2F *fHistNotFoundHadronsEtvsCent;   //For measuring hadron deposits
-    TH2F *fHistFoundHadronsvsCent500MeV;   //For measuring hadron deposits
-    TH2F *fHistNotFoundHadronsvsCent500MeV;   //For measuring hadron deposits
-    TH2F *fHistFoundHadronsEtvsCent500MeV;   //For measuring hadron deposits
-    TH2F *fHistNotFoundHadronsEtvsCent500MeV;   //For measuring hadron deposits
-    TH2D *fHistNominalRawEt;//Total ET from clusters with nominal reconstruction efficiency and nonlinearity correction vs centrality
-    TH2D *fHistNominalNonLinHighEt;//Total ET from clusters with nominal reconstruction efficiency and high bound of nonlinearity correction vs centrality
-    TH2D *fHistNominalNonLinLowEt;//Total ET from clusters with nominal reconstruction efficiency and low bound of nonlinearity correction vs centrality
-    TH2D *fHistNominalEffHighEt;//Total ET from clusters with high bound on reconstruction efficiency and nominal nonlinearity correction vs centrality
-    TH2D *fHistNominalEffLowEt;//Total ET from clusters with low bound on reconstruction efficiency and nominal nonlinearity correction vs centrality
-
-    TH2F *fHistTotRawEtEffCorr; // gamma efficiency applied
-    TH2F *fHistTotRawEt; //no  gamma efficiency applied
-    TH2F *fHistTotRawEtEffCorr500MeV;//Total ET from clusters with nominal reconstruction efficiency and nonlinearity correction vs centrality
-    TH2F *fHistTotAllRawEt; // all clusters no reco eff
-    TH2F *fHistTotAllRawEtEffCorr; // all clusters reco eff applied
+    TH2D *fHistChargedEnergyRemoved;//! // Charged energy removed
+    TH2D *fHistNeutralEnergyRemoved;//! // Neutral energy removed
+    TH2D *fHistGammaEnergyAdded;//! // gamma energy added
+
+    TH3F *fHistMatchedTracksEvspTvsCent;//!   //For measuring hadron deposits
+    TH3F *fHistMatchedTracksEvspTvsCentEffCorr;//!   //For measuring hadron deposits
+    TH3F *fHistMatchedTracksEvspTvsCentEffTMCorr;//!   //For measuring hadron deposits
+    TH3F *fHistPeripheralMatchedTracksEvspTvsCentEffTMCorr;//!   //For measuring hadron deposits - uses peripheral bins and different centralities' efficiences
+    TH3F *fHistMatchedTracksEvspTvsCentEffTMCorr500MeV;//!   //For measuring hadron deposits
+    TH2F *fHistFoundHadronsvsCent;//!   //For measuring hadron deposits
+    TH2F *fHistNotFoundHadronsvsCent;//!   //For measuring hadron deposits
+    TH2F *fHistFoundHadronsEtvsCent;//!   //For measuring hadron deposits
+    TH2F *fHistNotFoundHadronsEtvsCent;//!   //For measuring hadron deposits
+    TH2F *fHistFoundHadronsvsCent500MeV;//!   //For measuring hadron deposits
+    TH2F *fHistNotFoundHadronsvsCent500MeV;//!   //For measuring hadron deposits
+    TH2F *fHistFoundHadronsEtvsCent500MeV;//!   //For measuring hadron deposits
+    TH2F *fHistNotFoundHadronsEtvsCent500MeV;//!   //For measuring hadron deposits
+    TH2D *fHistNominalRawEt;//!//Total ET from clusters with nominal reconstruction efficiency and nonlinearity correction vs centrality
+    TH2D *fHistNominalNonLinHighEt;//!//Total ET from clusters with nominal reconstruction efficiency and high bound of nonlinearity correction vs centrality
+    TH2D *fHistNominalNonLinLowEt;//!//Total ET from clusters with nominal reconstruction efficiency and low bound of nonlinearity correction vs centrality
+    TH2D *fHistNominalEffHighEt;//!//Total ET from clusters with high bound on reconstruction efficiency and nominal nonlinearity correction vs centrality
+    TH2D *fHistNominalEffLowEt;//!//Total ET from clusters with low bound on reconstruction efficiency and nominal nonlinearity correction vs centrality
+
+    TH2F *fHistTotRawEtEffCorr;//! // gamma efficiency applied
+    TH2F *fHistTotRawEt;//! //no  gamma efficiency applied
+    TH2F *fHistTotRawEtEffCorr500MeV;//!//Total ET from clusters with nominal reconstruction efficiency and nonlinearity correction vs centrality
+    TH2F *fHistTotAllRawEt;//! // all clusters no reco eff
+    TH2F *fHistTotAllRawEtEffCorr;//! // all clusters reco eff applied
     Double_t ApplyModifiedCorrections(const AliESDCaloCluster& cluster,Int_t nonLinCorr, Int_t effCorr, Int_t cent);//nonLinCorr 0 = nominal 1 = high -1 = low, effCorr  0 = nominal 1 = high -1 = low
 
-    TH3F *fHistNClustersPhosVsEmcal; // all clusters no reco eff
-    TH2F *fHistClusterSizeVsCent; // all clusters no reco eff
-    TH2F *fHistMatchedClusterSizeVsCent; // all clusters no reco eff
-    TH2F *fHistTotAllRawEtVsTotalPt; // all clusters no reco eff
+    TH3F *fHistNClustersPhosVsEmcal;//! // all clusters no reco eff
+    TH2F *fHistClusterSizeVsCent;//! // all clusters no reco eff
+    TH2F *fHistMatchedClusterSizeVsCent;//! // all clusters no reco eff
+    TH2F *fHistTotAllRawEtVsTotalPt;//! // all clusters no reco eff
     //fHistTotAllRawEtVsTotalPtCent
-    TH3F *fHistTotAllRawEtVsTotalPtVsCent; // all clusters no reco eff
-    TH3F *fHistTotMatchedRawEtVsTotalPtVsCent; // all clusters no reco eff
-    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNch;
-    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNch;
-    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNcl;
-    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNcl;
-    TH2F *fHistPiKPTrackMatchedDepositedVsNch;
-    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNchNoEff;
-    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNchNoEff;
-    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNclNoEff;
-    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNclNoEff;
-    TH2F *fHistPiKPTrackMatchedDepositedVsNchNoEff;
-    TH3F *fHistCentVsNchVsNclReco;
-
-    TH1F *fHistRawSignalReco;
-    TH1F *fHistEffCorrSignalReco;
-    TH3F *fHistRecoRCorrVsPtVsCent; // enter comment here
+    TH3F *fHistTotAllRawEtVsTotalPtVsCent;//! // all clusters no reco eff
+    TH3F *fHistTotMatchedRawEtVsTotalPtVsCent;//! // all clusters no reco eff
+    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNch;//!
+    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNch;//!
+    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNcl;//!
+    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNcl;//!
+    TH2F *fHistPiKPTrackMatchedDepositedVsNch;//!
+    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNchNoEff;//!
+    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNchNoEff;//!
+    TH2F *fHistPIDProtonsTrackMatchedDepositedVsNclNoEff;//!
+    TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNclNoEff;//!
+    TH2F *fHistPiKPTrackMatchedDepositedVsNchNoEff;//!
+    TH3F *fHistCentVsNchVsNclReco;//!
+
+    TH1F *fHistRawSignalReco;//!
+    TH1F *fHistEffCorrSignalReco;//!
+    TH3F *fHistRecoRCorrVsPtVsCent;//! // enter comment here
 
 private:
 
index ee8885f8fad109bb82235fa768d2e382d0aabe73..d09abb24ed0e1c18beedacfbc6f593d113c53d8d 100644 (file)
@@ -96,11 +96,11 @@ public:
     
 protected:
   
-    const AliVEvent *fEvent; // Pointer to current event
+    const AliVEvent *fEvent; //! Pointer to current event
 
-    TRefArray *fClusterArray; // Array of clusters
+    TRefArray *fClusterArray; //! Array of clusters
 
-    AliAnalysisEtCuts *fCuts; // Pointer to the cuts object; DS: also in base class?
+    AliAnalysisEtCuts *fCuts; //! Pointer to the cuts object; DS: also in base class?
     
     Bool_t SuspiciousDecayInChain(const UInt_t suspectMotherPdg, const UInt_t suspectDaughterPdg, const TParticle& part, AliStack& stack) const;
     
index 87a3104cb46d1ba382205d07d4563bdf5880565f..92315988a2e0308fb15570199eb3b300c62eb67e 100644 (file)
@@ -46,11 +46,11 @@ private:
     int LoadGeometry(); // load geometry
     int LoadBadMaps(); // load bad maps
     
-    AliPHOSGeometry *fGeoUtils; // geo utils
+    AliPHOSGeometry *fGeoUtils; //! geo utils
     
-    TH2I *fBadMapM2; // Bad map
-    TH2I *fBadMapM3; // Bad map
-    TH2I *fBadMapM4; // Bad map
+    TH2I *fBadMapM2; //! Bad map
+    TH2I *fBadMapM3; //! Bad map
+    TH2I *fBadMapM4; //! Bad map
 
     Bool_t fMatrixInitialized; // matrix initialized
     
index 9ee9921992131f35dfff7d8ebd5de23451f8ed25..7b2089c89641e906219556c1f22035d20c404663 100644 (file)
@@ -102,15 +102,15 @@ public:
 private:
 
     // ChargedContr
-    TF1 *fChargedContr;
+    TF1 *fChargedContr;//!
     // NeutralContr
-    TF1 *fNeutralContr;
+    TF1 *fNeutralContr;//!
     // GammaContr
-    TF1 *fGammaContr;  
+    TF1 *fGammaContr;  //!
     // SecondaryContr
-    TF1 *fSecondaryContr;
+    TF1 *fSecondaryContr;//!
 
-    TH2F *fRecoEff;//Reconstruction efficiency, x axis = pT, y axis = multiplicity, z = efficiency
+    TH2F *fRecoEff;//!Reconstruction efficiency, x axis = pT, y axis = multiplicity, z = efficiency
     
     // Mean deposited energy from charged particles
     Double_t fMeanCharged;
index c8a7f4845f296daab2cce85fa1361e427dac89ba..c80491b17b0166d82a8ecff366d50fc1c928f991 100644 (file)
@@ -106,7 +106,7 @@ protected:
     Float_t Et(TParticle *part, float mass = -1000);
     Float_t Et(Float_t p, Float_t theta, Int_t pid, Short_t charge) const;
 
-    TList *fhistoList;//list of histograms saved out to file
+    TList *fhistoList;//->list of histograms saved out to file
     //static Float_t fgEtaAxis[47];//bins for eta axis of histograms
     static Float_t fgEtaAxis[17];//bins for eta axis of histograms
     static Int_t fgnumOfEtaBins;//number of eta bins
index 2dc740db38913e119ab447dfa6e53e11f3bb18e6..77f31b54a8f750ccd5d15bff3ea67799d89631f9 100644 (file)
@@ -2101,7 +2101,7 @@ void AliAnalysisHadEtMonteCarlo::CreateHistograms(){
   Float_t minEt = 0.0;
   Float_t maxEt = 100.0;
   Float_t minEtPiKP = 0.0;
-  Float_t maxEtPiKP = 50.0;
+  Float_t maxEtPiKP = 100.0;
   if(fDataSet==20100){
     maxEt=4000.0;
     maxEtPiKP = 2500;
index 009ff155ffb3921fd8da50c7adc413e7c7345cf5..db0d41fba1af6cfb15ee531fca8eee52e8715bda 100644 (file)
@@ -167,8 +167,8 @@ public:
     //Float_t fSimPiKPEtSmeared[4];//simulated Et for pi,k,p smeared for each event by different momentum resolutions
     static Float_t fgSmearWidths[4];//array with widths for smearing with different momentum resultions
     static Int_t fgNumSmearWidths;//number of entries in the array above
-    TRandom *fPtSmearer;//a TRandom used for investigating momentum smearing
-    AliAnalysisHadEtReconstructed *fHadEtReco;//corresponding class for data reconstruction.  Used to access corrections directly used here.
+    TRandom *fPtSmearer;//!a TRandom used for investigating momentum smearing
+    AliAnalysisHadEtReconstructed *fHadEtReco;//!corresponding class for data reconstruction.  Used to access corrections directly used here.
 
     ClassDef(AliAnalysisHadEtMonteCarlo, 1);
 };
index 78eae5ea689f5c21787fcfb1147063d46efb7370..675b2835b814e86909a5174665125f1acf5697c8 100644 (file)
@@ -712,7 +712,7 @@ void AliAnalysisHadEtReconstructed::CreateHistograms(){//Creating histograms and
   Float_t minEt = 0.0;
   Float_t maxEt = 100.0;
   Float_t minEtPiKP = 0.0;
-  Float_t maxEtPiKP = 50.0;
+  Float_t maxEtPiKP = 100.0;
   if(fDataSet==20100){
     maxEt=4000.0;
     maxEtPiKP = 2500;
index 4cd6117f5a911ded09cc9143a3d4ad9581940304..deb6241beefa7128bf0192bfd39f6710e726d7be 100644 (file)
@@ -91,7 +91,7 @@ public:
 protected:
 
     Bool_t CheckGoodVertex(AliVParticle *track);
-    AliAnalysisHadEtCorrections *fCorrections;//corrections needed for hadronic et
+    AliAnalysisHadEtCorrections *fCorrections;//!corrections needed for hadronic et
 
     TString       fConfigFile;        // the name of the ConfigFile
     //virtual bool TrackHitsCalorimeter(AliVParticle *track, Double_t magField) = 0;
index 39fef36ac5d7174d83fe88855b258b1593fde4d9..d95f0ec687008c7ee2ba34807ed6b004a6445461 100644 (file)
@@ -29,7 +29,7 @@ public:
     virtual void   UserExec(Option_t *option);
     virtual void   Terminate(Option_t *);
     void IsSim(){fIsSim = kTRUE;}
-    AliPIDResponse *fPIDResponse;
+    AliPIDResponse *fPIDResponse;//!
 
 private:
 
index 6c1527b98211cf782b6fa4066bc77018f9c191ac..5f8a64efa6bfb6a38cbcd8cc1bdb84b77d0fb2fb 100644 (file)
@@ -27,7 +27,7 @@ public:
   virtual void   UserCreateOutputObjects();
   virtual void   UserExec(Option_t *option);
   virtual void   Terminate(Option_t *);
-  AliPIDResponse *fPIDResponse;
+  AliPIDResponse *fPIDResponse;//!
     
 private:
   
index 12f0092811088155c2bbbeb1cc76342eea22d82d..90aa4fbe4409de4bb3c5da6f81aba95f99b47a0a 100644 (file)
@@ -41,20 +41,20 @@ protected:
     AliCentrality* GetCentralityObject();
     
     /** The ESD event */
-    AliESDEvent *fESDEvent; //The ESD event
+    AliESDEvent *fESDEvent; //!The ESD event
   
     TString       fMCConfigFile;        // the name of the ConfigFile
     TString       fRecoConfigFile;        // the name of the ConfigFile
 
-    TH2F *fHistEtRecvsEtMC; // Rec vs MC histo 
-    TH2F *fHistEtRecOverEtMC; // Rec over MC histo 
-    TH2F *fHistDiffEtRecEtMCOverEtMC; // Rec - MC over MC histo 
+    TH2F *fHistEtRecvsEtMC; //! Rec vs MC histo 
+    TH2F *fHistEtRecOverEtMC; //! Rec over MC histo 
+    TH2F *fHistDiffEtRecEtMCOverEtMC; //! Rec - MC over MC histo 
 
-    AliESDtrackCuts* fEsdtrackCutsITSTPC; // track cuts ITS&TPC
-    AliESDtrackCuts* fEsdtrackCutsTPC; // track cuts TPC
-    AliESDtrackCuts* fEsdtrackCutsITS; // track cuts ITS
+    AliESDtrackCuts* fEsdtrackCutsITSTPC; //! track cuts ITS&TPC
+    AliESDtrackCuts* fEsdtrackCutsTPC; //! track cuts TPC
+    AliESDtrackCuts* fEsdtrackCutsITS; //! track cuts ITS
 
-    TList *fOutputList; //output list
+    TList *fOutputList; //->output list
     
     TString fPhysSelTaskName; // If we need to access the physics selection task
     TString fCentSelTaskName; // If we need to access the centrality selection task
index 707bdc82bab2e56f3e9ba4b85dbe36f6e1fb269d..bd8155b3106a993f2c967d606aa68d9b0718a767 100644 (file)
@@ -106,8 +106,8 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam
    hadCorrectionEMCAL->SetNeutralCorrection(neutralCorr);
    //Using error from data, see analysis note for details
    if(ispp){
-     hadCorrectionEMCAL->SetNeutralCorrectionLowBound(neutralCorr*(1.0-0.013));
-     hadCorrectionEMCAL->SetNeutralCorrectionHighBound(neutralCorr*(1.0+0.013));
+     hadCorrectionEMCAL->SetNeutralCorrectionLowBound(neutralCorr*(1.0-0.014));
+     hadCorrectionEMCAL->SetNeutralCorrectionHighBound(neutralCorr*(1.0+0.014));
    }
    else{
      hadCorrectionEMCAL->SetNeutralCorrectionLowBound(neutralCorr*(1.0-0.049));
@@ -124,7 +124,6 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam
      hadCorrectionEMCAL->SetNotHadronicCorrectionLowBound(hadronicCorr*(1.0-0.023));
      hadCorrectionEMCAL->SetNotHadronicCorrectionHighBound(hadronicCorr*(1.0+0.023));
    }
-
    float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,ispp,forSim);
    hadCorrectionEMCAL->SetpTCutCorrectionITS(ptcutITS);
    float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,ispp,forSim);
@@ -332,8 +331,8 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam
    hadCorrectionPHOS->SetNeutralCorrection(neutralCorr);
    //Using error from data, see analysis note for details
    if(ispp){
-     hadCorrectionPHOS->SetNeutralCorrectionLowBound(neutralCorr*(1.0-.013));
-     hadCorrectionPHOS->SetNeutralCorrectionHighBound(neutralCorr*(1.0+.013));
+     hadCorrectionPHOS->SetNeutralCorrectionLowBound(neutralCorr*(1.0-.014));
+     hadCorrectionPHOS->SetNeutralCorrectionHighBound(neutralCorr*(1.0+.014));
    }
    else{
      hadCorrectionPHOS->SetNeutralCorrectionLowBound(neutralCorr*(1.0-0.049));
@@ -526,14 +525,14 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam
 Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool ispp, bool forSim, bool TPC, bool hadronic, float etacut, int dataset){
   if(!forSim){//for data we have evaluated the neutral correction from ALICE data
     if(hadronic){//for tot et from had et
-      return 0.581;
+      return 1/0.5665;//0.5665 0.0145 <-- Correct - what should be applied
     }
     else{//for had et only
       if(dataset==2009){
        return 1.0/0.7571;
       }
       else{
-       return 1.0/0.755;
+       return 1.0/0.751;
       }
     }
   }
@@ -823,7 +822,6 @@ TH1D *GetHistoCorrPtCut(float ptcut, char *name, bool ispp, bool forSim, int myc
   int nbins = allhad->GetXaxis()->GetNbins();
   //cout<<"Projecting from "<<allhad->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<allhad->GetXaxis()->GetBinLowEdge(highbin+1)<<endl;
   //cout<<"Projecting from "<<allhad->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<allhad->GetXaxis()->GetBinLowEdge(nbins)<<endl;
-
   //allhad->Sumw2();
   TH1D *numerator;
   TH1D *denominator;
@@ -831,12 +829,12 @@ TH1D *GetHistoCorrPtCut(float ptcut, char *name, bool ispp, bool forSim, int myc
   case -1:
     numerator = ptlow->ProjectionY("nameLow",lowbin,highbin);
     denominator = allhad->ProjectionY("denominatorLow",highbin,nbins);
-    denominator->Add(ptlow);
+    denominator->Add(numerator);
     break;
   case 1:
     numerator = pthigh->ProjectionY("nameHigh",lowbin,highbin);
     denominator = allhad->ProjectionY("denominatorHigh",highbin,nbins);
-    denominator->Add(pthigh);
+    denominator->Add(numerator);
     break;
   default:
     numerator = allhad->ProjectionY("name",lowbin,highbin);
index a2db0752d2df0b6f73e1439bcdf4043bbcf4d356..51419611168571b843ca7d952d1f33897a3b1c9d 100644 (file)
@@ -93,6 +93,7 @@ ClassImp(AliAnalysisTaskFilteredTree)
   , fLowPtV0DownscaligF(0)
   , fProcessAll(kFALSE)
   , fProcessCosmics(kFALSE)
+  , fProcessITSTPCmatchOut(kFALSE)  // swittch to process ITS/TPC standalone tracks
   , fHighPtTree(0)
   , fV0Tree(0)
   , fdEdxTree(0)
@@ -344,7 +345,8 @@ void AliAnalysisTaskFilteredTree::UserExec(Option_t *)
 
   if (fProcessCosmics) { ProcessCosmics(fESD,fESDfriend); }
   if(fMC) { ProcessMCEff(fESD,fMC,fESDfriend);}
-  printf("processed event %i\n", Entry());
+  if (fProcessITSTPCmatchOut) ProcessITSTPCmatchOut(fESD, fESDfriend);
+  printf("processed event %d\n", Entry());
 }
 
 //_____________________________________________________________________________
@@ -2755,3 +2757,189 @@ void AliAnalysisTaskFilteredTree::FillHistograms(AliESDtrack* const ptrack, AliE
     fPtResCentPtTPCc->Fill(ptpcInnerC->Pt(),centralityF,1./abs(ptpcInnerC->GetSigned1Pt())*TMath::Sqrt(ptpcInnerC->GetSigma1Pt2()));
   }
 }
+
+
+void AliAnalysisTaskFilteredTree::ProcessITSTPCmatchOut(AliESDEvent *const esdEvent, AliESDfriend *const esdFriend){
+  //
+  // Process ITS standalone tracks find match with closest TPC(or combined tracks) tracks 
+  // marian.ivanov@cern.ch
+  // 0.) Init variables
+  // 1.) GetTrack parameters at TPC inner wall
+  // 2.) Match closest TPC  track  (STANDALONE/global) - chi2 match criteria
+  //
+  // Logic to be used in reco:
+  // 1.) Find matching ITSalone->TPCalone
+  // 2.) if (!TPCalone.FindClose(TPCother))  TPCalone.Addopt(ITSalone)
+  // 3.) ff ((ITSalone.FindClose(Global)==0) CreateGlobaltrack
+  const Double_t radiusMatch=84.;    // redius to propagate
+  //
+  const Double_t dFastPhiCut=0.2;        // 6 sigma (200 MeV) fast angular cut
+  const Double_t dFastThetaCut=0.12;     // 6 sigma (200 MeV) fast angular cut
+  const Double_t dFastPosPhiCut=0.06;    // 6 sigma (200 MeV) fast angular cut
+  const Double_t dFastZCut=6;            // 6 sigma (200 MeV) fast  z difference cut
+  const Double_t dFastPtCut=2.;          // 6 sigma (200 MeV) fast 1/pt cut 
+  const Double_t chi2Cut=100;            // chi2 matching cut
+  //
+  if (!esdFriend) return;  // not ITS standalone track
+  if (esdFriend->TestSkipBit()) return; // friends tracks  not stored
+  Int_t ntracks=esdEvent->GetNumberOfTracks();
+  Float_t bz = esdEvent->GetMagneticField();
+  //
+  // 0.) Get parameters in reference radius TPC Inner wall
+  //
+  //
+  TMatrixD vecPosR0(ntracks,6);   // possition and  momentum estimate at reference radius  
+  TMatrixD vecMomR0(ntracks,6);   //
+  TMatrixD vecPosR1(ntracks,6);   // possition and  momentum estimate at reference radius TPC track  
+  TMatrixD vecMomR1(ntracks,6);   //
+  Double_t xyz[3], pxyz[3];      //
+  for (Int_t iTrack=0; iTrack<ntracks; iTrack++){
+    AliESDtrack *track = esdEvent->GetTrack(iTrack);   
+    if(!track) continue;
+    if (track->GetInnerParam()){
+      const AliExternalTrackParam *trackTPC=track->GetInnerParam();
+      trackTPC->GetXYZAt(radiusMatch,bz,xyz);
+      trackTPC->GetPxPyPzAt(radiusMatch,bz,pxyz);
+      for (Int_t i=0; i<3; i++){
+       vecPosR1(iTrack,i)=xyz[i];
+       vecMomR1(iTrack,i)=pxyz[i];
+      }
+      vecPosR1(iTrack,3)= TMath::ATan2(xyz[1],xyz[0]);    // phi pos angle
+      vecMomR1(iTrack,3)= TMath::ATan2(pxyz[1],pxyz[0]);  // phi mom angle
+      vecMomR1(iTrack,4)= trackTPC->GetSigned1Pt();;    
+      vecMomR1(iTrack,5)= trackTPC->GetTgl();;    
+    }
+    AliESDfriendTrack* friendTrack=esdFriend->GetTrack(iTrack);
+    if(!friendTrack) continue;
+    if (friendTrack->GetITSOut()){
+      const AliExternalTrackParam *trackITS=friendTrack->GetITSOut();
+      trackITS->GetXYZAt(radiusMatch,bz,xyz);
+      trackITS->GetPxPyPzAt(radiusMatch,bz,pxyz);
+      for (Int_t i=0; i<3; i++){
+       vecPosR0(iTrack,i)=xyz[i];
+       vecMomR0(iTrack,i)=pxyz[i];
+      }
+      vecPosR0(iTrack,3)= TMath::ATan2(xyz[1],xyz[0]);
+      vecMomR0(iTrack,3)= TMath::ATan2(pxyz[1],pxyz[0]);
+      vecMomR0(iTrack,4)= trackITS->GetSigned1Pt();;    
+      vecMomR0(iTrack,5)= trackITS->GetTgl();;    
+    }
+  }
+  //  
+  // 1.) Find closest matching tracks, between the ITS standalone track 
+  // and  the all other tracks
+  //  a.) caltegory  - All
+  //  b.) category   - without ITS 
+  //      
+  //
+  Int_t ntracksPropagated=0;
+  AliExternalTrackParam extTrackDummy;
+  AliESDtrack           esdTrackDummy; 
+  AliExternalTrackParam itsAtTPC;
+  AliExternalTrackParam itsAtITSTPC;
+  for (Int_t iTrack0=0; iTrack0<ntracks; iTrack0++){
+    AliESDtrack *track0 = esdEvent->GetTrack(iTrack0);   
+    if(!track0) continue;
+    if (track0->IsOn(AliVTrack::kTPCin)) continue;
+    AliESDfriendTrack* friendTrack0=esdFriend->GetTrack(iTrack0); 
+    if (!friendTrack0) continue;
+    //if (!track0->IsOn(AliVTrack::kITSpureSA)) continue;
+    //if (!friendTrack0->GetITSOut()) continue;  // is there flag for ITS standalone?
+    ntracksPropagated++;
+    // 
+    // 2.) find clostest TPCtrack
+    //     a.) all tracks
+    Double_t minChi2All=10000000;
+    Double_t minChi2TPC=10000000;
+    Double_t minChi2TPCITS=10000000;
+    Int_t indexAll=-1;
+    Int_t indexTPC=-1;
+    Int_t indexTPCITS=-1;
+    Int_t ncandidates0=0; // n candidates - rough cut
+    Int_t ncandidates1=0; // n candidates - rough + chi2 cut
+    itsAtTPC=*(friendTrack0->GetITSOut());
+    itsAtITSTPC=*(friendTrack0->GetITSOut());
+    for (Int_t iTrack1=0; iTrack1<ntracks; iTrack1++){
+      AliESDtrack *track1 = esdEvent->GetTrack(iTrack1);   
+      if(!track1) continue;
+      if (!track1->IsOn(AliVTrack::kTPCin)) continue;
+      // fast checks
+      //
+      if (TMath::Abs(vecPosR1(iTrack1,2)-vecPosR0(iTrack0,2))>dFastZCut) continue;
+      if (TMath::Abs(vecPosR1(iTrack1,3)-vecPosR0(iTrack0,3))>dFastPosPhiCut) continue;
+      if (TMath::Abs(vecMomR1(iTrack1,3)-vecMomR0(iTrack0,3))>dFastPhiCut) continue;
+      if (TMath::Abs(vecMomR1(iTrack1,5)-vecMomR0(iTrack0,5))>dFastThetaCut) continue;
+      if (TMath::Abs(vecMomR1(iTrack1,4)-vecMomR0(iTrack0,4))>dFastPtCut) continue;
+      ncandidates0++;
+      //
+      const AliExternalTrackParam * param1= track1->GetInnerParam();
+      if (!friendTrack0->GetITSOut()) continue;
+      AliExternalTrackParam outerITS = *(friendTrack0->GetITSOut());
+      if (!outerITS.Rotate(param1->GetAlpha())) continue;
+      if (!outerITS.PropagateTo(param1->GetX(),bz)) continue; // assume track close to the TPC inner wall
+      Double_t chi2 =  outerITS.GetPredictedChi2(param1);
+      if (chi2>chi2Cut) continue;
+      ncandidates1++;
+      if (chi2<minChi2All){
+       minChi2All=chi2;
+       indexAll=iTrack1;
+      }
+      if (chi2<minChi2TPC && track1->IsOn(AliVTrack::kITSin)==0){
+       minChi2TPC=chi2;
+       indexTPC=iTrack1;
+       itsAtTPC=outerITS;
+      }
+      if (chi2<minChi2TPCITS && track1->IsOn(AliVTrack::kITSin)){
+       minChi2TPCITS=chi2;
+       indexTPCITS=iTrack1;
+       itsAtITSTPC=outerITS;
+      }
+    }
+    //
+    AliESDtrack * trackAll= (indexAll>=0)? esdEvent->GetTrack(indexAll):&esdTrackDummy;
+    AliESDtrack * trackTPC= (indexTPC>=0)? esdEvent->GetTrack(indexTPC):&esdTrackDummy;
+    AliESDtrack * trackTPCITS= (indexTPCITS>=0)? esdEvent->GetTrack(indexTPCITS):&esdTrackDummy;
+    (*fTreeSRedirector)<<"itsTPC"<<
+      "indexAll="<<indexAll<<          // index of closest track (chi2)
+      "indexTPC="<<indexTPC<<          // index of closest TPCalone tracks
+      "indexTPCITS="<<indexTPCITS<<    // index of closest cobined tracks
+      "ncandidates0="<<ncandidates0<<  // number of candidates
+      "ncandidates1="<<ncandidates1<<
+      //
+      "chi2All="<<minChi2All<<         // chi2 of closest  tracks
+      "chi2TPC="<<minChi2TPC<<         
+      "chi2TPCITS="<<minChi2TPCITS<<
+      //
+      "track0.="<<track0<<             // ITS standalone tracks
+      "trackAll.="<<trackAll<<         // Closets other track
+      "trackTPC.="<<trackTPC<<         // Closest TPC only track
+      "trackTPCITS.="<<trackTPCITS<<   // closest combined track
+      //
+      "itsAtTPC.="<<&itsAtTPC<<        // ITS track parameters at the TPC alone track  frame
+      "itsAtITSTPC.="<<&itsAtITSTPC<<  // ITS track parameters at the TPC combeined track  frame
+      "\n"; 
+  }
+}
+
+//void AliAnalysisTaskFilteredTree::ProcessTrackMatch(AliESDEvent *const esdEvent, AliESDfriend *const esdFriend){
+/*
+
+Track categories:
+TPC+ITS
+TPC only 
+ITS only
+
+Options:
+-OK
+-Multiple found (check overlap factor)
+-Kink decays - change of direction
+
+To make          - matrix closest tracks from each categories
+Characterization - chi2, index, overlap ratio
+
+New features:
+1.) if (TPConly && !(TPC+ITS) && ITSonly match ) TPCOnly.addoptITS
+2.) if (ITSonly && !(TPC+ITS)) (TPC+ITS).createConbined
+3.) Overlap tracks - doUnfold
+
+*/
index 9500311e0c757834c965855f67c93f7929ed3bd8..946ff6237ed9887ec326d86009ee6bccffaf34fa 100644 (file)
@@ -63,6 +63,8 @@ class AliAnalysisTaskFilteredTree : public AliAnalysisTaskSE {
   void ProcessMCEff(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0);
   void ProcessCosmics(AliESDEvent *const esdEvent=0, AliESDfriend* esdFriend=0); 
 
+  void ProcessITSTPCmatchOut(AliESDEvent *const esdEvent=0,  AliESDfriend *const esdFriend=0);
+
   void SetEventCuts(AliFilteredTreeEventCuts* const cuts)              { fFilteredTreeEventCuts = cuts; }
   void SetAcceptanceCuts(AliFilteredTreeAcceptanceCuts* const cuts)    { fFilteredTreeAcceptanceCuts = cuts; }
   void SetRecAcceptanceCuts(AliFilteredTreeAcceptanceCuts* const cuts) { fFilteredTreeRecAcceptanceCuts = cuts; }
@@ -98,7 +100,11 @@ class AliAnalysisTaskFilteredTree : public AliAnalysisTaskSE {
   
   void   SetProcessCosmics(Bool_t flag) { fProcessCosmics = flag; }
   Bool_t GetProcessCosmics() { return fProcessCosmics; }
+  //
+  void   SetProcessProcessITSTPCmatchOut(Bool_t flag) { fProcessITSTPCmatchOut = flag; }
+  Bool_t GetProcessProcessITSTPCmatchOut() { return fProcessITSTPCmatchOut; }
 
+  
   void SetProcessAll(Bool_t proc) { fProcessAll = proc; }
   static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AliFilteredTreeEventCuts *const evtCuts, AliFilteredTreeAcceptanceCuts *const accCuts);
 
@@ -136,7 +142,8 @@ class AliAnalysisTaskFilteredTree : public AliAnalysisTaskSE {
   Double_t fProcessAll; // Calculate all track properties including MC
   
   Bool_t fProcessCosmics; // look for cosmic pairs from random trigger
-  
+  Bool_t fProcessITSTPCmatchOut;  // swittch to process ITS/TPC standalone tracks
+
   TTree* fHighPtTree;       //! list send on output slot 0
   TTree* fV0Tree;           //! list send on output slot 0
   TTree* fdEdxTree;         //! list send on output slot 0
index 87ce236abc806da84166ac11322387681f70297a..2bc7f81c655e1c21bdab43146497299f7e51fc30 100644 (file)
@@ -27,6 +27,7 @@ ocdbMakeTable(){
         echo "Usage: $0 \$inputFile \$flag \$outputFile"
         return 1
     fi
+    export ALIROOT_FORCE_COREDUMP=1
     local inFile=${1}
     local inFlag=${2}
     local outFile=${3}
@@ -61,6 +62,7 @@ dumpObject(){
 #    $3 type of the dump (XML or MI recursive dump )
 #  Output:
 #    $4 output file name   
+    export ALIROOT_FORCE_COREDUMP=1
     if [ $# -lt 4 ] ; then
         echo "Usage: $0 \$inputFile \$object_name \$dump_type [XML/MI] \$outfile"
         return 1
@@ -107,6 +109,7 @@ diffObject(){
 #    $4 type of the dump (xml or MI recursive dump )
 #  Output:
 #    $5 output diff file name   
+    export ALIROOT_FORCE_COREDUMP=1
     if [ $# -lt 5 ] ; then
         echo "Usage: $0 \$inputFile1 \$inputFile2 \$object_name \$dump_type [XML/MI] \$outfile"
         return 1
@@ -145,7 +148,7 @@ dumpOCDBDiffTable(){
 #   $2  - list 2
 # Output:
 #   difference is stdout
-
+    export ALIROOT_FORCE_COREDUMP=1
     list1=$1
     list2=$2
     shift 2
index bf3ab85e430abf8047a78ace332a35a2b2c1d912..e6f1f851dbb7bc813851422143f8be972c09a426 100644 (file)
@@ -301,7 +301,7 @@ Bool_t AliSingleTrackEffCuts::IsMCParticleGenerated(TObject* obj)
   if(fIsPdgCode && TMath::Abs( particle->PdgCode() )!= fPdgCode) isSelected = kFALSE;
 
   // Charge selection
-  if(fIsCharged && !(particle->Charge()!=0)) isSelected = kFALSE;
+  if(fIsCharged && (particle->Charge()==0)) isSelected = kFALSE;
 
   // Selection of Physical Primary particles
   if(!fisAOD) { // check on ESDs
@@ -588,7 +588,7 @@ Bool_t AliSingleTrackEffCuts::CheckTOFPIDStatus(AliAODTrack *track) const{
   if ((track->GetStatus()&AliESDtrack::kTOFout)==0)   return kFALSE;
   if ((track->GetStatus()&AliESDtrack::kTIME)==0)     return kFALSE;
   if ((track->GetStatus()&AliESDtrack::kTOFpid)==0)   return kFALSE;
-  if (!(track->GetStatus()&AliESDtrack::kTOFmismatch)==0) return kFALSE;
+  if ((track->GetStatus()&AliESDtrack::kTOFmismatch)!=0) return kFALSE;
   return kTRUE;
 }
 
index 76202f5a880545bce0cf30c4bac5fe98430886ac..113fc156f784a48a11ddb0a8126e7a70993903fa 100644 (file)
@@ -165,7 +165,7 @@ void AliMeanVertexCalibTask::UserExec(Option_t *)
   if(alimult) ntrklets = alimult->GetNumberOfTracklets();
   
   const char* beamType = esdE->GetBeamType();
-  Printf("beam type = %s", beamType);
+  // Printf("beam type = %s", beamType);
 
   Bool_t kLowFlux = kTRUE, kHighFlux = kFALSE;
   // TString pp= "p-p";
@@ -175,7 +175,7 @@ void AliMeanVertexCalibTask::UserExec(Option_t *)
   if (beamType == AA){ 
     kHighFlux = kTRUE;
     kLowFlux = kFALSE;
-    Printf ("high flux setting");
+    // Printf ("high flux setting");
     }
   
   AliCDBManager* man = AliCDBManager::Instance();
@@ -183,15 +183,15 @@ void AliMeanVertexCalibTask::UserExec(Option_t *)
   Int_t runNb = esdE->GetRunNumber();
   if (runNb > 0) {
     man->SetRun(runNb);
-    Printf("runNb = %d", runNb);
+    // Printf("runNb = %d", runNb);
   }
   
   AliCDBEntry *entry = (AliCDBEntry*)man->Get("GRP/Calib/RecoParam/");
-  Printf("entry = %p", entry);
+  // Printf("entry = %p", entry);
   TObjArray *arrayRecoParam=0x0;
   if (entry) {
     arrayRecoParam = (TObjArray*)entry->GetObject();
-    Printf("arrayRecoParam = %p", arrayRecoParam);
+    // Printf("arrayRecoParam = %p", arrayRecoParam);
   }
   else { 
     Printf("CDBEntry not found");
@@ -217,7 +217,7 @@ void AliMeanVertexCalibTask::UserExec(Option_t *)
 
   //track vertex recomputed from the vertexer
   AliESDVertex *trkv = vertexer->FindPrimaryVertex(esdE);
-  Printf ("trkv = %p", trkv); 
+  
   //const AliESDVertex *trkv = esdE->GetPrimaryVertexTracks();
   
   //SPD vertex taken from the ESD 
index 58be3d1369d8aaa5f25df4476c2c8fdc0b287e7a..62352018b21b80cab4c1c2b3facc4c7759d46e8e 100755 (executable)
@@ -99,6 +99,9 @@ done
 <a href="MIPattachSlopeC_vs_run.png">Attachment parameter p1, C side</a><br>
 <br>
 <a href="pullPhiConstrain_vs_run.png">Tracking parameter phi</a><br>
+<br>
+<br>
+<a href="prodinfo">Production information</a><br>
 
 </div>
 
index f90372fa0e8608ec30e8feb11eaceb93a3c4f8aa..339fba079887b4ed420568eb1aa6182d699d10d2 100755 (executable)
@@ -1,4 +1,9 @@
 #!/bin/bash
+if [ ${BASH_VERSINFO} -lt 4 ]; then
+  echo "bash version >= 4 needed, you have ${BASH_VERSION}, exiting..."
+  exit 1
+fi
+
 main()
 {
   if [[ -z $1 ]]; then
@@ -10,7 +15,7 @@ main()
     echo "  ${0##*/} configFile=runQA.config inputList=file.list outputDirectory=%det"
     return 1
   fi
+
   if ! parseConfig "$@"; then
     ${0}
     return 1
@@ -161,6 +166,8 @@ updateQA()
       if [[ "$qaFile" =~ .*.zip$ ]]; then
         if unzip -l ${qaFile} | egrep "QAresults.root" &>/dev/null; then
           qaFile="${qaFile}#QAresults.root"
+        elif unzip -l ${qaFile} | egrep "QAresults_barrel.root" &>/dev/null; then
+          qaFile="${qaFile}#QAresults_barrel.root"
         else
           qaFile=""
         fi
@@ -182,7 +189,8 @@ updateQA()
           aliroot -b -q -l "$ALICE_ROOT/PWGPP/macros/simpleTrending.C(\"${qaFile}\",${runNumber},\"${detector}\",\"trending.root\",\"trending\",\"recreate\")" 2>&1 | tee -a runLevelQA.log
         fi
         if [[ -f trending.root ]]; then
-          arrOfTouchedProductions[${tmpProductionDir}]=1
+          #cache the touched production + an example file to guarantee consistent run data parsing
+          arrOfTouchedProductions[${tmpProductionDir}]="${qaFile%\#*}"
         else
           echo "trending.root not created"
         fi
@@ -224,7 +232,7 @@ updateQA()
       for dir in ${tmpProductionDir}/000*; do
         echo 
         oldRunDir=${outputDir}/${dir#${tmpPrefix}}
-        if ! guessRunData "${dir}/dummyName"; then
+        if ! guessRunData "${arrOfTouchedProductions[${tmpProductionDir}]}"; then
           echo "could not guess run data from ${dir}"
           continue
         fi
index 46408dad6f7ed0ee1ac63df684d59b50c2423537..d59bd37495ac991ca16a1a8cec173bd772957c2c 100644 (file)
@@ -259,23 +259,20 @@ void AliPerformanceMatch::ProcessITSTPC(Int_t iTrack, AliESDEvent *const esdEven
     // if(trackTPC->GetTPCNclsIter1()<fCutsRC->GetMinNClustersTPC()) continue;
     tpcTrack2 = AliESDtrackCuts::GetTPCOnlyTrack(esdEvent, jTrack);
     if(!tpcTrack2) continue;
-    if(!tpcTrack2->RelateToVertex(vtxESD,esdEvent->GetMagneticField(),100.)) { delete tpcTrack2; continue; } 
+    if(!tpcTrack2->RelateToVertex(vtxESD,esdEvent->GetMagneticField(),100.)) { delete tpcTrack2; tpcTrack2=0; continue; } 
     
-     if(!fCutsRC->AcceptTrack(tpcTrack2)) { delete tpcTrack2; continue; }
+     if(!fCutsRC->AcceptTrack(tpcTrack2)) { delete tpcTrack2; tpcTrack2=0; continue; }
     // check matching
-    if (TMath::Abs(esdTrack->GetY() - tpcTrack2->GetY()) > 3) { delete tpcTrack2; continue; }
-    if (TMath::Abs(esdTrack->GetSnp() - tpcTrack2->GetSnp()) > 0.2) { delete tpcTrack2; continue; }
-    if (TMath::Abs(esdTrack->GetTgl() - tpcTrack2->GetTgl()) > 0.2) { delete tpcTrack2; continue; }
+    if (TMath::Abs(esdTrack->GetY() - tpcTrack2->GetY()) > 3) { delete tpcTrack2; tpcTrack2=0; continue; }
+    if (TMath::Abs(esdTrack->GetSnp() - tpcTrack2->GetSnp()) > 0.2) { delete tpcTrack2; tpcTrack2=0; continue; }
+    if (TMath::Abs(esdTrack->GetTgl() - tpcTrack2->GetTgl()) > 0.2) { delete tpcTrack2; tpcTrack2=0; continue; }
     
     hasMatch=kTRUE;
     break;
   }
   
   FillHistograms(tpcTrack2,esdTrack,hasMatch);     
-  /*  if(tpcTrack2) { 
-    delete tpcTrack2;
-   
-    }*/
+  delete tpcTrack2;
 }
 
 //_____________________________________________________________________________
index 587db1ed4c4a236a02ac5afca488607592278d1f..507461743f414d3ba24845a804da6db2d4763cdb 100644 (file)
@@ -212,7 +212,7 @@ Bool_t AliTRDcheckTRK::PropagateKalman(AliTRDtrackV1 &t, AliExternalTrackParam *
     return kFALSE;
   }
   if(ref->Pt()<1.e-3) return kFALSE;
-
+  Float_t prod(t.GetBz()*t.Charge());
 
   // Initialize TRD track to the reference
   AliTRDtrackV1 tt;
@@ -239,7 +239,12 @@ Bool_t AliTRDcheckTRK::PropagateKalman(AliTRDtrackV1 &t, AliExternalTrackParam *
       }
     }
     if(HasTrkltRefit()){
-      if(!tr->FitRobust(tt.Charge()>0.)) printf("W - AliTRDcheckTRK::PropagateKalman :: FitRobust() failed for Det[%03d]\n", det);
+      //      if(!tr->FitRobust(tt.Charge()>0.)) printf("W - AliTRDcheckTRK::PropagateKalman :: FitRobust() failed for Det[%03d]\n", det);
+      if(!tr->FitRobust(AliTRDgeometry::GetPadPlane(det), prod>0., tt.Charge())) printf("W - AliTRDcheckTRK::PropagateKalman :: FitRobust() failed for Det[%03d]\n", det);
+      else {
+       TGeoHMatrix *matrix = AliTRDgeometry::GetClusterMatrix(det);
+       if (matrix) tr->SetXYZ(matrix);
+      }
     }
     if(!AliTRDtrackerV1::PropagateToX(tt, tr->GetX0(), fgKalmanStep)) continue;
     if(!tt.GetTrackIn()) tt.SetTrackIn();
index d241bb616d665ef9e2f2c6651b4b824855814238..c182260ddba167c67ddf120ae2145e96409dcf59 100644 (file)
@@ -47,12 +47,40 @@ processHFEQAtask.C
 %+++++++++++++++++++++++++++++++++++++++++++
 processJETrackQA.C
 
+Processes the results of the JE_PWG4HighPtTrackQA wagon. Should be run with the following arguments:
+TString strFileIn   = "AnalysisResults.root" : the path to the input file.
+TString suffix      = "eps"                  : the suffix that determines the output format. For example: eps, pdf, png, etc.
+Int_t cent          = 10                     : the centrality class of the results. Options: 0 (0-10%), 1 (10-30%), 2 (30-50%), 3 (50-80%) and 10 (0-80%). Usually they are published with class 10.
+Int_t trig          = 1                      : linked to the trigger. Default depends on data period: lhc11h: 1, containing lhc12 or lhc13: 5, or else: 6. On doubt one can always referr to the table at the bottom of this paragraph in after checking the AnalysisResults.root file with a browser.
+Bool_t bESD         = kFALSE                 : an obsolete variable. Might be removed in the future.
+Int_t run           = 0                      : enables to add a run number to the plots. Not neccessary for general QA, and can be suppresed by giving the number 0.
+const char *outfile ="JETrackQA_output.root" : the path to the place to store the plots as root file. This is in addition to the image files made with in the 'suffix' format.
+List of triggers:
+  if(trig==1) strTrigger = "kCentral";
+  if(trig==2) strTrigger = "kSemiCentral";
+  if(trig==3) strTrigger = "kMBkCentralkSemiCentral";
+  if(trig==4) strTrigger = "kEMCEJE";
+  if(trig==5) strTrigger = "kINT7";
+  if(trig==6) strTrigger = "kMB";
+
 %+++++++++++++++++++++++++++++++++++++++++++
 processJETriggerQA.C
 
+This is an old version of the macro. Use V2 if possible. Only use this for old results.
+
 %+++++++++++++++++++++++++++++++++++++++++++
 processJETriggerQA_V2.C
 
+Processes the results of the JE_TriggerQAFullR020 wagon, and if present, can also be used for the results of the JE_TriggerQAFullR020_EMCEGA and JE_TriggerQAFullR020_EMCEJE wagon. Should be run with the following arguments:
+TString strFileIn    = "AnalysisResults.root"      : the path to the input file.
+TString suftype      ="eps"                        : the suffix that deternmines the output format. For example: eps, pdf, png, etc.
+Float_t jetR         = 0.2                         : the jetR. Default train value is 0.2, but can otherwise be found by opening the AnalysisResults.root file with the browser.
+Float_t minTrkPT     = 0.15                        : the lower Track momentum cut-off. Default train value is 0.15, but can otherwise be found by opening the AnalysisResults.root file with the browser.
+Float_t minClusterET = 0.3                         : the lower Cluster energy cut-off. Default train value is 0.3, but can otherwise be found by opening the AnalysisResults.root file with the browser.
+Int_t run            = 0                           : enables to add a run number to the plots. Not neccessary for general QA, and can be suppresed by giving the number 0.
+TString trigsuffix   = ""                          : leave empty to open the results of the JE_TriggerQAFullR020 wagon, but or use "EJE" or "EGA" to use the triggered results otherwise.
+const char* outfile  = "JETriggerQA_outfile.root"  : the path to the place to store the plots as root file. This is in addition to the image files made with in the 'suffix' format.
+
 %+++++++++++++++++++++++++++++++++++++++++++
 processJpsi2eeQAplots.C
 
index 373333da56a594035f4ca3f97b003607053c3194..c0f2eee6a9eea5388d1b42cc132ba71d495448f9 100755 (executable)
@@ -277,8 +277,8 @@ goCPass0()
   # [dberzano] OK this is fine!
   echo rm -f ./${chunkName}
   rm -f ./${chunkName}
-  echo "cp -R ${runpath}/* ${outputDir}"
-  cp -p -R ${runpath}/* ${outputDir}
+  echo "paranoidCp ${runpath}/* ${outputDir}"
+  paranoidCp ${runpath}/* ${outputDir}
   echo
   
   #validate CPass0
@@ -572,8 +572,8 @@ goCPass1()
   /bin/ls
   echo rm -f ./${chunkName}
   rm -f ./${chunkName}
-  echo "cp -R ${runpath}/* ${outputDir}"
-  cp -pf -R ${runpath}/* ${outputDir}
+  echo "paranoidCp ${runpath}/* ${outputDir}"
+  paranoidCp ${runpath}/* ${outputDir}
   echo
 
   #validate CPass1
@@ -747,7 +747,8 @@ goMergeCPass0()
   /bin/ls
 
   #copy all to output dir
-  cp -pf -R ${runpath}/* ${outputDir}
+  echo "paranoidCp ${runpath}/* ${outputDir}"
+  paranoidCp ${runpath}/* ${outputDir}
 
   if [[ -n ${generateMC} ]]; then
     goPrintValues sim ${commonOutputPath}/meta/sim.run${runNumber}.list ${commonOutputPath}/meta/cpass0.job*.run${runNumber}.done
@@ -950,7 +951,8 @@ goMergeCPass1()
   /bin/ls
 
   #copy all to output dir
-  cp -pf -R ${runpath}/* ${outputDir}
+  echo "paranoidCp ${runpath}/* ${outputDir}"
+  paranoidCp ${runpath}/* ${outputDir}
   
   #validate merge cpass1
   cd ${outputDir}
@@ -2393,10 +2395,10 @@ done
   cp "$logTmp" "$logDest" || rm -f "$logTmp" "$logDest"
   
   #copy output files
-  cp -r QAplots ${commonOutputPath}
-  cp *.list ${commonOutputPath}
-  cp *.root ${commonOutputPath}
-  cp *.log ${commonOutputPath}
+  paranoidCp QAplots ${commonOutputPath}
+  paranoidCp *.list ${commonOutputPath}
+  paranoidCp *.root ${commonOutputPath}
+  paranoidCp *.log ${commonOutputPath}
 
   return 0
 )
@@ -2601,6 +2603,49 @@ aliroot()
   return 0
 }
 
+paranoidCp()
+(
+  #recursively copy files and directories
+  #to avoid using find and the like as they kill
+  #the performance on some cluster file systems
+  #does not copy links to avoid problems
+  sourceFiles=("${@}")
+  destination="${sourceFiles[@]:(-1)}" #last element
+  unset sourceFiles[${#sourceFiles[@]}-1] #remove last element (dst)
+  for src in "${sourceFiles[@]}"; do
+    if [[ -f "${src}" && ! -h  "${src}" ]]; then
+      paranoidCopyFile "${src}" "${destination}"
+    elif [[ -d "${src}" && ! -h "${src}" ]]; then
+      src="${src%/}"
+      dst="${destination}/${src##*/}"
+      mkdir -p "${dst}"
+      paranoidCp "${src}"/* "${dst}"
+    fi
+  done
+)
+
+paranoidCopyFile()
+(
+  #copy a single file to a target in an existing dir
+  #repeat a few times if copy fails
+  src="${1}"
+  dst="${2}"
+  [[ -d "${dst}" ]] && dst="${dst}/${src##*/}"
+  [[ -z "${maxCopyTries}" ]] && maxCopyTries=5
+  echo "maxCopyTries=${maxCopyTries}"
+  echo "cp ${src} ${dst}"
+  cp "${src}" "${dst}"
+  i=0
+  until cmp -s "${src}" "${dst}"; do
+    echo "try: ${i}"
+    [[ -f "${dst}" ]] && rm "${dst}"
+    cp "${src}" "${dst}"
+    [[ ${i} -gt ${maxCopyTries} ]] && ret=1 && return 1
+    (( i++ ))
+  done
+  return 0
+)
+
 guessRunData()
 {
   #guess the period from the path, pick the rightmost one
index eccf0f72495e1cb1fdee6a086f26076b3a171da8..abfcc526a7c9155818b500270c77c2c15e36f0d7 100644 (file)
@@ -130,6 +130,8 @@ AliGenPythia::AliGenPythia():
     fTriggerMaxPt(1000),  
     fTriggerMultiplicity(0),
     fTriggerMultiplicityEta(0),
+    fTriggerMultiplicityEtaMin(0),
+    fTriggerMultiplicityEtaMax(0),
     fTriggerMultiplicityPtMin(0),
     fCountMode(kCountAll),      
     fHeader(0),  
@@ -248,6 +250,8 @@ AliGenPythia::AliGenPythia(Int_t npart)
      fTriggerMaxPt(1000),      
      fTriggerMultiplicity(0),
      fTriggerMultiplicityEta(0),
+     fTriggerMultiplicityEtaMin(0),
+     fTriggerMultiplicityEtaMax(0),
      fTriggerMultiplicityPtMin(0),
      fCountMode(kCountAll),      
      fHeader(0),  
@@ -1053,6 +1057,10 @@ Int_t  AliGenPythia::GenerateMB()
        // eta cut
        if (fTriggerMultiplicityEta > 0 && TMath::Abs(iparticle->Eta()) > fTriggerMultiplicityEta)
          continue;
+       //multiplicity check for a given eta range
+       if ((fTriggerMultiplicityEtaMin != fTriggerMultiplicityEtaMax) && 
+           (iparticle->Eta() < fTriggerMultiplicityEtaMin || iparticle->Eta() > fTriggerMultiplicityEtaMax))
+         continue;
        // pt cut
        if (iparticle->Pt() < fTriggerMultiplicityPtMin) 
            continue;
index 99fbf85afef72a4ff41454537a2ec86cadfa6fd5..730676b60aeac44bff5ad6e07480edc66348a232 100644 (file)
@@ -148,7 +148,12 @@ class AliGenPythia : public AliGenMC
     virtual void  SetTriggerChargedMultiplicity(Int_t multiplicity, Float_t etamax = 0, Float_t ptmin = -1.) 
     {fTriggerMultiplicity = multiplicity; fTriggerMultiplicityEta = etamax; 
       fTriggerMultiplicityPtMin = ptmin;}
-       
+    
+    // Trigger on a minimum multiplicity for a given eta range
+    virtual void  SetTriggerMultiplicityEtaRange(Int_t multiplicity, Float_t etamin = 0., Float_t etamax = 0., Float_t ptmin = -1.) 
+    {fTriggerMultiplicity = multiplicity; fTriggerMultiplicityEtaMin = etamin; fTriggerMultiplicityEtaMax = etamax; 
+      fTriggerMultiplicityPtMin = ptmin;}
+    
     // Calorimeters acceptance
     // Set Phi in degrees, and Eta coverage, should not be negative
     virtual void  SetBarrelAcceptance(Float_t deta) {fTriggerEta = deta ;}
@@ -339,6 +344,8 @@ class AliGenPythia : public AliGenMC
     Float_t fTriggerMaxPt;          // .. within pt < fTriggerMaxPt
     Int_t       fTriggerMultiplicity;       // Trigger on events with a minimum charged multiplicity
     Float_t     fTriggerMultiplicityEta;    // in a given eta range
+    Float_t     fTriggerMultiplicityEtaMin;    // in a given eta min
+    Float_t     fTriggerMultiplicityEtaMax;    // in a given eta max
     Float_t     fTriggerMultiplicityPtMin;  // above this pT 
     CountMode_t fCountMode;         // Options for counting when the event will be finished.     
     // fCountMode = kCountAll         --> All particles that end up in the
index 1a1cbf6b27a3d20bded2232243176e537f75affb..041010858d82b40c33a757b3f76ccfe8fb552bf6 100644 (file)
@@ -80,6 +80,7 @@ class AliCDBId: public TObject {
     void Print(Option_t* option="") const;
     virtual Int_t Compare(const TObject* obj) const;
     virtual Bool_t IsSortable() const;
+    virtual const char  *GetName() const { return fPath.GetPath().Data(); }
   private:
 
     AliCDBPath fPath;          // path 
index 26e754dba3a6be2239aee79767283aeed44915cd..0f30619e0ac921b909f66c1763a5972cf2347e83 100644 (file)
@@ -18,7 +18,6 @@
 //   e-mail: Alberto.Colla@cern.ch
 //-------------------------------------------------------------------------
 
-#include <stdlib.h>
 #include <fstream>
 
 #include "AliCDBManager.h"
@@ -104,10 +103,12 @@ void AliCDBManager::InitFromCache(TMap *entryCache, Int_t run) {
 }
 
 //_____________________________________________________________________________
-void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys){
+void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys) const {
 //
-// dump the entries map and the ids list to
-// the output file
+// If singleKeys is true, dump the entries map and the ids list to the snapshot file
+// (provided mostly for historical reasons, the file is then read with InitFromSnapshot),
+// otherwise write to file each AliCDBEntry separately (the is the preferred way, the file
+// is then read with SetSnapshotMode).
 
   // open the file
   TFile *f = TFile::Open(snapshotFileName,"RECREATE");
@@ -120,16 +121,11 @@ void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t sin
   AliInfo(Form("Dumping entriesList with %d entries!\n", fIds->GetEntries()));
 
   f->cd();
-
   if(singleKeys){
     f->WriteObject(&fEntryCache,"CDBentriesMap");
     f->WriteObject(fIds,"CDBidsList");
   }else{
     // We write the entries one by one named by their calibration path
-    /*
-       fEntryCache.Write("CDBentriesMap");
-       fIds->Write("CDBidsList");
-       */
     TIter iter(fEntryCache.GetTable());
     TPair* pair = 0;
     while((pair = dynamic_cast<TPair*> (iter.Next()))){
@@ -144,8 +140,28 @@ void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t sin
   }
   f->Close();
   delete f;
+}
+
+//_____________________________________________________________________________
+void  AliCDBManager::DumpToLightSnapshotFile(const char* lightSnapshotFileName) const {
+// The light snapshot does not contain the CDB objects (AliCDBEntries) but
+// only the information identifying them, that is the map of storages and
+// the list of AliCDBIds, as in the UserInfo of AliESDs.root
 
-  exit(0);
+  // open the file
+  TFile *f = TFile::Open(lightSnapshotFileName,"RECREATE");
+  if (!f || f->IsZombie()){
+    AliError(Form("Cannot open file %s",lightSnapshotFileName));
+    return;
+  }
+
+  AliInfo(Form("Dumping map of storages with %d entries!\n", fStorageMap->GetEntries()));
+  AliInfo(Form("Dumping entriesList with %d entries!\n", fIds->GetEntries()));
+  f->WriteObject(fStorageMap,"cdbStoragesMap");
+  f->WriteObject(fIds,"CDBidsList");
+
+  f->Close();
+  delete f;
 }
 
 //_____________________________________________________________________________
@@ -1015,9 +1031,7 @@ AliCDBEntry* AliCDBManager::Get(const AliCDBId& query, Bool_t forceCaching) {
     fIds->Add(entry->GetId().Clone());
   }
 
-
   return entry;
-
 }
 
 //_____________________________________________________________________________
index 36f4d53b0589b98cfc0b1314ef8be0d917e43580..118d3e068e0e5fc3d224682fcd46abe939e9ee6d 100644 (file)
@@ -127,7 +127,8 @@ class AliCDBManager: public TObject {
     Bool_t InitFromSnapshot(const char* snapshotFileName, Bool_t overwrite=kTRUE);
     Bool_t SetSnapshotMode(const char* snapshotFileName="OCDB.root");
     void UnsetSnapshotMode() {fSnapshotMode=kFALSE;}
-    void DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys);
+    void DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys) const;
+    void DumpToLightSnapshotFile(const char* lightSnapshotFileName) const;
 
     Int_t GetStartRunLHCPeriod();
     Int_t GetEndRunLHCPeriod();
index bf228c492e2008f132d95348e53f17a6b632d814..b5cbd2197b91e80d9306b800a1456d256919a279 100644 (file)
 
   Example usage:
   AliOCDBtoolkit::MakeDiffExampleUseCase();
+  or from the AliOCDBtoolkit.sh in propmpt
+  ocdbMakeTable AliESDs.root ESD OCDBrec.list
+  ocdbMakeTable galice.root MC OCDBsim.list
+
+  
+   
 
 
 
 
 */
 
+/*
+  To check:
+  1.) Verify hash value uasge as and MD5 sum - 
+
+ */
 
 using namespace std;
 
@@ -106,7 +117,7 @@ void AliOCDBtoolkit::MakeDiffExampleUseCase(){
   //    - AliESDs.root
   //
   AliCDBManager * man = AliCDBManager::Instance();
-  LoadOCDBFromLog("rec.log",0);
+  AliOCDBtoolkit::LoadOCDBFromLog("rec.log",0);
   const TMap *cdbMapLog= man->GetStorageMap();        // this is map of 
   const TList *cdbListLog=man->GetRetrievedIds();     // this is list of AliCDBId
   //  TList *cdbListLog0=man->GetRetrievedIds();     // this is list of AliCDBId
@@ -114,13 +125,13 @@ void AliOCDBtoolkit::MakeDiffExampleUseCase(){
   TFile *fmc = TFile::Open("galice.root");
   TMap *cdbMapMC= (TMap*)fmc->Get("cdbMap");          // 
   TList *cdbListMC0= (TList*)fmc->Get("cdbList");     // this is list of TObjStrings
-  TList *cdbListMC = ConvertListStringToCDBId(cdbListMC0);        // convert to the TObjArray of AliCDBids
+  TList *cdbListMC = AliOCDBtoolkit::ConvertListStringToCDBId(cdbListMC0);        // convert to the TObjArray of AliCDBids
   //
   TFile *fesd = TFile::Open("AliESDs.root");
   TList *listESD = ((TTree*)fesd->Get("esdTree"))->GetUserInfo();
   TMap *cdbMapESD= (TMap*)listESD->FindObject("cdbMap");  
   TList *cdbListESD0= (TList*)listESD->FindObject("cdbList"); // this is list of TObjStrings
-  TList *cdbListESD = ConvertListStringToCDBId(cdbListESD0);              // convert to the TObjArray  of AliCDBids
+  TList *cdbListESD = AliOCDBtoolkit::ConvertListStringToCDBId(cdbListESD0);              // convert to the TObjArray  of AliCDBids
   //
   //
   //
@@ -142,26 +153,41 @@ void AliOCDBtoolkit::DumpOCDBAsTxt(const TString fInput, const TString fType, co
   //
   //
   TFile *file;
-  const TMap *cdbMap;
-  const TList *cdbList;
+  const TMap *cdbMap=0;
+  const TList *cdbList=0;
   //
   //
-  
+  AliCDBManager * man = AliCDBManager::Instance();
+
   if(fType.EqualTo("MC",TString::kIgnoreCase)){
         file = TFile::Open(fInput.Data());
-        cdbMap = (TMap*)file->Get("cdbMap");          // 
+        cdbMap = (TMap*)file->Get("cdbMap");
+       if (!cdbMap){
+         printf("cdbMap does not exist in input file\t%s. Exiting\n",fInput.Data());
+         return;
+       }
+       // 
+       man->SetDefaultStorage(((TPair*)cdbMap->FindObject("default"))->Value()->GetName());
         TList *cdbListMC0 = (TList*)file->Get("cdbList");     // this is list of TObjStrings
-        cdbList = ConvertListStringToCDBId(cdbListMC0);        // convert to the TObjArray of AliCDBids
+        cdbList = AliOCDBtoolkit::ConvertListStringToCDBId(cdbListMC0);        // convert to the TObjArray of AliCDBids
   } 
     else if(fType.EqualTo("ESD",TString::kIgnoreCase)){
       file = TFile::Open(fInput.Data());
+      if (!file) {
+       printf("Input file  does not exist %s. Exiting\n",fInput.Data());
+       return;
+      }
       TList *listESD = ((TTree*)file->Get("esdTree"))->GetUserInfo();
       cdbMap = (TMap*)listESD->FindObject("cdbMap");  
+      if (!cdbMap){
+       printf("cdbMap does not exist in input file\t%s. Exiting\n",fInput.Data());
+       return;
+      }
+      man->SetDefaultStorage(((TPair*)cdbMap->FindObject("default"))->Value()->GetName());
       TList *cdbListESD0= (TList*)listESD->FindObject("cdbList"); // this is list of TObjStrings
       cdbList = ConvertListStringToCDBId(cdbListESD0);              // convert to the TObjArray  of AliCDBids
     }
     else if(fType.EqualTo("log",TString::kIgnoreCase)){
-        AliCDBManager * man = AliCDBManager::Instance();
         LoadOCDBFromLog(fInput.Data(),0);
         cdbMap = man->GetStorageMap();        // this is map of 
         cdbList =man->GetRetrievedIds();     // this is list of AliCDBId
@@ -176,7 +202,7 @@ void AliOCDBtoolkit::DumpOCDBAsTxt(const TString fInput, const TString fType, co
 
 
 Bool_t AliOCDBtoolkit::ParseInfoFromOcdbString(TString ocdbString, TString &ocdbPath, Int_t &run0, Int_t &run1, Int_t &version, Int_t &subVersion){
-  //
+  // Functionalit
   // Parse OCDB id string and provide basic ocdb information
   //
   //  a.) parse ocdbPath
@@ -239,7 +265,7 @@ TList  * AliOCDBtoolkit::ConvertListStringToCDBId(const TList *cdbList0){
       if (isString){
        TObjString* sid0 = dynamic_cast<TObjString*> (cdbList0->At(ientry0));
        Bool_t status =  ParseInfoFromOcdbString(sid0->String(), tmp0);
-       if (!status) continue;
+       if (!status) continue; 
        array0->AddLast(new AliCDBId(tmp0));
       }
     }
@@ -327,25 +353,66 @@ void AliOCDBtoolkit::LoadOCDBFromLog(const char *logName, Int_t verbose){
   }
 }
 
-
-void AliOCDBtoolkit::LoadOCDBFromMap(const TMap */*cdbMap*/, const TList */*cdbList*/){
+void  AliOCDBtoolkit::SetStorage(const TMap *cdbMap){
+  //
+  // Set storages as speified in the map - TO CHECK.. Should go to the AliCDBmanager if not alreadyhhere
+  //   
+  AliCDBManager * man = AliCDBManager::Instance();  
+  TIter iter(cdbMap->GetTable());
+  TPair* aPair=0;
+  while ((aPair = (TPair*) iter.Next())) {
+    //    aPair->Value();
+    //aPair->Print();
+    if (TString(aPair->GetName())=="default") man->SetDefaultStorage(aPair->Value()->GetName());
+    else
+      man->SetSpecificStorage(aPair->GetName(), aPair->Value()->GetName());
+  }  
+}
+void AliOCDBtoolkit::LoadOCDBFromMap(const TMap *cdbMap, const TList *cdbList){
   //
   // Initilaize OCDB
   // Load OCDB setting as specified in maps
-  // Or Do we have already implementation in AliCDBanager?
+  // Or Do we have already implementation in AliCDBanager?  TO CHECK.. Should go to the AliCDBmanager if not alreadyhhere
+  AliCDBManager * man = AliCDBManager::Instance();  
+  AliOCDBtoolkit::SetStorage(cdbMap);  
+  TIter iter(cdbList);
+  TObjString *ocdbString=0;
+  while (( ocdbString= (TObjString*) iter.Next())) {
+    AliCDBId* cdbId = AliCDBId::MakeFromString(ocdbString->String());
+    try {
+      //      AliCDBEntry * cdbEntry = (AliCDBEntry*) man->Get(*cdbId,kTRUE);
+      man->Get(*cdbId,kTRUE);
+    } catch(const exception &e){
+      cerr << "OCDB retrieval failed!" << endl;
+      cerr << "Detailes: " << e.what() << endl;
+    }   
+  }    
 }
 
+void AliOCDBtoolkit::LoadOCDBFromESD(const char *fname){
+  //
+  // Load OCDB setup from the ESD file
+  // 
+  TFile * fesd = TFile::Open(fname);
+  TList *listESD = ((TTree*)fesd->Get("esdTree"))->GetUserInfo();
+  TMap *cdbMapESD= (TMap*)listESD->FindObject("cdbMap");  
+  TList *cdbListESD0= (TList*)listESD->FindObject("cdbList"); // this is list of TObjStrings
+  AliOCDBtoolkit::SetStorage(cdbMapESD); 
+  AliOCDBtoolkit::LoadOCDBFromMap(cdbMapESD, cdbListESD0);
+}
 
 
-void AliOCDBtoolkit::MakeDiff(const TMap */*cdbMap0*/, const TList *cdbList0, const TMap */*cdbMap1*/, const TList *cdbList1, Int_t /*verbose*/){
+void AliOCDBtoolkit::MakeDiff(const TMap *cdbMap0, const TList *cdbList0, const TMap */*cdbMap1*/, const TList *cdbList1, Int_t /*verbose*/){
   //
   //
   // Print difference between the 2 ocdb maps
   // Input:
   //   maps and list charactireizing OCDB setup  
   // Output:
-  //   To be decided, currently it is the teinal output
+  //   To be decided.
   //
+  AliOCDBtoolkit::SetStorage(cdbMap0);
   Int_t entriesList0=cdbList0->GetEntries();
   Int_t entriesList1=cdbList1->GetEntries();
   //
@@ -388,16 +455,16 @@ void AliOCDBtoolkit::DumpOCDB(const TMap *cdbMap0, const TList *cdbList0, const
   // TPC/Calib/RecoParam /hera/alice/jwagner/software/aliroot/AliRoot_TPCdev/OCDB/ TPC/Calib/RecoParam/Run0_999999999_v0_s0.root $SIZE_AliCDBEntry_Object $HASH_AliCDBEntry_Object
   
   AliCDBManager * man = AliCDBManager::Instance();
-  
+  AliOCDBtoolkit::SetStorage(cdbMap0);  
   TList * cdbList = (TList*) cdbList0;   // sorted array
   cdbList->Sort();
 
   TIter next(cdbList);
-  AliCDBId *CDBId;
-  TString cdbName;
-  TString cdbPath;
+  AliCDBId *CDBId=0;
+  TString cdbName="";
+  TString cdbPath="";
   TObjString *ostr;
-  AliCDBEntry *cdbEntry;
+  AliCDBEntry *cdbEntry=0;
   UInt_t hash;
   TMessage * file;
   Int_t size; 
@@ -409,8 +476,19 @@ void AliOCDBtoolkit::DumpOCDB(const TMap *cdbMap0, const TList *cdbList0, const
     if(!ostr) ostr = (TObjString*)cdbMap0->GetValue("default");
     cdbPath = ostr->GetString();
     if(cdbPath.Contains("local://"))cdbPath=cdbPath(8,cdbPath.Length()).Data();
-    
-    cdbEntry = (AliCDBEntry*) man->Get(*CDBId);
+    try {
+      cdbEntry = (AliCDBEntry*) man->Get(*CDBId,kTRUE);
+    }catch(const exception &e){
+      cerr << "OCDB retrieval failed!" << endl;
+      cerr << "Detailes: " << e.what() << endl;
+      hash=0;
+      size=-1;
+    }  
+    if (!cdbEntry) {
+      printf("Object not avaliable\n");
+      CDBId->Print();
+      continue;
+    }
     TObject *obj = cdbEntry->GetObject();
     file = new TMessage(TBuffer::kWrite);
     file->WriteObject(obj);
@@ -670,8 +748,8 @@ void DumpTObjectArray(){
 Bool_t AliOCDBtoolkit::AddoptOCDBEntry( const char *finput, const char *output,  Int_t ustartRun, Int_t uendRun){
   //
   // Addopt OCDB entry - keeping all of the CDBentry quantities
-  // finput = "/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual/TPC/Calib/ClusterParam/Run127712_130850_v4_s0.root"
-  
+  // // Example usage: 
+  //  AliOCDBtoolkit::AddoptOCDBEntry("/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual/TPC/Calib/ClusterParam/Run127712_130850_v4_s0.root",0,0,AliCDBRunRange::Infinity())
   TFile * fin = TFile::Open(finput);
   if (!fin) return kFALSE;
   AliCDBEntry * entry = (AliCDBEntry*) fin->Get("AliCDBEntry");
@@ -699,3 +777,14 @@ Bool_t AliOCDBtoolkit::AddoptOCDBEntry( const char *finput, const char *output,
   pocdbStorage->Put(entry->GetObject(), (*id1), metaData);
   return kTRUE;
 }
+
+
+void AliOCDBtoolkit::MakeSnapshotFromTxt(const TString fInput, const TString outfile, Bool_t singleKeys){
+  //
+  // Make snasphot form the txt file
+  //
+  AliCDBManager * man = AliCDBManager::Instance();
+  LoadOCDBFromList(fInput.Data());
+  man->DumpToSnapshotFile(outfile.Data(), singleKeys);
+
+}
index 415c88f88ed8db4bfc55009a7ea8a77333e90ce3..e46a3420a147ba057c98cb59157b05b72f2fc65d 100644 (file)
@@ -12,28 +12,31 @@ class TMemStatManager;
 using std::fstream;
 
 class AliOCDBtoolkit : public TObject {
-public:
-  //AliOCDBtoolkit();
-  //static AliOCDBtoolkit * Instance();
-  
+public:  
   static void MakeDiffExampleUseCase();    // example usage
   static void DumpOCDBAsTxt(const TString fInput,const TString fType, const TString outfile);
+  static void MakeSnapshotFromTxt(const TString fInput,const TString outfile, Bool_t singleKeys); 
   //
   static Bool_t   ParseInfoFromOcdbString(TString ocdbString, TString &ocdbPath, Int_t &run0, Int_t &run1, Int_t &version, Int_t &subVersion);   
   static Bool_t   ParseInfoFromOcdbString(TString ocdbString, AliCDBId &cdbId);
+  static TList  * ConvertListStringToCDBId(const TList */*cdbList0*/);   
   //
-  static TList  * ConvertListStringToCDBId(const TList *cdbList0); 
-  
-  static void LoadOCDBFromLog(const char *logName, Int_t verbose);
+  // Load OCDB entries 
+  //
+  static void SetStorage(const TMap *cdbMap0);   
   static void LoadOCDBFromMap(const TMap *cdbMap, const TList *cdbList);
-  static void MakeDiff(const TMap *cdbMap0, const TList *cdbList0, const TMap *cdbMap1, const TList *cdbList1, Int_t verbose);
-  static void DumpOCDB(const TMap *cdbMap0, const TList *cdbList0, const TString outfile);
+  static void LoadOCDBFromLog(const char *logName, Int_t verbose);
+  static void LoadOCDBFromESD(const char *fname="AliESDs.root");
+  static void LoadOCDBFromList(const char */*ocdbList*/){;} // to be implemented  
+
   //
-  // dump object functionality
+  // Dump object functionality
   //  
+  static void DumpOCDB(const TMap *cdbMap0, const TList *cdbList0, const TString outfile);
   static void DumpObjectRecursive(TObject *obj);
   static void DumpObjectRecursive(TObject *obj, TString prefix, Int_t &counterRec);
   static void DumpOCDBFile(const char *finput , const char *foutput, Bool_t dumpMetaData, Bool_t xml);
+  static void MakeDiff(const TMap *cdbMap0, const TList *cdbList0, const TMap *cdbMap1, const TList *cdbList1, Int_t verbose);
   //
   // addopt OCDB entry
   //
index 843730f429e06ae2a064eba552e1461d53f4df0f..344c4970b07fd92d49519b588c400551de350b9f 100644 (file)
@@ -146,30 +146,30 @@ Bool_t AliCTPRawStream::GetPayloadRun2(UChar_t *data)
 
   fClassMaskNext50 =  ((ULong64_t)data[16] & 0xf) << 46;   // 100..97
 
-  fClassMaskNext50 |= (ULong64_t)data[20] << 38;           // 96..89
-  fClassMaskNext50 |= ((ULong64_t)data[21] & 0xF) << 34;   // 88..85
+  fClassMaskNext50 |= ((ULong64_t)data[21] & 0xF) << 42;   // 96..93
+  fClassMaskNext50 |= (ULong64_t)data[20] << 34;           // 92..85
 
-  fClassMaskNext50 |= (ULong64_t)data[24] << 26;           //84..77
-  fClassMaskNext50 |= ((ULong64_t)data[25] & 0xF) << 22;   //76..73
+  fClassMaskNext50 |= ((ULong64_t)data[25] & 0xF) << 30;   //84..81
+  fClassMaskNext50 |= (ULong64_t)data[24] << 22;           //80..73
 
-  fClassMaskNext50 |= (ULong64_t)data[28] << 14;           //72..65   
-  fClassMaskNext50 |= ((ULong64_t)data[29] & 0xF) << 10;   //64..61
+  fClassMaskNext50 |= ((ULong64_t)data[29] & 0xF) << 18;   //72..69
+  fClassMaskNext50 |= (ULong64_t)data[28] << 10;           //68..61   
 
-  fClassMaskNext50 |= (ULong64_t)data[32] << 2;            //60..53
-  fClassMaskNext50 |= ((ULong64_t)data[33] & 0xc) >> 2;    //52..51
-  fClassMask       = ((ULong64_t)data[33] & 0x3) << 48;    //50..49
+  fClassMaskNext50 |= ((ULong64_t)data[33] & 0xf ) << 6;   //60..57
+  fClassMaskNext50 |= ((ULong64_t)data[32] & 0xfc )>> 2;   //56..51
+  fClassMask        = ((ULong64_t)data[32] & 0x3 ) << 48;  //50..49
 
-  fClassMask |= (ULong64_t)data[36]  << 40;                //48..41
-  fClassMask |= ((ULong64_t)data[37] & 0xf) << 36;         //40..37
+  fClassMask |= ((ULong64_t)data[37] & 0xf) << 44;         //48..45
+  fClassMask |= (ULong64_t)data[36]  << 36;                //44..37
 
-  fClassMask |= (ULong64_t)data[40]  << 28;                //36..29
-  fClassMask |= ((ULong64_t)data[41] & 0xf) << 24;         //28..25
+  fClassMask |= ((ULong64_t)data[41] & 0xf) << 32;         //36..33
+  fClassMask |= (ULong64_t)data[40]  << 24;                //32..25
 
-  fClassMask |= (ULong64_t)data[44]  << 16;                //24..17
-  fClassMask |= ((ULong64_t)data[45] & 0xf) << 12;         //16..13
+  fClassMask |= ((ULong64_t)data[45] & 0xf) << 20;         //24..21
+  fClassMask |= (ULong64_t)data[44]  << 12;                //20..13
 
-  fClassMask |= (ULong64_t)data[48]  << 4;                //12..5
-  fClassMask |= ((ULong64_t)data[49] & 0xf) << 0;         //4..1
+  fClassMask |= ((ULong64_t)data[49] & 0xf) << 8;         //12..9
+  fClassMask |= (ULong64_t)data[48]  << 0;                //8..1
 
   if (fRawReader->GetDataSize() == 52) {
     AliDebug(1,"No trigger input and interaction records found");
index c1b8bbb6c27aac4b88a7b1a04a2cf035fa46a9b0..c21aa1ebbd11d9f4dc1dd9aa3854ffa6f490f626 100644 (file)
 #include "AliLHCData.h"
 #include "ARVersion.h"
 #include <RVersion.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <sys/resource.h>
 ClassImp(AliReconstruction)
@@ -1695,9 +1696,7 @@ void AliReconstruction::Begin(TTree *)
   if(toCDBSnapshot)
   {
       AliCDBManager::Instance()->DumpToSnapshotFile(snapshotFileOut.Data(),kFALSE);
-      AliCDBManager::Instance()->UnloadFromCache("*/Align/*");
-      if(cdbCache->Contains("GRP/Calib/CosmicTriggers"))
-         AliCDBManager::Instance()->UnloadFromCache("GRP/Calib/CosmicTriggers");
+      exit(0);
   }
 
   if (fInput && gProof) {
index af92d3dce88b1b1c2a10c339e24d29c72db292ee..02701b4a0158000e5acc1ef011eab232dc4a3f49 100644 (file)
@@ -55,6 +55,7 @@ ClassImp(AliLog)
 AliLog* AliLog::fgInstance = NULL;
 
 Bool_t AliLog::fgDebugEnabled = kTRUE;
+Bool_t AliLog::fgCoreEnabled = kFALSE;
 
 /**
  * get root logger singleton instance
@@ -377,6 +378,10 @@ void AliLog::ReadEnvSettings()
     fPrintRepetitions = on;
     AliDebug(3, Form("printing of message repetitions %sabled", ((on) ? "en" : "dis")));
   }
+  if (gSystem->Getenv("ALIROOT_FORCE_COREDUMP")){
+    EnableCoreDump(kTRUE);
+  }
+
 }
 
 
@@ -413,6 +418,21 @@ void AliLog::EnableDebug(Bool_t enabled)
   fgDebugEnabled = enabled;
 }
 
+void AliLog::EnableCoreDump(Bool_t enabled)
+{
+// enable or disable debug output
+
+  fgCoreEnabled = enabled;
+  gSystem->ResetSignal(kSigFloatingException,enabled);
+  gSystem->ResetSignal(kSigSegmentationViolation,enabled);
+  if (enabled) printf("Core dump enabled\n");
+  else { 
+    printf("Core dump disabled\n");
+  }
+}
+
+
+
 //_____________________________________________________________________________
 void AliLog::SetGlobalLogLevel(EType_t type)
 {
@@ -919,13 +939,17 @@ void AliLog::Message(UInt_t level, const char* message,
     delete fgInstance;
     if (gSystem) {
       gSystem->StackTrace();
+      if (fgCoreEnabled) MakeCoreDump("core.AliRoot");
       gSystem->Abort();
     } else {
+      if (fgCoreEnabled) MakeCoreDump("core.AliRoot");
       ::abort();
     }
   }
 }
 
+
+
 //_____________________________________________________________________________
 void AliLog::Debug(UInt_t level, const char* message, 
                   const char* module, const char* className,
@@ -1173,3 +1197,29 @@ void  AliLog::PrintString(Int_t type, FILE* stream, const char* format, ...)
   }
   va_end(ap);
 }
+
+
+void AliLog::MakeCoreDump(const char *fout){
+  //
+  // Functionality to make a program snapshot 
+  //   gcore - Generate a core file for a running process 
+  //   gcore dmake a current snapshot, program can continue further
+  //   We assum that gcore is installed
+  //   for details see:  man gcore
+  //
+  // Example use - make default core file for current process:  AliLog::MakeCoreDump(0)
+  //
+  //
+  // Automatic core dump creation in case of the AliFatal can be specified using
+  // static void  EnableCoreDump(Bool_t enabled);
+  // Core dump is created in addition to the stack trace ()  
+  // marian.ivanov@cern.ch
+  //
+  if (!gSystem) return;
+  printf("AliLog::MakeCoreDump\n");
+  if (fout){
+    gSystem->Exec(Form("gcore -o %s  %d",fout, gSystem->GetPid()));
+  }else{
+    gSystem->Exec(Form("gcore   %d", gSystem->GetPid()));
+  }
+}
index e3256924dd827bcca00b3812b6699e2488829450..edc045bbf4aa14cfc047d9dfa41331ab4542876e 100644 (file)
@@ -43,10 +43,12 @@ class AliLog: public TObject
                static AliLog *GetRootLogger();
 
                // delete root logger singleton instance
-               static void DeleteRootLogger();
+               static void DeleteRootLogger(); 
 
                // NB: the following functions should not be static
                // NB: deprecated: logging configuration should be made through to a configuration file
+  static void  EnableCoreDump(Bool_t enabled);
+  static void MakeCoreDump(const char *fout);  
   static void  EnableDebug(Bool_t enabled);
   static void  SetGlobalLogLevel(EType_t type);
   static Int_t GetGlobalLogLevel();
@@ -148,6 +150,7 @@ class AliLog: public TObject
 
   static AliLog* fgInstance;                 //! pointer to current instance
   static Bool_t  fgDebugEnabled;             // flag for debug en-/disabling
+  static Bool_t  fgCoreEnabled;             // flag for core dump en-/disabling
 
   UInt_t         fGlobalLogLevel;            // global logging level
   TObjArray      fModuleDebugLevels;         // debug levels for modules
index aa10f8e208eac3f895edc30d516ea16dc272e784..94db01dd12c26ea1c31f99eea4b0e2f29d15ab24 100644 (file)
@@ -84,15 +84,15 @@ ClassImp(AliT0Reconstructor)
   AliCDBEntry *entry4 = AliCDBManager::Instance()->Get("GRP/Calib/LHCClockPhase");
   if (!entry4) AliFatal("LHC clock-phase shift is not found in OCDB !");
   AliLHCClockPhase *phase = (AliLHCClockPhase*)entry4->GetObject();
-
+  
   fGRPdelays = l1Delay - phase->GetMeanPhase();
-
+  
   AliCDBEntry *entry5 = AliCDBManager::Instance()->Get("T0/Calib/TimeAdjust");
   if (entry5) {
     AliT0CalibSeasonTimeShift *timeshift = (AliT0CalibSeasonTimeShift*)entry5->GetObject();
     fTimeMeanShift = timeshift->GetT0Means();
     fTimeSigmaShift  = timeshift->GetT0Sigmas();
-   }
+  }
   else
     AliWarning("Time Adjust is not found in OCDB !");
  
@@ -107,7 +107,6 @@ ClassImp(AliT0Reconstructor)
          TGraph* gr2 = fParam ->GetQTC(i);
          if (gr2) fQTC.AddAtAndExpand(gr2,i) ;         
          fTime0vertex[i] = fParam->GetCFD(i);
-         AliDebug(2,Form("OCDB mean CFD time %i %f \n",i, fTime0vertex[i]));
  }
   fLatencyL1 = fParam->GetLatencyL1();
   fLatencyL1A = fParam->GetLatencyL1A(); 
@@ -116,16 +115,17 @@ ClassImp(AliT0Reconstructor)
   AliDebug(2,Form(" LatencyL1 %f latencyL1A %f latencyL1C %f latencyHPTDC %f \n",fLatencyL1, fLatencyL1A, fLatencyL1C, fLatencyHPTDC));
  
   for (Int_t i=0; i<24; i++) {
-    if( fTime0vertex[i] < 500 || fTime0vertex[i] > 60000) fTime0vertex[i] =( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4;
+     if( fTime0vertex[i] < 500 || fTime0vertex[i] > 60000) fTime0vertex[i] =( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4;
+     AliDebug(2,Form("OCDB mean CFD time %i %f \n",i, fTime0vertex[i]));
   }
   //here real Z position
   fdZonC = TMath::Abs(fParam->GetZPosition("T0/C/PMT1"));
   fdZonA = TMath::Abs(fParam->GetZPosition("T0/A/PMT15"));
-
+  
   fCalib = new AliT0Calibrator();
   fESDTZEROfriend = new AliESDTZEROfriend();
   fESDTZERO  = new AliESDTZERO();
-
+  
  
 }
 
@@ -157,8 +157,8 @@ void AliT0Reconstructor::Reconstruct(TTree*digitsTree, TTree*clustersTree) const
   Float_t shiftA = GetRecoParam() -> GetLow(310);  
   Float_t shiftC = GetRecoParam() -> GetLow(311);  
   Float_t shiftAC = GetRecoParam() -> GetLow(312);
-  printf("Reconstruct(TTree*digitsTree shiftA %f shiftC %f shiftAC %f \n",shiftA, shiftC, shiftAC);
+  AliDebug(2, Form("Reconstruct(TTree*digitsTree shiftA %f shiftC %f shiftAC %f \n",shiftA, shiftC, shiftAC));
+  
   Double32_t besttimeA=9999999;  Double32_t besttimeA_best=9999999;
   Double32_t besttimeC=9999999;  Double32_t besttimeC_best=9999999;
   Int_t timeDelayCFD[24]; 
@@ -234,7 +234,7 @@ void AliT0Reconstructor::Reconstruct(TTree*digitsTree, TTree*clustersTree) const
   }
   
   for (Int_t ipmt=0; ipmt<12; ipmt++){
-    if(time[ipmt] !=0 &&  time[ipmt] > -900
+    if(time[ipmt] !=0 &&  time[ipmt] > 0 
        &&  adcmip[ipmt]>lowAmpThreshold && adcmip[ipmt]<highAmpThreshold )
       {
        if(time[ipmt]<besttimeC) besttimeC=time[ipmt]; //timeC
@@ -244,7 +244,7 @@ void AliT0Reconstructor::Reconstruct(TTree*digitsTree, TTree*clustersTree) const
   }
   for ( Int_t ipmt=12; ipmt<24; ipmt++)
     {
-      if(time[ipmt] != 0 &&  time[ipmt] > -900
+      if(time[ipmt] != 0 &&  time[ipmt] > 0 
         && adcmip[ipmt]>lowAmpThreshold && adcmip[ipmt]<highAmpThreshold)
        {
          if(time[ipmt]<besttimeA) besttimeA=time[ipmt]; 
@@ -308,10 +308,13 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
 {
   // T0 raw ->
   //
-
+  
   Float_t meanOrA = fTime0vertex[0] + 587;
   Float_t meanOrC = fTime0vertex[0] + 678;
   Float_t meanTVDC = fTime0vertex[0] + 2564;
+  Float_t meanQT1 = fTime0vertex[0] + 2564;
+  Float_t meanQT0 = fTime0vertex[0] + 3564;
+  
   Int_t timeDelayCFD[24]; 
   Int_t corridor = GetRecoParam() -> GetCorridor();  
   //  printf("!!!! corridor %i \n",corridor);
@@ -327,7 +330,7 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
   Int_t low[500], high[500];
   Float_t timefull=-99999;;
   Float_t tvdc  = -99999; Float_t ora = -99999; Float_t orc = -99999;
-
+  
   Int_t allData[110][5];
   
   Int_t timeCFD[24], timeLED[24], chargeQT0[24], chargeQT1[24];
@@ -351,8 +354,7 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
   
   Float_t lowAmpThreshold =  GetRecoParam()->GetAmpLowThreshold();  
   Float_t highAmpThreshold =  GetRecoParam()->GetAmpHighThreshold(); 
-  printf( "AliT0Reconstructor::Reconstruct::: RecoParam amplitude %f %f \n",lowAmpThreshold, highAmpThreshold);
+  
   Double32_t besttimeA=9999999;  Double32_t besttimeA_best=9999999;
   Double32_t besttimeC=9999999;  Double32_t besttimeC_best=9999999;
 
@@ -422,22 +424,34 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
        
        for (Int_t in=0; in<12;  in++)
          {
-           if(allData[2*in+26][0] > low[in] + 1000)
+           for (Int_t iHit=0; iHit<5; iHit++) 
+             {
+                if (allData[2*in+26][iHit] > fTime0vertex[0]+2000 &&  
+               allData[2*in+26][iHit] <fTime0vertex[0]+3000 &&
+               allData[2*in+25][iHit] > fTime0vertex[0]+3000)          
                  {
                    chargeQT0[in]=allData[2*in+25][0];
                    chargeQT1[in]=allData[2*in+26][0];
                    AliDebug(25, Form(" readed Raw %i %i %i",
                                      in, chargeQT0[in],chargeQT1[in]));
+                   break;
                  }
+               }
          }     
        for (Int_t in=12; in<24;  in++)
          {
-           if(allData[2*in+58][0] > low[in] + 1000)
+           for (Int_t iHit=0; iHit<5; iHit++) 
+             {
+           if (allData[2*in+58][iHit] > fTime0vertex[0]+2000 &&  
+               allData[2*in+58][iHit] <fTime0vertex[0]+3000 &&
+               allData[2*in+57][iHit] > fTime0vertex[0]+3000)
            {
              chargeQT0[in]=allData[2*in+57][0];
              chargeQT1[in]=allData[2*in+58][0];
              AliDebug(25, Form(" readed Raw %i %i %i",
                                in, chargeQT0[in],chargeQT1[in]));
+             break;
+           }
            }
          }
        
@@ -445,16 +459,10 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
        
        Double32_t time[24], adc[24], adcmip[24], noncalibtime[24];
        for (Int_t ipmt=0; ipmt<24; ipmt++) {
-         //      if(timeCFD[ipmt] >  0 && (chargeQT0[ipmt] - chargeQT1[ipmt])>pedestal[ipmt]  ){
          if(timeCFD[ipmt] >  0 && (chargeQT0[ipmt] - chargeQT1[ipmt])> 0 ){
           //for simulated data
             //for physics  data
-           if(( chargeQT0[ipmt] - chargeQT1[ipmt])>pedestal[ipmt])  {
-            adc[ipmt] = chargeQT0[ipmt] - chargeQT1[ipmt];
-          }
-          else
-            adc[ipmt] = 0;
-          //      time[ipmt] = fCalib-> WalkCorrection(refAmp, ipmt, Int_t(adc[ipmt]), timeCFD[ipmt] ) ;
+          adc[ipmt] = chargeQT0[ipmt] - chargeQT1[ipmt];
           Int_t refAmp = Int_t (fTime0vertex[ipmt]);
           time[ipmt] = fCalib-> WalkCorrection( refAmp, ipmt, Int_t(adc[ipmt]), timeCFD[ipmt] ) ;
           Double_t sl = timeLED[ipmt] - timeCFD[ipmt];
@@ -617,11 +625,23 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
       
       
       //Set MPD
-      if(allData[53][0]>0 && allData[54][0]) 
-       frecpoints.SetMultA(allData[53][0]-allData[54][0]);
-      if(allData[105][0]>0 && allData[106][0]) 
-       frecpoints.SetMultC(allData[105][0]-allData[106][0]);
-      
+      for (Int_t iHit=0; iHit<5; iHit++) 
+       {
+         if (allData[54][iHit] > fTime0vertex[0]+2000 &&  
+             allData[54][iHit] <fTime0vertex[0]+3000 &&
+             allData[53][iHit] > fTime0vertex[0]+3000) {
+           frecpoints.SetMultA(allData[53][iHit]-allData[54][iHit]);
+           break;
+         }
+       }
+      for (Int_t iHit=0; iHit<5; iHit++) 
+       if (allData[106][iHit] > fTime0vertex[0]+2000 &&  
+           allData[106][iHit] <fTime0vertex[0]+3000 &&
+           allData[105][iHit] > fTime0vertex[0]+3000)
+         {
+           frecpoints.SetMultC(allData[105][iHit]-allData[106][iHit]);
+           break;
+         }
       
     } // if (else )raw data
   recTree->Fill();
index 72968d274f36d6c12be897c4535b02bb26b052ae..c84f0577b3d7624ec5b2686fa5bb45ac544fb278 100644 (file)
 
 #include "EvtGenBase/EvtStdHep.hh"
 #include "EvtGenBase/EvtRandomEngine.hh"
+#include "EvtGenBase/EvtStdlibRandomEngine.hh" 
 #include "EvtGen/EvtGen.hh"
 #include "EvtGenBase/EvtParticle.hh"
 #include "EvtGenBase/EvtPDL.hh"
 #include "EvtGenBase/EvtParticleFactory.hh"
 #include "AliDecayerEvtGen.h"
+#include "EvtGenExternal/EvtExternalGenList.hh"
+#include "EvtGenBase/EvtAbsRadCorr.hh"
 #include "AliLog.h"
 
 ClassImp(AliDecayerEvtGen)
 //____________________________________________________________
 AliDecayerEvtGen::AliDecayerEvtGen():
   fRandomEngine(0x0),
+  fRadCorrEngine(0x0),
   fGenerator(0x0),
   fEvtstdhep(0x0),
   fDecayTablePath(0x0),
@@ -68,6 +72,8 @@ AliDecayerEvtGen::~AliDecayerEvtGen()
   // Destructor
   if(fRandomEngine) {delete fRandomEngine;}
   fRandomEngine = 0;
+  if(fRadCorrEngine) {delete fRadCorrEngine;}
+  fRadCorrEngine = 0;
   if(fGenerator) {delete fGenerator;}
   fGenerator = 0;
   if(fEvtstdhep) {delete fEvtstdhep;}
@@ -89,8 +95,14 @@ void AliDecayerEvtGen::Init()
   AliWarning(" AliDecayerEvtGen already initialized!!!!\n");
   return;
   }
-  fRandomEngine=new EvtNUMRandomEngine();
-  fGenerator=new EvtGen(fDecayTablePath,fParticleTablePath,fRandomEngine);
+  fRandomEngine = new EvtStdlibRandomEngine();
+  std::list<EvtDecayBase*> extraModels;
+
+  EvtExternalGenList genList;
+  fRadCorrEngine = genList.getPhotosModel();
+  extraModels = genList.getListOfModels();
+  
+  fGenerator=new EvtGen(fDecayTablePath,fParticleTablePath,fRandomEngine,fRadCorrEngine,&extraModels);
   }
 //____________________________________________________________
 void AliDecayerEvtGen::Decay(Int_t ipart, TLorentzVector *p)
@@ -106,7 +118,7 @@ void AliDecayerEvtGen::Decay(Int_t ipart, TLorentzVector *p)
   fGenerator->generateDecay(froot_part);
   fEvtstdhep->init();
   froot_part->makeStdHep(*fEvtstdhep);
-  //froot_part->printTree(); //to print the decay chain 
+  froot_part->printTree(); //to print the decay chain 
   froot_part->deleteTree();
   }
 
@@ -194,32 +206,54 @@ void AliDecayerEvtGen::ForceDecay()
   Decay_t decay = fDecay;
   switch(decay)
     {
-     case kAll: 
-     break;
+     case kAll: // particles decayed "naturally" according to $ALICE_ROOT/TEvtGen/EvtGen/DECAY.DEC
+      break;
      case kBJpsiDiElectron:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOELE.DEC"));
-     break;
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOELE.DEC"));
+      break;
      case kBJpsi:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSI.DEC"));
-     break;
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSI.DEC"));
+      break;
      case kBJpsiDiMuon:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOMU.DEC"));
-     break;
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOMU.DEC"));
+      break;
      case kBSemiElectronic:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOELE.DEC"));
-     break;
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOELE.DEC"));
+      break;
      case kHadronicD:
       SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOD.DEC"));
       break;
-     case kHardMuons:
+      case kChiToJpsiGammaToElectronElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOELE.DEC"));
+      break;
      case kChiToJpsiGammaToMuonMuon:
-     case kChiToJpsiGammaToElectronElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOMUON.DEC"));
+      break;
+     case kSemiElectronic:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BANDCTOELE.DEC"));
+      break;
      case kBSemiMuonic:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOMU.DEC"));
+      break;
      case kSemiMuonic:
-     case kDiMuon:
-     case kSemiElectronic:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BANDCTOMU.DEC"));
+      break;
      case kDiElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/DIELECTRON.DEC"));
+      break;
+     case kDiMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/DIMUON.DEC"));
+      break;
      case kBPsiPrimeDiMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIMUON.DEC"));
+      break;
+     case kBPsiPrimeDiElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIELECTRON.DEC"));
+      break;
+     case kJpsiDiMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/JPSIDIMUON.DEC"));
+      break;
+     case kHardMuons:
      case kPiToMu:
      case kKaToMu:
      case kAllMuonic:
@@ -231,17 +265,15 @@ void AliDecayerEvtGen::ForceDecay()
      case kHadronicDWithout4Bodies:
      case kPhiKK:
      case kOmega:
-     case kLambda:      
+     case kLambda:
      case kNoDecay:
      case kNoDecayHeavy:
      case kNeutralPion:
-     case kBPsiPrimeDiElectron:
      case kBeautyUpgrade:
      case kBJpsiUndecayed: 
      case kDiElectronEM:
      case kElectronEM:
      case kGammaEM:
-     case kJpsiDiMuon:
      case kNoDecayBeauty:
      case kPsiPrimeJpsiDiElectron:
       AliWarning(Form("Warning: case %d not implemented for this class!",(int)decay));
index c0c61fb9f1ff78a737b167c179ffd663fb1ad0ce..c5da1edead1539f464c0287940bb96c8b3a47898 100644 (file)
@@ -9,11 +9,11 @@
 //  Contact: Giuseppe.Bruno@ba.infn.it  &  Fiorella.Fionda@ba.infn.it    //
 ///////////////////////////////////////////////////////////////////////////
 
-
 #include "AliDecayer.h"
 
 class EvtGen;
-class EvtRandomEngine;
+class EvtStdlibRandomEngine;
+class EvtAbsRadCorr;
 class EvtStdHep;
 class TLorentzVector;
 class TClonesArray;
@@ -42,7 +42,8 @@ class AliDecayerEvtGen : public AliDecayer
       {decayer.Copy(*this);return(*this);}
 
   protected:
-  EvtRandomEngine *fRandomEngine;  //!pointer to EvtRandomEngine to generate random number   
+  EvtStdlibRandomEngine *fRandomEngine;  //!pointer to EvtRandomEngine to generate random number   
+  EvtAbsRadCorr *fRadCorrEngine;   //!pointer to EvtGenCorrEngine
   EvtGen *fGenerator;              //!pointer to EvtGen class interface 
   EvtStdHep *fEvtstdhep;           //!pointer to EvtGen common block
   Char_t *fDecayTablePath;         //!pointer to decay table path
index efdb1eb36a46072b0deacda48529e40efcda0b90..d2ee5dd342b041eea5a16460af21bf7bbe89c3fb 100644 (file)
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS  EvtGen/EvtGen.cxx EvtGen/EvtCheckDecays.cxx)
+set ( SRCS  EvtGen/EvtGen.cpp 
+EvtGenBase/Evt3Rank3C.cpp
+EvtGenBase/EvtAbsLineShape.cpp
+EvtGenBase/EvtAmp.cpp
+EvtGenBase/EvtAmpIndex.cpp
+EvtGenBase/EvtAmpSubIndex.cpp
+EvtGenBase/EvtBlattWeisskopf.cpp
+EvtGenBase/EvtBreitWignerPdf.cpp
+EvtGenBase/EvtCGCoefSingle.cpp
+EvtGenBase/EvtComplex.cpp
+EvtGenBase/EvtConst.cpp
+EvtGenBase/EvtCPUtil.cpp
+EvtGenBase/EvtCyclic3.cpp
+EvtGenBase/EvtDalitzCoord.cpp
+EvtGenBase/EvtDalitzFlatPdf.cpp
+EvtGenBase/EvtDalitzPlot.cpp
+EvtGenBase/EvtDalitzPoint.cpp
+EvtGenBase/EvtDalitzReso.cpp
+EvtGenBase/EvtDalitzResPdf.cpp
+EvtGenBase/EvtDecayAmp.cpp
+EvtGenBase/EvtDecayBase.cpp
+EvtGenBase/EvtDecayIncoherent.cpp
+EvtGenBase/EvtDecayMode.cpp
+EvtGenBase/EvtDecayParm.cpp
+EvtGenBase/EvtDecayProb.cpp
+EvtGenBase/EvtDecayTable.cpp
+EvtGenBase/EvtdFunction.cpp
+EvtGenBase/EvtdFunctionSingle.cpp
+EvtGenBase/EvtDiLog.cpp
+EvtGenBase/EvtDiracParticle.cpp
+EvtGenBase/EvtDiracSpinor.cpp
+EvtGenBase/EvtEvalHelAmp.cpp
+EvtGenBase/EvtExtGeneratorCommandsTable.cpp
+EvtGenBase/EvtFlatLineShape.cpp
+EvtGenBase/EvtFlatte.cpp
+EvtGenBase/EvtGammaMatrix.cpp
+EvtGenBase/EvtGenKine.cpp
+EvtGenBase/EvtHepMCEvent.cpp
+EvtGenBase/EvtHighSpinParticle.cpp
+EvtGenBase/EvtId.cpp
+EvtGenBase/EvtIdSet.cpp
+EvtGenBase/EvtIncoherentMixing.cpp
+EvtGenBase/EvtIntegPdf1D.cpp
+EvtGenBase/EvtIntervalFlatPdf.cpp
+EvtGenBase/EvtKine.cpp
+EvtGenBase/EvtLASSAmp.cpp
+EvtGenBase/EvtManyDeltaFuncLineShape.cpp
+EvtGenBase/EvtMassAmp.cpp
+EvtGenBase/EvtMBreitWigner.cpp
+EvtGenBase/EvtMHelAmp.cpp
+EvtGenBase/EvtMNode.cpp
+EvtGenBase/EvtModelAlias.cpp
+EvtGenBase/EvtModel.cpp
+EvtGenBase/EvtMParticle.cpp
+EvtGenBase/EvtMRes.cpp
+EvtGenBase/EvtMTree.cpp
+EvtGenBase/EvtMTrivialLS.cpp
+EvtGenBase/EvtMultiChannelParser.cpp
+EvtGenBase/EvtNeutrinoParticle.cpp
+EvtGenBase/EvtNonresonantAmp.cpp
+EvtGenBase/EvtOrthogVector.cpp
+EvtGenBase/EvtParser.cpp
+EvtGenBase/EvtParserXml.cpp
+EvtGenBase/EvtParticle.cpp
+EvtGenBase/EvtParticleDecay.cpp
+EvtGenBase/EvtParticleDecayList.cpp
+EvtGenBase/EvtParticleFactory.cpp
+EvtGenBase/EvtPartProp.cpp
+EvtGenBase/EvtPDL.cpp
+EvtGenBase/EvtPhotonParticle.cpp
+EvtGenBase/EvtPoint1D.cpp
+EvtGenBase/EvtPropBreitWigner.cpp
+EvtGenBase/EvtPropBreitWignerRel.cpp
+EvtGenBase/EvtPropFlatte.cpp
+EvtGenBase/EvtPropGounarisSakurai.cpp
+EvtGenBase/EvtPto3PAmp.cpp
+EvtGenBase/EvtPto3PAmpFactory.cpp
+EvtGenBase/EvtPto3PAmpSmpResolution.cpp
+EvtGenBase/EvtRadCorr.cpp
+EvtGenBase/EvtRandom.cpp
+EvtGenBase/EvtRanf.cpp
+EvtGenBase/EvtRanFor.cpp
+EvtGenBase/EvtRaritaSchwinger.cpp
+EvtGenBase/EvtRaritaSchwingerParticle.cpp
+EvtGenBase/EvtRelBreitWignerBarrierFact.cpp
+EvtGenBase/EvtReport.cpp
+EvtGenBase/EvtResonance2.cpp
+EvtGenBase/EvtResonance.cpp
+EvtGenBase/EvtScalarParticle.cpp
+EvtGenBase/EvtSecondary.cpp
+EvtGenBase/EvtSemiLeptonicAmp.cpp
+EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp
+EvtGenBase/EvtSemiLeptonicScalarAmp.cpp
+EvtGenBase/EvtSemiLeptonicTensorAmp.cpp
+EvtGenBase/EvtSemiLeptonicVectorAmp.cpp
+EvtGenBase/EvtSimpleRandomEngine.cpp
+EvtGenBase/EvtSpinAmp.cpp
+EvtGenBase/EvtSpinDensity.cpp
+EvtGenBase/EvtSpinType.cpp
+EvtGenBase/EvtStdHep.cpp
+EvtGenBase/EvtStringParticle.cpp
+EvtGenBase/EvtSymTable.cpp
+EvtGenBase/EvtTensor3C.cpp
+EvtGenBase/EvtTensor4C.cpp
+EvtGenBase/EvtTensorParticle.cpp
+EvtGenBase/EvtTwoBodyKine.cpp
+EvtGenBase/EvtTwoBodyVertex.cpp
+EvtGenBase/EvtValError.cpp
+EvtGenBase/EvtVector3C.cpp
+EvtGenBase/EvtVector3R.cpp
+EvtGenBase/EvtVector4C.cpp
+EvtGenBase/EvtVector4R.cpp
+EvtGenBase/EvtVectorParticle.cpp
+EvtGenModels/EvtBaryonPCR.cpp
+EvtGenModels/EvtBaryonPCRFF.cpp
+EvtGenModels/EvtBBScalar.cpp
+EvtGenModels/EvtBcBsNPi.cpp
+EvtGenModels/EvtBcBsStarNPi.cpp
+EvtGenModels/EvtBcPsiNPi.cpp
+EvtGenModels/EvtBcToNPi.cpp
+EvtGenModels/EvtBCVFF.cpp
+EvtGenModels/EvtBcVMuNu.cpp
+EvtGenModels/EvtBcVNpi.cpp
+EvtGenModels/EvtBHadronic.cpp
+EvtGenModels/EvtBsquark.cpp
+EvtGenModels/EvtBto2piCPiso.cpp
+EvtGenModels/EvtBTo3piCP.cpp
+EvtGenModels/EvtBTo4piCP.cpp
+EvtGenModels/EvtBToDDalitzCPK.cpp
+EvtGenModels/EvtBtoKD3P.cpp
+EvtGenModels/EvtBtoKpiCPiso.cpp
+EvtGenModels/EvtBToKpipiCP.cpp
+EvtGenModels/EvtBToPlnuBK.cpp
+EvtGenModels/EvtBToPlnuBKFF.cpp
+EvtGenModels/EvtbTosllAli.cpp
+EvtGenModels/EvtbTosllAliFF.cpp
+EvtGenModels/EvtbTosllAmp.cpp
+EvtGenModels/EvtbTosllBall.cpp
+EvtGenModels/EvtbTosllBallFF.cpp
+EvtGenModels/EvtbTosllScalarAmp.cpp
+EvtGenModels/EvtbTosllVectorAmp.cpp
+EvtGenModels/EvtBToVlnuBall.cpp
+EvtGenModels/EvtBToVlnuBallFF.cpp
+EvtGenModels/EvtBtoXsEtap.cpp
+EvtGenModels/EvtBtoXsgammaAbsModel.cpp
+EvtGenModels/EvtBtoXsgammaAliGreub.cpp
+EvtGenModels/EvtBtoXsgamma.cpp
+EvtGenModels/EvtBtoXsgammaFermiUtil.cpp
+EvtGenModels/EvtBtoXsgammaFixedMass.cpp
+EvtGenModels/EvtBtoXsgammaFlatEnergy.cpp
+EvtGenModels/EvtBtoXsgammaKagan.cpp
+EvtGenModels/EvtBtoXsgammaRootFinder.cpp
+EvtGenModels/EvtBtoXsll.cpp
+EvtGenModels/EvtBtoXsllUtil.cpp
+EvtGenModels/EvtCBTo3piMPP.cpp
+EvtGenModels/EvtCBTo3piP00.cpp
+EvtGenModels/EvtD0gammaDalitz.cpp
+EvtGenModels/EvtD0mixDalitz.cpp
+EvtGenModels/EvtDalitzTable.cpp
+EvtGenModels/EvtDDalitz.cpp
+EvtGenModels/EvtDMix.cpp
+EvtGenModels/EvtEta2MuMuGamma.cpp
+EvtGenModels/EvtEtaDalitz.cpp
+EvtGenModels/EvtFlatQ2.cpp
+EvtGenModels/EvtGenericDalitz.cpp
+EvtGenModels/EvtGoityRoberts.cpp
+EvtGenModels/EvtHelAmp.cpp
+EvtGenModels/EvtHQET2.cpp
+EvtGenModels/EvtHQET2FF.cpp
+EvtGenModels/EvtHQET.cpp
+EvtGenModels/EvtHQETFF.cpp
+EvtGenModels/EvtHypNonLepton.cpp
+EvtGenModels/EvtISGW2.cpp
+EvtGenModels/EvtISGW2FF.cpp
+EvtGenModels/EvtISGW.cpp
+EvtGenModels/EvtISGWFF.cpp
+EvtGenModels/EvtItgAbsFunction.cpp
+EvtGenModels/EvtItgAbsIntegrator.cpp
+EvtGenModels/EvtItgFourCoeffFcn.cpp
+EvtGenModels/EvtItgFunction.cpp
+EvtGenModels/EvtItgPtrFunction.cpp
+EvtGenModels/EvtItgSimpsonIntegrator.cpp
+EvtGenModels/EvtItgThreeCoeffFcn.cpp
+EvtGenModels/EvtItgTwoCoeffFcn.cpp
+EvtGenModels/EvtKKLambdaC.cpp
+EvtGenModels/EvtKKLambdaCFF.cpp
+EvtGenModels/EvtKstarnunu.cpp
+EvtGenModels/EvtKstarstargamma.cpp
+EvtGenModels/EvtLambdaB2LambdaV.cpp
+EvtGenModels/EvtLambdaP_BarGamma.cpp
+EvtGenModels/EvtLb2Lll.cpp
+EvtGenModels/EvtLNuGamma.cpp
+EvtGenModels/EvtMelikhov.cpp
+EvtGenModels/EvtMelikhovFF.cpp
+EvtGenModels/EvtModelReg.cpp
+EvtGenModels/EvtMultibody.cpp
+EvtGenModels/EvtOmegaDalitz.cpp
+EvtGenModels/EvtPartWave.cpp
+EvtGenModels/EvtPFermi.cpp
+EvtGenModels/EvtPhiDalitz.cpp
+EvtGenModels/EvtPhsp.cpp
+EvtGenModels/EvtPi0Dalitz.cpp
+EvtGenModels/EvtPropSLPole.cpp
+EvtGenModels/EvtPto3P.cpp
+EvtGenModels/EvtPVVCPLH.cpp
+EvtGenModels/EvtSingleParticle.cpp
+EvtGenModels/EvtSLBKPole.cpp
+EvtGenModels/EvtSLBKPoleFF.cpp
+EvtGenModels/EvtSll.cpp
+EvtGenModels/EvtSLN.cpp
+EvtGenModels/EvtSLPole.cpp
+EvtGenModels/EvtSLPoleFF.cpp
+EvtGenModels/EvtSSDCP.cpp
+EvtGenModels/EvtSSD_DirectCP.cpp
+EvtGenModels/EvtSSSCP.cpp
+EvtGenModels/EvtSSSCPpng.cpp
+EvtGenModels/EvtSSSCPT.cpp
+EvtGenModels/EvtSTSCP.cpp
+EvtGenModels/EvtSTS.cpp
+EvtGenModels/EvtSVPCP.cpp
+EvtGenModels/EvtSVP.cpp
+EvtGenModels/EvtSVPHelAmp.cpp
+EvtGenModels/EvtSVSCP.cpp
+EvtGenModels/EvtSVSCPiso.cpp
+EvtGenModels/EvtSVSCPLH.cpp
+EvtGenModels/EvtSVS.cpp
+EvtGenModels/EvtSVSNONCPEIGEN.cpp
+EvtGenModels/EvtSVVCP.cpp
+EvtGenModels/EvtSVVCPLH.cpp
+EvtGenModels/EvtSVVHelAmp.cpp
+EvtGenModels/EvtSVVHelCPMix.cpp
+EvtGenModels/EvtSVVNONCPEIGEN.cpp
+EvtGenModels/EvtTauHadnu.cpp
+EvtGenModels/EvtTaulnunu.cpp
+EvtGenModels/EvtTauScalarnu.cpp
+EvtGenModels/EvtTauVectornu.cpp
+EvtGenModels/EvtTSS.cpp
+EvtGenModels/EvtTVP.cpp
+EvtGenModels/EvtTVSPwave.cpp
+EvtGenModels/EvtVectorIsr.cpp
+EvtGenModels/EvtVll.cpp
+EvtGenModels/EvtVPHOtoV.cpp
+EvtGenModels/EvtVPHOtoVISR.cpp
+EvtGenModels/EvtVPHOtoVISRHi.cpp
+EvtGenModels/EvtVSPPwave.cpp
+EvtGenModels/EvtVSSBMixCPT.cpp
+EvtGenModels/EvtVSS.cpp
+EvtGenModels/EvtVSSMix.cpp
+EvtGenModels/EvtVtoSll.cpp
+EvtGenModels/EvtVubAC.cpp
+EvtGenModels/EvtVubBLNP.cpp
+EvtGenModels/EvtVubBLNPHybrid.cpp
+EvtGenModels/EvtVub.cpp
+EvtGenModels/EvtVubdGamma.cpp
+EvtGenModels/EvtVubHybrid.cpp
+EvtGenModels/EvtVubNLO.cpp
+EvtGenModels/EvtVVP.cpp
+EvtGenModels/EvtVVpipi.cpp
+EvtGenModels/EvtVVPIPI_WEIGHTED.cpp
+EvtGenModels/EvtVVSPwave.cpp
+EvtGenModels/EvtWilsonCoefficients.cpp
+EvtGenModels/EvtWnPi.cpp
+EvtGenModels/EvtXPsiGamma.cpp
+EvtGenModels/EvtY3SToY1SpipiMoxhay.cpp
+EvtGenModels/EvtYmSToYnSpipiCLEO.cpp )
+
+set ( FSRCS
+EvtGenModels/EvtBTo3pi.F EvtGenModels/EvtBToKpipi.F EvtGenModels/EvtBTo3piMPP.F  EvtGenModels/EvtLi2Spence.F EvtGenModels/EvtBTo3piP00.F )
+
+
+set ( HDRS EvtGen/EvtGen.hh
+EvtGenBase/Evt3Rank3C.hh
+EvtGenBase/EvtAbsBinning.hh
+EvtGenBase/EvtAbsLineShape.hh
+EvtGenBase/EvtAbsRadCorr.hh
+EvtGenBase/EvtAmpAmpPdf.hh
+EvtGenBase/EvtAmpFactory.hh
+EvtGenBase/EvtAmp.hh
+EvtGenBase/EvtAmpIndex.hh
+EvtGenBase/EvtAmplitude.hh
+EvtGenBase/EvtAmplitudeSum.hh
+EvtGenBase/EvtAmpPdf.hh
+EvtGenBase/EvtAmpSubIndex.hh
+EvtGenBase/EvtBlattWeisskopf.hh
+EvtGenBase/EvtBreitWignerPdf.hh
+EvtGenBase/EvtCGCoefSingle.hh
+EvtGenBase/EvtComplex.hh
+EvtGenBase/EvtConst.hh
+EvtGenBase/EvtCPUtil.hh
+EvtGenBase/EvtCyclic3.hh
+EvtGenBase/EvtDalitzCoord.hh
+EvtGenBase/EvtDalitzFlatPdf.hh
+EvtGenBase/EvtDalitzPlot.hh
+EvtGenBase/EvtDalitzPoint.hh
+EvtGenBase/EvtDalitzReso.hh
+EvtGenBase/EvtDalitzResPdf.hh
+EvtGenBase/EvtDecayAmp.hh
+EvtGenBase/EvtDecayBase.hh
+EvtGenBase/EvtDecayIncoherent.hh
+EvtGenBase/EvtDecayMode.hh
+EvtGenBase/EvtDecayParm.hh
+EvtGenBase/EvtDecayProb.hh
+EvtGenBase/EvtDecayTable.hh
+EvtGenBase/EvtdFunction.hh
+EvtGenBase/EvtdFunctionSingle.hh
+EvtGenBase/EvtDiLog.hh
+EvtGenBase/EvtDiracParticle.hh
+EvtGenBase/EvtDiracSpinor.hh
+EvtGenBase/EvtEvalHelAmp.hh
+EvtGenBase/EvtExtGeneratorCommandsTable.hh
+EvtGenBase/EvtFlatAmp.hh
+EvtGenBase/EvtFlatLineShape.hh
+EvtGenBase/EvtFlatte.hh
+EvtGenBase/EvtGammaMatrix.hh
+EvtGenBase/EvtGenKine.hh
+EvtGenBase/EvtHepMCEvent.hh
+EvtGenBase/EvtHighSpinParticle.hh
+EvtGenBase/EvtId.hh
+EvtGenBase/EvtIdSet.hh
+EvtGenBase/EvtIncoherentMixing.hh
+EvtGenBase/EvtIntegPdf1D.hh
+EvtGenBase/EvtIntervalFlatPdf.hh
+EvtGenBase/EvtKine.hh
+EvtGenBase/EvtLASSAmp.hh
+EvtGenBase/EvtMacros.hh
+EvtGenBase/EvtManyDeltaFuncLineShape.hh
+EvtGenBase/EvtMassAmp.hh
+EvtGenBase/EvtMatrix.hh
+EvtGenBase/EvtMBreitWigner.hh
+EvtGenBase/EvtMHelAmp.hh
+EvtGenBase/EvtMNode.hh
+EvtGenBase/EvtModelAlias.hh
+EvtGenBase/EvtModel.hh
+EvtGenBase/EvtMParticle.hh
+EvtGenBase/EvtMRes.hh
+EvtGenBase/EvtMTree.hh
+EvtGenBase/EvtMTrivialLS.hh
+EvtGenBase/EvtMultiChannelParser.hh
+EvtGenBase/EvtNeutrinoParticle.hh
+EvtGenBase/EvtNonresonantAmp.hh
+EvtGenBase/EvtOrthogVector.hh
+EvtGenBase/EvtParser.hh
+EvtGenBase/EvtParserXml.hh
+EvtGenBase/EvtParticleDecay.hh
+EvtGenBase/EvtParticleDecayList.hh
+EvtGenBase/EvtParticleFactory.hh
+EvtGenBase/EvtParticle.hh
+EvtGenBase/EvtPartProp.hh
+EvtGenBase/EvtPatches.hh
+EvtGenBase/EvtPdf.hh
+EvtGenBase/EvtPdfMax.hh
+EvtGenBase/EvtPdfSum.hh
+EvtGenBase/EvtPDL.hh
+EvtGenBase/EvtPhotonParticle.hh
+EvtGenBase/EvtPoint1D.hh
+EvtGenBase/EvtPointPred.hh
+EvtGenBase/EvtPredGen.hh
+EvtGenBase/EvtPropagator.hh
+EvtGenBase/EvtPropBreitWigner.hh
+EvtGenBase/EvtPropBreitWignerRel.hh
+EvtGenBase/EvtPropFlatte.hh
+EvtGenBase/EvtPropGounarisSakurai.hh
+EvtGenBase/EvtPto3PAmpFactory.hh
+EvtGenBase/EvtPto3PAmp.hh
+EvtGenBase/EvtPto3PAmpSmpResolution.hh
+EvtGenBase/EvtRadCorr.hh
+EvtGenBase/EvtRandomEngine.hh
+EvtGenBase/EvtRandom.hh
+EvtGenBase/EvtRaritaSchwinger.hh
+EvtGenBase/EvtRaritaSchwingerParticle.hh
+EvtGenBase/EvtRelBreitWignerBarrierFact.hh
+EvtGenBase/EvtReport.hh
+EvtGenBase/EvtResonance2.hh
+EvtGenBase/EvtResonance.hh
+EvtGenBase/EvtScalarParticle.hh
+EvtGenBase/EvtSecondary.hh
+EvtGenBase/EvtSemiLeptonicAmp.hh
+EvtGenBase/EvtSemiLeptonicBaryonAmp.hh
+EvtGenBase/EvtSemiLeptonicFF.hh
+EvtGenBase/EvtSemiLeptonicScalarAmp.hh
+EvtGenBase/EvtSemiLeptonicTensorAmp.hh
+EvtGenBase/EvtSemiLeptonicVectorAmp.hh
+EvtGenBase/EvtSimpleRandomEngine.hh
+EvtGenBase/EvtSpinAmp.hh
+EvtGenBase/EvtSpinDensity.hh
+EvtGenBase/EvtSpinType.hh
+EvtGenBase/EvtStatus.hh
+EvtGenBase/EvtStdHep.hh
+EvtGenBase/EvtStdlibRandomEngine.hh
+EvtGenBase/EvtStreamAdapter.hh
+EvtGenBase/EvtStreamInputIterator.hh
+EvtGenBase/EvtStringHash.hh
+EvtGenBase/EvtStringParticle.hh
+EvtGenBase/EvtSymTable.hh
+EvtGenBase/EvtTensor3C.hh
+EvtGenBase/EvtTensor4C.hh
+EvtGenBase/EvtTensorParticle.hh
+EvtGenBase/EvtTwoBodyKine.hh
+EvtGenBase/EvtTwoBodyVertex.hh
+EvtGenBase/EvtValError.hh
+EvtGenBase/EvtVector3C.hh
+EvtGenBase/EvtVector3R.hh
+EvtGenBase/EvtVector4C.hh
+EvtGenBase/EvtVector4R.hh
+EvtGenBase/EvtVectorParticle.hh
+EvtGenModels/EvtAbsExternalGen.hh
+EvtGenModels/EvtBaryonPCRFF.hh
+EvtGenModels/EvtBaryonPCR.hh
+EvtGenModels/EvtBBScalar.hh
+EvtGenModels/EvtBcBsNPi.hh
+EvtGenModels/EvtBcBsStarNPi.hh
+EvtGenModels/EvtBcPsiNPi.hh
+EvtGenModels/EvtBcToNPi.hh
+EvtGenModels/EvtBCVFF.hh
+EvtGenModels/EvtBcVMuNu.hh
+EvtGenModels/EvtBcVNpi.hh
+EvtGenModels/EvtBHadronic.hh
+EvtGenModels/EvtBsquark.hh
+EvtGenModels/EvtBto2piCPiso.hh
+EvtGenModels/EvtBTo3piCP.hh
+EvtGenModels/EvtBTo4piCP.hh
+EvtGenModels/EvtBToDDalitzCPK.hh
+EvtGenModels/EvtBtoKD3P.hh
+EvtGenModels/EvtBtoKpiCPiso.hh
+EvtGenModels/EvtBToKpipiCP.hh
+EvtGenModels/EvtBToPlnuBKFF.hh
+EvtGenModels/EvtBToPlnuBK.hh
+EvtGenModels/EvtbTosllAliFF.hh
+EvtGenModels/EvtbTosllAli.hh
+EvtGenModels/EvtbTosllAmp.hh
+EvtGenModels/EvtbTosllBallFF.hh
+EvtGenModels/EvtbTosllBall.hh
+EvtGenModels/EvtbTosllFF.hh
+EvtGenModels/EvtbTosllScalarAmp.hh
+EvtGenModels/EvtbTosllVectorAmp.hh
+EvtGenModels/EvtBToVlnuBallFF.hh
+EvtGenModels/EvtBToVlnuBall.hh
+EvtGenModels/EvtBtoXsEtap.hh
+EvtGenModels/EvtBtoXsgammaAbsModel.hh
+EvtGenModels/EvtBtoXsgammaAliGreub.hh
+EvtGenModels/EvtBtoXsgammaFermiUtil.hh
+EvtGenModels/EvtBtoXsgammaFixedMass.hh
+EvtGenModels/EvtBtoXsgammaFlatEnergy.hh
+EvtGenModels/EvtBtoXsgamma.hh
+EvtGenModels/EvtBtoXsgammaKagan.hh
+EvtGenModels/EvtBtoXsgammaRootFinder.hh
+EvtGenModels/EvtBtoXsll.hh
+EvtGenModels/EvtBtoXsllUtil.hh
+EvtGenModels/EvtCBTo3piMPP.hh
+EvtGenModels/EvtCBTo3piP00.hh
+EvtGenModels/EvtD0gammaDalitz.hh
+EvtGenModels/EvtD0mixDalitz.hh
+EvtGenModels/EvtDalitzDecayInfo.hh
+EvtGenModels/EvtDalitzTable.hh
+EvtGenModels/EvtDDalitz.hh
+EvtGenModels/EvtDMix.hh
+EvtGenModels/EvtEta2MuMuGamma.hh
+EvtGenModels/EvtEtaDalitz.hh
+EvtGenModels/EvtFlatQ2.hh
+EvtGenModels/EvtGenericDalitz.hh
+EvtGenModels/EvtGoityRoberts.hh
+EvtGenModels/EvtHelAmp.hh
+EvtGenModels/EvtHQET2FF.hh
+EvtGenModels/EvtHQET2.hh
+EvtGenModels/EvtHQETFF.hh
+EvtGenModels/EvtHQET.hh
+EvtGenModels/EvtHypNonLepton.hh
+EvtGenModels/EvtIntervalDecayAmp.hh
+EvtGenModels/EvtISGW2FF.hh
+EvtGenModels/EvtISGW2.hh
+EvtGenModels/EvtISGWFF.hh
+EvtGenModels/EvtISGW.hh
+EvtGenModels/EvtItgAbsFunction.hh
+EvtGenModels/EvtItgAbsIntegrator.hh
+EvtGenModels/EvtItgFourCoeffFcn.hh
+EvtGenModels/EvtItgFunction.hh
+EvtGenModels/EvtItgPtrFunction.hh
+EvtGenModels/EvtItgSimpsonIntegrator.hh
+EvtGenModels/EvtItgThreeCoeffFcn.hh
+EvtGenModels/EvtItgTwoCoeffFcn.hh
+EvtGenModels/EvtKKLambdaCFF.hh
+EvtGenModels/EvtKKLambdaC.hh
+EvtGenModels/EvtKstarnunu.hh
+EvtGenModels/EvtKstarstargamma.hh
+EvtGenModels/EvtLambdaB2LambdaV.hh
+EvtGenModels/EvtLambdaP_BarGamma.hh
+EvtGenModels/EvtLb2Lll.hh
+EvtGenModels/EvtLNuGamma.hh
+EvtGenModels/EvtMelikhovFF.hh
+EvtGenModels/EvtMelikhov.hh
+EvtGenModels/EvtModelReg.hh
+EvtGenModels/EvtMultibody.hh
+EvtGenModels/EvtNoRadCorr.hh
+EvtGenModels/EvtOmegaDalitz.hh
+EvtGenModels/EvtPartWave.hh
+EvtGenModels/EvtPFermi.hh
+EvtGenModels/EvtPhiDalitz.hh
+EvtGenModels/EvtPhsp.hh
+EvtGenModels/EvtPi0Dalitz.hh
+EvtGenModels/EvtPropSLPole.hh
+EvtGenModels/EvtPto3P.hh
+EvtGenModels/EvtPVVCPLH.hh
+EvtGenModels/EvtSingleParticle.hh
+EvtGenModels/EvtSLBKPoleFF.hh
+EvtGenModels/EvtSLBKPole.hh
+EvtGenModels/EvtSll.hh
+EvtGenModels/EvtSLN.hh
+EvtGenModels/EvtSLPoleFF.hh
+EvtGenModels/EvtSLPole.hh
+EvtGenModels/EvtSSDCP.hh
+EvtGenModels/EvtSSD_DirectCP.hh
+EvtGenModels/EvtSSSCP.hh
+EvtGenModels/EvtSSSCPpng.hh
+EvtGenModels/EvtSSSCPT.hh
+EvtGenModels/EvtSTSCP.hh
+EvtGenModels/EvtSTS.hh
+EvtGenModels/EvtSVPCP.hh
+EvtGenModels/EvtSVPHelAmp.hh
+EvtGenModels/EvtSVP.hh
+EvtGenModels/EvtSVSCP.hh
+EvtGenModels/EvtSVSCPiso.hh
+EvtGenModels/EvtSVSCPLH.hh
+EvtGenModels/EvtSVS.hh
+EvtGenModels/EvtSVSNONCPEIGEN.hh
+EvtGenModels/EvtSVVCP.hh
+EvtGenModels/EvtSVVCPLH.hh
+EvtGenModels/EvtSVVHelAmp.hh
+EvtGenModels/EvtSVVHelCPMix.hh
+EvtGenModels/EvtSVVNONCPEIGEN.hh
+EvtGenModels/EvtTauHadnu.hh
+EvtGenModels/EvtTaulnunu.hh
+EvtGenModels/EvtTauScalarnu.hh
+EvtGenModels/EvtTauVectornu.hh
+EvtGenModels/EvtTSS.hh
+EvtGenModels/EvtTVP.hh
+EvtGenModels/EvtTVSPwave.hh
+EvtGenModels/EvtVectorIsr.hh
+EvtGenModels/EvtVll.hh
+EvtGenModels/EvtVPHOtoV.hh
+EvtGenModels/EvtVPHOtoVISR.hh
+EvtGenModels/EvtVPHOtoVISRHi.hh
+EvtGenModels/EvtVSPPwave.hh
+EvtGenModels/EvtVSSBMixCPT.hh
+EvtGenModels/EvtVSS.hh
+EvtGenModels/EvtVSSMix.hh
+EvtGenModels/EvtVtoSll.hh
+EvtGenModels/EvtVubAC.hh
+EvtGenModels/EvtVubBLNP.hh
+EvtGenModels/EvtVubBLNPHybrid.hh
+EvtGenModels/EvtVubdGamma.hh
+EvtGenModels/EvtVub.hh
+EvtGenModels/EvtVubHybrid.hh
+EvtGenModels/EvtVubNLO.hh
+EvtGenModels/EvtVVP.hh
+EvtGenModels/EvtVVpipi.hh
+EvtGenModels/EvtVVPIPI_WEIGHTED.hh
+EvtGenModels/EvtVVSPwave.hh
+EvtGenModels/EvtWilsonCoefficients.hh
+EvtGenModels/EvtWnPi.hh
+EvtGenModels/EvtXPsiGamma.hh
+EvtGenModels/EvtY3SToY1SpipiMoxhay.hh
+EvtGenModels/EvtYmSToYnSpipiCLEO.hh )
+
+
+set ( EINCLUDE TEvtGen EVGEN TEvtGen/HepMC) 
+
+
 
-string ( REPLACE ".cxx" ".hh" HDRS "${SRCS}" )
 
-set ( DHDR EvtGen/EvtGenLinkDef.h)
diff --git a/TEvtGen/CMakelibEvtGenBase.pkg b/TEvtGen/CMakelibEvtGenBase.pkg
deleted file mode 100644 (file)
index d7ecc32..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#--------------------------------------------------------------------------------#
-# Package File for EvtGenBase                                                    #
-# Author : Johny Jose (johny.jose@cern.ch)                                       #
-# Variables Defined :                                                            #
-#                                                                                #
-# SRCS - C++ source files                                                        #
-# HDRS - C++ header files                                                        #
-# DHDR - ROOT Dictionary Linkdef header file                                     #
-# CSRCS - C source files                                                         #
-# CHDRS - C header files                                                         #
-# EINCLUDE - Include directories                                                 #
-# EDEFINE - Compiler definitions                                                 #
-# ELIBS - Extra libraries to link                                                #
-# ELIBSDIR - Extra library directories                                           #
-# PACKFFLAGS - Fortran compiler flags for package                                #
-# PACKCXXFLAGS - C++ compiler flags for package                                  #
-# PACKCFLAGS - C compiler flags for package                                      #
-# PACKSOFLAGS - Shared library linking flags                                     #
-# PACKLDFLAGS - Module linker flags                                              #
-# PACKBLIBS - Libraries to link (Executables only)                               #
-# EXPORT - Header files to be exported                                           #
-# CINTHDRS - Dictionary header files                                             #
-# CINTAUTOLINK - Set automatic dictionary generation                             #
-# ARLIBS - Archive Libraries and objects for linking (Executables only)          #
-# SHLIBS - Shared Libraries and objects for linking (Executables only)           #
-#--------------------------------------------------------------------------------#
-
-set ( SRCS  EvtGenBase/Evt3Rank3C.cxx EvtGenBase/EvtAbsLineShape.cxx EvtGenBase/EvtAmp.cxx EvtGenBase/EvtAmpIndex.cxx EvtGenBase/EvtAmpSubIndex.cxx EvtGenBase/EvtBlattWeisskopf.cxx EvtGenBase/EvtBreitWignerPdf.cxx EvtGenBase/EvtCGCoefSingle.cxx EvtGenBase/EvtCPUtil.cxx EvtGenBase/EvtComplex.cxx EvtGenBase/EvtConst.cxx EvtGenBase/EvtCyclic3.cxx EvtGenBase/EvtDalitzCoord.cxx EvtGenBase/EvtDalitzFlatPdf.cxx EvtGenBase/EvtDalitzPlot.cxx EvtGenBase/EvtDalitzPoint.cxx EvtGenBase/EvtDalitzResPdf.cxx EvtGenBase/EvtDalitzReso.cxx EvtGenBase/EvtDecayAmp.cxx EvtGenBase/EvtDecayBase.cxx EvtGenBase/EvtDecayIncoherent.cxx EvtGenBase/EvtDecayMode.cxx EvtGenBase/EvtDecayParm.cxx EvtGenBase/EvtDecayProb.cxx EvtGenBase/EvtDecayTable.cxx EvtGenBase/EvtDiLog.cxx EvtGenBase/EvtDiracParticle.cxx EvtGenBase/EvtDiracSpinor.cxx EvtGenBase/EvtEvalHelAmp.cxx EvtGenBase/EvtFlatLineShape.cxx EvtGenBase/EvtFlatte.cxx EvtGenBase/EvtGammaMatrix.cxx EvtGenBase/EvtGenKine.cxx EvtGenBase/EvtHighSpinParticle.cxx EvtGenBase/EvtId.cxx EvtGenBase/EvtIdSet.cxx EvtGenBase/EvtIntegPdf1D.cxx EvtGenBase/EvtIntervalFlatPdf.cxx EvtGenBase/EvtKine.cxx EvtGenBase/EvtLASSAmp.cxx EvtGenBase/EvtMBreitWigner.cxx EvtGenBase/EvtMHelAmp.cxx EvtGenBase/EvtMNode.cxx EvtGenBase/EvtMParticle.cxx EvtGenBase/EvtMRes.cxx EvtGenBase/EvtMTree.cxx EvtGenBase/EvtMTrivialLS.cxx EvtGenBase/EvtManyDeltaFuncLineShape.cxx EvtGenBase/EvtMassAmp.cxx EvtGenBase/EvtModel.cxx EvtGenBase/EvtModelAlias.cxx EvtGenBase/EvtMultiChannelParser.cxx EvtGenBase/EvtNeutrinoParticle.cxx EvtGenBase/EvtNonresonantAmp.cxx EvtGenBase/EvtOrthogVector.cxx EvtGenBase/EvtPDL.cxx EvtGenBase/EvtParser.cxx EvtGenBase/EvtPartProp.cxx EvtGenBase/EvtParticle.cxx EvtGenBase/EvtParticleDecay.cxx EvtGenBase/EvtParticleDecayList.cxx EvtGenBase/EvtParticleFactory.cxx EvtGenBase/EvtPhotonParticle.cxx EvtGenBase/EvtPoint1D.cxx EvtGenBase/EvtPropBreitWigner.cxx EvtGenBase/EvtPropBreitWignerRel.cxx EvtGenBase/EvtPropFlatte.cxx EvtGenBase/EvtPropGounarisSakurai.cxx EvtGenBase/EvtPto3PAmp.cxx EvtGenBase/EvtPto3PAmpFactory.cxx EvtGenBase/EvtPto3PAmpSmpResolution.cxx EvtGenBase/EvtRadCorr.cxx EvtGenBase/EvtRanFor.cxx EvtGenBase/EvtRandom.cxx EvtGenBase/EvtRanf.cxx EvtGenBase/EvtRaritaSchwinger.cxx EvtGenBase/EvtRaritaSchwingerParticle.cxx EvtGenBase/EvtRelBreitWignerBarrierFact.cxx EvtGenBase/EvtReport.cxx EvtGenBase/EvtResonance.cxx EvtGenBase/EvtResonance2.cxx EvtGenBase/EvtScalarParticle.cxx EvtGenBase/EvtSecondary.cxx EvtGenBase/EvtSemiLeptonicAmp.cxx EvtGenBase/EvtSemiLeptonicBaryonAmp.cxx EvtGenBase/EvtSemiLeptonicScalarAmp.cxx EvtGenBase/EvtSemiLeptonicTensorAmp.cxx EvtGenBase/EvtSemiLeptonicVectorAmp.cxx EvtGenBase/EvtSimpleRandomEngine.cxx EvtGenBase/EvtSpinAmp.cxx EvtGenBase/EvtSpinDensity.cxx EvtGenBase/EvtSpinType.cxx EvtGenBase/EvtStdHep.cxx EvtGenBase/EvtStringParticle.cxx EvtGenBase/EvtSymTable.cxx EvtGenBase/EvtTensor3C.cxx EvtGenBase/EvtTensor4C.cxx EvtGenBase/EvtTensorParticle.cxx EvtGenBase/EvtTwoBodyKine.cxx EvtGenBase/EvtTwoBodyVertex.cxx EvtGenBase/EvtValError.cxx EvtGenBase/EvtVector3C.cxx EvtGenBase/EvtVector3R.cxx EvtGenBase/EvtVector4C.cxx EvtGenBase/EvtVector4R.cxx EvtGenBase/EvtVectorParticle.cxx EvtGenBase/EvtdFunction.cxx EvtGenBase/EvtdFunctionSingle.cxx)
-
-set ( HDRS  EvtGenBase/Evt3Rank3C.hh EvtGenBase/EvtAbsBinning.hh EvtGenBase/EvtAbsLineShape.hh EvtGenBase/EvtAbsRadCorr.hh EvtGenBase/EvtAmpAmpPdf.hh EvtGenBase/EvtAmpFactory.hh EvtGenBase/EvtAmp.hh EvtGenBase/EvtAmpIndex.hh EvtGenBase/EvtAmplitude.hh EvtGenBase/EvtAmplitudeSum.hh EvtGenBase/EvtAmpPdf.hh EvtGenBase/EvtAmpSubIndex.hh EvtGenBase/EvtBlattWeisskopf.hh EvtGenBase/EvtBreitWignerPdf.hh EvtGenBase/EvtCGCoefSingle.hh EvtGenBase/EvtComplex.hh EvtGenBase/EvtConst.hh EvtGenBase/EvtCPUtil.hh EvtGenBase/EvtCyclic3.hh EvtGenBase/EvtDalitzCoord.hh EvtGenBase/EvtDalitzFlatPdf.hh EvtGenBase/EvtDalitzPlot.hh EvtGenBase/EvtDalitzPoint.hh EvtGenBase/EvtDalitzReso.hh EvtGenBase/EvtDalitzResPdf.hh EvtGenBase/EvtDecayAmp.hh EvtGenBase/EvtDecayBase.hh EvtGenBase/EvtDecayIncoherent.hh EvtGenBase/EvtDecayMode.hh EvtGenBase/EvtDecayParm.hh EvtGenBase/EvtDecayProb.hh EvtGenBase/EvtDecayTable.hh EvtGenBase/EvtdFunction.hh EvtGenBase/EvtdFunctionSingle.hh EvtGenBase/EvtDiLog.hh EvtGenBase/EvtDiracParticle.hh EvtGenBase/EvtDiracSpinor.hh EvtGenBase/EvtEvalHelAmp.hh EvtGenBase/EvtFlatAmp.hh EvtGenBase/EvtFlatLineShape.hh EvtGenBase/EvtFlatte.hh EvtGenBase/EvtGammaMatrix.hh EvtGenBase/EvtGenKine.hh EvtGenBase/EvtHighSpinParticle.hh EvtGenBase/EvtId.hh EvtGenBase/EvtIdSet.hh EvtGenBase/EvtIntegPdf1D.hh EvtGenBase/EvtIntervalFlatPdf.hh EvtGenBase/EvtKine.hh EvtGenBase/EvtLASSAmp.hh EvtGenBase/EvtMacros.hh EvtGenBase/EvtManyDeltaFuncLineShape.hh EvtGenBase/EvtMassAmp.hh EvtGenBase/EvtMatrix.hh EvtGenBase/EvtMBreitWigner.hh EvtGenBase/EvtMHelAmp.hh EvtGenBase/EvtMNode.hh EvtGenBase/EvtModelAlias.hh EvtGenBase/EvtModel.hh EvtGenBase/EvtMParticle.hh EvtGenBase/EvtMRes.hh EvtGenBase/EvtMTree.hh EvtGenBase/EvtMTrivialLS.hh EvtGenBase/EvtMultiChannelParser.hh EvtGenBase/EvtNeutrinoParticle.hh EvtGenBase/EvtNonresonantAmp.hh EvtGenBase/EvtOrthogVector.hh EvtGenBase/EvtParser.hh EvtGenBase/EvtParticleDecay.hh EvtGenBase/EvtParticleDecayList.hh EvtGenBase/EvtParticleFactory.hh EvtGenBase/EvtParticle.hh EvtGenBase/EvtPartProp.hh EvtGenBase/EvtPatches.hh EvtGenBase/EvtPdf.hh EvtGenBase/EvtPdfMax.hh EvtGenBase/EvtPdfSum.hh EvtGenBase/EvtPDL.hh EvtGenBase/EvtPhotonParticle.hh EvtGenBase/EvtPoint1D.hh EvtGenBase/EvtPointPred.hh EvtGenBase/EvtPredGen.hh EvtGenBase/EvtPropagator.hh EvtGenBase/EvtPropBreitWigner.hh EvtGenBase/EvtPropBreitWignerRel.hh EvtGenBase/EvtPropFlatte.hh EvtGenBase/EvtPropGounarisSakurai.hh EvtGenBase/EvtPto3PAmpFactory.hh EvtGenBase/EvtPto3PAmp.hh EvtGenBase/EvtPto3PAmpSmpResolution.hh EvtGenBase/EvtRadCorr.hh EvtGenBase/EvtRandomEngine.hh EvtGenBase/EvtRandom.hh EvtGenBase/EvtRaritaSchwinger.hh EvtGenBase/EvtRaritaSchwingerParticle.hh EvtGenBase/EvtRelBreitWignerBarrierFact.hh EvtGenBase/EvtReport.hh EvtGenBase/EvtResonance2.hh EvtGenBase/EvtResonance.hh EvtGenBase/EvtScalarParticle.hh EvtGenBase/EvtSecondary.hh EvtGenBase/EvtSemiLeptonicAmp.hh EvtGenBase/EvtSemiLeptonicBaryonAmp.hh EvtGenBase/EvtSemiLeptonicFF.hh EvtGenBase/EvtSemiLeptonicScalarAmp.hh EvtGenBase/EvtSemiLeptonicTensorAmp.hh EvtGenBase/EvtSemiLeptonicVectorAmp.hh EvtGenBase/EvtSimpleRandomEngine.hh EvtGenBase/EvtSpinAmp.hh EvtGenBase/EvtSpinDensity.hh EvtGenBase/EvtSpinType.hh EvtGenBase/EvtStatus.hh EvtGenBase/EvtStdHep.hh EvtGenBase/EvtStdlibRandomEngine.hh EvtGenBase/EvtStreamAdapter.hh EvtGenBase/EvtStreamInputIterator.hh EvtGenBase/EvtStringHash.hh EvtGenBase/EvtStringParticle.hh EvtGenBase/EvtSymTable.hh EvtGenBase/EvtTensor3C.hh EvtGenBase/EvtTensor4C.hh EvtGenBase/EvtTensorParticle.hh EvtGenBase/EvtTwoBodyKine.hh EvtGenBase/EvtTwoBodyVertex.hh EvtGenBase/EvtValError.hh EvtGenBase/EvtVector3C.hh EvtGenBase/EvtVector3R.hh EvtGenBase/EvtVector4C.hh EvtGenBase/EvtVector4R.hh EvtGenBase/EvtVectorParticle.hh)
-
-set ( EINCLUDE  TEvtGen TEvtGen/EvtGenBase)
-
-set ( DHDR EvtGenBase/EvtGenBaseLinkDef.h)
diff --git a/TEvtGen/CMakelibEvtGenExternal.pkg b/TEvtGen/CMakelibEvtGenExternal.pkg
new file mode 100644 (file)
index 0000000..0229134
--- /dev/null
@@ -0,0 +1,63 @@
+#--------------------------------------------------------------------------------#
+# Package File for EvtGen                                                        #
+# Author : Johny Jose (johny.jose@cern.ch)                                       #
+# Variables Defined :                                                            #
+#                                                                                #
+# SRCS - C++ source files                                                        #
+# HDRS - C++ header files                                                        #
+# DHDR - ROOT Dictionary Linkdef header file                                     #
+# CSRCS - C source files                                                         #
+# CHDRS - C header files                                                         #
+# EINCLUDE - Include directories                                                 #
+# EDEFINE - Compiler definitions                                                 #
+# ELIBS - Extra libraries to link                                                #
+# ELIBSDIR - Extra library directories                                           #
+# PACKFFLAGS - Fortran compiler flags for package                                #
+# PACKCXXFLAGS - C++ compiler flags for package                                  #
+# PACKCFLAGS - C compiler flags for package                                      #
+# PACKSOFLAGS - Shared library linking flags                                     #
+# PACKLDFLAGS - Module linker flags                                              #
+# PACKBLIBS - Libraries to link (Executables only)                               #
+# EXPORT - Header files to be exported                                           #
+# CINTHDRS - Dictionary header files                                             #
+# CINTAUTOLINK - Set automatic dictionary generation                             #
+# ARLIBS - Archive Libraries and objects for linking (Executables only)          #
+# SHLIBS - Shared Libraries and objects for linking (Executables only)           #
+#--------------------------------------------------------------------------------#
+
+set ( SRCS  
+EvtGenExternal/EvtExternalGenFactory.cpp
+EvtGenExternal/EvtExternalGenList.cpp
+EvtGenExternal/EvtPHOTOS.cpp
+EvtGenExternal/EvtPhotosEngine.cpp
+EvtGenExternal/EvtPythia6CommandConverter.cpp
+EvtGenExternal/EvtPythia.cpp
+EvtGenExternal/EvtPythiaEngine.cpp
+EvtGenExternal/EvtTauola.cpp
+EvtGenExternal/EvtTauolaEngine.cpp
+)
+
+
+set ( HDRS 
+EvtGenExternal/EvtExternalGenFactory.hh
+EvtGenExternal/EvtExternalGenList.hh
+EvtGenExternal/EvtPhotosEngine.hh
+EvtGenExternal/EvtPHOTOS.hh
+EvtGenExternal/EvtPythia6CommandConverter.hh
+EvtGenExternal/EvtPythiaEngine.hh
+EvtGenExternal/EvtPythia.hh
+EvtGenExternal/EvtPythiaRandom.hh
+EvtGenExternal/EvtTauolaEngine.hh
+EvtGenExternal/EvtTauola.hh
+)
+
+set (EVTGEN_PYTHIA "ON")
+set (EVTGEN_PHOTOS "ON")
+set (EVTGEN_TAUOLA "ON")
+
+set ( CXXFLAGS "${CXXFLAGS} -D EVTGEN_PYTHIA -D EVTGEN_PHOTOS -D EVTGEN_TAUOLA")
+
+
+set ( EINCLUDE TEvtGen EVGEN TEvtGen/Photos TEvtGen/Tauola TEvtGen/HepMC/ PYTHIA8)
+
+
diff --git a/TEvtGen/CMakelibEvtGenModels.pkg b/TEvtGen/CMakelibEvtGenModels.pkg
deleted file mode 100644 (file)
index 968bf41..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#--------------------------------------------------------------------------------#
-# Package File for EvtGenModels                                                  #
-# Author : Johny Jose (johny.jose@cern.ch)                                       #
-# Variables Defined :                                                            #
-#                                                                                #
-# SRCS - C++ source files                                                        #
-# HDRS - C++ header files                                                        #
-# DHDR - ROOT Dictionary Linkdef header file                                     #
-# CSRCS - C source files                                                         #
-# CHDRS - C header files                                                         #
-# EINCLUDE - Include directories                                                 #
-# EDEFINE - Compiler definitions                                                 #
-# ELIBS - Extra libraries to link                                                #
-# ELIBSDIR - Extra library directories                                           #
-# PACKFFLAGS - Fortran compiler flags for package                                #
-# PACKCXXFLAGS - C++ compiler flags for package                                  #
-# PACKCFLAGS - C compiler flags for package                                      #
-# PACKSOFLAGS - Shared library linking flags                                     #
-# PACKLDFLAGS - Module linker flags                                              #
-# PACKBLIBS - Libraries to link (Executables only)                               #
-# EXPORT - Header files to be exported                                           #
-# CINTHDRS - Dictionary header files                                             #
-# CINTAUTOLINK - Set automatic dictionary generation                             #
-# ARLIBS - Archive Libraries and objects for linking (Executables only)          #
-# SHLIBS - Shared Libraries and objects for linking (Executables only)           #
-#--------------------------------------------------------------------------------#
-
-set ( SRCS  EvtGenModels/EvtBBScalar.cxx EvtGenModels/EvtBHadronic.cxx EvtGenModels/EvtBTo3piCP.cxx EvtGenModels/EvtBTo4piCP.cxx EvtGenModels/EvtBToKpipiCP.cxx EvtGenModels/EvtBToPlnuBK.cxx EvtGenModels/EvtBToPlnuBKFF.cxx EvtGenModels/EvtBToVlnuBall.cxx EvtGenModels/EvtBToVlnuBallFF.cxx EvtGenModels/EvtBsquark.cxx EvtGenModels/EvtBto2piCPiso.cxx EvtGenModels/EvtBtoKD3P.cxx EvtGenModels/EvtBtoKpiCPiso.cxx EvtGenModels/EvtBtoXsEtap.cxx EvtGenModels/EvtBtoXsgamma.cxx EvtGenModels/EvtBtoXsgammaAbsModel.cxx EvtGenModels/EvtBtoXsgammaAliGreub.cxx EvtGenModels/EvtBtoXsgammaFermiUtil.cxx EvtGenModels/EvtBtoXsgammaFixedMass.cxx EvtGenModels/EvtBtoXsgammaFlatEnergy.cxx EvtGenModels/EvtBtoXsgammaKagan.cxx EvtGenModels/EvtBtoXsgammaRootFinder.cxx EvtGenModels/EvtBtoXsll.cxx EvtGenModels/EvtBtoXsllUtil.cxx EvtGenModels/EvtCBTo3piMPP.cxx EvtGenModels/EvtCBTo3piP00.cxx EvtGenModels/EvtD0mixDalitz.cxx EvtGenModels/EvtDDalitz.cxx EvtGenModels/EvtDMix.cxx EvtGenModels/EvtEtaDalitz.cxx EvtGenModels/EvtFlatQ2.cxx EvtGenModels/EvtGoityRoberts.cxx EvtGenModels/EvtHQET.cxx EvtGenModels/EvtHQET2.cxx EvtGenModels/EvtHQET2FF.cxx EvtGenModels/EvtHQETFF.cxx EvtGenModels/EvtHelAmp.cxx EvtGenModels/EvtHypNonLepton.cxx EvtGenModels/EvtISGW.cxx EvtGenModels/EvtISGW2.cxx EvtGenModels/EvtISGW2FF.cxx EvtGenModels/EvtISGWFF.cxx EvtGenModels/EvtItgAbsFunction.cxx EvtGenModels/EvtItgAbsIntegrator.cxx EvtGenModels/EvtItgFourCoeffFcn.cxx EvtGenModels/EvtItgFunction.cxx EvtGenModels/EvtItgPtrFunction.cxx EvtGenModels/EvtItgSimpsonIntegrator.cxx EvtGenModels/EvtItgThreeCoeffFcn.cxx EvtGenModels/EvtItgTwoCoeffFcn.cxx EvtGenModels/EvtKKLambdaC.cxx EvtGenModels/EvtKKLambdaCFF.cxx EvtGenModels/EvtKstarnunu.cxx EvtGenModels/EvtKstarstargamma.cxx EvtGenModels/EvtLNuGamma.cxx EvtGenModels/EvtLambdaP_BarGamma.cxx EvtGenModels/EvtLb2Lll.cxx EvtGenModels/EvtMelikhov.cxx EvtGenModels/EvtMelikhovFF.cxx EvtGenModels/EvtModelReg.cxx EvtGenModels/EvtMultibody.cxx EvtGenModels/EvtOmegaDalitz.cxx EvtGenModels/EvtPFermi.cxx EvtGenModels/EvtPHOTOS.cxx EvtGenModels/EvtPartWave.cxx EvtGenModels/EvtPhiDalitz.cxx EvtGenModels/EvtPhsp.cxx EvtGenModels/EvtPi0Dalitz.cxx EvtGenModels/EvtPropSLPole.cxx EvtGenModels/EvtPto3P.cxx EvtGenModels/EvtSLBKPole.cxx EvtGenModels/EvtSLBKPoleFF.cxx EvtGenModels/EvtSLN.cxx EvtGenModels/EvtSLPole.cxx EvtGenModels/EvtSLPoleFF.cxx EvtGenModels/EvtSSDCP.cxx EvtGenModels/EvtSSSCP.cxx EvtGenModels/EvtSSSCPT.cxx EvtGenModels/EvtSSSCPpng.cxx EvtGenModels/EvtSTS.cxx EvtGenModels/EvtSTSCP.cxx EvtGenModels/EvtSVPCP.cxx EvtGenModels/EvtSVPHelAmp.cxx EvtGenModels/EvtSVS.cxx EvtGenModels/EvtSVSCP.cxx EvtGenModels/EvtSVSCPLH.cxx EvtGenModels/EvtSVSCPiso.cxx EvtGenModels/EvtSVSNONCPEIGEN.cxx EvtGenModels/EvtSVVCP.cxx EvtGenModels/EvtSVVCPLH.cxx EvtGenModels/EvtSVVHelAmp.cxx EvtGenModels/EvtSVVHelCPMix.cxx EvtGenModels/EvtSVVNONCPEIGEN.cxx EvtGenModels/EvtSingleParticle.cxx EvtGenModels/EvtSll.cxx EvtGenModels/EvtTSS.cxx EvtGenModels/EvtTVSPwave.cxx EvtGenModels/EvtTauHadnu.cxx EvtGenModels/EvtTauScalarnu.cxx EvtGenModels/EvtTauVectornu.cxx EvtGenModels/EvtTaulnunu.cxx EvtGenModels/EvtVPHOtoV.cxx EvtGenModels/EvtVPHOtoVISR.cxx EvtGenModels/EvtVPHOtoVISRHi.cxx EvtGenModels/EvtVSPPwave.cxx EvtGenModels/EvtVSS.cxx EvtGenModels/EvtVSSBMixCPT.cxx EvtGenModels/EvtVSSMix.cxx EvtGenModels/EvtVVP.cxx EvtGenModels/EvtVVPIPI_WEIGHTED.cxx EvtGenModels/EvtVVSPwave.cxx EvtGenModels/EvtVVpipi.cxx EvtGenModels/EvtVectorIsr.cxx EvtGenModels/EvtVll.cxx EvtGenModels/EvtVtoSll.cxx EvtGenModels/EvtVub.cxx EvtGenModels/EvtVubAC.cxx EvtGenModels/EvtVubBLNP.cxx EvtGenModels/EvtVubBLNPHybrid.cxx EvtGenModels/EvtVubHybrid.cxx EvtGenModels/EvtVubNLO.cxx EvtGenModels/EvtVubdGamma.cxx EvtGenModels/EvtWilsonCoeficients.cxx EvtGenModels/EvtY3SToY1SpipiMoxhay.cxx EvtGenModels/EvtYmSToYnSpipiCLEO.cxx EvtGenModels/EvtbTosllAli.cxx EvtGenModels/EvtbTosllAliFF.cxx EvtGenModels/EvtbTosllAmp.cxx EvtGenModels/EvtbTosllBall.cxx EvtGenModels/EvtbTosllBallFF.cxx EvtGenModels/EvtbTosllScalarAmp.cxx EvtGenModels/EvtbTosllVectorAmp.cxx EvtGenModels/rly.cxx EvtGenModels/EvtPycont.cxx EvtGenModels/EvtPyGaGa.cxx EvtGenModels/EvtPythia.cxx)
-
-set ( HDRS  EvtGenModels/EvtBBScalar.hh EvtGenModels/EvtBHadronic.hh EvtGenModels/EvtBsquark.hh EvtGenModels/EvtBto2piCPiso.hh EvtGenModels/EvtBTo3piCP.hh EvtGenModels/EvtBTo4piCP.hh EvtGenModels/EvtBtoKD3P.hh EvtGenModels/EvtBtoKpiCPiso.hh EvtGenModels/EvtBToKpipiCP.hh EvtGenModels/EvtBToPlnuBKFF.hh EvtGenModels/EvtBToPlnuBK.hh EvtGenModels/EvtbTosllAliFF.hh EvtGenModels/EvtbTosllAli.hh EvtGenModels/EvtbTosllAmp.hh EvtGenModels/EvtbTosllBallFF.hh EvtGenModels/EvtbTosllBall.hh EvtGenModels/EvtbTosllFF.hh EvtGenModels/EvtbTosllScalarAmp.hh EvtGenModels/EvtbTosllVectorAmp.hh EvtGenModels/EvtBToVlnuBallFF.hh EvtGenModels/EvtBToVlnuBall.hh EvtGenModels/EvtBtoXsEtap.hh EvtGenModels/EvtBtoXsgammaAbsModel.hh EvtGenModels/EvtBtoXsgammaAliGreub.hh EvtGenModels/EvtBtoXsgammaFermiUtil.hh EvtGenModels/EvtBtoXsgammaFixedMass.hh EvtGenModels/EvtBtoXsgammaFlatEnergy.hh EvtGenModels/EvtBtoXsgamma.hh EvtGenModels/EvtBtoXsgammaKagan.hh EvtGenModels/EvtBtoXsgammaRootFinder.hh EvtGenModels/EvtBtoXsll.hh EvtGenModels/EvtBtoXsllUtil.hh EvtGenModels/EvtCBTo3piMPP.hh EvtGenModels/EvtCBTo3piP00.hh EvtGenModels/EvtD0mixDalitz.hh EvtGenModels/EvtDDalitz.hh EvtGenModels/EvtDMix.hh EvtGenModels/EvtEtaDalitz.hh EvtGenModels/EvtFlatQ2.hh EvtGenModels/EvtGoityRoberts.hh EvtGenModels/EvtHelAmp.hh EvtGenModels/EvtHQET2FF.hh EvtGenModels/EvtHQET2.hh EvtGenModels/EvtHQETFF.hh EvtGenModels/EvtHQET.hh EvtGenModels/EvtHypNonLepton.hh EvtGenModels/EvtIntervalDecayAmp.hh EvtGenModels/EvtISGW2FF.hh EvtGenModels/EvtISGW2.hh EvtGenModels/EvtISGWFF.hh EvtGenModels/EvtISGW.hh EvtGenModels/EvtItgAbsFunction.hh EvtGenModels/EvtItgAbsIntegrator.hh EvtGenModels/EvtItgFourCoeffFcn.hh EvtGenModels/EvtItgFunction.hh EvtGenModels/EvtItgPtrFunction.hh EvtGenModels/EvtItgSimpsonIntegrator.hh EvtGenModels/EvtItgThreeCoeffFcn.hh EvtGenModels/EvtItgTwoCoeffFcn.hh EvtGenModels/EvtKKLambdaCFF.hh EvtGenModels/EvtKKLambdaC.hh EvtGenModels/EvtKstarnunu.hh EvtGenModels/EvtKstarstargamma.hh EvtGenModels/EvtLambdaP_BarGamma.hh EvtGenModels/EvtLb2Lll.hh EvtGenModels/EvtLNuGamma.hh EvtGenModels/EvtMelikhovFF.hh EvtGenModels/EvtMelikhov.hh EvtGenModels/EvtModelReg.hh EvtGenModels/EvtMultibody.hh EvtGenModels/EvtOmegaDalitz.hh EvtGenModels/EvtPartWave.hh EvtGenModels/EvtPFermi.hh EvtGenModels/EvtPhiDalitz.hh EvtGenModels/EvtPHOTOS.hh EvtGenModels/EvtPhsp.hh EvtGenModels/EvtPi0Dalitz.hh EvtGenModels/EvtPropSLPole.hh EvtGenModels/EvtPto3P.hh EvtGenModels/EvtSingleParticle.hh EvtGenModels/EvtSLBKPoleFF.hh EvtGenModels/EvtSLBKPole.hh EvtGenModels/EvtSll.hh EvtGenModels/EvtSLN.hh EvtGenModels/EvtSLPoleFF.hh EvtGenModels/EvtSLPole.hh EvtGenModels/EvtSSDCP.hh EvtGenModels/EvtSSSCP.hh EvtGenModels/EvtSSSCPpng.hh EvtGenModels/EvtSSSCPT.hh EvtGenModels/EvtSTSCP.hh EvtGenModels/EvtSTS.hh EvtGenModels/EvtSVPCP.hh EvtGenModels/EvtSVPHelAmp.hh EvtGenModels/EvtSVSCP.hh EvtGenModels/EvtSVSCPiso.hh EvtGenModels/EvtSVSCPLH.hh EvtGenModels/EvtSVS.hh EvtGenModels/EvtSVSNONCPEIGEN.hh EvtGenModels/EvtSVVCP.hh EvtGenModels/EvtSVVCPLH.hh EvtGenModels/EvtSVVHelAmp.hh EvtGenModels/EvtSVVHelCPMix.hh EvtGenModels/EvtSVVNONCPEIGEN.hh EvtGenModels/EvtTauHadnu.hh EvtGenModels/EvtTaulnunu.hh EvtGenModels/EvtTauScalarnu.hh EvtGenModels/EvtTauVectornu.hh EvtGenModels/EvtTSS.hh EvtGenModels/EvtTVSPwave.hh EvtGenModels/EvtVectorIsr.hh EvtGenModels/EvtVll.hh EvtGenModels/EvtVPHOtoV.hh EvtGenModels/EvtVPHOtoVISR.hh EvtGenModels/EvtVPHOtoVISRHi.hh EvtGenModels/EvtVSPPwave.hh EvtGenModels/EvtVSSBMixCPT.hh EvtGenModels/EvtVSS.hh EvtGenModels/EvtVSSMix.hh EvtGenModels/EvtVtoSll.hh EvtGenModels/EvtVubAC.hh EvtGenModels/EvtVubBLNP.hh EvtGenModels/EvtVubBLNPHybrid.hh EvtGenModels/EvtVubdGamma.hh EvtGenModels/EvtVub.hh EvtGenModels/EvtVubHybrid.hh EvtGenModels/EvtVubNLO.hh EvtGenModels/EvtVVP.hh EvtGenModels/EvtVVpipi.hh EvtGenModels/EvtVVPIPI_WEIGHTED.hh EvtGenModels/EvtVVSPwave.hh EvtGenModels/EvtWilsonCoeficients.hh EvtGenModels/EvtY3SToY1SpipiMoxhay.hh EvtGenModels/EvtYmSToYnSpipiCLEO.hh EvtGenModels/EvtPycont.hh EvtGenModels/EvtPyGaGa.hh EvtGenModels/EvtPythia.hh)
-
-set ( DHDR EvtGenModels/EvtGenModelsLinkDef.h)
-
-set ( EXPORT )
-
-set ( EINCLUDE  TEvtGen TEvtGen/EvtGenModels)
-
-set ( FSRCS  EvtGenModels/EvtBTo3pi.F EvtGenModels/EvtBTo3piMPP.F EvtGenModels/EvtBTo3piP00.F EvtGenModels/EvtBToKpipi.F EvtGenModels/EvtLi2Spence.F EvtGenModels/begevtgenget.F EvtGenModels/begevtgengetx.F EvtGenModels/begevtgenstore.F EvtGenModels/begevtgenstorex.F EvtGenModels/pykcut.F EvtGenModels/pytime.F EvtGenModels/Pythia.F)
diff --git a/TEvtGen/CMakelibHepMC.pkg b/TEvtGen/CMakelibHepMC.pkg
new file mode 100644 (file)
index 0000000..4fb0887
--- /dev/null
@@ -0,0 +1,95 @@
+#--------------------------------------------------------------------------------#
+# Package File for EvtGen                                                        #
+# Author : Johny Jose (johny.jose@cern.ch)                                       #
+# Variables Defined :                                                            #
+#                                                                                #
+# SRCS - C++ source files                                                        #
+# HDRS - C++ header files                                                        #
+# DHDR - ROOT Dictionary Linkdef header file                                     #
+# CSRCS - C source files                                                         #
+# CHDRS - C header files                                                         #
+# EINCLUDE - Include directories                                                 #
+# EDEFINE - Compiler definitions                                                 #
+# ELIBS - Extra libraries to link                                                #
+# ELIBSDIR - Extra library directories                                           #
+# PACKFFLAGS - Fortran compiler flags for package                                #
+# PACKCXXFLAGS - C++ compiler flags for package                                  #
+# PACKCFLAGS - C compiler flags for package                                      #
+# PACKSOFLAGS - Shared library linking flags                                     #
+# PACKLDFLAGS - Module linker flags                                              #
+# PACKBLIBS - Libraries to link (Executables only)                               #
+# EXPORT - Header files to be exported                                           #
+# CINTHDRS - Dictionary header files                                             #
+# CINTAUTOLINK - Set automatic dictionary generation                             #
+# ARLIBS - Archive Libraries and objects for linking (Executables only)          #
+# SHLIBS - Shared Libraries and objects for linking (Executables only)           #
+#--------------------------------------------------------------------------------#
+
+set ( SRCS  HepMC/CompareGenEvent.cc
+HepMC/filterEvent.cc
+HepMC/Flow.cc
+HepMC/GenCrossSection.cc
+HepMC/GenEvent.cc
+HepMC/GenEventStreamIO.cc
+HepMC/GenParticle.cc
+HepMC/GenRanges.cc
+HepMC/GenVertex.cc
+HepMC/HeavyIon.cc
+HepMC/HEPEVT_Wrapper.cc
+HepMC/HerwigWrapper.cc
+HepMC/IO_AsciiParticles.cc
+HepMC/IO_GenEvent.cc
+HepMC/IO_HEPEVT.cc
+HepMC/IO_HERWIG.cc
+HepMC/PdfInfo.cc
+HepMC/Polarization.cc
+HepMC/SearchVector.cc
+HepMC/StreamHelpers.cc
+HepMC/StreamInfo.cc
+HepMC/WeightContainer.cc
+HepMC/Units.cc
+)
+
+
+
+set ( HDRS HepMC/CompareGenEvent.h
+HepMC/enable_if.h
+HepMC/Flow.h
+HepMC/GenCrossSection.h
+HepMC/GenEvent.h
+HepMC/GenParticle.h
+HepMC/GenRanges.h
+HepMC/GenVertex.h
+HepMC/HeavyIon.h
+HepMC/HEPEVT_Wrapper.h
+HepMC/HepMCDefs.h
+HepMC/HerwigWrapper.h
+HepMC/IO_AsciiParticles.h
+HepMC/IO_BaseClass.h
+HepMC/IO_Exception.h
+HepMC/IO_GenEvent.h
+HepMC/IO_HEPEVT.h
+HepMC/IO_HERWIG.h
+HepMC/is_arithmetic.h
+HepMC/IteratorRange.h
+HepMC/PdfInfo.h
+HepMC/Polarization.h
+HepMC/PythiaWrapper6_4.h
+HepMC/PythiaWrapper6_4_WIN32.h
+HepMC/PythiaWrapper.h
+HepMC/SearchVector.h
+HepMC/SimpleVector.h
+HepMC/SimpleVector.icc
+HepMC/StreamHelpers.h
+HepMC/StreamInfo.h
+HepMC/TempParticleMap.h
+HepMC/Units.h
+HepMC/Version.h
+HepMC/WeightContainer.h
+)
+
+set ( EINCLUDE TEvtGen TEvtGen/HepMC) 
+
+
+
+
diff --git a/TEvtGen/CMakelibPhotos.pkg b/TEvtGen/CMakelibPhotos.pkg
new file mode 100644 (file)
index 0000000..55a557d
--- /dev/null
@@ -0,0 +1,73 @@
+#--------------------------------------------------------------------------------#
+# Package File for EvtGen                                                        #
+# Author : Johny Jose (johny.jose@cern.ch)                                       #
+# Variables Defined :                                                            #
+#                                                                                #
+# SRCS - C++ source files                                                        #
+# HDRS - C++ header files                                                        #
+# DHDR - ROOT Dictionary Linkdef header file                                     #
+# CSRCS - C source files                                                         #
+# CHDRS - C header files                                                         #
+# EINCLUDE - Include directories                                                 #
+# EDEFINE - Compiler definitions                                                 #
+# ELIBS - Extra libraries to link                                                #
+# ELIBSDIR - Extra library directories                                           #
+# PACKFFLAGS - Fortran compiler flags for package                                #
+# PACKCXXFLAGS - C++ compiler flags for package                                  #
+# PACKCFLAGS - C compiler flags for package                                      #
+# PACKSOFLAGS - Shared library linking flags                                     #
+# PACKLDFLAGS - Module linker flags                                              #
+# PACKBLIBS - Libraries to link (Executables only)                               #
+# EXPORT - Header files to be exported                                           #
+# CINTHDRS - Dictionary header files                                             #
+# CINTAUTOLINK - Set automatic dictionary generation                             #
+# ARLIBS - Archive Libraries and objects for linking (Executables only)          #
+# SHLIBS - Shared Libraries and objects for linking (Executables only)           #
+#--------------------------------------------------------------------------------#
+
+set ( SRCS  
+Photos/forW-MEc.cxx
+Photos/forZ-MEc.cxx
+Photos/Log.cxx
+Photos/PH_HEPEVT_Interface.cxx
+Photos/PhotosBranch.cxx
+Photos/photosC.cxx
+Photos/Photos.cxx
+Photos/PhotosDebugRandom.cxx
+Photos/PhotosEvent.cxx
+Photos/PhotosHEPEVTEvent.cxx
+Photos/PhotosHEPEVTParticle.cxx
+Photos/PhotosHepMCEvent.cxx
+Photos/PhotosHepMCParticle.cxx
+Photos/PhotosParticle.cxx
+Photos/PhotosRandom.cxx
+Photos/PhotosUtilities.cxx
+)
+
+
+
+set ( HDRS  
+Photos/f_Init.h
+Photos/forW-MEc.h
+Photos/forZ-MEc.h
+Photos/Log.h
+Photos/PH_HEPEVT_Interface.h
+Photos/PhotosBranch.h
+Photos/PhotosDebugRandom.h
+Photos/PhotosEvent.h
+Photos/Photos.h
+Photos/PhotosHEPEVTEvent.h
+Photos/PhotosHEPEVTParticle.h
+Photos/PhotosHepMCEvent.h
+Photos/PhotosHepMCParticle.h
+Photos/PhotosParticle.h
+Photos/PhotosRandom.h
+Photos/PhotosUtilities.h
+)
+
+
+set ( EINCLUDE TEvtGen TEvtGen/HepMC TEvtGen/Photos) 
+
+
+
+
diff --git a/TEvtGen/CMakelibTauola.pkg b/TEvtGen/CMakelibTauola.pkg
new file mode 100644 (file)
index 0000000..31c9320
--- /dev/null
@@ -0,0 +1,44 @@
+#--------------------------------------------------------------------------------#
+# Package File for EvtGen                                                        #
+# Author : Johny Jose (johny.jose@cern.ch)                                       #
+# Variables Defined :                                                            #
+#                                                                                #
+# SRCS - C++ source files                                                        #
+# HDRS - C++ header files                                                        #
+# DHDR - ROOT Dictionary Linkdef header file                                     #
+# CSRCS - C source files                                                         #
+# CHDRS - C header files                                                         #
+# EINCLUDE - Include directories                                                 #
+# EDEFINE - Compiler definitions                                                 #
+# ELIBS - Extra libraries to link                                                #
+# ELIBSDIR - Extra library directories                                           #
+# PACKFFLAGS - Fortran compiler flags for package                                #
+# PACKCXXFLAGS - C++ compiler flags for package                                  #
+# PACKCFLAGS - C compiler flags for package                                      #
+# PACKSOFLAGS - Shared library linking flags                                     #
+# PACKLDFLAGS - Module linker flags                                              #
+# PACKBLIBS - Libraries to link (Executables only)                               #
+# EXPORT - Header files to be exported                                           #
+# CINTHDRS - Dictionary header files                                             #
+# CINTAUTOLINK - Set automatic dictionary generation                             #
+# ARLIBS - Archive Libraries and objects for linking (Executables only)          #
+# SHLIBS - Shared Libraries and objects for linking (Executables only)           #
+#--------------------------------------------------------------------------------#
+
+set ( SRCS Tauola/DecayList.cxx Tauola/Log.cxx Tauola/Plots.cxx Tauola/Tauola.cxx Tauola/TauolaEvent.cxx Tauola/TauolaHEPEVTEvent.cxx Tauola/TauolaHEPEVTParticle.cxx Tauola/TauolaHepMCEvent.cxx Tauola/TauolaHepMCParticle.cxx Tauola/TauolaParticle.cxx Tauola/TauolaParticlePair.cxx Tauola/f_Decay.cxx Tauola/f_FilHep.cxx Tauola/f_Init.cxx)
+
+set ( HDRS Tauola/DecayList.h Tauola/f_Variables.h Tauola/Log.h Tauola/Plots.h Tauola/TauolaEvent.h Tauola/Tauola.h Tauola/TauolaHEPEVTEvent.h Tauola/TauolaHEPEVTParticle.h Tauola/TauolaHepMCEvent.h Tauola/TauolaHepMCParticle.h Tauola/TauolaParticle.h Tauola/TauolaParticlePair.h Tauola/f_Decay.h Tauola/f_FilHep.h Tauola/f_Init.h)
+
+set ( FFLAGS "-O2 -fPIC -fno-automatic -fno-backslash -ffixed-line-length-132")
+
+
+set ( FSRCS Tauola/tauola-fortran/curr_cleo.f Tauola/tauola-fortran/f3pi.f Tauola/tauola-fortran/formf.f Tauola/tauola-fortran/pkorb.f Tauola/tauola-fortran/tauola.f Tauola/tauola-fortran/new-currents/other-currents/frho_pi_belle.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/f3pi_rcht.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/funct_3pi.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/FA1RCHL.f  Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/ffwid3pi.f 
+Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/funct_rpt.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gaus_integr.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gfact.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1Tab.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1TabKKpi.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/value_parameter.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fit.f Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fitKKpi.f Tauola/tauola_extras.f)
+
+
+
+set ( EINCLUDE TEvtGen/Tauola TEvtGen/Tauola/tauola-fortran TEvtGen/HepMC  TEvtGen/Photos) 
+
+
+
+
index 4c8511374794e94b57a6338db22d65217811eaf3..57947163fb1cbab8c5c34cdd83922a546ed361f5 100644 (file)
@@ -1,10 +1,24 @@
-# $Id: DECAY.DEC,v 1.271 2009/02/15 18:43:38 ryd Exp $
+# $Id: DECAY.DEC,v 1.55 2009-11-26 14:16:27 robbep Exp $
+# Updated to PDG 2010 by Tomas Pilar - T.Pilar@warwick.ac.uk
+# Updated Mixing Parameters Mark Whitehead May 2009
 #
-#Define the B0B0bar mass difference
-Define dm 0.489e12
-Define dgamma 0
-Define qoverp 1
-Define phaseqoverp 0
+Define qoverp_incohMix_B_s0 1.0
+Define dm_incohMix_B_s0 17.8e12
+Define qoverp_incohMix_B0 1.0
+Define dm_incohMix_B0 0.507e12
+# Old definition of dm still in some decay models
+Define dm 0.507e12
+#Define dgamma 0
+#Define qoverp 1
+#Define phaseqoverp 0
+#Define values for B0s mixing
+#Define dms 20.e12
+# DeltaGammas corresponds to DG/G = 10%
+#Define dgammas 6.852e10
+# Activate incoherent Mixing
+### TODO: find a way to give mixing parameters through decay file to EvtGen
+#####yesIncoherentB0Mixing dm  dgamma
+#####yesIncoherentBsMixing dms dgammas
 # define the values of the CKM angles  (alpha=70, beta=40)
 Define alpha 1.365
 Define beta  0.39
@@ -30,14 +44,6 @@ Define phAplus  2.5
 Define phAzero  0.0
 Define phAminus -0.17
 
-### These are for incoherent B_s and B_d mixing
-Define qoverp_incohMix_B_s0 1.0
-Define dm_incohMix_B_s0 17.1e12
-Define qoverp_incohMix_B0 1.0
-Define dm_incohMix_B0 0.489e12
-Define qoverp_incohMix_D0 1.0
-Define dm_incohMix_D0 0.0
-
 #
 # These particle aliases are used in for CP violating decays
 # in which the decay distributions depends on how the K* decayed.
@@ -58,339 +64,195 @@ ChargeConj K*L    K*BL
 ChargeConj K*S    K*BS
 ChargeConj K*0T    anti-K*0T
 ChargeConj K_0*0N  anti-K_0*0N
-ChargeConj K*0R    K*BR    
+ChargeConj K*0R    K*BR
+#
+#  PR LHCb: Alias for signal productions in LHCb
+#
+Alias      B0sig             B0
+Alias      anti-B0sig        anti-B0
+ChargeConj B0sig             anti-B0sig
+Alias      B+sig             B+
+Alias      B-sig             B-
+ChargeConj B+sig             B-sig
+Alias      B_s0sig           B_s0
+Alias      anti-B_s0sig      anti-B_s0
+ChargeConj B_s0sig           anti-B_s0sig
+Alias      B_c+sig           B_c+
+Alias      B_c-sig           B_c-
+ChargeConj B_c+sig           B_c-sig
+Alias      eta_bsig          eta_b
+ChargeConj eta_bsig          eta_bsig
+Alias      h_bsig            h_b
+ChargeConj h_bsig            h_bsig
+Alias      Sigma_b-sig       Sigma_b-
+Alias      anti-Sigma_b+sig  anti-Sigma_b+
+ChargeConj Sigma_b-sig       anti-Sigma_b+sig
+Alias      Lambda_b0sig      Lambda_b0
+Alias      anti-Lambda_b0sig anti-Lambda_b0
+ChargeConj Lambda_b0sig      anti-Lambda_b0sig
+Alias      Omega_b-sig       Omega_b-
+Alias      anti-Omega_b+sig  anti-Omega_b+
+ChargeConj Omega_b-sig       anti-Omega_b+sig
+Alias      Xi_b-sig          Xi_b-
+Alias      anti-Xi_b+sig     anti-Xi_b+
+ChargeConj Xi_b-sig          anti-Xi_b+sig
+Alias      Xi_b0sig          Xi_b0
+Alias      anti-Xi_b0sig     anti-Xi_b0
+ChargeConj Xi_b0sig          anti-Xi_b0sig
+Alias      J/psisig          J/psi
+ChargeConj J/psisig          J/psisig
+Alias      chi_c0sig         chi_c0
+ChargeConj chi_c0sig         chi_c0sig
+Alias      chi_c1sig         chi_c1
+ChargeConj chi_c1sig         chi_c1sig
+Alias      chi_c2sig         chi_c2
+ChargeConj chi_c2sig         chi_c2sig
+Alias      psi(2S)sig        psi(2S)
+ChargeConj psi(2S)sig        psi(2S)sig
+Alias      psi(3770)sig      psi(3770)
+ChargeConj psi(3770)sig      psi(3770)sig
+Alias      D*+sig            D*+
+Alias      D*-sig            D*-
+ChargeConj D*+sig            D*-sig
+Alias      D*0sig            D*0
+Alias      anti-D*0sig       anti-D*0
+ChargeConj D*0sig            anti-D*0sig
+Alias      D0sig             D0
+Alias      anti-D0sig        anti-D0
+ChargeConj D0sig             anti-D0sig
+Alias      D+sig             D+
+Alias      D-sig             D-
+ChargeConj D+sig             D-sig
+Alias      D_s+sig           D_s+
+Alias      D_s-sig           D_s-
+ChargeConj D_s+sig           D_s-sig
+Alias      Lambda_c+sig      Lambda_c+
+Alias      anti-Lambda_c-sig anti-Lambda_c-
+ChargeConj Lambda_c+sig      anti-Lambda_c-sig
+Alias      tau+sig           tau+
+Alias      tau-sig           tau-
+ChargeConj tau+sig           tau-sig
+Alias      Upsilonsig        Upsilon
+ChargeConj Upsilonsig        Upsilonsig
+Alias      Upsilon(2S)sig    Upsilon(2S)
+ChargeConj Upsilon(2S)sig    Upsilon(2S)sig
+Alias      Upsilon(3S)sig    Upsilon(3S)
+ChargeConj Upsilon(3S)sig    Upsilon(3S)sig
+Alias      Upsilon(4S)sig    Upsilon(4S)
+ChargeConj Upsilon(4S)sig    Upsilon(4S)sig
+Alias      Upsilon(5S)sig    Upsilon(5S)
+ChargeConj Upsilon(5S)sig    Upsilon(5S)sig
+Alias      X_1(3872)sig      X_1(3872)
+ChargeConj X_1(3872)sig      X_1(3872)sig
+Alias      h_csig            h_c
+ChargeConj h_csig            h_csig
+Alias      Sigma+sig         Sigma+
+Alias      anti-Sigma-sig    anti-Sigma-
+ChargeConj Sigma+sig         anti-Sigma-sig
+Alias      Lambda0sig        Lambda0
+Alias      anti-Lambda0sig   anti-Lambda0
+ChargeConj Lambda0sig        anti-Lambda0sig
+Alias      B_10sig           B_10
+Alias      anti-B_10sig      anti-B_10
+ChargeConj B_10sig           anti-B_10sig
+Alias      B_2*0sig          B_2*0
+Alias      anti-B_2*0sig     anti-B_2*0
+ChargeConj B_2*0sig          anti-B_2*0sig
+Alias      B_s10sig          B_s10
+Alias      anti-B_s10sig     anti-B_s10
+ChargeConj B_s10sig          anti-B_s10sig
+Alias      B_s2*0sig         B_s2*0
+Alias      anti-B_s2*0sig    anti-B_s2*0
+ChargeConj B_s2*0sig         anti-B_s2*0sig
+Alias      B_1+sig           B_1+
+Alias      B_1-sig           B_1-
+ChargeConj B_1+sig           B_1-sig
+Alias      B_2*+sig          B_2*+
+Alias      B_2*-sig          B_2*-
+ChargeConj B_2*+sig          B_2*-sig
 #
 #JetSet parameter modifications
-#
-# O.Long : March 30, 2000
-#  Change from using Peterson fragmentation to Lund fragmentation
-#  with the default parameters (A=0.30, B=0.58)
-#
 #(Very important that there are no blank spaces in the parameter string!)
-# Number of flavor produced. 5 = udscb production
-JetSetPar MSTJ(104)=5
-# turn on initial state radiation (was off before)
- #JetSetPar MSTJ(107)=1
-#use Lund fragmentation with default parameters
-JetSetPar MSTJ(11)=4
-# Lund symmetric fragmentation function parameter a 
-JetSetPar PARJ(41)=.30
-# Lund symmetric fragmentation function parameter b 
-JetSetPar PARJ(42)=.58
-# Lund symmetric fragmentation function parameter a 
-JetSetPar PARJ(43)=.50
-# Lund symmetric fragmentation function parameter b 
-JetSetPar PARJ(44)=.90
-#eps_c   from CLEO 8/97
- #JetSetPar PARJ(54)=-.040
-# eps_b
- #JetSetPar PARJ(55)=-.004
 #Turn of B0-B0B mixing in JetSet:
- #JetSetPar MSTJ(26)=0
-# D* production - Lange July 19, 2002
-#050214 JetSetPar PARJ(13)=0.45
- #JetSetPar PARJ(13)=0.4
-# eta'
-# lange - change eta' production to agree better with udsc results
-# from charmless group
-#050214 JetSetPar PARJ(26)=0.15
- #JetSetPar PARJ(26)=0.1
-# lange - change eta production to agree better with udsc results
-# from charmless group
-#050214 JetSetPar PARJ(25)=1.0
- #JetSetPar PARJ(25)=0.6
-# P(ssbar)/P(uubar) - has a big effect on phis. Turn down to 
-# reduce phi production in continuum.
-#050214 was no change
- #JetSetPar PARJ(2)=0.26
-#050214JetSetPar PARJ(12)=0.2
- #JetSetPar PARJ(12)=0.55
- #JetSetPar PARJ(11)=0.4
-#lange/Petersen Nov 14, 2004 baryon production turned down for sp8
- #JetSetPar PARJ(1)=0.065
-# control of L=1 mesons (in order: J1S0 J0S1 J1S1 J2S1
- #JetSetPar PARJ(14)=0.05
- #JetSetPar PARJ(15)=0.05
- #JetSetPar PARJ(16)=0.05
- #JetSetPar PARJ(17)=0.05
-#cut-off parameter used to stop fragmentation process (was .4, CLEO uses.3)
- #JetSetPar PARJ(33)=0.3
-#
-### Parameters below are a new tuning of the continuum
-### fragmentation that softens the pion spectrum
-### but commented out untill verified to be physically
-### sound. ryd 00-02-10
-### Lund symmetric fragmentation function parameter a 
-##JetSetPar PARJ(41)=.40
-### Lund symmetric fragmentation function parameter b 
-##JetSetPar PARJ(42)=.29
-### Lund symmetric fragmentation function parameter a 
-##JetSetPar PARJ(43)=.60
-### Lund symmetric fragmentation function parameter b 
-##JetSetPar PARJ(44)=.45
-###eps_c   from CLEO 8/97
-##JetSetPar PARJ(54)=-.040
-##JetSetPar PARJ(46)=0.0
-##JetSetPar PARJ(33)=0.2
-###End of new continuum tuning
-#
-#pythia stuff for standalone generation
-# no isr
- #JetSetPar MSTP(11)=0
-# take the qqbar energy from EvtGen
- #JetSetPar MSTP(171)=1
- #JetSetPar MSTP(172)=1
-
-
+#JetSetPar MSTJ(26)=0
+# control of L=1 mesons (in order: J1S0 J0S1 J1S1 J2S1) - commented out by NB/WP
+#JetSetPar PARJ(14)=0.05
+#JetSetPar PARJ(15)=0.05
+#JetSetPar PARJ(16)=0.05
+#JetSetPar PARJ(17)=0.05
+#cut-off parameter used to stop fragmentation process (should not be changed)
+#####JetSetPar PARJ(33)=0.3 SET NOW IN GAUSS
+
+# PR LHCb 10/01/2006
 # Turn on PHOTOS for all decays
-# Lange Aug19,2002
 yesPhotos
 #
-
-ModelAlias VubHybridB0 VUBHYBRID 4.62 2.27 0.22 8 8 8
-    0.28 1.40 1.60 1.80  2.00  2.50  3.00  3.50 
-    0.00 2.50 5.00 7.50 10.00 12.50 15.00 20.00 
-    0.00 0.50 1.00 1.25  1.50  1.75  2.00  2.25
-    0.00000 1.2059 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.09098 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.47335 1.21021 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.52695 1.21011 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.6304 1.21096 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.33327 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.54178 1.20886 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.59143 1.20802 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.69332 1.20698 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.66811 1.20755 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.34624 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.23645 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.53769 1.21089 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.63768 1.20843 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.71713 1.20869 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.75566 1.20778 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.74831 1.20916 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.21312 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.62594 1.20926 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.5902 1.20516 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.68809 1.20016 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.78229 1.20459 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.82156 1.20561 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.72422 1.20485 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.00423 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.55708 1.20977 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.61225 1.20629 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.66904 1.20049 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.72567 1.20029 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.78501 1.19808 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.83037 1.19609 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.59537 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.00000 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.45962 1.20645 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.53276 1.20083 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.57906 1.19669 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.68263 1.19458 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.74222 1.19771 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.78307 1.19479 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.58714 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.19489 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.24451 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.14704 1.20472 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.42163 1.19849 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.37319 1.18877 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.38655 1.1995 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.34297 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.31299 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.57067 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.57067 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995;
-
-# Hybrid weights for charged B -> Xu l nu decays
-ModelAlias VubHybridBp VUBHYBRID  4.62 2.27 0.22 8 8 8 
-    0.28 1.40 1.60 1.80  2.00  2.50  3.00  3.50 
-    0.00 2.50 5.00 7.50 10.00 12.50 15.00 20.00 
-    0.00 0.50 1.00 1.25  1.50  1.75  2.00  2.25
-    0.00000 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.00000 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.11287 1.26974 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.10819 1.26929 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.27133 1.26671 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.17256 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.18216 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.32091 1.26953 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.52924 1.26988 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.51586 1.26755 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.26794 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.21166 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.29627 1.26757 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.52168 1.26788 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.5675 1.26647 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.62174 1.26467 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.00536 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.38235 1.2678 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.44511 1.26686 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.54476 1.26672 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.66852 1.26707 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.64859 1.26542 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.53664 1.2536 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.00000 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.22558 1.26822 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.38409 1.26531 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.52891 1.26284 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.65141 1.26648 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.70896 1.26227 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.79827 1.26101 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.4274 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.08636 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.28546 1.26121 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.40621 1.26584 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.58209 1.26637 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.61119 1.26424 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.70714 1.26297 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.73926 1.25781 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.53898 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.52061 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.00000 1.26726 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.16996 1.2649 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.23334 1.2534 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.25078 1.26036 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.27805 1.25917 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.27337 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.18235 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.84654 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.84654 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986;
-
-#
-
-
-# Define model alias for the D -> K*lnu decays
-# This should correspond to MV=2.1 GeV, MA1=MA2=2.5 GeV,
-# R2=0.85 and RV=1.5
-#
-ModelAlias SLPOLE_DtoKstarlnu SLPOLE  1.00 -0.558 0.0 1.0
-                                      0.85 -0.558 0.0 1.0
-                                      1.50 -0.790 0.0 1.0
-                                      0.00 -0.558 0.0 1.0;
 #
-# Model alias for the D -> rho l nu
-# MV=2.0 GeV and MA1=MA2=2.4 GeV, R2=0.6, RV=1.5
-#
-ModelAlias SLPOLE_Dtorholnu SLPOLE 1.00 -0.605 0.0 1.0
-                                   0.60 -0.605 0.0 1.0
-                                   1.50 -0.871 0.0 1.0
-                                   0.00 -0.605 0.0 1.0;
-#
-# Model alias for the D -> omega l nu
-# MV=2.0 GeV and MA1=MA2=2.4 GeV, R2=0.6, RV=1.5
-#
-ModelAlias SLPOLE_Dtoomegalnu SLPOLE 1.00 -0.605 0.0 1.0
-                                     0.60 -0.605 0.0 1.0
-                                     1.50 -0.871 0.0 1.0
-                                     0.00 -0.605 0.0 1.0;
-#
-# Model aliases for D -> Klnu, pilenu, etalnu, eta'lnu
-#
-ModelAlias SLBKPOLE_DtoKlnu SLBKPOLE 1.0 0.25 1.0 2.112;
-ModelAlias SLBKPOLE_Dtopilnu SLBKPOLE 1.0 0.25 1.0 2.010;
-ModelAlias SLBKPOLE_Dtoetalnu SLBKPOLE 1.0 0.25 1.0 2.010;
-ModelAlias SLBKPOLE_Dtoetaplnu SLBKPOLE 1.0 0.25 1.0 2.010;
-
-
 #Decay vpho
 #1.000                     PYCONT;
 #Enddecay
 #
 # use new VSS_BMIX mixing decay model (DK,28-Oct-1999)
 Decay Upsilon(4S)
-0.508200 B+  B-                          VSS;
-0.490000 B0  anti-B0                     VSS_BMIX dm;
-0.000016    e+    e-              PHOTOS  VLL;
-0.000016    mu+   mu-             PHOTOS  VLL;
-0.000016    tau+  tau-            PHOTOS  VLL;
-0.000090         Upsilon(2S)  pi+  pi-   VVPIPI;
-0.000045         Upsilon(2S)  pi0  pi0   VVPIPI;
-0.000090         Upsilon  pi+  pi-   VVPIPI;
-0.000045         Upsilon  pi0  pi0   VVPIPI;
-0.000200        Upsilon  eta  PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-
+0.515122645 B+      B-                                      VSS; #[Reconstructed PDG2011]
+0.483122645 B0      anti-B0                                 VSS_BMIX dm; #[Reconstructed PDG2011]
+0.000015583 e+      e-                                      PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000015766 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000015766 tau+    tau-                                    PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000084099 Upsilon(2S) pi+     pi-                         VVPIPI; #[Reconstructed PDG2011]
+0.000044342 Upsilon(2S) pi0     pi0                         VVPIPI; #[Reconstructed PDG2011]
+0.000080123 Upsilon pi+     pi-                             VVPIPI; #[Reconstructed PDG2011]
+0.000044342 Upsilon pi0     pi0                             VVPIPI; #[Reconstructed PDG2011]
+0.000194392 Upsilon eta                                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
 # BF ~ (2J+1)E^3_gamma; see PRL 94, 032001
 # V-> gamma S    Partial wave (L,S)=(0,0)
-0.000094         gamma chi_b0(3P)  HELAMP 1. 0. 1. 0.; 
+0.000092625 gamma   chi_b0(3P)                              HELAMP 1. 0. 1. 0.; #[Reconstructed PDG2011]
 # V-> gamma V    Partial wave (L,S)=(0,1)
-0.000141         gamma chi_b1(3P)  HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
+0.000138938 gamma   chi_b1(3P)                              HELAMP 1. 0. 1. 0. -1. 0. -1. 0.; #[Reconstructed PDG2011]
 # V-> gamma T    Partial wave (L,S)=(0,1)
-0.000131         gamma chi_b2(3P)  HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                   1. 0. 1.7320508 0. 2.4494897 0.;
+0.000129084 gamma   chi_b2(3P)                              HELAMP 2.4494897 0. 1.7320508 0. 1. 0. 1. 0. 1.7320508 0. 2.4494897 0.; #[Reconstructed PDG2011]
 # V-> gamma S    Partial wave (L,S)=(0,0)
-0.000003         gamma chi_b0(2P)  HELAMP 1. 0. 1. 0.; 
+0.000002956 gamma   chi_b0(2P)                              HELAMP 1. 0. 1. 0.; #[Reconstructed PDG2011]
 # V-> gamma V    Partial wave (L,S)=(0,1)
-0.000008         gamma chi_b1(2P)  HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
+0.000007883 gamma   chi_b1(2P)                              HELAMP 1. 0. 1. 0. -1. 0. -1. 0.; #[Reconstructed PDG2011]
 # V-> gamma T    Partial wave (L,S)=(0,1)
-0.000012         gamma chi_b2(2P)  HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                   1. 0. 1.7320508 0. 2.4494897 0.;
-0.000850         g       g       g       PYTHIA 4;
-0.000040         gamma   g       g       PYTHIA 4;
+0.000011825 gamma   chi_b2(2P)                              HELAMP 2.4494897 0. 1.7320508 0. 1. 0. 1. 0. 1.7320508 0. 2.4494897 0.; #[Reconstructed PDG2011]
+0.000837571 g       g       g                               PYTHIA 4; #[Reconstructed PDG2011]
+0.000039415 gamma   g       g                               PYTHIA 4; #[Reconstructed PDG2011]
 Enddecay
 #
 #
 #
 Decay anti-B0
+# Updated to PDG 2008
 #                   b -> c semileptonic
 #
-0.0529   D*+    e-   anti-nu_e          PHOTOS  HQET 0.77 1.33 0.92;
-0.0208   D+     e-   anti-nu_e          PHOTOS  ISGW2;
-0.0052   D_1+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0045   D_0*+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0083   D'_1+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0023   D_2*+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.050100000 D*+     e-      anti-nu_e                       PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D+      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0020   D_0*+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0050   D'_1+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0022   D_2*+   e-   anti-nu_e          PHOTOS  ISGW2;
 0.0003   D*+  pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0065   D*0  pi+   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
+0.004900000 D*0     pi+     e-      anti-nu_e               PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0010   D+   pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0032   D0   pi+   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-
-0.0529   D*+    mu-  anti-nu_mu         PHOTOS  HQET 0.77 1.33 0.92;
-0.0208   D+     mu-  anti-nu_mu         PHOTOS  ISGW2;
-0.0052   D_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
-0.0045   D_0*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
-0.0083   D'_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
-0.0023   D_2*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0000   D0   pi+   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
+
+0.050100000 D*+     mu-     anti-nu_mu                      PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D+      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0020   D_0*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0050   D'_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0022   D_2*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
 0.0003   D*+  pi0   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
-0.0065   D*0  pi+   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+0.004900000 D*0     pi+     mu-     anti-nu_mu              PHOTOS   GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0010   D+   pi0   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
-0.0032   D0   pi+   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+0.0000   D0   pi+   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
 #
 #                    b -> c tau nu
 #
-0.0202   D*+    tau- anti-nu_tau                 ISGW2;
-0.0088   D+     tau- anti-nu_tau                 ISGW2;
+0.015000000 D*+     tau-    anti-nu_tau                     ISGW2; #[Reconstructed PDG2011]
+0.011000000 D+      tau-    anti-nu_tau                     ISGW2; #[Reconstructed PDG2011]
 0.0013   D_1+   tau- anti-nu_tau                 ISGW2;
 0.0013   D_0*+   tau- anti-nu_tau                 ISGW2;
 0.0020   D'_1+   tau- anti-nu_tau                 ISGW2;
@@ -401,42 +263,42 @@ Decay anti-B0
 # 03/28/01 S.Menke included inclusive B -> X_u l nu decays for m(X_u) > 1.26 GeV.
 #                  with some thresholds to gradually switch from excl. to incl.
 #                  modeling without big jumps keeping the better known excl.
-#                  Brs at their actual values and constrain the incl. Br and 
-#                  weights in a way that ~40% of the total BR belongs to 
+#                  Brs at their actual values and constrain the incl. Br and
+#                  weights in a way that ~40% of the total BR belongs to
 #                  the mass region > 1.5 GeV
 # October 20, 2004 - Lange - update using sl awg input
-# March 30, 2005 J. Dingfelder: Updated  B -> X_u l nu hybrid model 
+# March 30, 2005 J. Dingfelder: Updated  B -> X_u l nu hybrid model
 #                               (supersedes older version by S. Menke). Inclusive
-#                               decays are reweighted in three kinematic 
+#                               decays are reweighted in three kinematic
 #                               variables mX, q2, and El (=> 512 weights total).
-#                               The list of weights is included as ModelAlias 
+#                               The list of weights is included as ModelAlias
 #                               once per B charge state.
 # NOTE: - The specified parameters for model VUBHYBRID are:
-#         mb, a, alpha_s, nbins_mX, nbins_q2, nbins_El, 
+#         mb, a, alpha_s, nbins_mX, nbins_q2, nbins_El,
 #         list of threshold values for mX, q2, El in ascending order.
 #
-#         *** DO NOT CHANGE ANY OF THESE PARAMETERS! *** 
-#         Otherwise a new set of weights would be needed, since they were 
+#         *** DO NOT CHANGE ANY OF THESE PARAMETERS! ***
+#         Otherwise a new set of weights would be needed, since they were
 #         generated for a certain set of values for mb, a, excl. BFs, non-res BF.
 #
-#       - If no binning (nbins or thresholds) are specified after the first 
+#       - If no binning (nbins or thresholds) are specified after the first
 #         three parameters (mb,a,alpha_s) no hybrid weighting is performed.
 
 # --- Hybrid weights for neutral B -> Xu l nu decays
-# NOTE: Do NOT CHANGE any BFs without using the corresponding set of 
+# NOTE: Do NOT CHANGE any BFs without using the corresponding set of
 #       hybrid weights (and vice versa).
-     
-0.000136   pi+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000220   rho+   e-   anti-nu_e        PHOTOS   ISGW2;
+
+0.000134000 pi+     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho+    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
 0.000000   D(2S)+ e-   anti-nu_e        PHOTOS   ISGW2;
 0.000000   D*(2S)+ e-   anti-nu_e       PHOTOS   ISGW2;
-0.001892   Xu+ e-  anti-nu_e            PHOTOS VubHybridB0;
+0.001892   Xu+  e-  anti-nu_e         PHOTOS    VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
 #
-0.000136   pi+    mu-  anti-nu_mu       PHOTOS   ISGW2;
-0.000220   rho+   mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000134000 pi+     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho+    mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
 0.000000   D(2S)+ mu-  anti-nu_mu       PHOTOS   ISGW2;
 0.000000   D*(2S)+ mu-  anti-nu_mu      PHOTOS    ISGW2;
-0.001892   Xu+ mu-  anti-nu_mu          PHOTOS VubHybridB0;
+0.001892   Xu+  mu-  anti-nu_mu      PHOTOS       VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
 #
 0.000060   pi+    tau- anti-nu_tau                 ISGW2;
 0.000083   rho+   tau- anti-nu_tau                 ISGW2;
@@ -450,139 +312,144 @@ Decay anti-B0
 #
 
 #
-# b->u hadronic 
+# b->u hadronic
 # Ref. [B1]:
 # Lange Nov 14, 2004  (flip D_s K -- is opposite of D_s pi)
-0.000015   D_s-  pi+   PHSP;
-0.000028   D_s+  K-    PHSP;
-0.000029   D_s*-  pi+  SVS;
-0.000022   D_s*+  K-   SVS;
+0.000024000 D_s-    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000030000 D_s+    K-                                      PHSP; #[Reconstructed PDG2011]
+0.000021000 D_s*-   pi+                                     SVS; #[Reconstructed PDG2011]
+0.000021900 D_s*+   K-                                      SVS; #[Reconstructed PDG2011]
 #
 0.000016   rho+   D_s-    SVS;
-0.000016   K*-   D_s+     SVS;
-0.000016   D_s*-  rho+    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.000016   D_s*+  K*-     SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+0.000035000 K*-     D_s+                                    SVS; #[Reconstructed PDG2011]
+0.000041000 D_s*-   rho+                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000032000 D_s*+   K*-                                     SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 
 
 #
 # b -> s gamma
 #
-0.0000401   anti-K*0  gamma                   HELAMP 1.0 0.0 1.0 0.0;
+0.000043300 anti-K*0 gamma                                  HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+# PR LHCb add omega gamma
+0.000000440 omega   gamma                                   HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 #0.0000135  anti-K_10  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000065  anti-K'_10 gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000128  anti-K'*0  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000166  anti-K_2*0 gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000017  anti-K''*0 gamma                   HELAMP 1.0 0.0 1.0 0.0;
-0.0003139  anti-Xsd    gamma  BTOXSGAMMA 2;
-#
-0.000000134 anti-K0   e+    e-    PHOTOS BTOSLLBALL;
-0.000001045 anti-K*0  e+    e-    PHOTOS BTOSLLBALL;
-0.000004994 anti-Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.000000574 anti-K0   mu+   mu-   PHOTOS BTOSLLBALL;
-0.000001100 anti-K*0  mu+   mu-   PHOTOS BTOSLLBALL;
-0.000002506 anti-Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.000000130 anti-K0   tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000190 anti-K*0  tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000200 anti-Xsd  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.0003118     anti-Xsd    gamma     BTOXSGAMMA 2 ;
+#
+0.000000160 anti-K0 e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001030 anti-K*0 e+      e-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 anti-Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.000000450 anti-K0 mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001050 anti-K*0 mu+     mu-                            PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 anti-Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.0000001 anti-K0   tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 anti-K*0  tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 anti-Xsd  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
 #
 #------------------------------------------------------------------------------
 # 2- and 3-body modes revised Feb.2005  Markus Cristinziani, SLAC
 #vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 #    B0 -> CP eigenstates  (some exclusive b -> u)   sum=0.00036
 #
-0.0000049 pi+  pi-     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.0000015 pi0  pi0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  eta     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.0000015 pi0  eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  a_00    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  pi0  f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
+0.000005130 pi+     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000001620 pi0     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.0000010  pi0  eta     PHSP;
+0.000001200 pi0     eta'                                    PHSP; #[Reconstructed PDG2011]
+0.000001  pi0  a_00    PHSP;
+0.000001  pi0  f_0     PHSP;
 # pi0 rho0 is with the 3-body modes
-0.000001  pi0  omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta  eta     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  a_00    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta  f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta  rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta' eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' a_00    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta' f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta' rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00  a_00   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  a_00  f_0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  a_00 rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00 omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00 a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00 b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.0000003 f_0  f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  f_0  rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  f_0  omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  f_0  a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  f_0  b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
+0.000001  omega pi0    SVS;
+0.000001  a_10  pi0    SVS;
+0.000001  b_10  pi0    SVS;
+0.000001  eta  eta     PHSP;
+0.000001  eta  eta'    PHSP;
+0.000001  eta  a_00    PHSP;
+0.000001  eta  f_0     PHSP;
+0.000001  rho0 eta     SVS;
+0.000000940 omega   eta                                     SVS; #[Reconstructed PDG2011]
+0.000001  a_10 eta     SVS;
+0.000001  b_10 eta     SVS;
+0.000001  eta' eta'    PHSP;
+0.000001  eta' a_00    PHSP;
+0.000001  eta' f_0     PHSP;
+0.000001  rho0 eta'    SVS;
+0.000001000 omega   eta'                                    SVS; #[Reconstructed PDG2011]
+0.000001  a_10 eta'    SVS;
+0.000001  b_10 eta'    SVS;
+0.000001  a_00  a_00   PHSP;
+0.000001  a_00  f_0    PHSP;
+0.000001  rho0 a_00    SVS;
+0.000001  omega a_00   SVS;
+0.000001  a_10 a_00    SVS;
+0.000001  b_10 a_00    SVS;
+0.000001  f_0  f_0     PHSP;
+0.000001  rho0 f_0     SVS;
+0.000001  omega f_0    SVS;
+0.000001  a_10 f_0     SVS;
+0.000001  b_10 f_0     SVS;
 
 # Penguin dominated modes are sin2beta, not sin2alpha
-0.0000043 phi  K_S0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0000043 phi  K_L0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000001  eta K_S0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000001  eta K_L0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000032  eta' K_S0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000032  eta' K_L0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0000023 omega K_S0   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0000023 omega K_L0   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
+0.000004300 phi     K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000004300 phi     K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000550 eta     K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000000550 eta     K_L0                                    PHSP; #[Reconstructed PDG2011]
+0.000033000 eta'    K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000033000 eta'    K_L0                                    PHSP; #[Reconstructed PDG2011]
+0.000002500 omega   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000002500 omega   K_L0                                    SVS; #[Reconstructed PDG2011]
 #don't allow jetset to simulate the same decay but to a K0 or anti-K0
 #Lange 1/30/2003
-
-0.0  phi  anti-K0    PHSP;
 0.0  phi  K0    PHSP;
-
-0.0  eta anti-K0 PHSP;
+0.0  phi  anti-K0    PHSP;
 0.0  eta K0     PHSP;
-
-0.0  eta' anti-K0 PHSP;
+0.0  eta anti-K0 PHSP;
 0.0  eta' K0    PHSP;
-
-0.0  omega anti-K0 PHSP;
+0.0  eta' anti-K0 PHSP;
 0.0  omega K0   PHSP;
-# phipi0 has no simple Pengun or tree so who knows - ditto phieta/eta'?
-0.00000005 phi  pi0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00000003 phi  eta     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00000003 phi  eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-#
-0.0000163 anti-K*0 eta SVS;
-0.0000038 anti-K*0 eta' SVS;
-0.000001  anti-K*0 omega SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.0  omega anti-K0 PHSP;
+# phipi0 has no simple Pengiun or tree so who knows - ditto phieta/eta'?
+0.000001  phi  pi0     SVS;
+0.000001  phi  eta     SVS;
+0.000001  phi  eta'    SVS;
+#
+0.000015900 anti-K*0 eta                                    SVS; #[Reconstructed PDG2011]
+0.000003800 anti-K*0 eta'                                   SVS; #[Reconstructed PDG2011]
+0.000002000 anti-K*0 omega                                  SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000001  phi  omega   SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.000001  omega omega  SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.000001  omega rho0   SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 #
 #
 #2-body modes from Jim Olsen
-0.0000188 K-  pi+      PHSP;
-0.0000001  K+  K-       PHSP;
+0.000019400 K-      pi+                                     PHSP; #[Reconstructed PDG2011]
+0.0000004  K+  K-       PHSP;
 # K_S0 K_L0 is 0
 # see http://babar-hn.slac.stanford.edu:5090/HyperNews/get/pubboard14/156.html
-0.0000006 K_S0 K_S0    PHSP;
+0.000000240 K_S0    K_S0                                    PHSP; #[Reconstructed PDG2011]
 0.0000000 K_S0 K_L0    PHSP;
-0.0000006 K_L0 K_L0    PHSP;
-0.0000115 anti-K0 pi0  PHSP;
-# Put in with 0 BR to keep PYTHIA from generating it
-0.0000000 K0 anti-K0   PHSP;
+0.000000240 K_L0    K_L0                                    PHSP; #[Reconstructed PDG2011]
+# declare K0 pi0 not to have it through Pythia
+0.000000  anti-K0 pi0  PHSP;
+# Split into K_S0 K_L0 (LHCb - P. Robbe)
+0.000004750 K_S0    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000004750 K_L0    pi0                                     PHSP; #[Reconstructed PDG2011]
+# 0 to keep PYTHIA from generating it
+0.000000 K0 anti-K0   PHSP;
+#
+# 3-body decays
+# this model generates interferences and higher mass rho
 #
 # 3-body by John Back (jback@slac.stanford.edu) - Oct 15, 2002
 # JGS intersperses modes with pi0->eta,eta'
 # anti-B0 modes
-# Model generates rho(770), rho(1450) and rho(1700) resonances 
+# Model generates rho(770), rho(1450) and rho(1700) resonances
 # with interference (uses CKM angle alpha)
 0.000024     pi- pi+ pi0            BTO3PI_CP dm  alpha;
 # Put in with 0 BR to keep PYTHIA from generating these (see BTO3PI_CP above)
-0.000000     pi0 rho0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
+0.000000     rho0 pi0               SVS;
 0.000000     rho- pi+               SVS;
 0.000000     rho+ pi-               SVS;
 0.000000     rho(2S)- pi+           SVS;
@@ -591,27 +458,26 @@ Decay anti-B0
 0.000000     rho(3S)+ pi-           SVS;
 #
 # rho0 3-body modes
-0.0000022    rho0 K_S0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.0000022    rho0 K_L0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
+0.000002350 rho0    K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000002350 rho0    K_L0                                    SVS; #[Reconstructed PDG2011]
 #
 # rho+ 3-body modes
-0.0000085    rho+ K-                SVS;
+0.000008400 rho+    K-                                      SVS; #[Reconstructed PDG2011]
 #
 # rho(1450) 3-body modes
-0.0000005    rho(2S)0 K_S0          SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.0000005    rho(2S)0 K_L0          SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
+0.0000005    rho(2S)0 K_S0          SVS;
+0.0000005    rho(2S)0 K_L0          SVS;
 #
 #
 # f0,a0(980) 3-body modes
-0.0000055    f_0 anti-K0            PHSP;
+0.0000055     f_0 anti-K0            PHSP;
 0.000001     a_00 anti-K0           PHSP;
-0.000001    a_0+ K-                PHSP;
-
-0.000001     a_0- pi+               PHSP;
+0.000001     a_0+ K-                PHSP;
 0.000003     a_0+ pi-               PHSP;
+0.000001     a_0- pi+               PHSP;
 #
 # K*0(892) 3-body modes
-0.0000017    anti-K*0 pi0           SVS;
+0.000003600 anti-K*0 pi0                                    SVS; #[Reconstructed PDG2011]
 0.000003     anti-K*0 K0            SVS;
 #
 # K*0(1430) 3-body modes
@@ -624,16 +490,16 @@ Decay anti-B0
 
 #
 # K*-(892) 3-body modes
-0.0000085    K*- pi+                SVS;
-0.0000002     K*- K+                 SVS;
+0.000009400 K*-     pi+                                     SVS; #[Reconstructed PDG2011]
+0.000002     K*- K+                 SVS;
 #
-# K*-1(430) 3-body modes
-0.000033     K_0*- pi+              PHSP;
-0.0000002     K_0*- K+               PHSP;
+# K*-(1430) 3-body modes
+0.000033000 K_0*-   pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000002     K_0*- K+               PHSP;
 #
 # K*0(1680) 3-body modes
 0.000001     K''*- pi+                     SVS;
-0.0000001     K''*- K+               SVS;
+0.000001     K''*- K+               SVS;
 #
 #
 # Non-resonant 3-body left-overs
@@ -644,21 +510,24 @@ Decay anti-B0
 0.000017     pi- pi+ eta            PHSP;
 0.000001     pi- pi+ eta'           PHSP;
 #
-# pi- pi+ anti-K0: 
-0.000013     pi- pi+ anti-K0        PHSP;
+# pi- pi+ anti-K0: total-rhoK0-f0K0-piK*(892)-piK*(1430)=45-5-6-13./3-11./3
+0.000000000 pi-     pi+     anti-K0                         PHSP; #[Reconstructed PDG2011]
 #
 # K- pi+ pi0
-0.000002     K- pi+ pi0             PHSP;
+0.000027500 K-      pi+     pi0                             PHSP; #[Reconstructed PDG2011]
 0.000020     K- pi+ eta             PHSP;
 0.000001     K- pi+ eta'            PHSP;
 #
-# pi- K+ K0. 
+# pi- K+ K0.
 # Both B0 and B0bar can decay to these => 0.5e-6 each
 0.0000005    pi- K+ anti-K0         PHSP;
 0.0000005    pi+ K- K0              PHSP;
 #
-# K- K+ anti-K0: total - phiKs = 25 -
-0.0000205    K- K+ anti-K0          PHSP;
+# K- K+ anti-K0
+# PR LHCb 09 Apr 2004 split into KL/KS
+0.000000     K- K+ anti-K0          PHSP;
+0.000012350 K-      K+      K_S0                            PHSP; #[Reconstructed PDG2011]
+0.000012350 K-      K+      K_L0                            PHSP; #[Reconstructed PDG2011]
 #
 # K- K+ pi0
 0.000001     K- K+ pi0              PHSP;
@@ -694,9 +563,10 @@ Decay anti-B0
 #
 #4-body modes from Andrei Gritsan
 #--- 4-body rho-rho, rho-pi-pi, pi-pi-pi-pi --------------------------
-0.0000011 rho0 rho0              SVV_CP alpha dm 1 1.0 0.0 1.7 0.0 1.0 0.0;
-0.000025  rho+ rho-              SVV_CP alpha dm 1 1.0 0.0 1.7 0.0 1.0 0.0;
-0.000005  rho0 pi+ pi-           PHSP;
+# PR LHCb 21 Apr 2004 : set polarisation to longitudinal
+0.000000730 rho0    rho0                                    SVV_HELAMP 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000024200 rho+    rho-                                    SVV_HELAMP 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000003  rho0 pi+ pi-           PHSP;
 0.000003  omega pi+ pi-          PHSP;
 0.000001  rho0 pi0 pi0           PHSP;
 0.000001  omega pi0 pi0          PHSP;
@@ -708,33 +578,31 @@ Decay anti-B0
 0.0000002 omega eta eta          PHSP;
 0.0000002 omega pi0 eta'         PHSP;
 0.0000001 omega eta eta'         PHSP;
-
-0.000010  rho- pi+ pi0           PHSP;
-0.000005  rho- pi+ eta           PHSP;
 0.000010  rho+ pi- pi0           PHSP;
 0.000005  rho+ pi- eta           PHSP;
+0.000010  rho- pi+ pi0           PHSP;
+0.000005  rho- pi+ eta           PHSP;
 0.000010  pi+ pi- pi+ pi-        PHSP;
 0.000010  pi+ pi- pi0 pi0        PHSP;
 0.000005  pi+ pi- eta pi0        PHSP;
 0.000002  pi+ pi- eta eta        PHSP;
 0.000002  pi+ pi- eta' pi0       PHSP;
 0.000001  pi+ pi- eta' eta       PHSP;
-0.0000165 a_1- pi+               SVS;
-0.0000165 a_1+ pi-               SVS;
-0.000000  b_1- pi+               SVS;
-0.000010  b_1+ pi-               SVS;
-0.000002  rho+ a_0-              SVS;
-0.000010  rho- a_0+              SVS;
-
+0.000016500 a_1+    pi-                                     SVS; #[Reconstructed PDG2011]
+0.000016500 a_1-    pi+                                     SVS; #[Reconstructed PDG2011]
+0.0000055  b_1+ pi-               SVS;
+0.0000055  b_1- pi+               SVS;
+0.000002  rho- a_0+              SVS;
+0.000010  rho+ a_0-              SVS;
 0.000001  f_0 pi+ pi-            PHSP;
 0.000001  f_0 pi0 pi0            PHSP;
 0.000001  a_0- pi+ pi0           PHSP;
 0.000001  a_00 pi0 pi0           PHSP;
 0.000001  a_0+ pi- pi0           PHSP;
 #--- 4-body rho-K*, rho-pi-K, K*-pi-pi, pi-pi-pi-K -------------------
-0.0000056 rho0  anti-K*0         SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000003400 rho0    anti-K*0                                SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000010  rho+  K*-              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.000010  pi- pi+ anti-K*0       PHSP;
+0.000050600 pi-     pi+     anti-K*0                        PHSP; #[Reconstructed PDG2011]
 0.000010  pi+ pi0 K*-            PHSP;
 0.000005  pi+ eta K*-            PHSP;
 0.000002  pi+ eta' K*-           PHSP;
@@ -750,7 +618,7 @@ Decay anti-B0
 0.000005  omega anti-K0 pi0      PHSP;
 0.000002  omega anti-K0 eta      PHSP;
 0.000001  omega anti-K0 eta'     PHSP;
-0.000005  omega K- pi+           PHSP;
+0.000005100 omega   K-      pi+                             PHSP; #[Reconstructed PDG2011]
 0.000010  pi+ pi0 pi- anti-K0    PHSP;
 0.000005  pi+ eta pi- anti-K0    PHSP;
 0.000010  pi0 pi0 pi0 anti-K0    PHSP;
@@ -769,17 +637,17 @@ Decay anti-B0
 0.000010  pi- pi+ anti-K_0*0     PHSP;
 0.000010  pi0 pi0 anti-K_0*0     PHSP;
 0.000010  pi+ pi0 K_0*-          PHSP;
-0.000002  anti-K*0 f_0           SVS;
+0.000005  anti-K*0 f_0           SVS;
 0.000010  a_10 anti-K0           SVS;
-0.000010  a_1+ K-                SVS;
-0.0000066 b_10 anti-K0           SVS;
-0.000010  b_1+ K-                SVS;
+0.000016000 a_1+    K-                                      SVS; #[Reconstructed PDG2011]
+0.000010  b_10 anti-K0           SVS;
+0.0000074  b_1+ K-                SVS;
 0.000005  anti-K*0 a_00          SVS;
 0.000005  K*- a_0+               SVS;
 #--- 4-body K*-K*, rho-K-K, K*-K-pi, phi-pi-pi, pi-pi-K-K ------------
-0.00000105  K*0   anti-K*0         SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000001280 K*0     anti-K*0                                SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000001  K*+   K*-              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.0000001 phi   rho0             SVV_CP alpha dm 1 1.0 0.0 1.7 0.0 1.0 0.0;
+0.0000001 phi   rho0             SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.0000001 phi   pi- pi+          PHSP;
 0.000001  K+ K- rho0             PHSP;
 0.000001  K0 anti-K0 rho0        PHSP;
@@ -799,21 +667,20 @@ Decay anti-B0
 0.0000002 K0 anti-K0 eta eta     PHSP;
 0.0000002 K0 anti-K0 pi0 eta'    PHSP;
 0.0000001 K0 anti-K0 eta eta'    PHSP;
-0.000001  K*- K+ pi0             PHSP;
 0.000001  K*+ K- pi0             PHSP;
-0.000001  K0 anti-K*0 pi0        PHSP;
+0.000001  K*- K+ pi0             PHSP;
 0.000001  K*0 anti-K0 pi0        PHSP;
-0.000001  K- K*0 pi+             PHSP;
-0.000001  K*- K0 pi+             PHSP;
-0.000001  K+ anti-K*0 pi-        PHSP;
+0.000001  K0 anti-K*0 pi0        PHSP;
+0.000003320 K+      anti-K*0 pi-                            PHSP; #[Reconstructed PDG2011]
 0.000001  K*+ anti-K0 pi-        PHSP;
-
+0.0000033  K- K*0 pi+             PHSP;
+0.000001  K*- K0 pi+             PHSP;
 #--- 4-body phi-K*, phi-K-pi, K-K-K*, pi-K-K-K -----------------------
-0.0000095 phi   anti-K*0         SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000009800 phi     anti-K*0                                SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000010  phi K- pi+             PHSP;
 0.000010  phi anti-K0 pi0        PHSP;
 0.000007  phi anti-K0 eta        PHSP;
-0.000010  K- K+ anti-K*0         PHSP; 
+0.000017700 K-      K+      anti-K*0                        PHSP; #[Reconstructed PDG2011]
 0.000010  K- K*+ anti-K0         PHSP;
 0.000010  K*- K+ anti-K0         PHSP;
 0.000010  K+ K- K- pi+           PHSP;
@@ -821,7 +688,7 @@ Decay anti-B0
 0.000005  K+ K- anti-K0 eta      PHSP;
 0.000010  K0 anti-K0 anti-K0 pi0 PHSP;
 0.000005  K0 anti-K0 anti-K0 eta PHSP;
-0.0000046 phi   anti-K_0*0       PHSP;
+0.000003900 phi     anti-K_0*0                              PHSP; #[Reconstructed PDG2011]
 0.000010  K- K+ anti-K_0*0       PHSP;
 0.000010  K- K_0*+ anti-K0       PHSP;
 0.000010  K_0*- K+ anti-K0       PHSP;
@@ -845,10 +712,8 @@ Decay anti-B0
 0.000010  rho+ rho- pi0          PHSP;
 0.000005  rho+ rho- eta          PHSP;
 0.000002  rho+ rho- eta'         PHSP;
-0.000010  rho0 rho-  pi+          PHSP;
-0.0000066 rho0 rho+ pi-          PHSP; 
-0.000010  omega rho- pi+         PHSP;
-0.0000066 omega rho+ pi-         PHSP;
+0.000010  rho0 rho+ pi-          PHSP;
+0.000010  omega rho+ pi-         PHSP;
 0.000002  rho0 pi+ pi- pi0       PHSP;
 0.000001  rho0 pi+ pi- eta       PHSP;
 0.000001  rho0 pi+ pi- eta'      PHSP;
@@ -861,15 +726,14 @@ Decay anti-B0
 0.000002  omega pi0 pi0 pi0      PHSP;
 0.000001  omega pi0 eta pi0      PHSP;
 0.000001  omega pi0 eta' pi0     PHSP;
-
-0.000002  rho- pi+ pi+ pi-       PHSP;
-0.000002  rho- pi+ pi0 pi0       PHSP;
-0.000001  rho- pi+ pi0 eta       PHSP;
-0.000001  rho- pi+ pi0 eta'      PHSP;
 0.000002  rho+ pi- pi+ pi-       PHSP;
 0.000002  rho+ pi- pi0 pi0       PHSP;
 0.000001  rho+ pi- pi0 eta       PHSP;
 0.000001  rho+ pi- pi0 eta'      PHSP;
+0.000002  rho- pi+ pi+ pi-       PHSP;
+0.000002  rho- pi+ pi0 pi0       PHSP;
+0.000001  rho- pi+ pi0 eta       PHSP;
+0.000001  rho- pi+ pi0 eta'      PHSP;
 0.000001  pi+ pi- pi+ pi- pi0    PHSP;
 0.0000005 pi+ pi- pi+ pi- eta    PHSP;
 0.0000002 pi+ pi- pi+ pi- eta'   PHSP;
@@ -879,43 +743,39 @@ Decay anti-B0
 0.0000005 pi0 pi0 pi0 pi0 pi0    PHSP;
 0.0000002 pi0 pi0 pi0 pi0 eta    PHSP;
 0.0000001 pi0 pi0 pi0 pi0 eta'   PHSP;
-
-0.000010  a_1-  rho+             PHSP;
 0.000010  a_1+  rho-             PHSP;
+0.000010  a_1-  rho+             PHSP;
 0.000010  a_10  rho0             PHSP;
 0.000010  a_10  omega            PHSP;
-0.000010  a_1-  pi+ pi0          PHSP;
-0.000005  a_1-  pi+ eta          PHSP;
-0.000002  a_1-  pi+ eta'         PHSP;
+0.000010  a_1+  pi- pi0          PHSP;
+0.000005  a_1+  pi- eta          PHSP;
+0.000002  a_1+  pi- eta'         PHSP;
 0.000010  a_10  pi+ pi-          PHSP;
 0.000010  a_10  pi0 pi0          PHSP;
 0.000005  a_10  pi0 eta          PHSP;
 0.000002  a_10  pi0 eta'         PHSP;
-0.000010  a_1+  pi- pi0          PHSP;
-0.000005  a_1+  pi- eta          PHSP;
-0.000002  a_1+  pi- eta'         PHSP;
-
-0.000010  rho- f_0 pi+           PHSP;
+0.000010  a_1-  pi+ pi0          PHSP;
+0.000005  a_1-  pi+ eta          PHSP;
+0.000002  a_1-  pi+ eta'         PHSP;
 0.000010  rho+ f_0 pi-           PHSP;
+0.000010  rho- f_0 pi+           PHSP;
 0.000010  rho0 f_0 pi0           PHSP;
 0.000005  rho0 f_0 eta           PHSP;
 0.000002  rho0 f_0 eta'          PHSP;
 0.000010  omega f_0 pi0          PHSP;
-
-0.000010  rho- a_00 pi+          PHSP;
-0.000010  rho- a_0+ pi0          PHSP;
-0.000005  rho- a_0+ eta          PHSP;
-0.000002  rho- a_0+ eta'         PHSP;
-
-0.000010  rho0 a_0- pi+          PHSP;
-0.000010  rho0 a_0+ pi-          PHSP;
-0.000010  rho0 a_00 pi0          PHSP;
-0.000005  rho0 a_00 eta          PHSP;
-0.000002  rho0 a_00 eta'         PHSP;
 0.000010  rho+ a_00 pi-          PHSP;
 0.000010  rho+ a_0- pi0          PHSP;
 0.000005  rho+ a_0- eta          PHSP;
 0.000002  rho+ a_0- eta'         PHSP;
+0.000010  rho0 a_0+ pi-          PHSP;
+0.000010  rho0 a_0- pi+          PHSP;
+0.000010  rho0 a_00 pi0          PHSP;
+0.000005  rho0 a_00 eta          PHSP;
+0.000002  rho0 a_00 eta'         PHSP;
+0.000010  rho- a_00 pi+          PHSP;
+0.000010  rho- a_0+ pi0          PHSP;
+0.000005  rho- a_0+ eta          PHSP;
+0.000002  rho- a_0+ eta'         PHSP;
 0.000002  f_0 pi+ pi- pi0        PHSP;
 0.000001  f_0 pi+ pi- eta        PHSP;
 0.000001  f_0 pi+ pi- eta'       PHSP;
@@ -924,11 +784,10 @@ Decay anti-B0
 0.000001  f_0 pi0 pi0 eta'       PHSP;
 0.000001  a_00 pi+ pi- pi0       PHSP;
 0.000001  a_00 pi0 pi0 pi0       PHSP;
-
-0.000001  a_0- pi+ pi+ pi-       PHSP;
-0.000001  a_0- pi+ pi0 pi0       PHSP;
 0.000001  a_0+ pi- pi+ pi-       PHSP;
 0.000001  a_0+ pi- pi0 pi0       PHSP;
+0.000001  a_0- pi+ pi+ pi-       PHSP;
+0.000001  a_0- pi+ pi0 pi0       PHSP;
 #--- 5-body rho-K*pi, rho-2pi-K, K*-3pi, 4pi-K -------------------
 0.000010  rho0 K*- pi+           PHSP;
 0.000010  rho+ K*- pi0           PHSP;
@@ -937,9 +796,8 @@ Decay anti-B0
 0.000010  rho0 anti-K*0 pi0      PHSP;
 0.000005  rho0 anti-K*0 eta      PHSP;
 0.000002  rho0 anti-K*0 eta'     PHSP;
-
-0.000010  rho+ anti-K*0 pi-      PHSP;
 0.000010  rho- anti-K*0 pi+      PHSP;
+0.000010  rho+ anti-K*0 pi-      PHSP;
 0.000010  omega K*- pi+          PHSP;
 0.000010  omega anti-K*0 pi0     PHSP;
 0.000005  omega anti-K*0 eta     PHSP;
@@ -993,12 +851,11 @@ Decay anti-B0
 0.000002  pi0 pi0 pi0 anti-K0 pi0 PHSP;
 0.000001  pi0 pi0 pi0 anti-K0 eta PHSP;
 0.000001  pi0 pi0 pi0 anti-K0 eta' PHSP;
-
-0.000010  rho- anti-K_0*0 pi+    PHSP;
+0.000010  rho+ anti-K_0*0 pi-    PHSP;
 0.000010  rho0 anti-K_0*0 pi0    PHSP;
 0.000005  rho0 anti-K_0*0 eta    PHSP;
 0.000002  rho0 anti-K_0*0 eta'   PHSP;
-0.000010  rho+ anti-K_0*0 pi-    PHSP;
+0.000010  rho- anti-K_0*0 pi+    PHSP;
 0.000010  rho+ K_0*- pi0         PHSP;
 0.000005  rho+ K_0*- eta         PHSP;
 0.000002  rho+ K_0*- eta'        PHSP;
@@ -1017,35 +874,32 @@ Decay anti-B0
 0.000010  anti-K*0 f_0 pi0       PHSP;
 0.000005  anti-K*0 f_0 eta       PHSP;
 0.000002  anti-K*0 f_0 eta'      PHSP;
-0.000010  a_1- anti-K0 pi+       PHSP;
+0.000010  a_1+ anti-K0 pi-       PHSP;
 0.000020  a_10 anti-K*0          PHSP;
 0.000010  a_10 K- pi+            PHSP;
 0.000010  a_10 anti-K0 pi0       PHSP;
 0.000020  a_1+ K*-               PHSP;
 0.000010  a_1+ K- pi0            PHSP;
-0.000010  a_1+ anti-K0 pi-       PHSP;
+0.000010  a_1- anti-K0 pi+       PHSP;
 0.000005  K*- a_00 pi+           PHSP;
 0.000005  K*- a_0+ pi0           PHSP;
 0.000002  K*- a_0+ eta           PHSP;
 0.000001  K*- a_0+ eta'          PHSP;
 0.000005  anti-K*0 a_0+ pi-      PHSP;
-0.000005  anti-K*0 a_0- pi+      PHSP;
 0.000005  anti-K*0 a_00 pi0      PHSP;
 0.000002  anti-K*0 a_00 eta      PHSP;
 0.000001  anti-K*0 a_00 eta'     PHSP;
 #--- 5-body K*-K*pi,rho-K-Kpi, K*-K-2pi, phi-3pi, 3pi-K-K ------------
-0.000001  K*+ anti-K*0 pi-       PHSP;
 0.000001  K*- K*0 pi+            PHSP;
-
+0.000001  K*+ anti-K*0 pi-       PHSP;
 0.000001  K*- K*+ pi0            PHSP;
 0.0000005 K*- K*+ eta            PHSP;
 0.0000002 K*- K*+ eta'           PHSP;
 0.000001  K*0 anti-K*0 pi0       PHSP;
 0.0000005 K*0 anti-K*0 eta       PHSP;
 0.0000002 K*0 anti-K*0 eta'      PHSP;
-
-0.000001  phi rho- pi+           PHSP;
 0.000001  phi rho+ pi-           PHSP;
+0.000001  phi rho- pi+           PHSP;
 0.000001  phi rho0 pi0           PHSP;
 0.0000005 phi rho0 eta           PHSP;
 0.0000002 phi rho0 eta'          PHSP;
@@ -1085,11 +939,10 @@ Decay anti-B0
 0.0000002 anti-K0 K+ rho- eta'   PHSP;
 0.000001  anti-K0 K+ omega pi-   PHSP;
 0.000001  anti-K0 K+ f_0 pi-     PHSP;
-0.0000002 anti-K0 K+ pi- pi+ pi- PHSP;
-0.0000002 anti-K0 K+ pi- pi0 pi0 PHSP;
-0.0000001 anti-K0 K+ pi- pi0 eta PHSP;
-0.0000001 anti-K0 K+ pi- pi0 eta' PHSP;
-
+0.0000002 K0 K- pi+ pi+ pi-      PHSP;
+0.0000002 K0 K- pi+ pi0 pi0      PHSP;
+0.0000001 K0 K- pi+ pi0 eta      PHSP;
+0.0000001 K0 K- pi+ pi0 eta'     PHSP;
 0.0000002 K+ K- pi+ pi- pi0      PHSP;
 0.0000001 K+ K- pi+ pi- eta      PHSP;
 0.0000001 K+ K- pi+ pi- eta'     PHSP;
@@ -1102,41 +955,38 @@ Decay anti-B0
 0.0000002 K0 anti-K0 pi0 pi0 pi0 PHSP;
 0.0000001 K0 anti-K0 pi0 pi0 eta PHSP;
 0.0000001 K0 anti-K0 pi0 pi0 eta' PHSP;
-0.0000002 K0 K- pi+ pi+ pi-      PHSP;
-0.0000002 K0 K- pi+ pi0 pi0      PHSP;
-0.0000001 K0 K- pi+ pi0 eta      PHSP;
-0.0000001 K0 K- pi+ pi0 eta'     PHSP;
-
-0.000001  K+ anti-K*0 pi- pi0    PHSP;
-0.0000005 K+ anti-K*0 pi- eta    PHSP;
-0.0000002 K+ anti-K*0 pi- eta'   PHSP;
-0.000001  K*+ anti-K0 pi- pi0    PHSP;
-0.0000005 K*+ anti-K0 pi- eta    PHSP;
-0.0000002 K*+ anti-K0 pi- eta'   PHSP;
-0.000001  K*- K+ pi+ pi-         PHSP;
-0.000001  K*- K+ pi0 pi0         PHSP;
-0.0000005 K*- K+ pi0 eta         PHSP;
-0.0000002 K*- K+ pi0 eta'        PHSP;
+0.0000002 anti-K0 K+ pi- pi+ pi- PHSP;
+0.0000002 anti-K0 K+ pi- pi0 pi0 PHSP;
+0.0000001 anti-K0 K+ pi- pi0 eta PHSP;
+0.0000001 anti-K0 K+ pi- pi0 eta' PHSP;
+0.000001  K*0 K- pi+ pi0         PHSP;
+0.0000005 K*0 K- pi+ eta         PHSP;
+0.0000002 K*0 K- pi+ eta'        PHSP;
+0.000001  K*- K0 pi+ pi0         PHSP;
+0.0000005 K*- K0 pi+ eta         PHSP;
+0.0000002 K*- K0 pi+ eta'        PHSP;
 0.000001  K*+ K- pi+ pi-         PHSP;
 0.000001  K*+ K- pi0 pi0         PHSP;
 0.0000005 K*+ K- pi0 eta         PHSP;
 0.0000002 K*+ K- pi0 eta'        PHSP;
-
-0.000001  K0 anti-K*0 pi+ pi-    PHSP;
-0.000001  K0 anti-K*0 pi0 pi0    PHSP;
-0.0000005 K0 anti-K*0 pi0 eta    PHSP;
-0.0000002 K0 anti-K*0 pi0 eta'   PHSP;
+0.000001  K*- K+ pi+ pi-         PHSP;
+0.000001  K*- K+ pi0 pi0         PHSP;
+0.0000005 K*- K+ pi0 eta         PHSP;
+0.0000002 K*- K+ pi0 eta'        PHSP;
 0.000001  K*0 anti-K0 pi+ pi-    PHSP;
 0.000001  K*0 anti-K0 pi0 pi0    PHSP;
 0.0000005 K*0 anti-K0 pi0 eta    PHSP;
 0.0000002 K*0 anti-K0 pi0 eta'   PHSP;
-0.000001  K*0 K- pi+ pi0         PHSP;
-0.0000005 K*0 K- pi+ eta         PHSP;
-0.0000002 K*0 K- pi+ eta'        PHSP;
-0.000001  K*- K0 pi+ pi0         PHSP;
-0.0000005 K*- K0 pi+ eta         PHSP;
-0.0000002 K*- K0 pi+ eta'        PHSP;
-
+0.000001  K0 anti-K*0 pi+ pi-    PHSP;
+0.000001  K0 anti-K*0 pi0 pi0    PHSP;
+0.0000005 K0 anti-K*0 pi0 eta    PHSP;
+0.0000002 K0 anti-K*0 pi0 eta'   PHSP;
+0.000001  K+ anti-K*0 pi- pi0    PHSP;
+0.0000005 K+ anti-K*0 pi- eta    PHSP;
+0.0000002 K+ anti-K*0 pi- eta'   PHSP;
+0.000001  K*+ anti-K0 pi- pi0    PHSP;
+0.0000005 K*+ anti-K0 pi- eta    PHSP;
+0.0000002 K*+ anti-K0 pi- eta'   PHSP;
 #--- 5-body phi-K*-pi, phi-K-2pi, K-K-K*-pi, 2pi-K-K-K --------------------
 0.000010  phi K*- pi+            PHSP;
 0.000010  phi anti-K*0 pi0       PHSP;
@@ -1155,9 +1005,8 @@ Decay anti-B0
 0.000002  phi K- pi+ eta'        PHSP;
 0.000010  K+ K- K*- pi+          PHSP;
 0.000010  K- K*+ K- pi+          PHSP;
-
-0.000010  K- K0 anti-K*0 pi+     PHSP;
 0.000010  K- K*0 anti-K0 pi+     PHSP;
+0.000010  K- K0 anti-K*0 pi+     PHSP;
 0.000010  K0 K*- anti-K0 pi+     PHSP;
 0.000010  K- K+ K- rho+          PHSP;
 0.000010  K- K+ anti-K0 rho0     PHSP;
@@ -1209,7 +1058,7 @@ Decay anti-B0
 0.000001  anti-K0 anti-K0 K'_10 eta  PHSP;
 0.000001  anti-K0 anti-K0 K'_10 eta' PHSP;
 #--- 5-body phi-phi-K, phi-phi-pi, phi-3K, phi-K-K-pi, 5K, 4K-pi ------------
-0.0000041 phi phi anti-K0        PHSP;
+0.000004100 phi     phi     anti-K0                         PHSP; #[Reconstructed PDG2011]
 0.0000001 phi phi pi0            PHSP;
 0.000001  phi K+ K- anti-K0      PHSP;
 0.000001  phi K0 anti-K0 anti-K0 PHSP;
@@ -1240,7 +1089,10 @@ Decay anti-B0
 0.000050  a_10  a_10             PHSP;
 0.000050  a_1+  a_1-             PHSP;
 #
-#       B -> cc= s          
+# PR LHCb: 7 Nov 2005 Add K*0 pi0 pi0
+0.0000067     K*0  pi0  pi0     PHSP;
+#
+#       B -> cc= s
 #
 #   Charmonium states - updated from Lange's recommendations (august 23,2000)
 # Based on new BABAR results I'm making the following changes (Lange, March 13, 2001
@@ -1251,32 +1103,29 @@ Decay anti-B0
 #       adding J/psi rho and omega - for lack of better thing will use the Kstar helicity amplitudes.
 #       Psi2sKs  30 ->31
 #       chic1 Kstar: 12 ->6
-
-
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  anti-K*0T          SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000030     J/psi  omega             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-
-0.0012     J/psi  K-  pi+           PHSP;
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.001330000 J/psi   anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000030     J/psi  omega             SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000000000 J/psi   K-      pi+                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K0   pi0           PHSP;
 #rl0.0007     J/psi  anti-K0   pi+  pi-      PHSP;
 #rl0.00035     J/psi  anti-K0   pi0  pi0      PHSP;
 #rl0.00035     J/psi  K-  pi+  pi0      PHSP;
-0.0013     J/psi  anti-K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   anti-K_10                               SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  anti-K_2*0              PHSP;
-0.000094    J/psi  phi anti-K0        PHSP;
+0.000094000 J/psi   phi     anti-K0                         PHSP; #[Reconstructed PDG2011]
+#
+0.000310000 psi(2S) K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000310000 psi(2S) K_L0                                    SVS; #[Reconstructed PDG2011]
 #
-0.00031     psi(2S)  K_S0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00031     psi(2S)  K_L0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00012    psi(2S)  K*S              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00012    psi(2S)  K*L              SVV_CP beta  dm  -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00048     psi(2S)  anti-K*0T             SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+#
+0.000610000 psi(2S) anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 
 0.0004     psi(2S)  K-  pi+          PHSP;
 0.0002     psi(2S)  anti-K0   pi0          PHSP;
@@ -1286,66 +1135,66 @@ Decay anti-B0
 0.0004     psi(2S)  anti-K_10              PHSP;
 
 #
-0.0005    eta_c K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0005    eta_c K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00027   K*S  eta_c              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00027   K*L  eta_c              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00108    anti-K*0T eta_c              SVS;
+0.000445000 eta_c   K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000445000 eta_c   K_L0                                    PHSP; #[Reconstructed PDG2011]
+#
+#
+0.000610000 anti-K*0 eta_c                                  SVS; #[Reconstructed PDG2011]
 0.0002    eta_c  K-  pi+          PHSP;
 0.0001    eta_c  anti-K0   pi0          PHSP;
 0.0002    eta_c  anti-K0   pi+  pi-     PHSP;
 0.0001    eta_c  anti-K0   pi0  pi0     PHSP;
 0.0001    eta_c  K-  pi+  pi0     PHSP;
 #
-0.00024    eta_c(2S) K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00024    eta_c(2S) K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00011   K*S  eta_c(2S)               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00011   K*L  eta_c(2S)               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00044   anti-K*0T eta_c(2S)          SVS;
+0.00024    eta_c(2S) K_S0               PHSP;
+0.00024    eta_c(2S) K_L0               PHSP;
+#
+#
+0.00066    anti-K*0 eta_c(2S)          SVS;
 0.00008    eta_c(2S)   K-  pi+          PHSP;
 0.00005    eta_c(2S)   anti-K0   pi0          PHSP;
 0.00008    eta_c(2S)   anti-K0   pi+  pi-     PHSP;
 0.00005    eta_c(2S)   anti-K0   pi0  pi0     PHSP;
 0.00005    eta_c(2S)   K-  pi+  pi0     PHSP;
 #
-0.00005     chi_c0 K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00005     chi_c0 K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00005    K*S  chi_c0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00005    K*L  chi_c0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0002     anti-K*0T chi_c0              SVS;
+0.000070000 chi_c0  K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000070000 chi_c0  K_L0                                    PHSP; #[Reconstructed PDG2011]
+#
+#
+0.00030     anti-K*0 chi_c0              SVS;
 0.0002     chi_c0  K-  pi+          PHSP;
 0.0001     chi_c0  anti-K0   pi0          PHSP;
 0.0002     chi_c0  anti-K0   pi+  pi-     PHSP;
 0.0001     chi_c0  anti-K0   pi0  pi0     PHSP;
 0.0001     chi_c0  K-  pi+  pi0     PHSP;
 #
-0.00020     chi_c1 K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00020     chi_c1 K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000053    K*S  chi_c1              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000053    K*L  chi_c1              SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000213   chi_c1  anti-K*0T             SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.000195000 chi_c1  K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000195000 chi_c1  K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.000222000 chi_c1  anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 0.0004     chi_c1  K-  pi+          PHSP;
 0.0002     chi_c1  anti-K0   pi0          PHSP;
 0.0004     chi_c1  anti-K0   pi+  pi-     PHSP;
 0.0002     chi_c1  anti-K0   pi0  pi0     PHSP;
 0.0002     chi_c1  K-  pi+  pi0     PHSP;
 #
-0.00001     chi_c2 K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00001     chi_c2 K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000005    K*S  chi_c2              PHSP;
-0.000005    K*L  chi_c2              PHSP;
-0.00002     chi_c2  anti-K*0T             PHSP;
+0.00005     chi_c2 K_S0               STS;
+0.00005     chi_c2 K_L0               STS;
+#
+#
+0.00003     chi_c2  anti-K*0         PHSP;
 0.0002     chi_c2  K-  pi+          PHSP;
 0.0001     chi_c2  anti-K0   pi0          PHSP;
 0.0002     chi_c2  anti-K0   pi+  pi-     PHSP;
 0.0001    chi_c2  anti-K0   pi0  pi0     PHSP;
 0.0001     chi_c2  K-  pi+  pi0     PHSP;
 #
-0.00024     psi(3770)  K_S0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00024     psi(3770)  K_L0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00008     psi(3770)  K*S              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00008     psi(3770)  K*L              SVV_CP beta  dm  -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00032     psi(3770)  anti-K*0T             SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.00024     psi(3770)  K_S0              SVS;
+0.00024     psi(3770)  K_L0              SVS;
+#
+#
+0.00048     psi(3770)  anti-K*0            SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
 0.00014     psi(3770)  K-  pi+                PHSP;
 0.00014     psi(3770)  anti-K0   pi0          PHSP;
 0.00014     psi(3770)  anti-K0   pi+  pi-     PHSP;
@@ -1353,24 +1202,21 @@ Decay anti-B0
 0.00007     psi(3770)  K-  pi+  pi0           PHSP;
 0.00029     psi(3770)  anti-K_10              PHSP;
 #
-
-
-
 # b-> c (dc=)
 #
-0.00023     D-   D+              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
+0.000211000 D-      D+                                      PHSP; #[Reconstructed PDG2011]
 #  See Ref [B1] for the next 3:
-0.000610    D*+  D-              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000610    D*-  D+              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00082     D*+ D*-              SVV_CP beta dm  1  0.56 0.0 0.96 0.0 0.47 0.0;
+0.000305    D*+  D-              SVS;
+0.000610000 D*-     D+                                      SVS; #[Reconstructed PDG2011]
+0.000820000 D*+     D*-                                     SVV_HELAMP 0.47 0.0 0.96 0.0 0.56 0.0; #[Reconstructed PDG2011]
 
 #
 # b -> c (sc=)  -->  D Ds X   Sum = 10%
 #
-0.0065   D+  D_s-                        PHSP;
-0.0080   D*+  D_s-                       SVS;
-0.0074   D_s*- D+                        SVS;
-0.0177   D*+  D_s*-              SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0;
+0.007200000 D+      D_s-                                    PHSP; #[Reconstructed PDG2011]
+0.008000000 D*+     D_s-                                    SVS; #[Reconstructed PDG2011]
+0.007400000 D_s*-   D+                                      SVS; #[Reconstructed PDG2011]
+0.017700000 D*+     D_s*-                                   SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0; #[Reconstructed PDG2011]
 0.0006   D'_1+  D_s-             SVS;
 0.0012   D'_1+  D_s*-            SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0;
 0.0012   D_1+  D_s-              SVS;
@@ -1393,21 +1239,20 @@ Decay anti-B0
 # Update: Ref. [B1]
 #
 # External W-emission amplitude
-0.0017   D+  anti-D0  K-                         PHSP;
-0.0046   D+  anti-D*0  K-                        PHSP; 
-0.0031   D*+ anti-D0  K-                         PHSP;
-0.0118   D*+ anti-D*0  K-                        PHSP;
+0.001700000 D+      anti-D0 K-                              PHSP; #[Reconstructed PDG2011]
+0.004600000 D+      anti-D*0 K-                             PHSP; #[Reconstructed PDG2011]
+0.003100000 D*+     anti-D0 K-                              PHSP; #[Reconstructed PDG2011]
+0.011800000 D*+     anti-D*0 K-                             PHSP; #[Reconstructed PDG2011]
 # External+internal W-emission amplitude
-0.0015   D+  D-  anti-K0                         PHSP; 
-0.0018   D*+ D-  anti-K0                         PHSP; 
-0.0047   D+  D*-  anti-K0                        PHSP; 
-0.0088   D*+ D*-  anti-K0                        PHSP; 
+0.0015   D+  D-  anti-K0                         PHSP;
+0.0018   D*+ D-  anti-K0                         PHSP;
+0.0047   D+  D*-  anti-K0                        PHSP;
+0.007800000 D*+     D*-     anti-K0                         PHSP; #[Reconstructed PDG2011]
 # Internal W-emission amplitude (color suppressed modes)
 0.0005   D0  anti-D0  anti-K0                    PHSP;
-
-0.0005   D0  anti-D*0  anti-K0                   PHSP; 
-0.0005   D*0  anti-D0  anti-K0                   PHSP; 
-0.0005   D*0  anti-D*0  anti-K0                  PHSP; 
+0.000120000 D*0     anti-D0 anti-K0                         PHSP; #[Reconstructed PDG2011]
+0.0015   D0  anti-D*0  anti-K0                   PHSP;
+0.0015   D*0  anti-D*0  anti-K0                  PHSP;
 
 0.0025   D+  anti-D0  K*-                        PHSP;
 0.0025   D*+ anti-D0  K*-                        PHSP;
@@ -1427,34 +1272,34 @@ Decay anti-B0
 #
 #  B -> D(*) X  Exclusive modes
 #
-0.00276  D*+ pi-                        SVS;
-0.00268  D+  pi-                        PHSP;
-0.0075   rho- D+                        SVS;
+0.002760000 D*+     pi-                                     SVS; #[Reconstructed PDG2011]
+0.002680000 D+      pi-                                     PHSP; #[Reconstructed PDG2011]
+0.007110000 rho-    D+                                      SVS; #[Reconstructed PDG2011]
 #
 # D* rho HELAMP parameters taken from ICHEP 98-852.
-0.0068   rho- D*+                 SVV_HELAMP 0.152 1.47 0.936 0 0.317 0.19; 
+0.006800000 rho-    D*+                                     SVV_HELAMP 0.152 1.47 0.936 0 0.317 0.19; #[Reconstructed PDG2011]
 0.0005   D+  pi-  pi0                   PHSP;
-0.0082  D*+ pi-  pi0                   PHSP;
-0.0005   D0  pi+  pi-                   PHSP;
-0.00062  D*0 pi+  pi-                   PHSP;
+0.008200000 D*+     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000840000 D0      pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.000620000 D*0     pi+     pi-                             PHSP; #[Reconstructed PDG2011]
 0.0005   D*0 pi0  pi0                   PHSP;
 #
 # D a1 updated Ref. [B1]
-0.00834  a_1- D+                         SVS;
-0.0011   D+  rho0  pi-                  PHSP;
+0.006000000 a_1-    D+                                      SVS; #[Reconstructed PDG2011]
+0.000000000 D+      rho0    pi-                             PHSP; #[Reconstructed PDG2011]
 0.0011   D+  rho-  pi0                  PHSP;
-0.0039   D+  pi+  pi-  pi-              PHSP;
+0.002000000 D+      pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
 0.0010   D+  pi0  pi-  pi0              PHSP;
 0.0010   D0  pi+  pi-  pi0              PHSP;
 0.0001   D0  pi0  pi0  pi0              PHSP;
 #
-# SVV_HELAMP for D* a1 taken from factorization. Recommandation 
+# SVV_HELAMP for D* a1 taken from factorization. Recommandation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/168.html:
 # updated Ref. [B1]
 # October 26, 2004 Lange update
-0.0120   D*+  a_1-                     SVV_HELAMP 0.200 0.0 0.866 0.0 0.458 0.0;
+0.013000000 D*+     a_1-                                    SVV_HELAMP 0.200 0.0 0.866 0.0 0.458 0.0; #[Reconstructed PDG2011]
 #
-0.0025   D*+  rho0  pi-                 PHSP;
+0.005700000 D*+     rho0    pi-                             PHSP; #[Reconstructed PDG2011]
 0.0010   D*+  rho-  pi0                 PHSP;
 0.0000   D*+  pi+  pi-  pi-             PHSP;
 0.0010   D*+  pi0  pi-  pi0             PHSP;
@@ -1466,123 +1311,211 @@ Decay anti-B0
 #further updates October 26, 2004 - Lange
 # October 26, 2004 Lange update
 #
-0.0006   D_1+ pi-                      SVS;
+0.0001   D_1+ pi-                      SVS;
 0.0001   D'_1+ pi-                     SVS;
-0.0002   D_0*+ pi- PHSP;
-0.0009   D_2*+ pi-                     STS;
-0.0004   D_1+ rho-                     PHSP;  
-0.0013   D'_1+ rho-                    PHSP;  
-0.0022   D_2*+ rho-                    PHSP;  
+0.00006   D_0*+ pi- PHSP;
+0.000215   D_2*+ pi-                   STS;
+0.0004   D_1+ rho-                     PHSP;
+0.0013   D'_1+ rho-                    PHSP;
+0.0022   D_2*+ rho-                    PHSP;
 #
 #
-# B->DK, recommendation 
+# B->DK, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/151.html:
 # update: Ref. [B1]:
 #
-0.00021  D*+ K-                        SVS;
-0.00020  D+  K-                        PHSP;
-0.00033  D*+ K*-               SVV_HELAMP 0.228 0.0 0.932 0.0 0.283 0.0;
-0.00045  K*- D+                SVS;
+0.000214000 D*+     K-                                      SVS; #[Reconstructed PDG2011]
+0.000200000 D+      K-                                      PHSP; #[Reconstructed PDG2011]
+0.000330000 D*+     K*-                                     SVV_HELAMP 0.228 0.0 0.932 0.0 0.283 0.0; #[Reconstructed PDG2011]
+0.000450000 K*-     D+                                      SVS; #[Reconstructed PDG2011]
 #more DK modes - October 26, 2004 -Lange
-0.00004 D*0 K0 SVS;
-0.00004 D0 K0 PHSP;
-0.000042 anti-K*0 D0 SVS;
+0.000036 D*0 K0 SVS;
+0.000052 D0 K0 PHSP;
+0.000042000 anti-K*0 D0                                     SVS; #[Reconstructed PDG2011]
 0.00001 anti-K*0 anti-D0 SVS;
 0.00004 D*0 anti-K*0 SVV_HELAMP 1. 0. 1. 0. 1. 0.;
 0.00001 anti-D*0 anti-K*0 SVV_HELAMP 1. 0. 1. 0. 1. 0.;
 #
 #
-# Color-suppressed modes. Br's are expectations from 
+# Color-suppressed modes. Br's are expectations from
 # Phys. Rev. D57 (1998), 5363-5369, except for the eta' modes, which are set
 # equal to the eta modes. SVV_HELAMP parameters are the same as in D*0 rho-,
 # with phases set to 0. Recommendation http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/169.html:
 # update: See Ref [B1]:
 # further update October 26, 2004 Lange
 #
-0.000261 D0 pi0                  PHSP;
-0.00017  D*0 pi0                 SVS;
+0.000261000 D0      pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000170000 D*0     pi0                                     SVS; #[Reconstructed PDG2011]
 #
-0.00029  rho0 D0                 SVS;
+0.000320000 rho0    D0                                      SVS; #[Reconstructed PDG2011]
 0.00029  D*0 rho0                SVV_HELAMP 0.228 0.0 0.932 0.0 0.283 0.0;
 #
-0.000202 D0 eta                  PHSP;
-0.00018  D*0 eta                 SVS;
+0.000202000 D0      eta                                     PHSP; #[Reconstructed PDG2011]
+0.000200000 D*0     eta                                     SVS; #[Reconstructed PDG2011]
 #
-0.000125 D0 eta'                 PHSP;
-0.000123 D*0 eta'                SVS;
+0.000125  D0 eta'                 PHSP;
+0.000123000 D*0     eta'                                    SVS; #[Reconstructed PDG2011]
 #
-0.000259 omega D0                SVS;
-0.00027  D*0 omega               SVV_HELAMP 0.228 0.0  0.932 0.0 0.283 0.0;
+0.000259000 omega   D0                                      SVS; #[Reconstructed PDG2011]
+0.000330000 D*0     omega                                   SVV_HELAMP 0.228 0.0  0.932 0.0 0.283 0.0; #[Reconstructed PDG2011]
 #
 #
 #October 26, 2004 - Lange
-0.00097 D_s0*- D+ PHSP;
-0.00097 D*+ D_s0*- SVS;
-0.0015 D_s1- D+ SVS;
-0.0093 D*+ D_s1- SVV_HELAMP 0.4904 0. 0.7204 0. 0.4904 0.;
-#
- 0.0066        cd_0       anti-ud_0         PYTHIA 22;
- 0.0134        cd_1       anti-ud_1         PYTHIA 22;
- 0.004         cd_0       anti-ud_0         PYTHIA 23;
- 0.008         cd_1       anti-ud_1         PYTHIA 23;
- 0.001         cs_0       anti-ud_0         PYTHIA 23;
- 0.002         cs_1       anti-ud_1         PYTHIA 23;
- 0.005         cs_0       anti-cd_0         PYTHIA 22;
- 0.010         cs_1       anti-cd_1         PYTHIA 22;
- 0.001         cs_0       anti-cd_0         PYTHIA 23;
- 0.002         cs_1       anti-cd_1         PYTHIA 23;
-
-0.25885        anti-u       d  c       anti-d       PYTHIA         48;
-0.04600         anti-u       d  c       anti-d       PYTHIA         13;
-0.02100         anti-u       s  c       anti-d       PYTHIA         13;
-0.01800         anti-u       c  d       anti-d       PYTHIA         48;
-0.00090         anti-u       c  s       anti-d       PYTHIA         48;
+0.0016 D_s0*- D+ PHSP;
+0.0015 D*+ D_s0*- SVS;
+0.003500000 D_s1-   D+                                      SVS; #[Reconstructed PDG2011]
+0.009300000 D*+     D_s1-                                   SVV_HELAMP 0.4904 0. 0.7204 0. 0.4904 0.; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.00088  D+ K- anti-K*0  PHSP;
+0.00129  D*+ K- anti-K*0  PHSP;
+#
+# Feb 2009
+#
+0.002800000 D+      omega   pi-                             PHSP; #[Reconstructed PDG2011]
+0.002890000 D*+     omega   pi-                             PHSP; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.00049  D+ K0 pi-  PHSP;
+0.0003  D*+ K0 pi-  PHSP;
+#
+# Feb 2009
+#
+0.00043 D'_s1- D+  PHSP;
+0.00083 D'_s1- D*+  PHSP;
+##### Already included above   0.0023 D_s1- D*+  PHSP;
+#
+#
+#  Lam_c X  / Sigma_c X      6.0 %
+#
+#0.01000        cd_0       anti-ud_0         PYTHIA 23;
+#0.03000        cd_1       anti-ud_1         PYTHIA 23;
+0.010463563 cd_0    anti-ud_0                               PYTHIA 23; #[Reconstructed PDG2011]
+0.020927220 cd_1    anti-ud_1                               PYTHIA 23; #[Reconstructed PDG2011]
+#
+#  Xi_c X     2.5%
+#
+#0.00600        cs_0       anti-ud_0         PYTHIA 23;
+#0.01800        cs_1       anti-ud_1         PYTHIA 23;
+0.002853725 cs_0    anti-ud_0                               PYTHIA 23; #[Reconstructed PDG2011]
+0.005707449 cs_1    anti-ud_1                               PYTHIA 23; #[Reconstructed PDG2011]
+#
+# PR LHCb Add p pbar mode
+0.0000001      p+    anti-p-                PHSP;
+#
+0.256690755 anti-u  d       c       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.043756828 anti-u  d       c       anti-d                  PYTHIA         25; #[Reconstructed PDG2011]
+0.019975978 anti-u  s       c       anti-d                  PYTHIA         23; #[Reconstructed PDG2011]
+0.017122253 anti-u  c       d       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.000856098 anti-u  c       s       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
 #lange - try to crank up the psi production....
-0.07400         anti-c       s  c       anti-d       PYTHIA         13;
-0.00600         anti-c       d  c       anti-d       PYTHIA         13;
-0.00300         anti-u       d  u       anti-d       PYTHIA         48;
-0.00400         anti-c       s  u       anti-d       PYTHIA         48;
+0.070391402 anti-c  s       c       anti-d                  PYTHIA         13; #[Reconstructed PDG2011]
+0.005707449 anti-c  d       c       anti-d                  PYTHIA         13; #[Reconstructed PDG2011]
+0.002853725 anti-u  d       u       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.003804966 anti-c  s       u       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
 # JGS 11/5/02 This and similar a few lines above have been divided by two
-# to solve a double-counting problem for this channel 
-0.00205         anti-u     u  d       anti-d       PYTHIA         48;
-0.00007         anti-d     d  d       anti-d       PYTHIA         48;
-0.00009         anti-s     s  d       anti-d       PYTHIA         48;
-0.00220         anti-u     u  s       anti-d       PYTHIA         48;
-0.00180         anti-d     d  s       anti-d       PYTHIA         48;
-0.00150         anti-s     s  s       anti-d       PYTHIA         48;
-0.00500                    s  g       anti-d       PYTHIA         33;
+# to solve a double-counting problem for this channel
+0.001950007 anti-u  u       d       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.000066610 anti-d  d       d       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.000085600 anti-s  s       d       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.002092675 anti-u  u       s       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.001712197 anti-d  d       s       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.001426862 anti-s  s       s       anti-d                  PYTHIA         48; #[Reconstructed PDG2011]
+0.004756208 s       anti-d                                  PYTHIA         32; #[Reconstructed PDG2011]
+0.000490000 D+      anti-K0 pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000880000 D+      K-      K*0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 D*+     anti-K0 pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001290000 D*+     K-      K*0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.017600000 D*+     pi-     pi-     pi+     pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004700000 D*+     pi-     pi-     pi-     pi+     pi+     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000110000 D_s+    pi-     anti-K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000052000 D0      anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000046000 D0      K-      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000006000 anti-D0 K-      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000036000 D*0     anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002700000 anti-D*0 pi-     pi-     pi+     pi+            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000890000 eta_c   anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000871000 J/psi   anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   anti-K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   anti-K0 pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   anti-K0 rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   anti-K*0 pi-     pi+                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000170000 anti-K0 anti-D0 D0      pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000620000 psi(2S) anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000140000 chi_c0  anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011200 chi_c1  pi0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000390000 chi_c1  anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000158000 chi_c1  K+      pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011000 eta     anti-K_0*0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009600 eta     anti-K_2*0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000016000 omega   anti-K_0*0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000010100 omega   anti-K_2*0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004700 anti-K0 rho0                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002700 f_2     anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001400 f_0     K-      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007500 anti-K_2*0 phi                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007600 eta     anti-K0 gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004600 K-      pi+     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019500 anti-K0 pi-     pi+     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000041000 K-      pi+     pi0     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000012400 anti-K_2*0 gamma                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000860 rho0    gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002660 anti-p- p+      anti-K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001240 anti-p- p+      anti-K*0                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003140 anti-p- Lambda0 pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004800 Lambda0 anti-Lambda0 anti-K0                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002500 Lambda0 anti-Lambda0 anti-K*0                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011000 Lambda0 anti-Lambda0 anti-D0                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000114000 D0      anti-p- p+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000028000 D_s+    Lambda0 anti-p-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000103000 D*0     anti-p- p+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001500000 D*+     anti-p- n0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000338000 D+      anti-p- p+      pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000500000 D*+     anti-p- p+      pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 Lambda_c+ anti-p-                               PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000630000 Lambda_c+ anti-p- pi-     pi+                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000120000 Sigma_c*++ anti-p- pi-                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000150000 Sigma_c0 anti-p- pi+                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000220000 Sigma_c++ anti-p- pi-                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 #
-
 Decay B0
+# Updated to PDG 2008
 #                   b -> c semileptonic
-# =10.4% total  non-D and D* = 3.4% (changing to 2.7)
-0.0529   D*-    e+   nu_e           PHOTOS HQET 0.77 1.33 0.92;
-0.0208   D-     e+   nu_e           PHOTOS ISGW2;
-0.0052   D_1-   e+   nu_e           PHOTOS ISGW2;
-0.0045   D_0*-   e+   nu_e           PHOTOS ISGW2;
-0.0083   D'_1-   e+   nu_e           PHOTOS ISGW2;
-0.0023   D_2*-   e+   nu_e           PHOTOS ISGW2;
+#
+0.050100000 D*-     e+      nu_e                            PHOTOS HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D-      e+      nu_e                            PHOTOS ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1-   e+   nu_e           PHOTOS ISGW2;
+0.0020   D_0*-   e+   nu_e           PHOTOS ISGW2;
+0.0050   D'_1-   e+   nu_e           PHOTOS ISGW2;
+0.0022   D_2*-   e+   nu_e           PHOTOS ISGW2;
 0.0003   D*-  pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0065   anti-D*0  pi-   e+   nu_e       PHOTOS GOITY_ROBERTS;
+0.004900000 anti-D*0 pi-     e+      nu_e                   PHOTOS GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0010   D-   pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0032   anti-D0  pi-   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0529   D*-    mu+  nu_mu           PHOTOS HQET 0.77 1.33 0.92;
-0.0208   D-     mu+  nu_mu           PHOTOS ISGW2;
-0.0052   D_1-   mu+  nu_mu           PHOTOS ISGW2;
-0.0045   D_0*-   mu+  nu_mu          PHOTOS  ISGW2;
-0.0083   D'_1-   mu+  nu_mu          PHOTOS  ISGW2;
-0.0023   D_2*-   mu+  nu_mu          PHOTOS  ISGW2;
+# Now 0 as it duplicates other decays
+0.0000   anti-D0  pi-   e+   nu_e       PHOTOS GOITY_ROBERTS;
+#
+0.050100000 D*-     mu+     nu_mu                           PHOTOS HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D-      mu+     nu_mu                           PHOTOS ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1-   mu+  nu_mu           PHOTOS ISGW2;
+0.0020   D_0*-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0050   D'_1-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0022   D_2*-   mu+  nu_mu          PHOTOS  ISGW2;
 0.0003   D*-  pi0   mu+  nu_mu       PHOTOS GOITY_ROBERTS;
-0.0065   anti-D*0  pi-   mu+  nu_mu   PHOTOS     GOITY_ROBERTS;
+0.004900000 anti-D*0 pi-     mu+     nu_mu                  PHOTOS     GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0010   D-   pi0   mu+  nu_mu       PHOTOS GOITY_ROBERTS;
-0.0032   anti-D0  pi-   mu+  nu_mu    PHOTOS    GOITY_ROBERTS;
+0.0000   anti-D0  pi-   mu+  nu_mu    PHOTOS    GOITY_ROBERTS;
 #
 #                    b -> c tau nu
 #
-0.0202   D*-    tau+ nu_tau                  ISGW2; # taken from Belle- Phys. Rev. Lett. 99, 191807 (2007) 
-0.0088   D-     tau+ nu_tau                  ISGW2;
+0.015000000 D*-     tau+    nu_tau                          ISGW2; #[Reconstructed PDG2011]
+0.011000000 D-      tau+    nu_tau                          ISGW2; #[Reconstructed PDG2011]
 0.0013   D_1-   tau+ nu_tau                  ISGW2;
 0.0013   D_0*-   tau+ nu_tau                  ISGW2;
 0.0020   D'_1-   tau+ nu_tau                  ISGW2;
@@ -1590,17 +1523,17 @@ Decay B0
 #
 #                    b -> u l nu
 #
-0.000136   pi-    e+   nu_e        PHOTOS  ISGW2;
-0.000220   rho-   e+   nu_e        PHOTOS  ISGW2;
+0.000134000 pi-     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho-    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
 0.000000   D(2S)- e+   nu_e        PHOTOS  ISGW2;
 0.000000   D*(2S)- e+   nu_e       PHOTOS  ISGW2;
-0.001892   Xu-  e+  nu_e           PHOTOS  VubHybridB0;
+0.001892   Xu-  e+  nu_e             VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30  3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
 #
-0.000136   pi-    mu+  nu_mu       PHOTOS  ISGW2;
-0.000220   rho-   mu+  nu_mu       PHOTOS  ISGW2;
+0.000134000 pi-     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho-    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
 0.000000   D(2S)- mu+  nu_mu       PHOTOS  ISGW2;
 0.000000   D*(2S)- mu+  nu_mu      PHOTOS  ISGW2;
-0.001892   Xu-  mu+  nu_mu         PHOTOS  VubHybridB0;
+0.001892   Xu-  mu+  nu_mu             VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
 #
 0.000060   pi-    tau+ nu_tau                ISGW2;
 0.000083   rho-   tau+ nu_tau                ISGW2;
@@ -1614,40 +1547,42 @@ Decay B0
 #
 
 #
-# b->u hadronic 
+# b->u hadronic
 # Ref. [B1]:
 # Lange Nov14,2004 (flip D_s K --opposite of D_s pi)
-0.000015   D_s+  pi-   PHSP;
-0.000028   D_s-  K+    PHSP;
-0.000029   D_s*+  pi-  SVS;
-0.000022   D_s*-  K+   SVS;
-#
-0.000016   rho-   D_s+    SVS; 
-0.000016   K*+   D_s-     SVS;
-0.000016   D_s*+  rho-    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.000016   D_s*-  K*+     SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+0.000024000 D_s+    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000030000 D_s-    K+                                      PHSP; #[Reconstructed PDG2011]
+0.000021000 D_s*+   pi-                                     SVS; #[Reconstructed PDG2011]
+0.000021900 D_s*-   K+                                      SVS; #[Reconstructed PDG2011]
+#
+0.000016   rho-   D_s+    SVS;
+0.000035000 K*+     D_s-                                    SVS; #[Reconstructed PDG2011]
+0.000041000 D_s*+   rho-                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000032000 D_s*-   K*+                                     SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 
 
 #
 # b -> s gamma
 #
-0.0000401   K*0  gamma                   HELAMP 1.0 0.0 1.0 0.0;
+0.000043300 K*0     gamma                                   HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+# PR LHCb add omega gamma
+0.000000440 omega   gamma                                   HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 #0.0000135  K_10  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000065  K'_10  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000128  K'*0  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000166  K_2*0  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000017  K''*0  gamma                   HELAMP 1.0 0.0 1.0 0.0;
-0.0003139   Xsd    gamma  BTOXSGAMMA 2;
-#
-0.000000134 K0   e+    e-    PHOTOS BTOSLLBALL;
-0.000001045 K*0  e+    e-    PHOTOS BTOSLLBALL;
-0.000004994 Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.000000574 K0   mu+   mu-   PHOTOS BTOSLLBALL;
-0.000001100 K*0  mu+   mu-   PHOTOS BTOSLLBALL;
-0.000002506 Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.000000130 K0   tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000190 K*0  tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000200 Xsd  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.0003118   Xsd    gamma     BTOXSGAMMA 2 ;
+#
+0.000000160 K0      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001030 K*0     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.000000450 K0      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001050 K*0     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.0000001 K0   tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 K*0  tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 Xsd  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
 #
 #------------------------------------------------------------------------------
 # 2- and 3-body modes revised Feb.2005  Markus Cristinziani, SLAC
@@ -1655,53 +1590,53 @@ Decay B0
 #
 #    B0 -> CP eigenstates  (some exclusive b -> u)   sum=0.00036
 #
-0.0000049 pi+  pi-     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.0000015 pi0  pi0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  eta     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.0000015 pi0  eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  a_00    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  pi0  f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
+# PR LHCb 04/07/04 update BR
+0.000005130 pi+     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000001620 pi0     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.0000010  pi0  eta     PHSP;
+0.000001200 pi0     eta'                                    PHSP; #[Reconstructed PDG2011]
+0.000001  pi0  a_00    PHSP;
+0.000001  pi0  f_0     PHSP;
 # pi0 rho0 is with the 3-body modes
-0.000001  pi0  omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  pi0  b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta  eta     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  a_00    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta  f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta  rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta  b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta' eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' a_00    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta' f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  eta' rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  eta' b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00 a_00    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  a_00 f_0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  a_00 rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00 omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00 a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  a_00 b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.0000003  f_0   f_0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
-0.000001  f_0  rho0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  f_0  omega   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  f_0  a_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.000001  f_0  b_10    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
+0.000001  omega pi0    SVS;
+0.000001  a_10  pi0    SVS;
+0.000001  b_10  pi0    SVS;
+0.000001  eta  eta     PHSP;
+0.000001  eta  eta'    PHSP;
+0.000001  eta  a_00    PHSP;
+0.000001  eta  f_0     PHSP;
+0.000001  rho0 eta     SVS;
+0.000000940 omega   eta                                     SVS; #[Reconstructed PDG2011]
+0.000001  a_10 eta     SVS;
+0.000001  b_10 eta     SVS;
+0.000001  eta' eta'    PHSP;
+0.000001  eta' a_00    PHSP;
+0.000001  eta' f_0     PHSP;
+0.000001  rho0 eta'    SVS;
+0.000001000 omega   eta'                                    SVS; #[Reconstructed PDG2011]
+0.000001  a_10 eta'    SVS;
+0.000001  b_10 eta'    SVS;
+0.000001  a_00 a_00    PHSP;
+0.000001  a_00 f_0     PHSP;
+0.000001  rho0 a_00    SVS;
+0.000001  omega a_00   SVS;
+0.000001  a_10 a_00    SVS;
+0.000001  b_10 a_00    SVS;
+0.000001  f_0   f_0    PHSP;
+0.000001  rho0 f_0     SVS;
+0.000001  omega f_0    SVS;
+0.000001  a_10 f_0     SVS;
+0.000001  b_10 f_0     SVS;
 
 # Penguin dominated modes are sin2beta, not sin2alpha
-
-0.0000043 phi  K_S0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0000043 phi  K_L0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000001  eta K_S0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000001  eta K_L0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000032  eta' K_S0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000032  eta' K_L0    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0000023 omega K_S0   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0000023 omega K_L0   SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
+0.000004300 phi     K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000004300 phi     K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000550 eta     K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000000550 eta     K_L0                                    PHSP; #[Reconstructed PDG2011]
+0.000033000 eta'    K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000033000 eta'    K_L0                                    PHSP; #[Reconstructed PDG2011]
+0.000002500 omega   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000002500 omega   K_L0                                    SVS; #[Reconstructed PDG2011]
 #don't allow jetset to simulate the same decay but to a K0 or anti-K0
 #Lange 1/30/2003
 0.0  phi  K0    PHSP;
@@ -1713,38 +1648,40 @@ Decay B0
 0.0  omega K0   PHSP;
 0.0  omega anti-K0 PHSP;
 # phipi0 has no simple Pengiun or tree so who knows - ditto phieta/eta'?
-
-0.00000005 phi  pi0     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0; 
-0.00000003 phi  eta     SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0; #upper bound in PDG 6*10^-7    
-0.00000003 phi  eta'    SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0; #bound 10^-6
+0.000001  phi  pi0     SVS;
+0.000001  phi  eta     SVS;
+0.000001  phi  eta'    SVS;
 #
-0.0000163  K*0 eta      SVS;
-0.0000038  K*0 eta'     SVS;
-
-0.000001  K*0 omega    SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000015900 K*0     eta                                     SVS; #[Reconstructed PDG2011]
+0.000003800 K*0     eta'                                    SVS; #[Reconstructed PDG2011]
+0.000002000 K*0     omega                                   SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000001  phi  omega   SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.000001  omega omega  SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.000001  omega rho0   SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 #
+# PR LHCb 04/07/04 update BR
 #2-body modes from Jim Olsen
-0.0000188  K+  pi-      PHSP;
-0.0000001      K+  K-       PHSP;# upper bound 3.7 10^-7
-0.0000006 K_S0 K_S0    PHSP;
-0.0000000 K_S0 K_L0    PHSP;
-0.0000006 K_L0 K_L0    PHSP;
-0.0000115 K0 pi0       PHSP;
-# Put in with 0 BR to keep PYTHIA from generating it
-0.0000000 K0 anti-K0   PHSP;
+0.000019400 K+      pi-                                     PHSP; #[Reconstructed PDG2011]
+0.0000004  K+  K-       PHSP;
+0.000000240 K_S0    K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.0000000  K_S0 K_L0    PHSP;
+0.000000240 K_L0    K_L0                                    PHSP; #[Reconstructed PDG2011]
+# Declare K0 pi0 not to have it through Pythia (LHCb - PR)
+0.0000000  K0 pi0       PHSP;
+# Split into K_s0 K_l0 (LHCb - P. Robbe)
+0.000004750 K_S0    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000004750 K_L0    pi0                                     PHSP; #[Reconstructed PDG2011]
+#Put in with 0 BR to keep PYTHIA from generating it
+0.0000000  K0 anti-K0   PHSP;
 #
 # 3-body John Back (jback@slac.stanford.edu) - Oct 15, 2002
 # JGS intersperses modes with pi0->eta,eta'
 # B0 modes
-# Model generates rho(770), rho(1450) and rho(1700) resonances 
+# Model generates rho(770), rho(1450) and rho(1700) resonances
 # with interference (uses CKM angle alpha)
-
 0.000024     pi- pi+ pi0            BTO3PI_CP dm  alpha;
 # Put in with 0 BR to keep PYTHIA from generating these (see BTO3PI_CP above)
-0.000000     rho0 pi0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
+0.000000     rho0 pi0               SVS;
 0.000000     rho+ pi-               SVS;
 0.000000     rho- pi+               SVS;
 0.000000     rho(2S)+ pi-           SVS;
@@ -1753,26 +1690,26 @@ Decay B0
 0.000000     rho(3S)- pi+           SVS;
 #
 # rho0 3-body modes
-0.0000022    rho0 K_S0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.0000022    rho0 K_L0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
+0.000002350 rho0    K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000002350 rho0    K_L0                                    SVS; #[Reconstructed PDG2011]
 #
 # rho- 3-body modes
-0.0000085    rho- K+                SVS;
+0.000008400 rho-    K+                                      SVS; #[Reconstructed PDG2011]
 #
 # rho(1450) 3-body modes
-0.0000005    rho(2S)0 K_S0          SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma -1.0 minusGamma;
-0.0000005    rho(2S)0 K_L0          SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 gamma 1.0 minusGamma;
+0.0000005    rho(2S)0 K_S0          SVS;
+0.0000005    rho(2S)0 K_L0          SVS;
 #
 #
 # f0,a0(980) 3-body modes
-0.0000055    f_0 K0                 PHSP;
+0.0000055     f_0 K0                 PHSP;
 0.000001     a_00 K0                PHSP;
 0.000001     a_0- K+                PHSP;
 0.000001     a_0+ pi-               PHSP;
 0.000003     a_0- pi+               PHSP;
 #
 # K*0(892) 3-body modes
-0.0000017    K*0 pi0                SVS; 
+0.000003600 K*0     pi0                                     SVS; #[Reconstructed PDG2011]
 0.000003     K*0 anti-K0            SVS;
 #
 # K*0(1430) 3-body modes
@@ -1781,20 +1718,20 @@ Decay B0
 #
 # K*0(1680) 3-body modes
 0.000001     K''*0 pi0              SVS;
-0.000001     K''*0 anti-K0               SVS;
+0.000001     K''*0 K0               SVS;
 
 #
 # K*+(892) 3-body modes
-0.0000085    K*+ pi-                SVS;
-0.0000002     K*+ K-                 SVS;
+0.000009400 K*+     pi-                                     SVS; #[Reconstructed PDG2011]
+0.000002     K*+ K-                 SVS;
 #
 # K*+(1430) 3-body modes
-0.000033     K_0*+ pi-              PHSP; #rescalled by 2/3 the Belle result PhysRevD 75 012006
-0.0000002     K_0*+ K-               PHSP;
+0.000033000 K_0*+   pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000002     K_0*+ K-               PHSP;
 #
 # K*0(1680) 3-body modes
 0.000001     K''*+ pi-              SVS;
-0.0000001     K''*+ K-               SVS;
+0.000001     K''*+ K-               SVS;
 #
 #
 # Non-resonant 3-body left-overs
@@ -1805,22 +1742,24 @@ Decay B0
 0.000017     pi+ pi- eta            PHSP;
 0.000001     pi+ pi- eta'           PHSP;
 #
-# pi+ pi- K0: 
-0.000013     pi+ pi- K0             PHSP;
-
+# pi+ pi- K0: total-rhoK0-f0K0-piK*(892)-piK*(1430)=45-5-6-13./3-11./3
+0.000000000 pi+     pi-     K0                              PHSP; #[Reconstructed PDG2011]
 #
 # K+ pi- pi0
-0.000002     K+ pi- pi0             PHSP;
+0.000027500 K+      pi-     pi0                             PHSP; #[Reconstructed PDG2011]
 0.000020     K+ pi- eta             PHSP;
 0.000001     K+ pi- eta'            PHSP;
 #
-# pi+ K- K0. 
+# pi+ K- K0.
 # Both B0 and B0bar can decay to these => 0.5e-6 each
 0.0000005    pi+ K- K0              PHSP;
 0.0000005    pi- K+ anti-K0         PHSP;
-
-# K+ K- K0:  total-phiK  = 24.7-4.2  
-0.0000205    K+ K- K0               PHSP;
+#
+# K+ K- K0
+# PR LHCb 09 Apr 2004 split into KS/KL
+0.000000     K+ K- K0               PHSP;
+0.000012350 K+      K-      K_S0                            PHSP; #[Reconstructed PDG2011]
+0.000012350 K+      K-      K_L0                            PHSP; #[Reconstructed PDG2011]
 #
 # K+ K- pi0
 0.000001     K+ K- pi0              PHSP;
@@ -1850,15 +1789,18 @@ Decay B0
 0.000001     pi0 eta eta            PHSP;
 0.000001     pi0 eta eta'           PHSP;
 #
+# PR LHCb: 7 Nov 2005 Add K*0 pi0 pi0
+0.0000067     K*0  pi0  pi0          PHSP;
 #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 # 2- and 3-body modes revised Feb.2005   Markus Cristinziani, SLAC
 #---------------------------------------------------------------------------
 #
 #4-body modes from Andrei Gritsan
 #--- 4-body rho-rho, rho-pi-pi, pi-pi-pi-pi --------------------------
-0.0000011 rho0 rho0              SVV_CP alpha dm 1 1.0 0.0 1.7 0.0 1.0 0.0;
-0.000025  rho+ rho-              SVV_CP alpha dm 1 1.0 0.0 1.7 0.0 1.0 0.0;
-0.000005  rho0 pi+ pi-           PHSP;
+# PR LHCb 20 Apr 2004, set long. pol.
+0.000000730 rho0    rho0                                    SVV_HELAMP 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000024200 rho+    rho-                                    SVV_HELAMP 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000003  rho0 pi+ pi-           PHSP;
 0.000003  omega pi+ pi-          PHSP;
 0.000001  rho0 pi0 pi0           PHSP;
 0.000001  omega pi0 pi0          PHSP;
@@ -1880,21 +1822,21 @@ Decay B0
 0.000002  pi+ pi- eta eta        PHSP;
 0.000002  pi+ pi- eta' pi0       PHSP;
 0.000001  pi+ pi- eta' eta       PHSP;
-0.0000165 a_1+ pi-               SVS;
-0.0000165 a_1- pi+               SVS;
-0.000000  b_1+ pi-               SVS;
-0.000010  b_1- pi+               SVS;
+0.000016500 a_1+    pi-                                     SVS; #[Reconstructed PDG2011]
+0.000016500 a_1-    pi+                                     SVS; #[Reconstructed PDG2011]
+0.0000055  b_1+ pi-               SVS;
+0.0000055  b_1- pi+               SVS;
 0.000002  rho- a_0+              SVS;
 0.000010  rho+ a_0-              SVS;
 0.000001  f_0 pi+ pi-            PHSP;
 0.000001  f_0 pi0 pi0            PHSP;
-0.000001  a_0+ pi- pi0           PHSP;
-0.000001  a_00 pi0 pi0           PHSP;
 0.000001  a_0- pi+ pi0           PHSP;
+0.000001  a_00 pi0 pi0           PHSP;
+0.000001  a_0+ pi- pi0           PHSP;
 #--- 4-body rho-K*, rho-pi-K, K*-pi-pi, pi-pi-pi-K -------------------
-0.0000056 rho0  K*0              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.000010  rho-  K*+              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; 
-0.000010  pi- pi+ K*0            PHSP;
+0.000003400 rho0    K*0                                     SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0000100  rho-  K*+              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000050600 pi-     pi+     K*0                             PHSP; #[Reconstructed PDG2011]
 0.000010  pi- pi0 K*+            PHSP;
 0.000005  pi- eta K*+            PHSP;
 0.000002  pi- eta' K*+           PHSP;
@@ -1910,7 +1852,7 @@ Decay B0
 0.000005  omega K0 pi0           PHSP;
 0.000002  omega K0 eta           PHSP;
 0.000001  omega K0 eta'          PHSP;
-0.000005  omega K+ pi-           PHSP;
+0.000005100 omega   K+      pi-                             PHSP; #[Reconstructed PDG2011]
 0.000010  pi+ pi0 pi- K0         PHSP;
 0.000005  pi+ eta pi- K0         PHSP;
 0.000010  pi0 pi0 pi0 K0         PHSP;
@@ -1929,25 +1871,24 @@ Decay B0
 0.000010  pi- pi+ K_0*0          PHSP;
 0.000010  pi0 pi0 K_0*0          PHSP;
 0.000010  pi- pi0 K_0*+          PHSP;
-0.000002  K*0 f_0                SVS;
+0.000005  K*0 f_0                SVS;
 0.000010  a_10 K0                SVS;
-0.000010  a_1- K+                SVS; 
-0.0000066 b_10 K0                SVS;
-0.000010  b_1- K+                SVS;
+0.000016000 a_1-    K+                                      SVS; #[Reconstructed PDG2011]
+0.000010  b_10 K0                SVS;
+0.0000074  b_1- K+                SVS;
 0.000005  K*0 a_00               SVS;
 0.000005  K*+ a_0-               SVS;
 #--- 4-body K*-K*, rho-K-K, K*-K-pi, phi-pi-pi, pi-pi-K-K ------------
-0.00000105  K*0   anti-K*0         SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000001280 K*0     anti-K*0                                SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000001  K*+   K*-              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.0000001 phi   rho0             SVV_CP alpha dm 1 1.0 0.0 1.7 0.0 1.0 0.0;
-0.0000001 phi   pi- pi+          PHSP;
+0.0000001 phi   rho0             SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.000001  K+ K- rho0             PHSP;
 0.000001  K0 anti-K0 rho0        PHSP;
 0.000001  K+ K- omega            PHSP;
 0.000001  K0 anti-K0 omega       PHSP;
-
-0.000001  K- K0 rho+             PHSP;
 0.000001  K+ anti-K0 rho-        PHSP;
+0.000001  K- K0 rho+             PHSP;
+0.0000001 phi   pi- pi+          PHSP;
 0.000001  K+ K- pi- pi+          PHSP;
 0.000001  K+ K- pi0 pi0          PHSP;
 0.0000005 K+ K- pi0 eta          PHSP;
@@ -1966,27 +1907,25 @@ Decay B0
 0.000001  K0 anti-K*0 pi0        PHSP;
 0.000001  K+ anti-K*0 pi-        PHSP;
 0.000001  K*+ anti-K0 pi-        PHSP;
-0.000001  K- K*0 pi+             PHSP;
+0.000003320 K-      K*0     pi+                             PHSP; #[Reconstructed PDG2011]
 0.000001  K*- K0 pi+             PHSP;
 #--- 4-body phi-K*, phi-K-pi, K-K-K*, pi-K-K-K -----------------------
-0.0000095 phi   K*0              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000009800 phi     K*0                                     SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000010  phi K+ pi-             PHSP;
 0.000010  phi K0 pi0             PHSP;
 0.000007  phi K0 eta             PHSP;
-0.000010  K- K+ K*0              PHSP;
-0.000010  K*- K+ K0              PHSP;
+0.000017700 K-      K+      K*0                             PHSP; #[Reconstructed PDG2011]
 0.000010  K- K*+ K0              PHSP;
-
+0.000010  K*- K+ K0              PHSP;
 0.000010  K+ K- K+ pi-           PHSP;
 0.000010  K+ K- K0 pi0           PHSP;
 0.000005  K+ K- K0 eta           PHSP;
 0.000010  K0 anti-K0 K0 pi0      PHSP;
 0.000005  K0 anti-K0 K0 eta      PHSP;
-0.0000046 phi   K_0*0            PHSP;
+0.000003900 phi     K_0*0                                   PHSP; #[Reconstructed PDG2011]
 0.000010  K- K+ K_0*0            PHSP;
-0.000010  K_0*- K+ K0            PHSP;
 0.000010  K- K_0*+ K0            PHSP;
-
+0.000010  K_0*- K+ K0            PHSP;
 0.000002  phi   K'_10            PHSP;
 0.000002  K- K+ K'_10            PHSP;
 #--- 4-body phi-phi, phi-K-K, K-K-K-K --------------------------------
@@ -2007,10 +1946,8 @@ Decay B0
 0.000010  rho+ rho- pi0          PHSP;
 0.000005  rho+ rho- eta          PHSP;
 0.000002  rho+ rho- eta'         PHSP;
-0.000010  rho0 rho+ pi-          PHSP; 
-0.0000066 rho0 rho-  pi+          PHSP;
+0.000010  rho0 rho+ pi-          PHSP;
 0.000010  omega rho+ pi-         PHSP;
-0.0000066 omega rho- pi+         PHSP;
 0.000002  rho0 pi+ pi- pi0       PHSP;
 0.000001  rho0 pi+ pi- eta       PHSP;
 0.000001  rho0 pi+ pi- eta'      PHSP;
@@ -2031,7 +1968,7 @@ Decay B0
 0.000002  rho- pi+ pi0 pi0       PHSP;
 0.000001  rho- pi+ pi0 eta       PHSP;
 0.000001  rho- pi+ pi0 eta'      PHSP;
-0.000001  pi+ pi- pi+ pi- pi0    PHSP; 
+0.000001  pi+ pi- pi+ pi- pi0    PHSP;
 0.0000005 pi+ pi- pi+ pi- eta    PHSP;
 0.0000002 pi+ pi- pi+ pi- eta'   PHSP;
 0.000001  pi+ pi- pi0 pi0 pi0    PHSP;
@@ -2040,9 +1977,9 @@ Decay B0
 0.0000005 pi0 pi0 pi0 pi0 pi0    PHSP;
 0.0000002 pi0 pi0 pi0 pi0 eta    PHSP;
 0.0000001 pi0 pi0 pi0 pi0 eta'   PHSP;
-0.000010  a_1+  rho-             PHSP; 
+0.000010  a_1+  rho-             PHSP;
 0.000010  a_1-  rho+             PHSP;
-0.000010  a_10  rho0             PHSP; 
+0.000010  a_10  rho0             PHSP;
 0.000010  a_10  omega            PHSP;
 0.000010  a_1+  pi- pi0          PHSP;
 0.000005  a_1+  pi- eta          PHSP;
@@ -2181,8 +2118,7 @@ Decay B0
 0.000005  K*+ a_0- pi0           PHSP;
 0.000002  K*+ a_0- eta           PHSP;
 0.000001  K*+ a_0- eta'          PHSP;
-0.000005  K*0 a_0- pi+           PHSP;
-0.000005       K*0 a_0+ pi-      PHSP;
+0.000005  K*0 a_0+ pi-           PHSP;
 0.000005  K*0 a_00 pi0           PHSP;
 0.000002  K*0 a_00 eta           PHSP;
 0.000001  K*0 a_00 eta'          PHSP;
@@ -2208,16 +2144,14 @@ Decay B0
 0.000001  phi pi0 pi0 pi0        PHSP;
 0.0000005 phi pi0 pi0 eta        PHSP;
 0.0000002 phi pi0 pi0 eta'       PHSP;
-0.000001  anti-K0 K+ rho0 pi-    PHSP;
-0.000001  anti-K0 K+ rho- pi0    PHSP;
-0.0000005 anti-K0 K+ rho- eta    PHSP;
-0.0000002 anti-K0 K+ rho- eta'   PHSP;
-0.000001  anti-K0 K+ omega pi-   PHSP;
-0.000001  anti-K0 K+ f_0 pi-     PHSP;
-
-
-0.000001  K+ K- rho- pi+         PHSP;
+0.000001  K0 K- rho0 pi+         PHSP;
+0.000001  K0 K- rho+ pi0         PHSP;
+0.0000005 K0 K- rho+ eta         PHSP;
+0.0000002 K0 K- rho+ eta'        PHSP;
+0.000001  K0 K- omega pi+        PHSP;
+0.000001  K0 K- f_0 pi+          PHSP;
 0.000001  K+ K- rho+ pi-         PHSP;
+0.000001  K+ K- rho- pi+         PHSP;
 0.000001  K+ K- rho0 pi0         PHSP;
 0.0000005 K+ K- rho0 eta         PHSP;
 0.0000002 K+ K- rho0 eta'        PHSP;
@@ -2225,19 +2159,19 @@ Decay B0
 0.0000005 K+ K- omega eta        PHSP;
 0.0000002 K+ K- omega eta'       PHSP;
 0.000001  K+ K- f_0 pi0          PHSP;
-0.000001  K0 anti-K0 rho- pi+    PHSP;
 0.000001  K0 anti-K0 rho+ pi-    PHSP;
+0.000001  K0 anti-K0 rho- pi+    PHSP;
 0.000001  K0 anti-K0 rho0 pi0    PHSP;
 0.0000005 K0 anti-K0 rho0 eta    PHSP;
 0.0000002 K0 anti-K0 rho0 eta'   PHSP;
 0.000001  K0 anti-K0 omega pi0   PHSP;
 0.000001  K0 anti-K0 f_0 pi0     PHSP;
-0.000001  K0 K- rho0 pi+         PHSP;
-0.000001  K0 K- rho+ pi0         PHSP;
-0.0000005 K0 K- rho+ eta         PHSP;
-0.0000002 K0 K- rho+ eta'        PHSP;
-0.000001  K0 K- omega pi+        PHSP;
-0.000001  K0 K- f_0 pi+          PHSP;
+0.000001  anti-K0 K+ rho0 pi-    PHSP;
+0.000001  anti-K0 K+ rho- pi0    PHSP;
+0.0000005 anti-K0 K+ rho- eta    PHSP;
+0.0000002 anti-K0 K+ rho- eta'   PHSP;
+0.000001  anti-K0 K+ omega pi-   PHSP;
+0.000001  anti-K0 K+ f_0 pi-     PHSP;
 0.0000002 K0 K- pi+ pi+ pi-      PHSP;
 0.0000002 K0 K- pi+ pi0 pi0      PHSP;
 0.0000001 K0 K- pi+ pi0 eta      PHSP;
@@ -2286,7 +2220,7 @@ Decay B0
 0.000001  K*+ anti-K0 pi- pi0    PHSP;
 0.0000005 K*+ anti-K0 pi- eta    PHSP;
 0.0000002 K*+ anti-K0 pi- eta'   PHSP;
-#--- 5-body phi-K*-pi, phi-K-2pi, K-K-K*-pi, 2pi-K-K-K -------------------- 
+#--- 5-body phi-K*-pi, phi-K-2pi, K-K-K*-pi, 2pi-K-K-K --------------------
 0.000010  phi K*+ pi-            PHSP;
 0.000010  phi K*0 pi0            PHSP;
 0.000005  phi K*0 eta            PHSP;
@@ -2332,9 +2266,8 @@ Decay B0
 0.000005  K+ K- K_0*0 eta        PHSP;
 0.000002  K+ K- K_0*0 eta'       PHSP;
 0.000010  K+ K+ K_0*- pi-        PHSP;
-
-0.000010  K+ K_0*0 anti-K0 pi-   PHSP;
 0.000010  K+ anti-K_0*0 K0 pi-   PHSP;
+0.000010  K+ K_0*0 anti-K0 pi-   PHSP;
 0.000010  K0 anti-K0 K_0*+ pi-   PHSP;
 0.000010  K0 anti-K0 K_0*0 pi0   PHSP;
 0.000005  K0 anti-K0 K_0*0 eta   PHSP;
@@ -2358,27 +2291,24 @@ Decay B0
 0.000001  K0 K0 anti-K'_10 eta   PHSP;
 0.000001  K0 K0 anti-K'_10 eta'  PHSP;
 #--- 5-body phi-phi-K, phi-phi-pi, phi-3K, phi-K-K-pi, 5K, 4K-pi ------------
-0.0000041 phi phi K0             PHSP;
+0.000004100 phi     phi     K0                              PHSP; #[Reconstructed PDG2011]
 0.0000001 phi phi pi0            PHSP;
 0.000001  phi K+ K- K0           PHSP;
 0.000001  phi K0 anti-K0 K0      PHSP;
 0.0000001 phi K+ K- pi0          PHSP;
 0.0000001 phi K0 anti-K0 pi0     PHSP;
-0.0000001 phi K0 K- pi+          PHSP;
 0.0000001 phi anti-K0 K+ pi-     PHSP;
-
+0.0000001 phi K0 K- pi+          PHSP;
 0.0000001 K+ K- K+ K- K0         PHSP;
 0.0000001 K0 anti-K0 K+ K- K0    PHSP;
 0.0000001 K+ K- K+ K- pi0        PHSP;
 0.0000001 K+ K- K0 anti-K0 pi0   PHSP;
-0.0000001 K+ K- K0 K- pi+        PHSP;
 0.0000001 K+ K- K+ anti-K0 pi-   PHSP;
-
+0.0000001 K+ K- K0 K- pi+        PHSP;
 0.0000001 K0 anti-K0 K0 anti-K0 pi0 PHSP;
-0.0000001 K0 anti-K0 K0 K- pi+   PHSP;
 0.0000001 K0 anti-K0 anti-K0 K+ pi- PHSP;
-
-#--- 6-body phi-phi-K*, phi-3Kpi, phi-K-K-2pi ------------  not in PDG
+0.0000001 K0 anti-K0 K0 K- pi+   PHSP;
+#--- 6-body phi-phi-K*, phi-3Kpi, phi-K-K-2pi ------------
 0.000003  phi phi K*0            PHSP;
 0.000001  phi K+ K- K*0          PHSP;
 0.000001  phi K0 anti-K0 K*0     PHSP;
@@ -2392,30 +2322,30 @@ Decay B0
 0.000050  a_10  a_10             PHSP;
 0.000050  a_1+  a_1-             PHSP;
 #
-#       B -> cc= s          
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  K*0T              SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00003     J/psi  omega            SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0012     J/psi  K+  pi-           PHSP;
+#       B -> cc= s
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.001330000 J/psi   K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.00003     J/psi  omega            SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.000000000 J/psi   K+      pi-                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  K0  pi0           PHSP;
 #rl0.0007     J/psi  K0  pi-  pi+      PHSP;
 #rl0.00035     J/psi  K0  pi0  pi0      PHSP;
 #rl0.00035     J/psi  K+  pi-  pi0      PHSP;
-0.0013     J/psi  K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   K_10                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  K_2*0              PHSP;
-0.000094    J/psi  phi K0        PHSP;
+0.000094000 J/psi   phi     K0                              PHSP; #[Reconstructed PDG2011]
 #
-0.00031     psi(2S)  K_S0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00031     psi(2S)  K_L0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00012    psi(2S)  K*S              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00012    psi(2S)  K*L              SVV_CP beta  dm  -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00048     psi(2S)  K*0T             SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000310000 psi(2S) K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000310000 psi(2S) K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.000610000 psi(2S) K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
 
 0.0004     psi(2S)  K+  pi-          PHSP;
 0.0002     psi(2S)  K0  pi0          PHSP;
@@ -2424,66 +2354,66 @@ Decay B0
 0.0001     psi(2S)  K+  pi-  pi0     PHSP;
 0.0004     psi(2S)  K_10              PHSP;
 #
-0.0005    eta_c K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0005    eta_c K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00027   K*S  eta_c              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00027   K*L  eta_c              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00108    K*0T eta_c              SVS;
+0.000445000 eta_c   K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000445000 eta_c   K_L0                                    PHSP; #[Reconstructed PDG2011]
+#
+#
+0.000610000 K*0     eta_c                                   SVS; #[Reconstructed PDG2011]
 0.0002    eta_c  K+  pi-          PHSP;
 0.0001    eta_c  K0  pi0          PHSP;
 0.0002    eta_c  K0  pi-  pi+     PHSP;
 0.0001    eta_c  K0  pi0  pi0     PHSP;
 0.0001    eta_c  K+  pi-  pi0     PHSP;
 #
-0.00024    eta_c(2S) K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00024    eta_c(2S) K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00011   K*S  eta_c(2S)               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00011   K*L  eta_c(2S)               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00044   K*0T eta_c(2S)               SVS;
+0.00024    eta_c(2S) K_S0               PHSP;
+0.00024    eta_c(2S) K_L0               PHSP;
+#
+#
+0.00066   K*0T eta_c(2S)               SVS;
 0.00008    eta_c(2S)   K+  pi-          PHSP;
 0.00005    eta_c(2S)   K0  pi0          PHSP;
 0.00008    eta_c(2S)   K0  pi-  pi+     PHSP;
 0.00005    eta_c(2S)   K0  pi0  pi0     PHSP;
 0.00005    eta_c(2S)   K+  pi-  pi0     PHSP;
 #
-0.00005     chi_c0 K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00005     chi_c0 K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00005    K*S  chi_c0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00005    K*L  chi_c0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.0002     K*0T chi_c0              SVS;
+0.000070000 chi_c0  K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000070000 chi_c0  K_L0                                    PHSP; #[Reconstructed PDG2011]
+#
+#
+0.0003     K*0 chi_c0              SVS;
 0.0002     chi_c0  K+  pi-          PHSP;
 0.0001     chi_c0  K0  pi0          PHSP;
 0.0002     chi_c0  K0  pi-  pi+     PHSP;
 0.0001     chi_c0  K0  pi0  pi0     PHSP;
 0.0001     chi_c0  K+  pi-  pi0     PHSP;
 #
-0.00020     chi_c1 K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00020     chi_c1 K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000053    K*S  chi_c1              SVV_CP beta  dm  1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000053    K*L  chi_c1              SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000213    chi_c1  K*0T             SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000195000 chi_c1  K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000195000 chi_c1  K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.000222000 chi_c1  K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
 0.0004     chi_c1  K+  pi-          PHSP;
 0.0002     chi_c1  K0  pi0          PHSP;
 0.0004     chi_c1  K0  pi-  pi+     PHSP;
 0.0002     chi_c1  K0  pi0  pi0     PHSP;
 0.0002     chi_c1  K+  pi-  pi0     PHSP;
 #
-0.00001     chi_c2 K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0; 
-0.00001     chi_c2 K_L0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000005    K*S  chi_c2              PHSP;
-0.000005    K*L  chi_c2              PHSP;
-0.00002     chi_c2  K*0T             PHSP;
+0.00005     chi_c2 K_S0              STS;
+0.00005     chi_c2 K_L0              STS;
+#
+#
+0.00003     chi_c2  K*0             PHSP;
 0.0002     chi_c2  K+  pi-          PHSP;
 0.0001     chi_c2  K0  pi0          PHSP;
 0.0002     chi_c2  K0  pi-  pi+     PHSP;
 0.0001     chi_c2  K0  pi0  pi0     PHSP;
 0.0001     chi_c2  K+  pi-  pi0     PHSP;
-
-0.00024    psi(3770)  K_S0             SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.00024    psi(3770)  K_L0             SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00008    psi(3770)  K*S              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00008    psi(3770)  K*L              SVV_CP beta  dm  -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00032    psi(3770)  K*0T             SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+#
+0.00024    psi(3770)  K_S0             SVS;
+0.00024    psi(3770)  K_L0             SVS;
+#
+#
+0.00048    psi(3770)  K*0              SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
 0.00014    psi(3770)  K+  pi-          PHSP;
 0.00014    psi(3770)  K0  pi0          PHSP;
 0.00014    psi(3770)  K0  pi-  pi+     PHSP;
@@ -2491,24 +2421,24 @@ Decay B0
 0.00007    psi(3770)  K+  pi-  pi0     PHSP;
 0.00029    psi(3770)  K_10             PHSP;
 #
-
-
-
+###   ALREADY Included above 0.0000     phi   K*0             SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+#
 #
-# b-> c (dc=)  
 #
-0.00023     D-   D+              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
+# b-> c (dc=)
+#
+0.000211000 D-      D+                                      PHSP; #[Reconstructed PDG2011]
 #  See Ref [B1] for the next 3:
-0.000610    D*-  D+              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00061     D*+  D-              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.00082     D*- D*+              SVV_CP beta dm  1  0.56 0.0 0.96 0.0 0.47 0.0;
+0.000305    D*-  D+              SVS;
+0.000610000 D*+     D-                                      SVS; #[Reconstructed PDG2011]
+0.000820000 D*-     D*+                                     SVV_HELAMP 0.56 0.0 0.96 0.0 0.47 0.0; #[Reconstructed PDG2011]
 #
 # b -> c (sc=)  -->  D Ds X   Sum = 10%
 #
-0.0065   D-   D_s+                       PHSP;
-0.0080   D*-  D_s+                       SVS;
-0.0074   D_s*+ D-                        SVS;
-0.0177   D_s*+ D*-                 SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0;
+0.007200000 D-      D_s+                                    PHSP; #[Reconstructed PDG2011]
+0.008000000 D*-     D_s+                                    SVS; #[Reconstructed PDG2011]
+0.007400000 D_s*+   D-                                      SVS; #[Reconstructed PDG2011]
+0.017700000 D_s*+   D*-                                     SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0; #[Reconstructed PDG2011]
 0.0006   D'_1- D_s+                SVS;
 0.0012   D'_1-  D_s*+              SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0;
 0.0012   D_1-  D_s+                SVS;
@@ -2531,23 +2461,23 @@ Decay B0
 # Update: Ref. [B1]
 # October 26, 2004 Lange -per breco awg
 # External W-emission amplitude
-0.0017   D-  D0  K+                         PHSP;
-0.0046   D-  D*0  K+                        PHSP;
-0.0031   D*- D0  K+                         PHSP;
-0.0118   D*- D*0  K+                        PHSP;
+0.001700000 D-      D0      K+                              PHSP; #[Reconstructed PDG2011]
+0.004600000 D-      D*0     K+                              PHSP; #[Reconstructed PDG2011]
+0.003100000 D*-     D0      K+                              PHSP; #[Reconstructed PDG2011]
+0.011800000 D*-     D*0     K+                              PHSP; #[Reconstructed PDG2011]
 # External+internal W-emission amplitude
-0.0015   D-  D+  K0                         PHSP; 
-0.0018   D*- D+  K0                         PHSP; 
-0.0047   D-  D*+  K0                        PHSP; 
-0.0088   D*- D*+  K0                        PHSP;
-# Internal W-emission amplitude (color suppressed modes) 
+0.0015   D-  D+  K0                         PHSP;
+0.0018   D*- D+  K0                         PHSP;
+0.0047   D-  D*+  K0                        PHSP;
+0.007800000 D*-     D*+     K0                              PHSP; #[Reconstructed PDG2011]
+# Internal W-emission amplitude (color suppressed modes)
 0.0005   D0  anti-D0  K0                    PHSP;
-0.0005   D*0  anti-D0  K0                   PHSP; 
-0.0005   D0  anti-D*0  K0                   PHSP; 
-0.0005   D*0  anti-D*0  K0                  PHSP; 
+0.0005   D*0  anti-D0  K0                   PHSP;
+0.0015   D0  anti-D*0  K0                   PHSP;
+0.0015   D*0  anti-D*0  K0                  PHSP;
 ##########
 # K* modes
-###########  
+###########
 0.0025   D-  D0  K*+                        PHSP;
 0.0025   D*- D0  K*+                        PHSP;
 0.0025   D-  D*0  K*+                       PHSP;
@@ -2565,35 +2495,35 @@ Decay B0
 #
 #  B -> D(*) X  Exclusive modes
 #
-0.00276    D*- pi+                        SVS;
-0.00268  D-  pi+                        PHSP;
-0.0075   rho+ D-                        SVS;
+0.002760000 D*-     pi+                                     SVS; #[Reconstructed PDG2011]
+0.002680000 D-      pi+                                     PHSP; #[Reconstructed PDG2011]
+0.007110000 rho+    D-                                      SVS; #[Reconstructed PDG2011]
 #
 # D* rho HELAMP parameters taken from ICHEP 98-852.
-0.0068   rho+ D*-                 SVV_HELAMP  0.317 0.19 0.936 0.0 0.152 1.47; 
+0.006800000 rho+    D*-                                     SVV_HELAMP  0.317 0.19 0.936 0.0 0.152 1.47; #[Reconstructed PDG2011]
 0.0005   D-  pi+  pi0                   PHSP;
-0.0082   D*- pi+  pi0                   PHSP;
-0.0005   anti-D0 pi-  pi+                   PHSP;
-0.00062   anti-D*0 pi-  pi+                   PHSP;
+0.008200000 D*-     pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000840000 anti-D0 pi-     pi+                             PHSP; #[Reconstructed PDG2011]
+0.000620000 anti-D*0 pi-     pi+                            PHSP; #[Reconstructed PDG2011]
 0.0005   anti-D*0 pi0  pi0                   PHSP;
 #
 # D a1 updated Ref. [B1]
-0.00834  a_1+ D-                         SVS; 
-0.0011   D-  rho0  pi+                  PHSP;
+0.006000000 a_1+    D-                                      SVS; #[Reconstructed PDG2011]
+0.000000000 D-      rho0    pi+                             PHSP; #[Reconstructed PDG2011]
 0.0011   D-  rho+  pi0                  PHSP;
-0.0039   D-  pi-  pi+  pi+              PHSP;
+0.002000000 D-      pi-     pi+     pi+                     PHSP; #[Reconstructed PDG2011]
 0.0010   D-  pi0  pi+  pi0              PHSP;
 0.0010   anti-D0  pi-  pi+  pi0             PHSP;
 0.0001   anti-D0  pi0  pi0  pi0             PHSP;
 #
-# SVV_HELAMP for D* a1 taken from factorization. Recommandation 
+# SVV_HELAMP for D* a1 taken from factorization. Recommandation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/168.html:
 # updated Ref. [B1]
 # October 26, 2004 Lange update
 #
-0.0120   D*-  a_1+                     SVV_HELAMP 0.458 0.0 0.866 0.0 0.458 0.0;
+0.013000000 D*-     a_1+                                    SVV_HELAMP 0.458 0.0 0.866 0.0 0.458 0.0; #[Reconstructed PDG2011]
 #
-0.0025    D*-  rho0  pi+                 PHSP;
+0.005700000 D*-     rho0    pi+                             PHSP; #[Reconstructed PDG2011]
 0.0010   D*-  rho+  pi0                 PHSP;
 0.0000   D*-  pi-  pi+  pi+             PHSP;
 0.0010   D*-  pi0  pi+  pi0             PHSP;
@@ -2603,125 +2533,207 @@ Decay B0
 # B->D** pi and D** rho, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/151.html
 #
-0.0006   D_1- pi+                      SVS;
+0.0001   D_1- pi+                      SVS;
 0.0001   D'_1- pi+                     SVS;
-0.0002   D_0*- pi+                      PHSP;
-0.0009   D_2*- pi+                     STS;
-0.0004   D_1- rho+                     PHSP;  
-0.0013   D'_1- rho+                    PHSP;  
-0.0022   D_2*- rho+                    PHSP;  
+0.00006   D_0*- pi+                      PHSP;
+0.000215   D_2*- pi+                   STS;
+0.0004   D_1- rho+                     PHSP;
+0.0013   D'_1- rho+                    PHSP;
+0.0022   D_2*- rho+                    PHSP;
 #
 #
-# B->DK, recommendation 
+# B->DK, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/151.html:
 # update: Ref. [B1]:
 #
-0.00021  D*- K+                        SVS;
-0.00020  D-  K+                        PHSP;
-0.00033  D*- K*+               SVV_HELAMP  0.283 0.0 0.932 0.0 0.228 0.0;
-0.00045  K*+ D-                SVS;
+0.000214000 D*-     K+                                      SVS; #[Reconstructed PDG2011]
+0.000200000 D-      K+                                      PHSP; #[Reconstructed PDG2011]
+0.000330000 D*-     K*+                                     SVV_HELAMP  0.283 0.0 0.932 0.0 0.228 0.0; #[Reconstructed PDG2011]
+0.000450000 K*+     D-                                      SVS; #[Reconstructed PDG2011]
 #more DK modes - October 26, 2004 -Lange
-0.00004 anti-D*0 anti-K0 SVS;
-0.00004 anti-D0 anti-K0 PHSP;
-0.000042 K*0 anti-D0 SVS;
-0.00001 K*0 D0 SVS;
-0.00004 anti-D*0 K*0 SVV_HELAMP 1. 0. 1. 0. 1. 0.;
-0.00001 D*0 K*0 SVV_HELAMP 1. 0. 1. 0. 1. 0.;
+0.000036  anti-D*0 anti-K0 SVS;
+0.000052  anti-D0 anti-K0 PHSP;
+0.000042000 K*0     anti-D0                                 SVS; #[Reconstructed PDG2011]
+0.00001  K*0 D0 SVS;
+0.00004  anti-D*0 K*0 SVV_HELAMP 1. 0. 1. 0. 1. 0.;
+0.00001  D*0 K*0 SVV_HELAMP 1. 0. 1. 0. 1. 0.;
 #
 #
-# Color-suppressed modes. Br's are expectations from 
+# Color-suppressed modes. Br's are expectations from
 # Phys. Rev. D57 (1998), 5363-5369, except for the eta' modes, which are set
 # equal to the eta modes. SVV_HELAMP parameters are the same as in D*0 rho-,
 # with phases set to 0. Recommendation http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/169.html:
 # update: See Ref [B1]:
 # further update October 26, 2004 Lange
 #
-0.000261  anti-D0 pi0                  PHSP;
-0.00017  anti-D*0 pi0                 SVS;
+0.000261000 anti-D0 pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000170000 anti-D*0 pi0                                    SVS; #[Reconstructed PDG2011]
 #
-0.00029  rho0 anti-D0                 SVS;
+0.000320000 rho0    anti-D0                                 SVS; #[Reconstructed PDG2011]
 0.00029  anti-D*0 rho0                SVV_HELAMP 0.283 0.0 0.932 0.0 0.228 0.0;
 #
-0.000202 anti-D0 eta                  PHSP;
-0.00018  anti-D*0 eta                 SVS;
-#
-0.000125 anti-D0 eta'                 PHSP;
-0.000123 anti-D*0 eta'                SVS;
-#
-0.000259 omega anti-D0                SVS;
-0.00027  anti-D*0 omega               SVV_HELAMP 0.283 0.0 0.932 0.0 0.228 0.0;
-#
-       #October 26, 2004 - Lange 
-0.00097 D_s0*+ D- PHSP;
-0.00097  D*- D_s0*+ SVS;
-0.0015 D_s1+ D- SVS;
-0.0093 D*- D_s1+ SVV_HELAMP 0.4904 0. 0.7204 0. 0.4904 0.;
-#
-0.0066        anti-cd_0       ud_0         PYTHIA 22;
-0.0134        anti-cd_1       ud_1         PYTHIA 22;
-0.004         anti-cd_0       ud_0         PYTHIA 23;
-0.008         anti-cd_1       ud_1         PYTHIA 23;
-0.001         anti-cs_0       ud_0         PYTHIA 23;
-0.002         anti-cs_1       ud_1         PYTHIA 23;
-0.005         anti-cs_0       cd_0         PYTHIA 22;
-0.010         anti-cs_1       cd_1         PYTHIA 22;
-0.001         anti-cs_0       cd_0         PYTHIA 23;
-0.002         anti-cs_1       cd_1         PYTHIA 23;
-#
-#
-0.25885         u       anti-d  anti-c          d       PYTHIA         48;
-0.04600         u       anti-d  anti-c          d       PYTHIA         13;
-0.02100         u       anti-s  anti-c          d       PYTHIA         13;
-0.01800         u       anti-c  anti-d          d       PYTHIA         48;
-0.00090         u       anti-c  anti-s          d       PYTHIA         48;
+0.000202000 anti-D0 eta                                     PHSP; #[Reconstructed PDG2011]
+0.000200000 anti-D*0 eta                                    SVS; #[Reconstructed PDG2011]
+#
+0.000125  anti-D0 eta'                 PHSP;
+0.000123000 anti-D*0 eta'                                   SVS; #[Reconstructed PDG2011]
+#
+0.000259000 omega   anti-D0                                 SVS; #[Reconstructed PDG2011]
+0.000330000 anti-D*0 omega                                  SVV_HELAMP 0.283 0.0 0.932 0.0 0.228 0.0; #[Reconstructed PDG2011]
+#
+# PR LHCb : add ppbar mode
+0.0000001 p+  anti-p-                   PHSP;
+#
+#October 26, 2004 - Lange
+0.0016 D_s0*+ D- PHSP;
+0.0015 D*- D_s0*+ SVS;
+0.003500000 D_s1+   D-                                      SVS; #[Reconstructed PDG2011]
+0.009300000 D*-     D_s1+                                   SVV_HELAMP 0.4904 0. 0.7204 0. 0.4904 0.; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.000880000 D-      K+      anti-K*0                        PHSP; #[Reconstructed PDG2011]
+0.001290000 D*-     K+      anti-K*0                        PHSP; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.002800000 D-      omega   pi+                             PHSP; #[Reconstructed PDG2011]
+0.002890000 D*-     omega   pi+                             PHSP; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.000490000 D-      K0      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*-     K0      pi+                             PHSP; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.00043 D'_s1+ D-  PHSP;
+0.00083 D'_s1+ D*-  PHSP;
+#### Already included above   0.0023 D_s1+ D*-  PHSP;
+#
+#  Lam_c X  / Sigma_c X      4.0 %
+#
+#0.01000        anti-cd_0       ud_0         PYTHIA 23;
+#0.03000        anti-cd_1       ud_1         PYTHIA 23;
+0.010520663 anti-cd_0 ud_0                                  PYTHIA 23; #[Reconstructed PDG2011]
+0.021041421 anti-cd_1 ud_1                                  PYTHIA 23; #[Reconstructed PDG2011]
+#
+#  Xi_c X    2.5%
+#
+#0.00600        anti-cs_0       ud_0         PYTHIA 23;
+#0.01800        anti-cs_1       ud_1         PYTHIA 23;
+0.002869298 anti-cs_0 ud_0                                  PYTHIA 23; #[Reconstructed PDG2011]
+0.005738595 anti-cs_1 ud_1                                  PYTHIA 23; #[Reconstructed PDG2011]
+#
+#
+0.258091538 u       anti-d  anti-c  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.043995612 u       anti-d  anti-c  d                       PYTHIA         13; #[Reconstructed PDG2011]
+0.020084989 u       anti-s  anti-c  d                       PYTHIA         13; #[Reconstructed PDG2011]
+0.017215691 u       anti-c  anti-d  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.000860770 u       anti-c  anti-s  d                       PYTHIA         48; #[Reconstructed PDG2011]
 #lange - try to crank up the psi production....
-0.07400         c       anti-s  anti-c          d       PYTHIA         13;
-0.00600         c       anti-d  anti-c          d       PYTHIA         13;
-0.00300         u       anti-d  anti-u          d       PYTHIA         48;
-0.00400         c       anti-s  anti-u          d       PYTHIA         48;
+0.070775534 c       anti-s  anti-c  d                       PYTHIA         13; #[Reconstructed PDG2011]
+0.005738595 c       anti-d  anti-c  d                       PYTHIA         13; #[Reconstructed PDG2011]
+0.002869298 u       anti-d  anti-u  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.003825730 c       anti-s  anti-u  d                       PYTHIA         48; #[Reconstructed PDG2011]
 # JGS 11/5/02 This and similar a few lines above have been divided by two
-# to solve a double-counting problem for this channel 
-0.00205         u     anti-u  anti-d       d       PYTHIA         48;
-0.00007         d     anti-d  anti-d       d       PYTHIA         48;
-0.00009         s     anti-s  anti-d       d       PYTHIA         48;
-0.00220         u     anti-u  anti-s       d       PYTHIA         48;
-0.00180         d     anti-d  anti-s       d       PYTHIA         48;
-0.00150         s     anti-s  anti-s       d       PYTHIA         48;
-0.00500              anti-s  g            d       PYTHIA         33;
+# to solve a double-counting problem for this channel
+0.001960649 u       anti-u  anti-d  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.000066973 d       anti-d  anti-d  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.000086068 s       anti-s  anti-d  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.002104095 u       anti-u  anti-s  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.001721541 d       anti-d  anti-s  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.001434649 s       anti-s  anti-s  d                       PYTHIA         48; #[Reconstructed PDG2011]
+0.004782163 anti-s  d                                       PYTHIA         32; #[Reconstructed PDG2011]
+0.017600000 D*-     pi+     pi+     pi-     pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004700000 D*-     pi+     pi+     pi+     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000110000 D_s-    pi+     K0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000052000 anti-D0 K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000046000 anti-D0 K+      pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000006000 D0      K+      pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000036000 anti-D*0 K0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002700000 D*0     pi+     pi+     pi-     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000890000 eta_c   K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000871000 J/psi   K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   K0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   K0      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   K0      rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   K*0     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000170000 K0      D0      anti-D0 pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000620000 psi(2S) K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000140000 chi_c0  K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011200 chi_c1  pi0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000390000 chi_c1  K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000158000 chi_c1  K-      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011000 eta     K_0*0                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009600 eta     K_2*0                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000016000 omega   K_0*0                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000010100 omega   K_2*0                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004700 K0      rho0                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002700 f_2     K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001400 f_0     K+      pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007500 K_2*0   phi                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007600 eta     K0      gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004600 K+      pi-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019500 K0      pi+     pi-     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000041000 K+      pi-     pi0     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000012400 K_2*0   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000860 rho0    gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002660 p+      anti-p- K0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001240 p+      anti-p- K*0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003140 p+      anti-Lambda0 pi-                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004800 anti-Lambda0 Lambda0 K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002500 anti-Lambda0 Lambda0 K*0                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011000 anti-Lambda0 Lambda0 D0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000114000 anti-D0 p+      anti-p-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000028000 D_s-    anti-Lambda0 p+                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000103000 anti-D*0 p+      anti-p-                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001500000 D*-     p+      anti-n0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000338000 D-      p+      anti-p- pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000500000 D*-     p+      anti-p- pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 anti-Lambda_c- p+                               PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000630000 anti-Lambda_c- p+      pi+     pi-              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000120000 anti-Sigma_c*-- p+      pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000150000 anti-Sigma_c0 p+      pi-                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000220000 anti-Sigma_c-- p+      pi+                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 #
 #
 Decay B-
-#
+# Updated to PDG 2008
 #                  b -> c semileptonic
 #
-0.0650   D*0    e-   anti-nu_e         PHOTOS  HQET 0.77 1.33 0.92;
-0.0215   D0     e-   anti-nu_e         PHOTOS  ISGW2;
-0.0056   D_10   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0049   D_0*0   e-   anti-nu_e         PHOTOS  ISGW2;
-0.009   D'_10   e-   anti-nu_e         PHOTOS  ISGW2;
-0.003   D_2*0   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0063   D*+  pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
+0.056800000 D*0     e-      anti-nu_e                       PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 D0      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   D_10   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0024   D_0*0   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0007   D'_10   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0018   D_2*0   e-   anti-nu_e         PHOTOS  ISGW2;
+0.006100000 D*+     pi-     e-      anti-nu_e               PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0003   D*0  pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-0.0052   D+   pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
+# covered by other decays
+0.0000   D+   pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
 0.0010   D0   pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
 #
-0.0650   D*0   mu-  anti-nu_mu         PHOTOS   HQET 0.77 1.33 0.92;
-0.0215   D0    mu-  anti-nu_mu         PHOTOS   ISGW2;
-0.0056   D_10  mu-  anti-nu_mu         PHOTOS   ISGW2;
-0.0049   D_0*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
-0.009   D'_10  mu-  anti-nu_mu        PHOTOS    ISGW2;
-0.003   D_2*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
-0.0063   D*+   pi-   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.056800000 D*0     mu-     anti-nu_mu                      PHOTOS   HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 D0      mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.0040   D_10  mu-  anti-nu_mu         PHOTOS   ISGW2;
+0.0024   D_0*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.0007   D'_10  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.0018   D_2*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.006100000 D*+     pi-     mu-     anti-nu_mu              PHOTOS   GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0003   D*0   pi0   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
-0.0052   D+    pi-   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.0000   D+    pi-   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
 0.0010   D0    pi0   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
 #
 #                   b -> c tau nu
 #
-0.0208   D*0    tau- anti-nu_tau                 ISGW2;# equel to B0-> D*- tau+ nu
-0.0088   D0     tau- anti-nu_tau                 ISGW2;
+0.020000000 D*0     tau-    anti-nu_tau                     ISGW2; #[Reconstructed PDG2011]
+0.007000000 D0      tau-    anti-nu_tau                     ISGW2; #[Reconstructed PDG2011]
 0.0013   D_10   tau- anti-nu_tau                 ISGW2;
 0.0013   D_0*0   tau- anti-nu_tau                 ISGW2;
 0.0020   D'_10   tau- anti-nu_tau                 ISGW2;
@@ -2729,26 +2741,26 @@ Decay B-
 #
 #                   b -> u l nu
 #
-# NOTE: Do NOT CHANGE any BFs without using the corresponding set of 
-#       hybrid weights (and vice versa). 
+# NOTE: Do NOT CHANGE any BFs without using the corresponding set of
+#       hybrid weights (and vice versa).
 
-0.000077   pi0    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000080   eta    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000128   rho0   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000130   omega   e-   anti-nu_e       PHOTOS   ISGW2;
-0.000084   eta'   e-   anti-nu_e        PHOTOS   ISGW2;
+0.000077000 pi0     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   e-   anti-nu_e        PHOTOS   ISGW2;
 0.000000   D(2S)0 e-   anti-nu_e        PHOTOS   ISGW2;
 0.000000   D*(2S)0 e-   anti-nu_e       PHOTOS   ISGW2;
-0.001948   Xu0   e-  anti-nu_e          PHOTOS   VubHybridBp;
+0.001948   Xu0   e-  anti-nu_e         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
 #
-0.000077   pi0    mu-  anti-nu_mu       PHOTOS   ISGW2;
-0.000080   eta    mu-  anti-nu_mu       PHOTOS   ISGW2;
-0.000128   rho0   mu-  anti-nu_mu       PHOTOS   ISGW2;
-0.000130   omega   mu-  anti-nu_mu      PHOTOS   ISGW2;
-0.000084   eta'   mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000077000 pi0     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   mu-  anti-nu_mu       PHOTOS   ISGW2;
 0.000000   D(2S)0 mu-  anti-nu_mu       PHOTOS   ISGW2;
 0.000000   D*(2S)0 mu-  anti-nu_mu      PHOTOS   ISGW2;
-0.001948   Xu0   mu-  anti-nu_mu        PHOTOS   VubHybridBp;
+0.001948   Xu0   mu-  anti-nu_mu         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
 #
 0.000030   pi0    tau- anti-nu_tau                 ISGW2;
 0.000012   eta    tau- anti-nu_tau                 ISGW2;
@@ -2769,18 +2781,12 @@ Decay B-
 0.000000   D(2S)0 tau- anti-nu_tau                 ISGW2;
 0.000000   D*(2S)0 tau- anti-nu_tau                 ISGW2;
 #
-#   b -> l nu
-#
-0.000180   tau- anti-nu_tau                        SLN;
-0.000000   mu-  anti-nu_mu               PHOTOS   SLN;
-0.000000   e-   anti-nu_e                PHOTOS  SLN;
 #
 #
-#
-# b->u hadronic 
+# b->u hadronic
 # Ref. [B1]:
 #
-0.000016   D_s-  pi0   PHSP;
+0.000016000 D_s-    pi0                                     PHSP; #[Reconstructed PDG2011]
 0.000020   D_s*-  pi0  SVS;
 #
 0.000028   rho0  D_s-     SVS;
@@ -2789,67 +2795,75 @@ Decay B-
 #
 # b-> s gamma
 #
-0.0000403   K*-  gamma                   HELAMP 1.0 0.0 1.0 0.0;
+0.000042100 K*-     gamma                                   HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 #0.0000135  K_1-  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000065  K'_1-  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000128  K'*-  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000166  K_2*-  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000017  K''*-  gamma                   HELAMP 1.0 0.0 1.0 0.0;
-0.0003137   anti-Xsu    gamma  BTOXSGAMMA 2;
+0.0003118     anti-Xsu    gamma     BTOXSGAMMA 2 ;
+#
+0.000000550 K-      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001550 K*-     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 anti-Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.000000520 K-      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001160 K*-     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 anti-Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.0000001 K-        tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 K*-       tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 anti-Xsu  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
 #
-0.00000049  K-        e+    e-    PHOTOS BTOSLLBALL;
-0.000000700 K*-       e+    e-    PHOTOS BTOSLLBALL;
-0.000004994 anti-Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.00000039  K-        mu+   mu-   PHOTOS BTOSLLBALL;
-0.000000700 K*-       mu+   mu-   PHOTOS BTOSLLBALL;
-0.000002506 anti-Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.000000130 K-        tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000190 K*-       tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000200 anti-Xsu  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+#   b -> l nu
 #
+0.000180000 tau-    anti-nu_tau                             SLN; #[Reconstructed PDG2011]
+0.000000   mu-  anti-nu_mu               PHOTOS   SLN;
+0.000000   e-   anti-nu_e                PHOTOS  SLN;
 #
 #------------------------------------------------------------------------------
 # 2- and 3-body modes revised Feb.2005  Markus Cristinziani, SLAC
 #vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+#
 # Exclusive hadronic b->u
 #
 0.000026   pi-   pi0   pi0                   CB3PI-P00 alpha;
-0.0000121  pi-   pi-   pi+                   CB3PI-MPP alpha;
+0.000000   pi-   pi-   pi+                   CB3PI-MPP alpha;
 ####
-0.0000049 eta pi-                PHSP;
-0.0000026 eta K-                 PHSP;
-0.0000193 K*- eta                SVS;
-0.0000084 rho- eta               SVS;
-0.0000026 eta' pi-               PHSP;
-0.0000697 eta' K-                PHSP;
-0.0000049 K*- eta'               SVS;
-0.0000087 rho- eta'              SVS;
-0.0000067 omega pi-              SVS;
-0.0000068 omega K-               SVS;
-0.000001  omega K*-              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.0000106 omega rho-             SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.0000001  phi pi-                SVS;
-0.0000083 phi K-                 SVS;
-0.000023  anti-K0 pi-            PHSP;
-0.00000128 K0 K-                  PHSP;
-0.0000055 pi- pi0                PHSP;
-0.0000121  K- pi0                 PHSP;
+0.000004070 eta     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000002330 eta     K-                                      PHSP; #[Reconstructed PDG2011]
+0.000019300 K*-     eta                                     SVS; #[Reconstructed PDG2011]
+0.000007000 rho-    eta                                     SVS; #[Reconstructed PDG2011]
+0.000002700 eta'    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000070600 eta'    K-                                      PHSP; #[Reconstructed PDG2011]
+0.000004900 K*-     eta'                                    SVS; #[Reconstructed PDG2011]
+0.000008700 rho-    eta'                                    SVS; #[Reconstructed PDG2011]
+0.000006900 omega   pi-                                     SVS; #[Reconstructed PDG2011]
+0.000006700 omega   K-                                      SVS; #[Reconstructed PDG2011]
+0.0000010  omega K*-              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000015900 omega   rho-                                    SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0000000  phi pi-                SVS;
+0.000008300 phi     K-                                      SVS; #[Reconstructed PDG2011]
+#2-body modes from Jim Olsen
+# (K_S0 K- and K_L0 K- -> 1x10^-6, Jim Olsen - Mar 27, 2001)
+# (pi- pi0 -> 5x10^-6 and K- pi0 -> 11x10^-6, Jim Olsen - Mar 27, 2001)
+# PR LHCb 04/08/2004 Split into Ks/KL
+0.000000  anti-K0 pi-            PHSP;
+0.000011550 K_S0    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000011550 K_L0    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000001360 K0      K-                                      PHSP; #[Reconstructed PDG2011]
+0.000005700 pi-     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000012900 K-      pi0                                     PHSP; #[Reconstructed PDG2011]
 #
 # 3-body John Back (jback@slac.stanford.edu) - Oct 15, 2002
 # JGS intersperses modes with pi0->eta,eta'
 # B- modes
 #
 # rho0 3-body modes
-### AJR zeroed rho0pi- in favor of the CB3PI-P00 decay above
-0.0000000    rho0 pi-               SVS;
-0.0000042    rho0 K-                SVS;
+0.000008300 rho0    pi-                                     SVS; #[Reconstructed PDG2011]
+0.000003700 rho0    K-                                      SVS; #[Reconstructed PDG2011]
 #
 # rho- 3-body modes
-### AJR zeroed rho-pi0 in favor of the CB3PI-MPP decay above
-0.000000     rho- pi0               SVS;
-0.000001     rho- anti-K0           SVS;
-
-
+0.000008000 rho-    anti-K0                                 SVS; #[Reconstructed PDG2011]
+0.000010900 rho-    pi0                                     SVS; #[Reconstructed PDG2011]
 #
 # rho(1450) 3-body modes
 0.0000022    rho(2S)0 pi-           SVS;
@@ -2857,25 +2871,24 @@ Decay B-
 #
 # f0,a0(980) 3-body modes
 0.000001     f_0 pi-                PHSP;
-0.0000177    f_0 K-                 PHSP;
+0.0000092    f_0 K-                 PHSP;
 0.000001     a_0- anti-K0           PHSP;
 0.000001     a_00 K-                PHSP;
 0.000001     a_00 pi-               PHSP;
 0.000001     a_0- pi0               PHSP;
 
-0.0000082 f_2 pi-                   PHSP;
+0.000001600 f_2     pi-                                     PHSP; #[Reconstructed PDG2011]
 
 #
 # K*(1430) 3-body modes
-0.000047     anti-K_0*0 pi-         PHSP;
-0.000002     K_0*0 K-               PHSP;
-0.000047     K_0*- pi0              PHSP;
+0.000045000 anti-K_0*0 pi-                                  PHSP; #[Reconstructed PDG2011]
+0.000001     K_0*0 K-               PHSP;
+0.000002     K_0*- pi0              PHSP;
 0.000002     K_0*- K0               PHSP;
 #
-# K* (892) 3-body modes
-0.0000109    anti-K*0 pi-           SVS;
-0.0000069    K*- pi0                SVS;
-0.000003     K*- K0                 SVS;
+# K*-(892) 3-body modes
+0.000006900 K*-     pi0                                     SVS; #[Reconstructed PDG2011]
+0.0000030     K*- K0                 SVS;
 #
 #
 #
@@ -2886,15 +2899,15 @@ Decay B-
 #0402270.000002     pi- pi+ pi-            PHSP;
 #
 # K- pi+ pi-: high mass + f0(400-1200) = (5+5)e-6
-0.0000100     K- pi+ pi-             PHSP;
+0.000000000 K-      pi+     pi-                             PHSP; #[Reconstructed PDG2011]
 #
 # K- K+ pi-: just non-resonant
-0.000001     K- K+ pi-              PHSP;
+0.000005000 K-      K+      pi-                             PHSP; #[Reconstructed PDG2011]
+#
+# K- K+ K-: high mass structure near 1500 + non-res: total - phiK = 30 - 4
+0.000025400 K-      K+      K-                              PHSP; #[Reconstructed PDG2011]
 #
-# K- K+ K-: high mass structure near 1500 + non-res: total - phiK 
-0.0000296    K- K+ K-               PHSP;
 #
-# 
 # K-K-pi+: suppressed mode (1e-7)
 0.0000001    K- K- pi+              PHSP;
 # K+pi-pi-: suppressed mode (1e-7)
@@ -2938,7 +2951,8 @@ Decay B-
 #
 #4-body modes from Andrei Gritsan
 #--- 4-body rho-rho, rho-pi-pi, pi-pi-pi-pi --------------------------
-0.000018  rho-  rho0             SVV_HELAMP 1.0 0.0 1.7 0.0 1.0 0.0;
+# PR LHCb 22 Apr 2004 Set long. pol. for rho rho
+0.000024000 rho-    rho0                                    SVV_HELAMP 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
 0.000010  rho0 pi- pi0           PHSP;
 0.000005  rho0 pi- eta           PHSP;
 0.000002  rho0 pi- eta'          PHSP;
@@ -2946,6 +2960,8 @@ Decay B-
 0.000005  omega pi- eta          PHSP;
 0.000002  omega pi- eta'         PHSP;
 0.000010  rho- pi- pi+           PHSP;
+# PR LHCb Add rho+ pi- pi-
+0.000010  rho+ pi- pi-           PHSP;
 0.000010  rho- pi0 pi0           PHSP;
 0.000005  rho- pi0 eta           PHSP;
 0.000002  rho- eta eta           PHSP;
@@ -2958,11 +2974,11 @@ Decay B-
 0.000002  pi- eta eta pi0        PHSP;
 0.000002  pi- eta' pi0 pi0       PHSP;
 0.000001  pi- eta' eta pi0       PHSP;
-0.0000204 a_10  pi-              SVS;
-0.0000264 a_1-  pi0              SVS;
-0.0000067 b_10  pi-              SVS;
-0.000001  b_1-  pi0              SVS;
-0.000002  rho- f_0               SVS;
+0.000020000 a_10    pi-                                     SVS; #[Reconstructed PDG2011]
+0.000026000 a_1-    pi0                                     SVS; #[Reconstructed PDG2011]
+0.0000067  b_10  pi-              SVS;
+0.000010  b_1-  pi0              SVS;
+0.000010  rho- f_0               SVS;
 0.000010  rho- a_00              SVS;
 0.000002  rho0 a_0-              SVS;
 0.000010  f_0 pi- pi0            PHSP;
@@ -2970,11 +2986,11 @@ Decay B-
 0.000001  a_0- pi0 pi0           PHSP;
 0.000001  a_0+ pi- pi-           PHSP;
 #--- 4-body rho-K*, rho-pi-K, K*-pi-pi, pi-pi-pi-K -------------------
-0.0000092 rho-  anti-K*0         SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.000005  rho0  K*-              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000009200 rho-    anti-K*0                                SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000010  rho0  K*-              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.000010  pi- pi0 anti-K*0       PHSP;
 0.000005  pi- eta anti-K*0       PHSP;
-0.000067  pi+ pi- K*-            PHSP;
+0.000069800 pi+     pi-     K*-                             PHSP; #[Reconstructed PDG2011]
 0.000010  pi0 pi0 K*-            PHSP;
 0.000005  pi0 eta K*-            PHSP;
 0.000002  eta eta K*-            PHSP;
@@ -3005,14 +3021,14 @@ Decay B-
 0.000002  pi0 pi0 eta' K-        PHSP;
 0.000001  pi0 eta eta' K-        PHSP;
 0.000010  rho- anti-K_0*0        PHSP;
-0.000010  rho0 K_0*-             PHSP;
+0.000006  rho0 K_0*-             PHSP;
 0.000010  pi- pi0 anti-K_0*0     PHSP;
 0.000010  pi0 pi0 K_0*-          PHSP;
-0.0000052 K*- f_0                SVS;
+0.000005200 K*-     f_0                                     SVS; #[Reconstructed PDG2011]
 0.000010  a_10 K-                SVS;
-0.0000349 a_1- anti-K0           SVS;
-0.0000091 b_10 K-                SVS;
-0.000013  b_1- anti-K0           SVS;
+0.000035000 a_1-    anti-K0                                 SVS; #[Reconstructed PDG2011]
+0.0000091  b_10 K-                SVS;
+0.000010  b_1- anti-K0           SVS;
 0.000005  K*- a_00               SVS;
 0.000005  anti-K*0 a_0-          SVS;
 #--- 4-body K*-K*, rho-K-K, K*-K-pi, phi-pi-pi, pi-pi-K-K ------------
@@ -3031,18 +3047,16 @@ Decay B-
 0.000001  K0 anti-K0 pi- pi0     PHSP;
 0.0000005 K0 anti-K0 pi- eta     PHSP;
 0.0000002 K0 anti-K0 pi- eta'    PHSP;
-0.000001  anti-K0 K+ pi- pi-     PHSP;#2007 added      
 0.000001  K0 K- pi+ pi-          PHSP;
-0.00000025  K0 K- pi0 pi0          PHSP;
+0.000001  K0 K- pi0 pi0          PHSP;
 0.0000005 K0 K- pi0 eta          PHSP;
-0.00000025 K0 K- eta eta          PHSP;#missing from B+
+0.0000002 K0 K- eta eta          PHSP;
 0.0000002 K0 K- pi0 eta'         PHSP;
 0.0000001 K0 K- eta eta'         PHSP;
-0.000001  K*- K+ pi-             PHSP;
 0.000001  K*+ K- pi-             PHSP;
-
-0.000001  K0 anti-K*0 pi-        PHSP;
+0.000001  K*- K+ pi-             PHSP;
 0.000001  K*0 anti-K0 pi-        PHSP;
+0.000001  K0 anti-K*0 pi-        PHSP;
 0.000001  K- K*0 pi0             PHSP;
 0.0000005 K- K*0 eta             PHSP;
 0.0000002 K- K*0 eta'            PHSP;
@@ -3050,16 +3064,15 @@ Decay B-
 0.0000005 K*- K0 eta             PHSP;
 0.0000002 K*- K0 eta'            PHSP;
 #--- 4-body phi-K*, phi-K-pi, K-K-K*, pi-K-K-K -----------------------
-0.0000096 phi K*-                SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000010000 phi     K*-                                     SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000010  phi anti-K0 pi-        PHSP;
 0.000010  phi K- pi0             PHSP;
 0.000005  phi K- eta             PHSP;
 0.000002  phi K- eta'            PHSP;
-0.000031  K- K+ K*-              PHSP;#total -phiK*
+0.000026000 K-      K+      K*-                             PHSP; #[Reconstructed PDG2011]
 0.000010  K- K*+ K-              PHSP;
-
-0.000010  K- K0 anti-K*0         PHSP;
 0.000010  K- K*0 anti-K0         PHSP;
+0.000010  K- K0 anti-K*0         PHSP;
 0.000010  K0 K*- anti-K0         PHSP;
 0.000010  K+ K- K- pi0           PHSP;
 0.000005  K+ K- K- eta           PHSP;
@@ -3069,7 +3082,7 @@ Decay B-
 0.000005  K0 anti-K0 K- eta      PHSP;
 0.000002  K0 anti-K0 K- eta'     PHSP;
 0.000010  K0 anti-K0 anti-K0 pi- PHSP;
-0.000010  phi   K_0*-            PHSP;
+0.000007000 phi     K_0*-                                   PHSP; #[Reconstructed PDG2011]
 0.000010  K- K+ K_0*-            PHSP;
 0.000010  K- K- K_0*+            PHSP;
 0.000010  K- anti-K_0*0 K0       PHSP;
@@ -3080,6 +3093,7 @@ Decay B-
 0.000001  phi K0 K-              PHSP;
 0.000001  K+ K- K- K0            PHSP;
 0.000001  K0 anti-K0 K0 K-       PHSP;
+#
 #5-body modes from Jim Smith - 1/30/05
 #--- 5-body rho-rho-pi, rho-pi-pi-pi, pi-pi-pi-pi-pi -------------------
 0.000010  rho0 rho0 pi-          PHSP;
@@ -3208,7 +3222,6 @@ Decay B-
 0.000010  rho0 K_0*- pi0         PHSP;
 0.000005  rho0 K_0*- eta         PHSP;
 0.000002  rho0 K_0*- eta'        PHSP;
-0.000010  rho+ K_0*- pi-        PHSP;#added 2007 not in PDG exist in B+
 0.000010  pi- pi- anti-K_0*0 pi+ PHSP;
 0.000010  pi- pi0 anti-K_0*0 pi0 PHSP;
 0.000005  pi- pi0 anti-K_0*0 eta PHSP;
@@ -3304,9 +3317,8 @@ Decay B-
 0.000002  phi K- eta' pi0        PHSP;
 0.000010  K+ K- K*- pi0          PHSP;
 0.000010  K- K*+ K- pi0          PHSP;
-0.000010  K- K0 anti-K*0 pi0     PHSP;
 0.000010  K- K*0 anti-K0 pi0     PHSP;
-
+0.000010  K- K0 anti-K*0 pi0     PHSP;
 0.000010  K0 K*- anti-K0 pi0     PHSP;
 0.000010  K+ K- K- rho0          PHSP;
 0.000010  K+ K- K- omega         PHSP;
@@ -3348,7 +3360,7 @@ Decay B-
 0.000001  K- K+ K'_1- eta        PHSP;
 0.000001  K- K+ K'_1- eta'       PHSP;
 0.000002  K- K- K'_1+ pi0        PHSP;
-0.000002  K- K- K'_10 pi+   PHSP; #2007 changed anti-K'_10 to K'_10 
+0.000002  K- K- anti-K'_10 pi+   PHSP;
 0.000002  K0 anti-K0 anti-K'_10 pi- PHSP;
 0.000002  K0 anti-K0 K'_1- pi0   PHSP;
 0.000001  K0 anti-K0 K'_1- eta   PHSP;
@@ -3357,15 +3369,14 @@ Decay B-
 0.000002  K0 K0 K'_1- pi0        PHSP;
 0.000001  K0 K0 K'_1- eta        PHSP;
 0.000001  K0 K0 K'_1- eta'       PHSP;
-
-0.000010  K- K'_10 anti-K0 pi0   PHSP;
-0.000005  K- K'_10 anti-K0 eta   PHSP;
-0.000002  K- K'_10 anti-K0 eta'  PHSP;
 0.000010  K- K0 anti-K'_10 pi0   PHSP;
 0.000005  K- K0 anti-K'_10 eta   PHSP;
 0.000002  K- K0 anti-K'_10 eta'  PHSP;
+0.000010  K- K'_10 anti-K0 pi0   PHSP;
+0.000005  K- K'_10 anti-K0 eta   PHSP;
+0.000002  K- K'_10 anti-K0 eta'  PHSP;
 #--- 5-body phi-phi-K, phi-phi-pi, phi-3K, phi-K-K-pi, 5K, 4K-pi ------------
-0.0000049 phi phi K-             PHSP;
+0.000004900 phi     phi     K-                              PHSP; #[Reconstructed PDG2011]
 0.000001  phi phi pi-            PHSP;
 0.000001  phi K+ K- K-           PHSP;
 0.000001  phi K0 anti-K0 K-      PHSP;
@@ -3379,7 +3390,7 @@ Decay B-
 0.000003  phi phi K*-            PHSP;
 0.000001  phi K+ K- K*-          PHSP;
 0.000001  phi K0 anti-K0 K*-     PHSP;
-0.000001  phi K0 K- anti-K*0          PHSP; ## 2007 changed K*0 to anti-K*0
+0.000001  phi K0 K- K*0          PHSP;
 0.000001  phi K+ K- K- pi0       PHSP;
 0.000001  phi K+ K- anti-K0 pi-  PHSP;
 0.000001  phi K0 anti-K0 K- pi0  PHSP;
@@ -3390,39 +3401,38 @@ Decay B-
 #
 #   B -> cc= s          sum = 1.92%
 #
-0.001007  J/psi K-                         SVS;
-0.00141   J/psi K*-                        SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.000049  J/psi pi-                       SVS;
-0.00006   J/psi rho-                      SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.001014000 J/psi   K-                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi-                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho-                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 0.0002   J/psi anti-K0   pi-                    PHSP;
 0.0001   J/psi K-  pi0                    PHSP;
 #rl0.0007   J/psi K-  pi+  pi-               PHSP;
 #rl0.00035   J/psi K-  pi0  pi0               PHSP;
 #rl0.00035   J/psi anti-K0   pi-  pi0               PHSP;
-0.0018     J/psi  K_1-              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0001   J/psi K'_1-                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005   J/psi K_2*-                       PHSP;
-
-0.000052    J/psi  phi K-        PHSP;
+0.001800000 J/psi   K_1-                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K-                              PHSP; #[Reconstructed PDG2011]
 #
-0.000648  psi(2S) K-                        SVS;
-0.00067  psi(2S) K*-                       SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.000646000 psi(2S) K-                                      SVS; #[Reconstructed PDG2011]
+0.000620000 psi(2S) K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 0.0004   psi(2S) anti-K0   pi-                   PHSP;
 0.0002   psi(2S) K-  pi0                   PHSP;
-0.0019   psi(2S) K-  pi+  pi-              PHSP;
+0.001900000 psi(2S) K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
 0.0001   psi(2S) K-  pi0  pi0              PHSP;
 0.0001   psi(2S) anti-K0   pi-  pi0              PHSP;
 0.0004     psi(2S)  K_1-              PHSP;
 #
-0.00091   eta_c  K-                      PHSP;
-0.0012    K*-   eta_c                    SVS;
+0.000910000 eta_c   K-                                      PHSP; #[Reconstructed PDG2011]
+0.001200000 K*-     eta_c                                   SVS; #[Reconstructed PDG2011]
 0.0002    eta_c  anti-K0   pi-                 PHSP;
 0.0001    eta_c  K-  pi0                 PHSP;
 0.0002    eta_c  K-  pi+  pi-            PHSP;
 0.0001    eta_c  K-  pi0  pi0            PHSP;
 0.0001    eta_c  anti-K0   pi-  pi0            PHSP;
 #
-0.00034    eta_c(2S) K-                      PHSP;
+0.000340000 eta_c(2S) K-                                    PHSP; #[Reconstructed PDG2011]
 0.00048    K*- eta_c(2S)                     SVS;
 0.00008    eta_c(2S)   anti-K0   pi-                 PHSP;
 0.00005    eta_c(2S)   K-  pi0                 PHSP;
@@ -3430,7 +3440,7 @@ Decay B-
 0.00005    eta_c(2S)   K-  pi0  pi0            PHSP;
 0.00005    eta_c(2S)   anti-K0   pi-  pi0            PHSP;
 #
-0.00014   chi_c0  K-                      PHSP;
+0.000133000 chi_c0  K-                                      PHSP; #[Reconstructed PDG2011]
 0.0004    K*-   chi_c0                    SVS;
 0.0002    chi_c0  anti-K0   pi-                 PHSP;
 0.0001    chi_c0  K-  pi0                 PHSP;
@@ -3438,8 +3448,8 @@ Decay B-
 0.0001    chi_c0  K-  pi0  pi0            PHSP;
 0.0001    chi_c0  anti-K0   pi-  pi0            PHSP;
 #
-0.00049    chi_c1  K-                      SVS;
-0.00036   chi_c1  K*-                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.000460000 chi_c1  K-                                      SVS; #[Reconstructed PDG2011]
+0.000300000 chi_c1  K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 0.0004    chi_c1  anti-K0   pi-                 PHSP;
 0.0002    chi_c1  K-  pi0                 PHSP;
 0.0004    chi_c1  K-  pi+  pi-            PHSP;
@@ -3447,14 +3457,14 @@ Decay B-
 0.0002    chi_c1  anti-K0   pi-  pi0            PHSP;
 #
 0.00002    chi_c2  K-                      STS;
-0.00001    chi_c2  K*-                     PHSP;
+0.00002    chi_c2  K*-                     PHSP;
 0.0002    chi_c2  anti-K0   pi-                 PHSP;
 0.0001    chi_c2  K-  pi0                 PHSP;
 0.0002    chi_c2  K-  pi+  pi-            PHSP;
 0.0001    chi_c2  K-  pi0  pi0            PHSP;
 0.0001    chi_c2  anti-K0   pi-  pi0            PHSP;
 #
-0.00049   psi(3770) K-                    SVS;   
+0.000490000 psi(3770) K-                                    SVS; #[Reconstructed PDG2011]
 0.0005    psi(3770) K*-                   PHSP;
 0.0003    psi(3770) anti-K0   pi-         PHSP;
 0.0002    psi(3770) K-  pi0               PHSP;
@@ -3465,10 +3475,10 @@ Decay B-
 #
 #   b -> c (sc=) -> D Ds X    Sum = 10%
 #
-0.0100    D0   D_s-                      PHSP;
-0.0082    D*0  D_s-                      SVS;
-0.0076    D_s*- D0                       SVS;
-0.0171    D_s*- D*0                  SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0;
+0.010000000 D0      D_s-                                    PHSP; #[Reconstructed PDG2011]
+0.008200000 D*0     D_s-                                    SVS; #[Reconstructed PDG2011]
+0.007600000 D_s*-   D0                                      SVS; #[Reconstructed PDG2011]
+0.017100000 D_s*-   D*0                                     SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0; #[Reconstructed PDG2011]
 0.0006   D'_10  D_s-                     SVS;
 0.0012   D'_10  D_s*-                    SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0;
 0.0012   D_10  D_s-                      SVS;
@@ -3491,32 +3501,33 @@ Decay B-
 0.0033    D_s*- D0  pi-  pi+             PHSP;
 0.0008    D_s*- D0  pi0  pi0             PHSP;
 #
+#
 #  b -> c (sc=) -> D D= K X    Sum = 8%
 # update: Ref. [B1]:
 #
-0.0017   D0  D-  anti-K0                    PHSP; 
-0.0052   D0  D*-  anti-K0                   PHSP; 
-0.0031   D*0  D-  anti-K0                   PHSP; 
-0.0078   D*0  D*-  anti-K0                  PHSP;
+0.0017   D0  D-   anti-K0                PHSP;
+0.0052   D0  D*-  anti-K0                   PHSP;
+0.0031   D*0  D-  anti-K0                   PHSP;
+0.007800000 D*0     D*-     anti-K0                         PHSP; #[Reconstructed PDG2011]
 # External+internal W-emission amplitude
-0.00137  D0  anti-D0  K-                    PHSP; 
+0.002100000 D0      anti-D0 K-                              PHSP; #[Reconstructed PDG2011]
 0.0018   D*0  anti-D0  K-                   PHSP;
-0.0047   D0  anti-D*0  K-                   PHSP; 
-0.0053   D*0  anti-D*0  K-                  PHSP; 
+0.004700000 D0      anti-D*0 K-                             PHSP; #[Reconstructed PDG2011]
+0.005300000 D*0     anti-D*0 K-                             PHSP; #[Reconstructed PDG2011]
 # Internal W-emission amplitude (color suppressed modes)
-0.0003    D-  D+  K-                        PHSP;
+0.0005    D-  D+  K-                        PHSP;
 0.0005    D*-  D+  K-                       PHSP;
-0.0015    D-  D*+  K-                       PHSP;
+0.001500000 D-      D*+     K-                              PHSP; #[Reconstructed PDG2011]
 0.0015    D*-  D*+  K-                      PHSP;
 #
-0.0025   D0  D-  anti-K*0                   PHSP;
+0.0025   D0  D-   anti-K*0               PHSP;
 0.0025   D*0  D-  anti-K*0                  PHSP;
 0.0025   D0  D*-  anti-K*0                  PHSP;
 0.0050   D*0  D*-  anti-K*0                 PHSP;
 #
 0.0025   D0  anti-D0  K*-                   PHSP;
-0.0025   D*0  anti-D0  K*-                  PHSP;
-0.0025   D0  anti-D*0  K*-                  PHSP;
+0.0025   D*0 anti-D0  K*-                PHSP;
+0.0025   D0  anti-D*0  K*-               PHSP;
 0.0050   D*0  anti-D*0  K*-                 PHSP;
 #
 0.0005   D-  D+  K*-                        PHSP;
@@ -3526,43 +3537,44 @@ Decay B-
 #
 # B->D(*)D(*). See Ref [B1]:
 #
-0.00042     D-   D0               PHSP;
-0.00039     D*-  D0               SVS;
-0.00063     D*0  D-               SVS;
-0.00081     D*0  D*-              SVV_HELAMP 0.47 0.0 0.96 0.0 0.56 0.0;
+0.000380000 D-      D0                                      PHSP; #[Reconstructed PDG2011]
+0.000390000 D*-     D0                                      SVS; #[Reconstructed PDG2011]
+0.000630000 D*0     D-                                      SVS; #[Reconstructed PDG2011]
+0.000810000 D*0     D*-                                     SVV_HELAMP 0.47 0.0 0.96 0.0 0.56 0.0; #[Reconstructed PDG2011]
 
 #
 #  B -> D(*) X  Exclusive Modes
 #
-0.00519  D*0 pi-                        SVS;
-0.00484  D0   pi-                       PHSP;
-0.0134   rho-   D0                      SVS;
+0.005190000 D*0     pi-                                     SVS; #[Reconstructed PDG2011]
+0.004840000 D0      pi-                                     PHSP; #[Reconstructed PDG2011]
+0.013400000 rho-    D0                                      SVS; #[Reconstructed PDG2011]
 # D* rho HELAMP parameters taken from ICHEP 98-852.
-0.0098   D*0  rho-               SVV_HELAMP 0.228 0.95 0.932 0.0 0.283 1.13;
+0.009800000 D*0     rho-                                    SVV_HELAMP 0.228 0.95 0.932 0.0 0.283 1.13; #[Reconstructed PDG2011]
 #
 0.0005   D0  pi0  pi-                   PHSP;
 0.0005   D*0 pi0  pi-                   PHSP;
-0.00102   D+  pi-  pi-                   PHSP;
-0.00125   D*+ pi-  pi-                   PHSP;
+0.001070000 D+      pi-     pi-                             PHSP; #[Reconstructed PDG2011]
+0.001350000 D*+     pi-     pi-                             PHSP; #[Reconstructed PDG2011]
 #
 # D a1 updated Ref. [B1]:
-0.00887  a_1- D0                         SVS;
-0.0021   D0  rho0 pi-                   PHSP;
-0.0050   D0  pi+  pi-  pi-              PHSP;
+0.004000000 a_1-    D0                                      SVS; #[Reconstructed PDG2011]
+0.000200000 D0      rho0    pi-                             PHSP; #[Reconstructed PDG2011]
+0.006800000 D0      pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
 #
 # SVV_HELAMP from factorization, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/168.html:
 # updated Ref. [B1]:
 #
-0.01900  D*0 a_1-                      SVV_HELAMP 0.200 0.0 0.866 0.0 0.458 0.0;
 #
-0.0005   D*0 rho0 pi-                   PHSP;
-0.00045  D*0 pi+  pi-  pi-              PHSP;
+0.019000000 D*0     a_1-                                    SVV_HELAMP 0.200 0.0 0.866 0.0 0.458 0.0; #[Reconstructed PDG2011]
+#
+0.00042   D*0 rho0 pi-                   PHSP;
+0.010300000 D*0     pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
 #
 0.0020   D+  rho-  pi-                  PHSP;
 0.0020   D+  pi0   pi-  pi-             PHSP;
 0.0020   D*+ rho-  pi-                  PHSP;
-0.0150   D*+ pi0   pi-  pi-             PHSP;
+0.015000000 D*+     pi0     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
 0.0005   D*0 rho-  pi0                  PHSP;
 0.0005   D*0 pi-   pi0  pi0             PHSP;
 #
@@ -3570,96 +3582,163 @@ Decay B-
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/151.html
 # further update October 26, 2004 Lange
 #
-0.0013   D_10 pi-                       SVS;
-0.00075   D'_10 pi-                      SVS;
-0.00086   D_2*0 pi-                      STS;
-0.00091 D_0*0 pi- PHSP;
+0.000876   D_10 pi-                       SVS;
+0.0005   D'_10 pi-                      SVS;
+0.00052   D_2*0 pi-                      STS;
 0.0007   D_10 rho-                      PHSP;
 0.0022   D'_10 rho-                    PHSP;
 0.0038   D_2*0 rho-                    PHSP;
-
+0.00061 D_0*0 pi- PHSP;
 #
 #
-# B->DK, recommendation 
+# B->DK, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/151.html:
 # update: Ref [B1]:
 #
-0.000402 D0  K-                                PHSP;
-0.000416 D*0 K-                                SVS;
-0.00053  K*- D0                        SVS;
-0.00081  D*0 K*-                       SVV_HELAMP 0.228 0.0  0.932 0.0 0.283 0.0;
+0.000368000 D0      K-                                      PHSP; #[Reconstructed PDG2011]
+0.000421000 D*0     K-                                      SVS; #[Reconstructed PDG2011]
+0.000530000 K*-     D0                                      SVS; #[Reconstructed PDG2011]
+0.000810000 D*0     K*-                                     SVV_HELAMP 0.228 0.0  0.932 0.0 0.283 0.0; #[Reconstructed PDG2011]
 #October 26, 2004 Lange
-0.00000054 D- pi0  PHSP;
-0.00000054 D*- pi0  SVS;
-0.0000004 D- anti-K0 PHSP;#2007 changed BR  
-0.0000006 D*- anti-K0 SVS;#2007 changed BR 
+0.0000005 D- pi0  PHSP;
+0.0000005 D*- pi0  SVS;
+0.000011 D- anti-K0 PHSP;
+0.000006 D*- anti-K0 SVS;
 #
 #October 26, 2004 - Lange
-0.00073 D0 D_s0*- PHSP;
+0.00075 D0 D_s0*- PHSP;
 0.0009 D*0 D_s0*- SVS;
-0.0031 D_s1- D0 SVS;
-0.012 D*0 D_s1- SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0;
-#
-0.020        cd_1       anti-uu_1         PYTHIA 22;
-0.012        cd_1       anti-uu_1         PYTHIA 23;
-0.003        cs_1       anti-uu_1         PYTHIA 23;
-0.005        cs_0       anti-cu_0         PYTHIA 22;
-0.010        cs_1       anti-cu_1         PYTHIA 22;
-0.001        cs_0       anti-cu_0         PYTHIA 23;
-0.002        cs_1       anti-cu_1         PYTHIA 23;
-#
-0.214266        anti-u       d  c          anti-u       PYTHIA         48;
-0.04300         anti-u       d  c          anti-u       PYTHIA         13;
-0.02250         anti-u       s  c          anti-u       PYTHIA         13;
+0.003100000 D_s1-   D0                                      SVS; #[Reconstructed PDG2011]
+0.012000000 D*0     D_s1-                                   SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.00055 D0 K- anti-K0  PHSP;
+0.00075 D0 K- anti-K*0  PHSP;
+0.001500000 D*0     K-      anti-K*0                        PHSP; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.002750000 D0      omega   pi-                             PHSP; #[Reconstructed PDG2011]
+0.004500000 D*0     omega   pi-                             PHSP; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.00045 D0 D'_s1-  PHSP;
+0.00094 D*0 D'_s1-  PHSP;
+#
+#  Lam_c X  / Sigma_c X      4.0 %
+#
+#0.04000        cd_1       anti-uu_1         PYTHIA 23;
+0.032587684 cd_1    anti-uu_1                               PYTHIA 23; #[Reconstructed PDG2011]
+#
+#  Xi_c X     2.5%
+#
+#0.02400        cs_1       anti-uu_1         PYTHIA 23;
+0.008887593 cs_1    anti-uu_1                               PYTHIA 23; #[Reconstructed PDG2011]
+#
+#
+0.222451667 anti-u  d       c       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.042462776 anti-u  d       c       anti-u                  PYTHIA         13; #[Reconstructed PDG2011]
+0.022218888 anti-u  s       c       anti-u                  PYTHIA         13; #[Reconstructed PDG2011]
 #lange - try to crank up the psi production....
-0.07400         anti-c       s  c          anti-u       PYTHIA         13;
-0.00400         anti-c       d  c          anti-u       PYTHIA         13;
-0.00300         anti-u       d  u          anti-u       PYTHIA         48;
-0.00400         anti-c       s  u          anti-u       PYTHIA         48;
+0.073075460 anti-c  s       c       anti-u                  PYTHIA         13; #[Reconstructed PDG2011]
+0.003950000 anti-c  d       c       anti-u                  PYTHIA         13; #[Reconstructed PDG2011]
+0.002962500 anti-u  d       u       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.003950000 anti-c  s       u       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
 # JGS 11/5/02 This and similar a few lines above have been divided by two
-# to solve a double-counting problem for this channel 
-0.00205         anti-u     u  d       anti-u       PYTHIA         48;
-0.00007         anti-d     d  d       anti-u       PYTHIA         48;
-0.00009         anti-s     s  d       anti-u       PYTHIA         48;
-0.00220         anti-u     u  s       anti-u       PYTHIA         48;
-0.00180         anti-d     d  s       anti-u       PYTHIA         48;
-0.00150         anti-s     s  s       anti-u       PYTHIA         48;
-0.00500                    s  g     anti-u       PYTHIA         33;
+# to solve a double-counting problem for this channel
+0.002024389 anti-u  u       d       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.000069145 anti-d  d       d       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.000088900 anti-s  s       d       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.002172556 anti-u  u       s       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.001777537 anti-d  d       s       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.001481296 anti-s  s       s       anti-u                  PYTHIA         48; #[Reconstructed PDG2011]
+0.004937500 s       anti-u                                  PYTHIA         32; #[Reconstructed PDG2011]
 #
 ####
-
+0.000550000 D0      K-      K0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000750000 D0      K-      K*0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.018000000 D*0     pi+     pi-     pi-     pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.005700000 D*0     pi-     pi-     pi-     pi+     pi+     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002600000 D*+     pi-     pi-     pi-     pi+             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000180000 D_s+    pi-     K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000145000 D_s*+   pi-     K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011000 D_s+    K-      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001070000 J/psi   K-      pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   anti-p- Lambda0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000025800 psi(2S) pi-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 chi_c1  pi-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000018000 eta     K_0*-                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009100 eta     K_2*-                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000024000 omega   K_0*-                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000021000 omega   K_2*-                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000010100 anti-K*0 pi-                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001070 f_2     K-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000005600 anti-K_2*0 pi-                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001200 K*-     anti-K*0                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000006100 phi     K_1-                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000008400 phi     K_2*-                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000043000 K_1-    gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007900 eta     K-      gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003500 phi     K-      gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007600 K-      pi+     pi-     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 anti-K*0 pi-     gamma                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000046000 anti-K0 pi-     pi0     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000014000 K_2*-   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000980 rho-    gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001620 anti-p- p+      pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000005900 anti-p- p+      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003600 anti-p- p+      K*-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002500 anti-p- Lambda0 gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003000 anti-p- Lambda0 pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 anti-p- Lambda0 pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004800 anti-p- Lambda0 rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002000 anti-p- Lambda0 f_2                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003400 anti-Lambda0 Lambda0 K-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002200 anti-Lambda0 Lambda0 K*-                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000280000 Lambda_c+ anti-p- pi-                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 Lambda_c+ anti-p- pi-     pi0                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002300000 Lambda_c+ anti-p- pi-     pi-     pi+           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000035000 Sigma_c0 anti-p-                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000440000 Sigma_c0 anti-p- pi0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000440000 Sigma_c0 anti-p- pi+     pi-                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000280000 Sigma_c++ anti-p- pi-     pi-                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
-
 Decay B+
-#
+# Updated to PDG 2008
 #                  b -> c semileptonic
-0.0650   anti-D*0    e+   nu_e        PHOTOS  HQET 0.77 1.33 0.92;
-0.0215   anti-D0    e+   nu_e        PHOTOS  ISGW2;
-0.0056   anti-D_10   e+   nu_e        PHOTOS  ISGW2;
-0.0049   anti-D_0*0   e+   nu_e        PHOTOS  ISGW2;
-0.009   anti-D'_10   e+   nu_e        PHOTOS  ISGW2;
-0.003   anti-D_2*0   e+   nu_e        PHOTOS  ISGW2;
-0.0063   D*-  pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS;
+#
+0.056800000 anti-D*0 e+      nu_e                           PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 anti-D0 e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   anti-D_10   e+   nu_e        PHOTOS  ISGW2;
+0.0024   anti-D_0*0   e+   nu_e        PHOTOS  ISGW2;
+0.0007   anti-D'_10   e+   nu_e        PHOTOS  ISGW2;
+0.0018   anti-D_2*0   e+   nu_e        PHOTOS  ISGW2;
+0.006100000 D*-     pi+     e+      nu_e                    PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0003   anti-D*0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-0.0052   D-   pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS;
+# covered by other decays
+0.0000   D-   pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS;
 0.0010   anti-D0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
 
-0.0650   anti-D*0    mu+  nu_mu       PHOTOS   HQET 0.77 1.33 0.92;
-0.0215   anti-D0    mu+  nu_mu        PHOTOS  ISGW2;
-0.0056   anti-D_10   mu+  nu_mu       PHOTOS   ISGW2;
-0.0049   anti-D_0*0   mu+  nu_mu      PHOTOS    ISGW2;
-0.009   anti-D'_10   mu+  nu_mu      PHOTOS    ISGW2;
-0.003   anti-D_2*0   mu+  nu_mu      PHOTOS    ISGW2;
-0.0063   D*-  pi+   mu+   nu_mu       PHOTOS    GOITY_ROBERTS;
+0.056800000 anti-D*0 mu+     nu_mu                          PHOTOS   HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 anti-D0 mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   anti-D_10   mu+  nu_mu       PHOTOS   ISGW2;
+0.0024   anti-D_0*0   mu+  nu_mu      PHOTOS    ISGW2;
+0.0007   anti-D'_10   mu+  nu_mu      PHOTOS    ISGW2;
+0.0018   anti-D_2*0   mu+  nu_mu      PHOTOS    ISGW2;
+0.006100000 D*-     pi+     mu+     nu_mu                   PHOTOS    GOITY_ROBERTS; #[Reconstructed PDG2011]
 0.0003   anti-D*0  pi0   mu+   nu_mu  PHOTOS         GOITY_ROBERTS;
-0.0052   D-   pi+   mu+   nu_mu       PHOTOS    GOITY_ROBERTS;
+0.0000   D-   pi+   mu+   nu_mu       PHOTOS    GOITY_ROBERTS;
 0.0010   anti-D0  pi0   mu+   nu_mu   PHOTOS        GOITY_ROBERTS;
 #
 #                   b -> c tau nu
 #
-0.0208   anti-D*0    tau+ nu_tau                ISGW2; 
-0.0088   anti-D0    tau+ nu_tau                ISGW2;
+0.020000000 anti-D*0 tau+    nu_tau                         ISGW2; #[Reconstructed PDG2011]
+0.007000000 anti-D0 tau+    nu_tau                          ISGW2; #[Reconstructed PDG2011]
 0.0013   anti-D_10   tau+ nu_tau                ISGW2;
 0.0013   anti-D_0*0   tau+ nu_tau                ISGW2;
 0.0020   anti-D'_10   tau+ nu_tau                ISGW2;
@@ -3667,23 +3746,26 @@ Decay B+
 #
 #                   b -> u l nu
 #
-0.000077   pi0    e+   nu_e        PHOTOS  ISGW2;
-0.000080   eta    e+   nu_e        PHOTOS  ISGW2;
-0.000128   rho0   e+   nu_e        PHOTOS  ISGW2;
-0.000130   omega   e+   nu_e       PHOTOS  ISGW2;
-0.000084   eta'   e+   nu_e        PHOTOS  ISGW2;
+#
+#
+
+0.000077000 pi0     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   e+   nu_e        PHOTOS  ISGW2;
 0.000000   anti-D(2S)0 e+   nu_e   PHOTOS  ISGW2;
 0.000000   anti-D*(2S)0 e+   nu_e  PHOTOS  ISGW2;
-0.001948   Xu0   e+  nu_e          PHOTOS  VubHybridBp;
+0.001948   Xu0   e+  nu_e         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
 #
-0.000077   pi0    mu+  nu_mu       PHOTOS  ISGW2;
-0.000080   eta    mu+  nu_mu       PHOTOS  ISGW2;
-0.000128   rho0   mu+  nu_mu       PHOTOS  ISGW2;
-0.000130   omega   mu+  nu_mu      PHOTOS  ISGW2;
-0.000084   eta'   mu+  nu_mu       PHOTOS  ISGW2;
+0.000077000 pi0     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   mu+  nu_mu       PHOTOS  ISGW2;
 0.000000   anti-D(2S)0 mu+  nu_mu  PHOTOS  ISGW2;
 0.000000   anti-D*(2S)0 mu+  nu_mu PHOTOS  ISGW2;
-0.001948   Xu0   mu+  nu_mu        PHOTOS  VubHybridBp;
+0.001948   Xu0   mu+  nu_mu         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
 #
 0.000030   pi0    tau+ nu_tau              ISGW2;
 0.000012   eta    tau+ nu_tau              ISGW2;
@@ -3705,17 +3787,11 @@ Decay B+
 0.000000   anti-D*(2S)0 tau+ nu_tau              ISGW2;
 #
 #
-#   b -> l nu
-#
-0.000180   tau+ nu_tau                     SLN;
-0.000000   mu+  nu_mu          PHOTOS     SLN;
-0.000000   e+   nu_e           PHOTOS    SLN;
-
 #
-# b->u hadronic 
+# b->u hadronic
 # Ref. [B1]:
 #
-0.000016   D_s+  pi0   PHSP;
+0.000016000 D_s+    pi0                                     PHSP; #[Reconstructed PDG2011]
 0.000020   D_s*+  pi0  SVS;
 #
 0.000028   rho0  D_s+     SVS;
@@ -3724,23 +3800,29 @@ Decay B+
 #
 # b-> s gamma
 #
-0.0000403   K*+  gamma                   HELAMP 1.0 0.0 1.0 0.0;
+0.000042100 K*+     gamma                                   HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 #0.0000135  K_1+  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000065  K'_1+  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000128  K'*+  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000166  K_2*+  gamma                   HELAMP 1.0 0.0 1.0 0.0;
 #0.0000017  K''*+  gamma                   HELAMP 1.0 0.0 1.0 0.0;
-0.0003137   Xsu    gamma  BTOXSGAMMA 2;
-#
-0.00000049  K+   e+    e-    PHOTOS BTOSLLBALL;
-0.000000700 K*+  e+    e-    PHOTOS BTOSLLBALL;
-0.000004994 Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.00000039  K+   mu+   mu-   PHOTOS BTOSLLBALL;
-0.000000700 K*+  mu+   mu-   PHOTOS BTOSLLBALL;
-0.000002506 Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
-0.000000130 K+   tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000190 K*+  tau+  tau-  PHOTOS BTOSLLBALL;
-0.000000200 Xsu  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.0003118   Xsu    gamma  BTOXSGAMMA 2;
+#
+0.000000550 K+      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001550 K*+     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.000000520 K+      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001160 K*+     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+0.0000001 K+   tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 K*+  tau+  tau-  PHOTOS BTOSLLBALL;
+0.0000002 Xsu  tau+  tau-  PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+#
+#   b -> l nu
+#
+0.000180000 tau+    nu_tau                                  SLN; #[Reconstructed PDG2011]
+0.000000   mu+  nu_mu          PHOTOS     SLN;
+0.000000   e+   nu_e           PHOTOS    SLN;
 #
 #------------------------------------------------------------------------------
 # 2- and 3-body modes revised Feb.2005  Markus Cristinziani, SLAC
@@ -3749,40 +3831,44 @@ Decay B+
 # Exclusive hadronic b->u
 #
 0.000026   pi+   pi0   pi0                   CB3PI-P00 alpha;
-0.0000121  pi+   pi+   pi-                   CB3PI-MPP alpha;
+0.000000   pi+   pi+   pi-                   CB3PI-MPP alpha;
 ####
-0.0000049 eta pi+                PHSP;
-0.0000026 eta K+                 PHSP;
-0.0000193 K*+ eta                SVS;
-0.0000084 rho+ eta               SVS;
-0.0000026 eta' pi+               PHSP;
-0.0000697 eta' K+                PHSP;
-0.0000049 K*+ eta'               SVS;
-0.0000087 rho+ eta'              SVS;
-0.0000067 omega pi+              SVS;
-0.0000068 omega K+               SVS;
-0.000001  omega K*+              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.0000106 omega rho+             SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.0000001 phi pi+                SVS;
-0.0000083 phi K+                 SVS;
-0.000023  K0 pi+                 PHSP;
-0.00000128 anti-K0 K+             PHSP;
-0.0000055 pi+ pi0                PHSP;
-0.0000121 K+ pi0                 PHSP;
+0.000004070 eta     pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000002330 eta     K+                                      PHSP; #[Reconstructed PDG2011]
+0.000019300 K*+     eta                                     SVS; #[Reconstructed PDG2011]
+0.000007000 rho+    eta                                     SVS; #[Reconstructed PDG2011]
+0.000002700 eta'    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000070600 eta'    K+                                      PHSP; #[Reconstructed PDG2011]
+0.000004900 K*+     eta'                                    SVS; #[Reconstructed PDG2011]
+0.000008700 rho+    eta'                                    SVS; #[Reconstructed PDG2011]
+0.000006900 omega   pi+                                     SVS; #[Reconstructed PDG2011]
+0.000006700 omega   K+                                      SVS; #[Reconstructed PDG2011]
+0.0000010  omega K*+              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000015900 omega   rho+                                    SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0000000  phi pi+                SVS;
+0.000008300 phi     K+                                      SVS; #[Reconstructed PDG2011]
+#2-body modes from Jim Olsen
+# (K_S0 K- and K_L0 K- -> 1x10^-6, Jim Olsen - Mar 27, 2001)
+# (pi- pi0 -> 5x10^-6 and K- pi0 -> 11x10^-6, Jim Olsen - Mar 27, 2001)
+# PR LHCb 04/08/04 split into KS/KL
+0.000000  K0 pi+                 PHSP;
+0.000011550 K_S0    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000011550 K_L0    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000001360 anti-K0 K+                                      PHSP; #[Reconstructed PDG2011]
+0.000005700 pi+     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000012900 K+      pi0                                     PHSP; #[Reconstructed PDG2011]
 #
 # 3-body John Back (jback@slac.stanford.edu) - Oct 15, 2002
 # JGS intersperses modes with pi0->eta,eta'
 # B+ modes
 #
 # rho0 3-body modes
-### AJR zeroed rho0pi- in favor of the CB3PI-P00 decay above
-0.0000000    rho0 pi+               SVS;
-0.0000042    rho0 K+                SVS;
+0.000008300 rho0    pi+                                     SVS; #[Reconstructed PDG2011]
+0.000003700 rho0    K+                                      SVS; #[Reconstructed PDG2011]
 #
 # rho+ 3-body modes
-### AJR zeroed rho-pi0 in favor of the CB3PI-MPP decay above
-0.0000000    rho+ pi0               SVS;
-0.000001     rho+ K0                SVS;
+0.000010900 rho+    pi0                                     SVS; #[Reconstructed PDG2011]
+0.000008000 rho+    K0                                      SVS; #[Reconstructed PDG2011]
 #
 # rho(1450) 3-body modes
 0.0000022    rho(2S)0 pi+           SVS;
@@ -3790,26 +3876,24 @@ Decay B+
 #
 # f0(980) 3-body modes
 0.000001     f_0 pi+                PHSP;
-0.0000177    f_0 K+                 PHSP;
+0.0000092    f_0 K+                 PHSP;
 0.000001     a_0+ K0                PHSP;
 0.000001     a_00 K+                PHSP;
 0.000001     a_00 pi+               PHSP;
 0.000001     a_0+ pi0               PHSP;
 
-0.0000082 f_2 pi+                   PHSP;
+0.000001600 f_2     pi+                                     PHSP; #[Reconstructed PDG2011]
 
 #
-# K*0(1430) 3-body modes 
-0.000047     K_0*0 pi+              PHSP;
-0.000002     anti-K_0*0 K+          PHSP;
-0.000047     K_0*+ pi0              PHSP;
+# K*0(892) 3-body modes
+0.000045000 K_0*0   pi+                                     PHSP; #[Reconstructed PDG2011]
+0.0000010     anti-K_0*0 K+          PHSP;
+0.000002     K_0*+ pi0              PHSP;
 0.000002     K_0*+ anti-K0          PHSP;
 #
-# K*(892) 3-body modes
-0.0000109    K*0 pi+               SVS;        
-0.0000069    K*+ pi0                SVS;
+# K*+(892) 3-body modes
+0.000006900 K*+     pi0                                     SVS; #[Reconstructed PDG2011]
 0.000003     K*+ anti-K0            SVS;
-
 #
 #
 # Non-resonant 3-body left-overs
@@ -3818,16 +3902,16 @@ Decay B+
 # pi+pi-pi+: high mass + f0(400-1200) = (1+1)e-6
 #0402270.000002     pi+ pi- pi+            PHSP;
 #
-# K+ pi- pi+:total-K*pi  
-0.0000100    K+ pi- pi+             PHSP;
+# K+ pi- pi+: high mass + f0(400-1200) = (5+5)e-6
+0.000000000 K+      pi-     pi+                             PHSP; #[Reconstructed PDG2011]
 #
-# K+ K- pi+: just non resonant  
-0.000001     K+ K- pi+              PHSP;
+# K+ K- pi+: just non-resonant
+0.000005000 K+      K-      pi+                             PHSP; #[Reconstructed PDG2011]
+#
+# K+K-K+: high mass structure near 1500 + non-res: total - phiK = 30-4
+0.000025400 K+      K-      K+                              PHSP; #[Reconstructed PDG2011]
 #
-# K+K-K+: high mass structure near 1500 + non-res: total - phiK = 
-0.0000296    K+ K- K+               PHSP;
 #
-# 
 # K+K+pi-: suppressed mode (1e-7)
 0.0000001    K+ K+ pi-              PHSP;
 # K-pi+pi+: suppressed mode (1e-7)
@@ -3844,14 +3928,14 @@ Decay B+
 0.000001     pi+ K0 eta             PHSP;
 0.000001     pi+ K0 eta'            PHSP;
 #
-# pi+ pi0 pi0          
+# pi+ pi0 pi0
 #0402270.000001     pi+ pi0 pi0            PHSP;
 0.000001     pi+ pi0 eta            PHSP;
 0.000001     pi+ pi0 eta'           PHSP;
 0.000001     pi+ eta eta            PHSP;
 0.000001     pi+ eta eta'           PHSP;
 #
-# K+ pi0 pi0 
+# K+ pi0 pi0
 0.000001     K+ pi0 pi0             PHSP;
 0.000001     K+ pi0 eta             PHSP;
 0.000001     K+ pi0 eta'            PHSP;
@@ -3859,9 +3943,8 @@ Decay B+
 0.000001     K+ eta eta'            PHSP;
 0.000001     K+ eta' eta'           PHSP;
 #
-#
 # K+ K0 anti-K0:  4*BF(K+KsKs) (4 is a guess)
-0.000046     K+ K0 anti-K0          PHSP;
+0.0000460     K+ K0 anti-K0          PHSP;
 #
 # pi+ K0 anti-K0
 0.000001     pi+ K0 anti-K0         PHSP;
@@ -3871,8 +3954,9 @@ Decay B+
 #---------------------------------------------------------------------------
 #
 #4-body modes from Andrei Gritsan
-#--- 4-body rho-rho, a1-pi, rho-pi-pi, pi-pi-pi-pi --------------------------
-0.000018  rho+  rho0             SVV_HELAMP 1.0 0.0 1.7 0.0 1.0 0.0;
+#--- 4-body rho-rho, rho-pi-pi, pi-pi-pi-pi --------------------------
+# PR LHCb 22 Apr 2004 Set long. pol. for rho rho
+0.000024000 rho+    rho0                                    SVV_HELAMP 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
 0.000010  rho0 pi+ pi0           PHSP;
 0.000005  rho0 pi+ eta           PHSP;
 0.000002  rho0 pi+ eta'          PHSP;
@@ -3880,6 +3964,8 @@ Decay B+
 0.000005  omega pi+ eta          PHSP;
 0.000002  omega pi+ eta'         PHSP;
 0.000010  rho+ pi+ pi-           PHSP;
+# PR Add rho- pi+ pi+
+0.000010  rho- pi+ pi+           PHSP;
 0.000010  rho+ pi0 pi0           PHSP;
 0.000005  rho+ pi0 eta           PHSP;
 0.000002  rho+ eta eta           PHSP;
@@ -3892,11 +3978,11 @@ Decay B+
 0.000002  pi+ eta eta pi0        PHSP;
 0.000002  pi+ eta' pi0 pi0       PHSP;
 0.000001  pi+ eta' eta pi0       PHSP;
-0.0000204 a_10  pi+              SVS;
-0.0000264 a_1+  pi0              SVS;
-0.0000067 b_10  pi+              SVS;
-0.000001  b_1+  pi0              SVS;
-0.0000020  rho+ f_0               SVS; 
+0.000020000 a_10    pi+                                     SVS; #[Reconstructed PDG2011]
+0.000026000 a_1+    pi0                                     SVS; #[Reconstructed PDG2011]
+0.0000067  b_10  pi+              SVS;
+0.000010  b_1+  pi0              SVS;
+0.000010  rho+ f_0               SVS;
 0.000010  rho+ a_00              SVS;
 0.000002  rho0 a_0+              SVS;
 0.000010  f_0 pi+ pi0            PHSP;
@@ -3904,11 +3990,11 @@ Decay B+
 0.000001  a_0+ pi0 pi0           PHSP;
 0.000001  a_0- pi+ pi+           PHSP;
 #--- 4-body rho-K*, a1-K, rho-pi-K, K*-pi-pi, pi-pi-pi-K -------------------
-0.0000092 rho+  K*0              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
-0.000005  rho0  K*+              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000009200 rho+    K*0                                     SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000010  rho0  K*+              SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
 0.000010  pi+ pi0 K*0            PHSP;
 0.000005  pi+ eta K*0            PHSP;
-0.000067  pi- pi+ K*+            PHSP;
+0.000069800 pi-     pi+     K*+                             PHSP; #[Reconstructed PDG2011]
 0.000010  pi0 pi0 K*+            PHSP;
 0.000005  pi0 eta K*+            PHSP;
 0.000002  eta eta K*+            PHSP;
@@ -3939,14 +4025,14 @@ Decay B+
 0.000002  pi0 pi0 eta' K+        PHSP;
 0.000001  pi0 eta eta' K+        PHSP;
 0.000010  rho+ K_0*0             PHSP;
-0.000010  rho0 K_0*+             PHSP;
+0.000006  rho0 K_0*+             PHSP;
 0.000010  pi+ pi0 K_0*0          PHSP;
 0.000010  pi0 pi0 K_0*+          PHSP;
-0.0000052 K*+ f_0                SVS; 
+0.000005200 K*+     f_0                                     SVS; #[Reconstructed PDG2011]
 0.000010  a_10 K+                SVS;
-0.0000349 a_1+ K0                SVS;
-0.0000091 b_10 K+                SVS;
-0.000013  b_1+ K0                SVS;
+0.000035000 a_1+    K0                                      SVS; #[Reconstructed PDG2011]
+0.0000091  b_10 K+                SVS;
+0.000010  b_1+ K0                SVS;
 0.000005  K*+ a_00               SVS;
 0.000005  K*0 a_0+               SVS;
 #--- 4-body K*-K*, rho-K-K, K*-K-pi, phi-pi-pi, pi-pi-K-K ------------
@@ -3965,11 +4051,10 @@ Decay B+
 0.000001  K0 anti-K0 pi+ pi0     PHSP;
 0.0000005 K0 anti-K0 pi+ eta     PHSP;
 0.0000002 K0 anti-K0 pi+ eta'    PHSP;
-0.000001  K0 K- pi+ pi+          PHSP;# 2007 added the CC to B- 
 0.000001  anti-K0 K+ pi+ pi-     PHSP;
-0.00000025 anti-K0 K+ pi0 pi0     PHSP;
+0.00000 anti-K0 K+ pi0 pi0     PHSP;
 0.0000005 anti-K0 K+ pi0 eta     PHSP;
-0.00000025 anti-K0 K+ eta eta          PHSP;#added 2007 
+0.0000002 anti-K0 K+ eta eta     PHSP;
 0.0000002 anti-K0 K+ pi0 eta'    PHSP;
 0.0000001 anti-K0 K+ eta eta'    PHSP;
 0.000001  K*+ K- pi+             PHSP;
@@ -3983,12 +4068,12 @@ Decay B+
 0.0000005 K*+ anti-K0 eta        PHSP;
 0.0000002 K*+ anti-K0 eta'       PHSP;
 #--- 4-body phi-K*, phi-K-pi, K-K-K*, pi-K-K-K -----------------------
-0.0000096 phi K*+                SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0;
+0.000010000 phi     K*+                                     SVV_HELAMP  1.0 0.0 1.7 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.000010  phi K0 pi+             PHSP;
 0.000010  phi K+ pi0             PHSP;
 0.000005  phi K+ eta             PHSP;
 0.000002  phi K+ eta'            PHSP;
-0.000031  K- K+ K*+              PHSP; #total -phiK*
+0.000026000 K-      K+      K*+                             PHSP; #[Reconstructed PDG2011]
 0.000010  K+ K*- K+              PHSP;
 0.000010  K+ K*0 anti-K0         PHSP;
 0.000010  K+ K0 anti-K*0         PHSP;
@@ -4001,12 +4086,11 @@ Decay B+
 0.000005  K0 anti-K0 K+ eta      PHSP;
 0.000002  K0 anti-K0 K+ eta'     PHSP;
 0.000010  K0 anti-K0 K0 pi+      PHSP;
-0.000010  phi   K_0*+            PHSP;
+0.000007000 phi     K_0*+                                   PHSP; #[Reconstructed PDG2011]
 0.000010  K- K+ K_0*+            PHSP;
 0.000010  K+ K+ K_0*-            PHSP;
-
-0.000010  K+ K_0*0 anti-K0       PHSP;
 0.000010  K+ anti-K_0*0 K0       PHSP;
+0.000010  K+ K_0*0 anti-K0       PHSP;
 0.000002  phi   K'_1+            PHSP;
 0.000002  K- K+ K'_1+            PHSP;
 #--- 4-body phi-phi, phi-K-K, K-K-K-K --------------------------------
@@ -4142,7 +4226,6 @@ Decay B+
 0.000010  rho0 K_0*+ pi0         PHSP;
 0.000005  rho0 K_0*+ eta         PHSP;
 0.000002  rho0 K_0*+ eta'        PHSP;
-0.000010  rho- K_0*+ pi+         PHSP; #2007 added the CC to B- 
 0.000010  pi+ pi+ K_0*0 pi-      PHSP;
 0.000010  pi+ pi0 K_0*0 pi0      PHSP;
 0.000005  pi+ pi0 K_0*0 eta      PHSP;
@@ -4162,7 +4245,7 @@ Decay B+
 0.000010  a_1+ K0 pi0            PHSP;
 0.000005  K*+ a_00 pi0           PHSP;
 0.000005  K*0 a_0+ pi0           PHSP;
-#--- 5-body K*-K*pi,rho-K-Kpi, K*-K-2pi, phi-3pi, 3pi-K-K ------------ 
+#--- 5-body K*-K*pi,rho-K-Kpi, K*-K-2pi, phi-3pi, 3pi-K-K ------------
 0.000001  K*0 anti-K*0 pi+       PHSP;
 0.000001  anti-K*0 K*+ pi0       PHSP;
 0.0000005 anti-K*0 K*+ eta       PHSP;
@@ -4177,9 +4260,8 @@ Decay B+
 0.000001  phi pi+ pi0 pi0        PHSP;
 0.0000005 phi pi+ eta pi0        PHSP;
 0.0000002 phi pi+ eta' pi0       PHSP;
-
-0.000001  anti-K0 K+ rho- pi+    PHSP;
 0.000001  anti-K0 K+ rho+ pi-    PHSP;
+0.000001  anti-K0 K+ rho- pi+    PHSP;
 0.000001  anti-K0 K+ rho0 pi0    PHSP;
 0.0000005 anti-K0 K+ rho0 eta    PHSP;
 0.0000002 anti-K0 K+ rho0 eta'   PHSP;
@@ -4197,7 +4279,6 @@ Decay B+
 0.0000005 K0 anti-K0 rho+ eta    PHSP;
 0.0000002 K0 anti-K0 rho+ eta'   PHSP;
 0.000001  K0 K- rho+ pi+         PHSP;
-
 0.0000002 K0 K- pi+ pi+ pi0      PHSP;
 0.0000001 K0 K- pi+ pi+ eta      PHSP;
 0.0000001 K0 K- pi+ pi+ eta'     PHSP;
@@ -4219,16 +4300,15 @@ Decay B+
 0.000001  K*- K0 pi+ pi+         PHSP;
 0.000001  K*+ K- pi+ pi0         PHSP;
 0.000001  K*- K+ pi+ pi0         PHSP;
-0.000001  K0 anti-K*0 pi+ pi0    PHSP;
 0.000001  K*0 anti-K0 pi+ pi0    PHSP;
-
+0.000001  K0 anti-K*0 pi+ pi0    PHSP;
 0.000001  K+ anti-K*0 pi0 pi0    PHSP;
 0.0000005 K+ anti-K*0 eta pi0    PHSP;
 0.0000002 K+ anti-K*0 eta' pi0   PHSP;
 0.000001  K*+ anti-K0 pi0 pi0    PHSP;
 0.0000005 K*+ anti-K0 eta pi0    PHSP;
 0.0000002 K*+ anti-K0 eta' pi0   PHSP;
-#--- 5-body phi-K*-pi, phi-K-2pi, K-K-K*-pi, 2pi-K-K-K -------------------- 
+#--- 5-body phi-K*-pi, phi-K-2pi, K-K-K*-pi, 2pi-K-K-K --------------------
 0.000010  phi K*+ pi0            PHSP;
 0.000010  phi K+ rho0            PHSP;
 0.000010  phi K+ omega           PHSP;
@@ -4269,13 +4349,12 @@ Decay B+
 0.000010  K- K+ K_0*0 pi+        PHSP;
 0.000010  K+ K+ anti-K_0*0 pi-   PHSP;
 0.000010  K0 K0 anti-K_0*0 pi+   PHSP;
-
-0.000010  K+ K_0*0 anti-K0 pi0   PHSP;
-0.000005  K+ K_0*0 anti-K0 eta   PHSP;
-0.000002  K+ K_0*0 anti-K0 eta'  PHSP;
 0.000010  K+ anti-K_0*0 K0 pi0   PHSP;
 0.000005  K+ anti-K_0*0 K0 eta   PHSP;
 0.000002  K+ anti-K_0*0 K0 eta'  PHSP;
+0.000010  K+ K_0*0 anti-K0 pi0   PHSP;
+0.000005  K+ K_0*0 anti-K0 eta   PHSP;
+0.000002  K+ K_0*0 anti-K0 eta'  PHSP;
 0.000002  phi   K'_10 pi+        PHSP;
 0.000002  phi   K'_1+ pi0        PHSP;
 0.000001  phi   K'_1+ eta        PHSP;
@@ -4285,7 +4364,7 @@ Decay B+
 0.000001  K- K+ K'_1+ eta        PHSP;
 0.000001  K- K+ K'_1+ eta'       PHSP;
 0.000002  K+ K+ K'_1- pi0        PHSP;
-0.000002  K+ K+ anti-K'_10 pi-   PHSP;# check CC
+0.000002  K+ K+ anti-K'_10 pi-   PHSP;
 0.000002  K0 anti-K0 K'_10 pi+   PHSP;
 0.000002  K0 anti-K0 K'_1+ pi0   PHSP;
 0.000001  K0 anti-K0 K'_1+ eta   PHSP;
@@ -4301,7 +4380,7 @@ Decay B+
 0.000005  K+ K'_10 anti-K0 eta   PHSP;
 0.000002  K+ K'_10 anti-K0 eta'  PHSP;
 #--- 5-body phi-phi-K, phi-phi-pi, phi-3K, phi-K-K-pi, 5K, 4K-pi ------------
-0.0000049  phi phi K+             PHSP; 
+0.000004900 phi     phi     K+                              PHSP; #[Reconstructed PDG2011]
 0.000001  phi phi pi+            PHSP;
 0.000001  phi K+ K- K+           PHSP;
 0.000001  phi K0 anti-K0 K+      PHSP;
@@ -4311,11 +4390,11 @@ Decay B+
 0.000001  K+ K- K0 anti-K0 pi+   PHSP;
 0.000001  K+ K- K+ anti-K0 pi0   PHSP;
 0.000001  K0 anti-K0 anti-K0 K+ pi0 PHSP;
-#--- 6-body phi-phi-K*, phi-3Kpi, phi-K-K-2pi ------------     
+#--- 6-body phi-phi-K*, phi-3Kpi, phi-K-K-2pi ------------
 0.000003  phi phi K*+            PHSP;
 0.000001  phi K+ K- K*+          PHSP;
 0.000001  phi K0 anti-K0 K*+     PHSP;
-0.000001  phi anti-K0 K+ K*0     PHSP; 
+0.000001  phi anti-K0 K+ K*0     PHSP;
 0.000001  phi K+ K- K+ pi0       PHSP;
 0.000001  phi K+ K- K0 pi+       PHSP;
 0.000001  phi K0 anti-K0 K+ pi0  PHSP;
@@ -4324,40 +4403,40 @@ Decay B+
 #--- 6-body a1a1 ------------
 0.000050  a_1+  a_10             PHSP;
 #
-#   B -> cc= s          sum = 1.92% done
+#   B -> cc= s          sum = 1.92%
 #
-0.001007   J/psi K+                         SVS;
-0.00141   J/psi K*+                        SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.000049  J/psi pi+                         SVS;
-0.00006   J/psi rho+                      SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.001014000 J/psi   K+                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi+                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho+                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
 0.0002   J/psi K0  pi+                    PHSP;
 0.0001   J/psi K+  pi0                    PHSP;
 #rl0.0007   J/psi K+  pi-  pi+               PHSP;
 #rl0.00035   J/psi K+  pi0  pi0               PHSP;
 #rl0.00035   J/psi K0  pi+  pi0               PHSP;
-0.0018     J/psi  K_1+                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0001   J/psi K'_1+                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005   J/psi K_2*+                       PHSP;
-0.000052    J/psi  phi K+        PHSP;
+0.001800000 J/psi   K_1+                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K+                              PHSP; #[Reconstructed PDG2011]
 #
-0.000648  psi(2S) K+                        SVS;
-0.00067  psi(2S) K*+                       SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000646000 psi(2S) K+                                      SVS; #[Reconstructed PDG2011]
+0.000620000 psi(2S) K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
 0.0004   psi(2S) K0  pi+                   PHSP;
 0.0002   psi(2S) K+  pi0                   PHSP;
-0.0019   psi(2S) K+  pi-  pi+              PHSP;
+0.001900000 psi(2S) K+      pi-     pi+                     PHSP; #[Reconstructed PDG2011]
 0.0001   psi(2S) K+  pi0  pi0              PHSP;
 0.0001   psi(2S) K0  pi+  pi0              PHSP;
 0.0004   psi(2S)  K_1+                     PHSP;
 #
-0.00091   eta_c  K+                      PHSP;
-0.0012    K*+   eta_c                    SVS;
+0.000910000 eta_c   K+                                      PHSP; #[Reconstructed PDG2011]
+0.001200000 K*+     eta_c                                   SVS; #[Reconstructed PDG2011]
 0.0002    eta_c  K0  pi+                 PHSP;
 0.0001    eta_c  K+  pi0                 PHSP;
 0.0002    eta_c  K+  pi-  pi+            PHSP;
 0.0001    eta_c  K+  pi0  pi0            PHSP;
 0.0001    eta_c  K0  pi+  pi0            PHSP;
 #
-0.00034    eta_c(2S) K+                      PHSP;
+0.000340000 eta_c(2S) K+                                    PHSP; #[Reconstructed PDG2011]
 0.00048    K*+  eta_c(2S)                      SVS;
 0.00008    eta_c(2S)    K0  pi+                 PHSP;
 0.00005    eta_c(2S)    K+  pi0                 PHSP;
@@ -4365,7 +4444,7 @@ Decay B+
 0.00005    eta_c(2S)    K+  pi0  pi0            PHSP;
 0.00005    eta_c(2S)    K0  pi+  pi0            PHSP;
 #
-0.00014   chi_c0  K+                      PHSP;
+0.000133000 chi_c0  K+                                      PHSP; #[Reconstructed PDG2011]
 0.0004    K*+   chi_c0                    SVS;
 0.0002    chi_c0  K0  pi+                 PHSP;
 0.0001    chi_c0  K+  pi0                 PHSP;
@@ -4373,8 +4452,8 @@ Decay B+
 0.0001    chi_c0  K+  pi0  pi0            PHSP;
 0.0001    chi_c0  K0  pi+  pi0            PHSP;
 #
-0.00049    chi_c1  K+                      SVS;
-0.00036    chi_c1  K*+                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000460000 chi_c1  K+                                      SVS; #[Reconstructed PDG2011]
+0.000300000 chi_c1  K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
 0.0004    chi_c1  K0  pi+                 PHSP;
 0.0002    chi_c1  K+  pi0                 PHSP;
 0.0004    chi_c1  K+  pi-  pi+            PHSP;
@@ -4382,14 +4461,14 @@ Decay B+
 0.0002    chi_c1  K0  pi+  pi0            PHSP;
 #
 0.00002    chi_c2  K+                      STS;
-0.00001    chi_c2  K*+                     PHSP;
+0.00002    chi_c2  K*+                     PHSP;
 0.0002    chi_c2  K0  pi+                 PHSP;
 0.0001    chi_c2  K+  pi0                 PHSP;
 0.0002    chi_c2  K+  pi-  pi+            PHSP;
 0.0001    chi_c2  K+  pi0  pi0            PHSP;
 0.0001    chi_c2  K0  pi+  pi0            PHSP;
 #
-0.00049   psi(3770) K+                    SVS;   
+0.000490000 psi(3770) K+                                    SVS; #[Reconstructed PDG2011]
 0.0005    psi(3770) K*+                   PHSP;
 0.0003    psi(3770) K0   pi+              PHSP;
 0.0002    psi(3770) K+  pi0               PHSP;
@@ -4398,12 +4477,12 @@ Decay B+
 0.0001    psi(3770) K0   pi+  pi0         PHSP;
 0.0003    psi(3770) K_1+                  PHSP;
 #
-#   b -> c (sc=) -> D Ds X    
+#   b -> c (sc=) -> D Ds X    Sum = 10%
 #
-0.0100    anti-D0  D_s+                      PHSP;
-0.0082    anti-D*0  D_s+                      SVS;
-0.0076    D_s*+ anti-D0                      SVS;
-0.0171    D_s*+ anti-D*0               SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0;
+0.010000000 anti-D0 D_s+                                    PHSP; #[Reconstructed PDG2011]
+0.008200000 anti-D*0 D_s+                                   SVS; #[Reconstructed PDG2011]
+0.007600000 D_s*+   anti-D0                                 SVS; #[Reconstructed PDG2011]
+0.017100000 D_s*+   anti-D*0                                SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0; #[Reconstructed PDG2011]
 0.0006   anti-D'_10  D_s+                     SVS;
 0.0012   anti-D'_10  D_s*+                    SVV_HELAMP 0.48 0.0 0.734 0.0 0.48 0.0;
 0.0012   anti-D_10  D_s+                      SVS;
@@ -4412,6 +4491,9 @@ Decay B+
 0.0040   anti-D_2*0  D_s*+                    PHSP;
 #
 #
+#
+#
+#
 0.0036    D_s+  D-  pi+                  PHSP;
 0.0018    D_s+  anti-D0 pi0                  PHSP;
 0.0037    D_s*+ D-  pi+                  PHSP;
@@ -4427,20 +4509,21 @@ Decay B+
 # update: Ref. [B1]:
 # update October 26, 2004
 # External W-emission amplitude
-0.0017   anti-D0  D+  K0                    PHSP; 
-0.0052   anti-D0  D*+  K0                   PHSP; 
-0.0031   anti-D*0  D+  K0                   PHSP; 
-0.0078   anti-D*0  D*+  K0                  PHSP;
+0.0017   anti-D0  D+  K0                    PHSP;
+0.0052   anti-D0  D*+  K0                   PHSP;
+0.0031   anti-D*0  D+  K0                   PHSP;
+0.007800000 anti-D*0 D*+     K0                             PHSP; #[Reconstructed PDG2011]
 # External+internal W-emission amplitude
-0.00137  anti-D0  D0  K+                    PHSP; 
+0.002100000 anti-D0 D0      K+                              PHSP; #[Reconstructed PDG2011]
 0.0018   anti-D*0  D0  K+                   PHSP;
-0.0047   anti-D0  D*0  K+                   PHSP; 
-0.0053   anti-D*0  D*0  K+                  PHSP; 
+0.004700000 anti-D0 D*0     K+                              PHSP; #[Reconstructed PDG2011]
+0.005300000 anti-D*0 D*0     K+                             PHSP; #[Reconstructed PDG2011]
 # Internal W-emission amplitude (color suppressed modes)
-0.0003    D+  D-  K+                        PHSP; 
+0.0005    D+  D-  K+                        PHSP;
 0.0005    D*+  D-  K+                       PHSP;
-0.0015    D+  D*-  K+                       PHSP;
-0.0015    D*+  D*-  K+                      PHSP; 
+0.001500000 D+      D*-     K+                              PHSP; #[Reconstructed PDG2011]
+0.0015    D*+  D*-  K+                      PHSP;
+#
 0.0025   anti-D0  D+  K*0                   PHSP;
 0.0025   anti-D*0  D+  K*0                  PHSP;
 0.0025   anti-D0  D*+  K*0                  PHSP;
@@ -4455,110 +4538,176 @@ Decay B+
 0.0005   D*+  D-  K*+                       PHSP;
 0.0005   D+  D*-  K*+                       PHSP;
 0.0010   D*+  D*-  K*+                      PHSP;
-
 #
 # B->D(*)D(*). See Ref [B1]:
 #
-0.00042     D+   anti-D0               PHSP;
-0.00039     D*+  anti-D0               SVS;
-0.00063     anti-D*0  D+               SVS;
-0.00081     anti-D*0  D*+              SVV_HELAMP 0.56 0.0 0.96 0.0 0.47 0.0;
+0.000380000 D+      anti-D0                                 PHSP; #[Reconstructed PDG2011]
+0.000390000 D*+     anti-D0                                 SVS; #[Reconstructed PDG2011]
+0.000630000 anti-D*0 D+                                     SVS; #[Reconstructed PDG2011]
+0.000810000 anti-D*0 D*+                                    SVV_HELAMP 0.56 0.0 0.96 0.0 0.47 0.0; #[Reconstructed PDG2011]
 
 #
 #  B -> D(*) X  Exclusive Modes
 # October 26, 2004 Lange update
-0.00519  anti-D*0  pi+                       SVS;
-0.00484  anti-D0  pi+                        PHSP;
-0.0134   rho+  anti-D0                       SVS;
+0.005190000 anti-D*0 pi+                                    SVS; #[Reconstructed PDG2011]
+0.004840000 anti-D0 pi+                                     PHSP; #[Reconstructed PDG2011]
+0.013400000 rho+    anti-D0                                 SVS; #[Reconstructed PDG2011]
 # D* rho HELAMP parameters taken from ICHEP 98-852.
-0.0098   anti-D*0  rho+              SVV_HELAMP 0.283 1.13 0.932 0.0 0.228 0.95;
+0.009800000 anti-D*0 rho+                                   SVV_HELAMP 0.283 1.13 0.932 0.0 0.228 0.95; #[Reconstructed PDG2011]
 #
 0.0005   anti-D0  pi0  pi+                   PHSP;
 0.0005   anti-D*0  pi0  pi+                  PHSP;
-0.00102   D-   pi+  pi+                  PHSP;
-0.00125   D*-  pi+  pi+                  PHSP;
+0.001070000 D-      pi+     pi+                             PHSP; #[Reconstructed PDG2011]
+0.001350000 D*-     pi+     pi+                             PHSP; #[Reconstructed PDG2011]
 #
-# D a1 updated Ref. [B1]: 
-0.00887  a_1+ anti-D0                        SVS;#old result in PDG (4+4)*10^-3 
-0.0021   anti-D0 rho0 pi+                   PHSP;#old result in PDG (4.2+3)*10^-3 
-0.0050   anti-D0 pi-  pi+  pi+              PHSP;
+# D a1 updated Ref. [B1]:
+0.004000000 a_1+    anti-D0                                 SVS; #[Reconstructed PDG2011]
+0.000200000 anti-D0 rho0    pi+                             PHSP; #[Reconstructed PDG2011]
+0.006800000 anti-D0 pi-     pi+     pi+                     PHSP; #[Reconstructed PDG2011]
 #
 # SVV_HELAMP from factorization, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/168.html:
 # updated Ref. [B1]:
 # October 26, 2004 Lange update
 #
-0.01900  anti-D*0 a_1+               SVV_HELAMP 0.458 0.0 0.866 0.0 0.200 0.0;
+0.019000000 anti-D*0 a_1+                                   SVV_HELAMP 0.458 0.0 0.866 0.0 0.200 0.0; #[Reconstructed PDG2011]
 #
-0.0005   anti-D*0 rho0 pi+                   PHSP; #unmeasured in PDG stil used to calculate  next decay
-0.00045  anti-D*0 pi-  pi+  pi+              PHSP;#total- antiD*0a_1- antiD* rho pi 
+0.00042   anti-D*0 rho0 pi+                   PHSP;
+0.010300000 anti-D*0 pi-     pi+     pi+                    PHSP; #[Reconstructed PDG2011]
 #
 0.0020   D-  rho+  pi+                  PHSP;
 0.0020   D-  pi0   pi+  pi+             PHSP;
 0.0020   D*- rho+  pi+                  PHSP;
-0.0150   D*- pi0   pi+  pi+             PHSP; 
+0.015000000 D*-     pi0     pi+     pi+                     PHSP; #[Reconstructed PDG2011]
 0.0005   anti-D*0 rho+  pi0                  PHSP;
 0.0005   anti-D*0 pi+   pi0  pi0             PHSP;
 #
 # B->D** pi and D** rho, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/151.html
 #
-0.0013   anti-D_10 pi+                       SVS;
-0.00075   anti-D'_10 pi+                      SVS;
-0.00086   anti-D_2*0 pi+                      STS;
-0.00091 anti-D_0*0 pi+                        PHSP;
+#
+0.000876   anti-D_10 pi+                       SVS;
+0.0005   anti-D'_10 pi+                      SVS;
+0.00052   anti-D_2*0 pi+                      STS;
 0.0007   anti-D_10 rho+                      PHSP;
 0.0022   anti-D'_10 rho+                    PHSP;
 0.0038   anti-D_2*0 rho+                    PHSP;
+0.00061 anti-D_0*0 pi+                        PHSP;
 #
 #
-# B->DK, recommendation 
+# B->DK, recommendation
 # http://babar-hn.slac.stanford.edu:5090/HyperNews/get/event_gen/151.html:
 # update: Ref [B1]:
 #
-0.000402 anti-D0  K+                   PHSP;
-0.000416 anti-D*0 K+                   SVS;
-0.00053  K*+ anti-D0                   SVS;
-0.00081  anti-D*0 K*+                  SVV_HELAMP 0.283 0.0 0.932 0.0 0.228 0.0;
+0.000368000 anti-D0 K+                                      PHSP; #[Reconstructed PDG2011]
+0.000421000 anti-D*0 K+                                     SVS; #[Reconstructed PDG2011]
+0.000530000 K*+     anti-D0                                 SVS; #[Reconstructed PDG2011]
+0.000810000 anti-D*0 K*+                                    SVV_HELAMP 0.283 0.0 0.932 0.0 0.228 0.0; #[Reconstructed PDG2011]
 #October 26, 2004 Lange
-0.00000054 D+ pi0  PHSP;
-0.00000054 D*+ pi0  SVS;
-0.0000004 D+ K0 PHSP; #2007 changed anti- KO to K0 
-0.0000006 D*+ K0 SVS;#2007 changed anti- KO to K0 
+0.0000005 D+ pi0  PHSP;
+0.0000005 D*+ pi0  SVS;
+0.000011 D+ anti-K0 PHSP;
+0.000006 D*+ anti-K0 SVS;
 #
 #October 26, 2004 - Lange
-#changed 2007 
-0.00073 anti-D0 D_s0*+ PHSP; 
-0.0009 anti-D*0 D_s0*+  SVS;
-0.0031 D_s1+ anti-D0 SVS;
-0.012  anti-D*0 D_s1+ SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0;
-#
-0.020        anti-cd_1       uu_1         PYTHIA 22;
-0.012        anti-cd_1       uu_1         PYTHIA 23;
-0.003        anti-cs_1       uu_1         PYTHIA 23;
-0.005        anti-cs_0       cu_0         PYTHIA 22;
-0.010        anti-cs_1       cu_1         PYTHIA 22;
-0.001        anti-cs_0       cu_0         PYTHIA 23;
-0.002        anti-cs_1       cu_1         PYTHIA 23;
-#
-0.214266        u       anti-d  anti-c          u       PYTHIA         48;
-0.04300         u       anti-d  anti-c          u       PYTHIA         13;
-0.02250         u       anti-s  anti-c          u       PYTHIA         13;
+0.00075 anti-D0 D_s0*+ PHSP;
+0.00090 anti-D*0 D_s0*+  SVS;
+0.003100000 D_s1+   anti-D0                                 SVS; #[Reconstructed PDG2011]
+0.012000000 anti-D*0 D_s1+                                  SVV_HELAMP 0.4904 0.0 0.7204 0.0 0.4904 0.0; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.000550000 anti-D0 K+      anti-K0                         PHSP; #[Reconstructed PDG2011]
+0.000750000 anti-D0 K+      anti-K*0                        PHSP; #[Reconstructed PDG2011]
+0.00150 anti-D*0 K+ anti-K*0  PHSP;
+#
+# Feb 2009
+#
+0.002750000 anti-D0 omega   pi+                             PHSP; #[Reconstructed PDG2011]
+0.004500000 anti-D*0 omega   pi+                            PHSP; #[Reconstructed PDG2011]
+#
+# Feb 2009
+#
+0.00045 anti-D0 D'_s1+  PHSP;
+0.00094 anti-D*0 D'_s1+  PHSP;
+#
+#  Lam_c X  / Sigma_c X
+#
+#0.04000       anti-cd_1       uu_1         PYTHIA 23;
+0.032572352 anti-cd_1 uu_1                                  PYTHIA 23; #[Reconstructed PDG2011]
+#
+#  Xi_c X     2.4%
+#
+#0.02400       anti-cs_1       uu_1         PYTHIA 23;
+0.008883411 anti-cs_1 uu_1                                  PYTHIA 23; #[Reconstructed PDG2011]
+#
+#
+0.222347008 u       anti-d  anti-c  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.042442798 u       anti-d  anti-c  u                       PYTHIA         13; #[Reconstructed PDG2011]
+0.022208435 u       anti-s  anti-c  u                       PYTHIA         13; #[Reconstructed PDG2011]
 #lange - try to crank up the psi production....
-0.07400         c       anti-s  anti-c          u       PYTHIA         13;
-0.00400         c       anti-d  anti-c          u       PYTHIA         13;
-0.00300         u       anti-d  anti-u          u       PYTHIA         48;
-0.00400         c       anti-s  anti-u          u       PYTHIA         48;
+0.073041080 c       anti-s  anti-c  u                       PYTHIA         13; #[Reconstructed PDG2011]
+0.003948141 c       anti-d  anti-c  u                       PYTHIA         13; #[Reconstructed PDG2011]
+0.002961106 u       anti-d  anti-u  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.003948141 c       anti-s  anti-u  u                       PYTHIA         48; #[Reconstructed PDG2011]
 # JGS 11/5/02 This and similar a few lines above have been divided by two
-# to solve a double-counting problem for this channel 
-0.00205         u     anti-u  anti-d       u       PYTHIA         48;
-0.00007         d     anti-d  anti-d       u       PYTHIA         48;
-0.00009         s     anti-s  anti-d       u       PYTHIA         48;
-0.00220         u     anti-u  anti-s       u       PYTHIA         48;
-0.00180         d     anti-d  anti-s       u       PYTHIA         48;
-0.00150         s     anti-s  anti-s       u       PYTHIA         48;
-0.00500               anti-s  g            u       PYTHIA         33;
+# to solve a double-counting problem for this channel
+0.002023436 u       anti-u  anti-d  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.000069112 d       anti-d  anti-d  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.000088858 s       anti-s  anti-d  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.002171534 u       anti-u  anti-s  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.001776701 d       anti-d  anti-s  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.001480600 s       anti-s  anti-s  u                       PYTHIA         48; #[Reconstructed PDG2011]
+0.004935177 anti-s  u                                       PYTHIA         32; #[Reconstructed PDG2011]
 ####
+0.001500000 anti-D*0 K+      K*0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.018000000 anti-D*0 pi-     pi+     pi+     pi0            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.005700000 anti-D*0 pi+     pi+     pi+     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002600000 D*-     pi+     pi+     pi+     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000180000 D_s-    pi+     K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000145000 D_s*-   pi+     K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011000 D_s-    K+      K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001070000 J/psi   K+      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   p+      anti-Lambda0                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000025800 psi(2S) pi+                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 chi_c1  pi+                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000018000 eta     K_0*+                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009100 eta     K_2*+                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000024000 omega   K_0*+                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000021000 omega   K_2*+                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000010100 K*0     pi+                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001070 f_2     K+                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000005600 K_2*0   pi+                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001200 K*+     K*0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000006100 phi     K_1+                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000008400 phi     K_2*+                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000043000 K_1+    gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007900 eta     K+      gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003500 phi     K+      gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007600 K+      pi-     pi+     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 K*0     pi+     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000046000 K0      pi+     pi0     gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000014000 K_2*+   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000980 rho+    gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000001620 p+      anti-p- pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000005900 p+      anti-p- K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003600 p+      anti-p- K*+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002500 p+      anti-Lambda0 gamma                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003000 p+      anti-Lambda0 pi0                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 p+      anti-Lambda0 pi+     pi-                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004800 p+      anti-Lambda0 rho0                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002000 p+      anti-Lambda0 f_2                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000003400 Lambda0 anti-Lambda0 K+                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002200 Lambda0 anti-Lambda0 K*+                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000280000 anti-Lambda_c- p+      pi+                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 anti-Lambda_c- p+      pi+     pi0              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002300000 anti-Lambda_c- p+      pi+     pi+     pi-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000035000 anti-Sigma_c0 p+                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000440000 anti-Sigma_c0 p+      pi0                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000440000 anti-Sigma_c0 p+      pi-     pi+               PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000280000 anti-Sigma_c-- p+      pi+     pi+              PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 
 #-----------------------------------------------------------------
@@ -4585,98 +4734,18 @@ Enddecay
 Decay anti-B*0
 1.0000    anti-B0 gamma                       VSP_PWAVE;
 Enddecay
-
-#  12-May-2004  RJT
-# ----------------------------------------------------------------
-#  Add B** decays assuming isospin invariance for B** with masses
-#  > 1 pion mass above B*.
-# ----------------------------------------------------------------
-Decay B_0*0
-0.3333          B*0    pi0        PHSP;
-0.6667          B*+    pi-        PHSP;
-Enddecay
-
-Decay anti-B_0*0
-0.3333     anti-B*0    pi0        PHSP;
-0.6667          B*-    pi+        PHSP;
-Enddecay
-
-Decay B_0*+
-0.3333          B*+    pi0        PHSP;
-0.6667          B*0    pi+        PHSP;
-Enddecay
-
-Decay B_0*-
-0.3333          B*-    pi0        PHSP;
-0.6667     anti-B*0    pi-        PHSP;
-Enddecay
-
-Decay B_10
-0.3333          B*0    pi0        VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
-0.6667          B*+    pi-        VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
-Enddecay
-
-Decay anti-B_10
-0.3333     anti-B*0    pi0        VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
-0.6667          B*-    pi+        VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
-Enddecay
-
-Decay B_1+
-0.3333          B*+    pi0        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.6667          B*0    pi+        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-Enddecay
-
-Decay B_1-
-0.3333          B*-    pi0        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.6667     anti-B*0    pi-        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-Enddecay
-
-Decay B'_10
-0.3333          B*0    pi0        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-0.6667          B*+    pi-        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-Enddecay
-
-Decay anti-B'_10
-0.3333     anti-B*0    pi0        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-0.6667          B*-    pi+        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-Enddecay
-
-Decay B'_1+
-0.3333          B*+    pi0        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-0.6667          B*0    pi+        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-Enddecay
-
-Decay B'_1-
-0.3333          B*-    pi0        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-0.6667     anti-B*0    pi-        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-Enddecay
-
-Decay B_2*0
-0.3333          B*0    pi0        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
-0.6667          B*+    pi-        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
-Enddecay
-
-Decay anti-B_2*0
-0.3333     anti-B*0    pi0        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
-0.6667          B*-    pi+        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
+Decay B_s*0
+1.0000    B_s0  gamma                      VSP_PWAVE;
 Enddecay
-
-Decay B_2*+
-0.3333         B*+     pi0        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
-0.6667         B*0     pi+        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
+Decay anti-B_s*0
+1.0000    anti-B_s0 gamma                       VSP_PWAVE;
 Enddecay
-
-Decay B_2*-
-0.3333         B*-     pi0        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
-0.6667    anti-B*0     pi-        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
-Enddecay
-
 #
 # B_s decays.
 #
 #
 # To count up the BR for this decay:
-# awk ' /^0./{ sum = sum + 1 ;print sum } ' junk.dec
+# awk ' /^0./{ sum = sum + $1 ;print sum } ' junk.dec
 #
 # anti-B_s decays.
 # -------------------------------------------------------
@@ -4722,50 +4791,49 @@ Decay anti-B_s0
 # fkw 4/28/00 the next few are decays where a u\bar u or d\bar d is popped
 #             between the charm quark and the spectator. I can thus not
 #             just replace a D by a Ds as above when going from Bd to Bs.
-# fkw 5/04/01 Had to take these out because they crash EvtGen. 
+# fkw 5/04/01 Had to take these out because they crash EvtGen.
 #             Will have to fix this eventually !!!
 #0.0010   D*0    K+  tau-   anti-nu_tau          GOITY_ROBERTS;
 #0.0010   D*+    K0  tau-   anti-nu_tau          GOITY_ROBERTS;
 #0.0010   D0     K+  tau-   anti-nu_tau          GOITY_ROBERTS;
 #0.0010   D+     K0  tau-   anti-nu_tau          GOITY_ROBERTS;
 # fkw 4/28/00 B0B -> TAU D PI0 = 1/2 of TAU D PI+ because of pi0 wave function
-#             However, the same factor of 1/2 doesn't apply to BSB !!!  
+#             However, the same factor of 1/2 doesn't apply to BSB !!!
 #
 # fkw 3/28/01 There seem to be no semi-leptonic B to baryon decays in nature.
 #             I don't pretend to understand why. PDG 2000 has a limit of
-#             < 3.2e-3 where one might naively expect 
-#             10% * BR(B->/\c) = 0.1 * (6.4+-1.1)% 
-#0.0050      anti-nu_e        e-          ??? Baryon   
+#             < 3.2e-3 where one might naively expect
+#             10% * BR(B->/\c) = 0.1 * (6.4+-1.1)%
+#0.0050      anti-nu_e        e-          ??? Baryon
 #0.0050      anti-nu_mu       mu-         ??? Baryon
 #
 #                                         b --> c  (s c=)
 #                                         Sum = 11.44%
 #                                           2-body = 4.72%
 #                                        more-body = 6.72%
-0.0086   D_s-      D_s+             PHSP;
-0.0090   D_s*-     D_s+      SVS;#2007 changed BR 
-0.0090   D_s*+     D_s-      SVS;
-
+0.010400000 D_s-    D_s+                                    PHSP; #[Reconstructed PDG2011]
+0.0099   D_s*+     D_s-      SVS;
+0.0099   D_s*-     D_s+      SVS;
 0.0197   D_s*-     D_s*+     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
 # fkw 4/28/00 more states with popped q\bar q.
 #             The one's here involve only popped and spectator.
-#             Popping stuff in the cs from the W comes further below. 
+#             Popping stuff in the cs from the W comes further below.
 #             The same isospin comment applies here as above in the
 #             semi-leptonic decays with tau and popped q\bar q.
-0.0096   D_s-   D+       K0    PHSP;             
-0.0096   D_s-   anti-D0  K+    PHSP;           
-0.0096   D_s*-  D+       K0    PHSP;       
-0.0096   D_s*-  D0       K+    PHSP;     
-#
-0.0024   D_s-   D+    pi0  K0  PHSP;         
-0.0048   D_s-   D0    pi+  K0  PHSP;    
-0.0048   D_s-   D+    pi-  K+  PHSP;    
+0.0096   D_s-   D+       K0    PHSP;
+0.0096   D_s-   anti-D0  K+    PHSP;
+0.0096   D_s*-  D+       K0    PHSP;
+0.0096   D_s*-  D0       K+    PHSP;
+#
+0.0024   D_s-   D+    pi0  K0  PHSP;
+0.0048   D_s-   D0    pi+  K0  PHSP;
+0.0048   D_s-   D+    pi-  K+  PHSP;
 0.0024   D_s-   D0    pi0  K+  PHSP;
 #
-0.0024   D_s*-   D+   pi0  K0  PHSP;       
+0.0024   D_s*-   D+   pi0  K0  PHSP;
 0.0048   D_s*-   D0   pi+  K0  PHSP;
-0.0048   D_s*-   D+   pi-  K+  PHSP;    
+0.0048   D_s*-   D+   pi-  K+  PHSP;
 0.0024   D_s*-   D0   pi0  K+  PHSP;
 #
 #
@@ -4778,62 +4846,62 @@ Decay anti-B_s0
 0.0150    D_s*+   anti-D*0 K-        PHSP;
 0.0150    D_s*+   D*-      anti-K0   PHSP;
 #
-0.0050    D_s*+   anti-D0  K-        PHSP;                 
+0.0050    D_s*+   anti-D0  K-        PHSP;
 0.0050    D_s*+   D-       anti-K0   PHSP;
 #
-0.0050    D_s+    anti-D*0 K-        PHSP;      
+0.0050    D_s+    anti-D*0 K-        PHSP;
 0.0050    D_s+    D*-      anti-K0   PHSP;
 #
-0.0020    D_s+    anti-D0  K-        PHSP;                 
+0.0020    D_s+    anti-D0  K-        PHSP;
 0.0020    D_s+    D-       anti-K0   PHSP;
 #
-0.0030    D_s*+   anti-D*0 K*-       PHSP;           
+0.0030    D_s*+   anti-D*0 K*-       PHSP;
 0.0030    D_s*+   D*-      anti-K*0  PHSP;
 #
-0.0050    D_s*+   anti-D0  K*-       PHSP;           
-0.0050    D_s*+   D-       anti-K*0  PHSP;            
+0.0050    D_s*+   anti-D0  K*-       PHSP;
+0.0050    D_s*+   D-       anti-K*0  PHSP;
 #
-0.0025    D_s+    anti-D*0 K*-       PHSP;             
+0.0025    D_s+    anti-D*0 K*-       PHSP;
 0.0025    D_s+    D*-      anti-K*0  PHSP;
 #
-0.0025    D_s+    anti-D0  K*-       PHSP;       
+0.0025    D_s+    anti-D0  K*-       PHSP;
 0.0025    D_s+    D-       anti-K*0  PHSP;
 #
 #
 #                                        b --> c  (d c=)
 #                                        Sum = 1.0%
-0.0017    D_s-    D+                 PHSP; 
-0.0017    D*+     D_s-               SVS;    
+0.0017    D_s-    D+                 PHSP;
+0.0017    D*+     D_s-               SVS;
 0.0017    D_s*-   D+                 SVS;
 0.0017    D_s*-   D*+                SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
-# fkw 4/38/00 more popping at the lower vertex 
+# fkw 4/38/00 more popping at the lower vertex
 #             but with upper vertex cabbibo suppressed.
-0.0007    D-      D+        K0       PHSP;        
-0.0007    D-      anti-D0   K+       PHSP;    
-0.0007    D*-     D+        K0       PHSP;    
+0.0007    D-      D+        K0       PHSP;
+0.0007    D-      anti-D0   K+       PHSP;
+0.0007    D*-     D+        K0       PHSP;
 0.0007    D*-     D0        K+       PHSP;
 #
-0.0003    D-      D+      pi0   K0   PHSP;         
-0.0007    D-      D0      pi+   K0   PHSP;   
-0.0003    D-      D+      pi-   K+   PHSP;   
+0.0003    D-      D+      pi0   K0   PHSP;
+0.0007    D-      D0      pi+   K0   PHSP;
+0.0003    D-      D+      pi-   K+   PHSP;
 0.0007    D-      D0      pi0   K+   PHSP;
 #
-0.0003    D*-     D+      pi0   K0   PHSP;         
-0.0007    D*-     D0      pi+   K0   PHSP;   
-0.0003    D*-     D+      pi-   K+   PHSP;   
+0.0003    D*-     D+      pi0   K0   PHSP;
+0.0007    D*-     D0      pi+   K0   PHSP;
+0.0003    D*-     D+      pi-   K+   PHSP;
 0.0007    D*-     D0      pi0   K+   PHSP;
 #
 #                                        b --> c  (s u=)
 #                                        exclusive
 #                                        Sum = 0.09%
-0.00015   D_s*+   K-                 SVS;   
-0.00015   D_s+    K-                 PHSP;
+0.00015   D_s*+   K-                 SVS;
+0.000150000 D_s+    K-                                      PHSP; #[Reconstructed PDG2011]
 0.00030   D_s*+   K*-                SVV_HELAMP 0.228 0.0 0.932 0.0 0.0283 0.0;
-0.00030   K*-     D_s+               SVS;   
+0.00030   K*-     D_s+               SVS;
 #
 # fkw 4/28/00 Strategy for charmonium modes:
-# Take Bd BR's, replace spectator, 
+# Take Bd BR's, replace spectator,
 # assume etaprime = 2/3 ss
 # and eta = 1/3 ss
 #
@@ -4846,31 +4914,48 @@ Decay anti-B_s0
 #                                      should be: psi = 0.80%  CLNS 94/1315 but isn't quite right.
 0.00064   J/psi   eta'               SVS;
 0.00032   J/psi   eta                SVS;
-0.00135   J/psi   phi                SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.00008   J/psi   K0                 SVS;
 0.00070   J/psi   K-       K+        PHSP;
 0.00070   J/psi   anti-K0  K0        PHSP;
 0.00070   J/psi   anti-K0  K+   pi-  PHSP;
 0.00070   J/psi   anti-K0  K0   pi0  PHSP;
 0.00070   J/psi   K-       K+   pi0  PHSP;
-#
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR add (cc) phi eta(') + npi see CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
 #                                      psi' = 0.34%  CLNS 94/1315
 #
 0.000465  psi(2S) eta'               SVS;
 0.000235  psi(2S) eta                SVS;
-0.0012    psi(2S) phi                SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.0003    psi(2S) K-       K+        PHSP;       
-0.0003    psi(2S) anti-K0  K0        PHSP;       
+0.000680000 psi(2S) phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0003    psi(2S) K-       K+        PHSP;
+0.0003    psi(2S) anti-K0  K0        PHSP;
 0.0003    psi(2S) anti-K0  K+    pi- PHSP;
 0.0003    psi(2S) anti-K0  K0    pi0 PHSP;
 0.0003    psi(2S) K-       K+    pi0 PHSP;
+0.00034   psi(2S) phi      pi+  pi-  PHSP;
+0.00034   psi(2S) phi      pi0  pi0  PHSP;
+0.0002    psi(2S) eta      pi+  pi-  PHSP;
+0.0002    psi(2S) eta      pi0  pi0  PHSP;
+0.0004    psi(2S) eta'     pi+  pi-  PHSP;
+0.0004    psi(2S) eta'     pi0  pi0  PHSP;
+0.0002    psi(2S) pi+      pi-       PHSP;
+0.0002    psi(2S) pi0      pi0       PHSP;
 #
 #                                      chic0 = 0.05% (20% of chic2)
 #                                      Bodwin et.al. Phys Rev D46 1992
-0.00010   chi_c0  eta'               PHSP;            
+0.00010   chi_c0  eta'               PHSP;
 0.00005   chi_c0  eta                PHSP;
-0.00020   phi     chi_c0             SVS; 
-0.00003   chi_c0  K-       K+        PHSP;       
+0.00020   phi     chi_c0             SVS;
+0.00003   chi_c0  K-       K+        PHSP;
 0.00003   chi_c0  anti-K0  K0        PHSP;
 0.00003   chi_c0  anti-K0  K+   pi-  PHSP;
 0.00003   chi_c0  anti-K0  K0   pi0  PHSP;
@@ -4881,15 +4966,21 @@ Decay anti-B_s0
 0.0007    chi_c1  eta'              SVS;
 0.0003    chi_c1  eta                SVS;
 0.0014    chi_c1  phi                SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.00026   chi_c1  K-       K+        PHSP;  
+0.00026   chi_c1  K-       K+        PHSP;
 0.00026   chi_c1  anti-K0  K0        PHSP;
 0.00026   chi_c1  anti-K0  K+   pi-  PHSP;
 0.00026   chi_c1  anti-K0  K0   pi0  PHSP;
 0.00026   chi_c1  K-       K+   pi0  PHSP;
+0.00040   chi_c1  phi      pi+  pi-  PHSP;
+0.00040   chi_c1  phi      pi0  pi0  PHSP;
+0.0001    chi_c1  eta      pi+  pi-  PHSP;
+0.0001    chi_c1  eta      pi0  pi0  PHSP;
+0.0002    chi_c1  eta'     pi+  pi-  PHSP;
+0.0002    chi_c1  eta'     pi0  pi0  PHSP;
 #
 #
 #                                      chic2 = 0.25%  CLNS 94/1315
-0.000465    chi_c2      eta'                  STS;      
+0.000465    chi_c2      eta'                  STS;
 0.000235    chi_c2      eta                   STS;
 #0.0010      chi_c2      phi                   STV; whb: model doesn't exist!
 0.00016     chi_c2      K-         K+        PHSP;
@@ -4909,6 +5000,12 @@ Decay anti-B_s0
 0.00028     eta_c       anti-K0    K+   pi-   PHSP;
 0.00028     eta_c       anti-K0    K0   pi0   PHSP;
 0.00028     eta_c       K-         K+   pi0   PHSP;
+0.00040   eta_c   phi      pi+  pi-  PHSP;
+0.00040   eta_c   phi      pi0  pi0  PHSP;
+0.0001    eta_c   eta      pi+  pi-  PHSP;
+0.0001    eta_c   eta      pi0  pi0  PHSP;
+0.0002    eta_c   eta'     pi+  pi-  PHSP;
+0.0002    eta_c   eta'     pi0  pi0  PHSP;
 #
 #
 #                                        etac(2s) = 0.18%  Guess: CBX 97-65
@@ -4921,7 +5018,7 @@ Decay anti-B_s0
 0.00012     eta_c(2S)   anti-K0    K0   pi0   PHSP;
 0.00012     eta_c(2S)   K-         K+   pi0   PHSP;
 #
-#    
+#
 #                                       hc = 0.25%  (100% of chic2)
 #                                       Bodwin et.al. Phys Rev D46 1992
 #
@@ -4938,24 +5035,24 @@ Decay anti-B_s0
 #                                        b --> c  (d u=)
 #                                        Exclusive Channels = 6.33%
 # fkw 4/28/00 I rearanged this a bit after copying it from
-#             B0B decay list. 
-#           
+#             B0B decay list.
+#
 # first come the external W-emission decays:
 #
 0.0008      D_s1+       pi-                   SVS;
 0.0021      D_s1+       rho-                  SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 0.0013      D_s2*+      pi-                   STS;
-#0.0037      D_s2*+      rho-                  STV; # whb: model doesn't exist 
+#0.0037      D_s2*+      rho-                  STV; # whb: model doesn't exist
 #
-0.0027      D_s*+       pi-                   SVS;  
-0.0026      D_s+        pi-                   PHSP;  
-0.0073      rho-        D_s+                  SVS;  
+0.0027      D_s*+       pi-                   SVS;
+0.003200000 D_s+    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.0073      rho-        D_s+                  SVS;
 0.0070      D_s*+       rho-                  SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
-0.0085      a_1-        D_s+                  SVS;   
-0.0009      D_s+        rho0       pi-        PHSP;       
-0.0009      D_s+        rho-       pi0        PHSP;       
-0.0009      D_s+        pi+        pi-   pi-  PHSP;       
+0.0085      a_1-        D_s+                  SVS;
+0.0009      D_s+        rho0       pi-        PHSP;
+0.0009      D_s+        rho-       pi0        PHSP;
+0.008400000 D_s+    pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
 0.0009      D_s+        pi0        pi-   pi0  PHSP;
 #
 0.0122      D_s*+       a_1-                  SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
@@ -4968,43 +5065,46 @@ Decay anti-B_s0
 #
 # fkw 4/28/00 color suppressed modes bumped up by factor 2 from isospin
 #             i.e. Bs doesn't have the factor 2 suppression Bd has.
-0.0002      D*0         K0                    SVS; 
+0.0002      D*0         K0                    SVS;
 0.0002      D0          K0                    PHSP;
-0.0002      K*0         D0                    SVS; 
-0.0002      D*0         K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; 
+0.0002      K*0         D0                    SVS;
+0.0002      D*0         K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
+# PR LHCb Add p pbar mode
+0.000000001    p+   anti-p-                   PHSP;
 # fkw 4/28/00 ignore the internal W emission decays with additional
 #             q\bar q popping.
 #
 # Here come the various types of "inclusive unknown" decays:
 #
-#  Start with B to baryons: 
+#  Start with B to baryons:
 #  fkw 3/28/01 I don't know what I'm doing here!!! This needs to be checked!!!
-0.0200        cs_0       anti-ud_0         PYTHIA 23;
-0.0400        cs_1       anti-ud_1         PYTHIA 23;
+# Mark Whitehead 30/4/2010 Weighted PYHTIA to get total BF = 100%
+0.019574780 cs_0    anti-ud_0                               PYTHIA 23; #[Reconstructed PDG2011]
+0.039129957 cs_1    anti-ud_1                               PYTHIA 23; #[Reconstructed PDG2011]
 #
 #  Next come external W-emission:
-0.3138        anti-u       d  c       anti-s       PYTHIA         48;
-0.05000         anti-u       d  c       anti-s       PYTHIA         25;
+0.301256716 anti-u  d       c       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.048443906 anti-u  d       c       anti-s                  PYTHIA         25; #[Reconstructed PDG2011]
 #  Now the internal W-emission:
-0.02000         anti-u       c  d       anti-s       PYTHIA         48;
+0.019086636 anti-u  c       d       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
 #  Then some b->u external W-emission with upper vertex charm
-0.00400         anti-c       s  u       anti-s       PYTHIA         48;
+0.003912996 anti-c  s       u       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
 # and finally some cabibbo suppressed external and internal W-emission
-0.0150          anti-u       s  c       anti-s       PYTHIA         48;
-0.00220         anti-u       s  c       anti-s       PYTHIA         25;
-0.00090         anti-u       c  s       anti-s       PYTHIA         48;
+0.014683536 anti-u  s       c       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.002152148 anti-u  s       c       anti-s                  PYTHIA         25; #[Reconstructed PDG2011]
+0.000880424 anti-u  c       s       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
 # and some c cbar d stuff as well as c cbar s
-0.00600         anti-c       d  c       anti-s       PYTHIA         13;
-0.00200         anti-c       d  c       anti-s       PYTHIA         13;
-# and some miscellaneous charmless stuff 
-0.00410         anti-u     u  d       anti-s       PYTHIA         48;
-0.00007         anti-d     d  d       anti-s       PYTHIA         48;
-0.00009         anti-s     s  d       anti-s       PYTHIA         48;
-0.00220         anti-u     u  s       anti-s       PYTHIA         48;
-0.00180         anti-d     d  s       anti-s       PYTHIA         48;
-0.00150         anti-s     s  s       anti-s       PYTHIA         48;
-0.00500                    s  g       anti-s       PYTHIA         33;
+0.005391151 anti-c  d       c       anti-s                  PYTHIA         13; #[Reconstructed PDG2011]
+0.001468354 anti-c  d       c       anti-s                  PYTHIA         13; #[Reconstructed PDG2011]
+# and some miscellaneous charmless stuff
+0.003521696 anti-u  u       d       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.000684774 anti-d  d       d       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.000880424 anti-s  s       d       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.001956498 anti-u  u       s       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.001565198 anti-d  d       s       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.001271724 anti-s  s       s       anti-s                  PYTHIA         48; #[Reconstructed PDG2011]
+0.004891245 s       anti-s                                  PYTHIA         32; #[Reconstructed PDG2011]
 
 # fkw 5/10/00 the b->ulnu decays are loosely modelled according to B0 in EvtGen
 0.000200    K+          e-         anti-nu_e         PHOTOS   ISGW2;
@@ -5012,7 +5112,7 @@ Decay anti-B_s0
 0.000300    K_1+        e-         anti-nu_e         PHOTOS   ISGW2;
 0.000200    K'_1+       e-         anti-nu_e         PHOTOS   ISGW2;
 #
-#                                    
+#
 0.000200    K+          mu-        anti-nu_mu        PHOTOS  ISGW2;
 0.000300    K*+         mu-        anti-nu_mu        PHOTOS  ISGW2;
 0.000300    K_1+        mu-        anti-nu_mu        PHOTOS  ISGW2;
@@ -5034,13 +5134,23 @@ Decay anti-B_s0
 # None of this should be taken too serious!
 #
 #***********************************************************
-0.0000193   K-          K+                    PHSP;
-0.0000079   anti-K0     K0                    PHSP;
-0.0000043   pi-         K+                    PHSP;
+# Mark Whitehead 30/4/2010 Updated K+K-
+# PR LHCb 04/07/04 update BR
+0.000033000 K-      K+                                      PHSP; #[Reconstructed PDG2011]
+# PR LHCb 04/07/04 split into KS/KL
+0.0000000   anti-K0     K0                    PHSP;
+0.0000100   K_S0        K_S0                  PHSP;
+0.0000100   K_L0        K_L0                  PHSP;
+# PR LHCb 04/07/04 update BR
+0.000004900 pi-     K+                                      PHSP; #[Reconstructed PDG2011]
 0.0000002   pi0         K0                    PHSP;
+# PR LHCb 04/07/04 add Bs->pi+ pi-
+0.00000001   pi+         pi-                   PHSP;
 #
 0.0000012   omega       eta                   SVS;
 0.0000025   omega       eta'                  SVS;
+0.0000013   phi         eta                   SVS;
+0.0000025   phi         eta'                  SVS;
 0.00000008  omega       anti-K0               SVS;
 0.000000002 phi         anti-K0               SVS;
 #
@@ -5051,15 +5161,21 @@ Decay anti-B_s0
 0.00000002  K*0         pi0                   SVS;
 #
 0.0000046   K*-         K+                    SVS;
-0.0000005   anti-K*0    K0                    SVS;
+# PR LHCb 04/07/04 Split into KS/KL
+0.0000000   anti-K*0    K0                    SVS;
+0.0000020   anti-K*0    K_S0                  SVS;
+0.0000020   anti-K*0    K_L0                  SVS;
 0.0000082   K*+         K-                    SVS;
-0.0000066   K*0         anti-K0               SVS;
+# PR LHCb 04/07/04 Split into KS/KL
+0.0000000   K*0         anti-K0               SVS;
+0.0000020   K*0         K_S0                  SVS;
+0.0000020   K*0         K_L0                  SVS;
 #
 0.0000580   eta'        eta'                  PHSP;
 0.0000250   eta'        eta                   PHSP;
 0.0000040   eta         eta                   PHSP;
-0.0000200   phi         eta                   SVS;
-0.0000100   phi         eta'                  SVS;
+####  Already included above  0.0000200   phi         eta                   SVS;
+####  Already included above  0.0000100   phi         eta'                  SVS;
 #
 #next comes stuff from Ali,Kramer,Lue PRD58, 094009 FOR NC=3
 0.00000007  K0          eta'                  PHSP;
@@ -5074,14 +5190,28 @@ Decay anti-B_s0
 0.000000005 omega       K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
 0.000006    K*-         K*+                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.000005    anti-K*0    K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.000008    phi         phi                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+# PR LHCb 04/07/04 Update BR
+0.000004    anti-K*0    K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.000014000 phi     phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000000004 phi         K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
 # decays that go via b->d penguins
-0.0000004   phi         K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+####  Already included above   0.0000004   phi         K*0                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+# PR LHCb : add Bs -> mu+ mu-
+0.0000000035  mu-       mu+                   PHSP;
+#PR LHCb 04/08/2004 add Bs -> tau+ tau- (BR not to take too seriously)
+0.0000000020 tau-       tau+                               PHSP;
+# PR LHCb 04/05/2004 : add Bs -> phi gamma
+0.000057000 phi     gamma                                   SVP_HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e-     e+                   BTOSLLALI;
+0.0000023   phi    mu-    mu+                  BTOSLLALI;
+# PR LHCb 16 apr 2004 : add Bs -> gamma gamma
+0.0000005   gamma    gamma                    PHSP;
 #--------------
 # 257.122e-6 for all the charmless hadronic
 #
+0.000150000 D_s-    K+                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 # B_s decays.
@@ -5127,11 +5257,11 @@ Decay B_s0
 #0.0010      anti-D0       K-         tau+    nu_tau           GOITY_ROBERTS;
 #0.0010      D-            anti-K0    tau+    nu_tau           GOITY_ROBERTS;
 # fkw 4/28/00 B0 -> TAU D PI0 = 1/2 of TAU D PI- because of pi0 wave function
-#             However, the same factor of 1/2 doesn't apply to BS0 !!!  
+#             However, the same factor of 1/2 doesn't apply to BS0 !!!
 # fkw 3/28/01 There seem to be no semi-leptonic B to baryon decays in nature.
 #             I don't pretend to understand why. PDG 2000 has a limit of
-#             < 3.2e-3 where one might naively expect 
-#             10% * BR(B->/\c) = 0.1 * (6.4+-1.1)% 
+#             < 3.2e-3 where one might naively expect
+#             10% * BR(B->/\c) = 0.1 * (6.4+-1.1)%
 #0.0050      nu_e        e+          B-Baryon
 #0.0050      nu_mu       mu+         B-Baryon
 #
@@ -5139,14 +5269,14 @@ Decay B_s0
 #                                         Sum = 11.44%
 #                                           2-body = 4.72%
 #                                        more-body = 6.72%
-0.0086      D_s-        D_s+          PHSP;
-0.0090      D_s*+       D_s-          SVS; 
-0.0090      D_s*-       D_s+          SVS;#2007 changed BR 
+0.010400000 D_s-    D_s+                                    PHSP; #[Reconstructed PDG2011]
+0.0099      D_s*+       D_s-          SVS;
+0.0099      D_s*-       D_s+          SVS;
 0.0197      D_s*-       D_s*+         SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
 # fkw 4/28/00 more states with popped q\bar q.
 #             The one's here involve only popped and spectator.
-#             Popping stuff in the cs from the W comes further below. 
+#             Popping stuff in the cs from the W comes further below.
 #             The same isospin comment applies here as above in the
 #             semi-leptonic decays with tau and popped q\bar q.
 0.0096      D_s+        D-          anti-K0                PHSP;
@@ -5154,13 +5284,13 @@ Decay B_s0
 0.0096      D_s*+       D-          anti-K0                PHSP;
 0.0096      D_s*+       anti-D0     K-                     PHSP;
 #
-0.0024      D_s+        D-          pi0        anti-K0     PHSP;   
-0.0048      D_s+        anti-D0     pi-        anti-K0     PHSP;   
+0.0024      D_s+        D-          pi0        anti-K0     PHSP;
+0.0048      D_s+        anti-D0     pi-        anti-K0     PHSP;
 0.0048      D_s+        D-          pi+        K-          PHSP;
-0.0024      D_s+        anti-D0     pi0        K-          PHSP;          
+0.0024      D_s+        anti-D0     pi0        K-          PHSP;
 #
-0.0024      D_s*+       D-          pi0        anti-K0     PHSP;     
-0.0048      D_s*+       anti-D0     pi-        anti-K0     PHSP;     
+0.0024      D_s*+       D-          pi0        anti-K0     PHSP;
+0.0048      D_s*+       anti-D0     pi-        anti-K0     PHSP;
 0.0048      D_s*+       D-          pi+        K-          PHSP;
 0.0024      D_s*+       anti-D0     pi0        K-          PHSP;
 #
@@ -5173,13 +5303,13 @@ Decay B_s0
 #
 0.0150      D_s*-       D*0         K+                     PHSP;
 0.0150      D_s*-       D*+         K0                     PHSP;
-0.0050      D_s*-       D0          K+                     PHSP; 
+0.0050      D_s*-       D0          K+                     PHSP;
 0.0050      D_s*-       D+          K0                     PHSP;
-0.0050      D_s-        D*0         K+                     PHSP; 
+0.0050      D_s-        D*0         K+                     PHSP;
 0.0050      D_s-        D*+         K0                     PHSP;
-0.0020      D_s-        D0          K+                     PHSP; 
-0.0020      D_s-        D+          K0                     PHSP;  
-0.0030      D_s*-       D*0         K*+                    PHSP; 
+0.0020      D_s-        D0          K+                     PHSP;
+0.0020      D_s-        D+          K0                     PHSP;
+0.0030      D_s*-       D*0         K*+                    PHSP;
 0.0030      D_s*-       D*+         K*0                    PHSP;
 0.0050      D_s*-       D0          K*+                    PHSP;
 0.0050      D_s*-       D+          K*0                    PHSP;
@@ -5196,20 +5326,20 @@ Decay B_s0
 0.0017      D_s*+       D-                                 SVS;
 0.0017      D_s*+       D*-    SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
-# fkw 4/38/00 more popping at the lower vertex 
+# fkw 4/38/00 more popping at the lower vertex
 #             but with upper vertex cabbibo suppressed.
 0.0007      D+          D-          anti-K0                PHSP;
 0.0007      D+          D0          K-                     PHSP;
 0.0007      D*+         D-          anti-K0                PHSP;
 0.0007      D*+         anti-D0     K-                     PHSP;
 #
-0.0003      D+          D-          pi0        anti-K0     PHSP;     
-0.0007      D+          anti-D0     pi-        anti-K0     PHSP;  
+0.0003      D+          D-          pi0        anti-K0     PHSP;
+0.0007      D+          anti-D0     pi-        anti-K0     PHSP;
 0.0003      D+          D-          pi+        K-          PHSP;
 0.0007      D+          anti-D0     pi0        K-          PHSP;
 #
 0.0003      D*+         D-          pi0        anti-K0     PHSP;
-0.0007      D*+         anti-D0     pi-        anti-K0     PHSP; 
+0.0007      D*+         anti-D0     pi-        anti-K0     PHSP;
 0.0003      D*+         D-          pi+        K-          PHSP;
 0.0007      D*+         anti-D0     pi0        K-          PHSP;
 #
@@ -5217,12 +5347,12 @@ Decay B_s0
 #                                        exclusive
 #                                        Sum = 0.9%
 0.00015     D_s*-       K+                                 SVS;
-0.00015     D_s-        K+                                 PHSP;
+0.000150000 D_s-    K+                                      PHSP; #[Reconstructed PDG2011]
 0.00030     D_s*-   K*+                SVV_HELAMP 0.0283 0.0 0.932 0.0 0.228 0.0;
-0.00030     K*+     D_s-               SVS;  
+0.00030     K*+     D_s-               SVS;
 #
 # fkw 4/28/00 Strategy for charmonium modes:
-# Take Bd BR's, replace spectator, 
+# Take Bd BR's, replace spectator,
 # assume etaprime = 2/3 ss
 # and eta = 1/3 ss
 #
@@ -5232,25 +5362,43 @@ Decay B_s0
 #
 #                                        B --> (c c=)  (s s=)
 #                                      2.65%
-#                                      should be: psi = 0.80%  CLNS 94/1315 but isn't quite right. 
+#                                      should be: psi = 0.80%  CLNS 94/1315 but isn't quite right.
 0.00064     J/psi       eta'                              SVS;
 0.00032     J/psi       eta                               SVS;
-0.00135     J/psi       phi      SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.00008     J/psi       anti-K0                                   SVS;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.00008     J/psi       K0                                SVS;
 0.00070     J/psi       K-          K+                     PHSP;
 0.00070     J/psi       anti-K0     K0                     PHSP;
 0.00070     J/psi       K0          K-         pi+         PHSP;
 0.00070     J/psi       anti-K0     K0         pi0         PHSP;
 0.00070     J/psi       K-          K+         pi0         PHSP;
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR Add (cc) phi eta(') + npi like in CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
 #                                      psi' = 0.34%  CLNS 94/1315
 0.000465    psi(2S)     eta'                              SVS;
 0.000235    psi(2S)     eta                                SVS;
-0.0012      psi(2S)     phi               SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.000680000 psi(2S) phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.0003      psi(2S)     K-          K+                     PHSP;
 0.0003      psi(2S)     anti-K0     K0                     PHSP;
 0.0003      psi(2S)     K0          K-         pi+         PHSP;
 0.0003      psi(2S)     anti-K0     K0         pi0         PHSP;
 0.0003      psi(2S)     K-          K+         pi0         PHSP;
+0.00034   psi(2S) phi      pi+  pi-  PHSP;
+0.00034   psi(2S) phi      pi0  pi0  PHSP;
+0.0002    psi(2S) eta      pi+  pi-  PHSP;
+0.0002    psi(2S) eta      pi0  pi0  PHSP;
+0.0004    psi(2S) eta'     pi+  pi-  PHSP;
+0.0004    psi(2S) eta'     pi0  pi0  PHSP;
+0.0002    psi(2S) pi+      pi-       PHSP;
+0.0002    psi(2S) pi0      pi0       PHSP;
 #
 #                                      chic0 = 0.05% (20% of chic2)
 #                                      Bodwin et.al. Phys Rev D46 1992
@@ -5273,6 +5421,12 @@ Decay B_s0
 0.00026     chi_c1      K0          K-         pi+         PHSP;
 0.00026     chi_c1      anti-K0     K0         pi0         PHSP;
 0.00026     chi_c1      K-          K+         pi0         PHSP;
+0.00040   chi_c1  phi      pi+  pi-  PHSP;
+0.00040   chi_c1  phi      pi0  pi0  PHSP;
+0.0001    chi_c1  eta      pi+  pi-  PHSP;
+0.0001    chi_c1  eta      pi0  pi0  PHSP;
+0.0002    chi_c1  eta'     pi+  pi-  PHSP;
+0.0002    chi_c1  eta'     pi0  pi0  PHSP;
 #
 #
 #                                      chic2 = 0.25%  CLNS 94/1315
@@ -5295,6 +5449,12 @@ Decay B_s0
 0.00028     eta_c       K0          K-         pi+         PHSP;
 0.00028     eta_c       K0          anti-K0    pi0         PHSP;
 0.00028     eta_c       K-          K+         pi0         PHSP;
+0.00040   eta_c   phi      pi+  pi-  PHSP;
+0.00040   eta_c   phi      pi0  pi0  PHSP;
+0.0001    eta_c   eta      pi+  pi-  PHSP;
+0.0001    eta_c   eta      pi0  pi0  PHSP;
+0.0002    eta_c   eta'     pi+  pi-  PHSP;
+0.0002    eta_c   eta'     pi0  pi0  PHSP;
 #
 #
 #                                        etac(2s) = 0.18%  Guess: CBX 97-65
@@ -5307,7 +5467,7 @@ Decay B_s0
 0.00012     eta_c(2S)   anti-K0     K0         pi0         PHSP;
 0.00012     eta_c(2S)   K-          K+         pi0         PHSP;
 #
-#    
+#
 #                                       hc = 0.25%  (100% of chic2)
 #                                       Bodwin et.al. Phys Rev D46 1992
 0.000465    h_c         eta'                              SVS;
@@ -5323,25 +5483,25 @@ Decay B_s0
 #                                        b --> c  (d u=)
 #                                        Exclusive Channels = 6.33%
 # fkw 4/28/00 I rearanged this a bit after copying it from
-#             B0B decay list. 
-#           
+#             B0B decay list.
+#
 # first come the external W-emission decays:
 #
 0.0008      D_s1-       pi+                                SVS;
 0.0021      D_s1-       rho+               SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 0.0013      D_s2*-      pi+                                STS;
-#0.0037      D_s2*-      rho+                               STV; #whb: STV does not exist yet 
+#0.0037      D_s2*-      rho+                               STV; #whb: STV does not exist yet
 #
 0.0027      D_s*-       pi+                                SVS;
-0.0026      D_s-        pi+                                PHSP;
+0.003200000 D_s-    pi+                                     PHSP; #[Reconstructed PDG2011]
 0.0073      rho+        D_s-                               SVS;
 0.0070      D_s*-       rho+              SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
 0.0085      a_1+        D_s-                               SVS;
 0.0009      D_s-        rho0        pi+                    PHSP;
 0.0009      D_s-        rho+        pi0                    PHSP;
-0.0009      D_s-        pi-         pi+        pi+         PHSP;
-0.0009      D_s-        pi0         pi+        pi0         PHSP;         
+0.008400000 D_s-    pi-     pi+     pi+                     PHSP; #[Reconstructed PDG2011]
+0.0009      D_s-        pi0         pi+        pi0         PHSP;
 #
 0.0122      D_s*-       a_1+               SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 0.0010      D_s*-       rho0        pi+                    PHSP;
@@ -5358,38 +5518,41 @@ Decay B_s0
 0.0002      anti-K*0    anti-D0                            SVS;
 0.0002      anti-D*0    anti-K*0            SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
+# PR LHCb : add p ppbar mode
+0.000000001   p+    anti-p-          PHSP;
 # fkw 4/28/00 ignore the internal W emission decays with additional
 #             q\bar q popping.
 #
 # Here come the various types of "inclusive unknown" decays:
 #
-#  Start with B to baryons: 
+#  Start with B to baryons:
 #  fkw 3/28/01 I don't know what I'm doing here!!! This needs to be checked!!!
-0.0200        anti-cs_0       ud_0         PYTHIA 23;
-0.0400        anti-cs_1       ud_1         PYTHIA 23;
+# Mark Whitehead 30/4/2010 Weight PYTHIA to get Total BF=100%
+0.019574780 anti-cs_0 ud_0                                  PYTHIA 23; #[Reconstructed PDG2011]
+0.039129957 anti-cs_1 ud_1                                  PYTHIA 23; #[Reconstructed PDG2011]
 #
 #  Next come external W-emission:
-0.3138        u       anti-d  anti-c       s       PYTHIA         48;
-0.05000         u       anti-d  anti-c       s       PYTHIA         25;
+0.301256716 u       anti-d  anti-c  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.048443906 u       anti-d  anti-c  s                       PYTHIA         25; #[Reconstructed PDG2011]
 #  Now the internal W-emission:
-0.02000         u       anti-c  anti-d       s       PYTHIA         48;
+0.019086636 u       anti-c  anti-d  s                       PYTHIA         48; #[Reconstructed PDG2011]
 #  Then some b->u external W-emission with upper vertex charm
-0.00400         c       anti-s  anti-u       s       PYTHIA         48;
+0.003912996 c       anti-s  anti-u  s                       PYTHIA         48; #[Reconstructed PDG2011]
 # and finally some cabibbo suppressed external and internal W-emission
-0.0150          u       anti-s  anti-c       s       PYTHIA         48;
-0.00220         u       anti-s  anti-c       s       PYTHIA         25;
-0.00090         u       anti-c  anti-s       s       PYTHIA         48;
+0.014683536 u       anti-s  anti-c  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.002152148 u       anti-s  anti-c  s                       PYTHIA         25; #[Reconstructed PDG2011]
+0.000880424 u       anti-c  anti-s  s                       PYTHIA         48; #[Reconstructed PDG2011]
 # and some c cbar d stuff as well as c cbar s
-0.00600         c       anti-d  anti-c       s       PYTHIA         13;
-0.00200         c       anti-d  anti-c       s       PYTHIA         13;
-# and some miscellaneous charmless stuff 
-0.00410         u     anti-u  anti-d       s       PYTHIA         48;
-0.00007         d     anti-d  anti-d       s       PYTHIA         48;
-0.00009         s     anti-s  anti-d       s       PYTHIA         48;
-0.00220         u     anti-u  anti-s       s       PYTHIA         48;
-0.00180         d     anti-d  anti-s       s       PYTHIA         48;
-0.00150         s     anti-s  anti-s       s       PYTHIA         48;
-0.00500                    anti-s  g       s       PYTHIA         33;
+0.005391151 c       anti-d  anti-c  s                       PYTHIA         13; #[Reconstructed PDG2011]
+0.001468354 c       anti-d  anti-c  s                       PYTHIA         13; #[Reconstructed PDG2011]
+# and some miscellaneous charmless stuff
+0.003521696 u       anti-u  anti-d  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.000684774 d       anti-d  anti-d  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.000880424 s       anti-s  anti-d  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.001956498 u       anti-u  anti-s  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.001565198 d       anti-d  anti-s  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.001271724 s       anti-s  anti-s  s                       PYTHIA         48; #[Reconstructed PDG2011]
+0.004891245 anti-s  s                                       PYTHIA         32; #[Reconstructed PDG2011]
 
 # fkw 5/10/00 the b->ulnu decays are loosely modelled according to B0 in EvtGen
 0.000200    K-          e+         nu_e         PHOTOS   ISGW2;
@@ -5397,7 +5560,7 @@ Decay B_s0
 0.000300    K_1-        e+         nu_e         PHOTOS   ISGW2;
 0.000200    K'_1-       e+         nu_e         PHOTOS   ISGW2;
 #
-#                                    
+#
 0.000200    K-          mu+        nu_mu        PHOTOS  ISGW2;
 0.000300    K*-         mu+        nu_mu        PHOTOS  ISGW2;
 0.000300    K_1-        mu+        nu_mu        PHOTOS  ISGW2;
@@ -5419,31 +5582,47 @@ Decay B_s0
 # None of this should be taken too serious!
 #
 #***********************************************************
-0.0000193   K-          K+                                 PHSP;
-0.0000079   anti-K0     K0                                 PHSP;
-0.0000043   pi+         K-                                 PHSP;
+# Mark Whitehead 30/4/2010 Update K+K-
+# PR LHCb update Br Bs -> K- K+
+0.000033000 K-      K+                                      PHSP; #[Reconstructed PDG2011]
+# PR LHCb 4/07/04 Split in KS/KL
+0.0000000   anti-K0     K0                                 PHSP;
+0.0000100   K_S0        K_S0                               PHSP;
+0.0000100   K_L0        K_L0                               PHSP;
+#
+0.000004900 pi+     K-                                      PHSP; #[Reconstructed PDG2011]
 0.0000002   pi0         anti-K0                            PHSP;
+# PR LHCb 4/07/04 add Bs -> pi+ pi-
+0.00000001  pi+         pi-                                PHSP;
 #
 0.0000012   omega       eta                                SVS;
 0.0000025   omega       eta'                               SVS;
+0.0000013   phi         eta                                SVS;
+0.0000025   phi         eta'                               SVS;
 0.00000008  omega       K0                                 SVS;
 0.000000002 phi         K0                                 SVS;
 #
 0.0000250   K*-         pi+                                SVS;
 0.0000120   rho+        K-                                 SVS;
-0.00000002  rho0        anti-K0                                 SVS;
+0.00000002  rho0        K0                                 SVS;
 0.00000002  anti-K*0    pi0                                SVS;
 #
 0.0000046   K*+         K-                                 SVS;
-0.0000005   K*0         anti-K0                            SVS;
+# PR LHCb 4/07/04 split in KS/KL
+0.0000000   K*0         anti-K0                            SVS;
+0.0000020   K*0         K_S0                               SVS;
+0.0000020   K*0         K_L0                               SVS;
 0.0000082   K*-         K+                                 SVS;
-0.0000066   anti-K*0    K0                                 SVS;
+# PR LHCb 4/07/04 split in KS/KL
+0.0000000   anti-K*0    K0                                 SVS;
+0.0000020   anti-K*0    K_S0                               SVS;
+0.0000020   anti-K*0    K_L0                               SVS;
 #
 0.0000580   eta'        eta'                               PHSP;
 0.0000250   eta'        eta                                PHSP;
 0.0000040   eta         eta                                PHSP;
-0.0000200   phi         eta                                SVS;
-0.0000100   phi         eta'                               SVS;
+### Already included above   0.0000200   phi         eta                                SVS;
+### Already included above   0.0000100   phi         eta'                               SVS;
 #
 #next comes stuff from Ali,Kramer,Lue PRD58, 094009 FOR NC=3
 0.00000007  anti-K0     eta'                               PHSP;
@@ -5458,26 +5637,31 @@ Decay B_s0
 0.000000005 omega       anti-K*0            SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
 0.000006    K*-         K*+                    SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.000005    anti-K*0    K*0                    SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.000008    phi         phi                    SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+# PR LHCb Update BR
+0.000004    anti-K*0    K*0                    SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.000014000 phi     phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000000004 phi         anti-K*0               SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
 #
 # decays that go via b->d penguins
-0.0000004   phi         anti-K*0               SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+#### Already included above   0.0000004   phi         anti-K*0               SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+#PR LHCb add Bs -> mu+ mu-
+0.0000000035 mu+        mu-                                PHSP;
+#PR LHCb 04/08/2004 add Bs -> tau+ tau- (BR not to take too seriously)
+0.0000000020 tau+       tau-                               PHSP;
+# PR LHCb 04/05/2004 : add Bs -> phi gamma
+0.000057000 phi     gamma                                   SVP_HELAMP 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e+     e-                   BTOSLLALI;
+0.0000023   phi    mu+    mu-                  BTOSLLALI;
+# PR LHCb 16 Apr 2004 : add Bs -> gamma gamma
+0.0000005   gamma  gamma                      PHSP;
 #--------------
 # 257.122e-6 for all the charmless hadronic
 #
+0.000150000 D_s+    K-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 
-Decay B_s*0
-1.0000         B_s0 gamma                   VSP_PWAVE;
-Enddecay
-
-Decay anti-B_s*0
-1.0000    anti-B_s0 gamma                   VSP_PWAVE;
-Enddecay
-
-
-# whb: QQ B_c included.  Needs more work!
+# whb: QQ B_c included- Near end of File
 #Decay B_c-
 #CHANNEL  0 0.0700 TAU-  NUTB
 #CHANNEL  1 0.1100 NUEB  E-    *CC*
@@ -5513,56 +5697,88 @@ Enddecay
 #Enddecay
 
 #
-# The tau branching fractions needs to be looked over!
+# Updated to PDG 2008
 #
 Decay tau-
-0.1778         e-   anti-nu_e   nu_tau       PHOTOS TAULNUNU;
-0.1731         mu-  anti-nu_mu   nu_tau      PHOTOS  TAULNUNU;
-0.1095         pi-  nu_tau                     TAUSCALARNU;
-0.2531  pi- pi0  nu_tau   TAUHADNU -0.108 0.775 0.149 1.364 0.400;
-0.09234  pi- pi- pi+  nu_tau   TAUHADNU -0.108 0.775 0.149 1.364 0.400 1.23 0.4;
-0.0910  pi0 pi0 pi-  nu_tau   TAUHADNU -0.108 0.775 0.149 1.364 0.400 1.23 0.4;
+0.154002925 e-      anti-nu_e nu_tau                        PHOTOS TAULNUNU; #[Reconstructed PDG2011]
+0.170000000 mu-     anti-nu_mu nu_tau                       PHOTOS  TAULNUNU; #[Reconstructed PDG2011]
+0.109100000 pi-     nu_tau                                  TAUSCALARNU; #[Reconstructed PDG2011]
+0.006960000 K-      nu_tau                                  TAUSCALARNU; #[Reconstructed PDG2011]
+0.255100000 pi-     pi0     nu_tau                          TAUHADNU -0.108 0.775 0.149 1.364 0.400; #[Reconstructed PDG2011]
+0.001124109 nu_tau  gamma   pi-     pi0                     PYTHIA    41; #[Reconstructed PDG2011]
+0.079301562 pi0     pi0     pi-     nu_tau                  TAUHADNU -0.108 0.775 0.149 1.364 0.400 1.23 0.4; #[Reconstructed PDG2011]
+0.000385656 nu_tau  K-      pi0     pi0                     PYTHIA    41; #[Reconstructed PDG2011]
+0.008508640 nu_tau  pi-     pi0     pi0     pi0             PYTHIA    41; #[Reconstructed PDG2011]
+0.000864699 nu_tau  pi-     pi0     pi0     pi0     pi0     PHSP; #[Reconstructed PDG2011]
 #0.2515         rho- nu_tau                     TAUVECTORNU;
 #0.1790         a_1-  nu_tau                     TAUVECTORNU;
-0.00686         K-   nu_tau                     TAUSCALARNU;
-0.0134         K*-  nu_tau                     TAUVECTORNU;
-0.0450         nu_tau     pi-     pi+     pi-     pi0     PYTHIA    41;
-0.0100         nu_tau     pi-     pi0     pi0     pi0     PYTHIA    41;
-0.0015         nu_tau     K-      pi-     K+              PYTHIA    41;
-0.0015         nu_tau     K0      pi-     anti-K0         PYTHIA    41;
-0.0015         nu_tau     K-      pi0     K0              PYTHIA    41;
-0.0005         nu_tau     K-      pi0     pi0             PYTHIA    41;
-0.0050         nu_tau     K-      pi+     pi-             PYTHIA    41;
-0.0055         nu_tau     pi-     anti-K0 pi0             PYTHIA    41;
-0.0017         nu_tau     eta     pi-     pi0             PYTHIA    41;
-0.0013         nu_tau     gamma   pi-     pi0             PYTHIA    41;
-0.0009         nu_tau     pi-     pi-     pi+  pi0  pi0   PHSP;
-0.0008         nu_tau     pi-     pi-     pi-  pi+  pi+   PHSP;
-0.0003         nu_tau     pi-     pi-  pi-  pi+  pi+  pi0 PHSP;
-0.0005         nu_tau     pi-     pi-  pi+  pi0  pi0  pi0 PHSP;
-0.0010         nu_tau     pi-     pi0  pi0  pi0  pi0      PHSP;
-0.0039         nu_tau     pi-     omega     pi0           PYTHIA    41;
-0.0010         nu_tau     K-      K0                      PYTHIA    41;
-0.0010         nu_tau     K-      omega                   PYTHIA    41;
+# Modes with K0s
+#
+0.000319939 nu_tau  pi-     anti-K0                         PYTHIA    41; #[Reconstructed PDG2011]
+0.001590000 nu_tau  K-      K0                              PYTHIA    41; #[Reconstructed PDG2011]
+0.001700000 nu_tau  K0      pi-     anti-K0                 PYTHIA    41; #[Reconstructed PDG2011]
+0.001590000 nu_tau  K-      pi0     K0                      PYTHIA    41; #[Reconstructed PDG2011]
+0.004000000 nu_tau  pi-     anti-K0 pi0                     PYTHIA    41; #[Reconstructed PDG2011]
+# 3 Charged Particles
+#
+0.093200000 pi-     pi-     pi+     nu_tau                  TAUHADNU -0.108 0.775 0.149 1.364 0.400 1.23 0.4; #[Reconstructed PDG2011]
+0.046100000 nu_tau  pi-     pi+     pi-     pi0             PYTHIA    41; #[Reconstructed PDG2011]
+0.000501526 nu_tau  pi-     pi-     pi+     pi0     pi0     PHSP; #[Reconstructed PDG2011]
+0.000155646 nu_tau  pi-     pi-     pi+     pi0     pi0     pi0     PHSP; #[Reconstructed PDG2011]
+0.003420000 nu_tau  K-      pi+     pi-                     PYTHIA    41; #[Reconstructed PDG2011]
+0.001360000 nu_tau  K-      pi+     pi-     pi0             PYTHIA    41; #[Reconstructed PDG2011]
+0.001400000 nu_tau  K-      pi-     K+                      PYTHIA    41; #[Reconstructed PDG2011]
+0.000015800 nu_tau  K-      K+      K-                      PYTHIA    41; #[Reconstructed PDG2011]
+# 5 Charged Particles
+#
+0.000700406 nu_tau  pi-     pi-     pi-     pi+     pi+     PHSP; #[Reconstructed PDG2011]
+0.000129705 nu_tau  pi-     pi-     pi-     pi+     pi+     pi0     PHSP; #[Reconstructed PDG2011]
+# Misc other modes
+#
+0.012000000 K*-     nu_tau                                  TAUVECTORNU; #[Reconstructed PDG2011]
+0.001390000 nu_tau  eta     pi-     pi0                     PYTHIA    41; #[Reconstructed PDG2011]
+0.003199387 nu_tau  pi-     omega   pi0                     PYTHIA    41; #[Reconstructed PDG2011]
+0.000410000 nu_tau  K-      omega                           PYTHIA    41; #[Reconstructed PDG2011]
+0.002200000 anti-K*0 pi-     nu_tau                         PHSP; #[Reconstructed PDG2011]
+0.002100000 K*0     K-      nu_tau                          PHSP; #[Reconstructed PDG2011]
+0.000034000 phi     pi-     nu_tau                          PHSP; #[Reconstructed PDG2011]
+0.000037000 phi     K-      nu_tau                          PHSP; #[Reconstructed PDG2011]
+0.003600000 mu-     anti-nu_mu nu_tau  gamma                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.017500000 e-      anti-nu_e nu_tau  gamma                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004290000 K-      pi0     nu_tau                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002200000 anti-K0 rho-    nu_tau                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000260000 pi-     anti-K0 pi0     pi0     nu_tau          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 pi-     K0      anti-K0 pi0     nu_tau          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000061000 K-      K+      pi-     pi0     nu_tau          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000028000 e-      e-      e+      anti-nu_e nu_tau        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004700000 K_1-    nu_tau                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001700000 K'_1-   nu_tau                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001500000 K'*-    nu_tau                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000150000 eta     pi-     pi0     pi0     nu_tau          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000161000 eta     K-      nu_tau                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000138000 eta     K*-     nu_tau                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000048000 eta     K-      pi0     nu_tau                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000093000 eta     anti-K0 pi-     nu_tau                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000360000 f_1     pi-     nu_tau                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 CDecay tau+
 #
-#   Vector Mesons
+#   Vector Mesons Updated PDG 2008
 #
 Decay D*+
-0.6830    D0  pi+                        VSS;
-0.3060    D+  pi0                        VSS;
-0.0110    D+  gamma                       VSP_PWAVE;
+0.6770    D0  pi+                        VSS;
+0.3070    D+  pi0                        VSS;
+0.0160    D+  gamma                       VSP_PWAVE;
 Enddecay
 Decay D*-
-0.6830    anti-D0 pi-                        VSS;
-0.3060    D-  pi0                        VSS;
-0.0110    D-  gamma                       VSP_PWAVE;
+0.6770    anti-D0 pi-                        VSS;
+0.3070    D-  pi0                        VSS;
+0.0160    D-  gamma                       VSP_PWAVE;
 Enddecay
 Decay D*0
-0.6190    D0  pi0                        VSS;
-0.3810    D0  gamma                       VSP_PWAVE;
+0.619000000 D0      pi0                                     VSS; #[Reconstructed PDG2011]
+0.381000000 D0      gamma                                   VSP_PWAVE; #[Reconstructed PDG2011]
 Enddecay
 Decay anti-D*0
 0.6190    anti-D0  pi0                       VSS;
@@ -5570,269 +5786,301 @@ Decay anti-D*0
 Enddecay
 #
 Decay D_s*+
-0.942   D_s+  gamma                       VSP_PWAVE;
-0.058   D_s+  pi0                        VSS;
+0.942000000 D_s+    gamma                                   VSP_PWAVE; #[Reconstructed PDG2011]
+0.058000000 D_s+    pi0                                     VSS; #[Reconstructed PDG2011]
 Enddecay
 Decay D_s*-
-0.942   D_s-  gamma                       VSP_PWAVE;
-0.058   D_s-  pi0                        VSS;
+0.942000000 D_s-    gamma                                   VSP_PWAVE; #[Reconstructed PDG2011]
+0.058000000 D_s-    pi0                                     VSS; #[Reconstructed PDG2011]
 Enddecay
 #
 #
 #   D+ Meson
 #
-# Define model alias for the D -> K*lnu decays
-# This should correspond to MV=2.1 GeV, MA1=MA2=2.5 GeV,
-# R2=0.85 and RV=1.5
-#
-ModelAlias SLPOLE_DtoKstarlnu SLPOLE  1.00 -0.558 0.0 1.0 
-                                      0.85 -0.558 0.0 1.0
-                                      1.50 -0.790 0.0 1.0
-                                      0.00 -0.558 0.0 1.0;
-#
-# Model alias for the D -> rho l nu
-# MV=2.0 GeV and MA1=MA2=2.4 GeV, R2=0.6, RV=1.5
-#
-ModelAlias SLPOLE_Dtorholnu SLPOLE 1.00 -0.605 0.0 1.0 
-                                   0.60 -0.605 0.0 1.0
-                                   1.50 -0.871 0.0 1.0
-                                   0.00 -0.605 0.0 1.0;
-#
-# Model alias for the D -> omega l nu
-# MV=2.0 GeV and MA1=MA2=2.4 GeV, R2=0.6, RV=1.5
-#
-ModelAlias SLPOLE_Dtoomegalnu SLPOLE 1.00 -0.605 0.0 1.0 
-                                     0.60 -0.605 0.0 1.0
-                                     1.50 -0.871 0.0 1.0
-                                     0.00 -0.605 0.0 1.0;
-#
-# Model aliases for D -> Klnu, pilenu, etalnu, eta'lnu
-#
-ModelAlias SLBKPOLE_DtoKlnu SLBKPOLE 1.0 0.25 1.0 2.112;
-ModelAlias SLBKPOLE_Dtopilnu SLBKPOLE 1.0 0.25 1.0 2.010;
-ModelAlias SLBKPOLE_Dtoetalnu SLBKPOLE 1.0 0.25 1.0 2.010;
-ModelAlias SLBKPOLE_Dtoetaplnu SLBKPOLE 1.0 0.25 1.0 2.010;
-#
 Decay D+
-#
-#===================Semileptonic Decays=========================
-#
-0.0556 anti-K*0  e+  nu_e      PHOTOS   SLPOLE_DtoKstarlnu;
-0.0876 anti-K0    e+  nu_e     PHOTOS   SLBKPOLE_DtoKlnu;
-0.0033  anti-K_10  e+  nu_e     PHOTOS   ISGW2;
-0.0033  anti-K_2*0 e+  nu_e     PHOTOS   ISGW2;
-0.0018  K-  pi+  e+ nu_e        PHOTOS   PHSP;
-0.0039 pi0  e+  nu_e           PHOTOS   SLBKPOLE_Dtopilnu;
-0.0013         eta  e+  nu_e           PHOTOS   SLBKPOLE_Dtoetalnu;
-0.0002  eta' e+  nu_e           PHOTOS   SLBKPOLE_Dtoetaplnu;
-0.0023 rho0 e+  nu_e           PHOTOS   SLPOLE_Dtorholnu;
-0.0015 omega e+  nu_e          PHOTOS   SLPOLE_Dtoomegalnu;
-#
-# Sum of exclusive semi-electronic BFs = 16.08%
-#
-0.0545 anti-K*0  mu+  nu_mu      PHOTOS  SLPOLE_DtoKstarlnu;
-0.0858 anti-K0    mu+  nu_mu     PHOTOS  SLBKPOLE_DtoKlnu;
-0.0032  anti-K_10  mu+  nu_mu     PHOTOS  ISGW2;
-0.0032  anti-K_2*0 mu+  nu_mu     PHOTOS  ISGW2;
-0.0018 K-  pi+  mu+ nu_mu        PHOTOS  PHSP;
-0.0038 pi0  mu+  nu_mu           PHOTOS  SLBKPOLE_Dtopilnu;
-0.0013  eta  mu+  nu_mu           PHOTOS  SLBKPOLE_Dtoetalnu;
-0.0002  eta' mu+  nu_mu           PHOTOS  SLBKPOLE_Dtoetaplnu;
-0.0023 rho0 mu+  nu_mu           PHOTOS  SLPOLE_Dtorholnu;
-0.0015  omega mu+  nu_mu          PHOTOS  SLPOLE_Dtoomegalnu;
-#
-# Sum of exclusive semi-muonic BFs = 15.76%
-#
-0.00044        mu+ nu_mu                PHOTOS   SLN;
-0.00116        tau+ nu_tau                       SLN;
-#
-0.0147  K_S0 pi+                       PHSP;
-0.0146  K_L0 pi+                       PHSP;
-0.0720 a_1+ anti-K0                    SVS;
-0.0540 anti-K'_10  pi+                 SVS;
-0.0094  a_1+ anti-K*0                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0200 anti-K*0 rho+                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-# the Dalitz mode below includes K*bar(892)0 pi+, 
+0.055300000 anti-K*0 e+      nu_e                           PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.088300000 anti-K0 e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002773020 anti-K_10 e+      nu_e                          PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002927076 anti-K_2*0 e+      nu_e                         PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.004050000 pi0     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001330000 eta     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002200000 rho0    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001600000 omega   e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.041000000 K-      pi+     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 anti-K0 pi0     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.055000000 anti-K*0 mu+     nu_mu                          PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.094000000 anti-K0 mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002773020 anti-K_10 mu+     nu_mu                         PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002927076 anti-K_2*0 mu+     nu_mu                        PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.003312218 pi0     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002002736 eta     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002500000 rho0    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002156793 omega   mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.039000000 K-      pi+     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 anti-K0 pi0     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+#
+0.000382000 mu+     nu_mu                                   PHOTOS   SLN; #[Reconstructed PDG2011]
+0.000770283 tau+    nu_tau                                  SLN; #[Reconstructed PDG2011]
+#
+0.014900000 K_S0    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.014600000 K_L0    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi+                                     PHSP; #[Reconstructed PDG2011]
+#
+0.025950843 a_1+    K_S0                                    SVS; #[Reconstructed PDG2011]
+0.025950843 a_1+    K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 a_1+    anti-K0                                 SVS; #[Reconstructed PDG2011]
+#
+0.027090862 anti-K'_10 pi+                                  SVS; #[Reconstructed PDG2011]
+#0.0115   anti-K_0*0N  pi+                PHSP;
+0.013387523 anti-K*0 rho+                                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+#
+# the Dalitz mode below includes K*bar(892)0 pi+,
 # K*bar(1430)0 pi+, and K*bar(1680)0 pi+ resonances.
-0.0951 K-  pi+  pi+                            D_DALITZ;
-# the Dalitz mode below includes K0bar rho+, 
+0.094000000 K-      pi+     pi+                             D_DALITZ; #[Reconstructed PDG2011]
+# the Dalitz mode below includes K0bar rho+,
 # and K*bar(892)0 pi+ resonances
-0.1400 anti-K0   pi+  pi0              D_DALITZ;
-0.0238 anti-K0   eta  pi+              PHSP;
-0.0050 anti-K0   eta' pi+              PHSP;
-0.0012 anti-K0   rho0  pi+             PHSP;
-0.0040 anti-K0   omega  pi+            PHSP;
-0.0101 K-  rho+  pi+                   PHSP;
-0.0195 anti-K*0 pi0  pi+               PHSP;
-0.0091  anti-K*0 eta  pi+               PHSP;
-0.0035 anti-K*0 rho0  pi+              PHSP;
-0.0021  anti-K*0 omega  pi+             PHSP;
-0.0003 K- rho0 pi+ pi+                 PHSP;
-0.0042  K*- rho+  pi+                   PHSP;
-0.0014 anti-K0   pi+  pi+   pi-        PHSP;
-0.0134  anti-K0   pi+  pi0   pi0        PHSP;
-0.0004 K-  pi+  pi+   pi+   pi-        PHSP;
-0.0038  K-  pi+  pi+   pi0   pi0        PHSP;
-0.0089  anti-K0   pi+  pi+   pi-   pi0  PHSP;
-0.0006  anti-K0   pi+  pi0   pi0   pi0  PHSP;
-#
-0.01013        anti-K0   anti-K0    K+         PHSP;
-0.0005 K+ K- anti-K0 pi+               PHSP;
-0.00008        K+ K+ K-                        PHSP;
-#
-0.0065  phi pi+                         SVS;
-0.0038 phi rho+                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0059 anti-K0   K+                    PHSP;
-0.0045  anti-K*0  K+                    SVS;
-0.0055  anti-K_0*0 K+                  PHSP;
-0.0320 K*+  anti-K0                    SVS;
-0.0107 anti-K*0 K*+                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0001 K+   K-  pi+                    PHSP;
-0.0034  anti-K0   K0  pi+               PHSP;
-0.0044  anti-K0 K0 pi+ pi0             PHSP;
-0.0035 K+ anti-K0 pi+ pi-              PHSP;
-0.0002 K+ K- pi+ pi+ pi-               PHSP;
-#
-0.0013 pi0 pi+                         PHSP;
-0.0011 rho0 pi+                        SVS;
-0.0008 f_2 pi+                         STS;
-0.0004 f_0 pi+                         PHSP;
-0.00155        pi+  pi+  pi-                   PHSP;
-0.0038  rho+ pi0                       SVS;
-0.00067        pi+  pi0  pi0                   PHSP;
-0.00295 rho0 rho+                      SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00295 rho0 pi+ pi0                   PHSP;
-0.00295 rho+ pi+ pi-                   PHSP;
-0.00116 pi+  pi+  pi-  pi0              PHSP;
-0.0041  pi+  pi0  pi0  pi0              PHSP;
-0.0121  pi+ pi+ pi- pi0 pi0            PHSP;
-0.0013  pi+ pi+ pi+ pi- pi- pi0                PHSP;
-0.0035  eta pi+                         PHSP;
-0.0014  eta pi+ pi0                     PHSP;
-0.0032  eta pi+ pi+ pi-                 PHSP;
-0.0037  eta pi+ pi0 pi0                 PHSP;
-0.0044  eta' pi+                       PHSP;
-0.0016  eta' pi+ pi0                   PHSP;
-0.0011  rho0 rho0 pi+                  PHSP;
-0.0006 rho0 pi+ pi+ pi-                PHSP;
-#
-0.00024 K+ pi0                         PHSP;
-0.00025        rho0 K+                         SVS;
-0.00030        K*0T pi+                        SVS;
-0.00011        K+ f_0                          PHSP;
-0.00016        K_2*0 pi+                       STS;
+0.069000000 K_S0    pi+     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+0.051539652 K_L0    pi+     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi+     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+#0.0100   anti-K0   eta  pi+                    PHSP;
+#
+0.001247859 K_S0    rho0    pi+                             PHSP; #[Reconstructed PDG2011]
+0.001247859 K_L0    rho0    pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 rho0    pi+                             PHSP; #[Reconstructed PDG2011]
+#
+0.003851416 anti-K0 omega   pi+                             PHSP; #[Reconstructed PDG2011]
+0.007032686 K-      rho+    pi+                             PHSP; #[Reconstructed PDG2011]
+0.009274210 K*-     pi+     pi+                             PHSP; #[Reconstructed PDG2011]
+0.047187552 anti-K*0 pi0     pi+                            PHSP; #[Reconstructed PDG2011]
+#0.0100   anti-K*0 eta  pi+                    PHSP;
+0.001101505 anti-K*0 rho0    pi+                            PHSP; #[Reconstructed PDG2011]
+0.003851416 anti-K*0 omega   pi+                            PHSP; #[Reconstructed PDG2011]
+#0.0100   K*- rho+  pi+                   PHSP;
+#
+0.008473116 K-      pi+     pi+     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.002472609 K_S0    pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.002472609 K_L0    pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+#0.0188   anti-K0   pi+  pi0   pi0              PHSP;
+0.005700000 K-      pi+     pi+     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.003851416 K-      pi+     pi+     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+0.006701464 anti-K0 pi+     pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.002695991 anti-K0 pi+     pi0     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+#
+0.004600000 K_S0    K_S0    K+                              PHSP; #[Reconstructed PDG2011]
+0.003111944 K_L0    K_L0    K+                              PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 anti-K0 K+                              PHSP; #[Reconstructed PDG2011]
+#
+0.004660214 phi     pi+                                     SVS; #[Reconstructed PDG2011]
+0.023000000 phi     pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+#
+0.002860000 K_S0    K+                                      PHSP; #[Reconstructed PDG2011]
+0.002195307 K_L0    K+                                      PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K+                                      PHSP; #[Reconstructed PDG2011]
+#
+0.002179902 anti-K*0 K+                                     SVS; #[Reconstructed PDG2011]
+#
+0.016000000 K*+     K_S0                                    SVS; #[Reconstructed PDG2011]
+0.011145999 K*+     K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 K*+     anti-K0                                 SVS; #[Reconstructed PDG2011]
+#
+#0.0180   anti-K*0 K*+                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+0.002826940 K+      K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K+      anti-K0 pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K*+     K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K+      K*-     pi+                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K*+     anti-K0 pi0                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K+      anti-K*0 pi0                            PHSP; #[Reconstructed PDG2011]
+0.000770283 anti-K*0 K0      pi+                            PHSP; #[Reconstructed PDG2011]
+0.000770283 anti-K0 K*0     pi+                             PHSP; #[Reconstructed PDG2011]
+#
+0.001260000 pi0     pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000830000 rho0    pi+                                     SVS; #[Reconstructed PDG2011]
+0.002440000 pi+     pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.004700000 pi+     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.011600000 pi+     pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.003851416 pi+     pi0     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.003430000 eta     pi+                                     PHSP; #[Reconstructed PDG2011]
+0.004400000 eta'    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.001380000 eta     pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.002310850 eta     pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001540566 eta     pi+     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#lange jul22,2002
+0.001660000 pi+     pi+     pi+     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+#
+# March 2009 New Modes
+0.009300000 anti-K*0 a_1+                                   PHSP; #[Reconstructed PDG2011]
+0.010545178 K+      K-      pi+     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.001740000 K+      K_S0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001270967 K+      K_L0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K+      anti-K0 pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.002380000 K_S0    K-      pi+     pi+                     PHSP; #[Reconstructed PDG2011]
+0.001756246 K_L0    K-      pi+     pi+                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K-      pi+     pi+                     PHSP; #[Reconstructed PDG2011]
+#
+0.000230000 K+      K-      pi+     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+#
+0.000240000 K+      K-      K_S0    pi+                     PHSP; #[Reconstructed PDG2011]
+0.000161759 K+      K-      K_L0    pi+                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K+      K-      anti-K0 pi+                     PHSP; #[Reconstructed PDG2011]
+# Doubly Cabibbo suppressed modes
+0.000237000 K+      pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000332000 K+      pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.000089000 K+      K+      K-                              PHSP; #[Reconstructed PDG2011]
+0.001720000 K-      rho0    pi+     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001600000 eta'    pi+     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000210000 K+      rho0                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 #
-#
 Decay D-
-#
-#===================Semileptonic Decays=========================
-#
-0.0556 K*0  e-   anti-nu_e          PHOTOS   SLPOLE_DtoKstarlnu;
-0.0876 K0    e-  anti-nu_e          PHOTOS   SLBKPOLE_DtoKlnu;
-0.0033  K_10  e-  anti-nu_e          PHOTOS   ISGW2;
-0.0033  K_2*0 e-  anti-nu_e          PHOTOS   ISGW2;
-0.0018  K+  pi-  e- anti-nu_e        PHOTOS   PHSP;
-0.0039 pi0  e-  anti-nu_e           PHOTOS   SLBKPOLE_Dtopilnu;
-0.0013         eta  e-  anti-nu_e           PHOTOS   SLBKPOLE_Dtoetalnu;
-0.0002  eta' e-  anti-nu_e           PHOTOS   SLBKPOLE_Dtoetaplnu;
-0.0023 rho0 e-  anti-nu_e           PHOTOS   SLPOLE_Dtorholnu;
-0.0015 omega e-  anti-nu_e          PHOTOS   SLPOLE_Dtoomegalnu;
-#
-# Sum of exclusive semi-electronic BFs = 16.08%
-#
-0.0545 K*0   mu-  anti-nu_mu          PHOTOS  SLPOLE_DtoKstarlnu;
-0.0858 K0    mu-  anti-nu_mu          PHOTOS  SLBKPOLE_DtoKlnu;
-0.0032  K_10  mu-  anti-nu_mu          PHOTOS  ISGW2;
-0.0032  K_2*0 mu-  anti-nu_mu          PHOTOS  ISGW2;
-0.0018 K+  pi-  mu- anti-nu_mu        PHOTOS  PHSP;
-0.0038 pi0  mu-  anti-nu_mu           PHOTOS  SLBKPOLE_Dtopilnu;
-0.0013  eta  mu-  anti-nu_mu           PHOTOS  SLBKPOLE_Dtoetalnu;
-0.0002  eta' mu-  anti-nu_mu           PHOTOS  SLBKPOLE_Dtoetaplnu;
-0.0023 rho0 mu-  anti-nu_mu           PHOTOS  SLPOLE_Dtorholnu;
-0.0015  omega mu-  anti-nu_mu          PHOTOS  SLPOLE_Dtoomegalnu;
-#
-# Sum of exclusive semi-muonic BFs = 15.76%
-#
-#
-0.00044   mu- anti-nu_mu               PHOTOS   SLN;
-0.00116   tau- anti-nu_tau                      SLN;
-#
-0.0147 K_S0 pi-                        PHSP;
-0.0146  K_L0 pi-                       PHSP;
-0.0720  a_1- K0                                SVS;
-0.0540  K'_10  pi-                      SVS;
-0.0094  a_1- K*0                       SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0200  K*0 rho-                        SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.055300000 K*0     e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.088300000 K0      e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.002773020 K_10    e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.002927076 K_2*0   e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.004050000 pi0     e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.001330000 eta     e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.002200000 rho0    e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.001600000 omega   e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.041000000 K+      pi-     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 K0      pi0     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.055000000 K*0     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.094000000 K0      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002773020 K_10    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002927076 K_2*0   mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.003312218 pi0     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002002736 eta     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002500000 rho0    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002156793 omega   mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.039000000 K+      pi-     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 K0      pi0     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.000382000 mu-     anti-nu_mu                              PHOTOS   SLN; #[Reconstructed PDG2011]
+0.000770283 tau-    anti-nu_tau                             SLN; #[Reconstructed PDG2011]
+#
+0.014900000 K_S0    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.014600000 K_L0    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi-                                     PHSP; #[Reconstructed PDG2011]
+#
+0.025950843 a_1-    K_S0                                    SVS; #[Reconstructed PDG2011]
+0.025950843 a_1-    K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 a_1-    K0                                      SVS; #[Reconstructed PDG2011]
+#
+0.027090862 K'_10   pi-                                     SVS; #[Reconstructed PDG2011]
+#0.0115   K_0*0N  pi-                        PHSP;
+0.013387523 K*0     rho-                                    SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 #
 # the Dalitz mode below includes K*(892)0 pi-, K*(1430)0 pi-, and K*(1680)0 pi- resonances.
-0.0951  K+  pi-  pi-                    D_DALITZ;
+0.094000000 K+      pi-     pi-                             D_DALITZ; #[Reconstructed PDG2011]
 # the Dalitz mode below includes K0 rho-, and K*(892)0 pi- resonances.
-0.1400  K0  pi-  pi0                    D_DALITZ;
-0.0238  K0  eta  pi-                           PHSP;
-0.0050  K0  eta' pi-                   PHSP;
-0.0012  K0  rho0  pi-                          PHSP;
-0.0040  K0  omega  pi-                         PHSP;
-0.0101  K+  rho-  pi-                          PHSP;
-0.0195  K*0 pi0  pi-                           PHSP;
-0.0091  K*0 eta  pi-                           PHSP;
-0.0035  K*0 rho0  pi-                          PHSP;
-0.0021  K*0 omega  pi-                         PHSP;
-0.0003  K+ rho0 pi- pi-                        PHSP;
-0.0042  K*+ rho-  pi-                          PHSP;
-0.0014  K0  pi-  pi-   pi+                     PHSP;
-0.0134  K0  pi-  pi0   pi0                     PHSP;
-0.0004  K+  pi-  pi-   pi-   pi+               PHSP;
-0.0038  K+  pi-  pi-   pi0   pi0               PHSP;
-0.0089  K0  pi-  pi-   pi+   pi0               PHSP;
-0.0006  K0  pi-  pi0   pi0   pi0               PHSP;
-#
-0.01013 K0  K0   K-                    PHSP;
-0.0005  K- K+ K0 pi-                   PHSP;
-0.00008 K- K- K+                       PHSP;
-#
-0.0065 phi pi-                         SVS;
-0.0038  phi rho-                       SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0059  K0  K-                          PHSP;
-0.0045  K*0  K-                         SVS;
-0.0055  K_0*0 K-                       PHSP;
-0.0320  K*-  K0                         SVS;
-0.0107  K*0 K*-                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0001  K-   K+  pi-                    PHSP;
-0.0034  K0 anti-K0  pi-                 PHSP;
-0.0044  K0 anti-K0 pi- pi0             PHSP;
-0.0035  K- K0 pi- pi+                  PHSP;
-0.0002  K- K+ pi- pi- pi+              PHSP;
-#
-0.0013  pi0 pi-                         PHSP;
-0.0011  rho0 pi-                        SVS;
-0.0008 f_2 pi-                         STS;
-0.0004 f_0 pi-                         PHSP;
-0.00155 pi-  pi-  pi+                   PHSP;
-0.0038  rho- pi0                       SVS;
-0.00067 pi-  pi0  pi0                   PHSP;
-0.00295 rho0 rho-                      SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00295 rho0 pi- pi0                   PHSP;
-0.00295 rho- pi- pi+                   PHSP;
-0.00116 pi-  pi-  pi+  pi0              PHSP;
-0.0041  pi-  pi0  pi0  pi0              PHSP;
-0.0121  pi- pi- pi+ pi0 pi0            PHSP;
-0.0013  pi- pi- pi- pi+ pi+ pi0                PHSP;
-0.0035  eta pi-                         PHSP;
-0.0014  eta pi- pi0                     PHSP;
-0.0032  eta pi- pi- pi+                 PHSP;
-0.0037  eta pi- pi0 pi0                 PHSP;
-0.0044         eta' pi-                        PHSP;
-0.0016  eta' pi- pi0                   PHSP;
-0.0011  rho0 rho0 pi-                  PHSP;
-0.0006 rho0 pi- pi- pi+                PHSP;
-#
-0.00024 K- pi0                         PHSP;
-0.00025 rho0 K-                                SVS;
-0.00030 anti-K*0T pi-                  SVS;
-0.00011        K- f_0                          PHSP;
-0.00016 anti-K_2*0 pi-                 STS;
+0.069000000 K_S0    pi-     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+0.051539652 K_L0    pi-     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+0.000000000 K0      pi-     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+#
+#0.0100   K0  eta  pi-                    PHSP;
+0.001247859 K_S0    rho0    pi-                             PHSP; #[Reconstructed PDG2011]
+0.001247859 K_L0    rho0    pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      rho0    pi-                             PHSP; #[Reconstructed PDG2011]
+#
+0.003851416 K0      omega   pi-                             PHSP; #[Reconstructed PDG2011]
+0.007032686 K+      rho-    pi-                             PHSP; #[Reconstructed PDG2011]
+0.009274210 K*+     pi-     pi-                             PHSP; #[Reconstructed PDG2011]
+0.047187552 K*0     pi0     pi-                             PHSP; #[Reconstructed PDG2011]
+#0.0100   K*0 eta  pi-                    PHSP;
+0.001101505 K*0     rho0    pi-                             PHSP; #[Reconstructed PDG2011]
+0.003851416 K*0     omega   pi-                             PHSP; #[Reconstructed PDG2011]
+#0.0100   K*+ rho-  pi-                   PHSP;
+#
+0.008473116 K+      pi-     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.002472609 K_S0    pi-     pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.002472609 K_L0    pi-     pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi-     pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+#
+#0.0188   K0  pi-  pi0   pi0              PHSP;
+0.005700000 K+      pi-     pi-     pi-     pi+             PHSP; #[Reconstructed PDG2011]
+0.003851416 K+      pi-     pi-     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+0.006701464 K0      pi-     pi-     pi+     pi0             PHSP; #[Reconstructed PDG2011]
+0.002695991 K0      pi-     pi0     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+#
+0.004600000 K_S0    K_S0    K-                              PHSP; #[Reconstructed PDG2011]
+0.003111944 K_L0    K_L0    K-                              PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K0      K-                              PHSP; #[Reconstructed PDG2011]
+#
+0.004660214 phi     pi-                                     SVS; #[Reconstructed PDG2011]
+0.023000000 phi     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+#
+0.002860000 K_S0    K-                                      PHSP; #[Reconstructed PDG2011]
+0.002195307 K_L0    K-                                      PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K-                                      PHSP; #[Reconstructed PDG2011]
+#
+0.002179902 K*0     K-                                      SVS; #[Reconstructed PDG2011]
+#
+0.016000000 K*-     K_S0                                    SVS; #[Reconstructed PDG2011]
+0.011145999 K*-     K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 K*-     K0                                      SVS; #[Reconstructed PDG2011]
+#
+#0.0180   K*0 K*-                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+0.002826940 K-      K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K-      K0      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K*-     K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K-      K*+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K*-     K0      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K-      K*0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K*0     anti-K0 pi-                             PHSP; #[Reconstructed PDG2011]
+0.000770283 K0      anti-K*0 pi-                            PHSP; #[Reconstructed PDG2011]
+#
+0.001260000 pi0     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000830000 rho0    pi-                                     SVS; #[Reconstructed PDG2011]
+0.002440000 pi-     pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.004700000 pi-     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.011600000 pi-     pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.003851416 pi-     pi0     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.003430000 eta     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.004400000 eta'    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.001380000 eta     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.002310850 eta     pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001540566 eta     pi-     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#lange jul22,2002
+0.001660000 pi+     pi-     pi+     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+#
+# March 2009 New Modes
+0.009300000 K*0     a_1-                                    PHSP; #[Reconstructed PDG2011]
+0.010545178 K+      K-      pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.001740000 K-      K_S0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001270967 K-      K_L0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K-      K0      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.002380000 K_S0    K+      pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001756246 K_L0    K+      pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K+      pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.000230000 K+      K-      pi+     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+#
+0.000240000 K+      K-      K_S0    pi-                     PHSP; #[Reconstructed PDG2011]
+0.000161759 K+      K-      K_L0    pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K+      K-      K0      pi-                     PHSP; #[Reconstructed PDG2011]
+# Doubly Cabibbo suppressed modes
+0.000237000 K-      pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000332000 K-      pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.000089000 K-      K+      K-                              PHSP; #[Reconstructed PDG2011]
+0.001720000 K+      rho0    pi-     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001600000 eta'    pi-     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000210000 K-      rho0                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay K*BR
@@ -5840,172 +6088,191 @@ Decay K*BR
 Enddecay
 #
 #
-#
-#Special omega that does not decay to pi+ pi-; needed for Dalitz compensation
-#in D decays
-Alias omega_A omega
-#
-Decay omega_A
-0.9081    pi-  pi+  pi0                  OMEGA_DALITZ;
-0.0869    pi0  gamma                      VSP_PWAVE;
-0.0008    eta  gamma                      VSP_PWAVE;
-0.0006    pi0  e+  e-             PHOTOS PHSP;
-0.0001    pi0  mu+ mu-            PHOTOS PHSP;
-0.0021    pi+  pi- gamma                  PHSP;
-0.0004    pi0  pi0 gamma                  PHSP;
-0.0010    pi+ pi- pi+ pi-                PHSP;
-Enddecay
-#
 Decay D0
-#
-#=================Semileptonic decays========================
-#
-0.0216   K*-  e+  nu_e           PHOTOS   SLPOLE_DtoKstarlnu;
-0.0356  K-   e+  nu_e           PHOTOS   SLBKPOLE_DtoKlnu;
-0.0010   K_1-  e+  nu_e          PHOTOS   ISGW2;
-0.0010   K_2*- e+  nu_e          PHOTOS   ISGW2;
-0.0004  K-  pi0 e+ nu_e         PHSP;           
-0.0007   anti-K0 pi- e+ nu_e    PHSP;
-0.0031  pi-  e+  nu_e           PHOTOS   SLBKPOLE_Dtopilnu;
-0.0016   rho- e+  nu_e           PHOTOS   SLPOLE_Dtorholnu;
-#
-# Sum of exclusive semi-electronic BFs = 6.50%
-#
-0.0212  K*-  mu+ nu_mu          PHOTOS  SLPOLE_DtoKstarlnu;
-0.0349  K-   mu+ nu_mu          PHOTOS  SLBKPOLE_DtoKlnu;
-0.0010   K_1-  mu+ nu_mu         PHOTOS  ISGW2;
-0.0010   K_2*- mu+ nu_mu         PHOTOS  ISGW2;
-0.0004  K-  pi0 mu+ nu_mu       PHSP;           
-0.0007   anti-K0 pi- mu+ nu_mu  PHSP;
-0.0030  pi-  mu+ nu_mu          PHOTOS  SLBKPOLE_Dtopilnu;
-0.0016  rho- mu+ nu_mu          PHOTOS  SLPOLE_Dtorholnu;
-#
-# Sum of exclusive semi-muonic BFs = 6.38%
-#
-#
-0.0382  K-  pi+                        PHSP;
-0.0122  K_S0   pi0                     PHSP;
-0.0100   K_L0   pi0                     PHSP;
-0.0076  anti-K0   eta                  PHSP;
-0.0182  anti-K0   eta'                 PHSP;
-# Excludes contribution to anti-K0 pi+ pi-
-0.0213  omega_A anti-K0                SVS;
-0.0053  anti-K*0 eta                   SVS;
-0.0007  anti-K*0 eta'                  SVS;
-0.0750  a_1+ K-                        SVS;
-0.0640  K*- rho+                       SVV_HELAMP  0.5 0.0 1.0 0.0 0.5 0.0;
-0.0150   anti-K*0 rho0                 SVV_HELAMP  1.0 0.0 0.0 0.0 1.0 0.0;
-0.0110  anti-K*0 omega                 SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-# the Dalitz mode below includes K*bar(892)0 pi0, 
+# updated according to suggestions by P. Roudeau,
+# using PDG2004 measurements and imposing the equality
+# of sl partial widths for D+ and D0.
+# Include additional decay anti-K0 pi- e+ nu_e , K- pi0 e+ nu_e.
+#
+0.021700000 K*-     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.035500000 K-      e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000760000 K_1-    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001374504 K_2*-   e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002890000 pi-     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001900000 rho-    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.027000000 anti-K0 pi-     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.016000000 K-      pi0     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.019800000 K*-     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.033100000 K-      mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000815539 K_1-    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001374504 K_2*-   mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002370000 pi-     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002015940 rho-    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001007970 anti-K0 pi-     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.000549802 K-      pi0     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.038900000 K-      pi+                                     PHSP; #[Reconstructed PDG2011]
+#
+0.012200000 K_S0    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.010000000 K_L0    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi0                                     PHSP; #[Reconstructed PDG2011]
+#
+0.004290000 K_S0    eta                                     PHSP; #[Reconstructed PDG2011]
+0.003802795 K_L0    eta                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 eta                                     PHSP; #[Reconstructed PDG2011]
+#
+0.009300000 K_S0    eta'                                    PHSP; #[Reconstructed PDG2011]
+0.008980094 K_L0    eta'                                    PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 eta'                                    PHSP; #[Reconstructed PDG2011]
+#
+0.011100000 omega   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.010904400 omega   K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 omega   anti-K0                                 SVS; #[Reconstructed PDG2011]
+#
+0.001603588 anti-K*0 eta                                    SVS; #[Reconstructed PDG2011]
+0.000916336 anti-K*0 eta'                                   SVS; #[Reconstructed PDG2011]
+0.078000000 a_1+    K-                                      SVS; #[Reconstructed PDG2011]
+0.067625607 K*-     rho+                                    SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.015800000 anti-K*0 rho0                                   SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.011000000 anti-K*0 omega                                  SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+# the Dalitz mode below includes K*bar(892)0 pi0,
 # K*(892)- pi+, and K- rho(770)+ resonances
-0.1350 K-  pi+  pi0                    D_DALITZ;
-0.0124  K*BR pi0                        SVS;
-0.0111 K_1- pi+                        SVS;
-0.0056 anti-K_10 pi0                   SVS;
-#
-# the Dalitz mode below includes a number of resonances including K*(892)- pi+ and Kbar0 rho(770)0
-0.0576 anti-K0   pi+  pi-              D_DALITZ;
-0.0158 anti-K0   pi0  pi0              PHSP;
-0.0062 anti-K*0 pi+  pi-               PHSP;
-0.0091  anti-K*0 pi0  pi0               PHSP;
-0.0062  K*- pi+  pi0                    PHSP;
-0.0008  K-  rho+ pi0                    PHSP;
-0.0159 K-  pi+  rho0                   PHSP;
-0.0227 K-  pi+  omega                  PHSP;
-0.0031  K-  pi+  eta                    PHSP;
-0.0072 K-  pi+  eta'                   PHSP;
-0.0015 anti-K0 pi0 eta                 PHSP;
-0.0027 anti-K0 pi+ pi- eta             PHSP;
-0.02469        anti-K0 pi0 pi0 eta             PHSP;
-0.0055 K-  pi+  pi+   pi-              PHSP;
-0.0225 anti-K0   pi+  pi-   pi0        PHSP;
-0.0036  K-  pi+  pi0   pi0              PHSP;
-0.0102  anti-K0   pi0  pi0   pi0        PHSP;
-0.00154        K-  pi+  pi+   pi-   pi0        PHSP;
-0.0015 K-  pi+  pi0   pi0   pi0        PHSP;
-0.0298 anti-K0   pi+  pi-   pi0   pi0  PHSP;
-0.0118  anti-K0   pi+  pi-   pi0   pi0   pi0  PHSP;
-0.0080 anti-K0 a_00                    PHSP;
-0.0122 K- a_0+                         PHSP;
-0.0022 anti-K0 rho0 pi+ pi-            PHSP;
-0.0048 K*- rho0 pi+                    PHSP;
-0.0001  K*- pi+ pi+ pi-                        PHSP;
-0.0002 K- pi+ pi+ pi+ pi- pi-          PHSP;
-#
-0.00008        K- pi+ phi                      PHSP;
-0.0085 phi anti-K0                     SVS;
-0.00031        phi anti-K*0                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0033 anti-K0   K+   K-               PHSP;
-0.0008 K_S0 K_S0  K_S0                 PHSP;
-0.0008 K_L0 K_L0  K_L0                 PHSP;
-0.0003  K_L0 K_L0 K+ pi-               PHSP;
-0.0003 K_L0 K_L0 K- pi+                PHSP;
-0.0003 K_S0 K_S0 K- pi+                PHSP;
-0.0003 K_S0 K_S0 K+ pi-                PHSP;
-0.00006        K+ K- anti-K*0                  PHSP;
-0.00003        K+ K- K- pi+                    PHSP;
-0.00030        phi K*0                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-#
-0.0039 K+  K-                          PHSP;
-0.00015        K_S0 K_S0                       PHSP;
-0.00015 K_L0 K_L0                       PHSP;
-0.0004 K*0 anti-K0                     SVS;
-0.0008 anti-K*0 K0                     SVS;
-0.0012 K*- K+                          SVS;
-0.0044 K*+ K-                          SVS;
-0.0010  K+ K- pi0                      PHSP;
-0.00075        phi pi0                         SVS;
-0.00005        phi pi+  pi-                    PHSP;
-0.0014 phi rho0                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0025  K+  K-   pi0  pi0               PHSP;
-0.0043  anti-K0   K0   pi+  pi-         PHSP;
-0.0022  anti-K0   K0   pi0  pi0         PHSP;
-0.0034 K0 K- pi+                       PHSP;
-0.0042 anti-K0 K+ pi-                  PHSP;
-0.0042 anti-K0 K+ pi- pi0              PHSP;
-0.0042 K0 K- pi+ pi0                   PHSP;
-0.0001 K*0 K- pi+                      PHSP;
-0.0001 anti-K*0 K+ pi-                 PHSP;
-0.0010 K_1+ K-                         SVS;
-0.0010 K_1- K+                         SVS;
-0.0006 K'_1+ K-                        SVS;
-0.0006 K'_1- K+                        SVS;    
-0.0029 K+ K- pi+ pi- pi0               PHSP;
-0.00014        phi eta                         SVS;
-#
-0.0014 pi+ pi-                         PHSP;
-0.0008 pi0 pi0                         PHSP;
-0.00061 eta pi0                         PHSP;
-0.00081 eta' pi0                       PHSP;
-0.0040  eta pi+ pi- pi0                        PHSP;
-0.0017  eta eta                         PHSP;
-0.0013  eta eta'                       PHSP;
-0.0080  rho+ pi-                        SVS;
-0.0036 rho- pi+                        SVS;
-0.0025  rho0 pi0                        SVS;
-0.0032 f_0 pi+ pi-                     PHSP;
-0.0016 f_0 pi0 pi0                     PHSP;   
-0.0002  pi0  pi0  pi0                   PHSP;
-0.0037  rho0 rho0                       SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00193        pi+  pi+  pi-  pi-              PHSP;
-0.0259  pi+ pi+ pi- pi- pi0 pi0                PHSP;
-0.0076  rho+ rho-                      SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00034 pi+  pi-  pi0  pi0             PHSP;
-0.0016 omega pi+ pi-                   PHSP;
-0.0017  rho0 pi+ pi- pi0               PHSP;
-0.0005  rho0 rho0 pi0                  PHSP;
-0.0042  pi+  pi-  pi0  pi0  pi0         PHSP;
-0.0004 pi+ pi+ pi+ pi- pi- pi-         PHSP;
-0.0011 pi+ pi- eta                     PHSP;
-0.00045        pi+ pi- eta'                    PHSP;
+0.139000000 K-      pi+     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+0.006634274 K*BR    pi0                                     SVS; #[Reconstructed PDG2011]
+0.016000000 K_1-    pi+                                     SVS; #[Reconstructed PDG2011]
+0.006505987 anti-K_10 pi0                                   SVS; #[Reconstructed PDG2011]
+#
+# the Dalitz mode below includes K*(892)- pi+ and Kbar0 rho(770)0 resonances
+# LHCb PR 09 Apr 2004 split into KS/KL
+0.029400000 K_S0    pi+     pi-                             D_DALITZ; #[Reconstructed PDG2011]
+0.027856619 K_L0    pi+     pi-                             D_DALITZ; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi+     pi-                             D_DALITZ; #[Reconstructed PDG2011]
+#
+0.008300000 K_S0    pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.004425904 K_L0    pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+#
+0.024000000 anti-K*0 pi+     pi-                            PHSP; #[Reconstructed PDG2011]
+0.010629499 anti-K*0 pi0     pi0                            PHSP; #[Reconstructed PDG2011]
+0.009163361 K*-     pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.006231086 K-      rho+    pi0                             PHSP; #[Reconstructed PDG2011]
+0.005305586 K-      pi+     rho0                            PHSP; #[Reconstructed PDG2011]
+0.019000000 K-      pi+     omega                           PHSP; #[Reconstructed PDG2011]
+0.009163361 K-      pi+     eta                             PHSP; #[Reconstructed PDG2011]
+0.007500000 K-      pi+     eta'                            PHSP; #[Reconstructed PDG2011]
+0.013300000 K-      pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.054000000 K_S0    pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.010079698 K_L0    pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+# K- pi+ pi0 pi0 is (15 +/- 5)% in the PDG, but we decrease it to
+# have everything add to 1 and get enough neutral kaons:
+#0.02575  K-  pi+  pi0   pi0              PHSP;
+#
+#0.0143   anti-K0   pi0  pi0   pi0              PHSP;
+0.000000000 K-      pi+     pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.003482077 K-      pi+     pi0     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+#
+0.002800000 K_S0    pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.002684865 K_L0    pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+#
+#0.0638   anti-K0   pi+  pi-   pi0   pi0        PHSP;
+#0.0192   anti-K0   pi+  pi-   pi0   pi0   pi0  PHSP;
+#
+0.002034266 phi     K_S0                                    SVS; #[Reconstructed PDG2011]
+0.002034266 phi     K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 phi     anti-K0                                 SVS; #[Reconstructed PDG2011]
+#
+0.004650000 K_S0    K+      K-                              PHSP; #[Reconstructed PDG2011]
+0.002785662 K_L0    K+      K-                              PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K+      K-                              PHSP; #[Reconstructed PDG2011]
+#
+0.000950000 K_S0    K_S0    K_S0                            PHSP; #[Reconstructed PDG2011]
+0.003940000 K+      K-                                      PHSP; #[Reconstructed PDG2011]
+0.000190000 K_S0    K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000366534 K_L0    K_L0                                    PHSP; #[Reconstructed PDG2011]
+0.000366534 K*0     anti-K0                                 SVS; #[Reconstructed PDG2011]
+#
+0.000091634 anti-K*0 K_S0                                   SVS; #[Reconstructed PDG2011]
+0.000091634 anti-K*0 K_L0                                   SVS; #[Reconstructed PDG2011]
+0.000000000 anti-K*0 K0                                     SVS; #[Reconstructed PDG2011]
+#
+0.000485658 K*-     K+                                      SVS; #[Reconstructed PDG2011]
+0.001365341 K*+     K-                                      SVS; #[Reconstructed PDG2011]
+0.001282871 anti-K*0 K*0                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000714742 phi     pi0                                     SVS; #[Reconstructed PDG2011]
+0.001007970 phi     pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.002430000 K+      K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.002749008 K+      K-      pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.001280000 K_S0    K_S0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001255381 K_L0    K_L0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.001374504 anti-K0 K0      pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.001397000 pi+     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000800000 pi0     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000640000 eta     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000810000 eta'    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.001670000 eta     eta                                     PHSP; #[Reconstructed PDG2011]
+0.009800000 rho+    pi-                                     SVS; #[Reconstructed PDG2011]
+0.004970000 rho-    pi+                                     SVS; #[Reconstructed PDG2011]
+0.003730000 rho0    pi0                                     SVS; #[Reconstructed PDG2011]
+0.001209564 pi+     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000091634 pi0     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.005620000 pi+     pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+0.009360000 pi+     pi-     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.001510000 pi+     pi-     pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.005498017 pi+     pi-     pi0     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+0.000420000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
 #
 # Doubly Cabibbo suppressed decays:
-0.00014        pi- K+                          PHSP;
-0.00030        pi- K+  pi0                     PHSP;
-0.00025        pi- K+ pi- pi+                  PHSP;
-# Radiative decays
-0.00002 phi gamma                       HELAMP 1.0 0.0 1.0 0.0;
-0.0003  anti-K*0 gamma                  HELAMP 1.0 0.0 1.0 0.0;
+0.000137450 pi-     K+                                      PHSP; #[Reconstructed PDG2011]
+0.000128287 pi-     K*+                                     PHSP; #[Reconstructed PDG2011]
+0.000274901 pi-     K+      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000247411 K+      pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+# PR LHCb - 19 Apr. 2004 Add D0 -> mu+ mu-
+0.000000000 mu+     mu-                                     PHSP; #[Reconstructed PDG2011]
+#
+# March 2009 New Modes
+0.000140000 phi     eta                                     PHSP; #[Reconstructed PDG2011]
+0.019000000 anti-K*0 pi+     pi-     pi0                    PHSP; #[Reconstructed PDG2011]
+0.000220000 K-      pi+     pi-     pi+     pi-     pi+     PHSP; #[Reconstructed PDG2011]
+0.000641435 K+      K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.003100000 K+      K-      pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.000221000 K+      K-      K-      pi+                     PHSP; #[Reconstructed PDG2011]
+#
+0.005600000 K_S0    eta     pi0                             PHSP; #[Reconstructed PDG2011]
+0.003665345 K_L0    eta     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 eta     pi0                             PHSP; #[Reconstructed PDG2011]
+#
+0.002600000 K_S0    K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.002382474 K_L0    K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K+      pi-                             PHSP; #[Reconstructed PDG2011]
+#
+0.003500000 K_S0    K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.003344627 K_L0    K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K-      pi+                             PHSP; #[Reconstructed PDG2011]
+#
+0.000310000 K_S0    K_S0    K+      pi-                     PHSP; #[Reconstructed PDG2011]
+0.000293228 K_L0    K_L0    K+      pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      K+      pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.000310000 K_S0    K_S0    K-      pi+                     PHSP; #[Reconstructed PDG2011]
+0.000293228 K_L0    K_L0    K-      pi+                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      K-      pi+                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K-      pi+     pi-     e+      nu_e            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001820000 rho0    rho0                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001090000 eta     pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001600000 omega   pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000450000 eta'    pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001260000 eta     eta'                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000027000 phi     gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000328000 anti-K*0 gamma                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 #
@@ -6015,311 +6282,383 @@ Enddecay
 #
 #
 Decay anti-D0
-#
-#=================Semileptonic decays========================
-#
-0.0216   K*+  e-  anti-nu_e           PHOTOS   SLPOLE_DtoKstarlnu;
-0.0356  K+   e-  anti-nu_e           PHOTOS   SLBKPOLE_DtoKlnu;
-0.0010   K_1+  e-  anti-nu_e          PHOTOS   ISGW2;
-0.0010   K_2*+ e-  anti-nu_e          PHOTOS   ISGW2;
-0.0004  K+  pi0 e- anti-nu_e         PHSP;              
-0.0007   K0 pi+ e- anti-nu_e          PHSP;
-0.0031  pi+  e-  anti-nu_e           PHOTOS   SLBKPOLE_Dtopilnu;
-0.0016   rho+ e-  anti-nu_e           PHOTOS   SLPOLE_Dtorholnu;
-#
-# Sum of exclusive semi-electronic BFs = 6.50%
-#
-0.0212  K*+  mu- anti-nu_mu          PHOTOS  SLPOLE_DtoKstarlnu;
-0.0349  K+   mu- anti-nu_mu          PHOTOS  SLBKPOLE_DtoKlnu;
-0.0010   K_1+  mu- anti-nu_mu         PHOTOS  ISGW2;
-0.0010   K_2*+ mu- anti-nu_mu         PHOTOS  ISGW2;
-0.0004  K+  pi0 mu- anti-nu_mu       PHSP;              
-0.0007   K0 pi+ mu- anti-nu_mu        PHSP;
-0.0030  pi+  mu- anti-nu_mu          PHOTOS  SLBKPOLE_Dtopilnu;
-0.0016  rho+ mu- anti-nu_mu          PHOTOS  SLPOLE_Dtorholnu;
-#
-# Sum of exclusive semi-muonic BFs = 6.38%
-#
-#
-0.0382  K+  pi-                         PHSP;
-0.0122 K_S0 pi0                        PHSP;
-0.0100  K_L0 pi0                       PHSP;
-0.0076  K0  eta                         PHSP;
-0.0182  K0  eta'                        PHSP;
-# Excludes contribution to K0 pi- pi+
-0.0213  omega_A K0                      SVS;
-0.0053  K*0 eta                         SVS;
-0.0007  K*0 eta'                        SVS;
-0.0750  a_1- K+                         SVS;
-0.0640  K*+ rho-                        SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
-0.0150  K*0 rho0                        SVV_HELAMP 1.0 0.0 0.0 0.0 1.0 0.0;
-0.0110  K*0 omega                       SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+0.021700000 K*+     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.035500000 K+      e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000760000 K_1+    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001380270 K_2*+   e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002890000 pi+     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001900000 rho+    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.027000000 K0      pi+     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.016000000 K+      pi0     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.019800000 K*+     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.033100000 K+      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000818960 K_1+    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001380270 K_2*+   mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002370000 pi+     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002024397 rho+    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001012198 K0      pi+     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.000552108 K+      pi0     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.038900000 K+      pi-                                     PHSP; #[Reconstructed PDG2011]
+#
+0.012200000 K_S0    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.010000000 K_L0    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi0                                     PHSP; #[Reconstructed PDG2011]
+#
+0.004290000 K_S0    eta                                     PHSP; #[Reconstructed PDG2011]
+0.003818748 K_L0    eta                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      eta                                     PHSP; #[Reconstructed PDG2011]
+#
+0.009300000 K_S0    eta'                                    PHSP; #[Reconstructed PDG2011]
+0.009017767 K_L0    eta'                                    PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      eta'                                    PHSP; #[Reconstructed PDG2011]
+#
+0.011100000 omega   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.010950146 omega   K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 omega   K0                                      SVS; #[Reconstructed PDG2011]
+#
+0.001610316 K*0     eta                                     SVS; #[Reconstructed PDG2011]
+0.000920180 K*0     eta'                                    SVS; #[Reconstructed PDG2011]
+0.078000000 a_1-    K+                                      SVS; #[Reconstructed PDG2011]
+0.067909308 K*+     rho-                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.015800000 K*0     rho0                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.011000000 K*0     omega                                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 # the Dalitz mode below includes K*(892)0 pi0, K*(892)+ pi-, and K+ rho(770)- resonances
-0.1350  K+  pi-  pi0                    D_DALITZ;
-0.0124  K*0R pi0                        SVS;
-0.0111  K_1+ pi-                        SVS;
-0.0056  K_10 pi0                        SVS;
+0.139000000 K+      pi-     pi0                             D_DALITZ; #[Reconstructed PDG2011]
+0.006662106 K*0R    pi0                                     SVS; #[Reconstructed PDG2011]
+0.016000000 K_1+    pi-                                     SVS; #[Reconstructed PDG2011]
+0.006533280 K_10    pi0                                     SVS; #[Reconstructed PDG2011]
 # the Dalitz mode below includes K*(892)+ pi- and K0 rho(770)0 resonances
-0.0576  K0  pi+  pi-                    D_DALITZ;
-0.0158  K0  pi0  pi0                    PHSP;
-0.0062  K*0 pi-  pi+                    PHSP;
-0.0091  K*0 pi0  pi0                    PHSP;
-0.0062  K*+ pi-  pi0                    PHSP;
-0.0008  K+  rho- pi0                    PHSP;
-0.0159  K+  pi-  rho0                   PHSP;
-0.0227  K+  pi-  omega                  PHSP;
-0.0031  K+  pi-  eta                    PHSP;
-0.0072  K+  pi-  eta'                   PHSP;
-0.0015  K0 pi0 eta                     PHSP;
-0.0027 K0 pi- pi+ eta                  PHSP;
-0.02469        K0 pi0 pi0 eta                  PHSP;
-0.0055  K+  pi-  pi-   pi+              PHSP;
-0.0225  K0  pi-  pi+   pi0              PHSP;
-0.0036  K+  pi-  pi0   pi0              PHSP;
-0.0102  K0  pi0  pi0   pi0              PHSP;
-0.00154 K+  pi-  pi-   pi+   pi0        PHSP;
-0.0015  K+  pi-  pi0   pi0   pi0        PHSP;
-0.0298  K0  pi-  pi+   pi0   pi0       PHSP;
-0.0118  K0  pi-  pi+   pi0   pi0   pi0 PHSP;
-0.0080 K0 a_00                         PHSP;
-0.0122 K+ a_0-                         PHSP;
-0.0022 K0 rho0 pi- pi+                 PHSP;
-0.0048  K*+ rho0 pi-                   PHSP;
-0.0001 K*+ pi- pi- pi+                 PHSP;
-0.0002  K+ pi- pi- pi- pi+ pi+         PHSP;
-#
-0.00008 K+ pi- phi                     PHSP;
-0.0085  phi K0                          SVS;
-0.00031 phi K*0                                SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0033  K0  K-   K+                     PHSP;
-0.0008  K_S0 K_S0  K_S0                 PHSP;
-0.0008         K_L0 K_L0  K_L0                 PHSP;
-0.0003 K_L0 K_L0 K- pi+                PHSP;
-0.0003  K_L0 K_L0 K+ pi-               PHSP;
-0.0003  K_S0 K_S0 K+ pi-               PHSP;
-0.0003  K_S0 K_S0 K- pi+               PHSP;
-0.00006 K- K+ K*0                      PHSP;
-0.00003        K- K+ K+ pi-                    PHSP;
-0.00030        phi anti-K*0                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-#
-0.0039  K-  K+                          PHSP;
-0.00015 K_S0 K_S0                       PHSP;
-0.00015 K_L0 K_L0                       PHSP;
-0.0004  anti-K*0 K0                     SVS;
-0.0008  K*0 anti-K0                     SVS;
-0.0012  K*+ K-                          SVS;
-0.0044  K*- K+                          SVS;
-0.0010  K- K+ pi0                      PHSP;
-0.00075 phi pi0                                SVS;
-0.00005 phi pi- pi+                    PHSP;
-0.0014  phi rho0                       SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0025  K-  K+   pi0  pi0               PHSP;
-0.0043  K0   anti-K0   pi-  pi+         PHSP;
-0.0022  K0   anti-K0   pi0  pi0         PHSP;
-0.0034  anti-K0 K+ pi-                         PHSP;
-0.0042  K0 K- pi+                      PHSP;
-0.0042  K0 K- pi+ pi0                  PHSP;
-0.0042  anti-K0 K+ pi- pi0             PHSP;
-0.0001  anti-K*0 K- pi+                        PHSP;
-0.0001 K*0 K- pi+                      PHSP;
-0.0010  K_1- K+                                SVS;
-0.0010  K_1+ K-                                SVS;
-0.0006 K'_1- K+                        SVS;
-0.0006  K'_1+ K-                       SVS;
-0.0029  K- K+ pi- pi+ pi0              PHSP;
-0.00014 phi eta                                SVS;
-#
-0.0014  pi+ pi-                         PHSP;
-0.0008  pi0 pi0                         PHSP;
-0.00061 eta pi0                         PHSP;
-0.00081 eta'  pi0                       PHSP;
-0.0040  eta pi- pi+ pi0                        PHSP;
-0.0017  eta eta                         PHSP;
-0.0013  eta eta'                       PHSP;
-0.0080  rho- pi+                        SVS;
-0.0036  rho+ pi-                       SVS;
-0.0025  rho0 pi0                        SVS;
-0.0032  f_0 pi- pi+                    PHSP;
-0.0016 f_0 pi0 pi0                     PHSP;
-0.0002  pi0  pi0  pi0                   PHSP;
-0.0037  rho0 rho0                      SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00193 pi- pi- pi+ pi+                        PHSP;
-0.0259  pi- pi- pi+ pi+ pi0 pi0                PHSP;
-0.0076  rho- rho+                      SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00034 pi- pi+ pi0 pi0                        PHSP;
-0.0016  omega pi- pi+                  PHSP;
-0.0017  rho0 pi- pi+ pi0               PHSP;
-0.0005  rho0 rho0 pi0                  PHSP;
-0.0042  pi- pi+ pi0 pi0 pi0            PHSP;
-0.0004 pi- pi- pi- pi+ pi+ pi+         PHSP;
-0.0011 pi- pi+ eta                     PHSP;
-0.00045        pi- pi+ eta'                    PHSP;
+# LHCb PR 09 Apr 2004, split into KS/KL
+0.000000000 K0      pi+     pi-                             D_DALITZ; #[Reconstructed PDG2011]
+0.029400000 K_S0    pi+     pi-                             D_DALITZ; #[Reconstructed PDG2011]
+0.027973482 K_L0    pi+     pi-                             D_DALITZ; #[Reconstructed PDG2011]
+#
+0.008300000 K_S0    pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.004444471 K_L0    pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+#
+0.024000000 K*0     pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.010674092 K*0     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.009201803 K*+     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.006257226 K+      rho-    pi0                             PHSP; #[Reconstructed PDG2011]
+0.005327844 K+      pi-     rho0                            PHSP; #[Reconstructed PDG2011]
+0.019000000 K+      pi-     omega                           PHSP; #[Reconstructed PDG2011]
+0.009201803 K+      pi-     eta                             PHSP; #[Reconstructed PDG2011]
+0.007500000 K+      pi-     eta'                            PHSP; #[Reconstructed PDG2011]
+0.013300000 K+      pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.054000000 K_S0    pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.010121984 K_L0    pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+# K+ pi- pi0 pi0 is (15 +/- 5)% in the PDG, but we decrease it to
+# have everything add to 1 and get enough neutral kaons:
+#0.02575  K+  pi-  pi0   pi0              PHSP;
+#
+#0.0143   K0  pi0  pi0   pi0              PHSP;
+0.000000000 K+      pi-     pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.003496685 K+      pi-     pi0     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+#
+0.002800000 K_S0    pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.002696128 K_L0    pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+#
+#0.0638   K0   pi-  pi+   pi0   pi0        PHSP;
+#0.0192   K0   pi-  pi+   pi0   pi0   pi0  PHSP;
+#
+0.002042800 phi     K_S0                                    SVS; #[Reconstructed PDG2011]
+0.002042800 phi     K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 phi     K0                                      SVS; #[Reconstructed PDG2011]
+#
+0.004650000 K_S0    K+      K-                              PHSP; #[Reconstructed PDG2011]
+0.002797348 K_L0    K+      K-                              PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K+      K-                              PHSP; #[Reconstructed PDG2011]
+#
+0.000950000 K_S0    K_S0    K_S0                            PHSP; #[Reconstructed PDG2011]
+0.003940000 K+      K-                                      PHSP; #[Reconstructed PDG2011]
+0.000190000 K_S0    K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.000368072 K_L0    K_L0                                    PHSP; #[Reconstructed PDG2011]
+0.000368072 anti-K*0 K0                                     SVS; #[Reconstructed PDG2011]
+#
+0.000092018 K*0     K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000092018 K*0     K_L0                                    SVS; #[Reconstructed PDG2011]
+0.000000000 K*0     anti-K0                                 SVS; #[Reconstructed PDG2011]
+#
+0.000487696 K*+     K-                                      SVS; #[Reconstructed PDG2011]
+0.001371069 K*-     K+                                      SVS; #[Reconstructed PDG2011]
+0.001288252 K*0     anti-K*0                                SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.000717741 phi     pi0                                     SVS; #[Reconstructed PDG2011]
+0.001012198 phi     pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.002430000 K+      K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.002760541 K+      K-      pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.001280000 K_S0    K_S0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001260647 K_L0    K_L0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.001380270 anti-K0 K0      pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.001397000 pi+     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000800000 pi0     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000640000 eta     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000810000 eta'    pi0                                     PHSP; #[Reconstructed PDG2011]
+0.001670000 eta     eta                                     PHSP; #[Reconstructed PDG2011]
+0.009128189 rho+    pi-                                     SVS; #[Reconstructed PDG2011]
+0.004637709 rho-    pi+                                     SVS; #[Reconstructed PDG2011]
+0.003730000 rho0    pi0                                     SVS; #[Reconstructed PDG2011]
+0.001214638 pi+     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000092018 pi0     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.005620000 pi+     pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+0.009360000 pi+     pi-     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.001510000 pi+     pi-     pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.005521082 pi+     pi-     pi0     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+0.000420000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
 #
 # Doubly Cabibbo suppressed decays:
-0.00014 pi+  K-                         PHSP;
-0.00030 pi+  K-  pi0                    PHSP;
-0.00025 pi+  K-  pi+  pi-              PHSP;
-# Radiative decays
-0.00002 phi gamma                      HELAMP 1.0 0.0 1.0 0.0;
-0.0003  K*0 gamma                      HELAMP 1.0 0.0 1.0 0.0;
-Enddecay
-#
-# These will all be redefined at the end after Decay definitions
-Alias phi_A phi
-Alias f_0_A f_0
-Alias f'_0_A f'_0
-Alias f_2_A f_2
-#
+0.000138027 pi+     K-                                      PHSP; #[Reconstructed PDG2011]
+0.000128825 pi+     K*-                                     PHSP; #[Reconstructed PDG2011]
+0.000276054 pi+     K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000248449 K-      pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+# PR LHCb - 19 Apr. 2004 Add anti-D0 -> mu+ mu-
+0.000000000 mu-     mu+                                     PHSP; #[Reconstructed PDG2011]
+#
+# March 2009 New Modes
+0.000140000 phi     eta                                     PHSP; #[Reconstructed PDG2011]
+0.019000000 K*0     pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.000220000 K+      pi-     pi-     pi+     pi-     pi+     PHSP; #[Reconstructed PDG2011]
+0.000644126 K+      K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.003100000 K+      K-      pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.000221000 K+      K+      K-      pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.005600000 K_S0    eta     pi0                             PHSP; #[Reconstructed PDG2011]
+0.003680721 K_L0    eta     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      eta     pi0                             PHSP; #[Reconstructed PDG2011]
+#
+0.002600000 K_S0    K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.002392469 K_L0    K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K-      pi+                             PHSP; #[Reconstructed PDG2011]
+#
+0.003500000 K_S0    K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.003358658 K_L0    K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K+      pi-                             PHSP; #[Reconstructed PDG2011]
+#
+0.000310000 K_S0    K_S0    K+      pi-                     PHSP; #[Reconstructed PDG2011]
+0.000294458 K_L0    K_L0    K+      pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      K+      pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.000310000 K_S0    K_S0    K-      pi+                     PHSP; #[Reconstructed PDG2011]
+0.000294458 K_L0    K_L0    K-      pi+                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      K-      pi+                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K+      pi-     pi+     e-      anti-nu_e       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001820000 rho0    rho0                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001090000 eta     pi-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001600000 omega   pi-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000450000 eta'    pi-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001260000 eta     eta'                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000027000 phi     gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000328000 K*0     gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+# Updated to PDG 2008
 Decay D_s+
-0.0217  phi   e+     nu_e              PHOTOS  ISGW2;
-0.0248  eta   e+     nu_e              PHOTOS  ISGW2;
-0.0086  eta'  e+     nu_e              PHOTOS  ISGW2;
-0.0018  K0     e+     nu_e             PHOTOS  ISGW2;
-0.0019 K*0   e+     nu_e               PHOTOS  ISGW2;
-0.0031  f_0   e+     nu_e                      PHOTOS  ISGW2;
-0.0206 phi   mu+    nu_mu              PHOTOS  ISGW2;
-0.0235  eta   mu+    nu_mu                     PHOTOS  ISGW2;
-0.0082  eta'  mu+    nu_mu                     PHOTOS  ISGW2;
-0.0017  K0     mu+    nu_mu            PHOTOS  ISGW2;
-0.0018  K*0   mu+    nu_mu                     PHOTOS  ISGW2;
-0.0029  f_0   mu+     nu_mu            PHOTOS  ISGW2;
-0.0061 mu+   nu_mu                     PHOTOS  SLN;
-0.0599         tau+  nu_tau                    SLN;
-0.0537  K- K+ pi+                      D_DALITZ;
-0.0206 phi_A   pi+                     SVS;
-0.0154         eta   pi+                       PHSP;
-0.0367         eta'  pi+                       PHSP;
-0.0025         omega  pi+                      SVS;
-0.0103  f_0_A    pi+                    PHSP;
-0.0062  f'_0_A pi+                     PHSP;
-0.0018  f_2_A    pi+                    STS;
-0.0735  phi   rho+                             SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0020 K+ anti-K_0*0N                  PHSP;
-0.0017 K_L0 K_L0 pi+ pi+ pi-           PHSP;
-0.0017 K_S0 K_S0 pi+ pi+ pi-           PHSP;
-0.0005 K_L0 K_L0 pi+ pi0 pi0           PHSP;
-0.0005 K_S0 K_S0 pi+ pi0 pi0           PHSP;
-0.0236 phi a_1+                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0758  rho+  eta                              SVS;
-0.0387  rho+  eta'                             SVS;
-0.0056 pi+   pi0   pi0                 PHSP;
-0.0237  eta   pi+   pi-   pi+                  PHSP;
-0.0325  eta   pi+   pi0   pi0                  PHSP;
-0.0293  anti-K0     K+                         PHSP;
-0.0124  K*BR   K+                              SVS;
-0.0377  K*+   anti-K0                          SVS;
-0.0741  anti-K*0   K*+                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0048  anti-K*0   K*+    pi0                  PHSP;
-0.0048  anti-K*0   K*0    pi+                  PHSP;
-0.0199  anti-K0     K+    pi+   pi-            PHSP;
-0.0085  anti-K0     K+    pi0   pi0            PHSP;
-0.0019  K+    K-    pi+   pi0   pi0            PHSP;
-0.0070  K+    anti-K0  pi0  pi0  pi0   PHSP;
-0.0014  eta   K+                               PHSP;
-0.0015  eta'  K+                               PHSP;
-0.0005  K+    K-    K+                         PHSP;
-0.0005  K0 anti-K0 K+                          PHSP;
-0.0016 rho(2S)0 pi+                    SVS;
-0.0015 rho(2S)+ pi0                    SVS;
-0.0067 pi+ pi+ pi+ pi- pi-             PHSP;
-0.0107 pi+ pi+ pi- pi0                 PHSP;
-0.0288 pi+ pi+ pi- pi0 pi0             PHSP;
-0.0455 pi+ pi+ pi- pi0 pi0 pi0         PHSP;
-0.0177 pi+ pi+ pi+ pi- pi- pi0         PHSP;
-0.0085 pi+ pi0 pi0 pi0 pi0             PHSP;
-0.0007  K+    pi0                              PHSP;
-0.0024  K0    pi+                              PHSP;
-0.0026  rho0  K+                               SVS;
-0.0050  rho+  K0                       SVS;
-0.0022 K*0   pi+                       SVS;
-0.0010  K*+   pi0                      SVS;
-0.0046 K*0   rho+                      SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0023  K*+   rho0                     SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0018 rho(2S)0 K+                     SVS;
-0.0251 K'*0 pi+                        SVS;
-0.0008 K_0*0 pi+                       PHSP;
-0.0003 K+ pi+ pi-                      PHSP;
-0.0035         rho(2S)+ K0                     SVS;
-0.0067 K'*+ pi0                        SVS;
-0.0004 K_0*+ pi0                       PHSP;
-0.0003  K+ K+ pi-                              PHSP;
-0.0014  p+ anti-n0                             PHSP;
-Enddecay
-#
+0.024900000 phi     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.026700000 eta     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.009900000 eta'    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 anti-K0 e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 anti-K*0 e+      nu_e                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.018309605 phi     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.022845082 eta     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.008186726 eta'    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 anti-K0 mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 anti-K*0 mu+     nu_mu                          PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.005800000 mu+     nu_mu                                   PHOTOS  SLN; #[Reconstructed PDG2011]
+0.031100000 tau+    nu_tau                                  SLN; #[Reconstructed PDG2011]
+### Lange Nov14, 2004 - average cleo + babar (prelim) using stat error only..
+0.045000000 phi     pi+                                     SVS; #[Reconstructed PDG2011]
+0.015600000 eta     pi+                                     PHSP; #[Reconstructed PDG2011]
+0.038000000 eta'    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.002300000 omega   pi+                                     SVS; #[Reconstructed PDG2011]
+0.000200000 rho0    pi+                                     SVS; #[Reconstructed PDG2011]
+0.000304906 rho+    pi0                                     SVS; #[Reconstructed PDG2011]
+#?
+0.000076226 pi+     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.007622650 f_0     pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000914718 f_2     pi+                                     PHSP; #[Reconstructed PDG2011]
+0.084000000 phi     rho+                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.089000000 rho+    eta                                     SVS; #[Reconstructed PDG2011]
+0.125000000 rho+    eta'                                    SVS; #[Reconstructed PDG2011]
+0.010800000 pi+     pi-     pi+                             PHSP; #[Reconstructed PDG2011]
+0.006500000 pi+     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.007622650 phi     pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.011433975 eta     pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.011433975 eta'    pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.012100000 phi     pi+     pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.003811325 phi     pi+     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.003811325 eta     pi+     pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.003811325 eta     pi+     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.014900000 K_S0    K+                                      PHSP; #[Reconstructed PDG2011]
+0.011472088 K_L0    K+                                      PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K+                                      PHSP; #[Reconstructed PDG2011]
+#
+0.030490600 anti-K*0 K+                                     SVS; #[Reconstructed PDG2011]
+0.054000000 K*+     anti-K0                                 SVS; #[Reconstructed PDG2011]
+0.072000000 anti-K*0 K*+                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.002286795 anti-K0 K+      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000914718 anti-K*0 K+      pi0                            PHSP; #[Reconstructed PDG2011]
+0.000914718 K*+     anti-K0 pi0                             PHSP; #[Reconstructed PDG2011]
+0.003049060 anti-K*0 K*+     pi0                            PHSP; #[Reconstructed PDG2011]
+0.003811325 K+      K-      pi+                             PHSP; #[Reconstructed PDG2011]
+#
+0.009600000 K_S0    K+      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.007470197 K_L0    K+      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K+      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.000762265 anti-K0 K+      pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K+      K-      pi+     pi-     pi+             PHSP; #[Reconstructed PDG2011]
+0.000152453 phi     K+                                      SVS; #[Reconstructed PDG2011]
+0.001390000 eta     K+                                      PHSP; #[Reconstructed PDG2011]
+0.001600000 eta'    K+                                      PHSP; #[Reconstructed PDG2011]
+0.000152453 eta     K+      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000152453 eta     K+      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000152453 eta'    K+      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000152453 eta'    K+      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000490000 K+      K-      K+                              PHSP; #[Reconstructed PDG2011]
+#
+0.001200000 K_S0    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000968077 K_L0    pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi+                                     PHSP; #[Reconstructed PDG2011]
+#
+0.001143397 rho+    K0                                      SVS; #[Reconstructed PDG2011]
+0.002700000 rho0    K+                                      SVS; #[Reconstructed PDG2011]
+0.010000000 K0      pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.001905662 a_1+    K0                                      SVS; #[Reconstructed PDG2011]
+0.006021893 K*0     pi+                                     SVS; #[Reconstructed PDG2011]
+0.003811325 K*0     rho+                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.003811325 K*0     pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+#
+# March 2009 New Modes
+0.000820000 K+      pi0                                     PHSP; #[Reconstructed PDG2011]
+0.004200000 K+      pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.008000000 pi+     pi+     pi+     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+0.049000000 pi+     pi+     pi+     pi-     pi-     pi0     PHSP; #[Reconstructed PDG2011]
+0.001300000 p+      anti-n0                                 PHSP; #[Reconstructed PDG2011]
+#
+0.000840000 K_S0    K_S0    pi+     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.000686038 K_L0    K_L0    pi+     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      pi+     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+#
+0.002900000 K_S0    pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.002424003 K_L0    pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi+     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+# Doubly Cabibbo suppressed
+0.000129000 K+      K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.003700000 K0      e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 K*0     e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 K+      K-      pi+     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.028000000 omega   pi+     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.016000000 omega   pi+     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+# Updated to PDG 2008
 Decay D_s-
-0.0217  phi   e-     anti-nu_e         PHOTOS  ISGW2;
-0.0248  eta   e-     anti-nu_e         PHOTOS  ISGW2;
-0.0086  eta'  e-     anti-nu_e         PHOTOS  ISGW2;
-0.0018  anti-K0    e-     anti-nu_e     PHOTOS  ISGW2;
-0.0019  anti-K*0   e-     anti-nu_e     PHOTOS  ISGW2;
-0.0031  f_0   e-     anti-nu_e         PHOTOS  ISGW2;
-0.0206  phi   mu-    anti-nu_mu        PHOTOS  ISGW2;
-0.0235  eta   mu-    anti-nu_mu        PHOTOS  ISGW2;
-0.0082  eta'  mu-    anti-nu_mu        PHOTOS  ISGW2;
-0.0017  anti-K0    mu-    anti-nu_mu    PHOTOS  ISGW2;
-0.0018  anti-K*0   mu-    anti-nu_mu    PHOTOS  ISGW2;
-0.0029  f_0   mu-    anti-nu_mu                PHOTOS  ISGW2;
-0.0061  mu-   anti-nu_mu               PHOTOS  SLN;
-0.0599  tau-  anti-nu_tau              SLN;
-0.0537 K+ K- pi-                       D_DALITZ;
-0.0206  phi_A   pi-                    SVS;
-0.0154  eta   pi-                              PHSP;
-0.0367  eta'  pi-                              PHSP;
-0.0025  omega  pi-                      SVS;
-0.0103  f_0_A    pi-                    PHSP;
-0.0062  f'_0_A pi-                     PHSP;
-0.0018  f_2_A    pi-                    STS;
-0.0735  phi   rho-                             SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0020 K- K_0*0N                       PHSP;
-0.0017 K_L0 K_L0 pi- pi- pi+           PHSP;
-0.0017 K_S0 K_S0 pi- pi- pi+           PHSP;
-0.0005         K_L0 K_L0 pi- pi0 pi0           PHSP;
-0.0005  K_S0 K_S0 pi- pi0 pi0          PHSP;
-0.0236 phi a_1-                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0758  rho-  eta                      SVS;
-0.0387  rho-  eta'                             SVS;
-0.0056  pi-   pi0   pi0                        PHSP;
-0.0237 eta pi- pi+ pi-                 PHSP;
-0.0325  eta pi- pi0 pi0                        PHSP;
-0.0293  K0    K-                       PHSP;
-0.0124  K*0R   K-                       SVS;
-0.0377  K*-   K0                               SVS;
-0.0741  K*0   K*-                              SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0048  K*0 K*- pi0                    PHSP;
-0.0048 K*0 anti-K*0 pi-                PHSP;
-0.0199 K0 K- pi- pi+                   PHSP;
-0.0085 K0 K- pi0 pi0                   PHSP;
-0.0019 K- K+ pi- pi0 pi0               PHSP;
-0.0070 K- K0 pi0 pi0 pi0               PHSP;
-0.0014  eta   K-                               PHSP;
-0.0015  eta'  K-                               PHSP;
-0.0005  K-    K-    K+                         PHSP;
-0.0005  anti-K0 K0 K-                  PHSP;
-0.0016 rho(2S)0 pi-                    SVS;
-0.0015  rho(2S)- pi0                   SVS;
-0.0067 pi- pi- pi- pi+ pi+             PHSP;
-0.0107 pi- pi- pi+ pi0                 PHSP;
-0.0288 pi- pi- pi+ pi0 pi0             PHSP;
-0.0455 pi- pi- pi+ pi0 pi0 pi0         PHSP;
-0.0177 pi- pi- pi- pi+ pi+ pi0         PHSP;
-0.0085 pi- pi0 pi0 pi0 pi0             PHSP;
-0.0007  K- pi0                         PHSP;
-0.0024  anti-K0     pi-                        PHSP;
-0.0026  rho0  K-                               SVS;
-0.0050  rho-  anti-K0                  SVS;
-0.0022  anti-K*0   pi-                         SVS;
-0.0010 K*- pi0                         SVS;
-0.0046  anti-K*0   rho-                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0023  K*- rho0                       SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.0018  rho(2S)0 K-                    SVS;
-0.0251 anti-K'*0 pi-                   SVS;
-0.0008 anti-K_0*0 pi-                  PHSP;
-0.0003 K- pi- pi+                      PHSP;
-0.0035  rho(2S)- anti-K0               SVS;
-0.0067 K'*- pi0                        SVS;
-0.0004 K_0*- pi0                       PHSP;
-0.0003 K- K- pi+                       PHSP;
-0.0014  anti-p- n0                     PHSP;
+0.024900000 phi     e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.026700000 eta     e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.009900000 eta'    e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 K0      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 K*0     e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.018309605 phi     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.022845082 eta     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.008186726 eta'    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 K0      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 K*0     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.005800000 mu-     anti-nu_mu                              PHOTOS    SLN; #[Reconstructed PDG2011]
+0.031100000 tau-    anti-nu_tau                             SLN; #[Reconstructed PDG2011]
+0.045000000 phi     pi-                                     SVS; #[Reconstructed PDG2011]
+0.015600000 eta     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.038000000 eta'    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.002300000 omega   pi-                                     SVS; #[Reconstructed PDG2011]
+0.000200000 rho0    pi-                                     SVS; #[Reconstructed PDG2011]
+0.000304906 rho-    pi0                                     SVS; #[Reconstructed PDG2011]
+0.000076226 pi-     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.007622650 f_0     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000914718 f_2     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.084000000 phi     rho-                                    SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.089000000 rho-    eta                                     SVS; #[Reconstructed PDG2011]
+0.125000000 rho-    eta'                                    SVS; #[Reconstructed PDG2011]
+0.010800000 pi-     pi-     pi+                             PHSP; #[Reconstructed PDG2011]
+0.006500000 pi-     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.007622650 phi     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.011433975 eta     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.011433975 eta'    pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.012100000 phi     pi-     pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.003811325 phi     pi-     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.003811325 eta     pi-     pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.003811325 eta     pi-     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+#
+0.014900000 K_S0    K-                                      PHSP; #[Reconstructed PDG2011]
+0.011472088 K_L0    K-                                      PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K-                                      PHSP; #[Reconstructed PDG2011]
+#
+0.030490600 K*0     K-                                      SVS; #[Reconstructed PDG2011]
+0.054000000 K*-     K0                                      SVS; #[Reconstructed PDG2011]
+0.072000000 K*0     K*-                                     SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.002286795 K0      K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000914718 K*0     K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000914718 K*-     K0      pi0                             PHSP; #[Reconstructed PDG2011]
+0.003049060 K*0     K*-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.003811325 K+      K-      pi-                             PHSP; #[Reconstructed PDG2011]
+#
+0.009600000 K_S0    K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.007470197 K_L0    K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+#
+0.000762265 K0      K-      pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K-      K+      pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.000152453 phi     K-                                      SVS; #[Reconstructed PDG2011]
+0.001390000 eta     K-                                      PHSP; #[Reconstructed PDG2011]
+0.001600000 eta'    K-                                      PHSP; #[Reconstructed PDG2011]
+0.000152453 eta     K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000152453 eta     K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000152453 eta'    K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000152453 eta'    K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000490000 K-      K-      K+                              PHSP; #[Reconstructed PDG2011]
+#
+0.001200000 K_S0    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000968077 K_L0    pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 pi-                                     PHSP; #[Reconstructed PDG2011]
+#
+0.001143397 rho-    anti-K0                                 SVS; #[Reconstructed PDG2011]
+0.002700000 rho0    K-                                      SVS; #[Reconstructed PDG2011]
+0.010000000 anti-K0 pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.001905662 a_1-    anti-K0                                 SVS; #[Reconstructed PDG2011]
+0.006021893 anti-K*0 pi-                                    SVS; #[Reconstructed PDG2011]
+0.003811325 anti-K*0 rho-                                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.003811325 anti-K*0 pi-     pi0                            PHSP; #[Reconstructed PDG2011]
+#
+# March 2009 New Modes
+0.000820000 K-      pi0                                     PHSP; #[Reconstructed PDG2011]
+0.004200000 K-      pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.008000000 pi+     pi+     pi-     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+0.049000000 pi+     pi+     pi-     pi-     pi-     pi0     PHSP; #[Reconstructed PDG2011]
+0.001300000 anti-p- n0                                      PHSP; #[Reconstructed PDG2011]
+#
+0.000840000 K_S0    K_S0    pi+     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+0.000686038 K_L0    K_L0    pi+     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-K0 K0      pi+     pi-     pi-             PHSP; #[Reconstructed PDG2011]
+#
+0.002900000 K_S0    pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+0.002424003 K_L0    pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000000000 K0      pi+     pi-     pi-                     PHSP; #[Reconstructed PDG2011]
+# Doubly Cabibbo suppressed
+0.000129000 K-      K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.003700000 anti-K0 e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 anti-K*0 e-      anti-nu_e                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 K-      K+      pi-     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.028000000 omega   pi-     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.016000000 omega   pi-     pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 #   D**
@@ -6352,28 +6691,20 @@ SetLineshapePW anti-D_10 anti-D*0 pi0 2
 SetLineshapePW anti-D_10 D*- pi+ 2
 
 Decay D_1+
-0.26    D*+ pi0                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.53    D*0 pi+                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.14 D+ pi+ pi-                        PHSP;
-0.07 D+ pi0 pi0                        PHSP;
+0.3333    D*+ pi0                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
+0.6667    D*0 pi+                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
 Enddecay
 Decay D_1-
-0.26    D*- pi0                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.53    anti-D*0 pi-                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.14 D- pi+ pi-                        PHSP;
-0.07 D- pi0 pi0                        PHSP;
+0.3333    D*- pi0                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
+0.6667    anti-D*0 pi-                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
 Enddecay
 Decay D_10
-0.26    D*0 pi0                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.53    D*+ pi-                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.14 D0 pi+ pi-                        PHSP;
-0.07 D0 pi0 pi0                        PHSP;
+0.3333    D*0 pi0                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
+0.6667    D*+ pi-                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
 Enddecay
 Decay anti-D_10
-0.26    anti-D*0 pi0                   VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.53    D*- pi+                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
-0.14 anti-D0 pi+ pi-                        PHSP;
-0.07 anti-D0 pi0 pi0                        PHSP;
+0.3333    anti-D*0 pi0                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
+0.6667    D*- pi+                        VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0;
 Enddecay
 #
 Decay D'_1+
@@ -6389,9 +6720,8 @@ Decay D'_10
 0.3333    D*0 pi0                        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 Decay anti-D'_10
-0.6667    D*- pi+                        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
 0.3333    anti-D*0 pi0                   VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
-
+0.6667    D*- pi+                        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
 
@@ -6423,9 +6753,8 @@ Decay D_2*0
 0.4590    D+  pi-                        TSS;
 Enddecay
 Decay anti-D_2*0
-0.2090    D*- pi+                        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
 0.1030    anti-D*0 pi0                        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
-
+0.2090    D*- pi+                        TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0;
 0.2290    anti-D0 pi0                        TSS;
 0.4590    D-  pi+                        TSS;
 Enddecay
@@ -6483,9 +6812,8 @@ Decay D(2S)0
 0.3333    D*0 pi0                        SVS;
 Enddecay
 Decay anti-D(2S)0
-0.6667    D*- pi+                        SVS;
 0.3333    anti-D*0 pi0                        SVS;
-
+0.6667    D*- pi+                        SVS;
 Enddecay
 Decay D(2S)+
 0.3333    D*+ pi0                        SVS;
@@ -6502,9 +6830,8 @@ Decay D*(2S)0
 0.3333    D+  pi-                        VSS;
 Enddecay
 Decay anti-D*(2S)0
-0.3333    D*- pi+                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.1667    anti-D*0 pi0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-
+0.3333    D*- pi+                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.1667    anti-D0  pi0                       VSS;
 0.3333    D-  pi+                        VSS;
 Enddecay
@@ -6522,12 +6849,19 @@ Decay D*(2S)-
 Enddecay
 #
 #
-#  Strange Mesons
+#  Strange Mesons updated to PDG 2008
 #
 #
 Decay K_S0
-0.6861    pi+  pi-                          PHSP;
-0.3139    pi0  pi0                          PHSP;
+0.691321852 pi+     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.306221852 pi0     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000000201 pi+     pi-     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001722185 pi+     pi-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000042831 pi+     pi-     e+      e-                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000025 pi0     gamma   gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000002399 gamma   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000344328 pi+     e-      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000344328 pi-     e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 #  K_L0 is decayed in GEANT
@@ -6546,20 +6880,23 @@ Decay K*0
 0.3323      K0  pi0                        VSS;
 0.0020      K0  gamma                       VSP_PWAVE;
 Enddecay
+#
 Decay anti-K*0
 0.6657      K-  pi+                        VSS;
 0.3323      anti-K0   pi0                        VSS;
 0.0020      anti-K0   gamma                       VSP_PWAVE;
 Enddecay
+#
 Decay K*+
-0.6660      K0  pi+                        VSS;
-0.3330      K+  pi0                        VSS;
-0.0010      K+  gamma                       VSP_PWAVE;
+0.6657      K0  pi+                        VSS;
+0.3323      K+  pi0                        VSS;
+0.0020      K+  gamma                       VSP_PWAVE;
 Enddecay
+#
 Decay K*-
-0.6660      anti-K0   pi-                        VSS;
-0.3330      K-  pi0                        VSS;
-0.0010      K-  gamma                       VSP_PWAVE;
+0.6657      anti-K0   pi-                        VSS;
+0.3323      K-  pi0                        VSS;
+0.0020      K-  gamma                       VSP_PWAVE;
 Enddecay
 #
 # The decays below are for particle aliases and used when
@@ -6625,6 +6962,7 @@ Decay K_10
 0.1244   K+    pi- pi0                   PHSP;
 0.0412   K0    pi0 pi0                   PHSP;
 Enddecay
+#
 Decay anti-K_10
 0.2800   rho+  K-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.1400   rho0  anti-K0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6648,6 +6986,7 @@ Decay K_1+
 0.1244   K0    pi+ pi0                   PHSP;
 0.0412   K+    pi0 pi0                   PHSP;
 Enddecay
+#
 Decay K_1-
 0.2800   rho-  anti-K0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.1400   rho0  K-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6669,6 +7008,7 @@ Decay K'_1+
 0.0133   K+  pi+  pi-                    PHSP;
 0.0067   K+  pi0  pi0                    PHSP;
 Enddecay
+#
 Decay K'_1-
 0.6300   anti-K*0  pi-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.3100   K*-  pi0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6678,6 +7018,7 @@ Decay K'_1-
 0.0133   K-  pi+  pi-                    PHSP;
 0.0067   K-  pi0  pi0                    PHSP;
 Enddecay
+#
 Decay K'_10
 0.6300   K*+  pi-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.3100   K*0  pi0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6687,6 +7028,7 @@ Decay K'_10
 0.0133   K0  pi+  pi-                    PHSP;
 0.0067   K0  pi0  pi0                    PHSP;
 Enddecay
+#
 Decay anti-K'_10
 0.6300   K*- pi+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.3100   anti-K*0 pi0                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6698,55 +7040,62 @@ Decay anti-K'_10
 Enddecay
 #
 Decay K_2*+
-0.3310   K0  pi+                         TSS;
-0.1660   K+  pi0                         TSS;
-0.1680   K*0 pi+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0840   K*+ pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0540   K*0 pi+ pi0                     PHSP;
-0.0540   K*+ pi+ pi-                     PHSP;
-0.0540   K*+ pi0 pi0                     PHSP;
-0.0590   rho+ K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0300   rho0 K+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.3340   K0  pi+                         TSS;
+0.1670   K+  pi0                         TSS;
+0.1645   K*0 pi+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0835   K*+ pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0450   K*0 pi+ pi0                     PHSP;
+0.0450   K*+ pi+ pi-                     PHSP;
+0.0450   K*+ pi0 pi0                     PHSP;
+0.0580   rho+ K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   rho0 K+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   omega K+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
 Enddecay
+#
 Decay K_2*-
-0.3310   anti-K0   pi-                         TSS;
-0.1660   K-  pi0                         TSS;
-0.1680   anti-K*0 pi-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0840   K*- pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0540   anti-K*0 pi- pi0                     PHSP;
-0.0540   K*- pi+ pi-                     PHSP;
-0.0540   K*- pi0 pi0                     PHSP;
-0.0590   rho- anti-K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0300   rho0 K-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.3340   anti-K0   pi-                         TSS;
+0.1670   K-  pi0                         TSS;
+0.1645   anti-K*0 pi-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0835   K*- pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0450   anti-K*0 pi- pi0                     PHSP;
+0.0450   K*- pi+ pi-                     PHSP;
+0.0450   K*- pi0 pi0                     PHSP;
+0.0580   rho- K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   rho0 K-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   omega K-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
 Enddecay
+#
 Decay K_2*0
-0.3310   K+  pi-                         TSS;
-0.1660   K0  pi0                         TSS;
-0.1680   K*+ pi-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0840   K*0 pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0540   K*0 pi+ pi-                     PHSP;
-0.0540   K*0 pi0 pi0                     PHSP;
-0.0540   K*+ pi- pi0                     PHSP;
-0.0590   rho- K+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0300   rho0 K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.3340   K+  pi-                         TSS;
+0.1670   K0  pi0                         TSS;
+0.1645   K*+ pi-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0835   K*0 pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0450   K*0 pi+ pi-                     PHSP;
+0.0450   K*0 pi0 pi0                     PHSP;
+0.0450   K*+ pi- pi0                     PHSP;
+0.0580   rho- K+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   rho0 K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   omega K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
 Enddecay
+#
 Decay anti-K_2*0
-0.3310   K-  pi+                         TSS;
-0.1660   anti-K0   pi0                         TSS;
-0.1680   K*- pi+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0840   anti-K*0 pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0540   anti-K*0 pi+ pi-                     PHSP;
-0.0540   anti-K*0 pi0 pi0                     PHSP;
-0.0540   K*- pi+ pi0                     PHSP;
-0.0590   rho+ K-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0300   rho0 anti-K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.3340   K-  pi+                         TSS;
+0.1670   anti-K0   pi0                         TSS;
+0.1645   K*- pi+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0835   anti-K*0 pi0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0450   anti-K*0 pi+ pi-                     PHSP;
+0.0450   anti-K*0 pi0 pi0                     PHSP;
+0.0450   K*- pi+ pi0                     PHSP;
+0.0580   rho+ K-                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   rho0 anti-K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0290   omega anti-K0                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
 Enddecay
 
 
 
 
 # Decay K*(1410)
-Decay K'*0                    
+Decay K'*0
 0.0467   K+  pi-                     VSS;
 0.0233   K0  pi0                     VSS;
 0.5760   K*+ pi-                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6755,7 +7104,7 @@ Decay K'*0
 0.0220   rho0 K0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
-Decay anti-K'*0                          
+Decay anti-K'*0
 0.0467   K-  pi+                     VSS;
 0.0233   anti-K0   pi0               VSS;
 0.5760   K*- pi+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6764,7 +7113,7 @@ Decay anti-K'*0
 0.0220   rho0 anti-K0                VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
-Decay K'*+                              
+Decay K'*+
 0.0467   K0  pi+                     VSS;
 0.0233  K+  pi0                      VSS;
 0.5760   K*0 pi+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6773,19 +7122,19 @@ Decay K'*+
 0.0220   rho0 K+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
-Decay K'*-                             
+Decay K'*-
 0.0467   anti-K0   pi-               VSS;
 0.0233   K-  pi0                     VSS;
 0.5760   anti-K*0 pi-                VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.2880   K*- pi0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0440   rho- anti-K0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+0.0440   rho- K0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.0220  rho0 K-                      VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
 
 
 # Decay K*(1680)
-Decay K''*0                
+Decay K''*0
 0.2580   K+  pi-                     VSS;
 0.1290   K0  pi0                     VSS;
 0.2093   K*+ pi-                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6794,7 +7143,7 @@ Decay K''*0
 0.0997   rho0 K0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
-Decay anti-K''*0              
+Decay anti-K''*0
 0.2580   K-  pi+                     VSS;
 0.1290   anti-K0   pi0               VSS;
 0.2093   K*- pi+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6803,8 +7152,8 @@ Decay anti-K''*0
 0.0997   rho0 anti-K0                VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
-Decay K''*+                            
-0.2580  K0  pi+                     VSS;
+Decay K''*+
+0.2580   K0  pi+                     VSS;
 0.1290   K+  pi0                     VSS;
 0.2093   K*0 pi+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.1047   K*+ pi0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
@@ -6812,12 +7161,12 @@ Decay K''*+
 0.0997   rho0 K+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 #
-Decay K''*-                       
+Decay K''*-
 0.2580   anti-K0   pi-               VSS;
 0.1290   K-  pi0                     VSS;
 0.2093   anti-K*0 pi-                VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.1047   K*- pi0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.1993   rho- anti-K0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+0.1993   rho- K0                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.0997   rho0 K-                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
 
@@ -6837,21 +7186,6 @@ Decay anti-Xsu
 1.00000     anti-u s  PYTHIA 11;
 Enddecay
 
-Decay Xdd
-1.00000     d anti-d  PYTHIA 11;
-Enddecay
-     
-Decay anti-Xdd
-1.00000     anti-d d  PYTHIA 11;
-Enddecay
-   
-Decay Xdu
-1.00000     u anti-d  PYTHIA 11;
-Enddecay
-   
-Decay anti-Xdu
-1.00000     anti-u d  PYTHIA 11;
-Enddecay
 # Xss decays can be uncommented when Jst74/lucomp.F recognizes Xss
 Decay Xss
 1.00000     s anti-s  PYTHIA 11;
@@ -6862,77 +7196,25 @@ Decay anti-Xss
 Enddecay
 
 #
-#  Light Mesons
+#  Light Mesons Updated to PDG 2008
 #
 Decay pi0
-0.9880    gamma gamma                      PHSP;
-0.0120    e+  e- gamma                     PI0_DALITZ;
+0.988228297 gamma   gamma                                   PHSP; #[Reconstructed PDG2011]
+0.011738247 e+      e-      gamma                           PI0_DALITZ; #[Reconstructed PDG2011]
+0.000033392 e+      e+      e-      e-                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000065 e+      e-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay eta
-0.39466   gamma gamma                    PHSP;
-0.3251    pi0 pi0 pi0                    PHSP;
-0.2260    pi- pi+ pi0                    ETA_DALITZ;
-0.0468    gamma pi- pi+                  PHSP;
-0.0060    gamma e+  e-                   PHSP;
-0.00031   gamma mu+ mu-                  PHSP;
-0.00072   gamma gamma pi0                PHSP;
-0.00040   pi+ pi- e+  e-                 PHSP;
-Enddecay
-#
-Decay eta(1405)
-0.3283     rho+ rho-                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.1642     rho0 rho0                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.1000     K- K+ pi0                    PHSP;
-0.1000     K0 anti-K0 pi0               PHSP;
-0.1000     K- K0 pi+                    PHSP;
-0.1000     K+ anti-K0 pi-               PHSP;
-0.0337     eta pi+ pi-                  PHSP;
-0.0168     eta pi0 pi0                  PHSP;
-0.0150     a_00 pi0                    PHSP;
-0.0150    a_0+ pi-                     PHSP;
-0.0150     a_0- pi+                    PHSP;
-0.0120     rho0 gamma                   SVP_HELAMP 1.0 0.0 1.0 0.0;
-Enddecay
-#
-Decay eta(1475)
-0.2500    K*0 anti-K0                  PHSP;
-0.2500    anti-K*0 K0                  PHSP;
-0.2500    K*+ K-                       PHSP;
-0.2500    K*- K+                       PHSP;
-Enddecay
-#
-Decay f_0(1710)
-0.2130   K+ K-                           PHSP;
-0.1070   K_S0 K_S0                       PHSP;
-0.1070   K_L0 K_L0                       PHSP;
-0.2160   eta eta                         PHSP;
-0.1340   pi+ pi-                         PHSP;
-0.0670   pi0 pi0                         PHSP;
-0.1560   omega omega                     PHSP;
-Enddecay
-#
-Decay f_2(1950)
-0.3750   K*0 anti-K*0                    PHSP;
-0.3750   K*+ K*-                         PHSP;
-0.0970   K+ K-                           PHSP;
-0.0480   K_S0 K_S0                       PHSP;
-0.0480   K_L0 K_L0                       PHSP;
-0.0500   pi+ pi-                         PHSP;
-0.0070   eta eta                         PHSP;
-Enddecay
-#
-Decay f_4(2050)
-0.5810   omega omega                     PHSP;
-0.2580   pi+ pi-                         PHSP;
-0.1290   pi0 pi0                         PHSP;
-0.0078   K+ K-                           PHSP;
-0.0039   K_S0 K_S0                       PHSP;
-0.0039   K_L0 K_L0                       PHSP;
-0.0047   eta eta                         PHSP;
-0.0039   a_2+ pi-                        PHSP;
-0.0039   a_2- pi+                        PHSP;
-0.0039   a_20 pi0                        PHSP;
+0.393100000 gamma   gamma                                   PHSP; #[Reconstructed PDG2011]
+0.325700000 pi0     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.227400000 pi-     pi+     pi0                             ETA_DALITZ; #[Reconstructed PDG2011]
+0.046000000 gamma   pi-     pi+                             PHSP; #[Reconstructed PDG2011]
+0.007000000 gamma   e+      e-                              PHSP; #[Reconstructed PDG2011]
+0.000310000 gamma   mu+     mu-                             PHSP; #[Reconstructed PDG2011]
+0.000270000 gamma   gamma   pi0                             PHSP; #[Reconstructed PDG2011]
+0.000214200 pi+     pi-     e+      e-                      PHSP; #[Reconstructed PDG2011]
+0.000005800 mu+     mu-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay rho0
@@ -6946,38 +7228,53 @@ Decay rho-
 Enddecay
 #
 Decay omega
-0.8880    pi-  pi+  pi0                  OMEGA_DALITZ;
-0.0850    pi0  gamma                      VSP_PWAVE;
-0.0221    pi-  pi+                       VSS;
-0.0008    eta  gamma                      VSP_PWAVE;
-0.0006    pi0  e+  e-             PHOTOS PHSP;
-0.0001    pi0  mu+ mu-            PHOTOS PHSP;
-0.0020    pi+  pi- gamma                  PHSP;
-0.0004    pi0  pi0 gamma                  PHSP;
-0.0010    pi+ pi- pi+ pi-                PHSP;
+0.892000000 pi-     pi+     pi0                             OMEGA_DALITZ; #[Reconstructed PDG2011]
+0.082800000 pi0     gamma                                   VSP_PWAVE; #[Reconstructed PDG2011]
+0.015300000 pi-     pi+                                     VSS; #[Reconstructed PDG2011]
+0.000460000 eta     gamma                                   VSP_PWAVE; #[Reconstructed PDG2011]
+0.000770000 pi0     e+      e-                              PHOTOS PHSP; #[Reconstructed PDG2011]
+0.000130000 pi0     mu+     mu-                             PHOTOS PHSP; #[Reconstructed PDG2011]
+0.00150    pi+  pi- gamma                  PHSP;
+0.000066000 pi0     pi0     gamma                           PHSP; #[Reconstructed PDG2011]
+0.00050    pi+ pi- pi+ pi-                PHSP;
+0.000072800 e+      e-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000090000 mu+     mu-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay eta'
-0.4370     pi+ pi- eta                   PHSP;
-0.2080     pi0 pi0 eta                   PHSP;
-0.3020     rho0  gamma                   SVP_HELAMP  1.0 0.0 1.0 0.0;
-0.0302     omega gamma                   SVP_HELAMP  1.0 0.0 1.0 0.0;
-0.0212     gamma gamma                     PHSP;
-0.0015     pi0 pi0 pi0                   PHSP;
-0.0001     gamma mu- mu+         PHOTOS   PHSP;
+0.432000000 pi+     pi-     eta                             PHSP; #[Reconstructed PDG2011]
+0.217000000 pi0     pi0     eta                             PHSP; #[Reconstructed PDG2011]
+0.293511000 rho0    gamma                                   SVP_HELAMP  1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.027500000 omega   gamma                                   SVP_HELAMP  1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.022200000 gamma   gamma                                   PHSP; #[Reconstructed PDG2011]
+0.001680000 pi0     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.000109000 gamma   mu-     mu+                             PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.003600000 pi+     pi-     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002400000 pi+     pi-     e+      e-                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay phi
-0.4910   K+   K-                         VSS;
-0.3410   K_L0  K_S0                        VSS;
-0.0430   rho+ pi-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0430   rho0 pi0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0430   rho- pi+                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+0.489000000 K+      K-                                      VSS; #[Reconstructed PDG2011]
+0.342000000 K_L0    K_S0                                    VSS; #[Reconstructed PDG2011]
+0.0425   rho+ pi-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+0.0425   rho0 pi0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+0.0425   rho- pi+                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
 0.0250   pi+  pi- pi0                    PHSP;
-0.0121   eta gamma                        VSP_PWAVE;
-0.0013   pi0 gamma                        VSP_PWAVE;
-0.0003   e+  e-              PHOTOS      VLL;
-0.0003   mu+ mu-             PHOTOS      VLL;
+0.013090000 eta     gamma                                   VSP_PWAVE; #[Reconstructed PDG2011]
+0.000687600 pi0     gamma                                   VSP_PWAVE; #[Reconstructed PDG2011]
+0.000295400 e+      e-                                      PHOTOS      VLL; #[Reconstructed PDG2011]
+0.000287000 mu+     mu-                                     PHOTOS      VLL; #[Reconstructed PDG2011]
+0.000113000 pi0     pi0     gamma                           PHSP; #[Reconstructed PDG2011]
+0.000115000 eta     e+      e-                              PHSP; #[Reconstructed PDG2011]
+0.000322000 f_0     gamma                                   PHSP; #[Reconstructed PDG2011]
+0.000074000 pi+     pi-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000047000 omega   pi0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000041000 pi+     pi-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004000 pi+     pi-     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011200 pi0     e+      e-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000072700 pi0     eta     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000062500 eta'    gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000014000 mu+     mu-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay a_1+
@@ -6996,28 +7293,33 @@ Enddecay
 Decay a_2+
 0.3500   rho0 pi+                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
 0.3500   rho+ pi0                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.1440   eta  pi+                        TSS;
-0.1050   omega pi+ pi0                    PHSP;
-0.0480   anti-K0   K+                         TSS;
-0.0030   pi+  gamma                       PHSP;
+0.1430   eta  pi+                        TSS;
+0.1000   omega pi+ pi0                    PHSP;
+0.0490   anti-K0   K+                         TSS;
+0.0027   pi+  gamma                       PHSP;
+0.0053   eta' pi+                        TSS;
 Enddecay
+#
 Decay a_2-
 0.3500   rho0 pi-                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
 0.3500   rho- pi0                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.1440   eta  pi-                        TSS;
-0.1050   omega pi- pi0                    PHSP;
-0.0480   K0   K-                         TSS;
-0.0030   pi-  gamma                       PHSP;
+0.1430   eta  pi-                        TSS;
+0.1000   omega pi- pi0                    PHSP;
+0.0490   anti-K0   K-                         TSS;
+0.0027   pi-  gamma                       PHSP;
+0.0053   eta' pi-                        TSS;
 Enddecay
+#
 Decay a_20
 0.3500   rho+ pi-                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
 0.3500   rho- pi+                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.1440   eta  pi0                        TSS;
-0.1050   omega pi+ pi-                    PHSP;
-0.0240   K+   K-                         TSS;
-0.0120   K_L0  K_L0                        TSS;
-0.0120   K_S0  K_S0                        TSS;
-0.0030   pi0  gamma                       PHSP;
+0.1430   eta  pi0                        TSS;
+0.1000   omega pi+ pi-                    PHSP;
+0.0245   K+   K-                         TSS;
+0.01225   K_L0  K_L0                        TSS;
+0.01225   K_S0  K_S0                        TSS;
+0.0027   pi0  gamma                       PHSP;
+0.0053   eta' pi0                        TSS;
 Enddecay
 #
 Decay b_1+
@@ -7049,11 +7351,11 @@ Decay a_0-
 Enddecay
 #
 Decay f_0
-0.5200   pi+  pi-                        PHSP;
-0.2600   pi0  pi0                        PHSP;
-0.1100   K+   K-                         PHSP;
-0.0550   K_S0  K_S0                        PHSP;
-0.0550   K_L0  K_L0                        PHSP;
+0.6667   pi+  pi-                        PHSP;
+0.3333   pi0  pi0                        PHSP;
+#0.1100   K+   K-                         PHSP;
+#0.0550   K_S0  K_S0                        PHSP;
+#0.0550   K_L0  K_L0                        PHSP;
 Enddecay
 #
 Decay f'_0
@@ -7067,20 +7369,23 @@ Decay f'_0
 Enddecay
 #
 Decay f_1
-0.1500   rho0 pi+  pi-                   PHSP;
-0.0500   rho0 pi0  pi0                   PHSP;
-0.0500   rho+ pi-  pi0                   PHSP;
-0.0500   rho- pi+  pi0                   PHSP;
-0.1400   a_00  pi0                        VSS;
-0.1400   a_0+  pi-                        VSS;
-0.1400   a_0-  pi+                        VSS;
-0.0700   eta  pi+  pi-                   PHSP;
-0.0300   eta  pi0  pi0                   PHSP;
-0.0300   K+   K-   pi0                   PHSP;
-0.0200   K0   anti-K0   pi0                   PHSP;
-0.0300   anti-K0   K+   pi-                   PHSP;
-0.0300   K0   K-   pi+                   PHSP;
-0.0700   gamma rho0                       PHSP;
+0.110000000 rho0    pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.043364159 rho0    pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.043442860 rho+    pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.043442860 rho-    pi+     pi0                             PHSP; #[Reconstructed PDG2011]
+0.094440999 a_00    pi0                                     VSS; #[Reconstructed PDG2011]
+0.094440999 a_0+    pi-                                     VSS; #[Reconstructed PDG2011]
+0.094440999 a_0-    pi+                                     VSS; #[Reconstructed PDG2011]
+0.086570916 eta     pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.043285458 eta     pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.020226114 K+      K-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.010152407 K0      anti-K0 pi0                             PHSP; #[Reconstructed PDG2011]
+0.020226114 anti-K0 K+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.020226114 K0      K-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.055000000 gamma   rho0                                    PHSP; #[Reconstructed PDG2011]
+0.220000000 pi0     pi0     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 pi+     pi+     pi-     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000740000 phi     gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay f'_1
@@ -7093,34 +7398,36 @@ Enddecay
 Decay f_2
 0.5650   pi+  pi-                        TSS;
 0.2820   pi0  pi0                        TSS;
-0.0280   pi+  pi-  pi+  pi-              PHSP;
-0.0720   pi+  pi-  pi0  pi0              PHSP;
-0.0030   pi0  pi0  pi0  pi0              PHSP;
+0.028000000 pi+     pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.071000000 pi+     pi-     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
+0.003000000 pi0     pi0     pi0     pi0                     PHSP; #[Reconstructed PDG2011]
 0.0230   K+   K-                         TSS;
 0.0115   K_S0  K_S0                        TSS;
 0.0115   K_L0  K_L0                        TSS;
-0.0040   eta  eta                        TSS;
+0.004000000 eta     eta                                     TSS; #[Reconstructed PDG2011]
+0.000016400 gamma   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay f_0(1500)
-0.0500   eta  eta'                       PHSP;
-0.1500   eta  eta                        PHSP;
-0.1000   pi0  pi0  pi0  pi0              PHSP;
-0.2500   pi+  pi-  pi+  pi-              PHSP;
-0.1000   pi+  pi-                        PHSP;
-0.0500   pi0  pi0                        PHSP;
-0.1000   K+   K-                         PHSP;
-0.1000   K_S0  K_S0                      PHSP;
-0.1000   K_L0  K_L0                      PHSP;
+0.019000000 eta     eta'                                    PHSP; #[Reconstructed PDG2011]
+0.051000000 eta     eta                                     PHSP; #[Reconstructed PDG2011]
+0.1410   pi0  pi0  pi0  pi0              PHSP;
+0.3540   pi+  pi-  pi+  pi-              PHSP;
+0.2330   pi+  pi-                        PHSP;
+0.1160   pi0  pi0                        PHSP;
+0.0430   K+   K-                         PHSP;
+0.0215   K_S0  K_S0                      PHSP;
+0.0215   K_L0  K_L0                      PHSP;
 Enddecay
 #
 Decay f'_2
-0.4444   K+   K-                         TSS;
-0.2222   K_S0  K_S0                        TSS;
-0.2222   K_L0  K_L0                        TSS;
-0.1030   eta  eta                        TSS;
-0.0055   pi+  pi-                        TSS;
-0.0027   pi0  pi0                        TSS;
+0.443904021 K+      K-                                      TSS; #[Reconstructed PDG2011]
+0.221952010 K_S0    K_S0                                    TSS; #[Reconstructed PDG2011]
+0.221952010 K_L0    K_L0                                    TSS; #[Reconstructed PDG2011]
+0.104000000 eta     eta                                     TSS; #[Reconstructed PDG2011]
+0.005493862 pi+     pi-                                     TSS; #[Reconstructed PDG2011]
+0.002696987 pi0     pi0                                     TSS; #[Reconstructed PDG2011]
+0.000001110 gamma   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay h_1
@@ -7135,9 +7442,9 @@ Decay h'_1
 0.2500   anti-K*0  K0                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
 0.2500   K*0  anti-K0                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0;
 Enddecay
-#         
+#
 Decay rho(2S)+
-0.4000   pi+ pi0                         PHSP;   
+0.4000   pi+ pi0                         PHSP;
 0.4000   pi+ pi+ pi- pi0                 PHSP;
 0.2000   pi+ pi0 pi0 pi0                 PHSP;
 Enddecay
@@ -7152,1368 +7459,1007 @@ Decay rho(2S)0
 0.1500   pi+ pi- pi0 pi0                 PHSP;
 0.1000   pi0 pi0 pi0 pi0                 PHSP;
 Enddecay
-Decay rho(3S)0
+Decay phi(1680)
 0.08   pi+ pi-                                      PHSP;
 0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
+0.10   pi0 pi+ pi-                                  PHSP;
 0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
 0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
+0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
 0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
+0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
 0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
+0.04   K+ K- pi+ pi-                                PHSP;
 0.02   K0 K- pi+                                    PHSP;
 0.02   anti-K0 K+ pi-                               PHSP;
 0.02   K0 K- pi+ pi+ pi-                            PHSP;
 0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
 0.02   K0 K- pi0 pi+                                PHSP;
 0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
+0.02   eta pi0 pi+ pi-                              PHSP;
 0.01   eta rho- pi0 pi+                             PHSP;
 0.01   eta rho+ pi0 pi-                             PHSP;
 Enddecay
-Decay omega(1650)
+Decay rho(3S)0
 0.08   pi+ pi-                                      PHSP;
 0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
+0.10   pi0 pi+ pi-                                  PHSP;
 0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
 0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
+0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
 0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
+0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
 0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
+0.04   K+ K- pi+ pi-                                PHSP;
 0.02   K0 K- pi+                                    PHSP;
 0.02   anti-K0 K+ pi-                               PHSP;
 0.02   K0 K- pi+ pi+ pi-                            PHSP;
 0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
 0.02   K0 K- pi0 pi+                                PHSP;
 0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
+0.02   eta pi0 pi+ pi-                              PHSP;
 0.01   eta rho- pi0 pi+                             PHSP;
 0.01   eta rho+ pi0 pi-                             PHSP;
 Enddecay
-Decay rho(1900)
+Decay omega(1650)
 0.08   pi+ pi-                                      PHSP;
 0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
+0.10   pi0 pi+ pi-                                  PHSP;
 0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
 0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
+0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
 0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
+0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
 0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
+0.04   K+ K- pi+ pi-                                PHSP;
 0.02   K0 K- pi+                                    PHSP;
 0.02   anti-K0 K+ pi-                               PHSP;
 0.02   K0 K- pi+ pi+ pi-                            PHSP;
 0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
 0.02   K0 K- pi0 pi+                                PHSP;
 0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
+0.02   eta pi0 pi+ pi-                              PHSP;
 0.01   eta rho- pi0 pi+                             PHSP;
 0.01   eta rho+ pi0 pi-                             PHSP;
 Enddecay
+#Decay rho(1900)
+#0.08   pi+ pi-                                      PHSP;
+#0.05   pi+ pi+ pi-  pi-                             PHSP;
+#0.10   pi0 pi+ pi-                                  PHSP;
+#0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
+#0.12   pi0 pi0 pi+ pi-                              PHSP;
+#0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
+#0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
+#0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+#0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+#0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
+#0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
+#0.04   K+ K- pi+ pi-                                PHSP;
+#0.02   K0 K- pi+                                    PHSP;
+#0.02   anti-K0 K+ pi-                               PHSP;
+#0.02   K0 K- pi+ pi+ pi-                            PHSP;
+#0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
+#0.02   K0 K- pi0 pi+                                PHSP;
+#0.02   anti-K0 K+ pi0 pi-                           PHSP;
+#0.02   eta pi0 pi+ pi-                              PHSP;
+#0.01   eta rho- pi0 pi+                             PHSP;
+#0.01   eta rho+ pi0 pi-                             PHSP;
+#Enddecay
 Decay omega(2S)
 0.08   pi+ pi-                                      PHSP;
 0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay rho(2150)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay omega(1960)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay rho(1965)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay rho(2000)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay omega(2145)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay omega(2205)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay rho(2265)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay rho(2280)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
-0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
-0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
-0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
-0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
-0.02   K0 K- pi+                                    PHSP;
-0.02   anti-K0 K+ pi-                               PHSP;
-0.02   K0 K- pi+ pi+ pi-                            PHSP;
-0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
-0.02   K0 K- pi0 pi+                                PHSP;
-0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
-0.01   eta rho- pi0 pi+                             PHSP;
-0.01   eta rho+ pi0 pi-                             PHSP;
-Enddecay
-Decay omega(2330)
-0.08   pi+ pi-                                      PHSP;
-0.05   pi+ pi+ pi-  pi-                             PHSP;
-0.10   pi0 pi+ pi-                                  PHSP;  
+0.10   pi0 pi+ pi-                                  PHSP;
 0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
 0.12   pi0 pi0 pi+ pi-                              PHSP;
-0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;   
+0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
 0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
-0.05   pi0 pi0 pi0 pi+ pi-                          PHSP; 
-0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;   
-0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP; 
+0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
 0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
-0.04   K+ K- pi+ pi-                                PHSP;   
+0.04   K+ K- pi+ pi-                                PHSP;
 0.02   K0 K- pi+                                    PHSP;
 0.02   anti-K0 K+ pi-                               PHSP;
 0.02   K0 K- pi+ pi+ pi-                            PHSP;
 0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
 0.02   K0 K- pi0 pi+                                PHSP;
 0.02   anti-K0 K+ pi0 pi-                           PHSP;
-0.02   eta pi0 pi+ pi-                              PHSP; 
+0.02   eta pi0 pi+ pi-                              PHSP;
 0.01   eta rho- pi0 pi+                             PHSP;
 0.01   eta rho+ pi0 pi-                             PHSP;
 Enddecay
+#Decay rho(2150)
+#0.08   pi+ pi-                                      PHSP;
+#0.05   pi+ pi+ pi-  pi-                             PHSP;
+#0.10   pi0 pi+ pi-                                  PHSP;
+#0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
+#0.12   pi0 pi0 pi+ pi-                              PHSP;
+#0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
+#0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
+#0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+#0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+#0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
+#0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
+#0.04   K+ K- pi+ pi-                                PHSP;
+#0.02   K0 K- pi+                                    PHSP;
+#0.02   anti-K0 K+ pi-                               PHSP;
+#0.02   K0 K- pi+ pi+ pi-                            PHSP;
+#0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
+#0.02   K0 K- pi0 pi+                                PHSP;
+#0.02   anti-K0 K+ pi0 pi-                           PHSP;
+#0.02   eta pi0 pi+ pi-                              PHSP;
+#0.01   eta rho- pi0 pi+                             PHSP;
+#0.01   eta rho+ pi0 pi-                             PHSP;
+#Enddecay
+#Decay omega(1960)
+#0.08   pi+ pi-                                      PHSP;
+#0.05   pi+ pi+ pi-  pi-                             PHSP;
+#0.10   pi0 pi+ pi-                                  PHSP;
+#0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
+#0.12   pi0 pi0 pi+ pi-                              PHSP;
+#0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
+#0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
+#0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+#0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+#0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
+#0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
+#0.04   K+ K- pi+ pi-                                PHSP;
+#0.02   K0 K- pi+                                    PHSP;
+#0.02   anti-K0 K+ pi-                               PHSP;
+#0.02   K0 K- pi+ pi+ pi-                            PHSP;
+#0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
+#0.02   K0 K- pi0 pi+                                PHSP;
+#0.02   anti-K0 K+ pi0 pi-                           PHSP;
+#0.02   eta pi0 pi+ pi-                              PHSP;
+#0.01   eta rho- pi0 pi+                             PHSP;
+#0.01   eta rho+ pi0 pi-                             PHSP;
+#Enddecay
+#Decay rho(1965)
+#0.08   pi+ pi-                                      PHSP;
+#0.05   pi+ pi+ pi-  pi-                             PHSP;
+#0.10   pi0 pi+ pi-                                  PHSP;
+#0.10   pi0 pi+ pi+ pi- pi-                          PHSP;
+#0.12   pi0 pi0 pi+ pi-                              PHSP;
+#0.04   pi0 pi+ pi+ pi+ pi- pi- pi-                  PHSP;
+#0.14   pi0 pi0 pi+ pi+ pi- pi-                      PHSP;
+#0.05   pi0 pi0 pi0 pi+ pi-                          PHSP;
+#0.06   pi0 pi0 pi0 pi+ pi+ pi- pi-                  PHSP;
+#0.03   pi0 pi0 pi0 pi+ pi+ pi+ pi- pi- pi-          PHSP;
+#0.03   pi0 pi0 pi0 pi0 pi+ pi+ pi- pi-              PHSP;
+#0.04   K+ K- pi+ pi-                                PHSP;
+#0.02   K0 K- pi+                                    PHSP;
+#0.02   anti-K0 K+ pi-                               PHSP;
+#0.02   K0 K- pi+ pi+ pi-                            PHSP;
+#0.02   anti-K0 K+ pi- pi- pi+                       PHSP;
+#0.02   K0 K- pi0 pi+                                PHSP;
+#0.02   anti-K0 K+ pi0 pi-                           PHSP;
+#0.02   eta pi0 pi+ pi-                              PHSP;
+#0.01   eta rho- pi0 pi+                             PHSP;
+#0.01   eta rho+ pi0 pi-                             PHSP;
+#Enddecay
 #
 #
-#    cc=  mesons
+#    cc=  mesons Updated to PDG 2008
 #
 Decay eta_c
-# mainly based on PDG2005 ---------------------------------------------------
-# updated by Zaza Metreveli April, 2006
-# PDG2006 update, by Ryan Mitchell, November 2006 ---------------------------
-# Then updated by Daowen Hu June 2008 based on some preliminary results
-# (see below).
-#
-0.0273    eta' pi+ pi-                   PHSP;
-0.0137    eta' pi0 pi0                   PHSP;
-#
+0.001300000 p+      anti-p-                                 PHSP; #[Reconstructed PDG2011]
+0.002700000 phi     phi                                     SVV_HELAMP 1.0 0.0 0.0 0.0 -1.0 0.0; #[Reconstructed PDG2011]
+0.002900000 phi     K+      K-                              PHSP; #[Reconstructed PDG2011]
 0.0067    rho0 rho0                      SVV_HELAMP 1.0 0.0 0.0 0.0 -1.0 0.0;
 0.0133    rho+ rho-                      SVV_HELAMP 1.0 0.0 0.0 0.0 -1.0 0.0;
-#
+0.012000000 pi+     pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001600000 K+      K-      K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.015000000 K+      K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.0327    eta  pi+ pi-                   PHSP;
+0.0163    eta  pi0 pi0                   PHSP;
+0.0273    eta' pi+ pi-                   PHSP;
+0.0137    eta' pi0 pi0                   PHSP;
+0.0117    pi0  K+  K-                    PHSP;
+0.0233    K+ anti-K0  pi-                      PHSP;
+0.0233    K- K0 pi+                      PHSP;
+0.0117    K0 anti-K0 pi0                 PHSP;
 0.0046    K*+ K*-                        SVV_HELAMP 1.0 0.0 0.0 0.0 -1.0 0.0;
 0.0046    K*0 anti-K*0                   SVV_HELAMP 1.0 0.0 0.0 0.0 -1.0 0.0 ;
+0.01    K*0 K- pi+                     PHSP;
+0.01    anti-K*0 K+ pi-                     PHSP;
 #
-0.0150    K*0 anti-K*0 pi+ pi-           PHSP;
-#
-0.00025   phi K+ K-                      PHSP;
-0.0027    phi phi                        SVV_HELAMP 1.0 0.0 0.0 0.0 -1.0 0.0;
-0.0100    f_2 f_2                        PHSP;
-# Used 18 modes from Tomaradze Feb 08 PTA talk
-0.009957  K+ K- pi0                      PHSP;
-0.0029    K_S0 K_S0 pi0                  PHSP;
-0.0029    K_L0 K_L0 pi0                  PHSP;
-0.0058    K_S0 K_L0 pi0                  PHSP;
-0.0089335 K+ K_S0 pi-                    PHSP;
-0.0089335 K+ K_L0 pi-                    PHSP;
-0.0089335 K- K_S0 pi+                    PHSP;
-0.0089335 K- K_L0 pi+                    PHSP;
-0.015984  eta  pi+ pi-                   PHSP;
-0.007992  eta  pi0 pi0                   PHSP;
-0.005211  K+ K- eta                      PHSP;
-0.001396  p+ anti-p- pi0                 PHSP;
-0.021496  pi+ pi- pi0 pi0                PHSP;
-0.004560  p+ anti-p- pi+ pi-             PHSP;
-0.028475  pi+ pi- pi+ pi- eta            PHSP;
-0.026800  K+ K- pi+ pi- pi0              PHSP;
-0.005304  K+ K- pi+ pi- eta              PHSP;
-0.007072  K_S0 K+ pi+ pi- pi-            PHSP;  
-0.007072  K_S0 K- pi- pi+ pi+            PHSP;
-0.007072  K_L0 K+ pi+ pi- pi-            PHSP;
-0.007072  K_L0 K- pi- pi+ pi+            PHSP;
-0.104222  pi+ pi- pi+ pi- pi0 pi0        PHSP;
-0.000623  p+  anti-p-                    PHSP;
-#
-#Inclusive modes updated by Daowen Hu June 2008 based on PDG2008 ---------
-# Inclusive rates after subtracting exclusive ones by Daowen Hu 2008
-# No Subtracted: ///K*0 anti-K*0 from 0.01
-0.01      anti-K*0 K+ pi-                PHSP;
-# No Subtracted: ///K*0 anti-K*0 from 0.01
-0.01      K*0 K- pi+                     PHSP;
-# subtracted: rho0 rho0, f_2 f_2 from 0.010701
-0.00080875 pi+ pi- pi+ pi-               PHSP;
-# subtracted: f_2 f_2 from 0.014796
-0.0144796 pi+ pi- pi+ pi- pi+ pi-        PHSP;
-# subtracted: phi K+ K-, phi phi, f_2 f_2 from 0.001396
-0.000617041 K+ K- K+ K-                  PHSP;
-# subtracted K*0 K- pi+, anti-K*0 K+ pi-, f_2 f_2 from 0.005583
-# set it zero since it is -0.00595534
-0.0000    K+  K-  pi+ pi-                PHSP;
-# subtracted: K*0 anti-K*0 pi+ pi-, f_2 f_2 from 0.007072
-0.000411772 K+ K- pi+ pi- pi+ pi-        PHSP;
-
-# ccbar modes to suppress added on 06042008
-0.0000    rho0  pi0                      PHSP;
-0.0000    omega pi0                      PHSP;
-0.0000    phi   pi0                      PHSP;
-0.0000    gamma pi0                      PHSP;
-0.0000    rho0  eta                      PHSP;
-0.0000    omega eta                      PHSP;
-0.0000    phi   eta                      PHSP;
-0.0000    gamma eta                      PHSP;
-0.0000    rho0  eta'                     PHSP;
-0.0000    omega eta'                     PHSP;
-0.0000    phi   eta'                     PHSP;
-0.0000    gamma eta'                     PHSP;
-#
-0.0003    gamma gamma                    PHSP;
-.557590837 rndmflav    anti-rndmflav      PYTHIA         12;
+#March 2009 New Modes
+0.01500   K*0 anti-K*0 pi+ pi-   PHSP;
+0.007100000 K+      K-      pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.015000000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.001040000 Lambda0 anti-Lambda0                            PHSP; #[Reconstructed PDG2011]
+0.007600000 f_2     f_2                                     PHSP; #[Reconstructed PDG2011]
+0.027000000 f_2     f'_2                                    PHSP; #[Reconstructed PDG2011]
+#
+0.682497000 rndmflav anti-rndmflav                          PYTHIA         12; #[Reconstructed PDG2011]
+0.000063000 gamma   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay eta_c(2S)
-#PDG2006 update, by Ryan Mitchell, November 2006 ----------------------------
-# numbers are copied from eta_c
-#0.0117    K+  K-  pi0                    PHSP;
-#0.0117    K0 anti-K0 pi0                 PHSP;
-#0.0233    K+ anti-K0  pi-                PHSP;
-#0.0233    K- K0 pi+                      PHSP;
-0.0117    K+ K- pi0                     PHSP;
-0.0029    K_S0 K_S0 pi0                 PHSP;
-0.0029    K_L0 K_L0 pi0                 PHSP;
-0.0058    K_S0 K_L0 pi0                 PHSP;
-0.0117    K+ K_S0 pi-                   PHSP;
-0.0117    K+ K_L0 pi-                   PHSP;
-0.0117    K- K_S0 pi+                   PHSP;
-0.0117    K- K_L0 pi+                   PHSP;
-#
-# ccbar modes to suppress added on 06042008
-0.0000   rho0  pi0    PHSP;
-0.0000   omega pi0    PHSP;
-0.0000   phi   pi0    PHSP;
-0.0000   gamma pi0    PHSP;
-0.0000   rho0  eta    PHSP;
-0.0000   omega eta    PHSP;
-0.0000   phi   eta    PHSP;
-0.0000   gamma eta    PHSP;
-0.0000   rho0  eta'   PHSP;
-0.0000   omega eta'   PHSP;
-0.0000   phi   eta'   PHSP;
-0.0000   gamma eta'   PHSP;
-#
-0.9299    rndmflav        anti-rndmflav   PYTHIA         12;
-Enddecay
-#
-#
-# J/psi decays were updated by Istvan Danko June, 2006
-#
-#PDG2006 update, by Ryan Mitchell, November 2006
+ 0.019     K+ anti-K0  pi-                PHSP;
+ 0.019     K- K0 pi+                      PHSP;
+ 0.0095    pi0  K+  K-                    PHSP;
+ 0.0095    K0 anti-K0 pi0                 PHSP;
+ 0.943     rndmflav        anti-rndmflav   PYTHIA         12;
+Enddecay
 #
 Decay J/psi
-#CLNS 08/2027----------------------------------------------------------------
-0.000012   gamma gamma gamma             PHSP;
-#CLNS 08/2021----------------------------------------------------------------
-0.0198     gamma eta_c                   HELAMP 1. 0. -1. 0. ;
-#PDG2008---------------------------------------------------------------------
-0.0594     e+   e-                       PHOTOS   VLL;   
-0.0593     mu+  mu-                      PHOTOS   VLL;   
-0.00563    rho0 pi0                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; 
-0.00563    rho+ pi-                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; 
-0.00563    rho- pi+                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; 
-0.00363    a_20  rho0                    PHSP;
-0.00363    a_2+  rho-                    PHSP;
-0.00363    a_2-  rho+                    PHSP;
-0.0043     omega f_2                     PHSP;
-0.0030     K*0   anti-K_2*0              PHSP;
-0.0030     anti-K*0   K_2*0              PHSP;
-0.000146   K_S0      K_L0                VSS;
-0.0004     omega K_S0 K_L0               PHSP;
-0.000237   K+ K-                         VSS;
-0.000147   pi+ pi-                       VSS;
-0.00076    omega K*0 K_S0                PHSP;
-0.00076    omega K*0 K_L0                PHSP;
-0.00076    omega anti-K*0 K_S0           PHSP;
-0.00076    omega anti-K*0 K_L0           PHSP;
-0.00153    omega K*+ K-                  PHSP;
-0.00153    omega K*- K+                  PHSP;
-0.00256    K*+ K-                        PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00256    K*- K+                        PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0010975  K*0 K_S0                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0010975  K*0 K_L0                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0010975  anti-K*0 K_S0                 PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0010975  anti-K*0 K_L0                 PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-#We just changed the names from K_1+(and K_1-) to K'_1+ (and K'_1-).
-0.0019     K'_1+ K-                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0019     K'_1- K+                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-#
-0.0015     b_1+ pi-                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0015     b_1- pi+                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.00170    omega pi- K+ K_S0             PHSP;
-0.00170    omega pi+ K- K_S0             PHSP;
-0.0023     b_10 pi0                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0011     eta K+ K_S0 pi-               PHSP;
-0.0011     eta K- K_S0 pi+               PHSP;
-0.00027    phi K*0 K_S0                  PHSP;
-0.00027    phi K*0 K_L0                  PHSP;
-0.00027    phi anti-K*0 K_S0             PHSP;
-0.00027    phi anti-K*0 K_L0             PHSP;
-0.00055    phi K*+ K-                    PHSP;
-0.00055    phi K*- K+                    PHSP;
-0.0008     Delta++ anti-p- pi-           PHSP;
-0.0008     anti-Delta-- p+ pi+           PHSP;
-0.0011     omega p+ anti-p-              PHSP;
-0.0011     Delta++  anti-Delta--         PHSP;
-0.00052    Sigma-  anti-Sigma+           PHSP;
-0.00052    Sigma+  anti-Sigma-           PHSP;
-0.0009     p+ anti-p- eta'               PHSP;
-0.0008     phi f'_2                      PHSP;
-0.00094    phi pi+ pi-                   PHSP;
-0.00056    phi pi0 pi0                   PHSP;
-0.00036    phi K+ K_S0 pi-               PHSP;
-0.00036    phi K- K_S0 pi+               PHSP;
-0.00068    omega f_1                     PHSP;
-0.00174    omega eta                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00074    phi eta                       PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00045    omega pi0                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00040    phi eta'                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000193   rho0 eta                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000105   rho0 eta'                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00075    Xi*- anti-Xi*+                PHSP;
-0.00051    p+ K- anti-Sigma*0            PHSP;
-0.00032    phi f_0                       PHSP;
-0.000155   Sigma*- anti-Sigma*+          PHSP;
-0.000155   Sigma*+ anti-Sigma*-          PHSP;
-0.00026    phi f_1                       PHSP;
-0.000182   omega eta'                    PHSP;
-0.00014    omega f_0                     PHSP;
-0.000045   p+ anti-p- phi                PHSP;
-0.00023    K*0 anti-K*0                  PHSP;
-0.00072    phi f_2                       PHSP;
-0.004      n0 anti-n0 pi+ pi-            PHSP;
-0.00129    Sigma0 anti-Sigma0            PHSP;
-0.00217    p+ anti-p-                    PHSP;
-0.00209    p+ anti-p- eta                PHSP;
-0.00212    p+ anti-n0 pi-                PHSP;
-0.0022     n0 anti-n0                    PHSP;
-0.0009     Xi0 anti-Xi0                  PHSP;
-0.0009     Xi- anti-Xi+                  PHSP;
-0.00161    Lambda0 anti-Lambda0          PHSP;
-0.00109    p+ anti-p- pi0                PHSP;
-0.000415   Lambda0 anti-Sigma- pi+       PHSP;
-0.000415   anti-Lambda0 Sigma+ pi-       PHSP;
-0.00089    p+ K- anti-Lambda0            PHSP;
-0.00026    Lambda0 anti-Lambda0 eta      PHSP;
-0.000325   anti-Lambda0 n0 K_S0          PHSP;
-0.000325   Lambda0 anti-n0 K_S0          PHSP;
-0.00029    p+ K- anti-Sigma0             PHSP;
-0.000064   Lambda0 anti-Lambda0 pi0      PHSP;
-0.000615   eta phi f_0                   PHSP;
-#
-0.00203    gamma eta pi0 pi0             PHSP;
-0.0030     gamma rho+ rho-               PHSP;
-0.0015     gamma rho0 rho0               PHSP;
-0.00471    gamma eta'                    HELAMP 1. 0. -1. 0. ;
-0.0055     gamma eta(1405)               HELAMP 1. 0. -1. 0. ; 
-0.00145    gamma eta(1475)               HELAMP 1. 0. -1. 0. ;
-0.00098    gamma eta                     HELAMP 1. 0. -1. 0. ;
-0.00177    gamma f_2 f_2                 PHSP;
-0.0027     gamma f_4(2050)               PHSP;
-0.00161    gamma omega omega             PHSP;
-0.00143    gamma f_2                     PHSP;
-0.00199    gamma f_0(1710)               PHSP;
-0.00194    gamma K*0 anti-K*0            PHSP;
-0.00079    gamma f'_1                    PHSP;
-0.00061    gamma f_1                     PHSP;
-0.00045    gamma f'_2                    PHSP;
-0.00093    gamma f_2(1950)               PHSP;
-0.0004     gamma K*+ K*-                 PHSP;
-0.0004     gamma phi phi                 PHSP;
-0.00038    gamma p+ anti-p-              PHSP;
-0.00018    gamma K- K+ pi0               PHSP;
-0.00018    gamma K0 anti-K0 pi0          PHSP;
-0.00018    gamma K- K0 pi+               PHSP;
-0.00018    gamma K+ anti-K0 pi-          PHSP;
-0.000033   gamma pi0                     PHSP;
-0.0088     gamma e+ e-                    PHSP;
-#Inclusive modes updated by Daowen Hu June 2008 based on PDG2008 ---------
-# subtracted: a_20 rho0, omega f_2, omega f_1 from 0.0085
-0.00789645 omega pi+ pi- pi+ pi-         PHSP; 
-# subtracted: omega eta from 0.004
-0.00360676 omega pi+ pi- pi0             PHSP;
-# subtracted: omega eta from 0.0086
-0.00820676 omega pi+ pi-                 PHSP;
-# subtracted: omega f_2, b_10 pi0, omega f_0 from 0.0034
-# set it zero since it is -0.00014532
-0.0000     omega pi0 pi0                 PHSP;
-# subtracted: omega f_2, omega f_0 from 0.0002
-0.00014285 omega K_S0 K_S0               PHSP;
-# subtracted: omega f_2, omega f_0 from 0.0002
-0.00014285 omega K_L0 K_L0               PHSP;
-# subtracted: K'_1+ K-, K'_1- K+, omega f_0 omega phi from 0.0008
-0.0006477  omega K+ K-                   PHSP;
-# subtracted: omega phi from 0.00166
-0.0016     phi pi+ pi- pi+ pi-           PHSP;
-# subtracted: phi f_2, phi f'_2, phi f_0 from 0.00023
-0.000026   phi K_S0 K_S0                 PHSP; 
-# subtracted: phi f_2, phi f'_2, phi f_0 from 0.00023
-0.000026   phi K_L0 K_L0                 PHSP;
-# subtracted: No subtraction
-0.00046    phi K_S0 K_L0                 PHSP;
-# subtracted: phi f_2, phi f'_2, phi f_0 from 0.00091
-0.00005    phi K+ K-                     PHSP;
-# subtracted: omega eta, rho0 eta from 0.0004
-0.000168546   eta pi+ pi-                PHSP;
-# subtracted: a_20 rho0, a_2+ rho-, a_2- rho+, omega f_2, b_1+ pi-
-# b_1- pi+, phi f_2, omega eta, phi f'_2, phi pi+ pi-, omega pi0
-# phi f_0, omega f_0, rho0 eta, omega pi+ pi- pi0, omega pi+ pi- pi0
-# eta pi+ pi- from 0.041
-0.0303809  pi+ pi- pi+ pi- pi0           PHSP;
-# subtracted: a_20 rho0, omega f_2, phi f_2, omega eta, omega f_1
-# phi f_1, omega eta', rho0 eta', eta pi+ pi- pi+ pi-, omega pi+ pi- pi+ pi-
-# omega pi+ pi- pi0, phi pi+ pi- pi+ pi- from 0.029
-0.0201089  pi+ pi- pi+ pi- pi+ pi- pi0   PHSP;
-# subtracted: omega f_1, omega eta', eta pi+ pi- pi+ pi- pi+ pi- from 0.009
-0.00883721 pi+ pi- pi+ pi- pi+ pi- pi+ pi- pi0  PHSP;
-# subtracted: from rho0 pi0, rho+ pi-, rho- pi+, omega pi0 from 0.0207
-0.0038     pi+ pi- pi0                   PHSP;
-# subtracted: omega f_2, K*0 anti-K_2*0, K*0 anti-K_2*0, anti-K*0 K_2*0
-# omega K*+ K-, omega K*- K+, K'_1+ K-, K'_1- K+, phi f_2, phi f'_2
-# omega f_1, phi eta, phi f_0, omega f_0, omega K+ K-, phi K+ K-
-# from 0.0179
-0.015975   pi+ pi- pi0 K+  K-            PHSP;
-# subtracted: a_20 rho0, omega f_2, K*0 anti-K_2*0, anti-K*0 K_2*0, K'_1+ K-
-# K'_1- K+, K*0 anti-K*0, phi f_2, phi f'_2, phi pi+ pi-, phi f_0, omega f_0
-# omega K+ K- from 0.0066
-0.00263825 pi+ pi- K+ K-                 PHSP;
-# subtracted: phi eta', phi f_1, eta phi f_0 from 0.00184
-0.00155604 pi+ pi- K+ K- eta             PHSP;
-# subtracted: K'_1+ K-, K'_1- K+, phi f_2, phi f'_2, phi pi0 pi0, phi f_0
-# from 0.00245
-0.0016157  pi0 pi0 K+ K-                 PHSP;
-# subtracted: omega f_2, b_1+ pi-, b_1- pi+, omega f_0 from 0.00355
-0.00342851 pi+ pi- pi+ pi-                 PHSP;
-# subtracted: a_20 rho0, omega f_2, b_1+ pi-, b_1- pi+, omega f_1 
-# omega f_0, omega pi+ pi- pi+ pi- from 0.0043
-0.00410665 pi+ pi- pi+ pi- pi+ pi-       PHSP;
-# subtracted: a_20 rho0, a_2+ rho-, a_2- rho+, omega f_2, b_10 pi0, 
-# omega eta, omega f_1, phi eta, omega f_0, omega pi+ pi- pi0 from 0.0162
-0.00495075 pi+ pi- pi0 pi+ pi- pi0       PHSP;
-# subtracted: omega eta, omega f_1, rho0 eta', omega eta' from 0.00229
-0.00223578 eta pi+ pi- pi+ pi-           PHSP;
-# subtracted: omega f_1, omega eta' from 0.00072
-0.000719702 eta pi+ pi- pi+ pi- pi+ pi-  PHSP;
-# subtracted: Delta++ anti-p- pi-, anti-Delta-- p+ pi+, 
-# omega p+ anti-p-, Delta++ anti-Delta--, Lambda0 anti-Lambda0 from 0.006
-0.00261829 p+ anti-p- pi+ pi-            PHSP;
-# subtracted: omega f_2, K*0 anti-K_2*0, K'_1+ K-, K'_1- K+, phi f_2,
-# phi f_1, omega f_0, omega K+ K-, phi pi+ pi- pi+ pi- from 0.0047
-0.00374086 pi+ pi- pi+ pi- K+ K-         PHSP;
-# subtracted: p+ anti-p- phi, omega p+ anti-p-, p+ anti-p- eta
-# Lambda0 anti-Sigma- pi+, anti-Lambda0 Sigma+ pi-, Lambda0 anti-Lambda0 pi0
-# from 0.0023
-0.000544286 p+ anti-p- pi+ pi- pi0       PHSP;
-# subtracted: phi f_2, phi f'_2, phi f_0, phi K+ K- from 0.00076
-0.000535476 K+ K- K+ K-                  PHSP;
-# subtracted: omega f_2, b_1+ pi-, b_1- pi+, phi f_2, omega eta, phi f'_2
-# phi pi+ pi-, phi f_0, omega f_0, gamma eta(1405), gamma f_4(2050)
-# gamma f_1 from 0.00407
-0.0011357  gamma eta pi+ pi-             PHSP;
-# subtracted: omega f_2, b_1+ pi-, b_1- pi+, omega eta, omega f_1
-# rho0 eta, omega eta', omega f_0, rho0 eta', gamma eta_c, gamma rho0 rho0
-# gamma eta(1405), gamma f_2 f_2, gamma f_4(2050), gamma omega omega,
-# gamma f_2, gamma f_0(1710), gamma f_1, eta pi+ pi- from 0.0028
-# set it zero since it is -0.000584387
-0.0000     gamma pi+ pi- pi+ pi-         PHSP;
-# subtracted: omega f_2, K*0 anti-K_2*0, anti-K*0 K_2*0, omega K*+ K-, 
-# omega K*- K+, K'_1+ K-, K'_1- K+, phi eta, phi eta', phi f_1,
-# omega f_0, gamma eta_c, gamma f_2 f_2, gamma K*0 anti-K*0, gamma f_2(1950)
-# omega K+ K- from 0.0021
-0.000723321 gamma K+ K- pi+ pi-          PHSP;
-# subtracted: phi eta, omega pi0, omega f_0, gamma eta_c, gamma rho+ rho-, 
-# gamma eta(1405), gamma f_2 f_2, gamma f_4(2050), gamma f_1, 
-# omega pi+ pi- pi0, omega f_2, b_1+ pi-,  b_1- pi+, b_10 pi0, 
-# omega eta from 0.0083
-0.0009219  gamma pi+ pi- pi0 pi0         PHSP;
-#
-# the PDG inclusive KKpi values are eaten up by the K*K BF's defined above
-0.0000     K+ K- pi0                     PHSP; 
-0.0000     K_S0 K_S0 pi0                 PHSP;
-0.0000     K_L0 K_L0 pi0                 PHSP;
-0.0000     K_S0 K_L0 pi0                 PHSP;
-0.0000     K- K_S0 pi+                   PHSP;
-0.0000     K- K_L0 pi+                   PHSP;
-0.0000     K+ K_S0 pi-                   PHSP;
-0.0000     K+ K_L0 pi-                   PHSP;
-# ccbar modes to suppress added on 06042008
-0.0000     rho0  rho0                    PHSP;
-0.0000     rho0  omega                   PHSP;
-0.0000     rho0  phi                     PHSP;
-0.0000     rho0  gamma                   PHSP;
-0.0000     omega omega                   PHSP;
-0.0000     omega phi                     PHSP;
-0.0000     omega gamma                   PHSP;
-0.0000     phi   phi                     PHSP;
-0.0000     phi   gamma                   PHSP;
-0.0000     gamma gamma                   PHSP;
-0.0000     pi0   pi0                     PHSP;
-0.0000     pi0   eta                     PHSP;
-0.0000     pi0   eta'                    PHSP;
-0.0000     eta   eta                     PHSP;
-0.0000     eta   eta'                    PHSP;
-0.0000     eta'  eta'                    PHSP;
-#
-0.0000     gamma rho0  pi0               PHSP;
-0.0000     gamma omega pi0               PHSP;
-0.0000     gamma phi   pi0               PHSP;
-0.0000     gamma rho0  eta               PHSP;
-0.0000     gamma omega eta               PHSP;
-0.0000     gamma phi   eta               PHSP;
-0.0000     gamma rho0  eta'              PHSP;
-0.0000     gamma omega eta'              PHSP;
-0.0000     gamma phi   eta'              PHSP;
-#
-# Based on R = 2.28, taken from 9 data points in 2GeV<=sqrt(s)<=3GeV of
-# (BESII) PRL88, 101802 (2002), combined with the above B(J/psi->mu+mu-).
-0.135204    rndmflav        anti-rndmflav   PYTHIA    12;
-#
-# sum of non-ggg/gg  gamma = 56.13%
-# CLNS 08/2026------------------------------------------------------------
-# B(gamma gg)/B(ggg) = 13.7%%
-0.385753   g g g                         PYTHIA     4;
-0.052848   gamma g g                     PYTHIA     4;
-0.0        K0   anti-K0                  PHSP;
-0.0        K_S0      K_S0                PHSP;
-0.0        K_L0      K_L0                PHSP;
-#
-Enddecay
-#
-#
-# psi(2S) updates, by Ryan Mitchell, November 2006
-# fixed double-counting in inclusive modes
-#
-# Further updates were made by Daowen Hu, June 2008
-# based on newly available measurements (CLEO's, PDG2008).
+0.059400000 e+      e-                                      PHOTOS   VLL; #[Reconstructed PDG2011]
+0.059300000 mu+     mu-                                     PHOTOS   VLL; #[Reconstructed PDG2011]
+0.005600000 rho0    pi0                                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.00563    rho+ pi-                        PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.00563   rho- pi+                        PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.004000000 omega   pi+     pi-     pi0                     PHSP; #[Reconstructed PDG2011]
+0.00364    a_20  rho0                      PHSP;
+0.00363    a_2+  rho-                      PHSP;
+0.00363    a_2-  rho+                      PHSP;
+0.008500000 omega   pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.004300000 omega   f_2                                     PHSP; #[Reconstructed PDG2011]
+0.004300000 omega   pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.00300    K*0   anti-K_2*0                PHSP;
+0.00300    anti-K*0   K_2*0                PHSP;
+0.00305    omega K*0 anti-K0               PHSP;
+0.00305    omega anti-K*0 K0               PHSP;
+0.00256    K*+ K-                          PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.00256    K*- K+                          PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.002195    K*0 anti-K0                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.002195    anti-K*0 K0                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.00190    K_1+ K-                         PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+0.00190    K_1- K+                         PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+0.003400000 omega   pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.001500000 b_1+    pi-                                     PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.001500000 b_1-    pi+                                     PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+#
+0.001700000 omega   pi-     K+      K_S0                    PHSP; #[Reconstructed PDG2011]
+0.0017    omega pi- K+ K_L0                 PHSP;
+0.001700000 omega   pi+     K-      K_S0                    PHSP; #[Reconstructed PDG2011]
+0.0017    omega pi+ K- K_L0                 PHSP;
+0.0000    omega pi- K+ K0                 PHSP;
+0.0000    omega pi- K+ anti-K0            PHSP;
+0.0000    omega pi+ K- K0                 PHSP;
+0.0000    omega pi+ K- anti-K0            PHSP;
+#
+0.002300000 b_10    pi0                                     PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.002290000 eta     pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.000545    phi K*0 anti-K0                 PHSP;
+0.000545    phi anti-K*0 K0                 PHSP;
+0.000545    phi K*+ K-                      PHSP;
+0.000545    phi K*- K+                      PHSP;
+0.0008    omega K0 anti-K0                PHSP;
+0.0008    omega K+ K-                     PHSP;
+0.001660000 phi     pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.001600000 Delta++ anti-p- pi-                             PHSP; #[Reconstructed PDG2011]
+0.0016    anti-Delta-- p+ pi+             PHSP;
+0.001740000 omega   eta                                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000915    phi K0 anti-K0                  PHSP;
+0.000915    phi K+ K-                       PHSP;
+0.001100000 omega   p+      anti-p-                         PHSP; #[Reconstructed PDG2011]
+0.0011    Delta++  anti-Delta--           PHSP;
+0.000515    Sigma-  anti-Sigma+             PHSP;
+0.001500000 Sigma+  anti-Sigma-                             PHSP; #[Reconstructed PDG2011]
+0.000720000 eta     pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.000147000 pi+     pi-                                     PHSP; #[Reconstructed PDG2011]
+
+0.017000000 gamma   eta_c                                   PHSP; #[Reconstructed PDG2011]
+0.008300000 gamma   pi+     pi-     pi0     pi0             PHSP; #[Reconstructed PDG2011]
+0.0061    gamma eta pi+ pi-               PHSP;
+0.00225    gamma rho+ rho-                 PHSP;
+0.00225    gamma rho0 rho0                 PHSP;
+0.005280000 gamma   eta'                                    PHSP; #[Reconstructed PDG2011]
+0.001850000 gamma   pi+     pi-     pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.002100000 gamma   K+      K-      pi+     pi-             PHSP; #[Reconstructed PDG2011]
+0.001610000 gamma   omega   omega                           PHSP; #[Reconstructed PDG2011]
+0.001430000 gamma   f_2                                     PHSP; #[Reconstructed PDG2011]
+0.0040    gamma K*0 anti-K*0              PHSP;
+#
+# March 2009 New Modes
+0.001100000 eta     pi-     K+      K_S0                    PHSP; #[Reconstructed PDG2011]
+0.0011    eta pi- K+ K_L0                 PHSP;
+0.001100000 eta     pi+     K-      K_S0                    PHSP; #[Reconstructed PDG2011]
+0.0011    eta pi+ K- K_L0                 PHSP;
+0.0000    eta pi- K+ K0                 PHSP;
+0.0000    eta pi- K+ anti-K0                 PHSP;
+0.0000    eta pi+ K- K0                 PHSP;
+0.0000    eta pi+ K- anti-K0                 PHSP;
+#
+0.055000000 pi+     pi-     pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.029000000 pi+     pi-     pi+     pi-     pi+     pi-     pi0     PHSP; #[Reconstructed PDG2011]
+0.020700000 pi+     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.019400000 pi+     pi-     pi0     K+      K-              PHSP; #[Reconstructed PDG2011]
+0.016100000 pi+     pi-     pi+     pi-     pi0     pi0     PHSP; #[Reconstructed PDG2011]
+0.009000000 pi+     pi-     pi+     pi-     pi+     pi-     pi+     pi-     pi0     PHSP; #[Reconstructed PDG2011]
+0.006600000 pi+     pi-     K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.001840000 pi+     pi-     K+      K-      eta             PHSP; #[Reconstructed PDG2011]
+0.002450000 pi0     pi0     K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.005000000 pi+     pi-     pi+     pi-     K+      K-      PHSP; #[Reconstructed PDG2011]
+0.00102    K+ K- pi0   PHSP;
+0.00102    K0 anti-K0 pi0   PHSP;
+0.00203    K+ anti-K0 pi-   PHSP;
+0.00203    K- K0 pi+   PHSP;
+0.003550000 pi+     pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+####  Already included above    0.00229    pi+ pi- pi+ pi- eta   PHSP;
+0.004300000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.002170000 p+      anti-p-                                 PHSP; #[Reconstructed PDG2011]
+0.001190000 p+      anti-p- pi0                             PHSP; #[Reconstructed PDG2011]
+0.006000000 p+      anti-p- pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.002300000 p+      anti-p- pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.002000000 p+      anti-p- eta                             PHSP; #[Reconstructed PDG2011]
+0.002200000 n0      anti-n0                                 PHSP; #[Reconstructed PDG2011]
+0.004000000 n0      anti-n0 pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001290000 Sigma0  anti-Sigma0                             PHSP; #[Reconstructed PDG2011]
+0.002120000 p+      anti-n0 pi-                             PHSP; #[Reconstructed PDG2011]
+0.001200000 Xi0     anti-Xi0                                PHSP; #[Reconstructed PDG2011]
+0.000850000 Xi-     anti-Xi+                                PHSP; #[Reconstructed PDG2011]
+0.001610000 Lambda0 anti-Lambda0                            PHSP; #[Reconstructed PDG2011]
+#
+0.084693481 rndmflav anti-rndmflav                          PYTHIA    12; #[Reconstructed PDG2011]
+0.365559757 g       g       g                               PYTHIA     4; #[Reconstructed PDG2011]
+0.032103862 gamma   g       g                               PYTHIA     4; #[Reconstructed PDG2011]
+0.0       K0   anti-K0       PHSP;
+0.0       K_S0      K_S0     PHSP;
+0.0       K_L0      K_L0     PHSP;
+0.000146000 K_S0    K_L0                                    PHSP; #[Reconstructed PDG2011]
+0.001900000 K'_1+   K-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001900000 K'_1-   K+                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 phi     f'_2                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000870000 phi     pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000560000 phi     pi0     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000680000 omega   f'_1                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000750000 phi     eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000590000 Xi*-    anti-Xi+                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000450000 omega   pi0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000400000 phi     eta'                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000320000 phi     f_0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000320000 Xi*0    anti-Xi0                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000260000 phi     f_1                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000400000 eta     pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000182000 omega   eta'                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000140000 omega   f_0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000230000 K*0     anti-K*0                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000720000 phi     f_2                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000210000 p+      anti-p- eta'                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000045000 p+      anti-p- phi                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000890000 p+      K-      anti-Lambda0                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000760000 K+      K-      K+      K-                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000290000 p+      K-      anti-Sigma0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000237000 K+      K-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000260000 Lambda0 anti-Lambda0 eta                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000012000 gamma   gamma   gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000950000 gamma   f_2     f_2                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001104000 gamma   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000610000 gamma   f_1                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000450000 gamma   f'_2                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000400000 gamma   phi     phi                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000380000 gamma   p+      anti-p-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000034900 gamma   pi0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.008800000 gamma   e+      e-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
 #
 Decay psi(2S)
-# CLNS 08/2025------------------------------------------------------------
-# New VVPIPI mode, implemented by James Hunt
-0.3504     J/psi  pi+ pi-                VVPIPI_WEIGHTED;
-0.1769     J/psi  pi0 pi0                VVPIPI_WEIGHTED;
-0.0343     J/psi  eta                    PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00133    J/psi  pi0                    PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-#CLNS 08/2021-------------------------------------------------------------
-0.00432    gamma  eta_c                  HELAMP 1. 0. -1. 0. ;
-# CLNS 08/2023------------------------------------------------------------
-# Assuming B(hc -> gamma etac) = 0.377 : Phys.Rev. D66 (2002) 014012
-0.001111   h_c pi0                       PHSP;
-#PDG2008------------------------------------------------------------------
-0.00752    e+   e-                       PHOTOS  VLL; 
-0.0075     mu+  mu-                      PHOTOS  VLL; 
-0.0030     tau+  tau-                    PHOTOS  VLL; 
-#
-0.0000867  a_20 rho0                     PHSP;
-0.0000867  a_2+ rho-                     PHSP;
-0.0000867  a_2- rho+                     PHSP;
-0.000124   p+ anti-n0 pi-                PHSP;
-0.000124   anti-p- n0 pi+                PHSP;
-0.0012     pi+ pi- pi+ pi- eta           PHSP;
-0.00022    omega f_2                     PHSP;
-0.0013     K+ K- pi+ pi- eta             PHSP;
-0.00013    phi f_0                       PHSP;
-0.000044   phi f'_2                      PHSP;
-0.000027   p+ anti-p- K+ K-              PHSP;
-0.0000425  anti-Lambda0 n0 K_S0          PHSP;
-0.0000425  Lambda0 anti-n0 K_S0          PHSP;
-0.000059   omega f_0(1710)               PHSP;
-0.000305   K*0 K- rho+                   PHSP;
-0.000305   anti-K*0 K+ rho-              PHSP;
-0.000365   K*+ K- rho0                   PHSP;
-0.000365   K*- K+ rho0                   PHSP;
-0.00048    K*+ K- pi+ pi-                PHSP;
-0.00048    K*- K+ pi+ pi-                PHSP;
-0.00043    anti-K*0 K+ pi- pi0           PHSP;
-0.00043    K*0 K- pi+ pi0                PHSP;
-0.00007    phi K- K+                     PHSP;
-0.000008   rho+ pi-                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000008   rho- pi+                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000008   rho0 pi0                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000021   omega pi0                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000001   phi pi0                       PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000028   phi eta                       PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000022   rho0 eta                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000001   omega eta                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0000545  K*0 anti-K0                   PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0000545  anti-K*0 K0                   PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0000085  K*+ K-                        PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.0000085  K*- K+                        PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00040    b_1+ pi-                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.00040    b_1- pi+                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.00024    b_10 pi0                      PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.000031   phi eta'                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000032   omega eta'                    PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.000019   rho0 eta'                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-0.00022    rho0 pi+ pi-                  PHSP;
-0.00045    eta' pi+ pi- pi0              PHSP;
-0.00011    K+ K- K+ K- pi0               PHSP;
-0.00005    rho0 p+  anti-p-              PHSP;
-0.00006    eta p+  anti-p-               PHSP;
-0.000069   omega p+  anti-p-             PHSP;
-0.00010    Lambda0 anti-p- K+            PHSP;
-0.00018    Lambda0 anti-p- K+ pi+ pi-    PHSP;
-#
-0.00008    pi+ pi-                       VSS;
-0.000054   K_S0      K_L0                VSS;
-0.000063   K+ K-                         VSS;
-0.000133   p+  anti-p- pi0               PHSP;
-0.0010     K_1+ K-                       PHSP;
-0.0010     K_1- K+                       PHSP;
-0.000128   Delta++  anti-Delta--         PHSP;
-#
-0.000274   p+  anti-p-                   PHSP;
-0.000280   Lambda0 anti-Lambda0          PHSP;
-0.000110   Sigma*+  anti-Sigma*-         PHSP;
-0.000220   Sigma0  anti-Sigma0           PHSP;
-0.000180   Xi- anti-Xi+                  PHSP;
-0.000280   Xi0 anti-Xi0                  PHSP;
-#
-# Phys. Rev. D 70, 112002 (2004) -----------------------------------------
-# V-> gamma S    Partial wave (L,S)=(0,1)
-0.0922     gamma  chi_c0                 HELAMP 1. 0. 1. 0.;
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.0907     gamma  chi_c1                 HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-# V-> gamma T    Partial wave (L,S)=(0,1) 
-0.0933     gamma  chi_c2                 HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                         1. 0. 1.7320508 0. 2.4494897 0.;
-0.00087    gamma eta pi+ pi-             PHSP;
-0.000185   gamma K*0 K+ pi-              PHSP;
-0.000185   gamma anti-K*0 K- pi+         PHSP;
-0.00024    gamma K*0 anti-K*0            PHSP;
-0.00013    gamma K_S0 K+ pi-             PHSP;
-0.00013    gamma K_S0 K- pi+             PHSP;
-0.000029   gamma p+ anti-p-              PHSP;
-0.000028   gamma pi+ pi- p+ anti-p-      PHSP;
-0.000136   gamma eta'                    HELAMP 1. 0. -1. 0.;
-0.00021    gamma f_2                     PHSP;
-0.00014    gamma f_0(1710)               PHSP;
-#Inclusive modes updated by Daowen Hu June 2008 based on PDG2008 ---------
-# subtracted: rho0 p+ anti-p-, omega p+ anti-p-, Delta++ anti-Delta-, 
-# Lambda0 anti-Lambda0 from 0.0006
-0.000306145 p+  anti-p- pi+ pi-          PHSP;
-# subtracted: Lambda0 anti-Lambda0 from 0.00032
-0.000255947 p+ anti-n0 pi- pi0           PHSP;
-# subtracted: b_1+ pi-, b_1- pi+, omega f_2, omega f_0(1710) from 0.00073
-# set it zero since it is -0.000200926
-0.00000    omega pi+ pi-                 PHSP;
-# subtracted: omega pi0, rho0 eta, omega eta, b_1+ pi-, b_1- pi+,
-# phi pi- pi+, omega f_2, phi f'_2, omega f_0(1710), 
-# phi f_0, omega pi+ pi-, a_20 rho0, a_2+ rho-, a_2- rho+ from 0.0029
-0.00192894 pi+ pi- pi+ pi- pi0           PHSP;
-# subtracted: Sigma*+ anti-Sigma*-, Xi- anti-Xi+ from 0.00028
-0.000014816 Lambda0 anti-Lambda0 pi+ pi- PHSP;
-# subtracted: phi eta, omega eta, pi0 eta', a_20 rho0, a_2+ rho-
-# a_2- rho+ from 0.00095
-0.000907346 eta pi+ pi- pi0              PHSP;
-# subtracted: b_1+ pi-, b_1- pi+, rho0 pi+ pi-, omega f_0(1710)
-# omega f_2, omega pi+ pi- from 0.00024
-# set it zero since it is -5.73462e-07
-0.00000    pi+ pi- pi+ pi-               PHSP;
-# subtracted: rho+ pi-, rho- pi+, rho0 pi0, omega pi0 from 0.000168
-0.000143536 pi+ pi- pi0                  PHSP;
-# subtracted: phi f_0, phi f'_2 from 0.000117
-0.000049158 phi pi- pi+                  PHSP;
-# subtracted: phi f_0, phi f'_2 from 0.00006
-0.000009   K+ K- K+ K-                   PHSP;
-# subtracted: K_1+ K-, K_1- K+, omega f_2, omega f_0(1710) from 0.000185
-# set it zero since it is -0.000053
-0.0000     omega K+ K-                   PHSP;
-# subtracted: phi eta, K_1+ K-, K_1- K+, omega f_2, phi f_0, phi f'_2
-# omega f_0(1710), K*0 K- rho+, anti-K*0 K+ rho-, K*+ K- rho0, K*- K+ rho0
-# phi K- K+, K*0 K- pi+ pi0, anti-K*0 K+ pi- pi0, K*- K+ pi+ pi-, 
-# K*+ K- pi+ pi- from 0.00126
-# set it zero since it is -0.000511462
-0.00000    K+ K- pi+ pi- pi0             PHSP;
-# subtracted: eta p+ anti-p-, omega p+ anti-p- from 0.00073
-0.000655   p+  anti-p- pi+ pi- pi0       PHSP;
-# subtracted: omega eta, omega eta', rho0 eta', a_20 rho0,  
-# pi+ pi- pi+ pi- eta, omega f_2, omega f_0(1710) from 0.0035
-0.00321329 pi+ pi- pi+ pi- pi+ pi- pi0   PHSP;
-# subtracted: b_1+ pi-, b_1- pi+, a_20 rho0, omega f_2, omega f_0(1710), 
-# omega pi+ pi- from 0.00015
-0.000148732 pi+ pi- pi+ pi- pi+ pi-      PHSP;
-# subtracted: phi eta', K+ K- pi+ pi- eta from 0.001
-0.0007     K+ K- pi+ pi- pi+ pi- pi0     PHSP;
-# subtracted: K_1+ K-, K_1- K+, a_20 rho0, omega f_2, phi f_0, phi f'_2
-# omega f_0(1710), phi pi- pi+, omega K+ K- from 0.00075
-# set it zero since it is -2.56397e-05
-0.0000     K+ K- pi+ pi-                 PHSP;
-# subtracted: K_1+ K-, K_1- K+, omega f_2, omega f_0(1710), omega K+ K-
-# from 0.0018
-0.00179976 K+ K- pi+ pi- pi+ pi-         PHSP;
-# subtracted: a_20 rho0, omega f_2, omega f_0(1710) from 0.00022
-0.000218764 pi+  pi- K_S0 K_S0           PHSP;
-# subtracted: gamma chi_c0, gamma chi_c1, gamma chi_c2, gamma eta_c, 
-# gamma K*0 anti-K*0, phi eta, phi eta', K_1+ K-, K_1- K+, omega phi
-# omega f_2, omega f_0(1710), K*+ K- rho0, K*- K+ rho0
-# K*+ K- pi+ pi-, K*- K+ pi+ pi-, omega K+ K- etc from 0.00019
-# -0.00283242
-0.00000    gamma K+ K- pi+ pi-           PHSP;
-# subtracted: gamma chi_c0, gamma chi_c1, gamma chi_c2, gamma eta_c
-# omega eta, rho0 eta, b_1+ pi-, b_1- pi+, omega eta', rho0 eta'
-# gamma f_2, gamma f_0(1710), omega f_2, omega f_0(1710), omega pi+ pi-
-# from 0.0004
-# set it zero since it is -0.00338959
-0.00000    gamma pi+ pi- pi+ pi-         PHSP;
-# subtracted: K_1+ K-, K_1- K+, rho0 phi, a_20 rho0 from 0.00022
-0.00000    rho0 K+ K-                    PHSP;
-#
-# PRD72, 051108 (2005) --------------------------------------------------
-0.000072   Xi*0 anti-Xi*0                PHSP;
-0.000070   Omega- anti-Omega+            PHSP;
-#
-0.0        K0   anti-K0                  PHSP;
-0.0        K_S0      K_S0                PHSP;
-0.0        K_L0      K_L0                PHSP;
-#
-# ccbar modes to suppress added on 06042008
-0.0000     rho0  rho0                    PHSP;
-0.0000     rho0  omega                   PHSP;
-0.0000     rho0  phi                     PHSP;
-0.0000     rho0  gamma                   PHSP;
-0.0000     omega omega                   PHSP;
-0.0000     omega phi                     PHSP;
-0.0000     omega gamma                   PHSP;
-0.0000     phi   phi                     PHSP;
-0.0000     phi   gamma                   PHSP;
-0.0000     gamma gamma                   PHSP;
-0.0000     pi0   pi0                     PHSP;
-0.0000     pi0   eta                     PHSP;
-0.0000     pi0   eta'                    PHSP;
-0.0000     eta   eta                     PHSP;
-0.0000     eta   eta'                    PHSP;
-0.0000     eta'  eta'                    PHSP;
-#
-0.0000     gamma rho0  pi0               PHSP;
-0.0000     gamma omega pi0               PHSP;
-0.0000     gamma phi   pi0               PHSP;
-0.0000     gamma rho0  eta               PHSP;
-0.0000     gamma omega eta               PHSP;
-0.0000     gamma phi   eta               PHSP;
-0.0000     gamma rho0  eta'              PHSP;
-0.0000     gamma omega eta'              PHSP;
-0.0000     gamma phi   eta'              PHSP;
-#
-# Based on R = 2.28, taken from 9 data points in 2GeV<=sqrt(s)<=3GeV of
-# (BESII) PRL88, 101802 (2002), combined with the above B(psi(2S)->mu+mu-).
-0.01710    rndmflav       anti-rndmflav  PYTHIA    12;
-#
-# g g g / g g gammg ratio (preliminary/private communication)
-# messured by David Besson: 4% which is MUCH smaller than
-# the previously used value, 7.1%. We use "4%" now.
-#
-0.090726   g g g                         PYTHIA     4;
-0.003628    gamma g g                     PYTHIA     4;
+0.007720000 e+      e-                                      PHOTOS  VLL; #[Reconstructed PDG2011]
+0.007700000 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.003000000 tau+    tau-                                    PHOTOS  VLL; #[Reconstructed PDG2011]
+0.336000000 J/psi   pi+     pi-                             VVPIPI; #[Reconstructed PDG2011]
+0.177300000 J/psi   pi0     pi0                             VVPIPI; #[Reconstructed PDG2011]
+0.032800000 J/psi   eta                                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.001300000 J/psi   pi0                                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.096200000 gamma   chi_c0                                  PHSP; #[Reconstructed PDG2011]
+0.092000000 gamma   chi_c1                                  PHSP; #[Reconstructed PDG2011]
+0.087400000 gamma   chi_c2                                  PHSP; #[Reconstructed PDG2011]
+0.003400000 gamma   eta_c                                   PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000121000 gamma   eta'                                    PHSP; #[Reconstructed PDG2011]
+0.000210000 gamma   f_2                                     PHSP; #[Reconstructed PDG2011]
+0.003500000 pi+     pi-     pi+     pi-     pi+     pi-     pi0     PHSP; #[Reconstructed PDG2011]
+0.000350000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.002900000 pi+     pi-     pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+0.000200000 b_1+    pi-                                     PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000200000 b_1-    pi+                                     PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000240000 b_10    pi0                                     PARTWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000168000 pi+     pi-     pi0                             PHSP; #[Reconstructed PDG2011]
+0.0000545  K*0 anti-K0                    PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0000545  anti-K*0 K0                    PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.000022  rho0 eta                       PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.000021000 omega   pi0                                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000028000 phi     eta                                     PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000008  rho+ pi-                       PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.000008  rho- pi+                       PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.000008  rho0 pi0                       PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.000001  phi pi0                        PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.000001  omega eta                      PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0000085 K*+ K-                         PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.0000085 K*- K+                         PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+0.000185000 omega   K+      K-                              PHSP; #[Reconstructed PDG2011]
+0.000340000 K+      K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000600000 p+      anti-p- pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000133000 p+      anti-p- pi0                             PHSP; #[Reconstructed PDG2011]
+0.000276000 p+      anti-p-                                 PHSP; #[Reconstructed PDG2011]
+0.000500000 K_1+    K-                                      PHSP; #[Reconstructed PDG2011]
+0.000500000 K_1-    K+                                      PHSP; #[Reconstructed PDG2011]
+0.000220000 rho0    pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.000280000 Lambda0 anti-Lambda0                            PHSP; #[Reconstructed PDG2011]
+0.000128000 Delta++ anti-Delta--                            PHSP; #[Reconstructed PDG2011]
+0.000220000 Sigma0  anti-Sigma0                             PHSP; #[Reconstructed PDG2011]
+0.00026   Sigma*+  anti-Sigma*-          PHSP;
+0.000180000 Xi-     anti-Xi+                                PHSP; #[Reconstructed PDG2011]
+0.000080000 pi+     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000063000 K+      K-                                      PHSP; #[Reconstructed PDG2011]
+0.000070000 phi     K-      K+                              PHSP; #[Reconstructed PDG2011]
+0.000117000 phi     pi-     pi+                             PHSP; #[Reconstructed PDG2011]
+0.000170000 pi+     pi-     K_S0    K_S0                    PHSP; #[Reconstructed PDG2011]
+0.0008 h_c pi0 PHSP;
+0.0       K0   anti-K0       PHSP;
+0.0       K_S0      K_S0     PHSP;
+0.0       K_L0      K_L0     PHSP;
+0.000054000 K_S0    K_L0                                    PHSP; #[Reconstructed PDG2011]
+#
+# March 2009 New Modes
+0.004800000 pi+     pi-     pi+     pi-     pi0     pi0     PHSP; #[Reconstructed PDG2011]
+0.001200000 pi+     pi-     pi+     pi-     eta             PHSP; #[Reconstructed PDG2011]
+0.001300000 K+      K-      pi+     pi-     eta             PHSP; #[Reconstructed PDG2011]
+0.001000000 K+      K-      pi+     pi-     pi+     pi-     pi0     PHSP; #[Reconstructed PDG2011]
+0.001900000 K+      K-      pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.001260000 K+      K-      pi+     pi-     pi0             PHSP; #[Reconstructed PDG2011]
+#
+0.013568632 rndmflav anti-rndmflav                          PYTHIA    12; #[Reconstructed PDG2011]
+0.103318590 g       g       g                               PYTHIA     4; #[Reconstructed PDG2011]
+0.007344778 gamma   g       g                               PYTHIA     4; #[Reconstructed PDG2011]
+0.000100000 Lambda0 anti-p- K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000180000 Lambda0 anti-p- K+      pi+     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000280000 Lambda0 anti-Lambda0 pi+     pi-                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000260000 Sigma+  anti-Sigma-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000280000 Xi0     anti-Xi0                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000060000 eta     p+      anti-p-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000069000 omega   p+      anti-p-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000320000 p+      anti-n0 pi-     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000950000 eta     pi+     pi-     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000450000 eta'    pi+     pi-     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 omega   pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000220000 omega   f_2                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000220000 rho0    K+      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000190000 K*0     anti-K_2*0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000050000 rho0    p+      anti-p-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 pi+     pi-     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000730000 p+      anti-p- pi+     pi-     pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000060000 K+      K-      K+      K-                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000110000 K+      K-      K+      K-      pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000031000 phi     eta'                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000032000 omega   eta'                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000027000 p+      anti-p- K+      K-                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000044000 phi     f'_2                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000870000 gamma   eta     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000400000 gamma   pi+     pi-     pi+     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000190000 gamma   K+      K-      pi+     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000029000 gamma   p+      anti-p-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000028000 gamma   pi+     pi-     p+      anti-p-         PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
-#
+
 Decay psi(4040)
-0.000014  e+   e-                PHOTOS  VLL;
-0.000014  mu+  mu-               PHOTOS  VLL;
-0.000005  tau+ tau-                      VLL;
-0.0021    D0 anti-D0                     VSS;
-0.0009    D+ D-                          VSS;
-0.1679    D*0 anti-D0                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.1679    anti-D*0 D0                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.1815    D*+ D-                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.1815    D*- D+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.1597    D*0 anti-D*0                   PHSP;
-0.0982    D*+ D*-                        PHSP;
-0.0000    D0 anti-D0 pi0                 PHSP;
-0.0000    D+ D- pi0                      PHSP;
-0.0000    D0 D- pi+                      PHSP;
-0.0000    anti-D0 D+ pi-                 PHSP;
-0.0000    D*+ D- pi0                     PHSP;
-0.0000    D*- D+ pi0                     PHSP;
-0.0000    D*+ anti-D0 pi-                PHSP;
-0.0000    D*- D0 pi+                     PHSP;
-0.0000    D+ anti-D*0 pi-                PHSP;
-0.0000    D- D*0 pi+                     PHSP;
-0.0403    D_s+ D_s-                      VSS;
+0.000010700 e+      e-                                      PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000014000 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000005000 tau+    tau-                                    VLL; #[Reconstructed PDG2011]
+0.002099938 D0      anti-D0                                 VSS; #[Reconstructed PDG2011]
+0.000899973 D+      D-                                      VSS; #[Reconstructed PDG2011]
+0.167895013 D*0     anti-D0                                 VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.167895013 anti-D*0 D0                                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.181494610 D*+     D-                                      VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.181494610 D*-     D+                                      VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.159695257 D*0     anti-D*0                                PHSP; #[Reconstructed PDG2011]
+0.098197084 D*+     D*-                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 D0      anti-D0 pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D+      D-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D0      D-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-D0 D+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*+     D-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*-     D+      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*+     anti-D0 pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*-     D0      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D+      anti-D*0 pi-                            PHSP; #[Reconstructed PDG2011]
+0.000000000 D-      D*0     pi+                             PHSP; #[Reconstructed PDG2011]
+0.040298803 D_s+    D_s-                                    VSS; #[Reconstructed PDG2011]
 Enddecay
 #
 Decay psi(4160)
-0.00001   e+   e-                PHOTOS  VLL;
-0.00001   mu+  mu-               PHOTOS  VLL;
-0.000006  tau+ tau-                      VLL;
-0.0397    D0 anti-D0                     VSS;
-0.0387    D+ D-                          VSS;
-0.0520    D*0 anti-D0                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0520    anti-D*0 D0                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0515    D*+ D-                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0515    D*- D+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.29863    D*0 anti-D*0                   PHSP;
-0.3082    D*+ D*-                        PHSP;
-0.0000    D0 anti-D0 pi0                 PHSP;
-0.0000    D+ D- pi0                      PHSP;
-0.0000    D0 D- pi+                      PHSP;
-0.0000    anti-D0 D+ pi-                 PHSP;
-0.0000    D*+ D- pi0                     PHSP;
-0.0000    D*- D+ pi0                     PHSP;
-0.0000    D*+ anti-D0 pi-                PHSP;
-0.0000    D*- D0 pi+                     PHSP;
-0.0000    D+ anti-D*0 pi-                PHSP;
-0.0000    D- D*0 pi+                     PHSP;
-0.0100    D_s+ D_s-                      VSS;
-0.0489    D_s*+ D_s-                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0489    D_s*- D_s+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0000    D_s+ D_s- pi0                  PHSP;
+0.000008100 e+      e-                                      PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000009999 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000006000 tau+    tau-                                    VLL; #[Reconstructed PDG2011]
+0.039697852 D0      anti-D0                                 VSS; #[Reconstructed PDG2011]
+0.038697906 D+      D-                                      VSS; #[Reconstructed PDG2011]
+0.051997187 D*0     anti-D0                                 VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.051997187 anti-D*0 D0                                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.051497214 D*+     D-                                      VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.051497214 D*-     D+                                      VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.298613845 D*0     anti-D*0                                PHSP; #[Reconstructed PDG2011]
+0.308183327 D*+     D*-                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 D0      anti-D0 pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D+      D-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D0      D-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-D0 D+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*+     D-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*-     D+      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*+     anti-D0 pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*-     D0      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D+      anti-D*0 pi-                            PHSP; #[Reconstructed PDG2011]
+0.000000000 D-      D*0     pi+                             PHSP; #[Reconstructed PDG2011]
+0.009999459 D_s+    D_s-                                    VSS; #[Reconstructed PDG2011]
+0.048897355 D_s*+   D_s-                                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.048897355 D_s*-   D_s+                                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.000000000 D_s+    D_s-    pi0                             PHSP; #[Reconstructed PDG2011]
 Enddecay
 #
 Decay psi(4415)
-0.000011  e+   e-                PHOTOS  VLL;
-0.000011  mu+  mu-               PHOTOS  VLL;
-0.000007  tau+ tau-                      VLL;
-0.0244    D0 anti-D0                     VSS;
-0.0219    D+ D-                          VSS;
-0.0320    D*0 anti-D0                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0320    anti-D*0 D0                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0343    D*+ D-                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0343    D*- D+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.3451    D*0 anti-D*0                   PHSP;
-0.3539    D*+ D*-                        PHSP;
-0.0000    D0 anti-D0 pi0                 PHSP;
-0.0000    D+ D- pi0                      PHSP;
-0.0000    D0 D- pi+                      PHSP;
-0.0000    anti-D0 D+ pi-                 PHSP;
-0.0000    D*+ D- pi0                     PHSP;
-0.0000    D*- D+ pi0                     PHSP;
-0.0000    D*+ anti-D0 pi-                PHSP;
-0.0000    D*- D0 pi+                     PHSP;
-0.0000    D+ anti-D*0 pi-                PHSP;
-0.0000    D- D*0 pi+                     PHSP;
-0.0118    D_s+ D_s-                      VSS;
-0.0420    D_s*+ D_s-                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0420    D_s*- D_s+                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
-0.0263    D_s*+ D_s*-                    PHSP;
-0.0000    D_s+ D_s- pi0                  PHSP;
-0.0000    D_s*+ D_s- pi0                 PHSP;
-0.0000    D_s+ D_s*- pi0                 PHSP;
-0.0000    D_s+ D- anti-K0                PHSP;
-0.0000    D_s- D+ anti-K0                PHSP;
-0.0000    D0 D_s- K+                     PHSP;
-0.0000    anti-D0 D_s+ K-                PHSP;
-Enddecay
-#
-#
-# chi_cJ (J=0,1,2) decays were updated by Rukshana Patel June, 2006
+0.000009400 e+      e-                                      PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000011000 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.000007000 tau+    tau-                                    VLL; #[Reconstructed PDG2011]
+0.024399331 D0      anti-D0                                 VSS; #[Reconstructed PDG2011]
+0.021899400 D+      D-                                      VSS; #[Reconstructed PDG2011]
+0.031999123 D*0     anti-D0                                 VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.031999123 anti-D*0 D0                                     VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.034299060 D*+     D-                                      VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.034299060 D*-     D+                                      VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.345090544 D*0     anti-D*0                                PHSP; #[Reconstructed PDG2011]
+0.353890303 D*+     D*-                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 D0      anti-D0 pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D+      D-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D0      D-      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-D0 D+      pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*+     D-      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*-     D+      pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*+     anti-D0 pi-                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D*-     D0      pi+                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D+      anti-D*0 pi-                            PHSP; #[Reconstructed PDG2011]
+0.000000000 D-      D*0     pi+                             PHSP; #[Reconstructed PDG2011]
+0.011799677 D_s+    D_s-                                    VSS; #[Reconstructed PDG2011]
+0.041998849 D_s*+   D_s-                                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.041998849 D_s*-   D_s+                                    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.026299279 D_s*+   D_s*-                                   PHSP; #[Reconstructed PDG2011]
+0.000000000 D_s+    D_s-    pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D_s*+   D_s-    pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D_s+    D_s*-   pi0                             PHSP; #[Reconstructed PDG2011]
+0.000000000 D_s+    D-      anti-K0                         PHSP; #[Reconstructed PDG2011]
+0.000000000 D_s-    D+      anti-K0                         PHSP; #[Reconstructed PDG2011]
+0.000000000 D0      D_s-    K+                              PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-D0 D_s+    K-                              PHSP; #[Reconstructed PDG2011]
+Enddecay
 #
 Decay chi_c0
-#CLNS 08/2025-------------------------------------------------------------
-# S-> gamma V    Partial wave (L,S)=(0,0)
-0.0136     gamma  J/psi                  HELAMP 1. 0. 1. 0.;
-#CLNS 08/2019-------------------------------------------------------------
-0.000241   gamma gamma                   PHSP;
-#CPDRAFT2008 -------------------------------------------------------------
-0.000257   p+ anti-p-                    PHSP;
-0.000338   Lambda0 anti-Lambda0          PHSP;
-0.000441   Sigma0 anti-Sigma0            PHSP;
-0.000325   Sigma+ anti-Sigma-            PHSP;
-0.000514   Xi- anti-Xi+                  PHSP;
-0.000334   Xi0 anti-Xi0                  PHSP;
-#CLNS 07/2007-------------------------------------------------------------
-0.0152     rho0 pi+ pi-                  PHSP;
-0.0152     rho+ pi- pi0                  PHSP;
-0.0152     rho- pi+ pi0                  PHSP;
-0.0059     K+ K- pi0 pi0                 PHSP;
-0.0011     pi0 pi0 p+ anti-p-            PHSP;
-0.0032     K+ K- eta pi0                 PHSP;
-0.0028     K*0 anti-K0 pi0               PHSP;
-0.0028     anti-K*0 K0 pi0               PHSP;
-0.0037     K*+ K- pi0                    PHSP;
-0.0037     K*- K+ pi0                    PHSP;
-0.0048     K*+ pi- anti-K0               PHSP;
-0.0048     K*- pi+ anti-K0               PHSP;
-0.0132     K+ pi- anti-K0 pi0            PHSP;
-0.0132     K- pi+ K0 pi0                 PHSP;
-0.0354     pi+ pi- pi0 pi0               PHSP;
-#CBX07-28 ----------------------------------------------------------------
-0.00637    pi+  pi-                      PHSP;
-0.00294    pi0  pi0                      PHSP;
-0.00647    K+   K-                       PHSP;
-0.00349    K_S0      K_S0                PHSP;
-0.00349    K_L0      K_L0                PHSP;
-#CBX07-29 ----------------------------------------------------------------
-0.00318    eta eta                       PHSP;
-0.00212    eta' eta'                     PHSP;
-#PDG2008 updates ---------------------------------------------------------
-0.00029    f_0 f_0                       PHSP;
-0.0063     f'_0 f_0(1710)                PHSP;
-0.0036     anti-K*0  K+  pi-             PHSP;
-0.0036     K*0  K-  pi+                  PHSP;
-0.0083     K_1+ K-                       PHSP;
-0.0083     K_1- K+                       PHSP;
-0.0023     omega omega                   PHSP;
-0.00101    K+ K- phi                     PHSP;
-0.00093    phi phi                       PHSP;
-0.00058    p+ anti-p- pi0                PHSP;
-0.00038    p+ anti-p- eta                PHSP;
-0.0018     anti-K*0 K*0                  PHSP;
-0.00117    p+ anti-n0 pi-                PHSP;
-0.000525   K+ anti-p- Lambda0            PHSP;
-0.000525   K- p+ anti-Lambda0            PHSP;
-0.00230    K_0*0 anti-K_0*0              PHSP;
-0.00187    K_0*0 anti-K_2*0              PHSP;
-0.00187    anti-K_0*0 K_2*0              PHSP;
-#Inclusive modes updated by Daowen Hu June 2008 based on PDG2008 ---------
-# subtracted: rho0 pi+ pi-, f_0 f_0, omega omega from 0.0223
-0.00702992 pi+ pi- pi+ pi-               PHSP;
-# subtracted: anti-K*0 K*0, anti-K*0 K+ pi-, K*0 K- pi+, f_0 f_0, K_1+ K-
-# K_1- K+, K_0*0 anti-K_0*0, anti-K_0*0 K_2*0 from 0.0179
-0.00449195 pi+  pi-  K+  K-              PHSP;
-# subtracted: omega omega from 0.0120
-0.0119999  pi+ pi- pi+ pi- pi+ pi-       PHSP;
-# subtracted: f_0 f_0 from 0.0015
-0.00149691 K+ K- K_S0  K_S0              PHSP;
-# subtracted: K+ K- phi, f_0 f_0, phi phi from 0.00281
-0.0020868  K+ K- K+ K-                   PHSP;
-# subtracted: f_0 f_0, K*+ K_S0 pi-, K*- K_S0 pi+, K*+ pi- anti-K0
-# K*- pi+ anti-K0 from 0.0059
-0.00228901 pi+ pi- K_S0  K_S0            PHSP;
-# subtracted: Lambda0 anti-Lambda0 from 0.0021
-0.00196199 pi+  pi-  p+  anti-p-         PHSP;
-#
-#assume to be the same as K*0 K- pi+
-0.0036     K*+  K_S0   pi-               PHSP;
-0.0036     K*+  K_L0   pi-               PHSP;
-0.0036     K*-  K_S0   pi+               PHSP;
-0.0036     K*-  K_L0   pi+               PHSP;
-#BES,PLB630(2005),21-30 --------------------------------------------------
-0.0        K_S0      K_L0                PHSP;
-0.0        K0        anti-K0             PHSP;
-# ccbar modes to suppress added on 06042008
-0.0000     rho0  pi0                     PHSP;
-0.0000     omega pi0                     PHSP;
-0.0000     phi   pi0                     PHSP;
-0.0000     gamma pi0                     PHSP;
-0.0000     rho0  eta                     PHSP;
-0.0000     omega eta                     PHSP;
-0.0000     phi   eta                     PHSP;
-0.0000     gamma eta                     PHSP;
-0.0000     rho0  eta'                    PHSP;
-0.0000     omega eta'                    PHSP;
-0.0000     phi   eta'                    PHSP;
-0.0000     gamma eta'                    PHSP;
-#
-0.72428  rndmflav        anti-rndmflav   PYTHIA         12;
+0.011600000 gamma   J/psi                                   PHSP; #[Reconstructed PDG2011]
+0.000228000 p+      anti-p-                                 PHSP; #[Reconstructed PDG2011]
+0.000222000 gamma   gamma                                   PHSP; #[Reconstructed PDG2011]
+0.00243    pi0 pi0                        PHSP;
+0.00487    pi+ pi-                        PHSP;
+0.013800000 pi+     pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.002810000 K+      K-      K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.012000000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.008900000 rho0    pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.0100    rho+ pi- pi0                   PHSP;
+0.0100    rho- pi+ pi0                   PHSP;
+0.00057    K+   K-                        PHSP;
+0.000920000 phi     phi                                     PHSP; #[Reconstructed PDG2011]
+0.001700000 anti-K*0 K*0                                    PHSP; #[Reconstructed PDG2011]
+0.0036    anti-K*0  K+  pi-              PHSP;
+0.0036    K*0  K-  pi+                   PHSP;
+0.0043    K*+  anti-K0   pi-             PHSP;
+0.0043    K*-  K0  pi+                   PHSP;
+0.018000000 pi+     pi-     K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.002100000 pi+     pi-     p+      anti-p-                 PHSP; #[Reconstructed PDG2011]
+0.002680000 eta     eta                                     PHSP; #[Reconstructed PDG2011]
+0.000330000 Lambda0 anti-Lambda0                            PHSP; #[Reconstructed PDG2011]
+0.00086    f_0 f_0                        PHSP;
+0.0       K0   anti-K0       PHSP;
+0.003160000 K_S0    K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.00282    K_L0      K_L0     PHSP;
+0.0       K_S0      K_L0     PHSP;
+#
+# March 2009 New Modes
+0.002030000 eta'    eta'                                    PHSP; #[Reconstructed PDG2011]
+0.002200000 omega   omega                                   PHSP; #[Reconstructed PDG2011]
+0.00325   K_1+ K-   PHSP;
+0.00325   K_1- K+   PHSP;
+0.000990000 K+      K-      phi                             PHSP; #[Reconstructed PDG2011]
+0.001140000 p+      anti-n0 pi-                             PHSP; #[Reconstructed PDG2011]
+0.000525   K+ anti-p- Lambda0   PHSP;
+0.000525   K- p+ Lambda0   PHSP;
+0.005800000 K_S0    K_S0    pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.00590   K_L0 K_L0 pi+ pi-   PHSP;
+0.00000   K0 anti-K0 pi+ pi-   PHSP;
+0.001400000 K+      K-      K_S0    K_S0                    PHSP; #[Reconstructed PDG2011]
+0.00150   K+ K- K_L0 K_L0   PHSP;
+0.00000   K+ K- K0 anti-K0   PHSP;
+#
+0.799360000 rndmflav anti-rndmflav                          PYTHIA         12; #[Reconstructed PDG2011]
+0.034000000 pi+     pi-     pi0     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.005700000 K+      K-      pi0     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.003100000 K+      K-      eta     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000570000 p+      anti-p- pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000370000 p+      anti-p- eta                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001050000 pi0     pi0     p+      anti-p-                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000420000 Sigma0  anti-Sigma0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 Sigma+  anti-Sigma-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000320000 Xi0     anti-Xi0                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000490000 Xi-     anti-Xi+                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay chi_c1
-#CLNS 08/2025-------------------------------------------------------------
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.393      gamma  J/psi                  HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-#CPDRAFT2008-011----------------------------------------------------------
-0.000090   p+ anti-p-                    PHSP;
-0.00024    Lambda0 anti-Lambda0          PHSP;
-0.000086   Xi-     anti-Xi+              PHSP;
-#CLNS 07/2007-------------------------------------------------------------
-0.0078     rho0 pi+ pi-                  PHSP;
-0.0078     rho+ pi- pi0                  PHSP;
-0.0078     rho- pi+ pi0                  PHSP;
-0.0012     K+ K- pi0 pi0                 PHSP;
-0.0012     K+ K- eta pi0                 PHSP;
-0.0019     K*0 anti-K0 pi0               PHSP;
-0.0019     anti-K*0 K0 pi0               PHSP;
-0.0046     K+ pi- anti-K0 pi0            PHSP;
-0.0046     K- pi+ K0 pi0                 PHSP;
-#PDG2008------------------------------------------------------------------
-0.0058     pi+ pi- pi+ pi- pi+ pi-       PHSP;
-0.0025     pi+ pi- eta'                  PHSP;
-0.00035    K+ K- eta                     PHSP;
-0.00385    K0 K+ pi-                     PHSP;
-0.00385    anti-K0 K- pi+                PHSP;
-0.0011     a_0+ pi-                      PHSP;
-0.0011     a_0- pi+                      PHSP;
-0.003      f_2 eta                       PHSP;
-0.0016     anti-K*0  K+  pi-             PHSP;
-0.0016     K*0  K-  pi+                  PHSP;
-0.0016     anti-K*0 K*0                  PHSP;
-0.00055    K*0 anti-K0                   PHSP;
-0.00055    anti-K*0 K0                   PHSP;
-0.00385    pi+ K- K0                     PHSP;
-0.00385    pi- K+ anti-K0                PHSP;
-0.0008     K*+ K-                        PHSP;
-0.0008     K*- K+                        PHSP;
-0.00058    K+ K- K+ K-                   PHSP;
-0.00045    K+ K- phi                     PHSP;
-0.00012    p+ anti-p- pi0                PHSP;
-0.00034    K+ anti-p- Lambda0            PHSP;
-0.00034    K- p+ anti-Lambda0            PHSP;
-#Inclusive modes updated by Daowen Hu June 2008 based on PDG2008 ---------
-# subtracted: rho0 pi+ pi- from 0.0076, set it zero since it is -0.0002
-0.0000     pi+ pi- pi+ pi-               PHSP;
-# subtracted: anti-K*0 K*0, K_2*+ K-, K_2*- K+, anti-K*0 K+ pi-, K*0 K- pi+
-# from 0.0045
-0.00146781 pi+  pi-  K+  K-              PHSP;
-# subtracted: a_0+ pi-, a_0- pi+, f_2 eta from 0.0058
-0.002125   pi+ pi- eta                   PHSP;
-# subtracted: K*+ K-, K*- K+, K_0*+ K-, K_0*- K+, K_2*+ K-, K_2*- K+
-# phi pi0 from 0.00201
-0.000658166 K+ K- pi0                    PHSP;
-# subtracted: K*+ K_S0 pi-, K*- K_S0 pi+, anti-K_2*0 K0, K_2*0 anti-K0
-# from 0.00076
-0.000178958 pi+ pi- K_S0 K_S0            PHSP;
-## inclusive = 0.00049
-# subtracted: Lambda0 anti-Lambda0 from 0.0005
-0.000402003 pi+  pi-  p+  anti-p-        PHSP; 
-#
-#assume to be the same as K*0 K- pi+
-0.0008     K*+  K_S0   pi-               PHSP;
-0.0008     K*+  K_L0   pi-               PHSP;
-0.0008     K*-  K_S0  pi+                PHSP;
-0.0008     K*-  K_L0  pi+                PHSP;
-#
-0.0012     K+ K_S0 pi-                   PHSP;
-0.0012     K- K_S0 pi+                   PHSP;
-#
-0.0        K0        anti-K0             PHSP;
-0.0        K_S0      K_L0                PHSP;
-# force it so that PYTHIA won't generate this
-0.00000    pi+ pi-                       PHSP;
-#
-#   0.00195 * 30.4% / 2 / 0.3333
-0.00089    K_0*+ K-                      PHSP;
-0.00089    K_0*- K+                      PHSP;
-0.00089    anti-K_0*0 K0                 PHSP;
-0.00089    K_0*0 anti-K0                 PHSP;
-#   0.00195 * 23.1% / 2 / 0.331
-0.00068    K_2*+ K-                      PHSP;
-0.00068    K_2*- K+                      PHSP;
-0.00068    anti-K_2*0 K0                 PHSP;
-0.00068    K_2*0 anti-K0                 PHSP;
-# ccbar modes to suppress added on 06042008
-0.0000     rho0  pi0                     PHSP;
-0.0000     omega pi0                     PHSP;
-0.0000     phi   pi0                     PHSP;
-0.0000     gamma pi0                     PHSP;
-0.0000     rho0  eta                     PHSP;
-0.0000     omega eta                     PHSP;
-0.0000     phi   eta                     PHSP;
-0.0000     gamma eta                     PHSP;
-0.0000     rho0  eta'                    PHSP;
-0.0000     omega eta'                    PHSP;
-0.0000     phi   eta'                    PHSP;
-0.0000     gamma eta'                    PHSP;
-#
-0.512492   rndmflav       anti-rndmflav  PYTHIA         12;
+0.344000000 J/psi   gamma                                   VVP 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+0.007600000 pi+     pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.000073000 p+      anti-p-                                 PHSP; #[Reconstructed PDG2011]
+0.005800000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.004500000 pi+     pi-     K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.003900000 rho0    pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.0020    rho+ pi- pi0                   PHSP;
+0.0020    rho- pi+ pi0                   PHSP;
+0.0016    anti-K*0  K+  pi-              PHSP;
+0.0016    K*0  K-  pi+                   PHSP;
+0.001500000 anti-K*0 K*0                                    PHSP; #[Reconstructed PDG2011]
+0.0009    K*+  anti-K0   pi-             PHSP;
+0.0009    K*-  K0  pi+                   PHSP;
+0.000500000 pi+     pi-     p+      anti-p-                 PHSP; #[Reconstructed PDG2011]
+0.000720000 pi+     pi-     K_S0    K_S0                    PHSP; #[Reconstructed PDG2011]
+0.0003    K+ K- K_S0 K_S0                PHSP;
+0.000118000 Lambda0 anti-Lambda0                            PHSP; #[Reconstructed PDG2011]
+0.00385    K+ anti-K0  pi-                PHSP;
+0.00385    K- K0 pi+                      PHSP;
+0.000560000 K+      K-      K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.00000    K0   anti-K0                   PHSP;
+0.00001    K_S0      K_S0                 PHSP;
+0.00001    K_L0      K_L0                 PHSP;
+0.00000    K_S0      K_L0                 PHSP;
+#
+# March 2009 New Modes
+0.002200000 pi+     pi-     eta                             PHSP; #[Reconstructed PDG2011]
+0.002400000 pi+     pi-     eta'                            PHSP; #[Reconstructed PDG2011]
+0.001910000 K+      K-      pi0                             PHSP; #[Reconstructed PDG2011]
+#
+0.587724   rndmflav        anti-rndmflav  PYTHIA         12;
+0.008700000 pi+     pi-     pi0     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001180000 K+      K-      pi0     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001200000 K+      K-      eta     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000330000 K+      K-      eta                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002800000 f_2     eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000430000 K+      K-      phi                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000120000 p+      anti-p- pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000320000 K+      anti-p- Lambda0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000084000 Xi-     anti-Xi+                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000229000 gamma   rho0                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000078000 gamma   omega                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
+
+
 #
 Decay chi_c2
-#CLNS 08/2025-------------------------------------------------------------
-# T-> gamma V    Partial wave (L,S)=(0,2)
-0.209      gamma  J/psi                  HELAMP 1. 0. 1.7320508 0. 2.4494897 
-                                         0. 2.4494897 0. 1.7320508 0. 1. 0.;
-#CLNS 08.2019-------------------------------------------------------------
-0.000289   gamma gamma                   PHSP;
-#CPDRAFT2008-011----------------------------------------------------------
-0.000077   p+ anti-p-                    PHSP;
-0.00017    Lambda0 anti-Lambda0          PHSP;
-0.000145   Xi- anti-Xi+                  PHSP;
-#CLNS 07/2007-------------------------------------------------------------
-0.01115    rho0 pi+ pi-                  PHSP;
-0.01115    rho+ pi- pi0                  PHSP;
-0.01115    rho- pi+ pi0                  PHSP;
-0.0021     K+ K- pi0 pi0                 PHSP;
-0.008      pi0 pi0 p+ anti-p-            PHSP;
-0.0013     K+ K- eta pi0                 PHSP;
-0.00295    K*0 anti-K0 pi0               PHSP;
-0.00295    anti-K*0 K0 pi0               PHSP;
-0.0045     K*0 K- pi+                    PHSP;
-0.0045     anti-K*0 K+ pi-               PHSP;
-0.00285    K*+ K- pi0                    PHSP;
-0.00285    K*- K+ pi0                    PHSP;
-0.0045     K*+ anti-K0 pi-               PHSP;
-0.0045     K*- K0 pi+                    PHSP;
-0.00705    K+ pi- anti-K0 pi0            PHSP;
-0.00705    K- pi+ K0 pi0                 PHSP;
-#CBX07-28-----------------------------------------------------------------
-0.00159    pi+  pi-                      TSS;
-0.00068    pi0  pi0                      TSS;
-0.00113    K+   K-                       TSS;
-0.00053    K_S0      K_S0                TSS;
-0.00051    eta eta                       TSS;
-0.00006    eta' eta'                     TSS;
-#PDG2008------------------------------------------------------------------
-0.0026     anti-K*0  K*0                 PHSP;
-0.00154    phi phi                       PHSP;
-0.002      omega omega                   PHSP;
-0.00055    pi+ pi- eta                   PHSP;
-0.00057    pi+ pi- eta'                  PHSP;
-0.00070    K0 K- pi+                     PHSP;
-0.00070    anti-K0 K+ pi-                PHSP;
-0.00035    K+ K- pi0                     PHSP;
-0.00163    K+ K- phi                     PHSP;
-0.00049    p+ anti-p- pi0                PHSP;
-0.00021    p+ anti-p- eta                PHSP;
-0.00120    p+ anti-n0 pi-                PHSP;
-0.00048    K+ anti-p- Lambda0            PHSP;
-0.00048    K- p+ anti-Lambda0            PHSP;
-#Inclusive modes updated by Daowen Hu June 2008 based on PDG2008 ---------
-# subtracted: rho0 pi+ pi-, omega omega from 0.0114
-0.000249024 pi+ pi- pi+ pi-              PHSP;
-# subtracted: anti-K*0 K+ pi-, K*0 K- pi+, anti-K*0 K*0 from 0.0094
-0.00225649 pi+  pi-  K+  K-              PHSP;
-# subtracted: omega omega from 0.0086
-0.00859991 pi+ pi- pi+ pi- pi+ pi-       PHSP;
-# subtracted: K*+ K_S0 pi-, K*- K_S0 pi+, K*+ anti-K0 pi-, K*- K0 pi+
-# from 0.0025
-0.0002023  pi+  pi- K_S0 K_S0            PHSP;
-# subtracted: phi phi, K+ K- phi from 0.00184
-0.000668405 K+ K- K+ K-                  PHSP;
-# subtracted: Lambda0 anti-Lambda0 from 0.00132
-0.00120975 pi+  pi-  p+  anti-p-         PHSP;
-#
-#BES,PLB630(2005),21-30 --------------------------------------------------
-0.00089    K_L0      K_L0                TSS;
-#PDG2006  ----------------------------------------------------------------
-0.0012     K*+  K_S0   pi-               PHSP;
-0.0012     K*+  K_L0   pi-               PHSP;
-0.0012     K*-  K_S0  pi+                PHSP;
-0.0012     K*-  K_L0  pi+                PHSP;
-0.0        K0   anti-K0                  PHSP;
-0.0        K_S0      K_L0                PHSP;
-# ccbar modes to suppress added on 06042008
-0.0000     rho0  pi0                     PHSP;
-0.0000     omega pi0                     PHSP;
-0.0000     phi   pi0                     PHSP;
-0.0000     gamma pi0                     PHSP;
-0.0000     rho0  eta                     PHSP;
-0.0000     omega eta                     PHSP;
-0.0000     phi   eta                     PHSP;
-0.0000     gamma eta                     PHSP;
-0.0000     rho0  eta'                    PHSP;
-0.0000     omega eta'                    PHSP;
-0.0000     phi   eta'                    PHSP;
-0.0000     gamma eta'                    PHSP;
-# sum of other = 0.352158
-#
-0.664893   rndmflav      anti-rndmflav   PYTHIA         12;
+0.195000000 gamma   J/psi                                   PHSP; #[Reconstructed PDG2011]
+0.000256000 gamma   gamma                                   PHSP; #[Reconstructed PDG2011]
+0.000072000 p+      anti-p-                                 PHSP; #[Reconstructed PDG2011]
+0.00072   pi0 pi0                       TSS;
+0.00145    pi+ pi-                       TSS;
+0.011100000 pi+     pi-     pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.001780000 K+      K-      K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.008600000 pi+     pi-     pi+     pi-     pi+     pi-     PHSP; #[Reconstructed PDG2011]
+0.009200000 pi+     pi-     K+      K-                      PHSP; #[Reconstructed PDG2011]
+0.004000000 rho0    pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.0046   rho+ pi- pi0                   PHSP;
+0.0046   rho- pi+ pi0                   PHSP;
+0.001090000 K+      K-                                      TSS; #[Reconstructed PDG2011]
+0.002400000 pi+     pi-     K_S0    K_S0                    PHSP; #[Reconstructed PDG2011]
+0.0003    K+  K- K_S0 K_S0               PHSP;
+0.001480000 phi     phi                                     PHSP; #[Reconstructed PDG2011]
+0.00115    anti-K*0  K+  pi-              PHSP;
+0.00115    K*0  K-  pi+                   PHSP;
+0.002500000 anti-K*0 K*0                                    PHSP; #[Reconstructed PDG2011]
+0.0016    K*+  anti-K0   pi-             PHSP;
+0.0016    K*-  K0  pi+                   PHSP;
+0.001320000 pi+     pi-     p+      anti-p-                 PHSP; #[Reconstructed PDG2011]
+0.000186000 Lambda0 anti-Lambda0                            PHSP; #[Reconstructed PDG2011]
+0.00000   K0   anti-K0       PHSP;
+0.000580000 K_S0    K_S0                                    PHSP; #[Reconstructed PDG2011]
+0.00065   K_L0      K_L0                  PHSP;
+0.00000   K_S0      K_L0     PHSP;
+#
+# March 2009 New Modes
+0.001900000 omega   omega                                   PHSP; #[Reconstructed PDG2011]
+0.0007   anti-K0 K+ pi-   PHSP;
+0.0007   K0 K- pi+   PHSP;
+0.001550000 K+      K-      phi                             PHSP; #[Reconstructed PDG2011]
+0.001100000 p+      anti-n0 pi-                             PHSP; #[Reconstructed PDG2011]
+#
+0.709461000 rndmflav anti-rndmflav                          PYTHIA      12; #[Reconstructed PDG2011]
+0.020000000 pi+     pi-     pi0     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002200000 K+      K-      pi0     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001400000 K+      K-      eta     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000520000 pi+     pi-     eta                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 pi+     pi-     eta'                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 eta     eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000330000 K+      K-      pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000470000 p+      anti-p- pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000200000 p+      anti-p- eta                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000850000 pi0     pi0     p+      anti-p-                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000155000 Xi-     anti-Xi+                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
-#
 Decay psi(3770)
-0.4243    D+  D-                         VSS;
-0.5723    D0  anti-D0                    VSS;
-0.0034    J/psi pi+  pi-                 PHSP;      
+0.410000000 D+      D-                                      VSS; #[Reconstructed PDG2011]
+0.520000000 D0      anti-D0                                 VSS; #[Reconstructed PDG2011]
+0.001930000 J/psi   pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.000800000 J/psi   pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.0073    gamma  chi_c0                  PHSP;
+0.0029    gamma  chi_c1                  PHSP;
+0.055850300 rndmflav anti-rndmflav                          PYTHIA 12; #[Reconstructed PDG2011]
+0.000900000 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009700 e+      e-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 phi     eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+Decay X_1(3872)
+1.000 rndmflav anti-rndmflav PYTHIA 12;
 Enddecay
 #
 #
-#    bb=  Mesons
+#    bb=  Mesons Updated to PDG 2008
 #
-##################### ETA_b #########################
-# no changes to original DECAY.DEC
 Decay  eta_b
-1.000         g        g        PYTHIA    32;
-Enddecay
-
-##################### ETA_b(3S) #########################
-# not in original DECAY.DEC. No information
-Decay  eta_b(2S)
-1.000         g        g        PYTHIA    32;
+1.000         rndmflav        anti-rndmflav   PYTHIA         12;
 Enddecay
-
-##################### H_b #########################
-Decay h_b
-# radiative decay Godfrey J.Phys.Conf.Ser.9:123-126,2005
-0.414   gamma eta_b     PHSP;
-0.586         g       g       PYTHIA         32;
+#
+Decay  Upsilon
+0.024800000 e+      e-                                      PHOTOS  VLL; #[Reconstructed PDG2011]
+0.024800000 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.026000000 tau+    tau-                                    VLL; #[Reconstructed PDG2011]
+0.014959973 d       anti-d                                  PYTHIA         32; #[Reconstructed PDG2011]
+0.044879919 u       anti-u                                  PYTHIA         32; #[Reconstructed PDG2011]
+0.014959973 s       anti-s                                  PYTHIA         32; #[Reconstructed PDG2011]
+0.044879919 c       anti-c                                  PYTHIA         32; #[Reconstructed PDG2011]
+0.774328202 g       g       g                               PYTHIA         4; #[Reconstructed PDG2011]
+0.028922614 gamma   g       g                               PYTHIA         4; #[Reconstructed PDG2011]
+0.000063000 gamma   pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000017000 gamma   pi0     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011400 gamma   K+      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000290000 gamma   pi+     pi-     K+      K-              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000250000 gamma   pi+     pi+     pi-     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000250000 gamma   pi+     pi+     pi+     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000240000 gamma   pi+     pi+     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000150000 gamma   pi+     pi-     p+      anti-p-         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000040000 gamma   pi+     pi+     pi-     pi-     p+      anti-p- PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000020000 gamma   K+      K+      K-      K-              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000037000 gamma   f'_2                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000101000 gamma   f_2                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
-
-##################### H_b(2P) #########################
-Decay h_b(2P)
-# no information
-0.4   gamma eta_b(2S)    PHSP;
-0.6         g       g       PYTHIA         32;
+#
+Decay  Upsilon(2S)
+0.019100000 e+      e-                                      PHOTOS  VLL; #[Reconstructed PDG2011]
+0.019300000 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.020000000 tau+    tau-                                    VLL; #[Reconstructed PDG2011]
+0.181000000 Upsilon pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.086000000 Upsilon pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+# V-> gamma S    Partial wave (L,S)=(0,1)
+0.038000000 gamma   chi_b0                                  HELAMP 1. 0. +1. 0.; #[Reconstructed PDG2011]
+# V-> gamma V    Partial wave (L,S)=(0,1)
+0.069000000 gamma   chi_b1                                  HELAMP 1. 0. 1. 0. -1. 0. -1. 0.; #[Reconstructed PDG2011]
+# V-> gamma T    Partial wave (L,S)=(0,1)
+0.071500000 gamma   chi_b2                                  HELAMP 2.4494897 0. 1.7320508 0. 1. 0.                                 1. 0. 1.7320508 0. 2.4494897 0.; #[Reconstructed PDG2011]
+0.00500         d       anti-d  PYTHIA         32;
+0.02000         u       anti-u  PYTHIA         32;
+0.00500         s       anti-s  PYTHIA         32;
+0.02000         c       anti-c  PYTHIA         32;
+0.42160         g       g       g       PYTHIA         4;
+0.01600         gamma           g       g       PYTHIA         4;
+0.000210000 Upsilon eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000390000 gamma   eta_b                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
+#
+Decay  Upsilon(3S)
+0.0181    e+    e-              PHOTOS  VLL;
+0.021800000 mu+     mu-                                     PHOTOS  VLL; #[Reconstructed PDG2011]
+0.022900000 tau+    tau-                                    VLL; #[Reconstructed PDG2011]
+0.044000000 Upsilon pi+     pi-                             PHSP; #[Reconstructed PDG2011]
+0.022000000 Upsilon pi0     pi0                             PHSP; #[Reconstructed PDG2011]
+0.024500000 Upsilon(2S) pi+     pi-                         PHSP; #[Reconstructed PDG2011]
+0.018500000 Upsilon(2S) pi0     pi0                         PHSP; #[Reconstructed PDG2011]
+0.050000000 Upsilon(2S) gamma   gamma                       PHSP; #[Reconstructed PDG2011]
+# V-> gamma S    Partial wave (L,S)=(0,1)
+0.059000000 gamma   chi_b0(2P)                              HELAMP 1. 0. 1. 0.; #[Reconstructed PDG2011]
+# V-> gamma V    Partial wave (L,S)=(0,1)
+0.126000000 gamma   chi_b1(2P)                              HELAMP 1. 0. 1. 0. -1. 0. -1. 0.; #[Reconstructed PDG2011]
+# V-> gamma T    Partial wave (L,S)=(0,1)
+0.131000000 gamma   chi_b2(2P)                              HELAMP 2.4494897 0. 1.7320508 0. 1. 0.                                   1. 0. 1.7320508 0. 2.4494897 0.; #[Reconstructed PDG2011]
+0.00700         d       anti-d  PYTHIA         32;
+0.02800         u       anti-u  PYTHIA         32;
+0.00700         s       anti-s  PYTHIA         32;
+0.02800         c       anti-c  PYTHIA         32;
+0.37780         g       g       g       PYTHIA         4;
+0.01000         gamma           g       g       PYTHIA         4;
+0.003000000 gamma   chi_b0                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000510000 gamma   eta_b                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
 
-##################### H_b(3P) #########################
-Decay h_b(3P)
-# no information
-0.4   gamma eta_b(3S)    PHSP;
-0.6         g       g       PYTHIA         32;
+Decay Upsilon(5S)
+0.5 B+ B- PHSP;
+0.481487200 g       g       g                               PYTHIA  4; #[Reconstructed PDG2011]
+0.000002800 e+      e-                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.005300000 Upsilon pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.007800000 Upsilon(2S) pi+     pi-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004800000 Upsilon(3S) pi+     pi-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000610000 Upsilon K+      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 
-##################### UPSILON_1(1D) #########################
-Decay   Upsilon_1(1D)
+Decay chi_b0
+# S-> gamma V    Partial wave (L,S)=(0,0)
+0.0500    gamma  Upsilon       HELAMP 1. 0. 1. 0.;
+0.949650000 rndmflav anti-rndmflav                          PYTHIA         12; #[Reconstructed PDG2011]
+0.000110000 pi+     pi+     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000240000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+Decay chi_b1
+# V-> gamma V    Partial wave (L,S)=(0,1)
+0.350000000 gamma   Upsilon                                 HELAMP 1. 0. 1. 0. -1. 0. -1. 0.; #[Reconstructed PDG2011]
+0.643080000 g       g                                       PYTHIA         32; #[Reconstructed PDG2011]
+0.000200000 pi+     pi-     K+      K-      pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 pi+     pi+     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000150000 pi+     pi+     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 pi+     pi+     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000860000 pi+     pi+     pi-     pi-     K+      K-      pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000190000 pi+     pi+     pi+     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001700000 pi+     pi+     pi+     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000260000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000750000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000260000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001400000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+Decay chi_b2
+# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP.
+0.220000000 gamma   Upsilon                                 PHSP; #[Reconstructed PDG2011]
+#0.2200    gamma  Upsilon       HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                      2.4494897 0. 1.7320508 0. 1. 0.;
+0.775550000 g       g                                       PYTHIA         32; #[Reconstructed PDG2011]
+0.000080000 pi+     pi-     K+      K-      pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 pi+     pi+     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000110000 pi+     pi+     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000210000 pi+     pi+     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000390000 pi+     pi+     pi-     pi-     K+      K-      pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000070000 pi+     pi+     pi+     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001000000 pi+     pi+     pi+     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000360000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000080000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+Decay chi_b0(2P)
+# S-> gamma V    Partial wave (L,S)=(0,0)
+0.009000000 gamma   Upsilon                                 HELAMP 1. 0. 1. 0.; #[Reconstructed PDG2011]
+0.046000000 gamma   Upsilon(2S)                             HELAMP 1. 0. 1. 0.; #[Reconstructed PDG2011]
+# S-> gamma V    Partial wave (L,S)=(0,0)
+0.00150   gamma  Upsilon_1(1D)       HELAMP 1. 0. 1. 0.;
+0.94350          g       g       PYTHIA         32;
+Enddecay
+#
+Decay chi_b1(2P)
+# V-> gamma V    Partial wave (L,S)=(0,1)
+0.085000000 gamma   Upsilon                                 HELAMP 1. 0. 1. 0. -1. 0. -1. 0.; #[Reconstructed PDG2011]
+0.210000000 gamma   Upsilon(2S)                             HELAMP 1. 0. 1. 0. -1. 0. -1. 0.; #[Reconstructed PDG2011]
+# V-> gamma V    Partial wave (L,S)=(0,1)
+0.0097    gamma  Upsilon_1(1D) HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
+# V-> gamma T    Partial wave (L,S)=(0,1)
+0.0236    gamma  Upsilon_2(1D)   HELAMP 2.4494897 0. 1.7320508 0. 1. 0.                                        1. 0. 1.7320508 0. 2.4494897 0.;
+0.648650000 g       g                                       PYTHIA         32; #[Reconstructed PDG2011]
+0.016300000 omega   Upsilon                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 pi+     pi-     K+      K-      pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000590000 pi+     pi+     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000100000 pi+     pi+     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000550000 pi+     pi+     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001000000 pi+     pi+     pi-     pi-     K+      K-      pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000120000 pi+     pi+     pi+     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001200000 pi+     pi+     pi+     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000200000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000610000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000170000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001900000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+Decay chi_b2(2P)
+# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP.
+0.071000000 gamma   Upsilon                                 PHSP; #[Reconstructed PDG2011]
+#0.0710    gamma  Upsilon            HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                           2.4494897 0. 1.7320508 0. 1. 0.;
+0.162000000 gamma   Upsilon(2S)                             PHSP; #[Reconstructed PDG2011]
+#0.1620    gamma  Upsilon(2S)        HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                           2.4494897 0. 1.7320508 0. 1. 0.;
+# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP.
+0.00023   gamma  Upsilon_1(1D)      PHSP;
+#0.00023   gamma  Upsilon_1(1D)      HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                           2.4494897 0. 1.7320508 0. 1. 0.;
+# T -> gamma T   Partial wave (L,S)=(0,2)
+0.00290         gamma Upsilon_2(1D)  PHSP;
+#0.00290         gamma Upsilon_2(1D) HELAMP -1. 0. -1.2247449 0.
+#                                           -1.2247449 0. -1. 0.
+#                                            1. 0.  1.2247449 0.
+#                                            1.2247449 0.  1. 0.;
+# spin 3 not yet in HELAMP.
+0.01420   gamma  Upsilon_3(1D)              PYTHIA         0;
+# T-> gamma 3    Partial wave (L,S)=(0,2)
+#0.01420   gamma  Upsilon_3(1D)    HELAMP 3.8729833 0. 3.1622777 0.
+#                                         2.4494897 0. 1.7320508. 0. 1. 0.
+#                                         1. 0. 1.7320508 0.  2.4494897 0.
+#                                         3.1622777 0. 3.8729833 0.;
+0.734240000 g       g                                       PYTHIA         32; #[Reconstructed PDG2011]
+0.011000000 omega   Upsilon                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000390000 pi+     pi+     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000090000 pi+     pi+     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000240000 pi+     pi+     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000470000 pi+     pi+     pi-     pi-     K+      K-      pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000090000 pi+     pi+     pi+     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001200000 pi+     pi+     pi+     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000140000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000420000 pi+     pi+     pi+     pi-     pi-     pi-     K+      K-      pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000090000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001300000 pi+     pi+     pi+     pi+     pi-     pi-     pi-     pi-     pi0     pi0     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+Decay  h_b
+1.00000         g       g       PYTHIA         32;
+Enddecay
+
+Decay   chi_b0(3P)
+#see Kwong and Rosner, PRD 38,279 (1988)
+# S-> gamma V    Partial wave (L,S)=(0,0)
+0.01700         gamma Upsilon(3S)    HELAMP 1. 0. 1. 0.;
+# S-> gamma V    Partial wave (L,S)=(0,0)
+0.00400         gamma Upsilon_1(2D)  HELAMP 1. 0. 1. 0.;
+0.97900         g       g               PYTHIA 32;
+Enddecay
+
+Decay   chi_b1(3P)
+#see Kwong and Rosner, PRD 38,279 (1988)
+# V-> gamma V    Partial wave (L,S)=(0,1)
+0.15000         gamma Upsilon(3S)     HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
+# V-> gamma T    Partial wave (L,S)=(0,1)
+0.03100         gamma Upsilon_2(2D)   HELAMP 2.4494897 0. 1.7320508 0. 1. 0.                                             1. 0. 1.7320508 0. 2.4494897 0.;
+# V-> gamma V    Partial wave (L,S)=(0,1)
+0.01300         gamma Upsilon_1(2D)   HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
+0.80600         g       g               PYTHIA 32;
+Enddecay
+
+Decay   chi_b2(3P)
 #see Kwong and Rosner, PRD 38,279 (1988)
-# added leptonic decays
-0.00004    e+    e-              PHOTOS  VLL;
-0.00004    mu+   mu-             PHOTOS  VLL;
-0.00004    tau+  tau-                    VLL;
+# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP.
+0.08700         gamma Upsilon(3S) PHSP;
+0.00000         gamma Upsilon(2S) PHSP;
+0.00000         gamma Upsilon     PHSP;
+#0.08700         gamma Upsilon(3S) HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                         2.4494897 0. 1.7320508 0. 1. 0.;
+#0.00000         gamma Upsilon(2S) HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                         2.4494897 0. 1.7320508 0. 1. 0.;
+#0.00000         gamma Upsilon     HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                         2.4494897 0. 1.7320508 0. 1. 0.;
+# spin 3 not yet in HELAMP
+0.02200         Upsilon_3(2D)   gamma   PHSP;
+# T -> gamma 3   Partial wave (L,S)=(0,2)
+#0.02200         gamma Upsilon_3(2D) HELAMP 3.8729833 0. 3.1622777 0.
+#                                           2.4494897 0. 1.7320508. 0. 1. 0.
+#                                           1. 0. 1.7320508 0.  2.4494897 0.
+#                                           3.1622777 0. 3.8729833 0.;
+# T -> gamma T   Partial wave (L,S)=(0,2)
+0.00400         gamma Upsilon_2(2D) PHSP;
+#0.00400         gamma Upsilon_2(2D) HELAMP -1. 0. -1.2247449 0.
+#                                           -1.2247449 0. -1. 0.
+#                                            1. 0.  1.2247449 0.
+#                                            1.2247449 0.  1. 0.;
+# T-> gamma V    Partial wave (L,S)=(0,2)
+0.00040         gamma Upsilon_1(2D) PHSP;
+#0.00040         gamma Upsilon_1(2D) HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
+#                                           2.4494897 0. 1.7320508 0. 1. 0.;
+0.88660         g       g               PYTHIA 32;
+Enddecay
 
+Decay   Upsilon_1(1D)
+#see Kwong and Rosner, PRD 38,279 (1988)
 0.00140         Upsilon  pi+    pi-     PHSP;
 0.00070         Upsilon  pi0    pi0     PHSP;
 # V-> gamma S    Partial wave (L,S)=(0,1)
@@ -8521,12 +8467,10 @@ Decay   Upsilon_1(1D)
 # V-> gamma V    Partial wave (L,S)=(0,1)
 0.31800         gamma    chi_b1         HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
 # V-> gamma T    Partial wave (L,S)=(0,1)
-0.02600         gamma       chi_b2      HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                               1. 0. 1.7320508 0. 2.4494897 0.;
-0.05178         g        g      g       PYTHIA 4;
+0.02600         gamma       chi_b2      HELAMP 2.4494897 0. 1.7320508 0. 1. 0.                                               1. 0. 1.7320508 0. 2.4494897 0.;
+0.05190         g        g      g       PYTHIA 4;
 Enddecay
 
-##################### UPSILON_2(1D) #########################
 Decay   Upsilon_2(1D)
 #see Kwong and Rosner, PRD 38,279 (1988)
 0.00140         Upsilon  pi+     pi-    PHSP;
@@ -8534,17 +8478,16 @@ Decay   Upsilon_2(1D)
 # T-> gamma T    Partial wave (L,S)=(0,2)
 0.20300         gamma  chi_b2       PHSP;
 #0.20300         gamma  chi_b2       HELAMP -1. 0. -1.2247449 0.
-#                                           -1.2247449 0. -1. 0. 
+#                                           -1.2247449 0. -1. 0.
 #                                            1. 0.  1.2247449 0.
 #                                            1.2247449 0.  1. 0.;
-# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP. 
+# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP.
 0.78500         gamma chi_b1      PHSP;
 #0.78500         gamma chi_b1      HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
 #                                         2.4494897 0. 1.7320508 0. 1. 0.;
 0.00990         g        g      g       PYTHIA 4;
 Enddecay
 
-##################### UPSILON_3(1D) #########################
 Decay   Upsilon_3(1D)
 #see Kwong and Rosner, PRD 38,279 (1988)
 0.00200         Upsilon  pi+     pi-    PHSP;
@@ -8553,14 +8496,8 @@ Decay   Upsilon_3(1D)
 0.04300         g        g       g      PYTHIA 4;
 Enddecay
 
-##################### UPSILON_1(2D) #########################
 Decay   Upsilon_1(2D)
 #see Kwong and Rosner, PRD 38,279 (1988)
-# added leptonic decays
-0.0001    e+    e-              PHOTOS  VLL;
-0.0001    mu+   mu-             PHOTOS  VLL;
-0.0001    tau+  tau-                    VLL;
-
 0.00000         Upsilon     pi+    pi-  PHSP;
 0.00000         Upsilon     pi0    pi0  PHSP;
 0.00000         Upsilon(2S) pi+    pi-  PHSP;
@@ -8570,12 +8507,10 @@ Decay   Upsilon_1(2D)
 # V-> gamma V    Partial wave (L,S)=(0,1)
 0.26000         gamma       chi_b1(2P)  HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
 # V-> gamma T    Partial wave (L,S)=(0,1)
-0.01400         gamma       chi_b2(2P)  HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                               1. 0. 1.7320508 0. 2.4494897 0.;
-0.21570         g       g       g       PYTHIA 4;
+0.01400         gamma       chi_b2(2P)  HELAMP 2.4494897 0. 1.7320508 0. 1. 0.                                               1. 0. 1.7320508 0. 2.4494897 0.;
+0.21600         g       g       g       PYTHIA 4;
 Enddecay
 
-##################### UPSILON_2(2D) #########################
 Decay   Upsilon_2(2D)
 #see Kwong and Rosner, PRD 38,279 (1988)
 0.00000         Upsilon     pi+    pi-  PHSP;
@@ -8585,17 +8520,16 @@ Decay   Upsilon_2(2D)
 # T-> gamma T    Partial wave (L,S)=(0,2)
 0.04000         gamma  chi_b2(2P)  PHSP;
 #0.04000         gamma  chi_b2(2P)   HELAMP -1. 0. -1.2247449 0.
-#                                           -1.2247449 0. -1. 0. 
+#                                           -1.2247449 0. -1. 0.
 #                                            1. 0.  1.2247449 0.
 #                                            1.2247449 0.  1. 0.;
-# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP. 
+# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP.
 0.13000         gamma chi_b1(2P)  PHSP;
 #0.13000         gamma chi_b1(2P)  HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
 #                                         2.4494897 0. 1.7320508 0. 1. 0.;
 0.83000         g       g       g       PYTHIA 4;
 Enddecay
 
-##################### UPSILON_3(2D) #########################
 Decay   Upsilon_3(2D)
 #see Kwong and Rosner, PRD 38,279 (1988)
 0.00000         Upsilon     pi+    pi-  PHSP;
@@ -8606,341 +8540,60 @@ Decay   Upsilon_3(2D)
 0.28000         g       g       g       PYTHIA 4;
 Enddecay
 
-##################### ETA_b2(1D) #########################
-# no information
-Decay  eta_b2(1D)
-1.000         rndmflav        anti-rndmflav   PYTHIA         12;
-Enddecay
-
-##################### ETA_b2(2D) #########################
-# No information
-Decay  eta_b2(2D)
-1.000         rndmflav        anti-rndmflav   PYTHIA         12;
+Decay   h_b(2P)
+1.00000         g       g               PYTHIA 32;
 Enddecay
-
-##################### UPSILON(1S) #########################
-Decay  Upsilon
-
-# slight adjustment of ll BF assuming lepton universality
-0.0249    e+    e-              PHOTOS  VLL;
-0.0249    mu+   mu-             PHOTOS  VLL;
-0.0249    tau+  tau-                    VLL;
-
-# eta_b gamma Godfrey/Rosner PRD64 074011 table 1 LNR99
-0.00036   gamma eta_b     PHSP;
-
-# original values; g g g adjust to give total BF = 1
-0.01500         d       anti-d  PYTHIA         32;
-0.04500         u       anti-u  PYTHIA         32;
-0.01500         s       anti-s  PYTHIA         32;
-0.04500         c       anti-c  PYTHIA         32;
-0.77594         g       g       g       PYTHIA         4;
-0.02900         gamma   g       g       PYTHIA         4;
+Decay   h_b(3P)
+1.00000         g       g               PYTHIA 32;
 Enddecay
-
-##################### UPSILON(2S) #########################
-Decay  Upsilon(2S)
-
-# assume lepton universality
-0.0194    e+    e-              PHOTOS  VLL;
-0.0194    mu+   mu-             PHOTOS  VLL;
-0.0194    tau+  tau-                    VLL;
-0.1870    Upsilon  pi+  pi-     YMSTOYNSPIPICLEO -0.753 0.000;
-0.0935    Upsilon  pi0  pi0     YMSTOYNSPIPICLEO -0.753 0.000;
-# Upsilon eta from Godfrey hep-ph/0701208
-0.0008    Upsilon  eta  PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-# eta_b gamma and eta_b(2S) PRD64 074011 table 1 & 3 LNR99
-0.000005   gamma eta_b     PHSP;
-0.000063   gamma eta_b(2S)     PHSP;
-# update to PDG2007
-# V-> gamma S    Partial wave (L,S)=(0,1)
-0.0380    gamma  chi_b0   HELAMP 1. 0. +1. 0.;
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.0690    gamma  chi_b1   HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-# V-> gamma T    Partial wave (L,S)=(0,1)
-0.0660    gamma  chi_b2   HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                 1. 0. 1.7320508 0. 2.4494897 0.;
-# original DECAY.DEC; adjust ggg
-0.00500         d       anti-d  PYTHIA         32;
-0.02000         u       anti-u  PYTHIA         32;
-0.00500         s       anti-s  PYTHIA         32;
-0.02000         c       anti-c  PYTHIA         32;
-0.4215         g       g       g       PYTHIA         4;
-0.01600         gamma  g       g       PYTHIA         4;
-Enddecay
-
-##################### UPSILON(3S) #########################
-Decay  Upsilon(3S)
-# remove Ups(2S)gamma gamma (double counted with rad decays to chi_b)
-
-# assume lepton universality
-0.022    e+    e-              PHOTOS  VLL;
-0.022    mu+   mu-             PHOTOS  VLL;
-0.022    tau+  tau-                    VLL;
-
-# rationalize experimental results; 
-# phase space factor = 1.36 to Upsilon(2S), 1.02 to 1S
-+0.0442    Upsilon  pi+  pi-                YMSTOYNSPIPICLEO -2.523 1.189;
-+0.0226    Upsilon  pi0  pi0                YMSTOYNSPIPICLEO -2.523 1.189;
-+0.0290    Upsilon(2S)  pi+  pi-            YMSTOYNSPIPICLEO -0.395 0.001;
-+0.0200    Upsilon(2S)  pi0  pi0            YMSTOYNSPIPICLEO -0.395 0.001;
-# Upsilon eta Eichten et al hep-ph/0701208
-0.00067    Upsilon  eta  PARTWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
-# decays to h_b Godfrey J.Phys.Conf.Ser.9:123-126,2005; pi pi is a guess
-0.001    h_b pi0        PHSP;
-0.001    h_b pi+ pi-        PHSP;
-0.0006    h_b pi0 pi0        PHSP;
-# eta_b gamma Godfrey/Rosner PRD64 074011 table 1&3 LNR99
-0.000005   gamma eta_b     PHSP;
-0.000040   gamma eta_b(2S)     PHSP;
-0.000050   gamma eta_b(3S)     PHSP;
-# adjust to PDG2007
-# V-> gamma S    Partial wave (L,S)=(0,1)
-0.0590    gamma  chi_b0(2P) HELAMP 1. 0. 1. 0.; 
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.1260    gamma  chi_b1(2P) HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-# V-> gamma T    Partial wave (L,S)=(0,1)
-0.1310    gamma  chi_b2(2P) HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                   1. 0. 1.7320508 0. 2.4494897 0.;
-
-# chi_b1 and chi_b2 scaled from chi_b0; B ~ (2J+1)E_gamma^3
-# V-> gamma S    Partial wave (L,S)=(0,1)
-0.0030    gamma  chi_b0 HELAMP 1. 0. 1. 0.; 
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.0073    gamma  chi_b1 HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-# V-> gamma T    Partial wave (L,S)=(0,1)
-0.0108    gamma  chi_b2 HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                   1. 0. 1.7320508 0. 2.4494897 0.;
-                                   
-# original DECAY.DEC; adjust g g g
-0.00700         d       anti-d  PYTHIA         32;
-0.02800         u       anti-u  PYTHIA         32;
-0.00700         s       anti-s  PYTHIA         32;
-0.02800         c       anti-c  PYTHIA         32;
-0.39274         g       g       g       PYTHIA         4;
-0.01500         gamma   g       g       PYTHIA         4;
-Enddecay
-
-
-##################### CHI_B0 #########################
-Decay chi_b0
-# No measurements; no changes to original DECAY.DEC
-# S-> gamma V    Partial wave (L,S)=(0,0)
-0.0500    gamma  Upsilon       HELAMP 1. 0. 1. 0.;
-0.9500    g g  PYTHIA         12;
-Enddecay
-#
-
-##################### CHI_B1 #########################
-Decay chi_b1
-# gamma Ups is measured. No changes
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.3500    gamma  Upsilon  HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-0.1625         d       anti-d  PYTHIA         32;
-0.1625         u       anti-u  PYTHIA         32;
-0.1625         s       anti-s  PYTHIA         32;
-0.1625         c       anti-c  PYTHIA         32;
-Enddecay
-#
-
-##################### CHI_B2 #########################
-Decay chi_b2
-# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP. 
-0.2200    gamma  Upsilon       PHSP;
-#0.2200    gamma  Upsilon       HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
-#                                      2.4494897 0. 1.7320508 0. 1. 0.;
-0.7800         g       g       PYTHIA         32;
-Enddecay
-
-##################### CHI_B0(2P) #########################
-Decay chi_b0(2P)
-
-# S-> gamma V    Partial wave (L,S)=(0,0)
-# experimental values
-0.0090    gamma  Upsilon             HELAMP 1. 0. 1. 0.;
-0.0460    gamma  Upsilon(2S)         HELAMP 1. 0. 1. 0.;
-
-# S-> gamma V    Partial wave (L,S)=(0,0)
-# Kwong & Rosner PRD 38 279
-0.00150   gamma  Upsilon_1(1D)       HELAMP 1. 0. 1. 0.;
-
-# pi pi chi_b0 estimated from Kuang & Yan PRD 24 2874
-0.0005    chi_b0  pi+  pi-                PHSP;
-0.00025    chi_b0  pi0  pi0                PHSP;
-
-# Voloshin Mod Phy Lett A 19, 2895
-0.0015    eta eta_b         PHSP;
-
-0.94125          g       g       PYTHIA         32;
-Enddecay
-
-##################### CHI_B1(2P) #########################
-Decay chi_b1(2P)
-
-# V-> gamma V    Partial wave (L,S)=(0,1)
-# experimental
-0.0850    gamma  Upsilon       HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-0.2100    gamma  Upsilon(2S)   HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-
-# V-> gamma V    Partial wave (L,S)=(0,1)
-# Kwong & Rosner PRD 38 279 for gamma Ups(1D)
-0.0097    gamma  Upsilon_1(1D) HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-
-# V-> gamma T    Partial wave (L,S)=(0,1)
-0.0236    gamma  Upsilon_2(1D)   HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                        1. 0. 1.7320508 0. 2.4494897 0.;
-
-# Hadronic decays omega and pi pi PDG2007. Note that pi pi is 
-# defined to be 1.5x pi+pi- & 3x pi0 pi0; see CLEO PRD 73 012003
-0.0163     Upsilon omega      PHSP;
-0.0057    chi_b1  pi+  pi-                PHSP;
-0.0029    chi_b1  pi0  pi0                PHSP;
-0.1617         d       anti-d  PYTHIA         32;
-0.1617         u       anti-u  PYTHIA         32;
-0.1617         s       anti-s  PYTHIA         32;
-0.1617         c       anti-c  PYTHIA         32;
-Enddecay
-
-##################### CHI_B2(2P) #########################
-Decay chi_b2(2P)
-
-# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP. 
-0.0710    gamma  Upsilon            PHSP;
-#0.0710    gamma  Upsilon            HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
-#                                           2.4494897 0. 1.7320508 0. 1. 0.; 
-0.1620    gamma  Upsilon(2S)        PHSP;
-#0.1620    gamma  Upsilon(2S)        HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
-#                                           2.4494897 0. 1.7320508 0. 1. 0.;
-# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP. 
-0.00023   gamma  Upsilon_1(1D)      PHSP;
-#0.00023   gamma  Upsilon_1(1D)      HELAMP 1. 0. 1.7320508 0. 2.4494897 0.
-#                                           2.4494897 0. 1.7320508 0. 1. 0.;
-# T -> gamma T   Partial wave (L,S)=(0,2)
-0.00290         gamma Upsilon_2(1D)  PHSP;
-#0.00290         gamma Upsilon_2(1D) HELAMP -1. 0. -1.2247449 0.
-#                                           -1.2247449 0. -1. 0. 
-#                                            1. 0.  1.2247449 0.
-#                                            1.2247449 0.  1. 0.;
-# spin 3 not yet in HELAMP.  
-0.01420   gamma  Upsilon_3(1D)              PYTHIA         0;
-# T-> gamma 3    Partial wave (L,S)=(0,2)
-#0.01420   gamma  Upsilon_3(1D)    HELAMP 3.8729833 0. 3.1622777 0. 
-#                                         2.4494897 0. 1.7320508. 0. 1. 0.
-#                                         1. 0. 1.7320508 0.  2.4494897 0.
-#                                         3.1622777 0. 3.8729833 0.;
-
-# Upsilon omega and pi pi chi_b2 PDG2007. Note that pi pi is 
-# defined to be 1.5x pi+pi- & 3x pi0 pi0; see CLEO PRD 73 012003.
-# pi pi chi_b1 estimated from Kuang & Yan PRD 24 2874
-0.011     Upsilon omega      PHSP;
-0.0040    chi_b2  pi+  pi-                PHSP;
-0.0020    chi_b2  pi0  pi0                PHSP;
-0.0002    chi_b1  pi+  pi-                PHSP;
-0.0001    chi_b1  pi0  pi0                PHSP;
-
-0.73237         g       g       PYTHIA         32;
-Enddecay
-
-##################### CHI_B0(3P) #########################
-Decay chi_b0(3P)
-# Kwong & Rosner PRD 38 279 calculate E1 partial widths 
-# but not total width.  Assume 10% greater than (2P).
-# No estimate for hadronic transitions; ignore
-
-# S-> gamma V    Partial wave (L,S)=(0,0)
-0.0036    gamma  Upsilon             HELAMP 1. 0. 1. 0.;
-0.0033    gamma  Upsilon(2S)         HELAMP 1. 0. 1. 0.;
-0.0076    gamma  Upsilon(3S)         HELAMP 1. 0. 1. 0.;
-
-# S-> gamma V    Partial wave (L,S)=(0,0)
-# decays to (1D) are negligible
-0.0019   gamma  Upsilon_1(2D)       HELAMP 1. 0. 1. 0.;
-
-0.9835          g       g       PYTHIA         32;
-Enddecay
-
-##################### CHI_B1(3P) #########################
-Decay chi_b1(3P)
-#see Kwong and Rosner, PRD 38,279 (1988)
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.15000         gamma Upsilon(3S)     HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-# V-> gamma T    Partial wave (L,S)=(0,1)
-0.03100         gamma Upsilon_2(2D)   HELAMP 2.4494897 0. 1.7320508 0. 1. 0.
-                                             1. 0. 1.7320508 0. 2.4494897 0.;
-# V-> gamma V    Partial wave (L,S)=(0,1)
-0.01300         gamma Upsilon_1(2D)   HELAMP 1. 0. 1. 0. -1. 0. -1. 0.;
-
-0.20150        d       anti-d  PYTHIA         32;
-0.20150        u       anti-u  PYTHIA         32;
-0.20150        s       anti-s  PYTHIA         32;
-0.20150        c       anti-c  PYTHIA         32;
+Decay   eta_b2(1D)
+1.00000         g       g               PYTHIA 32;
 Enddecay
-
-##################### CHI_B2(3P) #########################
-Decay chi_b2(3P)
-# Kwong & Rosner PRD 38 279 calculate E1 partial widths 
-# but not total width.  Assume 10% greater than (2P).
-# No estimate for hadronic transitions; ignore
-
-# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP. 
-0.019    gamma  Upsilon            PHSP;
-0.019    gamma  Upsilon(2S)        PHSP;
-0.060    gamma  Upsilon(3S)        PHSP;
-
-# decays to (1D) are negligible
-# T-> gamma V    Partial wave (L,S)=(0,2)   Use PHSP. 
-0.00025   gamma  Upsilon_1(2D)      PHSP;
-
-# T -> gamma T   Partial wave (L,S)=(0,2)
-0.0030         gamma Upsilon_2(2D)  PHSP;
-
-# spin 3 not yet in HELAMP.  
-0.015   gamma  Upsilon_3(1D)              PYTHIA         0;
-
-0.88375         g       g       PYTHIA         32;
+Decay   eta_b2(2D)
+1.00000         g       g               PYTHIA 32;
 Enddecay
 #
 #   Charm Baryons
 #
 Decay Lambda_c+
-0.01800         e+      nu_e    Lambda0         PYTHIA         42;
+0.021000000 e+      nu_e    Lambda0                         PYTHIA         42; #[Reconstructed PDG2011]
 0.00500         e+      nu_e    Sigma0  PYTHIA         42;
 0.00500         e+      nu_e    Sigma*0         PYTHIA         42;
 0.00300         e+      nu_e    n0      PYTHIA         42;
 0.00200         e+      nu_e    Delta0  PYTHIA         42;
 0.00600         e+      nu_e    p+      pi-     PYTHIA         42;
 0.00600         e+      nu_e    n0      pi0     PYTHIA         42;
-0.01800         mu+     nu_mu   Lambda0         PYTHIA         42;
+0.020000000 mu+     nu_mu   Lambda0                         PYTHIA         42; #[Reconstructed PDG2011]
 0.00500         mu+     nu_mu   Sigma0  PYTHIA         42;
 0.00500         mu+     nu_mu   Sigma*0         PYTHIA         42;
 0.00300         mu+     nu_mu   n0      PYTHIA         42;
 0.00200         mu+     nu_mu   Delta0  PYTHIA         42;
 0.00600         mu+     nu_mu   p+      pi-     PYTHIA         42;
 0.00600         mu+     nu_mu   n0      pi0     PYTHIA         42;
-0.00660         Delta++         K-      PYTHIA         0;
+0.008600000 Delta++ K-                                      PYTHIA         0; #[Reconstructed PDG2011]
 0.02500         Delta++         K*-     PYTHIA         0;
-0.02300         p+      anti-K0         PYTHIA         0;
-0.04000         p+      anti-K*0        PYTHIA         0;
+0.023000000 p+      anti-K0                                 PYTHIA         0; #[Reconstructed PDG2011]
+0.016000000 p+      anti-K*0                                PYTHIA         0; #[Reconstructed PDG2011]
 0.00500         Delta+          anti-K0         PYTHIA         0;
 0.00500         Delta+  anti-K*0        PYTHIA         0;
-0.00580         Lambda0         pi+     PYTHIA         0;
+0.010700000 Lambda0 pi+                                     PYTHIA         0; #[Reconstructed PDG2011]
 0.00500         Lambda0         rho+    PYTHIA         0;
-0.00550         Sigma0  pi+     PYTHIA         0;
+0.010500000 Sigma0  pi+                                     PYTHIA         0; #[Reconstructed PDG2011]
 0.00400         Sigma0          rho+    PYTHIA         0;
 0.00400         Sigma*0         pi+     PYTHIA         0;
 0.00400         Sigma*0         rho+    PYTHIA         0;
-0.00400         Sigma+          pi0     PYTHIA         0;
-0.00200         Sigma+          eta     PYTHIA         0;
+0.010000000 Sigma+  pi0                                     PYTHIA         0; #[Reconstructed PDG2011]
+0.005500000 Sigma+  eta                                     PYTHIA         0; #[Reconstructed PDG2011]
 0.00200         Sigma+  eta'    PYTHIA         0;
 0.00400         Sigma+          rho0    PYTHIA         0;
-0.00400         Sigma+          omega   PYTHIA         0;
+0.027000000 Sigma+  omega                                   PYTHIA         0; #[Reconstructed PDG2011]
 0.00300         Sigma*+         pi0     PYTHIA         0;
-0.00200         Sigma*+         eta     PYTHIA         0;
+0.008500000 Sigma*+ eta                                     PYTHIA         0; #[Reconstructed PDG2011]
 0.00300         Sigma*+         rho0    PYTHIA         0;
 0.00300         Sigma*+         omega   PYTHIA         0;
-0.00200         Xi0     K+      PYTHIA         0;
+0.003900000 Xi0     K+                                      PYTHIA         0; #[Reconstructed PDG2011]
 0.00200         Xi0     K*+     PYTHIA         0;
-0.00200         Xi*0    K+      PYTHIA         0;
+0.002600000 Xi*0    K+                                      PYTHIA         0; #[Reconstructed PDG2011]
 0.00100         Delta++         pi-     PYTHIA         0;
 0.00100         Delta++         rho-    PYTHIA         0;
 0.00200         p+      pi0     PYTHIA         0;
@@ -8948,8 +8601,8 @@ Decay Lambda_c+
 0.00100         p+      eta'    PYTHIA         0;
 0.00200         p+      rho0    PYTHIA         0;
 0.00200         p+      omega   PYTHIA         0;
-0.00130         p+      phi     PYTHIA         0;
-0.00180         p+      f_0     PYTHIA         0;
+0.000820000 p+      phi                                     PYTHIA         0; #[Reconstructed PDG2011]
+0.002800000 p+      f_0                                     PYTHIA         0; #[Reconstructed PDG2011]
 0.00100         Delta+          pi0     PYTHIA         0;
 0.00100         Delta+          eta     PYTHIA         0;
 0.00100         Delta+  eta'    PYTHIA         0;
@@ -8966,19 +8619,45 @@ Decay Lambda_c+
 0.00100         Sigma*0         K+      PYTHIA         0;
 0.00100         Sigma*0         K*+     PYTHIA         0;
 0.00200         Sigma+          K0      PYTHIA         0;
-0.00200         Sigma+          K*0     PYTHIA         0;
+0.002800000 Sigma+  K*0                                     PYTHIA         0; #[Reconstructed PDG2011]
 0.00100         Sigma*+         K0      PYTHIA         0;
 0.00100         Sigma*+         K*0     PYTHIA         0;
-0.13000         u       anti-d          d       su_0    PYTHIA         13;
-0.05700         u       anti-d          d       su_1    PYTHIA         13;
-0.03500         u       anti-s          d       su_0    PYTHIA         13;
-0.03500         u       anti-d          d       ud_0    PYTHIA         13;
-0.09500         s       uu_1    PYTHIA         13;
-0.14000         u       su_0    PYTHIA         13;
-0.14000         u       su_1    PYTHIA         13;
-0.03000         d       uu_1    PYTHIA         13;
-0.01500         u       ud_0    PYTHIA         13;
-0.01500         u       ud_1    PYTHIA         13;
+0.064094509 u       anti-d  d       su_0                    PYTHIA         13; #[Reconstructed PDG2011]
+0.028102977 u       anti-d  d       su_1                    PYTHIA         13; #[Reconstructed PDG2011]
+0.017256214 u       anti-s  d       su_0                    PYTHIA         13; #[Reconstructed PDG2011]
+0.017256214 u       anti-d  d       ud_0                    PYTHIA         13; #[Reconstructed PDG2011]
+0.046838295 s       uu_1                                    PYTHIA         13; #[Reconstructed PDG2011]
+0.069024855 u       su_0                                    PYTHIA         13; #[Reconstructed PDG2011]
+0.069024855 u       su_1                                    PYTHIA         13; #[Reconstructed PDG2011]
+0.014791040 d       uu_1                                    PYTHIA         13; #[Reconstructed PDG2011]
+0.007395520 u       ud_0                                    PYTHIA         13; #[Reconstructed PDG2011]
+0.007395520 u       ud_1                                    PYTHIA         13; #[Reconstructed PDG2011]
+0.025400000 p+      K-      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.033000000 p+      anti-K0 pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.012000000 p+      anti-K0 eta                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.026000000 p+      anti-K0 pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.023000000 p+      K-      pi+     pi0                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.011000000 p+      K*-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001100000 p+      K-      pi+     pi+     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.008000000 p+      K-      pi+     pi0     pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000700000 p+      pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 p+      pi+     pi+     pi-     pi-             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 p+      K+      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.036000000 Lambda0 pi+     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.015000000 Lambda0 pi+     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.011000000 Lambda0 pi+     rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 Lambda0 pi+     pi+     pi-     pi0             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.009500000 Lambda0 pi+     eta                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.012000000 Lambda0 pi+     omega                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004700000 Lambda0 K+      anti-K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.036000000 Sigma+  pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.017000000 Sigma-  pi+     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.018000000 Sigma0  pi+     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.008300000 Sigma0  pi+     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 Sigma+  K+      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.003100000 Sigma+  phi                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.002500000 Xi-     K+      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000000000 Sigma+  K+      pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 CDecay anti-Lambda_c-
 #
@@ -9012,13 +8691,42 @@ Decay anti-Sigma_c-
 Enddecay
 #
 Decay Xi_c+
-0.98         PYTHIA         84;
-0.02         Xi- pi+ pi+ PHSP;
+0.079535513                                                 PYTHIA         84; #[Reconstructed PDG2011]
+0.079535513 Sigma*+ anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.025689971 Lambda0 K-      pi+     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.010339617 Sigma+  K-      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.064423765 Sigma+  anti-K*0                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.023065299 Sigma0  K-      pi+     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.043744532 Xi0     pi+                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.079535513 Xi-     pi+     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.186113099 Xi0     pi+     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.138391792 Xi0     pi-     pi+     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.182931679 Xi0     e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.005567486 Omega-  K+      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.007158196 p+      K-      pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.009544262 p+      anti-K*0                                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.038177046 Sigma+  pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.014316392 Sigma-  pi+     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.011930327 Sigma+  K+      K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
-
 Decay anti-Xi_c-
-0.98         PYTHIA         84;
-0.02         anti-Xi+ pi- pi- PHSP;
+0.079535513                                                 PYTHIA         84; #[Reconstructed PDG2011]
+0.079535513 anti-Sigma*- K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.025689971 anti-Lambda0 K+      pi-     pi-                PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.010339617 anti-Sigma- K+      pi-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.064423765 anti-Sigma- K*0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.023065299 anti-Sigma0 K+      pi-     pi-                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.043744532 anti-Xi0 pi-                                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.079535513 anti-Xi+ pi-     pi-                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.186113099 anti-Xi0 pi-     pi0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.138391792 anti-Xi0 pi+     pi-     pi-                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.182931679 anti-Xi0 e-      anti-nu_e                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.005567486 anti-Omega+ K-      pi-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.007158196 anti-p- K+      pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.009544262 anti-p- K*0                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.038177046 anti-Sigma- pi-     pi+                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.014316392 anti-Sigma+ pi-     pi-                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.011930327 anti-Sigma- K-      K+                          PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Sigma_c++
@@ -9029,10 +8737,14 @@ Decay anti-Sigma_c--
 Enddecay
 #
 Decay Xi'_c+
-1.0    gamma  Xi_c+                    PHSP;
+0.1000    Lambda0   K-    pi+   pi+         PHSP;
+0.0800    Sigma0  K-    pi+   pi+         PHSP;
+0.8200    gamma  Xi_c+                    PHSP;
 Enddecay
 Decay anti-Xi'_c-
-1.0    gamma   anti-Xi_c-                  PHSP;
+0.1000    anti-Lambda0  K+    pi-   pi-        PHSP;
+0.0800    anti-Sigma0  K+    pi-   pi-        PHSP;
+0.8200    gamma   anti-Xi_c-                  PHSP;
 Enddecay
 #
 Decay Xi'_c0
@@ -9043,34 +8755,32 @@ Decay anti-Xi'_c0
 Enddecay
 #
 #   Light Baryons
-#
+#   Lambda0 updated Feb 2009
 Decay Lambda0
-0.6390    p+  pi-                       PHSP;
-0.3580    n0  pi0                       PHSP;
-0.0018    n0  gamma                      PHSP;
-0.0005    p+  pi-  gamma                 PHSP;
-0.0006    p+  e-   anti-nu_e           PHOTOS PHSP;
-0.0001    p+  mu-  anti-nu_mu          PHOTOS PHSP;
+0.638719992 p+      pi-                                     PHSP; #[Reconstructed PDG2011]
+0.357719992 n0      pi0                                     PHSP; #[Reconstructed PDG2011]
+0.001741600 n0      gamma                                   PHSP; #[Reconstructed PDG2011]
+0.000832160 p+      pi-     gamma                           PHSP; #[Reconstructed PDG2011]
+0.000831216 p+      e-      anti-nu_e                       PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.000155040 p+      mu-     anti-nu_mu                      PHOTOS   PHSP; #[Reconstructed PDG2011]
 Enddecay
+#
 Decay anti-Lambda0
-0.6390    anti-p-  pi+                      PHSP;
-0.3580    anti-n0  pi0                      PHSP;
-0.0018    anti-n0  gamma                     PHSP;
-0.0005    anti-p-  pi+  gamma                PHSP;
-0.0006    anti-p-  e+   nu_e       PHOTOS   PHSP;
-0.0001    anti-p-  mu+  nu_mu      PHOTOS    PHSP;
+0.638719992 anti-p- pi+                                     PHSP; #[Reconstructed PDG2011]
+0.357719992 anti-n0 pi0                                     PHSP; #[Reconstructed PDG2011]
+0.001741600 anti-n0 gamma                                   PHSP; #[Reconstructed PDG2011]
+0.000832160 anti-p- pi+     gamma                           PHSP; #[Reconstructed PDG2011]
+0.000831216 anti-p- e+      nu_e                            PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.000155040 anti-p- mu+     nu_mu                           PHOTOS    PHSP; #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Lambda(1405)0
-
-0.3333    Sigma-   pi+    PHSP;
 0.3333    Sigma+   pi-    PHSP;
+0.3333    Sigma-   pi+    PHSP;
 0.3333    Sigma0   pi0    PHSP;
 Enddecay
 #
 Decay anti-Lambda(1405)0
-
-
 0.3333    anti-Sigma+   pi-   PHSP;
 0.3333    anti-Sigma-   pi+   PHSP;
 0.3333    anti-Sigma0   pi0   PHSP;
@@ -9079,9 +8789,8 @@ Enddecay
 Decay Lambda(1520)0
 0.23   p+     K-    PHSP;
 0.23   n0   anti-K0    PHSP;
-
-0.14    Sigma-   pi+    PHSP;
 0.14    Sigma+   pi-    PHSP;
+0.14    Sigma-   pi+    PHSP;
 0.14   Sigma0   pi0    PHSP;
 0.0333  Lambda0  pi0  pi0                       PHSP;
 0.0667  Lambda0  pi+  pi-                       PHSP;
@@ -9095,15 +8804,13 @@ Enddecay
 Decay anti-Lambda(1520)0
 0.23 anti-p-     K+    PHSP;
 0.23 anti-n0     K0    PHSP;
-
-0.14    anti-Sigma+   pi-   PHSP;
 0.14    anti-Sigma-   pi+   PHSP;
+0.14    anti-Sigma+   pi-   PHSP;
 0.14    anti-Sigma0   pi0   PHSP;
 0.0333  anti-Lambda0  pi0  pi0                  PHSP;
-0.0667  anti-Lambda0  pi+  pi-                       PHSP;
-
-0.003   anti-Sigma-   pi+  pi0   PHSP;
+0.0667  anti-Lambda0  pi+  pi-                  PHSP;
 0.003   anti-Sigma+   pi-  pi0   PHSP;
+0.003   anti-Sigma-   pi+  pi0   PHSP;
 0.001   anti-Sigma0   pi0  pi0   PHSP;
 0.002   anti-Sigma0   pi+  pi-   PHSP;
 0.011   anti-Lambda0  gamma   PHSP;
@@ -9112,9 +8819,8 @@ Enddecay
 Decay Lambda(1600)0
 0.176   p+     K-    PHSP;
 0.176   n0   anti-K0    PHSP;
-
-0.216    Sigma-   pi+    PHSP;
 0.216    Sigma+   pi-    PHSP;
+0.216    Sigma-   pi+    PHSP;
 0.216    Sigma0   pi0    PHSP;
 Enddecay
 #
@@ -9129,9 +8835,8 @@ Enddecay
 Decay Lambda(1670)0
 0.10   p+     K-    PHSP;
 0.10   n0   anti-K0    PHSP;
-
-0.16    Sigma-   pi+    PHSP;
 0.16    Sigma+   pi-    PHSP;
+0.16    Sigma-   pi+    PHSP;
 0.16    Sigma0   pi0    PHSP;
 0.32    Lambda0  eta                            PHSP;
 Enddecay
@@ -9162,15 +8867,13 @@ Enddecay
 Decay anti-Lambda(1690)0
 0.125   anti-p-     K+    PHSP;
 0.125   anti-n0   K0    PHSP;
-0.10    anti-Sigma-   pi+    PHSP;
 0.10    anti-Sigma+   pi-    PHSP;
-
+0.10    anti-Sigma-   pi+    PHSP;
 0.10    anti-Sigma0   pi0    PHSP;
 0.0833  anti-Lambda0  pi0  pi0                       PHSP;
 0.1667  anti-Lambda0  pi+  pi-                       PHSP;
-
-0.067   anti-Sigma-   pi+  pi0   PHSP;
 0.067   anti-Sigma+   pi-  pi0   PHSP;
+0.067   anti-Sigma-   pi+  pi0   PHSP;
 0.022   anti-Sigma0   pi0  pi0   PHSP;
 0.044   anti-Sigma0   pi+  pi-   PHSP;
 Enddecay
@@ -9178,13 +8881,11 @@ Enddecay
 Decay Lambda(1800)0
 0.165   p+     K-    PHSP;
 0.165   n0   anti-K0    PHSP;
-
-0.08    Sigma-   pi+    PHSP;
 0.08    Sigma+   pi-    PHSP;
+0.08    Sigma-   pi+    PHSP;
 0.08    Sigma0   pi0    PHSP;
-
-0.003    Sigma*-   pi+    PHSP;
 0.003    Sigma*+   pi-    PHSP;
+0.003    Sigma*-   pi+    PHSP;
 0.004    Sigma*0   pi0    PHSP;
 0.21   p+     K*-    PHSP;
 0.21   n0   anti-K*0    PHSP;
@@ -9206,13 +8907,11 @@ Enddecay
 Decay Lambda(1810)0
 0.165   p+     K-    PHSP;
 0.165   n0   anti-K0    PHSP;
-0.08    Sigma-   pi+    PHSP;
 0.08    Sigma+   pi-    PHSP;
-
+0.08    Sigma-   pi+    PHSP;
 0.08    Sigma0   pi0    PHSP;
-0.003    Sigma*-   pi+    PHSP;
 0.003    Sigma*+   pi-    PHSP;
-
+0.003    Sigma*-   pi+    PHSP;
 0.004    Sigma*0   pi0    PHSP;
 0.21   p+     K*-    PHSP;
 0.21   n0   anti-K*0    PHSP;
@@ -9234,13 +8933,11 @@ Enddecay
 Decay Lambda(1820)0
 0.34     p+     K-                             PHSP;
 0.34     n0   anti-K0                          PHSP;
-
-0.06    Sigma-   pi+                            PHSP;
 0.06    Sigma+   pi-                            PHSP;
+0.06    Sigma-   pi+                            PHSP;
 0.06    Sigma0   pi0                            PHSP;
-0.04    Sigma*-   pi+                            PHSP;
 0.04    Sigma*+   pi-                            PHSP;
-
+0.04    Sigma*-   pi+                            PHSP;
 0.04    Sigma*0   pi0                            PHSP;
 0.01    Lambda0  eta                            PHSP;
 0.003   Sigma+   pi-  pi0                       PHSP;
@@ -9259,9 +8956,8 @@ Decay anti-Lambda(1820)0
 0.04    anti-Sigma*-   pi+                            PHSP;
 0.04    anti-Sigma*0   pi0                            PHSP;
 0.01    anti-Lambda0  eta                            PHSP;
-0.003  anti-Sigma-   pi+  pi0                       PHSP;
-0.004  anti-Sigma+   pi-  pi0                       PHSP;
-
+0.003  anti-Sigma+   pi-  pi0                       PHSP;
+0.004  anti-Sigma-   pi+  pi0                       PHSP;
 0.001  anti-Sigma0   pi0  pi0                       PHSP;
 0.002  anti-Sigma0   pi+  pi-                       PHSP;
 Enddecay
@@ -9269,13 +8965,11 @@ Enddecay
 Decay Lambda(1830)0
 0.05     p+     K-                             PHSP;
 0.05     n0   anti-K0                          PHSP;
-
-0.24    Sigma-   pi+                            PHSP;
 0.24    Sigma+   pi-                            PHSP;
+0.24    Sigma-   pi+                            PHSP;
 0.24    Sigma0   pi0                            PHSP;
-
-0.06    Sigma*-   pi+                            PHSP;
 0.06    Sigma*+   pi-                            PHSP;
+0.06    Sigma*-   pi+                            PHSP;
 0.06    Sigma*0   pi0                            PHSP;
 Enddecay
 #
@@ -9295,9 +8989,8 @@ Decay Sigma(1660)0
 0.07     p+     K-                             PHSP;
 0.07     n0   anti-K0                          PHSP;
 0.16   Lambda0 pi0                             PHSP;
-
-0.35    Sigma-   pi+         PHSP;
 0.35    Sigma+   pi-                            PHSP;
+0.35    Sigma-   pi+         PHSP;
 Enddecay
 #
 Decay anti-Sigma(1660)0
@@ -9312,9 +9005,8 @@ Decay Sigma(1670)0
 0.07     p+     K-                             PHSP;
 0.07     n0   anti-K0                          PHSP;
 0.16   Lambda0 pi0                             PHSP;
-
-0.35    Sigma-   pi+         PHSP;
 0.35    Sigma+   pi-                            PHSP;
+0.35    Sigma-   pi+         PHSP;
 Enddecay
 #
 Decay anti-Sigma(1670)0
@@ -9329,12 +9021,10 @@ Decay Sigma(1775)0
 0.215     p+     K-                             PHSP;
 0.215     n0   anti-K0                          PHSP;
 0.20   Lambda0 pi0                             PHSP;
-
-0.02  Sigma-   pi+         PHSP;
 0.02  Sigma+   pi-                            PHSP;
-
-0.055  Sigma*-   pi+         PHSP;
+0.02  Sigma-   pi+         PHSP;
 0.055  Sigma*+   pi-                            PHSP;
+0.055  Sigma*-   pi+         PHSP;
 0.22   Lambda(1520)0 pi0                             PHSP;
 Enddecay
 #
@@ -9349,14 +9039,18 @@ Decay anti-Sigma(1775)0
 0.22   anti-Lambda(1520)0 pi0                             PHSP;
 Enddecay
 Decay Sigma+
-0.5157    p+  pi0                       PHSP;
-0.4831    n0  pi+                       PHSP;
-0.0012    p+  gamma                      PHSP;
+0.515454300 p+      pi0                                     PHSP; #[Reconstructed PDG2011]
+0.482854300 n0      pi+                                     PHSP; #[Reconstructed PDG2011]
+0.001225905 p+      gamma                                   PHSP; #[Reconstructed PDG2011]
+0.000445905 n0      pi+     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019590 Lambda0 e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Sigma-
-0.5157    anti-p-  pi0                      PHSP;
-0.4831    anti-n0  pi-                      PHSP;
-0.0012    anti-p-  gamma                     PHSP;
+0.515454300 anti-p- pi0                                     PHSP; #[Reconstructed PDG2011]
+0.482854300 anti-n0 pi-                                     PHSP; #[Reconstructed PDG2011]
+0.001225905 anti-p- gamma                                   PHSP; #[Reconstructed PDG2011]
+0.000445905 anti-n0 pi-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019590 anti-Lambda0 e-      anti-nu_e                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Delta+
@@ -9405,17 +9099,27 @@ Decay anti-Delta+
 Enddecay
 #
 Decay Sigma-
-1.0000    n0    pi-                     PHSP;
+0.998015700 n0      pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000460000 n0      pi-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001017000 n0      e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000450000 n0      mu-     anti-nu_mu                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000057300 Lambda0 e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Sigma+
-1.0000    anti-n0   pi+                     PHSP;
+0.998015700 anti-n0 pi+                                     PHSP; #[Reconstructed PDG2011]
+0.000460000 anti-n0 pi+     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001017000 anti-n0 e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000450000 anti-n0 mu+     nu_mu                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000057300 anti-Lambda0 e+      nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Sigma0
-1.0000    gamma  Lambda0                     PHSP;
+0.995024876 gamma   Lambda0                                 PHSP; #[Reconstructed PDG2011]
+0.004975124 Lambda0 e+      e-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Sigma0
-1.0000    gamma  anti-Lambda0                   PHSP;
+0.995024876 gamma   anti-Lambda0                            PHSP; #[Reconstructed PDG2011]
+0.004975124 anti-Lambda0 e-      e+                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Sigma*-
@@ -9452,17 +9156,35 @@ Decay anti-Sigma*0
 Enddecay
 #
 Decay Xi0
-1.0000    Lambda0   pi0                     PHSP;
+0.995242400 Lambda0 pi0                                     PHSP; #[Reconstructed PDG2011]
+0.001162400 Lambda0 gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007600 Lambda0 e+      e-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.003330000 Sigma0  gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000253000 Sigma+  e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004600 Sigma+  mu-     anti-nu_mu                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Xi0
-1.0000    anti-Lambda0 pi0                     PHSP;
+0.995242400 anti-Lambda0 pi0                                PHSP; #[Reconstructed PDG2011]
+0.001162400 anti-Lambda0 gamma                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000007600 anti-Lambda0 e-      e+                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.003330000 anti-Sigma0 gamma                               PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000253000 anti-Sigma- e+      nu_e                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000004600 anti-Sigma- mu+     nu_mu                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Xi-
-1.0000    Lambda0   pi-                     PHSP;
+0.998870000 Lambda0 pi-                                     PHSP; #[Reconstructed PDG2011]
+0.000127000 Sigma-  gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000563000 Lambda0 e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 Lambda0 mu-     anti-nu_mu                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000087000 Sigma0  e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Xi+
-1.0000    anti-Lambda0 pi+                     PHSP;
+0.998870000 anti-Lambda0 pi+                                PHSP; #[Reconstructed PDG2011]
+0.000127000 anti-Sigma+ gamma                               PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000563000 anti-Lambda0 e+      nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 anti-Lambda0 mu+     nu_mu                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000087000 anti-Sigma0 e+      nu_e                        PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Xi*-
@@ -9475,14 +9197,20 @@ Decay anti-Xi*+
 Enddecay
 #
 Decay Omega-
-0.6780    Lambda0   K-                      PHSP;
-0.2360    Xi0   pi-                     PHSP;
-0.0860    Xi-   pi0                     PHSP;
+0.675949296 Lambda0 K-                                      PHSP; #[Reconstructed PDG2011]
+0.233949296 Xi0     pi-                                     PHSP; #[Reconstructed PDG2011]
+0.084828169 Xi-     pi0                                     PHSP; #[Reconstructed PDG2011]
+0.000000000 Xi-     pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000493521 Xi*0    pi-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004779718 Xi0     e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Omega+
-0.6780    anti-Lambda0  K+                     PHSP;
-0.2360    anti-Xi0   pi+                    PHSP;
-0.0860    anti-Xi+   pi0                    PHSP;
+0.675949296 anti-Lambda0 K+                                 PHSP; #[Reconstructed PDG2011]
+0.233949296 anti-Xi0 pi+                                    PHSP; #[Reconstructed PDG2011]
+0.084828169 anti-Xi+ pi0                                    PHSP; #[Reconstructed PDG2011]
+0.000000000 anti-Xi+ pi-     pi+                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000493521 anti-Xi*0 pi+                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.004779718 anti-Xi0 e+      nu_e                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 #
@@ -9502,14 +9230,14 @@ Enddecay
 CDecay anti-Sigma_c*--
 #
 Decay Xi_c*0
-0.33    Xi_c0  pi0                     PHSP;
-0.67    Xi_c+  pi-                   PHSP;
+0.5000    Xi_c0  pi0                     PHSP;
+0.5000    Xi_c0  gamma                   PHSP;
 Enddecay
 CDecay anti-Xi_c*0
 #
 Decay Xi_c*+
-0.33    Xi_c+  pi0                     PHSP;
-0.67    Xi_c0  pi+                   PHSP;
+0.5000    Xi_c+  pi0                     PHSP;
+0.5000    Xi_c+  gamma                   PHSP;
 Enddecay
 CDecay anti-Xi_c*-
 #
@@ -9540,40 +9268,17 @@ CDecay Xu-
 #lange - PYTHIA is making h_c mesons - better add a decay
 # channel for them.
 Decay h_c
-# PRD37, 1210 (1988)------------------------------------------------------
-# Gamma(h_c->J/psi+pi0)/Gamma(psi'->J/psi+pi0)=9.3.
-# And assuming Gamma(h_c)_total = 1MeV.
-0.00335 J/psi pi0                        PHSP;
-#
-# ccbar modes to suppress added on 06042008
-0.0000   rho0  rho0   PHSP;
-0.0000   rho0  omega  PHSP;
-0.0000   rho0  phi    PHSP;
-0.0000   rho0  gamma  PHSP;
-0.0000   omega omega  PHSP;
-0.0000   omega phi    PHSP;
-0.0000   omega gamma  PHSP;
-0.0000   phi   phi    PHSP;
-0.0000   phi   gamma  PHSP;
-0.0000   gamma gamma  PHSP;
-0.0000   pi0   pi0    PHSP;
-0.0000   pi0   eta    PHSP;
-0.0000   pi0   eta'   PHSP;
-0.0000   eta   eta    PHSP;
-0.0000   eta   eta'   PHSP;
-0.0000   eta'  eta'   PHSP;
-#
-#hep-ph/0205255 ----------------------------------------------------------
-0.377   eta_c gamma                      HELAMP 1. 0. 1. 0. ; 
-0.61965 rndmflav       anti-rndmflav     PYTHIA         12;
+0.01 J/psi pi0 PHSP;
+0.5   eta_c gamma      PHSP;
+0.49  rndmflav        anti-rndmflav   PYTHIA         12;
 Enddecay
 
 # 12/08/03 RJT  Update b-baryon decays...
 Decay Lambda_b0
 #                  SemiLeptonic Decays (inclusive BR = 7.7 +/- 1.8%)
-  0.05460    Lambda_c+        e-  anti-nu_e               PHSP;
-  0.01280    Lambda_c(2593)+  e-  anti-nu_e               PHSP;
-  0.00960    Lambda_c(2625)+  e-  anti-nu_e               PHSP;
+0.050000000 Lambda_c+ e-      anti-nu_e                     PHSP; #[Reconstructed PDG2011]
+0.006300000 Lambda_c(2593)+ e-      anti-nu_e               PHSP; #[Reconstructed PDG2011]
+0.011000000 Lambda_c(2625)+ e-      anti-nu_e               PHSP; #[Reconstructed PDG2011]
   0.00000    Sigma_c0    pi+  e-  anti-nu_e               PHSP;
   0.00000    Sigma_c+    pi0  e-  anti-nu_e               PHSP;
   0.00000    Sigma_c++   pi-  e-  anti-nu_e               PHSP;
@@ -9581,9 +9286,9 @@ Decay Lambda_b0
   0.00000    Sigma_c*+   pi0  e-  anti-nu_e               PHSP;
   0.00000    Sigma_c*++  pi-  e-  anti-nu_e               PHSP;
 #
-  0.05460    Lambda_c+        mu-  anti-nu_mu             PHSP;
-  0.01280    Lambda_c(2593)+  mu-  anti-nu_mu             PHSP;
-  0.00960    Lambda_c(2625)+  mu-  anti-nu_mu             PHSP;
+0.050000000 Lambda_c+ mu-     anti-nu_mu                    PHSP; #[Reconstructed PDG2011]
+0.006300000 Lambda_c(2593)+ mu-     anti-nu_mu              PHSP; #[Reconstructed PDG2011]
+0.011000000 Lambda_c(2625)+ mu-     anti-nu_mu              PHSP; #[Reconstructed PDG2011]
   0.00000    Sigma_c0    pi+  mu-  anti-nu_mu             PHSP;
   0.00000    Sigma_c+    pi0  mu-  anti-nu_mu             PHSP;
   0.00000    Sigma_c++   pi-  mu-  anti-nu_mu             PHSP;
@@ -9601,13 +9306,26 @@ Decay Lambda_b0
   0.00000    Sigma_c*+   pi0  tau- anti-nu_tau            PHSP;
   0.00000    Sigma_c*++  pi-  tau- anti-nu_tau            PHSP;
 #                  Hadronic Decays with Lambda_c+
-  0.00600    Lambda_c+       pi-                          PHSP;
+0.008800000 Lambda_c+ pi-                                   PHSP; #[Reconstructed PDG2011]
   0.02200    Lambda_c+       pi-     pi+       pi-        PHSP;
   0.00055    Lambda_c+       K-                           PHSP;
   0.02200    Lambda_c+       D_s-                         PHSP;
+  0.04400    Lambda_c+       D_s*-                        PHSP;
+  0.01000    Lambda_c+       rho-                     PHSP;
+  0.02000    Lambda_c+       a_1-                     PHSP;
+  0.02000    Lambda0       K0  pi+ pi+ pi- pi-          PHSP;
+# Addition PR LHCb 09 Apr 2004, Lambda_b -> Lambda D0b
+  0.00080    Lambda0         anti-D0                      PHSP;
+# Addition PR LHCb 04/07/04
+0.000006000 p+      K-                                      PHSP; #[Reconstructed PDG2011]
+0.000003800 p+      pi-                                     PHSP; #[Reconstructed PDG2011]
+# Addition PR LHCb 09 Apr 2004, Lambda_b -> Lambda rho0 and -> Lambda phi
+  0.0000050  Lambda0    rho0                         PHSP;
+  0.0000200  Lambda0    phi                          PHSP;
 #
   0.00047    Lambda0         J/psi                        PHSP;
   0.00038    Lambda0         psi(2S)                      PHSP;
+  0.00100    Lambda0         eta_c                        PHSP;
   0.00080    n0              D0                           PHSP;
 #
 #  Additional decays from hep-ph/9709372 scaled to the Lambda_c0 pi rate
@@ -9617,36 +9335,26 @@ Decay Lambda_b0
   0.00050    Sigma_c0       eta'                          PHSP;
   0.00030    Xi_c0          K0                            PHSP;
   0.00050    Xi'_c0         K0                            PHSP;
-#  aaa 10/19/05 Do not if this is correct but filling out with inclusives
-0.12584         d       anti-u          d       cu_0    PYTHIA         13;
-0.05518         d       anti-u          d       cu_1    PYTHIA         13;
-0.02057         s       anti-u          d       cu_0    PYTHIA         13;
-0.01532         d       anti-u          s       cu_0    PYTHIA         13;
-0.01092         d       anti-u          s       cu_1    PYTHIA         13;
-0.01996         s       anti-c          d       cu_0    PYTHIA         13;
-0.01042         s       anti-u          d       cc_1    PYTHIA         13;
-0.00639         d       anti-u          s       cc_1    PYTHIA         13;
-0.00838         d       anti-u          d       uu_1    PYTHIA         13;
-0.00500         s       anti-c          d       uu_1    PYTHIA         13;
-0.09196         c       dd_1    PYTHIA         13;
-0.13552         d       cd_0    PYTHIA         13;
-0.13552         d       cd_1    PYTHIA         13;
-0.02104         s       cd_1    PYTHIA         13;
-0.02104         s       cd_0    PYTHIA         13;
-0.02104         d       cs_1    PYTHIA         13;
-0.01839         s       ud_1    PYTHIA         13;
-0.01839         d       su_0    PYTHIA         13;
-0.01839         s       ud_1    PYTHIA         13;
-0.00357         u       dd_1    PYTHIA         13;
-0.00168         d       ud_0    PYTHIA         13;
-0.00168         d       ud_1    PYTHIA         13;
+# PR LHCb 27 Apr 2004, addition of Pythia decays
+0.398544837 anti-u  d       c       ud_0                    PYTHIA 48; #[Reconstructed PDG2011]
+0.082218903 anti-u  c       d       ud_0                    PYTHIA 13; #[Reconstructed PDG2011]
+0.072280354 anti-c  s       c       ud_0                    PYTHIA 13; #[Reconstructed PDG2011]
+0.010842053 anti-u  d       u       ud_0                    PYTHIA 42; #[Reconstructed PDG2011]
+0.010842053 anti-c  s       u       ud_0                    PYTHIA 42; #[Reconstructed PDG2011]
+# PR LHCb 2 Dec 2004, add Lambda gamma decay mode
+  0.000065   Lambda0   gamma  HELAMP 1. 0. 0. 0. ;
+  0.000059   Lambda(1520)0 gamma   PHSP ;
+  0.000056   Lambda(1670)0 gamma   HELAMP 1. 0. 0. 0. ;
+  0.000057   Lambda(1600)0 gamma   HELAMP 1. 0. 0. 0. ;
+0.056000000 Lambda_c+ pi+     pi-     mu-     anti-nu_mu    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.056000000 Lambda_c+ pi+     pi-     e-      anti-nu_e     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 
 Decay anti-Lambda_b0
 #                  SemiLeptonic Decays (inclusive BR = 7.7 +/- 1.8%)
-  0.05460    anti-Lambda_c-        e+  nu_e               PHSP;
-  0.01280    anti-Lambda_c(2593)-  e+  nu_e               PHSP;
-  0.00960    anti-Lambda_c(2625)-  e+  nu_e               PHSP;
+0.050000000 anti-Lambda_c- e+      nu_e                     PHSP; #[Reconstructed PDG2011]
+0.006300000 anti-Lambda_c(2593)- e+      nu_e               PHSP; #[Reconstructed PDG2011]
+0.011000000 anti-Lambda_c(2625)- e+      nu_e               PHSP; #[Reconstructed PDG2011]
   0.00000    anti-Sigma_c0    pi-  e+  nu_e               PHSP;
   0.00000    anti-Sigma_c-    pi0  e+  nu_e               PHSP;
   0.00000    anti-Sigma_c--   pi+  e+  nu_e               PHSP;
@@ -9654,9 +9362,9 @@ Decay anti-Lambda_b0
   0.00000    anti-Sigma_c*-   pi0  e+  nu_e               PHSP;
   0.00000    anti-Sigma_c*--  pi+  e+  nu_e               PHSP;
 #
-  0.05460    anti-Lambda_c-        mu+  nu_mu             PHSP;
-  0.01280    anti-Lambda_c(2593)-  mu+  nu_mu             PHSP;
-  0.00960    anti-Lambda_c(2625)-  mu+  nu_mu             PHSP;
+0.050000000 anti-Lambda_c- mu+     nu_mu                    PHSP; #[Reconstructed PDG2011]
+0.006300000 anti-Lambda_c(2593)- mu+     nu_mu              PHSP; #[Reconstructed PDG2011]
+0.011000000 anti-Lambda_c(2625)- mu+     nu_mu              PHSP; #[Reconstructed PDG2011]
   0.00000    anti-Sigma_c0    pi-  mu+  nu_mu             PHSP;
   0.00000    anti-Sigma_c-    pi0  mu+  nu_mu             PHSP;
   0.00000    anti-Sigma_c--   pi+  mu+  nu_mu             PHSP;
@@ -9674,13 +9382,26 @@ Decay anti-Lambda_b0
   0.00000    anti-Sigma_c*-   pi0  tau+ nu_tau            PHSP;
   0.00000    anti-Sigma_c*--  pi+  tau+ nu_tau            PHSP;
 #                  Hadronic Decays with anti-Lambda_c-
-  0.00600    anti-Lambda_c-  pi+                          PHSP;
+0.008800000 anti-Lambda_c- pi+                              PHSP; #[Reconstructed PDG2011]
   0.02200    anti-Lambda_c-  pi+     pi+       pi-        PHSP;
   0.00055    anti-Lambda_c-  K+                           PHSP;
   0.02200    anti-Lambda_c-  D_s+                         PHSP;
+  0.04400    anti-Lambda_c-  D_s*+                        PHSP;
+  0.01000    anti-Lambda_c-  rho+         PHSP;
+  0.02000    anti-Lambda_c-  a_1+         PHSP;
+  0.02000    Lambda0  anti-K0  pi-  pi-  pi+  pi+         PHSP;
+  #  Addition LHCb PR 09 Apr 2004 Lambda_b -> Lambda D0b
+  0.00080    anti-Lambda0    D0                           PHSP;
+  #  PR LHCb 04/07/04 Addition
+0.000006000 anti-p- K+                                      PHSP; #[Reconstructed PDG2011]
+0.000003800 anti-p- pi+                                     PHSP; #[Reconstructed PDG2011]
+# Addition PR LHCb 09 Apr 2004, Lambda_b -> Lambda rho0 and -> Lambda phi
+  0.0000050  anti-Lambda0    rho0                         PHSP;
+  0.0000200  anti-Lambda0    phi                          PHSP;
 #
   0.00047    anti-Lambda0    J/psi                        PHSP;
   0.00038    anti-Lambda0    psi(2S)                      PHSP;
+  0.001000   anti-Lambda0    eta_c       PHSP;
   0.00080    anti-n0    anti-D0                           PHSP;
 #
 #  Additional decays from hep-ph/9709372 scaled to the Lambda_c0 pi rate
@@ -9690,28 +9411,19 @@ Decay anti-Lambda_b0
   0.00050    anti-Sigma_c0   eta'                          PHSP;
   0.00030    anti-Xi_c0      anti-K0                       PHSP;
   0.00050    anti-Xi'_c0     anti-K0                       PHSP;
-0.12584         u       anti-d          anti-d       anti-cu_0    PYTHIA         13;
-0.05518         u       anti-d          anti-d       anti-cu_1    PYTHIA         13;
-0.02057         u       anti-s          anti-d       anti-cu_0    PYTHIA         13;
-0.01532         u       anti-d          anti-s       anti-cu_0    PYTHIA         13;#2007 changed to fit Lambda_b decy
-0.01092         u       anti-d          anti-s       anti-cu_1    PYTHIA         13;
-0.01996         c       anti-s          anti-d       anti-cu_0    PYTHIA         13;
-0.01042         u       anti-s          anti-d       anti-cc_1    PYTHIA         13;
-0.00639         u       anti-d          anti-s       anti-cc_1    PYTHIA         13;
-0.00838         u       anti-d          anti-d       anti-uu_1    PYTHIA         13;
-0.00500         c       anti-s          anti-d       anti-uu_1    PYTHIA         13;
-0.09196         anti-c       anti-dd_1    PYTHIA         13;
-0.13552         anti-d       anti-cd_0    PYTHIA         13;
-0.13552         anti-d       anti-cd_1    PYTHIA         13;
-0.02104         anti-s       anti-cd_1    PYTHIA         13;
-0.02104         anti-s       anti-cd_0    PYTHIA         13;
-0.02104         anti-d       anti-cs_1    PYTHIA         13;
-0.01839         anti-s       anti-ud_1    PYTHIA         13;
-0.01839         anti-d       anti-su_0    PYTHIA         13;
-0.01839         anti-s       anti-ud_1    PYTHIA         13;
-0.00357         anti-u       anti-dd_1    PYTHIA         13;
-0.00168         anti-d       anti-ud_0    PYTHIA         13;
-0.00168         anti-d       anti-ud_1    PYTHIA         13;
+# PR LHCb 27 Apr 2004, addition of Pythia decays
+0.398544837 u       anti-d  anti-c  anti-ud_0               PYTHIA 48; #[Reconstructed PDG2011]
+0.082218903 u       anti-c  anti-d  anti-ud_0               PYTHIA 13; #[Reconstructed PDG2011]
+0.072280354 c       anti-s  anti-c  anti-ud_0               PYTHIA 13; #[Reconstructed PDG2011]
+0.010842053 u       anti-d  anti-u  anti-ud_0               PYTHIA 42; #[Reconstructed PDG2011]
+0.010842053 c       anti-s  anti-u  anti-ud_0               PYTHIA 42; #[Reconstructed PDG2011]
+# PR LHCb 2 Dec 2004 add Lambda gamma
+  0.000065   anti-Lambda0   gamma  HELAMP 0. 0. 1. 0. ;
+  0.000059   anti-Lambda(1520)0 gamma   PHSP ;
+  0.000056   anti-Lambda(1670)0 gamma   HELAMP 0. 0. 1. 0. ;
+  0.000057   anti-Lambda(1600)0 gamma   HELAMP 0. 0. 1. 0. ;
+0.056000000 anti-Lambda_c- pi-     pi+     mu+     nu_mu    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.056000000 anti-Lambda_c- pi-     pi+     e+      nu_e     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 
 Decay Xi_b-
@@ -9903,70 +9615,6 @@ Decay anti-Sigma_b0
   1.00000    anti-Lambda_b0   gamma               PHOTOS  PHSP;
 Enddecay
 
-Decay Sigma_b*0
-1.00000    Lambda_b0   pi0                      PHSP;
-Enddecay
-
-Decay anti-Sigma_b*0
-1.00000    anti-Lambda_b0   pi0                 PHSP;
-Enddecay
-
-Decay Sigma_b*+
-1.00000    Lambda_b0   pi+                              PHSP;
-Enddecay
-
-Decay anti-Sigma_b*-
-1.00000    anti-Lambda_b0   pi-                         PHSP;
-Enddecay
-
-Decay Sigma_b*-
-1.00000    Lambda_b0   pi-                              PHSP;
-Enddecay
-
-Decay anti-Sigma_b*+
-1.00000    anti-Lambda_b0   pi+                         PHSP;
-Enddecay
-
-Decay Xi_b*-
-1.00000    Xi_b-   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay anti-Xi_b*+
-1.00000    anti-Xi_b+   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay Xi_b*0
-1.00000    Xi_b0   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay anti-Xi_b*0
-1.00000    anti-Xi_b0   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay Xi'_b0
-1.00000    Xi_b0   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay anti-Xi'_b0
-1.00000    anti-Xi_b0   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay Xi'_b-
-1.00000    Xi_b-   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay anti-Xi'_b+
-1.00000    anti-Xi_b+   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay anti-Omega_b*+
-1.00000    anti-Omega_b+   gamma                    PHOTOS  PHSP;
-Enddecay
-
-Decay Omega_b*-
-1.00000    Omega_b-   gamma                    PHOTOS  PHSP;
-Enddecay
-
 
 #
 #   B_c Mesons
@@ -10067,10 +9715,14 @@ Decay B_c-
 0.00090    B*-        rho0                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
 0.01600    B*-        K0                    SVS;
 0.01670    B*-        K*0                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+# PR LHCb 09 Apr 2004 Add B_c+ -> rho0 pi+
+  0.00002    rho0       pi-                   SVS;
+  0.06005    anti-c     s          PYTHIA 11;
+# PR LHCb 27 Apr 2004 Add Pythia Modes
 #
 #  ash 10/27/03 Do not if this is correct but filling out with unknown cs
-0.0200230  cs_0       anti-uu_1         PYTHIA 23;
-0.0400470  cs_1       anti-uu_1         PYTHIA 23;
+#0.0200235  cs_0       anti-uu_0         PYTHIA 23;
+#0.0400470  cs_1       anti-uu_1         PYTHIA 23;
 #
 Enddecay
 
@@ -10166,74 +9818,431 @@ Decay B_c+
 0.00037    B+         pi0                   PHSP;
 0.00034    rho0       B+                    SVS;
 0.01980    B+         anti-K0               PHSP;
-0.00430    anti-K*0        B+                    SVS;
+0.00430    K*0        B+                    SVS;
 0.00033    B*+        pi0                   SVS;
 0.00090    B*+        rho0                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
 0.01600    B*+        anti-K0               SVS;
-0.01670    B*+        anti-K*0                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+0.01670    B*+        K*0                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+# PR LHCb 09 Apr 2004 Add B_c+ -> rho0 pi+
+  0.00002    rho0       pi+                   SVS;
+  0.06005    c          anti-s       PYTHIA 11;
+# PR LHCb 27 Apr 2004 Add Pythia Modes
 #
 #  ash 10/27/03 Do not if this is correct but filling out with unknown cs
-0.020023     anti-cs_0       uu_1         PYTHIA 23;
-0.0400470     anti-cs_1       uu_1         PYTHIA 23;
+#0.0200235     anti-cs_0       uu_0         PYTHIA 23;
+#0.0400470     anti-cs_1       uu_1         PYTHIA 23;
 #
 Enddecay
 
 
-#  Add excited Lambda_c decays (R.J. Tesarek  12/09/03)
-#  Just a guess for the last three BR [Lambda_c(2593)+].
+#  Add excited Lambda_c decays (R.J. Tesarek  12/9/03)
+#  Just a guess for the last two BR [Lambda_c(2593)+].
 Decay Lambda_c(2593)+
-  0.24000      Sigma_c++         pi-                      PHSP;  
-  0.24000      Sigma_c0          pi+                      PHSP;
-  0.18000      Lambda_c+         pi+    pi-               PHSP;
-  0.24000      Sigma_c+          pi0                      PHSP;
-  0.09000      Lambda_c+         pi0    pi0               PHSP;
-  0.01000      Lambda_c+         gamma                    PHSP;
+0.096585366 Sigma_c++ pi-                                   PHSP; #[Reconstructed PDG2011]
+0.096585366 Sigma_c0 pi+                                    PHSP; #[Reconstructed PDG2011]
+0.190000000 Lambda_c+ pi+     pi-                           PHSP; #[Reconstructed PDG2011]
+0.096585366 Sigma_c+ pi0                                    PHSP; #[Reconstructed PDG2011]
+0.036219512 Lambda_c+ pi0     pi0                           PHSP; #[Reconstructed PDG2011]
+0.004024390 Lambda_c+ gamma                                 PHSP; #[Reconstructed PDG2011]
+0.240000000 Sigma_c*++ pi-                                  PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.240000000 Sigma_c*0 pi+                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Lambda_c(2593)-
-  0.24000      anti-Sigma_c--    pi+                      PHSP;  
-  0.24000      anti-Sigma_c0     pi-                      PHSP;
-  0.18000      anti-Lambda_c-    pi-    pi+               PHSP;
-  0.24000      anti-Sigma_c-    pi0                       PHSP;
-  0.09000      anti-Lambda_c-    pi0   pi0                PHSP;
-  0.01000      anti-Lambda_c-    gamma                    PHSP;
+0.096585366 anti-Sigma_c-- pi+                              PHSP; #[Reconstructed PDG2011]
+0.096585366 anti-Sigma_c0 pi-                               PHSP; #[Reconstructed PDG2011]
+0.190000000 anti-Lambda_c- pi-     pi+                      PHSP; #[Reconstructed PDG2011]
+0.096585366 anti-Sigma_c- pi0                               PHSP; #[Reconstructed PDG2011]
+0.036219512 anti-Lambda_c- pi0     pi0                      PHSP; #[Reconstructed PDG2011]
+0.004024390 anti-Lambda_c- gamma                            PHSP; #[Reconstructed PDG2011]
+0.240000000 anti-Sigma_c*-- pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.240000000 anti-Sigma_c*0 pi-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 #
 Decay Lambda_c(2625)+
-  0.66000      Lambda_c+         pi+    pi-               PHSP;
-  0.33000      Lambda_c+         pi0    pi0               PHSP;
-  0.01000      Lambda_c+         gamma                    PHSP;
+0.670000000 Lambda_c+ pi+     pi-                           PHSP; #[Reconstructed PDG2011]
+0.320294118 Lambda_c+ pi0                                   PHSP; #[Reconstructed PDG2011]
+0.009705882 Lambda_c+ gamma                                 PHSP; #[Reconstructed PDG2011]
 Enddecay
 Decay anti-Lambda_c(2625)-
-  0.66000      anti-Lambda_c-    pi-    pi+               PHSP;
-  0.33000      anti-Lambda_c-    pi0    pi0               PHSP;
-  0.01000      anti-Lambda_c-    gamma                    PHSP;
+0.670000000 anti-Lambda_c- pi-     pi+                      PHSP; #[Reconstructed PDG2011]
+0.320294118 anti-Lambda_c- pi0                              PHSP; #[Reconstructed PDG2011]
+0.009705882 anti-Lambda_c- gamma                            PHSP; #[Reconstructed PDG2011]
 Enddecay
 
-Decay gammaFSR
-1.0000 gamma                                         PHSP;
+#  Add excited B hadrons (LHCb PR 10/03/04)
+#  Reference : Pythia 6.205 decay table
+#  PDG Id = 5312
+Decay Xi'_b-
+  1.0000     Xi_b-    gamma       PHSP;
 Enddecay
-
-CopyDecay phi_A phi
-CopyDecay f_0_A f_0
-CopyDecay f'_0_A f'_0
-CopyDecay f_2_A f_2
-
-RemoveDecay phi_A
-K+ K-;
+Decay anti-Xi'_b+
+  1.0000     anti-Xi_b+  gamma    PHSP;
 Enddecay
-RemoveDecay f_0_A
-K+ K-;
+#  PDG Id = 5322
+Decay Xi'_b0
+  1.0000     Xi_b0    gamma       PHSP;
+Enddecay
+Decay anti-Xi'_b0
+  1.0000     anti-Xi_b0  gamma    PHSP;
 Enddecay
-RemoveDecay f'_0_A
-K+ K-;
+#  PDG Id = 10521
+Decay B_0*+
+  0.6670     B0     pi+           PHSP;
+  0.3330     B+     pi0           PHSP;
 Enddecay
-RemoveDecay f_2_A
-K+ K-;
+Decay B_0*-
+  0.6670     anti-B0  pi-         PHSP;
+  0.3330     B-       pi0         PHSP;
+Enddecay
+#  PDG Id = 20523 Broad : S wave
+Decay B'_1+
+  0.6670     B*0      pi+         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.3330     B*+      pi0         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+Decay B'_1-
+  0.6670     anti-B*0   pi-       VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.3330     B*-        pi0       VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+#  PDG Id = 10523  Narrow : D wave
+Decay B_1+
+  0.6670     B*0      pi+         VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.3330     B*+      pi0         VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+Decay B_1-
+  0.6670     anti-B*0   pi-       VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.3330     B*-        pi0       VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+#  PDG Id = 525 Narrow : D wave
+Decay B_2*+
+  0.3000     B0     pi+           TSS;
+  0.1500     B+     pi0           TSS;
+  0.1600     B*0    pi+           TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.0800     B*+    pi0           TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.1300     B*0    pi+    pi0    PHSP;
+  0.0600     B*+    pi+    pi-    PHSP;
+  0.0800     B0     pi+    pi0    PHSP;
+  0.0400     B+     pi+    pi-    PHSP;
+Enddecay
+Decay B_2*-
+  0.3000     anti-B0  pi-         TSS;
+  0.1500     B-       pi0         TSS;
+  0.1600     anti-B*0  pi-        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.0800     B*-      pi0         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.1300     anti-B*0  pi-   pi0  PHSP;
+  0.0600     B*-      pi-    pi+  PHSP;
+  0.0800     anti-B0  pi-    pi0  PHSP;
+  0.0400     B-       pi-    pi+  PHSP;
+Enddecay
+#  PDG Id = 10511
+Decay B_0*0
+  0.6670     B+     pi-           PHSP;
+  0.3330     B0     pi0           PHSP;
+Enddecay
+Decay anti-B_0*0
+  0.6670     B-     pi+           PHSP;
+  0.3330     anti-B0   pi0        PHSP;
+Enddecay
+#  PDG Id = 20513 Broad : S wave
+Decay B'_10
+  0.6670     B*+    pi-           VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.3330     B*0    pi0           VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+Decay anti-B'_10
+  0.6670     B*-    pi+           VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.3330     anti-B*0   pi0       VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+#  PDG Id = 10513 Narrow : D wave
+Decay B_10
+  0.6670     B*+    pi-           VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.3330     B*0    pi0           VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+Decay anti-B_10
+  0.6670     B*-    pi+           VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.3330     anti-B*0   pi0       VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+#  PDG Id = 515
+Decay B_2*0
+  0.3000     B+    pi-            TSS;
+  0.1500     B0    pi0            TSS;
+  0.1600     B*+   pi-            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.0800     B*0   pi0            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.1300     B*+   pi-   pi0      PHSP;
+  0.0600     B*0   pi+   pi-      PHSP;
+  0.0800     B+    pi-   pi0      PHSP;
+  0.0400     B0    pi+   pi-      PHSP;
+Enddecay
+Decay anti-B_2*0
+  0.3000     B-    pi+            TSS;
+  0.1500     anti-B0  pi0         TSS;
+  0.1600     B*-   pi+            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.0800     anti-B*0  pi0        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.1300     B*-   pi+  pi0       PHSP;
+  0.0600     anti-B*0  pi-  pi+   PHSP;
+  0.0800     B-    pi+   pi0      PHSP;
+  0.0400     anti-B0   pi-   pi+  PHSP;
+Enddecay
+#  PDG Id = 10531
+Decay B_s0*0
+  0.5000     B+   K-              PHSP;
+  0.5000     B0   anti-K0         PHSP;
+Enddecay
+Decay anti-B_s0*0
+  0.5000     B-   K+              PHSP;
+  0.5000     anti-B0   K0         PHSP;
+Enddecay
+#  PDG Id = 20533   Broad : S wave
+Decay B'_s10
+  0.5000     B*+  K-              VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.5000     B*0  anti-K0         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+Decay anti-B'_s10
+  0.5000     B*-  K+              VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.5000     anti-B*0   K0        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+#  PDG Id = 10533   Narrow : D wave
+Decay B_s10
+  0.5000     B*+  K-              VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.5000     B*0  anti-K0         VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+Decay anti-B_s10
+  0.5000     B*-  K+              VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.5000     anti-B*0    K0       VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+#  PDG Id = 535   Narrow : D wave
+Decay B_s2*0
+  0.3000     B+   K-              TSS;
+  0.3000     B0   anti-K0         TSS;
+  0.2000     B*+  K-              TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.2000     B*0  anti-K0         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+Enddecay
+Decay anti-B_s2*0
+  0.3000     B-   K+              TSS;
+  0.3000     anti-B0  K0          TSS;
+  0.2000     B*-  K+              TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.2000     anti-B*0 K0          TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+Enddecay
+#  PDG Id = 543
+Decay B_c*+
+  1.0000     B_c+  gamma          VSP_PWAVE;
+Enddecay
+Decay B_c*-
+  1.0000     B_c-  gamma          VSP_PWAVE;
+Enddecay
+#  PDG Id = 545  Narrow : D wave
+Decay B_c2*+
+  0.3000     B0    D+             TSS;
+  0.3000     B+    D0             TSS;
+  0.2000     B*0   D+             TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.2000     B*+   D0             TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+Enddecay
+Decay B_c2*-
+  0.3000     anti-B0  D-          TSS;
+  0.3000     B-    anti-D0        TSS;
+  0.2000     anti-B*0  D-         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+  0.2000     B*-   anti-D0        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0;
+Enddecay
+#  PDG Id = 5114
+Decay Sigma_b*-
+  1.0000     Lambda_b0  pi-       PHSP;
+Enddecay
+Decay anti-Sigma_b*+
+  1.0000     anti-Lambda_b0  pi+  PHSP;
+Enddecay
+# PDG Id = 5224
+Decay Sigma_b*+
+  1.0000     Lambda_b0  pi+       PHSP;
+Enddecay
+Decay anti-Sigma_b*-
+  1.0000     anti-Lambda_b0  pi-  PHSP;
+Enddecay
+# PDG Id = 5214
+Decay Sigma_b*0
+  1.0000     Lambda_b0  pi0       PHSP;
+Enddecay
+Decay anti-Sigma_b*0
+  1.0000     anti-Lambda_b0  pi0  PHSP;
+Enddecay
+#  PDG Id = 5314
+Decay Xi_b*-
+  1.0000     Xi_b-    gamma       PHSP;
+Enddecay
+Decay anti-Xi_b*+
+  1.0000     anti-Xi_b+  gamma    PHSP;
+Enddecay
+#  PDG Id = 5324
+Decay Xi_b*0
+  1.0000     Xi_b0   gamma        PHSP;
+Enddecay
+Decay anti-Xi_b*0
+  1.0000     anti-Xi_b0 gamma     PHSP;
+Enddecay
+#  PDG Id = 5334
+Decay Omega_b*-
+  1.0000     Omega_b-   gamma     PHSP;
+Enddecay
+Decay anti-Omega_b*+
+  1.0000     anti-Omega_b+  gamma PHSP;
+Enddecay
+#  PDG Id = 10541
+Decay B_c0*+
+  0.5000     B0   D+              PHSP;
+  0.5000     B+   D0              PHSP;
+Enddecay
+Decay B_c0*-
+  0.5000     anti-B0  D-          PHSP;
+  0.5000     B-       anti-D0     PHSP;
+Enddecay
+#  PDG Id = 10543  Narrow : D wave
+Decay B_c1+
+  0.5000     B*0      D+          VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.5000     B*+      D0          VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+Decay B_c1-
+  0.5000     anti-B*0  D-         VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+  0.5000     B*-       anti-D0    VVS_PWAVE 0.0 0.0 0.0 0.0 1.0 0.0;
+Enddecay
+#  PDG Id = 20543 Broad : S wave
+Decay B'_c1+
+  0.5000     B*0       D+         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.5000     B*+       D0         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+Decay B'_c1-
+  0.5000     anti-B*0  D-         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+  0.5000     B*-       anti-D0    VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0;
+Enddecay
+
+# Excited charmed Baryons   LHCb PR 3-05-2006
+Decay Xi_cc*++
+  0.08 e+  nu_e     Xi_c+   PHSP ;
+  0.08 mu+ nu_mu    Xi_c+   PHSP ;
+  0.51  u   anti-d  s  cu_0  PYTHIA 11 ;
+  0.25  u   anti-d  s  cu_1  PYTHIA 11 ;
+  0.05 u   anti-s  s  cu_0 PYTHIA 11 ;
+  0.03 u   anti-s  s  cu_1 PYTHIA 11 ;
+Enddecay
+
+Decay anti-Xi_cc*--
+  0.08 e-  anti-nu_e  anti-Xi_c-   PHSP;
+  0.08 mu- anti-nu_mu anti-Xi_c-   PHSP;
+  0.51 anti-u  d   anti-s  anti-cu_0  PYTHIA 11 ;
+  0.25 anti-u  d   anti-s  anti-cu_0  PYTHIA 11 ;
+  0.05 anti-u  s   anti-s  anti-cu_1  PYTHIA 11 ;
+  0.03 anti-u  s   anti-s  anti-cu_1  PYTHIA 11 ;
+Enddecay
+
+Decay Xi_cc++
+  0.08 e+  nu_e     Xi_c+   PHSP ;
+  0.08 mu+ nu_mu    Xi_c+   PHSP ;
+  0.51  u   anti-d  s  cu_0  PYTHIA 11 ;
+  0.25  u   anti-d  s  cu_1  PYTHIA 11 ;
+  0.05 u   anti-s  s  cu_0 PYTHIA 11 ;
+  0.03 u   anti-s  s  cu_1 PYTHIA 11 ;
+Enddecay
+
+Decay anti-Xi_cc--
+  0.08 e-  anti-nu_e  anti-Xi_c-   PHSP;
+  0.08 mu- anti-nu_mu anti-Xi_c-   PHSP;
+  0.51 anti-u  d   anti-s  anti-cu_0  PYTHIA 11 ;
+  0.25 anti-u  d   anti-s  anti-cu_0  PYTHIA 11 ;
+  0.05 anti-u  s   anti-s  anti-cu_1  PYTHIA 11 ;
+  0.03 anti-u  s   anti-s  anti-cu_1  PYTHIA 11 ;
+Enddecay
+
+Decay Xi_cc*+
+  0.08 e+  nu_e    Xi_c0    PHSP;
+  0.08 mu+ nu_mu   Xi_c0    PHSP;
+  0.51 u anti-d  s   cd_0   PYTHIA 11 ;
+  0.25 u anti-d  s   cd_1   PYTHIA 11 ;
+  0.05 u anti-s  s   cd_0   PYTHIA 11 ;
+  0.03 u anti-s  s   cd_1   PYTHIA 11 ;
+Enddecay
+
+Decay anti-Xi_cc*-
+  0.08 e-  anti-nu_e    anti-Xi_c0    PHSP;
+  0.08 mu- anti-nu_mu   anti-Xi_c0    PHSP;
+  0.51 anti-u d  anti-s  anti-cd_0   PYTHIA 11 ;
+  0.25 anti-u d  anti-s  anti-cd_1   PYTHIA 11 ;
+  0.05 anti-u s  anti-s  anti-cd_0   PYTHIA 11 ;
+  0.03 anti-u s  anti-s  anti-cd_1   PYTHIA 11 ;
+Enddecay
+
+Decay Xi_cc+
+  0.08 e+  nu_e    Xi_c0    PHSP;
+  0.08 mu+ nu_mu   Xi_c0    PHSP;
+  0.51 u anti-d  s   cd_0   PYTHIA 11 ;
+  0.25 u anti-d  s   cd_1   PYTHIA 11 ;
+  0.05 u anti-s  s   cd_0   PYTHIA 11 ;
+  0.03 u anti-s  s   cd_1   PYTHIA 11 ;
+Enddecay
+
+Decay anti-Xi_cc-
+  0.08 e-  anti-nu_e    anti-Xi_c0    PHSP;
+  0.08 mu- anti-nu_mu   anti-Xi_c0    PHSP;
+  0.51 anti-u d  anti-s  anti-cd_0   PYTHIA 11 ;
+  0.25 anti-u d  anti-s  anti-cd_1   PYTHIA 11 ;
+  0.05 anti-u s  anti-s  anti-cd_0   PYTHIA 11 ;
+  0.03 anti-u s  anti-s  anti-cd_1   PYTHIA 11 ;
+Enddecay
+
+Decay Omega_cc+
+  0.08 e+  nu_e   Omega_c0   PHSP;
+  0.08 mu+ nu_mu  Omega_c0   PHSP;
+  0.51 u   anti-d   s     cs_0    PYTHIA 11;
+  0.25 u   anti-d   s     cs_1    PYTHIA 11;
+  0.05 u   anti-s   s     cs_0    PYTHIA 11;
+  0.03 u   anti-s   s     cs_1    PYTHIA 11;
+Enddecay
+
+Decay anti-Omega_cc-
+  0.08 e-  anti-nu_e   anti-Omega_c0   PHSP;
+  0.08 mu- anti-nu_mu  anti-Omega_c0   PHSP;
+  0.51 anti-u   d   anti-s     anti-cs_0    PYTHIA 11;
+  0.25 anti-u   d   anti-s     anti-cs_1    PYTHIA 11;
+  0.05 anti-u   s   anti-s     anti-cs_0    PYTHIA 11;
+  0.03 anti-u   s   anti-s     anti-cs_1    PYTHIA 11;
+Enddecay
+
+Decay Omega_cc*+
+  0.08 e+  nu_e   Omega_c0   PHSP;
+  0.08 mu+ nu_mu  Omega_c0   PHSP;
+  0.51 u   anti-d   s     cs_0    PYTHIA 11;
+  0.25 u   anti-d   s     cs_1    PYTHIA 11;
+  0.05 u   anti-s   s     cs_0    PYTHIA 11;
+  0.03 u   anti-s   s     cs_1    PYTHIA 11;
+Enddecay
+
+Decay anti-Omega_cc*-
+  0.08 e-  anti-nu_e   anti-Omega_c0   PHSP;
+  0.08 mu- anti-nu_mu  anti-Omega_c0   PHSP;
+  0.51 anti-u   d   anti-s     anti-cs_0    PYTHIA 11;
+  0.25 anti-u   d   anti-s     anti-cs_1    PYTHIA 11;
+  0.05 anti-u   s   anti-s     anti-cs_0    PYTHIA 11;
+  0.03 anti-u   s   anti-s     anti-cs_1    PYTHIA 11;
+Enddecay
+
+Decay K_L0
+#0.202464226 pi+     e-      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.202464226 pi-     e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.135033299 pi+     mu-     nu_mu                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.135033299 pi-     mu+     nu_mu                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000025738 pi0     pi+     e-      nu_e                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000025738 pi0     pi-     e+      nu_e                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000006205 pi+     e-      nu_e    e+      e-              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000006205 pi-     e+      nu_e    e+      e-              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.194795855 pi0     pi0     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.125231606 pi+     pi-     pi0                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.001880711 pi+     e-      nu_e    gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.001880711 pi-     e+      nu_e    gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000277023 pi+     mu-     nu_mu   gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000277023 pi-     mu+     nu_mu   gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000040995 pi+     pi-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000001262 pi0     gamma   gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000000016 pi0     gamma   e+      e-                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000545653 gamma   gamma                                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000009265 e+      e-      gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000000355 mu+     mu-     gamma                           PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000000584 e+      e-      gamma   gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
+#0.000000007 mu+     mu-     gamma   gamma                   PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
-
 
 End
-
-
-
-
diff --git a/TEvtGen/EvtGen/DecayTable/BANDCTOELE.DEC b/TEvtGen/EvtGen/DecayTable/BANDCTOELE.DEC
new file mode 100644 (file)
index 0000000..13421c4
--- /dev/null
@@ -0,0 +1,325 @@
+####
+Decay D+
+0.055300000 anti-K*0 e+      nu_e                           PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.088300000 anti-K0 e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002773020 anti-K_10 e+      nu_e                          PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002927076 anti-K_2*0 e+      nu_e                         PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.004050000 pi0     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001330000 eta     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002200000 rho0    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001600000 omega   e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.041000000 K-      pi+     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 anti-K0 pi0     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+####
+Enddecay
+
+Decay D-
+0.055300000 K*0     e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.088300000 K0      e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.002773020 K_10    e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.002927076 K_2*0   e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.004050000 pi0     e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.001330000 eta     e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.002200000 rho0    e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.001600000 omega   e-      anti-nu_e                       PHOTOS    ISGW2; #[Reconstructed PDG2011]
+0.041000000 K+      pi-     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 K0      pi0     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+#####
+Enddecay
+
+Decay D0
+# updated according to suggestions by P. Roudeau,
+# using PDG2004 measurements and imposing the equality
+# of sl partial widths for D+ and D0.
+# Include additional decay anti-K0 pi- e+ nu_e , K- pi0 e+ nu_e.
+#
+0.021700000 K*-     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.035500000 K-      e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000760000 K_1-    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001374504 K_2*-   e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002890000 pi-     e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001900000 rho-    e+      nu_e                            PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.027000000 anti-K0 pi-     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.016000000 K-      pi0     e+      nu_e                    PHOTOS   PHSP; #[Reconstructed PDG2011]
+###
+Enddecay
+
+#
+#
+Decay anti-D0
+0.021700000 K*+     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.035500000 K+      e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000760000 K_1+    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001380270 K_2*+   e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.002890000 pi+     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.001900000 rho+    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.027000000 K0      pi+     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.016000000 K+      pi0     e-      anti-nu_e               PHOTOS   PHSP; #[Reconstructed PDG2011]
+Enddecay
+
+Decay D_s+
+0.024900000 phi     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.026700000 eta     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.009900000 eta'    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 anti-K0 e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 anti-K*0 e+      nu_e                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+# Doubly Cabibbo suppressed
+0.003700000 K0      e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 K*0     e+      nu_e                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+#
+# Updated to PDG 2008
+Decay D_s-
+0.024900000 phi     e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.026700000 eta     e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.009900000 eta'    e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 K0      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 K*0     e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+# Doubly Cabibbo suppressed
+0.003700000 anti-K0 e-      anti-nu_e                       PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.001800000 anti-K*0 e-      anti-nu_e                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay Lambda_c+
+###
+0.021000000 e+      nu_e    Lambda0                         PYTHIA         42; #[Reconstructed PDG2011]
+0.00500         e+      nu_e    Sigma0  PYTHIA         42;
+0.00500         e+      nu_e    Sigma*0         PYTHIA         42;
+0.00300         e+      nu_e    n0      PYTHIA         42;
+0.00200         e+      nu_e    Delta0  PYTHIA         42;
+0.00600         e+      nu_e    p+      pi-     PYTHIA         42;
+0.00600         e+      nu_e    n0      pi0     PYTHIA         42;
+###
+Enddecay
+
+CDecay anti-Lambda_c-
+
+
+Decay Xi_c0
+0.020        e+       nu_e           Xi-         PYTHIA 42;
+0.005        e+       nu_e           Xi*-         PYTHIA 42;
+Enddecay
+
+CDecay anti-Xi_c0
+
+Decay Xi_c+
+0.028        e+       nu_e           Xi0         PYTHIA 42;
+0.007        e+       nu_e           Xi*0         PYTHIA 42;
+Enddecay
+
+CDecay Xi_c-
+
+Decay Omega_c0
+1.0   e+     nu_e         Omega-         PYTHIA 42;
+Enddecay
+
+CDecay anti-Omega_c0
+
+#####
+Decay B0
+# Updated to PDG 2008
+#                   b -> c semileptonic
+#
+0.050100000 D*-     e+      nu_e                            PHOTOS HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D-      e+      nu_e                            PHOTOS ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1-   e+   nu_e           PHOTOS ISGW2;
+0.0020   D_0*-   e+   nu_e           PHOTOS ISGW2;
+0.0050   D'_1-   e+   nu_e           PHOTOS ISGW2;
+0.0022   D_2*-   e+   nu_e           PHOTOS ISGW2;
+0.0003   D*-  pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
+0.004900000 anti-D*0 pi-     e+      nu_e                   PHOTOS GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D-   pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
+###
+#
+#                    b -> u l nu
+#
+0.000134000 pi-     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho-    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+##0.000000   D(2S)- e+   nu_e        PHOTOS  ISGW2;
+##0.000000   D*(2S)- e+   nu_e       PHOTOS  ISGW2;
+0.001892   Xu-  e+  nu_e             VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30  3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000160 K0      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001030 K*0     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+###
+Enddecay
+
+
+Decay anti-B0
+# Updated to PDG 2008
+#                   b -> c semileptonic
+#
+0.050100000 D*+     e-      anti-nu_e                       PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D+      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0020   D_0*+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0050   D'_1+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0022   D_2*+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0003   D*+  pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
+0.004900000 D*0     pi+     e-      anti-nu_e               PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D+   pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
+####
+0.000134000 pi+     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho+    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000000   D(2S)+ e-   anti-nu_e        PHOTOS   ISGW2;
+0.000000   D*(2S)+ e-   anti-nu_e       PHOTOS   ISGW2;
+0.001892   Xu+  e-  anti-nu_e         PHOTOS    VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000160 anti-K0 e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001030 anti-K*0 e+      e-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 anti-Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+
+Enddecay
+
+Decay B-
+# Updated to PDG 2008
+#                  b -> c semileptonic
+#
+0.056800000 D*0     e-      anti-nu_e                       PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 D0      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   D_10   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0024   D_0*0   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0007   D'_10   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0018   D_2*0   e-   anti-nu_e         PHOTOS  ISGW2;
+0.006100000 D*+     pi-     e-      anti-nu_e               PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   D*0  pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
+0.0000   D+   pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS; #### covered by other decays
+0.0010   D0   pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
+#####
+0.000077000 pi0     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   e-   anti-nu_e        PHOTOS   ISGW2;
+0.000000   D(2S)0 e-   anti-nu_e        PHOTOS   ISGW2;
+0.000000   D*(2S)0 e-   anti-nu_e       PHOTOS   ISGW2;
+0.001948   Xu0   e-  anti-nu_e         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000550 K-      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001550 K*-     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 anti-Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+
+Enddecay
+
+
+Decay B+
+# Updated to PDG 2008
+#                  b -> c semileptonic
+#
+0.056800000 anti-D*0 e+      nu_e                           PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 anti-D0 e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   anti-D_10   e+   nu_e        PHOTOS  ISGW2;
+0.0024   anti-D_0*0   e+   nu_e        PHOTOS  ISGW2;
+0.0007   anti-D'_10   e+   nu_e        PHOTOS  ISGW2;
+0.0018   anti-D_2*0   e+   nu_e        PHOTOS  ISGW2;
+0.006100000 D*-     pi+     e+      nu_e                    PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   anti-D*0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
+0.0000   D-   pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS; ## covered by other decays
+0.0010   anti-D0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
+####
+0.000077000 pi0     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   e+   nu_e        PHOTOS  ISGW2;
+0.000000   anti-D(2S)0 e+   nu_e   PHOTOS  ISGW2;
+0.000000   anti-D*(2S)0 e+   nu_e  PHOTOS  ISGW2;
+0.001948   Xu0   e+  nu_e         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000550 K+      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001550 K*+     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+
+Enddecay
+
+
+Decay B_s0
+0.0210   D_s-     e+     nu_e         PHOTOS  ISGW2;
+0.0490   D_s*-    e+     nu_e         PHOTOS  ISGW2;
+0.0040   D_s1-    e+     nu_e         PHOTOS  ISGW2;
+0.0040   D_s0*-   e+     nu_e         PHOTOS  ISGW2;
+0.0070   D'_s1-   e+     nu_e         PHOTOS  ISGW2;
+0.0070   D_s2*-   e+     nu_e         PHOTOS  ISGW2;
+###
+# fkw 5/10/00 the b->ulnu decays are loosely modelled according to B0 in EvtGen
+0.000200    K-          e+         nu_e         PHOTOS   ISGW2;
+0.000300    K*-         e+         nu_e         PHOTOS   ISGW2;
+0.000300    K_1-        e+         nu_e         PHOTOS   ISGW2;
+0.000200    K'_1-       e+         nu_e         PHOTOS   ISGW2;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e+     e-                   BTOSLLALI;
+
+Enddecay
+
+
+Decay anti-B_s0
+#                                        b --> c  (l nu)
+#                                        Sum = 24.5%
+0.0210   D_s+     e-     anti-nu_e    PHOTOS  ISGW2;
+0.0490   D_s*+    e-     anti-nu_e    PHOTOS  ISGW2;
+0.0040   D_s1+    e-     anti-nu_e    PHOTOS  ISGW2;
+0.0040   D_s0*+   e-     anti-nu_e    PHOTOS  ISGW2;
+0.0070   D'_s1+   e-     anti-nu_e    PHOTOS  ISGW2;
+0.0070   D_s2*+   e-     anti-nu_e    PHOTOS  ISGW2;
+####
+# fkw 5/10/00 the b->ulnu decays are loosely modelled according to B0 in EvtGen
+0.000200    K+          e-         anti-nu_e         PHOTOS   ISGW2;
+0.000300    K*+         e-         anti-nu_e         PHOTOS   ISGW2;
+0.000300    K_1+        e-         anti-nu_e         PHOTOS   ISGW2;
+0.000200    K'_1+       e-         anti-nu_e         PHOTOS   ISGW2;
+###
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e-     e+                   BTOSLLALI;
+
+Enddecay
+
+Decay Lambda_b0
+#                  SemiLeptonic Decays (inclusive BR = 7.7 +/- 1.8%)
+0.050000000 Lambda_c+ e-      anti-nu_e                     PHSP; #[Reconstructed PDG2011]
+0.006300000 Lambda_c(2593)+ e-      anti-nu_e               PHSP; #[Reconstructed PDG2011]
+0.011000000 Lambda_c(2625)+ e-      anti-nu_e               PHSP; #[Reconstructed PDG2011]
+
+Enddecay
+
+Decay anti-Lambda_b0
+#                  SemiLeptonic Decays (inclusive BR = 7.7 +/- 1.8%)
+0.050000000 anti-Lambda_c- e+      nu_e                     PHSP; #[Reconstructed PDG2011]
+0.006300000 anti-Lambda_c(2593)- e+      nu_e               PHSP; #[Reconstructed PDG2011]
+0.011000000 anti-Lambda_c(2625)- e+      nu_e               PHSP; #[Reconstructed PDG2011]
+
+Enddecay
+
+Decay Xi_b-
+  0.05460    Xi_c0      e-    anti-nu_e                   PHSP;
+Enddecay
+
+
+Decay anti-Xi_b+
+  0.05460    anti-Xi_c0      e+    nu_e                   PHSP;
+Enddecay
+
+Decay Xi_b0
+  0.05460    Xi_c+      e-    anti-nu_e                   PHSP;
+Enddecay
+
+Decay anti-Xi_b0
+  0.05460    anti-Xi_c-      e+    nu_e                   PHSP;
+Enddecay
+
+Decay Omega_b-
+  0.05460    Omega_c0      e-    anti-nu_e                PHSP;
+Enddecay
+
+Decay anti-Omega_b+
+  0.05460    anti-Omega_c0      e+    nu_e                PHSP;
+Enddecay
+
+End
+
+
+
+
+
diff --git a/TEvtGen/EvtGen/DecayTable/BANDCTOMU.DEC b/TEvtGen/EvtGen/DecayTable/BANDCTOMU.DEC
new file mode 100644 (file)
index 0000000..6077ed4
--- /dev/null
@@ -0,0 +1,310 @@
+###
+Decay D+
+###
+0.055000000 anti-K*0 mu+     nu_mu                          PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.094000000 anti-K0 mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002773020 anti-K_10 mu+     nu_mu                         PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002927076 anti-K_2*0 mu+     nu_mu                        PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.003312218 pi0     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002002736 eta     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002500000 rho0    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002156793 omega   mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.039000000 K-      pi+     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 anti-K0 pi0     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.000382000 mu+     nu_mu                                   PHOTOS   SLN; #[Reconstructed PDG2011]
+Enddecay
+
+
+Decay D-
+#
+0.055000000 K*0     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.094000000 K0      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002773020 K_10    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002927076 K_2*0   mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.003312218 pi0     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002002736 eta     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000385142 eta'    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002500000 rho0    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002156793 omega   mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.039000000 K+      pi-     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.001078397 K0      pi0     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+#
+0.000382000 mu-     anti-nu_mu                              PHOTOS   SLN; #[Reconstructed PDG2011]
+Enddecay
+
+Decay D0
+###
+0.019800000 K*-     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.033100000 K-      mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000815539 K_1-    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001374504 K_2*-   mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002370000 pi-     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002015940 rho-    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001007970 anti-K0 pi-     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.000549802 K-      pi0     mu+     nu_mu                   PHOTOS   PHSP; #[Reconstructed PDG2011]
+###
+Enddecay
+
+Decay anti-D0
+###
+0.019800000 K*+     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.033100000 K+      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000818960 K_1+    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001380270 K_2*+   mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002370000 pi+     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002024397 rho+    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.001012198 K0      pi+     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+0.000552108 K+      pi0     mu-     anti-nu_mu              PHOTOS   PHSP; #[Reconstructed PDG2011]
+###
+Enddecay
+
+Decay D_s+
+###
+0.018309605 phi     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.022845082 eta     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.008186726 eta'    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 anti-K0 mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 anti-K*0 mu+     nu_mu                          PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.005800000 mu+     nu_mu                                   PHOTOS  SLN; #[Reconstructed PDG2011]
+###
+Enddecay
+
+Decay D_s-
+###
+0.018309605 phi     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.022845082 eta     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.008186726 eta'    mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.002058115 K0      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000762265 K*0     mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.005800000 mu-     anti-nu_mu                              PHOTOS    SLN; #[Reconstructed PDG2011]
+###
+Enddecay
+
+Decay Lambda_c+
+###
+0.020000000 mu+     nu_mu   Lambda0                         PYTHIA         42; #[Reconstructed PDG2011]
+0.00500         mu+     nu_mu   Sigma0  PYTHIA         42;
+0.00500         mu+     nu_mu   Sigma*0         PYTHIA         42;
+0.00300         mu+     nu_mu   n0      PYTHIA         42;
+0.00200         mu+     nu_mu   Delta0  PYTHIA         42;
+0.00600         mu+     nu_mu   p+      pi-     PYTHIA         42;
+0.00600         mu+     nu_mu   n0      pi0     PYTHIA         42;
+###
+Enddecay
+
+CDecay anti-Lambda_c-
+
+Decay Xi_c0
+0.020        mu+       nu_mu           Xi-         PYTHIA 42;
+0.005        mu+       nu_mu           Xi*-         PYTHIA 42;
+Enddecay
+
+CDecay anti-Xi_c0
+
+Decay Xi_c+
+0.028        mu+       nu_mu           Xi0         PYTHIA 42;
+0.007        mu+       nu_mu           Xi*0         PYTHIA 42;
+Enddecay
+
+CDecay Xi_c-
+
+
+Decay Omega_c0
+1.0   mu+     nu_mu         Omega-         PYTHIA 42;
+Enddecay
+
+CDecay anti-Omega_c0
+
+
+####
+Decay B0
+#
+0.050100000 D*-     mu+     nu_mu                           PHOTOS HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D-      mu+     nu_mu                           PHOTOS ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1-   mu+  nu_mu           PHOTOS ISGW2;
+0.0020   D_0*-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0050   D'_1-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0022   D_2*-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0003   D*-  pi0   mu+  nu_mu       PHOTOS GOITY_ROBERTS;
+0.004900000 anti-D*0 pi-     mu+     nu_mu                  PHOTOS     GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D-   pi0   mu+  nu_mu       PHOTOS GOITY_ROBERTS;
+0.0000   anti-D0  pi-   mu+  nu_mu    PHOTOS    GOITY_ROBERTS;
+#
+#
+0.000134000 pi-     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho-    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000000   D(2S)- mu+  nu_mu       PHOTOS  ISGW2;
+0.000000   D*(2S)- mu+  nu_mu      PHOTOS  ISGW2;
+0.001892   Xu-  mu+  nu_mu             VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000450 K0      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001050 K*0     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+Enddecay
+
+Decay anti-B0
+0.050100000 D*+     mu-     anti-nu_mu                      PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D+      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0020   D_0*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0050   D'_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0022   D_2*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0003   D*+  pi0   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+0.004900000 D*0     pi+     mu-     anti-nu_mu              PHOTOS   GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D+   pi0   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+0.0000   D0   pi+   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+#
+0.000134000 pi+     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho+    mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000000   D(2S)+ mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000000   D*(2S)+ mu-  anti-nu_mu      PHOTOS    ISGW2;
+0.001892   Xu+  mu-  anti-nu_mu      PHOTOS       VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000450 anti-K0 mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001050 anti-K*0 mu+     mu-                            PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 anti-Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+Enddecay
+
+Decay B+
+0.056800000 anti-D*0 mu+     nu_mu                          PHOTOS   HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 anti-D0 mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   anti-D_10   mu+  nu_mu       PHOTOS   ISGW2;
+0.0024   anti-D_0*0   mu+  nu_mu      PHOTOS    ISGW2;
+0.0007   anti-D'_10   mu+  nu_mu      PHOTOS    ISGW2;
+0.0018   anti-D_2*0   mu+  nu_mu      PHOTOS    ISGW2;
+0.006100000 D*-     pi+     mu+     nu_mu                   PHOTOS    GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   anti-D*0  pi0   mu+   nu_mu  PHOTOS         GOITY_ROBERTS;
+0.0000   D-   pi+   mu+   nu_mu       PHOTOS    GOITY_ROBERTS;
+0.0010   anti-D0  pi0   mu+   nu_mu   PHOTOS        GOITY_ROBERTS;
+#
+0.000077000 pi0     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   mu+  nu_mu       PHOTOS  ISGW2;
+0.000000   anti-D(2S)0 mu+  nu_mu  PHOTOS  ISGW2;
+0.000000   anti-D*(2S)0 mu+  nu_mu PHOTOS  ISGW2;
+0.001948   Xu0   mu+  nu_mu         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000520 K+      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001160 K*+     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+###
+Enddecay
+
+Decay B-
+##
+0.056800000 D*0     mu-     anti-nu_mu                      PHOTOS   HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 D0      mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.0040   D_10  mu-  anti-nu_mu         PHOTOS   ISGW2;
+0.0024   D_0*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.0007   D'_10  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.0018   D_2*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.006100000 D*+     pi-     mu-     anti-nu_mu              PHOTOS   GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   D*0   pi0   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.0000   D+    pi-   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.0010   D0    pi0   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.000077000 pi0     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000000   D(2S)0 mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000000   D*(2S)0 mu-  anti-nu_mu      PHOTOS   ISGW2;
+0.001948   Xu0   mu-  anti-nu_mu         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000520 K-      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001160 K*-     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 anti-Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+###
+Enddecay
+
+Decay B_s0
+###
+0.0210   D_s-     mu+    nu_mu        PHOTOS  ISGW2;
+0.0490   D_s*-    mu+    nu_mu        PHOTOS  ISGW2;
+0.0040   D_s1-    mu+    nu_mu        PHOTOS  ISGW2;
+0.0040   D_s0*-   mu+    nu_mu        PHOTOS  ISGW2;
+0.0070   D'_s1-   mu+    nu_mu        PHOTOS  ISGW2;
+0.0070   D_s2*-   mu+    nu_mu        PHOTOS  ISGW2;
+###
+0.000200    K-          mu+        nu_mu        PHOTOS  ISGW2;
+0.000300    K*-         mu+        nu_mu        PHOTOS  ISGW2;
+0.000300    K_1-        mu+        nu_mu        PHOTOS  ISGW2;
+0.000200    K'_1-       mu+        nu_mu        PHOTOS  ISGW2;
+#PR LHCb add Bs -> mu+ mu-
+0.0000000035 mu+        mu-                                PHSP;
+0.0000023   phi    mu+    mu-                  BTOSLLALI;
+###
+Enddecay
+
+Decay anti-B_s0
+###
+0.0210   D_s+     mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0490   D_s*+    mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0040   D_s1+    mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0040   D_s0*+   mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0070   D'_s1+   mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0070   D_s2*+   mu-    anti-nu_mu   PHOTOS  ISGW2;
+###
+0.000200    K+          mu-        anti-nu_mu        PHOTOS  ISGW2;
+0.000300    K*+         mu-        anti-nu_mu        PHOTOS  ISGW2;
+0.000300    K_1+        mu-        anti-nu_mu        PHOTOS  ISGW2;
+0.000200    K'_1+       mu-        anti-nu_mu        PHOTOS  ISGW2;
+###
+0.0000023   phi    mu-    mu+                  BTOSLLALI;
+Enddecay
+
+Decay Lambda_b0
+###
+0.050000000 Lambda_c+ mu-     anti-nu_mu                    PHSP; #[Reconstructed PDG2011]
+0.006300000 Lambda_c(2593)+ mu-     anti-nu_mu              PHSP; #[Reconstructed PDG2011]
+0.011000000 Lambda_c(2625)+ mu-     anti-nu_mu              PHSP; #[Reconstructed PDG2011]
+###
+0.056000000 Lambda_c+ pi+     pi-     mu-     anti-nu_mu    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+###
+Enddecay
+
+Decay anti-Lambda_b0
+###
+0.050000000 anti-Lambda_c- mu+     nu_mu                    PHSP; #[Reconstructed PDG2011]
+0.006300000 anti-Lambda_c(2593)- mu+     nu_mu              PHSP; #[Reconstructed PDG2011]
+0.011000000 anti-Lambda_c(2625)- mu+     nu_mu              PHSP; #[Reconstructed PDG2011]
+###
+0.056000000 anti-Lambda_c- pi-     pi+     mu+     nu_mu    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay Xi_b-
+###
+0.05460    Xi_c0      mu-   anti-nu_mu                  PHSP;
+Enddecay
+
+Decay anti-Xi_b+
+###
+0.05460    anti-Xi_c0      mu+   nu_mu                  PHSP;
+Enddecay
+
+Decay Xi_b0
+###
+0.05460    Xi_c+      mu-   anti-nu_mu                  PHSP;
+Enddecay
+
+Decay anti-Xi_b0
+###
+0.05460    anti-Xi_c-      mu+   nu_mu                  PHSP;
+Enddecay
+
+Decay Omega_b-
+###
+0.05460    Omega_c0      mu-   anti-nu_mu               PHSP;
+Enddecay
+
+Decay anti-Omega_b+
+###
+0.05460    anti-Omega_c0      mu+   nu_mu               PHSP;
+Enddecay
+
+
+End
index e1fc60f716645769bdaa68943c5f46c88feb7dc2..06d4bca90a8f797e5384540bfe76e7b1a043bd58 100644 (file)
-##
-Define dm_incohMix_B_s0 0.0
-Define dm_incohMix_B0 0.0
-Define dm_incohMix_Lambda_b0 0.0
-Define dm_incohMix_B- 0.0
-Define dm_incohMix_B_c- 0.0
-Define dm_incohMix_Xi_b0 0.0
-Define dm_incohMix_Xi_b- 0.0
-Define dm_incohMix_Omega_b- 0.0
-
-#
-ModelAlias VubHybridB0 VUBHYBRID 4.62 2.27 0.22 8 8 8
-    0.28 1.40 1.60 1.80  2.00  2.50  3.00  3.50 
-    0.00 2.50 5.00 7.50 10.00 12.50 15.00 20.00 
-    0.00 0.50 1.00 1.25  1.50  1.75  2.00  2.25
-    0.00000 1.2059 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.09098 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.47335 1.21021 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.52695 1.21011 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.6304 1.21096 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.33327 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.54178 1.20886 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.59143 1.20802 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.69332 1.20698 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.66811 1.20755 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.34624 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.23645 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.53769 1.21089 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.63768 1.20843 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.71713 1.20869 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.75566 1.20778 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.74831 1.20916 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.21312 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.62594 1.20926 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.5902 1.20516 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.68809 1.20016 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.78229 1.20459 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.82156 1.20561 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.72422 1.20485 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.00423 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.55708 1.20977 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.61225 1.20629 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.66904 1.20049 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.72567 1.20029 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.78501 1.19808 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.83037 1.19609 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.59537 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.00000 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.45962 1.20645 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.53276 1.20083 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.57906 1.19669 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.68263 1.19458 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.74222 1.19771 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.78307 1.19479 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.58714 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.19489 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.24451 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.14704 1.20472 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.42163 1.19849 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.37319 1.18877 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.38655 1.1995 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.34297 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.31299 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.57067 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.57067 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995;
-
-# Hybrid weights for charged B -> Xu l nu decays
-ModelAlias VubHybridBp VUBHYBRID  4.62 2.27 0.22 8 8 8 
-    0.28 1.40 1.60 1.80  2.00  2.50  3.00  3.50 
-    0.00 2.50 5.00 7.50 10.00 12.50 15.00 20.00 
-    0.00 0.50 1.00 1.25  1.50  1.75  2.00  2.25
-    0.00000 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.00000 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.11287 1.26974 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.10819 1.26929 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.27133 1.26671 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.17256 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.18216 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.32091 1.26953 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.52924 1.26988 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.51586 1.26755 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.26794 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.21166 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.29627 1.26757 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.52168 1.26788 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.5675 1.26647 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.62174 1.26467 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.00536 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.38235 1.2678 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.44511 1.26686 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.54476 1.26672 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.66852 1.26707 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.64859 1.26542 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.53664 1.2536 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.00000 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.22558 1.26822 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.38409 1.26531 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.52891 1.26284 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.65141 1.26648 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.70896 1.26227 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.79827 1.26101 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.4274 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.08636 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.28546 1.26121 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.40621 1.26584 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.58209 1.26637 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.61119 1.26424 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.70714 1.26297 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.73926 1.25781 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.53898 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.52061 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.00000 1.26726 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.16996 1.2649 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.23334 1.2534 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.25078 1.26036 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.27805 1.25917 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.27337 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.18235 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.84654 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.84654 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986;
-
-#
+####
 Decay B0
-0.0560   D*-    e+   nu_e           PHOTOS HQET 0.92 1.18 0.72;
-0.0210   D-     e+   nu_e           PHOTOS ISGW2;
-0.0056   D_1-   e+   nu_e           PHOTOS ISGW2;
+# Updated to PDG 2008
+#                   b -> c semileptonic
+#
+0.050100000 D*-     e+      nu_e                            PHOTOS HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D-      e+      nu_e                            PHOTOS ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1-   e+   nu_e           PHOTOS ISGW2;
 0.0020   D_0*-   e+   nu_e           PHOTOS ISGW2;
-0.0037   D'_1-   e+   nu_e           PHOTOS ISGW2;
-0.0037   D_2*-   e+   nu_e           PHOTOS ISGW2;
-0.0010   D*-  pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0020   anti-D*0  pi-   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0030   D-   pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0060   anti-D0  pi-   e+   nu_e       PHOTOS GOITY_ROBERTS;
-
-0.000180   pi-    e+   nu_e        PHOTOS  ISGW2;
-0.000260   rho-   e+   nu_e        PHOTOS  ISGW2;
-0.000165   a_1-    e+   nu_e        PHOTOS  ISGW2;
-0.000102   b_1-    e+   nu_e        PHOTOS  ISGW2;
-0.000014   a_0-    e+   nu_e        PHOTOS  ISGW2;
-0.000014   a_2-    e+   nu_e        PHOTOS  ISGW2;
-
+0.0050   D'_1-   e+   nu_e           PHOTOS ISGW2;
+0.0022   D_2*-   e+   nu_e           PHOTOS ISGW2;
+0.0003   D*-  pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
+0.004900000 anti-D*0 pi-     e+      nu_e                   PHOTOS GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D-   pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
+###
+#
+#                    b -> u l nu
+#
+0.000134000 pi-     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho-    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+##0.000000   D(2S)- e+   nu_e        PHOTOS  ISGW2;
+##0.000000   D*(2S)- e+   nu_e       PHOTOS  ISGW2;
+0.001892   Xu-  e+  nu_e             VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30  3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000160 K0      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001030 K*0     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+###
 
-#0.001892   Xu-  e+  nu_e           PHOTOS  VubHybridB0;
 Enddecay
 
 Decay anti-B0
-0.0560   D*+    e-   anti-nu_e          PHOTOS  HQET 0.92 1.18 0.72;
-0.0210   D+     e-   anti-nu_e          PHOTOS  ISGW2;
-0.0056   D_1+   e-   anti-nu_e          PHOTOS  ISGW2;
+# Updated to PDG 2008
+#                   b -> c semileptonic
+#
+0.050100000 D*+     e-      anti-nu_e                       PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D+      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1+   e-   anti-nu_e          PHOTOS  ISGW2;
 0.0020   D_0*+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0037   D'_1+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0037   D_2*+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0010   D*+  pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0020   D*0  pi+   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0030   D+   pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0060   D0   pi+   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.000180   pi+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000260   rho+   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000165   a_1+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000102   b_1+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000014   a_0+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000014   a_2+    e-   anti-nu_e        PHOTOS   ISGW2;
+0.0050   D'_1+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0022   D_2*+   e-   anti-nu_e          PHOTOS  ISGW2;
+0.0003   D*+  pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
+0.004900000 D*0     pi+     e-      anti-nu_e               PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D+   pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
+####
+0.000134000 pi+     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho+    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000000   D(2S)+ e-   anti-nu_e        PHOTOS   ISGW2;
+0.000000   D*(2S)+ e-   anti-nu_e       PHOTOS   ISGW2;
+0.001892   Xu+  e-  anti-nu_e         PHOTOS    VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000160 anti-K0 e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001030 anti-K*0 e+      e-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 anti-Xsd  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
 
-#0.001892   Xu+ e-  anti-nu_e            PHOTOS VubHybridB0;
 Enddecay
 
-Decay B+
-0.0560   anti-D*0    e+   nu_e        PHOTOS  HQET 0.92 1.18 0.72;
-0.0210   anti-D0    e+   nu_e        PHOTOS  ISGW2;
-0.0056   anti-D_10   e+   nu_e        PHOTOS  ISGW2;
-0.0020   anti-D_0*0   e+   nu_e        PHOTOS  ISGW2;
-0.0037   anti-D'_10   e+   nu_e        PHOTOS  ISGW2;
-0.0037   anti-D_2*0   e+   nu_e        PHOTOS  ISGW2;
-0.0020   D*-  pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-0.0010   anti-D*0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-0.0060   D-   pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-0.0030   anti-D0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
+Decay B-
+# Updated to PDG 2008
+#                  b -> c semileptonic
+#
+0.056800000 D*0     e-      anti-nu_e                       PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 D0      e-      anti-nu_e                       PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   D_10   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0024   D_0*0   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0007   D'_10   e-   anti-nu_e         PHOTOS  ISGW2;
+0.0018   D_2*0   e-   anti-nu_e         PHOTOS  ISGW2;
+0.006100000 D*+     pi-     e-      anti-nu_e               PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   D*0  pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
+0.0000   D+   pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS; #### covered by other decays
+0.0010   D0   pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
+#####
+0.000077000 pi0     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   e-      anti-nu_e                       PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   e-   anti-nu_e        PHOTOS   ISGW2;
+0.000000   D(2S)0 e-   anti-nu_e        PHOTOS   ISGW2;
+0.000000   D*(2S)0 e-   anti-nu_e       PHOTOS   ISGW2;
+0.001948   Xu0   e-  anti-nu_e         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000550 K-      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001550 K*-     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 anti-Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
 
-0.000090   pi0    e+   nu_e      PHOTOS  ISGW2;
-0.000030   eta    e+   nu_e      PHOTOS  ISGW2;
-0.000130   rho0   e+   nu_e      PHOTOS  ISGW2;
-0.000130   omega   e+   nu_e      PHOTOS  ISGW2;
-0.000060   eta'   e+   nu_e      PHOTOS  ISGW2;
-0.000082   a_10    e+   nu_e      PHOTOS  ISGW2;
-0.000007   a_20    e+   nu_e      PHOTOS  ISGW2;
-0.000048   b_10    e+   nu_e      PHOTOS  ISGW2;
-0.000007   a_00    e+   nu_e      PHOTOS  ISGW2;
-0.000004   f_0     e+   nu_e      PHOTOS  ISGW2;
-0.000004   f'_0    e+   nu_e      PHOTOS  ISGW2;
-0.000041   f_1     e+   nu_e      PHOTOS  ISGW2;
-0.000041   f'_1    e+   nu_e      PHOTOS  ISGW2;
-0.000024   h_1     e+   nu_e      PHOTOS  ISGW2;
-0.000024   h'_1    e+   nu_e      PHOTOS  ISGW2;
-0.000004   f_2     e+   nu_e      PHOTOS  ISGW2;
-0.000004   f'_2    e+   nu_e      PHOTOS  ISGW2;
-#0.001948   Xu0   e+  nu_e          PHOTOS  VubHybridBp;
 Enddecay
 
-Decay B-
-#
+
+Decay B+
+# Updated to PDG 2008
 #                  b -> c semileptonic
 #
-0.0560   D*0    e-   anti-nu_e         PHOTOS  HQET 0.92 1.18 0.72;
-0.0210   D0     e-   anti-nu_e         PHOTOS  ISGW2;
-0.0056   D_10   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0020   D_0*0   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0037   D'_10   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0037   D_2*0   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0020   D*+  pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-0.0010   D*0  pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-0.0060   D+   pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-0.0030   D0   pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-
-0.000090   pi0    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000030   eta    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000130   rho0   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000130   omega   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000060   eta'   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000082   a_10    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000007   a_20    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000048   b_10    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000007   a_00    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f_0     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f'_0    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000041   f_1     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000041   f'_1    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000024   h_1     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000024   h'_1    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f_2     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f'_2    e-   anti-nu_e        PHOTOS   ISGW2;
+0.056800000 anti-D*0 e+      nu_e                           PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 anti-D0 e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   anti-D_10   e+   nu_e        PHOTOS  ISGW2;
+0.0024   anti-D_0*0   e+   nu_e        PHOTOS  ISGW2;
+0.0007   anti-D'_10   e+   nu_e        PHOTOS  ISGW2;
+0.0018   anti-D_2*0   e+   nu_e        PHOTOS  ISGW2;
+0.006100000 D*-     pi+     e+      nu_e                    PHOTOS  GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   anti-D*0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
+0.0000   D-   pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS; ## covered by other decays
+0.0010   anti-D0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
+####
+0.000077000 pi0     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   e+      nu_e                            PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   e+   nu_e        PHOTOS  ISGW2;
+0.000000   anti-D(2S)0 e+   nu_e   PHOTOS  ISGW2;
+0.000000   anti-D*(2S)0 e+   nu_e  PHOTOS  ISGW2;
+0.001948   Xu0   e+  nu_e         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000550 K+      e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001550 K*+     e+      e-                              PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000050 Xsu  e+    e-    PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
 
-#0.001948   Xu0   e-  anti-nu_e          PHOTOS   VubHybridBp;
 Enddecay
 
+
 Decay B_s0
 0.0210   D_s-     e+     nu_e         PHOTOS  ISGW2;
 0.0490   D_s*-    e+     nu_e         PHOTOS  ISGW2;
@@ -270,8 +124,18 @@ Decay B_s0
 0.0040   D_s0*-   e+     nu_e         PHOTOS  ISGW2;
 0.0070   D'_s1-   e+     nu_e         PHOTOS  ISGW2;
 0.0070   D_s2*-   e+     nu_e         PHOTOS  ISGW2;
+###
+# fkw 5/10/00 the b->ulnu decays are loosely modelled according to B0 in EvtGen
+0.000200    K-          e+         nu_e         PHOTOS   ISGW2;
+0.000300    K*-         e+         nu_e         PHOTOS   ISGW2;
+0.000300    K_1-        e+         nu_e         PHOTOS   ISGW2;
+0.000200    K'_1-       e+         nu_e         PHOTOS   ISGW2;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e+     e-                   BTOSLLALI;
+
 Enddecay
 
+
 Decay anti-B_s0
 #                                        b --> c  (l nu)
 #                                        Sum = 24.5%
@@ -281,30 +145,44 @@ Decay anti-B_s0
 0.0040   D_s0*+   e-     anti-nu_e    PHOTOS  ISGW2;
 0.0070   D'_s1+   e-     anti-nu_e    PHOTOS  ISGW2;
 0.0070   D_s2*+   e-     anti-nu_e    PHOTOS  ISGW2;
+####
+# fkw 5/10/00 the b->ulnu decays are loosely modelled according to B0 in EvtGen
+0.000200    K+          e-         anti-nu_e         PHOTOS   ISGW2;
+0.000300    K*+         e-         anti-nu_e         PHOTOS   ISGW2;
+0.000300    K_1+        e-         anti-nu_e         PHOTOS   ISGW2;
+0.000200    K'_1+       e-         anti-nu_e         PHOTOS   ISGW2;
+###
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e-     e+                   BTOSLLALI;
+
 Enddecay
 
 Decay Lambda_b0
-0.05460    Lambda_c+        e-  anti-nu_e               PHSP;
+#                  SemiLeptonic Decays (inclusive BR = 7.7 +/- 1.8%)
+0.050000000 Lambda_c+ e-      anti-nu_e                     PHSP; #[Reconstructed PDG2011]
+0.006300000 Lambda_c(2593)+ e-      anti-nu_e               PHSP; #[Reconstructed PDG2011]
+0.011000000 Lambda_c(2625)+ e-      anti-nu_e               PHSP; #[Reconstructed PDG2011]
+0.056000000 Lambda_c+ pi+     pi-     e-      anti-nu_e     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 
 Decay anti-Lambda_b0
 #                  SemiLeptonic Decays (inclusive BR = 7.7 +/- 1.8%)
-  0.05460    anti-Lambda_c-        e+  nu_e               PHSP;
+0.050000000 anti-Lambda_c- e+      nu_e                     PHSP; #[Reconstructed PDG2011]
+0.006300000 anti-Lambda_c(2593)- e+      nu_e               PHSP; #[Reconstructed PDG2011]
+0.011000000 anti-Lambda_c(2625)- e+      nu_e               PHSP; #[Reconstructed PDG2011]
+0.056000000 anti-Lambda_c- pi-     pi+     e+      nu_e     PHSP;  #[New mode added] #[Reconstructed PDG2011]
 Enddecay
 
 Decay Xi_b-
-#                  SemiLeptonic Decays
   0.05460    Xi_c0      e-    anti-nu_e                   PHSP;
 Enddecay
 
 
 Decay anti-Xi_b+
-#                  SemiLeptonic Decays
   0.05460    anti-Xi_c0      e+    nu_e                   PHSP;
 Enddecay
 
 Decay Xi_b0
-#                  SemiLeptonic Decays
   0.05460    Xi_c+      e-    anti-nu_e                   PHSP;
 Enddecay
 
@@ -313,14 +191,16 @@ Decay anti-Xi_b0
 Enddecay
 
 Decay Omega_b-
-#                  SemiLeptonic Decays
   0.05460    Omega_c0      e-    anti-nu_e                PHSP;
 Enddecay
 
 Decay anti-Omega_b+
-#                  SemiLeptonic Decays
   0.05460    anti-Omega_c0      e+    nu_e                PHSP;
 Enddecay
 
 End
 
+
+
+
+
diff --git a/TEvtGen/EvtGen/DecayTable/BTOELEold.DEC b/TEvtGen/EvtGen/DecayTable/BTOELEold.DEC
deleted file mode 100644 (file)
index 2e02702..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-##
-Define dm_incohMix_B_s0 0.0
-Define dm_incohMix_B0 0.0
-Define dm_incohMix_Lambda_b0 0.0
-Define dm_incohMix_B- 0.0
-Define dm_incohMix_B_c- 0.0
-Define dm_incohMix_Xi_b0 0.0
-Define dm_incohMix_Xi_b- 0.0
-Define dm_incohMix_Omega_b- 0.0
-
-#
-ModelAlias VubHybridB0 VUBHYBRID 4.62 2.27 0.22 8 8 8
-    0.28 1.40 1.60 1.80  2.00  2.50  3.00  3.50 
-    0.00 2.50 5.00 7.50 10.00 12.50 15.00 20.00 
-    0.00 0.50 1.00 1.25  1.50  1.75  2.00  2.25
-    0.00000 1.2059 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.09098 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.47335 1.21021 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.52695 1.21011 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.6304 1.21096 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.33327 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.54178 1.20886 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.59143 1.20802 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.69332 1.20698 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.66811 1.20755 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.34624 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.23645 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.53769 1.21089 1.21241 1.21241 1.21241 1.21241 1.21241 1.21241
-    0.63768 1.20843 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.71713 1.20869 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.75566 1.20778 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.74831 1.20916 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.21312 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.62594 1.20926 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.5902 1.20516 1.21241 1.21241 1.21241 1.21241 1.21241 0.99995
-    0.68809 1.20016 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.78229 1.20459 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.82156 1.20561 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.72422 1.20485 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.00423 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.55708 1.20977 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.61225 1.20629 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.66904 1.20049 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.72567 1.20029 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.78501 1.19808 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.83037 1.19609 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.59537 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.00000 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.45962 1.20645 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.53276 1.20083 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995
-    0.57906 1.19669 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.68263 1.19458 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.74222 1.19771 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.78307 1.19479 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.58714 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.19489 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.24451 1.21241 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.14704 1.20472 1.21241 1.21241 1.21241 0.99995 0.99995 0.99995
-    0.42163 1.19849 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.37319 1.18877 1.21241 1.21241 0.99995 0.99995 0.99995 0.99995
-    0.38655 1.1995 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.34297 1.21241 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.31299 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.57067 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995
-    0.57067 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995 0.99995;
-
-# Hybrid weights for charged B -> Xu l nu decays
-ModelAlias VubHybridBp VUBHYBRID  4.62 2.27 0.22 8 8 8 
-    0.28 1.40 1.60 1.80  2.00  2.50  3.00  3.50 
-    0.00 2.50 5.00 7.50 10.00 12.50 15.00 20.00 
-    0.00 0.50 1.00 1.25  1.50  1.75  2.00  2.25
-    0.00000 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.00000 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.11287 1.26974 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.10819 1.26929 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.27133 1.26671 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.17256 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.18216 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.32091 1.26953 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.52924 1.26988 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.51586 1.26755 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.26794 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.21166 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029 1.27029
-    0.29627 1.26757 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.52168 1.26788 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.5675 1.26647 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.62174 1.26467 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.00536 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.38235 1.2678 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.44511 1.26686 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.54476 1.26672 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.66852 1.26707 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.64859 1.26542 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.53664 1.2536 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.00000 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.22558 1.26822 1.27029 1.27029 1.27029 1.27029 1.27029 0.9986
-    0.38409 1.26531 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.52891 1.26284 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.65141 1.26648 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.70896 1.26227 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.79827 1.26101 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.4274 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.08636 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.28546 1.26121 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.40621 1.26584 1.27029 1.27029 1.27029 1.27029 0.9986 0.9986
-    0.58209 1.26637 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.61119 1.26424 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.70714 1.26297 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.73926 1.25781 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.53898 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.52061 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.00000 1.26726 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.16996 1.2649 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.23334 1.2534 1.27029 1.27029 1.27029 0.9986 0.9986 0.9986
-    0.25078 1.26036 1.27029 1.27029 0.9986 0.9986 0.9986 0.9986
-    0.27805 1.25917 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.27337 1.27029 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.18235 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.84654 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986
-    0.84654 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986 0.9986;
-
-#
-Decay B0
-0.0560   D*-    e+   nu_e           PHOTOS HQET 0.92 1.18 0.72;
-0.0210   D-     e+   nu_e           PHOTOS ISGW2;
-0.0056   D_1-   e+   nu_e           PHOTOS ISGW2;
-0.0020   D_0*-   e+   nu_e           PHOTOS ISGW2;
-0.0037   D'_1-   e+   nu_e           PHOTOS ISGW2;
-0.0037   D_2*-   e+   nu_e           PHOTOS ISGW2;
-0.0010   D*-  pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0020   anti-D*0  pi-   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0030   D-   pi0   e+   nu_e       PHOTOS GOITY_ROBERTS;
-0.0060   anti-D0  pi-   e+   nu_e       PHOTOS GOITY_ROBERTS;
-
-0.000180   pi-    e+   nu_e        PHOTOS  ISGW2;
-0.000260   rho-   e+   nu_e        PHOTOS  ISGW2;
-0.000165   a_1-    e+   nu_e        PHOTOS  ISGW2;
-0.000102   b_1-    e+   nu_e        PHOTOS  ISGW2;
-0.000014   a_0-    e+   nu_e        PHOTOS  ISGW2;
-0.000014   a_2-    e+   nu_e        PHOTOS  ISGW2;
-
-
-#0.001892   Xu-  e+  nu_e           PHOTOS  VubHybridB0;
-Enddecay
-
-Decay anti-B0
-0.0560   D*+    e-   anti-nu_e          PHOTOS  HQET 0.92 1.18 0.72;
-0.0210   D+     e-   anti-nu_e          PHOTOS  ISGW2;
-0.0056   D_1+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0020   D_0*+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0037   D'_1+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0037   D_2*+   e-   anti-nu_e          PHOTOS  ISGW2;
-0.0010   D*+  pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0020   D*0  pi+   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0030   D+   pi0   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.0060   D0   pi+   e-   anti-nu_e      PHOTOS  GOITY_ROBERTS;
-0.000180   pi+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000260   rho+   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000165   a_1+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000102   b_1+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000014   a_0+    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000014   a_2+    e-   anti-nu_e        PHOTOS   ISGW2;
-
-#0.001892   Xu+ e-  anti-nu_e            PHOTOS VubHybridB0;
-Enddecay
-
-Decay B+
-0.0560   anti-D*0    e+   nu_e        PHOTOS  HQET 0.92 1.18 0.72;
-0.0210   anti-D0    e+   nu_e        PHOTOS  ISGW2;
-0.0056   anti-D_10   e+   nu_e        PHOTOS  ISGW2;
-0.0020   anti-D_0*0   e+   nu_e        PHOTOS  ISGW2;
-0.0037   anti-D'_10   e+   nu_e        PHOTOS  ISGW2;
-0.0037   anti-D_2*0   e+   nu_e        PHOTOS  ISGW2;
-0.0020   D*-  pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-0.0010   anti-D*0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-0.0060   D-   pi+   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-0.0030   anti-D0  pi0   e+   nu_e    PHOTOS  GOITY_ROBERTS;
-
-0.000090   pi0    e+   nu_e      PHOTOS  ISGW2;
-0.000030   eta    e+   nu_e      PHOTOS  ISGW2;
-0.000130   rho0   e+   nu_e      PHOTOS  ISGW2;
-0.000130   omega   e+   nu_e      PHOTOS  ISGW2;
-0.000060   eta'   e+   nu_e      PHOTOS  ISGW2;
-0.000082   a_10    e+   nu_e      PHOTOS  ISGW2;
-0.000007   a_20    e+   nu_e      PHOTOS  ISGW2;
-0.000048   b_10    e+   nu_e      PHOTOS  ISGW2;
-0.000007   a_00    e+   nu_e      PHOTOS  ISGW2;
-0.000004   f_0     e+   nu_e      PHOTOS  ISGW2;
-0.000004   f'_0    e+   nu_e      PHOTOS  ISGW2;
-0.000041   f_1     e+   nu_e      PHOTOS  ISGW2;
-0.000041   f'_1    e+   nu_e      PHOTOS  ISGW2;
-0.000024   h_1     e+   nu_e      PHOTOS  ISGW2;
-0.000024   h'_1    e+   nu_e      PHOTOS  ISGW2;
-0.000004   f_2     e+   nu_e      PHOTOS  ISGW2;
-0.000004   f'_2    e+   nu_e      PHOTOS  ISGW2;
-#0.001948   Xu0   e+  nu_e          PHOTOS  VubHybridBp;
-Enddecay
-
-Decay B-
-#
-#                  b -> c semileptonic
-#
-0.0560   D*0    e-   anti-nu_e         PHOTOS  HQET 0.92 1.18 0.72;
-0.0210   D0     e-   anti-nu_e         PHOTOS  ISGW2;
-0.0056   D_10   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0020   D_0*0   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0037   D'_10   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0037   D_2*0   e-   anti-nu_e         PHOTOS  ISGW2;
-0.0020   D*+  pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-0.0010   D*0  pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-0.0060   D+   pi-   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-0.0030   D0   pi0   e-   anti-nu_e     PHOTOS  GOITY_ROBERTS;
-
-0.000090   pi0    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000030   eta    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000130   rho0   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000130   omega   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000060   eta'   e-   anti-nu_e        PHOTOS   ISGW2;
-0.000082   a_10    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000007   a_20    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000048   b_10    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000007   a_00    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f_0     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f'_0    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000041   f_1     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000041   f'_1    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000024   h_1     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000024   h'_1    e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f_2     e-   anti-nu_e        PHOTOS   ISGW2;
-0.000004   f'_2    e-   anti-nu_e        PHOTOS   ISGW2;
-
-#0.001948   Xu0   e-  anti-nu_e          PHOTOS   VubHybridBp;
-Enddecay
-
-Decay B_s0
-0.0210   D_s-     e+     nu_e         PHOTOS  ISGW2;
-0.0490   D_s*-    e+     nu_e         PHOTOS  ISGW2;
-0.0040   D_s1-    e+     nu_e         PHOTOS  ISGW2;
-0.0040   D_s0*-   e+     nu_e         PHOTOS  ISGW2;
-0.0070   D'_s1-   e+     nu_e         PHOTOS  ISGW2;
-0.0070   D_s2*-   e+     nu_e         PHOTOS  ISGW2;
-Enddecay
-
-Decay anti-B_s0
-#                                        b --> c  (l nu)
-#                                        Sum = 24.5%
-0.0210   D_s+     e-     anti-nu_e    PHOTOS  ISGW2;
-0.0490   D_s*+    e-     anti-nu_e    PHOTOS  ISGW2;
-0.0040   D_s1+    e-     anti-nu_e    PHOTOS  ISGW2;
-0.0040   D_s0*+   e-     anti-nu_e    PHOTOS  ISGW2;
-0.0070   D'_s1+   e-     anti-nu_e    PHOTOS  ISGW2;
-0.0070   D_s2*+   e-     anti-nu_e    PHOTOS  ISGW2;
-Enddecay
-
-Decay Lambda_b0
-0.05460    Lambda_c+        e-  anti-nu_e               PHSP;
-Enddecay
-
-Decay anti-Lambda_b0
-#                  SemiLeptonic Decays (inclusive BR = 7.7 +/- 1.8%)
-  0.05460    anti-Lambda_c-        e+  nu_e               PHSP;
-Enddecay
-
-Decay Xi_b-
-#                  SemiLeptonic Decays
-  0.05460    Xi_c0      e-    anti-nu_e                   PHSP;
-Enddecay
-
-
-Decay anti-Xi_b+
-#                  SemiLeptonic Decays
-  0.05460    anti-Xi_c0      e+    nu_e                   PHSP;
-Enddecay
-
-Decay Xi_b0
-#                  SemiLeptonic Decays
-  0.05460    Xi_c+      e-    anti-nu_e                   PHSP;
-Enddecay
-
-Decay anti-Xi_b0
-  0.05460    anti-Xi_c-      e+    nu_e                   PHSP;
-Enddecay
-
-Decay Omega_b-
-#                  SemiLeptonic Decays
-  0.05460    Omega_c0      e-    anti-nu_e                PHSP;
-Enddecay
-
-Decay anti-Omega_b+
-#                  SemiLeptonic Decays
-  0.05460    anti-Omega_c0      e+    nu_e                PHSP;
-Enddecay
-
-Decay pi0
-Enddecay
-
-End
-
index 93ec72f0eb7db8e8548e8b226e20180de8bb82ed..8db475c82bdbd0d40e4d62ed3dad5d26a962567c 100644 (file)
-##
-Define dm_incohMix_B_s0 0.0
-Define dm_incohMix_B0 0.0
-Define dm_incohMix_Lambda_b0 0.0
-Define dm_incohMix_B- 0.0
-Define dm_incohMix_B_c- 0.0
-Define dm_incohMix_Xi_b0 0.0
-Define dm_incohMix_Xi_b- 0.0
-Define dm_incohMix_Omega_b- 0.0
-
-#Alias MyJPSI J/psi
- #Define the B0B0bar mass difference
-#Define dm 0.489e12
- # define the values of the CKM angles  (alpha=70, beta=40)
-#Define beta  0.39
- # New definitions for psiKstar modes (Lange, July 26, 2000)
-#Define PKHplus  0.159
-#Define PKHzero  0.775
-#Define PKHminus 0.612
-#Define PKphHplus  1.563
-#Define PKphHzero  0.0
-#Define PKphHminus 2.712
-
-#Define Aplus  0.490
-#Define Azero  1.10
-#Define Aminus 0.4
+####
+Decay B0
+#       B -> cc= s
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
 #
-#Define phAplus  2.5
-#Define phAzero  0.0
-#Define phAminus -0.17
-#Define minusTwoBeta -0.78
-  # These particle aliases are used in for CP violating decays
-  # in which the decay distributions depends on how the K* decayed.
-  #
-  #
-#Alias K*L       K*0
-#Alias K*S       K*0
-#Alias K*0T      K*0
-#Alias anti-K*0T anti-K*0
- #
-#ChargeConj K*0T    anti-K*0T
 #
-Decay B0
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  K*0T              SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00003     J/psi  omega            SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0012     J/psi  K+  pi-           PHSP;
+0.001330000 J/psi   K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.00003     J/psi  omega            SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.000000000 J/psi   K+      pi-                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  K0  pi0           PHSP;
-#rl0.0007     J/psi  K0  pi-  pi+      PHSP;
-#rl0.00035     J/psi  K0  pi0  pi0      PHSP;
-#rl0.00035     J/psi  K+  pi-  pi0      PHSP;
-0.0013     J/psi  K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   K_10                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  K_2*0              PHSP;
-0.000094    J/psi  phi K0        PHSP;
+0.000094000 J/psi   phi     K0                              PHSP; #[Reconstructed PDG2011]
+####
+0.000871000 J/psi   K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   K0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   K0      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   K0      rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   K*0     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+
 Enddecay
+
 Decay anti-B0
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  anti-K*0T          SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000030     J/psi  omega             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-
-0.0012     J/psi  K-  pi+           PHSP;
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.001330000 J/psi   anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000030     J/psi  omega             SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000000000 J/psi   K-      pi+                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K0   pi0           PHSP;
-#rl0.0007     J/psi  anti-K0   pi+  pi-      PHSP;
-#rl0.00035     J/psi  anti-K0   pi0  pi0      PHSP;
-#rl0.00035     J/psi  K-  pi+  pi0      PHSP;
-0.0013     J/psi  anti-K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   anti-K_10                               SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  anti-K_2*0              PHSP;
-0.000094    J/psi  phi anti-K0        PHSP;
+0.000094000 J/psi   phi     anti-K0                         PHSP; #[Reconstructed PDG2011]
+###
+0.000871000 J/psi   anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   anti-K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   anti-K0 pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   anti-K0 rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   anti-K*0 pi-     pi+                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+####
 Enddecay
 
-Decay B+
-0.001007   J/psi K+                         SVS;
-0.00141   J/psi K*+                        SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.000049  J/psi pi+                         SVS;
-0.00006   J/psi rho+                      SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.0002   J/psi K0  pi+                    PHSP;
-0.0001   J/psi K+  pi0                    PHSP;
-#rl0.0007   J/psi K+  pi-  pi+               PHSP;
-#rl0.00035   J/psi K+  pi0  pi0               PHSP;
-#rl0.00035   J/psi K0  pi+  pi0               PHSP;
-0.0018     J/psi  K_1+                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
-0.0001   J/psi K'_1+                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
-0.0005   J/psi K_2*+                       PHSP;
-0.000052    J/psi  phi K+        PHSP;
-Enddecay
 Decay B-
-0.001007  J/psi K-                         SVS;
-0.00141   J/psi K*-                        SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.000049  J/psi pi-                       SVS;
-0.00006   J/psi rho-                      SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+#
+#   B -> cc= s          sum = 1.92%
+#
+0.001014000 J/psi   K-                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi-                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho-                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 0.0002   J/psi anti-K0   pi-                    PHSP;
 0.0001   J/psi K-  pi0                    PHSP;
-#rl0.0007   J/psi K-  pi+  pi-               PHSP;
-#rl0.00035   J/psi K-  pi0  pi0               PHSP;
-#rl0.00035   J/psi anti-K0   pi-  pi0               PHSP;
-0.0018     J/psi  K_1-              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0001   J/psi K'_1-                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005   J/psi K_2*-                       PHSP;
+0.001800000 J/psi   K_1-                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K-                              PHSP; #[Reconstructed PDG2011]
+#
+0.001070000 J/psi   K-      pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   anti-p- Lambda0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+
+Enddecay
+
+Decay B+
+#
+#   B -> cc= s          sum = 1.92%
+#
+0.001014000 J/psi   K+                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi+                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho+                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.0002   J/psi K0  pi+                    PHSP;
+0.0001   J/psi K+  pi0                    PHSP;
+0.0001   J/psi K'_1+                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.0005   J/psi K_2*+                       PHSP;
+0.001800000 J/psi   K_1+                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K+                              PHSP; #[Reconstructed PDG2011]
+#
+####
+0.001070000 J/psi   K+      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   p+      anti-Lambda0                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
 
-0.000052    J/psi  phi K-        PHSP;
 Enddecay
 
 Decay B_s0
+
 0.00064     J/psi       eta'                               SVS;
 0.00032     J/psi       eta                                SVS;
-0.00135     J/psi       phi      SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.00008     J/psi       anti-K0                            SVS;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.00008     J/psi       K0                                 SVS;
 0.00070     J/psi       K-          K+                     PHSP;
 0.00070     J/psi       anti-K0     K0                     PHSP;
 0.00070     J/psi       K0          K-         pi+         PHSP;
 0.00070     J/psi       anti-K0     K0         pi0         PHSP;
 0.00070     J/psi       K-          K+         pi0         PHSP;
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR Add (cc) phi eta(') + npi like in CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e+     e-                   BTOSLLALI;
 Enddecay
 
 Decay anti-B_s0
+
 0.00064   J/psi   eta'               SVS;
 0.00032   J/psi   eta                SVS;
-0.00135   J/psi   phi                SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.00008   J/psi   K0                 SVS;
 0.00070   J/psi   K-       K+        PHSP;
 0.00070   J/psi   anti-K0  K0        PHSP;
 0.00070   J/psi   anti-K0  K+   pi-  PHSP;
 0.00070   J/psi   anti-K0  K0   pi0  PHSP;
 0.00070   J/psi   K-       K+   pi0  PHSP;
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR add (cc) phi eta(') + npi see CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e-     e+                   BTOSLLALI;
+
 Enddecay
 
 Decay Lambda_b0
-0.00047    Lambda0         J/psi     PHSP;
+#
+  0.00047    Lambda0         J/psi                        PHSP;
 Enddecay
 
 Decay anti-Lambda_b0
-0.00047    anti-Lambda0    J/psi     PHSP;
+  0.00047    anti-Lambda0    J/psi                        PHSP;
 Enddecay
 
-Decay B_c+
-0.01900    J/psi      e+          nu_e         PHOTOS  PHSP;
-0.01900    J/psi      mu+         nu_mu        PHOTOS  PHSP;
-0.00480    J/psi      tau+        nu_tau               PHSP;
-0.00130    J/psi      pi+                   SVS;
-0.00400    J/psi      rho+                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00011    J/psi      K+                    SVS;
-0.00022    J/psi      K*+                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00170    J/psi      D_s+                  SVS;
-0.00670    J/psi      D_s*+                 SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00009    J/psi      D+                    SVS;
-0.00028    J/psi      D*+                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+Decay Xi_b-
+  0.00047    Xi-        J/psi                             PHSP;
 Enddecay
 
-Decay B_c-
-0.01900    J/psi      e-      anti-nu_e         PHOTOS  PHSP;
-0.01900    J/psi      mu-     anti-nu_mu        PHOTOS  PHSP;
-0.00480    J/psi      tau-    anti-nu_tau               PHSP;
-0.00130    J/psi      pi-                   SVS;
-0.00400    J/psi      rho-                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00011    J/psi      K-                    SVS;
-0.00022    J/psi      K*-                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00170    J/psi      D_s-                  SVS;
-0.00670    J/psi      D_s*-                 SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00009    J/psi      D-                    SVS;
-0.00028    J/psi      D*-                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+
+Decay anti-Xi_b+
+  0.00047    anti-Xi+        J/psi                        PHSP;
 Enddecay
 
 Decay Xi_b0
-0.00047    Xi0        J/psi                             PHSP;
+  0.00047    Xi0        J/psi                             PHSP;
 Enddecay
 
 Decay anti-Xi_b0
-0.00047    anti-Xi0        J/psi                        PHSP;
-Enddecay
-
-Decay Xi_b-
-0.00047    Xi-        J/psi                             PHSP;
-Enddecay
-
-Decay anti-Xi_b+
-0.00047    anti-Xi+        J/psi                        PHSP;
+  0.00047    anti-Xi0        J/psi                        PHSP;
 Enddecay
 
 Decay Omega_b-
-0.00047    Omega-        J/psi                          PHSP;
+  0.00047    Omega-        J/psi                          PHSP;
 Enddecay
 
 Decay anti-Omega_b+
-0.00047    anti-Omega+        J/psi                     PHSP;
+  0.00047    anti-Omega+        J/psi                     PHSP;
 Enddecay
 
 End
index 51983db500827245d4ed51466dbfaeb7b6fc005c..d2cab71bc642b7e89be29dd95f4539aa9dacff79 100644 (file)
-##
-Define dm_incohMix_B_s0 0.0
-Define dm_incohMix_B0 0.0
-Define dm_incohMix_Lambda_b0 0.0
-Define dm_incohMix_B- 0.0
-Define dm_incohMix_B_c- 0.0
-Define dm_incohMix_Xi_b0 0.0
-Define dm_incohMix_Xi_b- 0.0
-Define dm_incohMix_Omega_b- 0.0
-
-#Alias MyJPSI J/psi
- #Define the B0B0bar mass difference
-#Define dm 0.489e12
- # define the values of the CKM angles  (alpha=70, beta=40)
-#Define beta  0.39
- # New definitions for psiKstar modes (Lange, July 26, 2000)
-#Define PKHplus  0.159
-#Define PKHzero  0.775
-#Define PKHminus 0.612
-#Define PKphHplus  1.563
-#Define PKphHzero  0.0
-#Define PKphHminus 2.712
-
-#Define Aplus  0.490
-#Define Azero  1.10
-#Define Aminus 0.4
+####
+Decay B0
+#       B -> cc= s
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
 #
-#Define phAplus  2.5
-#Define phAzero  0.0
-#Define phAminus -0.17
-#Define minusTwoBeta -0.78
-  # These particle aliases are used in for CP violating decays
-  # in which the decay distributions depends on how the K* decayed.
-  #
-  #
-#Alias K*L       K*0
-#Alias K*S       K*0
-#Alias K*0T      K*0
-#Alias anti-K*0T anti-K*0
- #
-#ChargeConj K*0T    anti-K*0T
 #
-Decay B0
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  K*0T              SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00003     J/psi  omega            SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0012     J/psi  K+  pi-           PHSP;
+0.001330000 J/psi   K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.00003     J/psi  omega            SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.000000000 J/psi   K+      pi-                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  K0  pi0           PHSP;
-#rl0.0007     J/psi  K0  pi-  pi+      PHSP;
-#rl0.00035     J/psi  K0  pi0  pi0      PHSP;
-#rl0.00035     J/psi  K+  pi-  pi0      PHSP;
-0.0013     J/psi  K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   K_10                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  K_2*0              PHSP;
-0.000094    J/psi  phi K0        PHSP;
+0.000094000 J/psi   phi     K0                              PHSP; #[Reconstructed PDG2011]
+####
+0.000871000 J/psi   K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   K0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   K0      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   K0      rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   K*0     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+
 Enddecay
+
 Decay anti-B0
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  anti-K*0T          SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000030     J/psi  omega             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-
-0.0012     J/psi  K-  pi+           PHSP;
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.001330000 J/psi   anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000030     J/psi  omega             SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000000000 J/psi   K-      pi+                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K0   pi0           PHSP;
-#rl0.0007     J/psi  anti-K0   pi+  pi-      PHSP;
-#rl0.00035     J/psi  anti-K0   pi0  pi0      PHSP;
-#rl0.00035     J/psi  K-  pi+  pi0      PHSP;
-0.0013     J/psi  anti-K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   anti-K_10                               SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  anti-K_2*0              PHSP;
-0.000094    J/psi  phi anti-K0        PHSP;
+0.000094000 J/psi   phi     anti-K0                         PHSP; #[Reconstructed PDG2011]
+###
+0.000871000 J/psi   anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   anti-K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   anti-K0 pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   anti-K0 rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   anti-K*0 pi-     pi+                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+####
 Enddecay
 
-Decay B+
-0.001007   J/psi K+                         SVS;
-0.00141   J/psi K*+                        SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.000049  J/psi pi+                         SVS;
-0.00006   J/psi rho+                      SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.0002   J/psi K0  pi+                    PHSP;
-0.0001   J/psi K+  pi0                    PHSP;
-#rl0.0007   J/psi K+  pi-  pi+               PHSP;
-#rl0.00035   J/psi K+  pi0  pi0               PHSP;
-#rl0.00035   J/psi K0  pi+  pi0               PHSP;
-0.0018     J/psi  K_1+                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
-0.0001   J/psi K'_1+                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
-0.0005   J/psi K_2*+                       PHSP;
-0.000052    J/psi  phi K+        PHSP;
-Enddecay
 Decay B-
-0.001007  J/psi K-                         SVS;
-0.00141   J/psi K*-                        SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.000049  J/psi pi-                       SVS;
-0.00006   J/psi rho-                      SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+#
+#   B -> cc= s          sum = 1.92%
+#
+0.001014000 J/psi   K-                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi-                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho-                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 0.0002   J/psi anti-K0   pi-                    PHSP;
 0.0001   J/psi K-  pi0                    PHSP;
-#rl0.0007   J/psi K-  pi+  pi-               PHSP;
-#rl0.00035   J/psi K-  pi0  pi0               PHSP;
-#rl0.00035   J/psi anti-K0   pi-  pi0               PHSP;
-0.0018     J/psi  K_1-              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0001   J/psi K'_1-                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005   J/psi K_2*-                       PHSP;
+0.001800000 J/psi   K_1-                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K-                              PHSP; #[Reconstructed PDG2011]
+#
+0.001070000 J/psi   K-      pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   anti-p- Lambda0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+
+Enddecay
+
+Decay B+
+#
+#   B -> cc= s          sum = 1.92%
+#
+0.001014000 J/psi   K+                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi+                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho+                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.0002   J/psi K0  pi+                    PHSP;
+0.0001   J/psi K+  pi0                    PHSP;
+0.0001   J/psi K'_1+                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.0005   J/psi K_2*+                       PHSP;
+0.001800000 J/psi   K_1+                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K+                              PHSP; #[Reconstructed PDG2011]
+#
+####
+0.001070000 J/psi   K+      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   p+      anti-Lambda0                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
 
-0.000052    J/psi  phi K-        PHSP;
 Enddecay
 
 Decay B_s0
+
 0.00064     J/psi       eta'                               SVS;
 0.00032     J/psi       eta                                SVS;
-0.00135     J/psi       phi      SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.00008     J/psi       anti-K0                            SVS;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.00008     J/psi       K0                                 SVS;
 0.00070     J/psi       K-          K+                     PHSP;
 0.00070     J/psi       anti-K0     K0                     PHSP;
 0.00070     J/psi       K0          K-         pi+         PHSP;
 0.00070     J/psi       anti-K0     K0         pi0         PHSP;
 0.00070     J/psi       K-          K+         pi0         PHSP;
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR Add (cc) phi eta(') + npi like in CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e+     e-                   BTOSLLALI;
 Enddecay
 
 Decay anti-B_s0
+
 0.00064   J/psi   eta'               SVS;
 0.00032   J/psi   eta                SVS;
-0.00135   J/psi   phi                SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.00008   J/psi   K0                 SVS;
 0.00070   J/psi   K-       K+        PHSP;
 0.00070   J/psi   anti-K0  K0        PHSP;
 0.00070   J/psi   anti-K0  K+   pi-  PHSP;
 0.00070   J/psi   anti-K0  K0   pi0  PHSP;
 0.00070   J/psi   K-       K+   pi0  PHSP;
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR add (cc) phi eta(') + npi see CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e-     e+                   BTOSLLALI;
+
 Enddecay
 
 Decay Lambda_b0
-0.00047    Lambda0         J/psi     PHSP;
+#
+  0.00047    Lambda0         J/psi                        PHSP;
 Enddecay
 
 Decay anti-Lambda_b0
-0.00047    anti-Lambda0    J/psi     PHSP;
+  0.00047    anti-Lambda0    J/psi                        PHSP;
 Enddecay
 
-Decay B_c+
-0.01900    J/psi      e+          nu_e         PHOTOS  PHSP;
-0.01900    J/psi      mu+         nu_mu        PHOTOS  PHSP;
-0.00480    J/psi      tau+        nu_tau               PHSP;
-0.00130    J/psi      pi+                   SVS;
-0.00400    J/psi      rho+                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00011    J/psi      K+                    SVS;
-0.00022    J/psi      K*+                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00170    J/psi      D_s+                  SVS;
-0.00670    J/psi      D_s*+                 SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00009    J/psi      D+                    SVS;
-0.00028    J/psi      D*+                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+Decay Xi_b-
+  0.00047    Xi-        J/psi                             PHSP;
 Enddecay
 
-Decay B_c-
-0.01900    J/psi      e-      anti-nu_e         PHOTOS  PHSP;
-0.01900    J/psi      mu-     anti-nu_mu        PHOTOS  PHSP;
-0.00480    J/psi      tau-    anti-nu_tau               PHSP;
-0.00130    J/psi      pi-                   SVS;
-0.00400    J/psi      rho-                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00011    J/psi      K-                    SVS;
-0.00022    J/psi      K*-                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00170    J/psi      D_s-                  SVS;
-0.00670    J/psi      D_s*-                 SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00009    J/psi      D-                    SVS;
-0.00028    J/psi      D*-                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+
+Decay anti-Xi_b+
+  0.00047    anti-Xi+        J/psi                        PHSP;
 Enddecay
 
 Decay Xi_b0
-0.00047    Xi0        J/psi                             PHSP;
+  0.00047    Xi0        J/psi                             PHSP;
 Enddecay
 
 Decay anti-Xi_b0
-0.00047    anti-Xi0        J/psi                        PHSP;
-Enddecay
-
-Decay Xi_b-
-0.00047    Xi-        J/psi                             PHSP;
-Enddecay
-
-Decay anti-Xi_b+
-0.00047    anti-Xi+        J/psi                        PHSP;
+  0.00047    anti-Xi0        J/psi                        PHSP;
 Enddecay
 
 Decay Omega_b-
-0.00047    Omega-        J/psi                          PHSP;
+  0.00047    Omega-        J/psi                          PHSP;
 Enddecay
 
 Decay anti-Omega_b+
-0.00047    anti-Omega+        J/psi                     PHSP;
+  0.00047    anti-Omega+        J/psi                     PHSP;
 Enddecay
 
 Decay J/psi
index 89212da3b2384a33c9fab925234e7cbfa986ebbe..3da32b2d58fc602afb73f7640b2f9bf2061c7ca4 100644 (file)
-##
-Define dm_incohMix_B_s0 0.0
-Define dm_incohMix_B0 0.0
-Define dm_incohMix_Lambda_b0 0.0
-Define dm_incohMix_B- 0.0
-Define dm_incohMix_B_c- 0.0
-Define dm_incohMix_Xi_b0 0.0
-Define dm_incohMix_Xi_b- 0.0
-Define dm_incohMix_Omega_b- 0.0
-
-#Alias MyJPSI J/psi
- #Define the B0B0bar mass difference
-#Define dm 0.489e12
- # define the values of the CKM angles  (alpha=70, beta=40)
-#Define beta  0.39
- # New definitions for psiKstar modes (Lange, July 26, 2000)
-#Define PKHplus  0.159
-#Define PKHzero  0.775
-#Define PKHminus 0.612
-#Define PKphHplus  1.563
-#Define PKphHzero  0.0
-#Define PKphHminus 2.712
-
-#Define Aplus  0.490
-#Define Azero  1.10
-#Define Aminus 0.4
+####
+Decay B0
+#       B -> cc= s
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
 #
-#Define phAplus  2.5
-#Define phAzero  0.0
-#Define phAminus -0.17
-#Define minusTwoBeta -0.78
-  # These particle aliases are used in for CP violating decays
-  # in which the decay distributions depends on how the K* decayed.
-  #
-  #
-#Alias K*L       K*0
-#Alias K*S       K*0
-#Alias K*0T      K*0
-#Alias anti-K*0T anti-K*0
- #
-#ChargeConj K*0T    anti-K*0T
 #
-Decay B0
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  K*0T              SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.00003     J/psi  omega            SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0012     J/psi  K+  pi-           PHSP;
+0.001330000 J/psi   K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.00003     J/psi  omega            SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+0.000000000 J/psi   K+      pi-                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  K0  pi0           PHSP;
-#rl0.0007     J/psi  K0  pi-  pi+      PHSP;
-#rl0.00035     J/psi  K0  pi0  pi0      PHSP;
-#rl0.00035     J/psi  K+  pi-  pi0      PHSP;
-0.0013     J/psi  K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   K_10                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  K_2*0              PHSP;
-0.000094    J/psi  phi K0        PHSP;
+0.000094000 J/psi   phi     K0                              PHSP; #[Reconstructed PDG2011]
+####
+0.000871000 J/psi   K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   K0                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   K0      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   K0      rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*+     pi-                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   K*0     pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+
 Enddecay
+
 Decay anti-B0
-0.000436    J/psi  K_S0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 -1.0 0.0;
-0.000436    J/psi  K_L0               SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.0002215   J/psi  K*S               SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.0002215   J/psi  K*L               SVV_CP beta  dm -1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000886     J/psi  anti-K*0T          SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.0000205    J/psi  pi0              SSD_CP dm 0.0 1.0 minusTwoBeta 1.0 0.0 1.0 0.0;
-0.000016     J/psi  rho0              SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-0.000030     J/psi  omega             SVV_CP beta  dm 1 Aplus phAplus Azero phAzero Aminus phAminus;
-
-0.0012     J/psi  K-  pi+           PHSP;
+0.000435500 J/psi   K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000435500 J/psi   K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.001330000 J/psi   anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000017600 J/psi   pi0                                     SVS; #[Reconstructed PDG2011]
+0.000027000 J/psi   rho0                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000030     J/psi  omega             SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
+0.000000000 J/psi   K-      pi+                             PHSP; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K0   pi0           PHSP;
-#rl0.0007     J/psi  anti-K0   pi+  pi-      PHSP;
-#rl0.00035     J/psi  anti-K0   pi0  pi0      PHSP;
-#rl0.00035     J/psi  K-  pi+  pi0      PHSP;
-0.0013     J/psi  anti-K_10              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.001300000 J/psi   anti-K_10                               SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
 0.0001     J/psi  anti-K'_10             SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005     J/psi  anti-K_2*0              PHSP;
-0.000094    J/psi  phi anti-K0        PHSP;
+0.000094000 J/psi   phi     anti-K0                         PHSP; #[Reconstructed PDG2011]
+###
+0.000871000 J/psi   anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000310000 J/psi   omega   anti-K0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000009500 J/psi   eta                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000019000 J/psi   pi-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000460000 J/psi   anti-K0 pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000540000 J/psi   anti-K0 rho0                            PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000800000 J/psi   K*-     pi+                             PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000660000 J/psi   anti-K*0 pi-     pi+                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+####
 Enddecay
 
-Decay B+
-0.001007   J/psi K+                         SVS;
-0.00141   J/psi K*+                        SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.000049  J/psi pi+                         SVS;
-0.00006   J/psi rho+                      SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus;
-0.0002   J/psi K0  pi+                    PHSP;
-0.0001   J/psi K+  pi0                    PHSP;
-#rl0.0007   J/psi K+  pi-  pi+               PHSP;
-#rl0.00035   J/psi K+  pi0  pi0               PHSP;
-#rl0.00035   J/psi K0  pi+  pi0               PHSP;
-0.0018     J/psi  K_1+                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
-0.0001   J/psi K'_1+                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
-0.0005   J/psi K_2*+                       PHSP;
-0.000052    J/psi  phi K+        PHSP;
-Enddecay
 Decay B-
-0.001007  J/psi K-                         SVS;
-0.00141   J/psi K*-                        SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
-0.000049  J/psi pi-                       SVS;
-0.00006   J/psi rho-                      SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus;
+#
+#   B -> cc= s          sum = 1.92%
+#
+0.001014000 J/psi   K-                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi-                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho-                                    SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
 0.0002   J/psi anti-K0   pi-                    PHSP;
 0.0001   J/psi K-  pi0                    PHSP;
-#rl0.0007   J/psi K-  pi+  pi-               PHSP;
-#rl0.00035   J/psi K-  pi0  pi0               PHSP;
-#rl0.00035   J/psi anti-K0   pi-  pi0               PHSP;
-0.0018     J/psi  K_1-              SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0001   J/psi K'_1-                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
 0.0005   J/psi K_2*-                       PHSP;
+0.001800000 J/psi   K_1-                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K-                              PHSP; #[Reconstructed PDG2011]
+#
+0.001070000 J/psi   K-      pi-     pi+                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K-                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   anti-p- Lambda0                         PHSP;  #[New mode added] #[Reconstructed PDG2011]
+
+Enddecay
+
+Decay B+
+#
+#   B -> cc= s          sum = 1.92%
+#
+0.001014000 J/psi   K+                                      SVS; #[Reconstructed PDG2011]
+0.001430000 J/psi   K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.000049000 J/psi   pi+                                     SVS; #[Reconstructed PDG2011]
+0.000050000 J/psi   rho+                                    SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.0002   J/psi K0  pi+                    PHSP;
+0.0001   J/psi K+  pi0                    PHSP;
+0.0001   J/psi K'_1+                       SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0;
+0.0005   J/psi K_2*+                       PHSP;
+0.001800000 J/psi   K_1+                                    SVV_HELAMP 0.5 0.0 1.0 0.0 0.5 0.0; #[Reconstructed PDG2011]
+0.000052000 J/psi   phi     K+                              PHSP; #[Reconstructed PDG2011]
+#
+####
+0.001070000 J/psi   K+      pi+     pi-                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000108000 J/psi   eta     K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000350000 J/psi   omega   K+                              PHSP;  #[New mode added] #[Reconstructed PDG2011]
+0.000011800 J/psi   p+      anti-Lambda0                    PHSP;  #[New mode added] #[Reconstructed PDG2011]
 
-0.000052    J/psi  phi K-        PHSP;
 Enddecay
 
 Decay B_s0
+
 0.00064     J/psi       eta'                               SVS;
 0.00032     J/psi       eta                                SVS;
-0.00135     J/psi       phi      SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
-0.00008     J/psi       anti-K0                            SVS;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.00008     J/psi       K0                                 SVS;
 0.00070     J/psi       K-          K+                     PHSP;
 0.00070     J/psi       anti-K0     K0                     PHSP;
 0.00070     J/psi       K0          K-         pi+         PHSP;
 0.00070     J/psi       anti-K0     K0         pi0         PHSP;
 0.00070     J/psi       K-          K+         pi0         PHSP;
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR Add (cc) phi eta(') + npi like in CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e+     e-                   BTOSLLALI;
 Enddecay
 
 Decay anti-B_s0
+
 0.00064   J/psi   eta'               SVS;
 0.00032   J/psi   eta                SVS;
-0.00135   J/psi   phi                SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0;
+0.001300000 J/psi   phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
 0.00008   J/psi   K0                 SVS;
 0.00070   J/psi   K-       K+        PHSP;
 0.00070   J/psi   anti-K0  K0        PHSP;
 0.00070   J/psi   anti-K0  K+   pi-  PHSP;
 0.00070   J/psi   anti-K0  K0   pi0  PHSP;
 0.00070   J/psi   K-       K+   pi0  PHSP;
+# LHCb PR 04/02/04 Add (cc) phi n pi(+/0)
+0.00039   J/psi   phi      pi+  pi-  PHSP;
+0.00039   J/psi   phi      pi0  pi0  PHSP;
+# LHCb PR add (cc) phi eta(') + npi see CDF QQ
+0.0002    J/psi   eta      pi+  pi-  PHSP;
+0.0002    J/psi   eta      pi0  pi0  PHSP;
+0.0004    J/psi   eta'     pi+  pi-  PHSP;
+0.0004    J/psi   eta'     pi0  pi0  PHSP;
+0.0002    J/psi   pi+      pi-       PHSP;
+0.0002    J/psi   pi0      pi0       PHSP;
+# PR LHCb 04/08/2004 : add Bs -> phi mu mu, phi e e
+0.0000023   phi    e-     e+                   BTOSLLALI;
+
 Enddecay
 
 Decay Lambda_b0
-0.00047    Lambda0         J/psi     PHSP;
+#
+  0.00047    Lambda0         J/psi                        PHSP;
 Enddecay
 
 Decay anti-Lambda_b0
-0.00047    anti-Lambda0    J/psi     PHSP;
+  0.00047    anti-Lambda0    J/psi                        PHSP;
 Enddecay
 
-Decay B_c+
-0.01900    J/psi      e+          nu_e         PHOTOS  PHSP;
-0.01900    J/psi      mu+         nu_mu        PHOTOS  PHSP;
-0.00480    J/psi      tau+        nu_tau               PHSP;
-0.00130    J/psi      pi+                   SVS;
-0.00400    J/psi      rho+                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00011    J/psi      K+                    SVS;
-0.00022    J/psi      K*+                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00170    J/psi      D_s+                  SVS;
-0.00670    J/psi      D_s*+                 SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00009    J/psi      D+                    SVS;
-0.00028    J/psi      D*+                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+Decay Xi_b-
+  0.00047    Xi-        J/psi                             PHSP;
 Enddecay
 
-Decay B_c-
-0.01900    J/psi      e-      anti-nu_e         PHOTOS  PHSP;
-0.01900    J/psi      mu-     anti-nu_mu        PHOTOS  PHSP;
-0.00480    J/psi      tau-    anti-nu_tau               PHSP;
-0.00130    J/psi      pi-                   SVS;
-0.00400    J/psi      rho-                  SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00011    J/psi      K-                    SVS;
-0.00022    J/psi      K*-                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00170    J/psi      D_s-                  SVS;
-0.00670    J/psi      D_s*-                 SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
-0.00009    J/psi      D-                    SVS;
-0.00028    J/psi      D*-                   SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0;
+
+Decay anti-Xi_b+
+  0.00047    anti-Xi+        J/psi                        PHSP;
 Enddecay
 
 Decay Xi_b0
-0.00047    Xi0        J/psi                             PHSP;
+  0.00047    Xi0        J/psi                             PHSP;
 Enddecay
 
 Decay anti-Xi_b0
-0.00047    anti-Xi0        J/psi                        PHSP;
-Enddecay
-
-Decay Xi_b-
-0.00047    Xi-        J/psi                             PHSP;
-Enddecay
-
-Decay anti-Xi_b+
-0.00047    anti-Xi+        J/psi                        PHSP;
+  0.00047    anti-Xi0        J/psi                        PHSP;
 Enddecay
 
 Decay Omega_b-
-0.00047    Omega-        J/psi                          PHSP;
+  0.00047    Omega-        J/psi                          PHSP;
 Enddecay
 
 Decay anti-Omega_b+
-0.00047    anti-Omega+        J/psi                     PHSP;
+  0.00047    anti-Omega+        J/psi                     PHSP;
 Enddecay
 
 Decay J/psi
 1.000 mu+   mu-                PHOTOS VLL;
 Enddecay
 
+
 End
diff --git a/TEvtGen/EvtGen/DecayTable/BTOMU.DEC b/TEvtGen/EvtGen/DecayTable/BTOMU.DEC
new file mode 100644 (file)
index 0000000..f95b5bf
--- /dev/null
@@ -0,0 +1,190 @@
+####
+Decay B0
+#
+0.050100000 D*-     mu+     nu_mu                           PHOTOS HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D-      mu+     nu_mu                           PHOTOS ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1-   mu+  nu_mu           PHOTOS ISGW2;
+0.0020   D_0*-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0050   D'_1-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0022   D_2*-   mu+  nu_mu          PHOTOS  ISGW2;
+0.0003   D*-  pi0   mu+  nu_mu       PHOTOS GOITY_ROBERTS;
+0.004900000 anti-D*0 pi-     mu+     nu_mu                  PHOTOS     GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D-   pi0   mu+  nu_mu       PHOTOS GOITY_ROBERTS;
+0.0000   anti-D0  pi-   mu+  nu_mu    PHOTOS    GOITY_ROBERTS;
+#
+#
+0.000134000 pi-     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho-    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000000   D(2S)- mu+  nu_mu       PHOTOS  ISGW2;
+0.000000   D*(2S)- mu+  nu_mu      PHOTOS  ISGW2;
+0.001892   Xu-  mu+  nu_mu             VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000450 K0      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001050 K*0     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+Enddecay
+
+Decay anti-B0
+0.050100000 D*+     mu-     anti-nu_mu                      PHOTOS  HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.021700000 D+      mu-     anti-nu_mu                      PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0054   D_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0020   D_0*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0050   D'_1+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0022   D_2*+   mu-  anti-nu_mu         PHOTOS  ISGW2;
+0.0003   D*+  pi0   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+0.004900000 D*0     pi+     mu-     anti-nu_mu              PHOTOS   GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0010   D+   pi0   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+0.0000   D0   pi+   mu-  anti-nu_mu    PHOTOS   GOITY_ROBERTS;
+#
+0.000134000 pi+     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000247000 rho+    mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000000   D(2S)+ mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000000   D*(2S)+ mu-  anti-nu_mu      PHOTOS    ISGW2;
+0.001892   Xu+  mu-  anti-nu_mu      PHOTOS       VUB 4.8 1.29 0.22 20 0.30 0.55 1.20 0.61 1.26 0.85 1.34 1.08 1.41 1.21 1.48 1.30 1.55 1.30 1.61 1.33 1.67 1.36 1.73 1.39 1.79 1.33 1.84 1.42 1.90 1.39 1.95 1.39 2.00 1.37 2.50 1.30 3.00 0.74 3.50 0.99 4.00 1.09 4.50 1.00;
+#
+0.000000450 anti-K0 mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001050 anti-K*0 mu+     mu-                            PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 anti-Xsd  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+Enddecay
+
+Decay B+
+0.056800000 anti-D*0 mu+     nu_mu                          PHOTOS   HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 anti-D0 mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.0040   anti-D_10   mu+  nu_mu       PHOTOS   ISGW2;
+0.0024   anti-D_0*0   mu+  nu_mu      PHOTOS    ISGW2;
+0.0007   anti-D'_10   mu+  nu_mu      PHOTOS    ISGW2;
+0.0018   anti-D_2*0   mu+  nu_mu      PHOTOS    ISGW2;
+0.006100000 D*-     pi+     mu+     nu_mu                   PHOTOS    GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   anti-D*0  pi0   mu+   nu_mu  PHOTOS         GOITY_ROBERTS;
+0.0000   D-   pi+   mu+   nu_mu       PHOTOS    GOITY_ROBERTS;
+0.0010   anti-D0  pi0   mu+   nu_mu   PHOTOS        GOITY_ROBERTS;
+#
+0.000077000 pi0     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   mu+     nu_mu                           PHOTOS  ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   mu+  nu_mu       PHOTOS  ISGW2;
+0.000000   anti-D(2S)0 mu+  nu_mu  PHOTOS  ISGW2;
+0.000000   anti-D*(2S)0 mu+  nu_mu PHOTOS  ISGW2;
+0.001948   Xu0   mu+  nu_mu         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000520 K+      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001160 K*+     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+###
+Enddecay
+
+Decay B-
+##
+0.056800000 D*0     mu-     anti-nu_mu                      PHOTOS   HQET 0.77 1.33 0.92; #[Reconstructed PDG2011]
+0.022300000 D0      mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.0040   D_10  mu-  anti-nu_mu         PHOTOS   ISGW2;
+0.0024   D_0*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.0007   D'_10  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.0018   D_2*0  mu-  anti-nu_mu        PHOTOS    ISGW2;
+0.006100000 D*+     pi-     mu-     anti-nu_mu              PHOTOS   GOITY_ROBERTS; #[Reconstructed PDG2011]
+0.0003   D*0   pi0   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.0000   D+    pi-   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.0010   D0    pi0   mu-   anti-nu_mu  PHOTOS   GOITY_ROBERTS;
+0.000077000 pi0     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000037000 eta     mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000128000 rho0    mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000115000 omega   mu-     anti-nu_mu                      PHOTOS   ISGW2; #[Reconstructed PDG2011]
+0.000270   eta'   mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000000   D(2S)0 mu-  anti-nu_mu       PHOTOS   ISGW2;
+0.000000   D*(2S)0 mu-  anti-nu_mu      PHOTOS   ISGW2;
+0.001948   Xu0   mu-  anti-nu_mu         VUB 4.8 1.29 0.22 20 0.30 0.54 1.20 0.95 1.26 0.78 1.34 0.98 1.41 0.91 1.48 1.23 1.55 1.36 1.61 1.39 1.67 1.38 1.73 1.43 1.79 1.41 1.84 1.42 1.90 1.45 1.95 1.40 2.00 1.42 2.50 1.31 3.00 1.36 3.50 1.15 4.00 1.01 4.50 1.51;
+#
+0.000000520 K-      mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.000001160 K*-     mu+     mu-                             PHOTOS BTOSLLBALL; #[Reconstructed PDG2011]
+0.0000025 anti-Xsu  mu+   mu-   PHOTOS BTOXSLL 4.8 0.2 0.0 0.41;
+###
+Enddecay
+
+Decay B_s0
+###
+0.0210   D_s-     mu+    nu_mu        PHOTOS  ISGW2;
+0.0490   D_s*-    mu+    nu_mu        PHOTOS  ISGW2;
+0.0040   D_s1-    mu+    nu_mu        PHOTOS  ISGW2;
+0.0040   D_s0*-   mu+    nu_mu        PHOTOS  ISGW2;
+0.0070   D'_s1-   mu+    nu_mu        PHOTOS  ISGW2;
+0.0070   D_s2*-   mu+    nu_mu        PHOTOS  ISGW2;
+###
+0.000200    K-          mu+        nu_mu        PHOTOS  ISGW2;
+0.000300    K*-         mu+        nu_mu        PHOTOS  ISGW2;
+0.000300    K_1-        mu+        nu_mu        PHOTOS  ISGW2;
+0.000200    K'_1-       mu+        nu_mu        PHOTOS  ISGW2;
+#PR LHCb add Bs -> mu+ mu-
+0.0000000035 mu+        mu-                                PHSP;
+0.0000023   phi    mu+    mu-                  BTOSLLALI;
+###
+Enddecay
+
+Decay anti-B_s0
+###
+0.0210   D_s+     mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0490   D_s*+    mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0040   D_s1+    mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0040   D_s0*+   mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0070   D'_s1+   mu-    anti-nu_mu   PHOTOS  ISGW2;
+0.0070   D_s2*+   mu-    anti-nu_mu   PHOTOS  ISGW2;
+###
+0.000200    K+          mu-        anti-nu_mu        PHOTOS  ISGW2;
+0.000300    K*+         mu-        anti-nu_mu        PHOTOS  ISGW2;
+0.000300    K_1+        mu-        anti-nu_mu        PHOTOS  ISGW2;
+0.000200    K'_1+       mu-        anti-nu_mu        PHOTOS  ISGW2;
+###
+0.0000023   phi    mu-    mu+                  BTOSLLALI;
+Enddecay
+
+Decay Lambda_b0
+###
+0.050000000 Lambda_c+ mu-     anti-nu_mu                    PHSP; #[Reconstructed PDG2011]
+0.006300000 Lambda_c(2593)+ mu-     anti-nu_mu              PHSP; #[Reconstructed PDG2011]
+0.011000000 Lambda_c(2625)+ mu-     anti-nu_mu              PHSP; #[Reconstructed PDG2011]
+###
+0.056000000 Lambda_c+ pi+     pi-     mu-     anti-nu_mu    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+###
+Enddecay
+
+Decay anti-Lambda_b0
+###
+0.050000000 anti-Lambda_c- mu+     nu_mu                    PHSP; #[Reconstructed PDG2011]
+0.006300000 anti-Lambda_c(2593)- mu+     nu_mu              PHSP; #[Reconstructed PDG2011]
+0.011000000 anti-Lambda_c(2625)- mu+     nu_mu              PHSP; #[Reconstructed PDG2011]
+###
+0.056000000 anti-Lambda_c- pi-     pi+     mu+     nu_mu    PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay Xi_b-
+###
+0.05460    Xi_c0      mu-   anti-nu_mu                  PHSP;
+Enddecay
+
+Decay anti-Xi_b+
+###
+0.05460    anti-Xi_c0      mu+   nu_mu                  PHSP;
+Enddecay
+
+Decay Xi_b0
+###
+0.05460    Xi_c+      mu-   anti-nu_mu                  PHSP;
+Enddecay
+
+Decay anti-Xi_b0
+###
+0.05460    anti-Xi_c-      mu+   nu_mu                  PHSP;
+Enddecay
+
+Decay Omega_b-
+###
+0.05460    Omega_c0      mu-   anti-nu_mu               PHSP;
+Enddecay
+
+Decay anti-Omega_b+
+###
+0.05460    anti-Omega_c0      mu+   nu_mu               PHSP;
+Enddecay
+
+
+End
diff --git a/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIELECTRON.DEC b/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIELECTRON.DEC
new file mode 100644 (file)
index 0000000..419c989
--- /dev/null
@@ -0,0 +1,121 @@
+###
+Decay B0
+###
+0.000310000 psi(2S) K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000310000 psi(2S) K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.000610000 psi(2S) K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.0004     psi(2S)  K+  pi-          PHSP;
+0.0002     psi(2S)  K0  pi0          PHSP;
+0.0002     psi(2S)  K0  pi-  pi+     PHSP;
+0.0001     psi(2S)  K0  pi0  pi0     PHSP;
+0.0001     psi(2S)  K+  pi-  pi0     PHSP;
+0.0004     psi(2S)  K_10              PHSP;
+###
+0.000620000 psi(2S) K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay anti-B0
+###
+0.000310000 psi(2S) K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000310000 psi(2S) K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+0.000610000 psi(2S) anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.0004     psi(2S)  K-  pi+          PHSP;
+0.0002     psi(2S)  anti-K0   pi0          PHSP;
+0.0002     psi(2S)  anti-K0   pi+  pi-     PHSP;
+0.0001     psi(2S)  anti-K0   pi0  pi0     PHSP;
+0.0001     psi(2S)  K-  pi+  pi0     PHSP;
+0.0004     psi(2S)  anti-K_10              PHSP;
+###
+0.000620000 psi(2S) anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay B+
+###
+0.000646000 psi(2S) K+                                      SVS; #[Reconstructed PDG2011]
+0.000620000 psi(2S) K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.0004   psi(2S) K0  pi+                   PHSP;
+0.0002   psi(2S) K+  pi0                   PHSP;
+0.001900000 psi(2S) K+      pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.0001   psi(2S) K+  pi0  pi0              PHSP;
+0.0001   psi(2S) K0  pi+  pi0              PHSP;
+0.0004   psi(2S)  K_1+                     PHSP;
+###
+0.000025800 psi(2S) pi+                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay B-
+###
+0.000646000 psi(2S) K-                                      SVS; #[Reconstructed PDG2011]
+0.000620000 psi(2S) K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.0004   psi(2S) anti-K0   pi-                   PHSP;
+0.0002   psi(2S) K-  pi0                   PHSP;
+0.001900000 psi(2S) K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.0001   psi(2S) K-  pi0  pi0              PHSP;
+0.0001   psi(2S) anti-K0   pi-  pi0              PHSP;
+0.0004     psi(2S)  K_1-              PHSP;
+###
+0.000025800 psi(2S) pi-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay B_s0
+###                                       psi' = 0.34%  CLNS 94/1315
+0.000465    psi(2S)     eta'                               SVS;
+0.000235    psi(2S)     eta                                SVS;
+0.000680000 psi(2S) phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0003      psi(2S)     K-          K+                     PHSP;
+0.0003      psi(2S)     anti-K0     K0                     PHSP;
+0.0003      psi(2S)     K0          K-         pi+         PHSP;
+0.0003      psi(2S)     anti-K0     K0         pi0         PHSP;
+0.0003      psi(2S)     K-          K+         pi0         PHSP;
+0.00034   psi(2S) phi      pi+  pi-  PHSP;
+0.00034   psi(2S) phi      pi0  pi0  PHSP;
+0.0002    psi(2S) eta      pi+  pi-  PHSP;
+0.0002    psi(2S) eta      pi0  pi0  PHSP;
+0.0004    psi(2S) eta'     pi+  pi-  PHSP;
+0.0004    psi(2S) eta'     pi0  pi0  PHSP;
+0.0002    psi(2S) pi+      pi-       PHSP;
+0.0002    psi(2S) pi0      pi0       PHSP;
+####
+Enddecay
+
+Decay anti-B_s0
+###
+0.000465  psi(2S) eta'               SVS;
+0.000235  psi(2S) eta                SVS;
+0.000680000 psi(2S) phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0003    psi(2S) K-       K+        PHSP;
+0.0003    psi(2S) anti-K0  K0        PHSP;
+0.0003    psi(2S) anti-K0  K+    pi- PHSP;
+0.0003    psi(2S) anti-K0  K0    pi0 PHSP;
+0.0003    psi(2S) K-       K+    pi0 PHSP;
+0.00034   psi(2S) phi      pi+  pi-  PHSP;
+0.00034   psi(2S) phi      pi0  pi0  PHSP;
+0.0002    psi(2S) eta      pi+  pi-  PHSP;
+0.0002    psi(2S) eta      pi0  pi0  PHSP;
+0.0004    psi(2S) eta'     pi+  pi-  PHSP;
+0.0004    psi(2S) eta'     pi0  pi0  PHSP;
+0.0002    psi(2S) pi+      pi-       PHSP;
+0.0002    psi(2S) pi0      pi0       PHSP;
+###
+Enddecay
+
+Decay Lambda_b0
+###
+0.00038    Lambda0         psi(2S)                      PHSP;
+Enddecay
+
+Decay anti-Lambda_b0
+###
+0.00038    anti-Lambda0    psi(2S)                      PHSP;
+Enddecay
+
+
+Decay psi(2S)
+### from DECAY.DEC
+1.000 e+   e-                PHOTOS VLL;
+Enddecay
+
+End
diff --git a/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIMUON.DEC b/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIMUON.DEC
new file mode 100644 (file)
index 0000000..bc37258
--- /dev/null
@@ -0,0 +1,121 @@
+###
+Decay B0
+###
+0.000310000 psi(2S) K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000310000 psi(2S) K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+#
+0.000610000 psi(2S) K*0                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.0004     psi(2S)  K+  pi-          PHSP;
+0.0002     psi(2S)  K0  pi0          PHSP;
+0.0002     psi(2S)  K0  pi-  pi+     PHSP;
+0.0001     psi(2S)  K0  pi0  pi0     PHSP;
+0.0001     psi(2S)  K+  pi-  pi0     PHSP;
+0.0004     psi(2S)  K_10              PHSP;
+###
+0.000620000 psi(2S) K0                                      PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay anti-B0
+###
+0.000310000 psi(2S) K_S0                                    SVS; #[Reconstructed PDG2011]
+0.000310000 psi(2S) K_L0                                    SVS; #[Reconstructed PDG2011]
+#
+0.000610000 psi(2S) anti-K*0                                SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.0004     psi(2S)  K-  pi+          PHSP;
+0.0002     psi(2S)  anti-K0   pi0          PHSP;
+0.0002     psi(2S)  anti-K0   pi+  pi-     PHSP;
+0.0001     psi(2S)  anti-K0   pi0  pi0     PHSP;
+0.0001     psi(2S)  K-  pi+  pi0     PHSP;
+0.0004     psi(2S)  anti-K_10              PHSP;
+###
+0.000620000 psi(2S) anti-K0                                 PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay B+
+###
+0.000646000 psi(2S) K+                                      SVS; #[Reconstructed PDG2011]
+0.000620000 psi(2S) K*+                                     SVV_HELAMP PKHplus PKphHplus PKHzero PKphHzero PKHminus PKphHminus; #[Reconstructed PDG2011]
+0.0004   psi(2S) K0  pi+                   PHSP;
+0.0002   psi(2S) K+  pi0                   PHSP;
+0.001900000 psi(2S) K+      pi-     pi+                     PHSP; #[Reconstructed PDG2011]
+0.0001   psi(2S) K+  pi0  pi0              PHSP;
+0.0001   psi(2S) K0  pi+  pi0              PHSP;
+0.0004   psi(2S)  K_1+                     PHSP;
+###
+0.000025800 psi(2S) pi+                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay B-
+###
+0.000646000 psi(2S) K-                                      SVS; #[Reconstructed PDG2011]
+0.000620000 psi(2S) K*-                                     SVV_HELAMP PKHminus PKphHminus PKHzero PKphHzero PKHplus PKphHplus; #[Reconstructed PDG2011]
+0.0004   psi(2S) anti-K0   pi-                   PHSP;
+0.0002   psi(2S) K-  pi0                   PHSP;
+0.001900000 psi(2S) K-      pi+     pi-                     PHSP; #[Reconstructed PDG2011]
+0.0001   psi(2S) K-  pi0  pi0              PHSP;
+0.0001   psi(2S) anti-K0   pi-  pi0              PHSP;
+0.0004     psi(2S)  K_1-              PHSP;
+###
+0.000025800 psi(2S) pi-                                     PHSP;  #[New mode added] #[Reconstructed PDG2011]
+Enddecay
+
+Decay B_s0
+###                                       psi' = 0.34%  CLNS 94/1315
+0.000465    psi(2S)     eta'                               SVS;
+0.000235    psi(2S)     eta                                SVS;
+0.000680000 psi(2S) phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0003      psi(2S)     K-          K+                     PHSP;
+0.0003      psi(2S)     anti-K0     K0                     PHSP;
+0.0003      psi(2S)     K0          K-         pi+         PHSP;
+0.0003      psi(2S)     anti-K0     K0         pi0         PHSP;
+0.0003      psi(2S)     K-          K+         pi0         PHSP;
+0.00034   psi(2S) phi      pi+  pi-  PHSP;
+0.00034   psi(2S) phi      pi0  pi0  PHSP;
+0.0002    psi(2S) eta      pi+  pi-  PHSP;
+0.0002    psi(2S) eta      pi0  pi0  PHSP;
+0.0004    psi(2S) eta'     pi+  pi-  PHSP;
+0.0004    psi(2S) eta'     pi0  pi0  PHSP;
+0.0002    psi(2S) pi+      pi-       PHSP;
+0.0002    psi(2S) pi0      pi0       PHSP;
+####
+Enddecay
+
+Decay anti-B_s0
+###
+0.000465  psi(2S) eta'               SVS;
+0.000235  psi(2S) eta                SVS;
+0.000680000 psi(2S) phi                                     SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0; #[Reconstructed PDG2011]
+0.0003    psi(2S) K-       K+        PHSP;
+0.0003    psi(2S) anti-K0  K0        PHSP;
+0.0003    psi(2S) anti-K0  K+    pi- PHSP;
+0.0003    psi(2S) anti-K0  K0    pi0 PHSP;
+0.0003    psi(2S) K-       K+    pi0 PHSP;
+0.00034   psi(2S) phi      pi+  pi-  PHSP;
+0.00034   psi(2S) phi      pi0  pi0  PHSP;
+0.0002    psi(2S) eta      pi+  pi-  PHSP;
+0.0002    psi(2S) eta      pi0  pi0  PHSP;
+0.0004    psi(2S) eta'     pi+  pi-  PHSP;
+0.0004    psi(2S) eta'     pi0  pi0  PHSP;
+0.0002    psi(2S) pi+      pi-       PHSP;
+0.0002    psi(2S) pi0      pi0       PHSP;
+###
+Enddecay
+
+Decay Lambda_b0
+###
+0.00038    Lambda0         psi(2S)                      PHSP;
+Enddecay
+
+Decay anti-Lambda_b0
+###
+0.00038    anti-Lambda0    psi(2S)                      PHSP;
+Enddecay
+
+
+Decay psi(2S)
+### from DECAY.DEC
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
+End
diff --git a/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOELE.DEC b/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOELE.DEC
new file mode 100644 (file)
index 0000000..4443758
--- /dev/null
@@ -0,0 +1,15 @@
+#####
+Decay chi_c1
+1.0 J/psi   gamma                                   VVP 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+Enddecay
+
+Decay chi_c2
+1.0 gamma   J/psi                                   PHSP; #[Reconstructed PDG2011]
+Enddecay
+
+Decay J/psi
+1.000 e+   e-                PHOTOS VLL;
+Enddecay
+
+End
+
diff --git a/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOMUON.DEC b/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOMUON.DEC
new file mode 100644 (file)
index 0000000..2fd1e5d
--- /dev/null
@@ -0,0 +1,15 @@
+#####
+Decay chi_c1
+1.0 J/psi   gamma                                   VVP 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; #[Reconstructed PDG2011]
+Enddecay
+
+Decay chi_c2
+1.0 gamma   J/psi                                   PHSP; #[Reconstructed PDG2011]
+Enddecay
+
+Decay J/psi
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
+End
+
diff --git a/TEvtGen/EvtGen/DecayTable/DIELECTRON.DEC b/TEvtGen/EvtGen/DecayTable/DIELECTRON.DEC
new file mode 100644 (file)
index 0000000..d10a6c5
--- /dev/null
@@ -0,0 +1,47 @@
+###
+Decay rho0
+##to be checked
+1.000    e+     e-    PHOTOS        VLL;
+Enddecay
+
+Decay phi
+### from DECAY.DEC
+1.000   e+     e-    PHOTOS        VLL;
+Enddecay
+
+Decay eta
+### to be checked
+1.000    e+     e-        PHSP; 
+Enddecay
+
+Decay omega
+### to be checked
+1.000    e+     e-    PHOTOS        VLL;
+Enddecay
+
+Decay J/psi
+### from DECAY.DEC
+1.000 e+   e-                PHOTOS VLL;
+Enddecay
+
+Decay psi(2S)
+### from DECAY.DEC
+1.000 e+   e-                PHOTOS VLL;
+Enddecay
+
+Decay Upsilon
+### from DECAY.DEC
+1.000 e+   e-                PHOTOS VLL;
+Enddecay
+
+Decay Upsilon(2S)
+### from DECAY.DEC
+1.000 e+   e-                PHOTOS VLL;
+Enddecay
+
+Decay Upsilon(3S)
+### from DECAY.DEC
+1.000 e+   e-                PHOTOS VLL;
+Enddecay
+
+End
diff --git a/TEvtGen/EvtGen/DecayTable/DIMUON.DEC b/TEvtGen/EvtGen/DecayTable/DIMUON.DEC
new file mode 100644 (file)
index 0000000..3bc7555
--- /dev/null
@@ -0,0 +1,47 @@
+###
+Decay rho0
+##to be checked
+1.000    mu+     mu-    PHOTOS        VLL;
+Enddecay
+
+Decay phi
+### from DECAY.DEC
+1.000   mu+     mu-    PHOTOS        VLL;
+Enddecay
+
+Decay eta
+### to be checked
+1.000    mu+     mu-        PHSP; 
+Enddecay
+
+Decay omega
+### to be checked
+1.000    mu+     mu-    PHOTOS        VLL;
+Enddecay
+
+Decay J/psi
+### from DECAY.DEC
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
+Decay psi(2S)
+### from DECAY.DEC
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
+Decay Upsilon
+### from DECAY.DEC
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
+Decay Upsilon(2S)
+### from DECAY.DEC
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
+Decay Upsilon(3S)
+### from DECAY.DEC
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
+End
diff --git a/TEvtGen/EvtGen/DecayTable/JPSIDIMUON.DEC b/TEvtGen/EvtGen/DecayTable/JPSIDIMUON.DEC
new file mode 100644 (file)
index 0000000..af096f7
--- /dev/null
@@ -0,0 +1,6 @@
+###
+Decay J/psi
+### from DECAY.DEC
+1.000 mu+   mu-                PHOTOS VLL;
+Enddecay
+
diff --git a/TEvtGen/EvtGen/EvtCheckDecays.cxx b/TEvtGen/EvtGen/EvtCheckDecays.cxx
deleted file mode 100644 (file)
index ba6e52b..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed 
-//      for the BaBar collaboration.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Module: EvtCheckDecays
-//
-// Description:  Holds code to conduct various checks on the 
-//      EvtDecayTable::decaytable()
-//
-// Modification history:
-//      Abi Soffer             Nov 29, 2007, created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-
-#include "EvtGen/EvtCheckDecays.hh"
-
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtDecayBase.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenBase/EvtId.hh"
-#include <vector>
-#include <string.h>
-#include <iostream>
-using namespace std;
-
-
-
-void EvtCheckDecays::checkConj(bool compareArguments) {
-  std::ostream & str = report(INFO, "EvtGen: checkConj") 
-    << "Checking CP-conjugation of all decays:" << endl;
-
-  const std::vector<EvtParticleDecayList> & decaytable
-    = EvtDecayTable::decaytable();
-
-  vector<unsigned int> skipEntries;
-
-  // Loop over the entris (=particles) in the decay table:
-  for(size_t e = 0; e < decaytable.size(); ++e){
-    bool diffFound = false;
-
-    // Skip entries that were already found to be conjugates of other
-    // particles:
-    bool skipThis = false;
-    for (size_t s = 0; s < skipEntries.size(); ++s) {
-      if (skipEntries[s] == e) {
-       skipThis = true;
-       break;
-      }
-    }
-    if (skipThis) {
-      continue;
-    }
-
-    // Start working with this particle's decays list:
-    const EvtParticleDecayList & decList = decaytable[e];
-
-    if (decList.getNMode() == 0) { // an undecaying entry in the table. ignore:
-      continue;
-    }
-
-    // Get the decaying particle's ID (somewhat non-intuitively, this
-    // is available from the individual decays, but not the decay list):
-    const EvtId parentId = decList.getDecayModel(0)->getParentId();
-
-    if (selfConj(parentId)) { // ignore self-conjugate particles:
-      continue;
-    }
-
-    // Find the charge conjugate particle by looping over decaytable again:
-    const EvtParticleDecayList * decList2 = 0;
-    bool conjFound = false;
-
-    // Need to create parentId2 out of the loop in which it gets filled witn
-    // meaningful information. Since EVtId has no argumentless constructor,
-    // initialize it to parentId. This won't cause logic problems, since
-    // the variable conjFound is used to determine if parentId2 is meaningful:
-    EvtId parentId2 = parentId;
-
-    // the loop starts at e + 1, so as not to double count:
-    for(size_t e2 = e + 1; e2 < EvtPDL::entries(); ++e2){ 
-      decList2 = &(decaytable[e2]);
-      
-      if (decList2->getNMode() == 0) { // an undecaying entry. ignore:
-       continue;
-      }
-
-      parentId2 = decList2->getDecayModel(0)->getParentId();
-      if (parentId2.isConjugate(parentId)) { 
-       conjFound = true;
-       skipEntries.push_back(e2);
-       break; // found the conjugate. decList2 is the conj of decList
-      }
-    }
-
-    // Check if conjugate was found:
-    if (false == conjFound) {
-      report(INFO, "EvtGen: checkConj") 
-       << "No conjugate particle decays found for " << EvtPDL::name(parentId) 
-       << endl;
-    }
-    else { // conjugate found. 
-      const std::string name  = EvtPDL::name(parentId);
-      const std::string name2 = EvtPDL::name(parentId2);
-
-      // Analyze the two decays and compare them:
-      // First, compare the number of decay modes:
-      if (decList.getNMode() != decList2->getNMode()) {
-       report(INFO, "EvtGen: checkConj") 
-         << "*** Unequal numbers of decays: " 
-         << decList.getNMode() << " for " << name
-         << " and " << decList2->getNMode() << " for " << name2
-         << "." << endl;
-
-       // Find the particle with the more decays:
-       const EvtParticleDecayList * decListLonger = &decList;
-       string nameLonger = name;
-       string nameShorter = name2;
-       if (decList.getNMode() < decList2->getNMode()) {
-         decListLonger = decList2;
-         nameLonger = name2;
-         nameShorter = name;
-       }
-
-       const int ndiff = abs(decList.getNMode() - decList2->getNMode());
-       str << " The last " << ndiff  << " " << nameLonger
-           << " decays (the ones missing from " << nameShorter
-           << ", assuming" << endl
-           << " there are no other problems) are " << endl;
-
-       for (int m = decListLonger->getNMode() - ndiff; 
-            m < decListLonger->getNMode(); 
-            ++m) {
-         const EvtDecayBase * dec  = decListLonger->getDecayModel(m);
-         str << "  ";
-         dec->printInfo();
-       }
-       
-       diffFound = true;
-      }      
-      
-      // Compare each decay mode. Expect them to be entered in the same order:
-      for (int m=0; m < decList.getNMode() && m < decList2->getNMode(); ++m) {
-       const EvtDecayBase * dec  = decList.getDecayModel(m);
-       const EvtDecayBase * dec2 = decList2->getDecayModel(m);
-
-       // Compare BRs:
-       if (dec->getBranchingFraction() != dec2->getBranchingFraction()) {
-         report(INFO, "EvtGen: checkConj") 
-           << "*** Unequal BRs: " << endl << "  " 
-           << dec->getBranchingFraction() << " for decay ";
-         dec->printInfo();
-         str << "O and " << endl << "  "
-             << dec2->getBranchingFraction() << " for decay ";
-         dec2->printInfo();
-         str << endl;
-         diffFound = true;
-       }
-       
-       // Compare number of daughters:
-       if (dec->getNDaug() != dec2->getNDaug()) {
-         report(INFO, "EvtGen: checkConj") 
-           << "*** Unequal #'s of daughters: " << endl << "  " 
-           << dec->getNDaug() << " for decay ";
-         dec->printInfo();
-         str << " and " << endl << "  "
-             << dec2->getNDaug() << " for decay ";
-         dec2->printInfo();
-         str << endl;
-         diffFound = true;
-       }
-
-
-       // Compare daughter ID's. Here we allow for the daughter order 
-       // not to match, since it's a common practice to write DECAY.DEC
-       // without much regard to carefully conjugating the daughter order:
-
-       vector<int> usedDtrIndices; // to avoid double-considering a dtr2
-       for (int d = 0; d < dec->getNDaug(); ++d) { // loop on dtrs of dec
-         const EvtId dtr = dec->getDaug(d);
-         const bool sConj = selfConj(dtr);
-         
-         bool dtrMatchFound = false;
-         
-         for (int d2 = 0; d2 < dec2->getNDaug(); ++d2) { // on dtrs of dec2
-           // Skip if this index has been already found for this decay:
-           bool skipDtr = false;
-           for (size_t s = 0; s < usedDtrIndices.size(); ++s) {
-             if (usedDtrIndices[s] == d2) {
-               skipDtr = true;
-               break;
-             }
-             if (skipDtr) {
-               continue; // to next value of d2
-             }
-           } // end loop on s
-
-           const EvtId dtr2 = dec2->getDaug(d2);
-           // See if there is a matching daughter: Either dtr is
-           // self-conjugate and we find an identical particle among
-           // dec2's daughters, or it is no self-conjugate and we
-           // find its conjugate:
-           if (dtr.isConjugate(dtr2)                && !sConj ||
-               dec->getDaug(d) == dec2->getDaug(d2) &&  sConj) {
-             dtrMatchFound = true; 
-             usedDtrIndices.push_back(d2); // don't consider this d2 again
-             break; // out of d2 loop
-           }
-         } // end d2 loop 
-
-         if (false == dtrMatchFound) {
-           // Couldn't find a match for dtr among the daughters of dec2, so:
-           report(INFO, "EvtGen: checkConj") 
-             << "*** Daughter #" << d << " in decay"
-             << endl << "  "; 
-           dec->printInfo();
-           str << " has no conjugate in decay " << endl << "  ";
-           dec2->printInfo();
-           str << endl;
-           diffFound = true;
-         }
-       }     
-
-       // Compare models:
-       if (dec->getModelName() != dec2->getModelName()) {
-         report(INFO, "EvtGen: checkConj") 
-           << "*** Unequal model names in decays: " << endl << "  ";
-         dec->printInfo();
-         str << " and " << endl << "  ";
-         dec2->printInfo();
-         str << endl;
-         diffFound = true;
-       }
-
-       // Compare numbers of arguments:
-       if (dec->getNArg() != dec2->getNArg()) {
-         report(INFO, "EvtGen: checkConj") 
-           << "*** Unequal numbers of arguments: " << endl << "  "
-           << dec->getNArg() << " in decay ";    
-         dec->printInfo();
-         str << " and " << endl << "  "
-             << dec2->getNArg() << " in decay ";
-         dec2->printInfo();
-           str << endl;
-           diffFound = true;
-       }
-
-       // Argument value comparison may not always be desired, since
-       // the argument values aren't always stored by EvtDecayBase, causing
-       // many printouts:
-       if (compareArguments) { 
-         // Compare argument values. First, check if we can tell
-         // the numbers of arguments correctly:
-         if ( dec->getNArg() != dec->getNStoredArg() ||
-              dec2->getNArg() != dec2->getNStoredArg()) {
-           report(INFO, "EvtGen: checkConj") 
-             << "=== Not sure about number of arguments in decay" 
-             << endl << "  ";
-           dec->printInfo();
-           str << " and " << endl << "  ";
-           dec2->printInfo();
-           str << "  Argument value comparison may not be complete." << endl;
-         }
-         
-         // Now do the actual argument values comparison:
-         for (int a = 0; a < dec->getNArg() && a < dec2->getNArg()
-                && a < dec->getNStoredArg() && a < dec2->getNStoredArg(); 
-              ++a) {
-           if (dec->getStoredArg(a) != dec2->getStoredArg(a)) {
-             report(INFO, "EvtGen: checkConj") 
-               << "*** Unequal arguments #: " << a << ":" 
-               << endl << "  " 
-               << dec->getStoredArg(a) << " for decay ";
-             dec->printInfo();
-             str << " and " << endl << "  "
-                 << dec2->getStoredArg(a) << " for decay ";
-             dec2->printInfo();
-             str << endl;
-             diffFound = true;
-           } // end if arguments unequal
-         } // end loop on arguments
-       } // end if to compare arguments
-      } // end loop on decays
-    } // end if conjugate found
-
-    if (diffFound) { // mark diff between particle decays
-      report(INFO, "EvtGen: checkConj") 
-       << "-------------------------------------------------------" << endl;
-    }
-
-  } // end loop on particle entries
-}      
-      
-
-
-bool EvtCheckDecays::selfConj(const EvtId & id) {
-  string name = EvtPDL::name(id);
-  if (name == "vpho" ||
-      name == "gamma" ||
-      name == "g" ||
-      name == "specflav" ||
-      name == "phasespa" ||
-      name == "pi0" ||
-      name == "pi(2S)0" ||
-      name == "eta" ||
-      name == "eta(2S)" ||
-      name == "eta(1405)" ||
-      name == "eta(1475)" ||
-      name == "phi(1680)" ||
-      name == "eta'" ||
-      name == "rho0" ||
-      name == "rho(2S)0" ||
-      name == "rho(3S)0" ||
-      name == "omega" ||
-      name == "phi" ||
-      name == "a_00" ||
-      name == "f_0" ||
-      name == "f'_0" ||
-      name == "b_10" ||
-      name == "h_1" ||
-      name == "h'_1" ||
-      name == "a_10" ||
-      name == "f_1" ||
-      name == "f'_1" ||
-      name == "a_10" ||
-      name == "a_20" ||
-      name == "f_2" ||
-      name == "f_0(1500)" ||
-      name == "f'_2" ||
-      name == "K_S0" ||
-      name == "K_L0" ||
-      name == "eta_c" ||
-      name == "eta_c(2S)" ||
-      name == "J/psi" ||
-      name == "psi(2S)" ||
-      name == "psi(3770)" ||
-      name == "psi(4040)" ||
-      name == "psi(4160)" ||
-      name == "psi(4415)" ||
-      name == "h_c" ||
-      name == "chi_c0" ||
-      name == "chi_c1" ||
-      name == "chi_c2" ||
-      name == "eta_b" ||
-      name == "eta_b(2S)" ||
-      name == "eta_b(3S)" ||
-      name == "Upsilon" ||
-      name == "Upsilon(2S)" ||
-      name == "Upsilon(3S)" ||
-      name == "Upsilon(4S)" ||
-      name == "Upsilon(5S)" ||
-      name == "h_b" ||
-      name == "h_b(2P)" ||
-      name == "h_b(3P)" ||
-      name == "chi_b0" ||
-      name == "chi_b1" ||
-      name == "chi_b2" ||
-      name == "chi_b0(2P)" ||
-      name == "chi_b1(2P)" ||
-      name == "chi_b2(2P)" ||
-      name == "chi_b0(3P)" ||
-      name == "chi_b1(3P)" ||
-      name == "chi_b2(3P)" ||
-      name == "eta_b2(1D)" ||
-      name == "eta_b2(2D)" ||
-      name == "Upsilon_1(1D)" ||
-      name == "Upsilon_2(1D)" ||
-      name == "Upsilon_3(1D)" ||
-      name == "Upsilon_1(2D)" ||
-      name == "Upsilon_2(2D)" ||
-      name == "Upsilon_3(2D)" ||
-      name == "Xu0" ||
-      name == "sigma_0") {
-    return true;
-  }
-
-  return false;
-}
diff --git a/TEvtGen/EvtGen/EvtCheckDecays.hh b/TEvtGen/EvtGen/EvtCheckDecays.hh
deleted file mode 100644 (file)
index b6c851a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed 
-//      for the BaBar collaboration.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Module: EvtCheckDecays
-//
-// Description:  Holds code to conduct various checks on the 
-//      EvtDecayTable::decaytable()
-//
-// Modification history:
-//      Abi Soffer             Nov 29, 2007, created
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTCHECKDECAYS
-#define EVTCHECKDECAYS
-
-class EvtId;
-
-class EvtCheckDecays {
-public:
-// check CP conservation in the decay BRs, daughters, and models:
-  static void checkConj(bool compareArguments = false);  
-
-  // Used by checkConj() to identify self-conjugate particles:
-  static bool selfConj(const EvtId & id);
-
-private:
-};
-
-#endif
diff --git a/TEvtGen/EvtGen/EvtGen.cpp b/TEvtGen/EvtGen/EvtGen.cpp
new file mode 100644 (file)
index 0000000..558c7db
--- /dev/null
@@ -0,0 +1,203 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen.cc
+//
+// Description: Main class to provide user interface to EvtGen.
+//
+// Modification history:
+//
+//    RYD     March 24, 1998        Module created
+//    JBack   June 2011             Added HepMC event interface
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGen/EvtGen.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtDecayTable.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtRandom.hh"
+#include "EvtGenBase/EvtRandomEngine.hh"
+#include "EvtGenBase/EvtSimpleRandomEngine.hh"
+#include "EvtGenBase/EvtParticleFactory.hh"
+#include "EvtGenModels/EvtModelReg.hh"
+#include "EvtGenBase/EvtStatus.hh"
+#include "EvtGenBase/EvtAbsRadCorr.hh"
+#include "EvtGenBase/EvtRadCorr.hh"
+#include "EvtGenBase/EvtCPUtil.hh"
+#include "EvtGenBase/EvtHepMCEvent.hh"
+
+#include "EvtGenModels/EvtNoRadCorr.hh"
+
+#include <cstdlib>
+#include <fstream>
+#include <string>
+
+using std::endl;
+using std::fstream;
+using std::ifstream;
+
+EvtGen::~EvtGen(){
+
+  //This is a bit ugly, should not do anything
+  //in a destructor. This will fail if EvtGen is made a static
+  //because then this destructor might be called _after_
+  //the destruction of objects that it depends on, e.g., EvtPDL.
+
+  if (getenv("EVTINFO")){
+    EvtDecayTable::getInstance()->printSummary();
+  }
+
+}
+
+EvtGen::EvtGen(const char* const decayName,
+              const char* const pdtTableName,
+              EvtRandomEngine* randomEngine,
+              EvtAbsRadCorr* isrEngine,
+              const std::list<EvtDecayBase*>* extraModels,
+              int mixingType, bool useXml){
+
+
+  report(INFO,"EvtGen") << "Initializing EvtGen"<<endl;
+
+  if (randomEngine==0){
+    static EvtSimpleRandomEngine defaultRandomEngine;
+    EvtRandom::setRandomEngine(&defaultRandomEngine);
+    report(INFO,"EvtGen") <<"No random engine given in "
+                         <<"EvtGen::EvtGen constructor, "
+                         <<"will use default EvtSimpleRandomEngine."<<endl;
+  }
+  else{
+    EvtRandom::setRandomEngine(randomEngine);    
+  }
+
+  report(INFO,"EvtGen") << "Storing known decay models"<<endl;
+  EvtModelReg dummy(extraModels);
+
+  report(INFO,"EvtGen") << "Main decay file name  :"<<decayName<<endl;
+  report(INFO,"EvtGen") << "PDT table file name   :"<<pdtTableName<<endl;
+  
+  _pdl.readPDT(pdtTableName);
+
+  if(useXml) {
+    EvtDecayTable::getInstance()->readXMLDecayFile(decayName,false);
+  } else {
+    EvtDecayTable::getInstance()->readDecayFile(decayName,false);
+  }
+
+  _mixingType = mixingType;
+  report(INFO,"EvtGen") << "Mixing type integer set to "<<_mixingType<<endl;
+  EvtCPUtil::getInstance()->setMixingType(_mixingType);
+
+  // Set the radiative correction engine
+
+  if (isrEngine != 0) {
+
+    EvtRadCorr::setRadCorrEngine(isrEngine);
+
+  } else {
+
+    // Owing to the pure abstract interface, we still need to define a concrete 
+    // implementation of a radiative correction engine. Use one which does nothing.
+    EvtAbsRadCorr* noRadCorr = new EvtNoRadCorr();
+    EvtRadCorr::setRadCorrEngine(noRadCorr);
+
+  }
+
+  report(INFO,"EvtGen") << "Done initializing EvtGen"<<endl;
+
+}
+
+
+void EvtGen::readUDecay(const char* const uDecayName, bool useXml){
+
+  ifstream indec;
+
+  if ( uDecayName[0] == 0) {
+    report(INFO,"EvtGen") << "Is not reading a user decay file!"<<endl;
+  }
+  else{  
+    indec.open(uDecayName);
+    if (indec) {
+      if(useXml) {
+        EvtDecayTable::getInstance()->readXMLDecayFile(uDecayName,true);
+      } else {
+        EvtDecayTable::getInstance()->readDecayFile(uDecayName,true);
+      }
+    }    
+    else{
+      
+      report(INFO,"EvtGen") << "Can not find UDECAY file '"
+                           <<uDecayName<<"'.  Stopping"<<endl;
+      ::abort();
+    }
+  }
+  
+}
+
+EvtHepMCEvent* EvtGen::generateDecay(int PDGId, EvtVector4R refFrameP4,
+                                    EvtVector4R translation,
+                                    EvtSpinDensity* spinDensity) {
+
+  EvtParticle* theParticle(0);
+
+  if (spinDensity == 0 ){
+    theParticle = EvtParticleFactory::particleFactory(EvtPDL::evtIdFromStdHep(PDGId),
+                                                     refFrameP4);
+  } else {
+    theParticle = EvtParticleFactory::particleFactory(EvtPDL::evtIdFromStdHep(PDGId),
+                                                     refFrameP4, *spinDensity);
+  }
+
+  generateDecay(theParticle);
+  EvtHepMCEvent* hepMCEvent = new EvtHepMCEvent();
+  hepMCEvent->constructEvent(theParticle, translation);
+
+  theParticle->deleteTree();
+
+  return hepMCEvent;
+
+}
+
+void EvtGen::generateDecay(EvtParticle *p){
+
+  int times=0;
+  do{
+    times+=1;
+    EvtStatus::initRejectFlag();
+
+    p->decay();
+    //ok then finish.
+    if ( EvtStatus::getRejectFlag()==0 ) { 
+      times=0;
+    }
+    else{   
+      for (size_t ii=0;ii<p->getNDaug();ii++){
+       EvtParticle *temp=p->getDaug(ii);
+       temp->deleteTree();
+      }
+      p->resetFirstOrNot();
+      p->resetNDaug();
+      
+    }
+
+    if ( times==10000) {
+      report(ERROR,"EvtGen") << "Your event has been rejected 10000 times!"<<endl;
+      report(ERROR,"EvtGen") << "Will now abort."<<endl;
+      ::abort();
+      times=0;
+    }
+  } while (times);
+
+}
diff --git a/TEvtGen/EvtGen/EvtGen.cxx b/TEvtGen/EvtGen/EvtGen.cxx
deleted file mode 100644 (file)
index f2e7102..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtGen.cc
-//
-// Description: Main class to provide user interface to EvtGen.
-//
-// Modification history:
-//
-//    RYD     March 24, 1998        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include <stdio.h>
-#include <fstream>
-#include <math.h>
-#include "EvtGenBase/EvtComplex.hh"
-#include <stdlib.h>
-#include "EvtGen/EvtGen.hh"
-#include "EvtGenBase/EvtVector4R.hh"
-#include "EvtGenBase/EvtVectorParticle.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtScalarParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtStdHep.hh"
-#include "EvtGenBase/EvtSecondary.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenBase/EvtId.hh"
-#include "EvtGenBase/EvtRandom.hh"
-#include "EvtGenBase/EvtRandomEngine.hh"
-#include "EvtGenBase/EvtSimpleRandomEngine.hh"
-#include "EvtGenBase/EvtParticleFactory.hh"
-//#include "CLHEP/Vector/LorentzVector.h"
-#include "TLorentzVector.h"
-#include "EvtGenModels/EvtModelReg.hh"
-#include "EvtGenBase/EvtStatus.hh"
-#include "EvtGenBase/EvtAbsRadCorr.hh"
-#include "EvtGenBase/EvtRadCorr.hh"
-#include "EvtGenModels/EvtPHOTOS.hh"
-using std::endl;
-using std::fstream;
-using std::ifstream;
-
-
-extern "C" void begevtgenstore_(int *,int *,int *,int *,
-                               int *,int *,int *,int *,int *,
-                                double *,double *,double *, 
-                                double *,double *,double *, 
-                                double *,double *,double *);
-
-extern "C" {
-extern void evtgen_(float svertex[3],float *e_cms,float *beta_zs,
-                    int *mode);
-}
-
-EvtGen::~EvtGen(){
-
-  //This is a bit uggly, should not do anything
-  //in a destructor. This will fail if EvtGen is made a static
-  //because then this destructor might be called _after_
-  //the destructoin of objects that it depends on, e.g., EvtPDL.
-
-  if (getenv("EVTINFO")){
-    EvtDecayTable::printSummary();
-  }
-
-}
-
-EvtGen::EvtGen(const char* const decayName,
-              const char* const pdtTableName,
-              EvtRandomEngine* randomEngine,
-              EvtAbsRadCorr* isrEngine,
-              const std::list<EvtDecayBase*>* extraModels){
-
-
-  report(INFO,"EvtGen") << "Initializing EvtGen"<<endl;
-
-  report(INFO,"EvtGen") << "Storing known decay models"<<endl;
-  EvtModelReg dummy(extraModels);
-
-  report(INFO,"EvtGen") << "Main decay file name  :"<<decayName<<endl;
-  report(INFO,"EvtGen") << "PDT table file name   :"<<pdtTableName<<endl;
-  
-  report(INFO,"EvtGen") << "Initializing RadCorr=PHOTOS"<<endl;
-  if (isrEngine==0){
-    static EvtPHOTOS defaultRadCorrEngine;
-    EvtRadCorr::setRadCorrEngine(&defaultRadCorrEngine);
-  }
-  else{
-    EvtRadCorr::setRadCorrEngine(isrEngine);    
-  }
-
-  _pdl.readPDT(pdtTableName);
-
-  EvtDecayTable::readDecayFile(decayName,false);
-
-  if (randomEngine==0){
-    static EvtSimpleRandomEngine defaultRandomEngine;
-    EvtRandom::setRandomEngine((EvtRandomEngine*)&defaultRandomEngine);
-    report(INFO,"EvtGen") <<"No random engine given in "
-                         <<"EvtGen::EvtGen constructor, "
-                         <<"will use default EvtSimpleRandomEngine."<<endl;
-  }
-  else{
-    EvtRandom::setRandomEngine(randomEngine);    
-  }
-
-  report(INFO,"EvtGen") << "Done initializing EvtGen"<<endl;
-
-}
-
-
-void EvtGen::readUDecay(const char* const uDecayName){
-
-  ifstream indec;
-
-  if ( uDecayName[0] == 0) {
-    report(INFO,"EvtGen") << "Is not reading a user decay file!"<<endl;
-  }
-  else{  
-    indec.open(uDecayName);
-    if (indec) {
-      EvtDecayTable::readDecayFile(uDecayName,true);
-    }    
-    else{
-      
-      report(INFO,"EvtGen") << "Can not find UDECAY file '"
-                           <<uDecayName<<"'.  Stopping"<<endl;
-      ::abort();
-    }
-  }
-  
-}
-
-
-void EvtGen::generateDecay(int stdhepid, 
-                          EvtVector4R P, 
-                          EvtVector4R D,
-                          EvtStdHep *evtStdHep,
-                          EvtSpinDensity *spinDensity ){
-
-  EvtParticle *p;
-
-  if(spinDensity==0){    
-    p=EvtParticleFactory::particleFactory(EvtPDL::evtIdFromStdHep(stdhepid),P);
-  }
-  else{
-    p=EvtParticleFactory::particleFactory(EvtPDL::evtIdFromStdHep(stdhepid),
-                                         P,*spinDensity);
-  }
-
-  generateDecay(p);
-  //  p->Decay();
-
-  evtStdHep->init();
-
-  p->makeStdHep(*evtStdHep);
-  
-  evtStdHep->translate(D);
-  
-  p->deleteTree();
-
-
-}
-
-void EvtGen::generateDecay(EvtParticle *p){
-
-  int times=0;
-  do{
-    times+=1;
-    EvtStatus::initRejectFlag();
-
-    p->decay();
-    //ok then finish.
-    if ( EvtStatus::getRejectFlag()==0 ) { 
-      times=0;
-    }
-    else{   
-      for (size_t ii=0;ii<p->getNDaug();ii++){
-       EvtParticle *temp=p->getDaug(ii);
-       temp->deleteTree();
-      }
-      p->resetFirstOrNot();
-      p->resetNDaug();
-      
-    }
-
-    if ( times==10000) {
-      report(ERROR,"EvtGen") << "Your event has been rejected 10000 times!"<<endl;
-      report(ERROR,"EvtGen") << "Will now abort."<<endl;
-      ::abort();
-      times=0;
-    }
-  } while (times);
-
-}
-
-
-
-//void EvtGen::generateEvent(int stdhepid,CLHEP::HepLorentzVector P,CLHEP::HepLorentzVector D){
-void EvtGen::generateEvent(int stdhepid,TLorentzVector P,TLorentzVector D){
-  EvtParticle *root_part;
-  EvtVectorParticle *vector_part;
-  
-  vector_part=new EvtVectorParticle;
-  EvtVector4R p_init;
-
-  //p_init.set(P.t(),P.x(),P.y(),P.z());
-  p_init.set(P.E(),P.Px(),P.Py(),P.Pz());
-  vector_part->init(EvtPDL::evtIdFromStdHep(stdhepid),p_init);
-  
-  root_part=(EvtParticle *)vector_part;
-  
-  root_part->setVectorSpinDensity();      
-
-  generateEvent(root_part,D);
-
-  root_part->deleteTree();  
-
-}
-
-//void EvtGen::generateEvent(EvtParticle *root_part,CLHEP::HepLorentzVector D){
-void EvtGen::generateEvent(EvtParticle *root_part,TLorentzVector D){
-  int i;  
-  
-  static int nevent=0;
-  
-  nevent++;  
-
-  static EvtStdHep evtstdhep;
-  //  static EvtSecondary evtsecondary;
-
-  int j;
-  int istat;
-  int partnum;
-  double px,py,pz,e,m;
-  double x,y,z,t;
-
-  EvtVector4R p4,x4;
-    
-  generateDecay(root_part);
-  //  root_part->Decay();
-  
-  int          npart=0;
-  
-  EvtId        list_of_stable[10];
-  EvtParticle* stable_parent[10];
-    
-    
-  list_of_stable[0]=EvtId(-1,-1);
-  stable_parent[0]=0;
-
-  evtstdhep.init();
-  //  evtsecondary.init();
-  // root_part->makeStdHep(evtstdhep,evtsecondary,list_of_stable);
-  root_part->makeStdHep(evtstdhep);
-
-  //report(INFO,"EvtGen") << evtstdhep;
-  //report(INFO,"EvtGen") << evtsecondary;
-  
-  npart=evtstdhep.getNPart();
-
-  for(i=0;i<evtstdhep.getNPart();i++){
-
-    j=i+1;
-
-    int jmotherfirst=evtstdhep.getFirstMother(i)+1;
-    int jmotherlast=evtstdhep.getLastMother(i)+1;
-    int jdaugfirst=evtstdhep.getFirstDaughter(i)+1;
-    int jdauglast=evtstdhep.getLastDaughter(i)+1;
-
-    partnum=evtstdhep.getStdHepID(i);
-
-    istat=evtstdhep.getIStat(i);
-
-    p4=evtstdhep.getP4(i);
-    x4=evtstdhep.getX4(i);
-      
-    px=p4.get(1);
-    py=p4.get(2);
-    pz=p4.get(3);
-    e=p4.get(0);
-         
-    x=x4.get(1)+D.X();
-    y=x4.get(2)+D.Y();
-    z=x4.get(3)+D.Z();
-    t=x4.get(0)+D.T();
-      
-    m=p4.mass();
-
-    begevtgenstore_(&j,&nevent,&npart,&istat,
-                   &partnum,&jmotherfirst,&jmotherlast,
-                   &jdaugfirst,&jdauglast,
-                   &px,&py,&pz,&e,
-                   &m,&x,&y,&z,&t);
-  }
-
-}
-
-
-
-
-
-
-
-
-
index c6416e6cbe9e07e9775d9e4d5163c1ff391e3745..0ff6700aa60240e0e4171870d860d237c5c60f7d 100644 (file)
 //                               and hold on to it untill done generating
 //                               events. This class will now hold data used
 //                               for the lifetime of the generator.
+//    JBack   June 2011          Added HepMC event interface.
+//
 //------------------------------------------------------------------------
 
 #ifndef EVTGEN_HH
 #define EVTGEN_HH
 
 #include "EvtGenBase/EvtPDL.hh"
-#include "TLorentzVector.h"
-#include "EvtGenBase/EvtVector4R.hh"
-//#include "CLHEP/Vector/LorentzVector.h"
 
 #include <list>
 
 class EvtParticle;
 class EvtRandomEngine;
-//class EvtVector4R;
+class EvtVector4R;
 class EvtStdHep;
 class EvtSpinDensity;
 class EvtAbsRadCorr;
 class EvtDecayBase;
-
-//#ifdef NOCLHEPNAMESPACE
-//namespace CLHEP {
-//typedef HepLorentzVector HepLorentzVector ;
-//}
-//#endif
+class EvtHepMCEvent;
 
 class EvtGen{
 
@@ -55,26 +49,23 @@ public:
 
   EvtGen(const char* const decayName,const char* const pdtTableName,
         EvtRandomEngine* randomEngine=0, EvtAbsRadCorr *isrEngine=0,
-        const std::list<EvtDecayBase*>* extraModels=0);
+        const std::list<EvtDecayBase*>* extraModels=0,
+        int mixingType = 1, bool useXml = false);
 
   ~EvtGen();
 
-  void readUDecay(const char* const udecay_name);
+  void readUDecay(const char* const udecay_name, bool useXml = false);
 
-  void generateDecay(int stdhepid, EvtVector4R P, EvtVector4R D,
-                    EvtStdHep *evtStdHep,EvtSpinDensity *spinDensity=0);
+  EvtHepMCEvent* generateDecay(int PDGid, EvtVector4R refFrameP4,
+                              EvtVector4R translation,
+                              EvtSpinDensity* spinDensity = 0);
 
   void generateDecay(EvtParticle *p);
 
-  //These two methods are obsolete
-  //void generateEvent(int stdhepid, CLHEP::HepLorentzVector P, CLHEP::HepLorentzVector D);
-  void generateEvent(int stdhepid, TLorentzVector P, TLorentzVector D);
-  //void generateEvent(EvtParticle *p, CLHEP::HepLorentzVector D);
-  void generateEvent(EvtParticle *p, TLorentzVector D);
-  
 private:
 
   EvtPDL _pdl;
+  int _mixingType;
 
 };
 
diff --git a/TEvtGen/EvtGen/EvtGenLinkDef.h b/TEvtGen/EvtGen/EvtGenLinkDef.h
deleted file mode 100644 (file)
index a3503c7..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifdef __CINT__
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-//#pragma link C++ class EvtCheckDecays+;
-//#pragma link C++ class EvtGen+;
-#endif
diff --git a/TEvtGen/EvtGen/Makefile b/TEvtGen/EvtGen/Makefile
deleted file mode 100644 (file)
index 2913de9..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-#New EvtGen makefile October 5, 1998
-#Authors David Lange and Anders Ryd
-
-
-include $(ROOTSYS)/test/Makefile.arch
-
-SRCSC= $(wildcard *.cc)
-SRCSF= $(wildcard *.F)
-
-OBJSC = $(SRCSC:%.cc=%.o)
-OBJSF = $(SRCSF:%.F=%.o)
-
-OBJS = $(OBJSC)
-OBJS += $(OBJSF)
-
-LIBOBJS=$(filter-out top.o testEvtGen.o ,$(OBJS))
-
-include config.mk
-
-lib: depend comp ar baselib modelslib shar 
-#lib: comp ar baselib modelslib
-
-comp:$(OBJS)
-
-clean:
-       rm -f *.o libEvtGen.a libEvtGenBase.a libEvtGenModels.a ../Evt*/*.o testEvtGen libEvtGen.so ../EvtGenBase/libEvtGenBase.so ../EvtGenModels/libEvtGenModels.so
-
-
-depend:
-       @echo "Checking makedepend in EvtGen"
-       @makedepend -- $(EVTDEPINC) -- -Y $(SRCSC) $(SRCSF)
-
-
-#.cc.o:
-#      $(EVTCXX) $(EVTCXXFLAGS) -c $<
-
-.cc.o:
-       $(CXX) $(CXXFLAGS) $(EVTCXXFLAGS) -c $<
-
-
-.F.o:
-       $(EVTF77) $(EVTF77FLAGS) -c $<
-
-ar:
-       @if (test -f libEvtGen.a ) then (rm libEvtGen.a) fi
-       @ar rv libEvtGen.a $(LIBOBJS) >& /dev/null
-       @echo "Done making libEvtGen.a" 
-
-shar:
-       @$(CXX) $(CXXFLAGS) $(SOFLAGS) -o libEvtGen.so $(LIBOBJS)
-       @echo "Done making libEvtGen.so"
-baselib:
-       @cd ../EvtGenBase; gmake lib; cd ../EvtGen
-
-modelslib:
-       @cd ../EvtGenModels; gmake lib; cd ../EvtGen
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-EvtCheckDecays.o: ../EvtGenBase/EvtPatches.hh ../EvtGen/EvtCheckDecays.hh
-EvtCheckDecays.o: ../EvtGenBase/EvtDecayTable.hh
-EvtCheckDecays.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtId.hh
-EvtCheckDecays.o: /usr/include/c++/3.4.6/iostream
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtCheckDecays.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtCheckDecays.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtCheckDecays.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/cstring
-EvtCheckDecays.o: /usr/include/c++/3.4.6/cstddef
-EvtCheckDecays.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtCheckDecays.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtCheckDecays.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtCheckDecays.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtCheckDecays.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtCheckDecays.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtCheckDecays.o: /usr/include/gconv.h
-EvtCheckDecays.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtCheckDecays.o: /usr/include/bits/stdio_lim.h
-EvtCheckDecays.o: /usr/include/bits/sys_errlist.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtCheckDecays.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtCheckDecays.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtCheckDecays.o: /usr/include/libintl.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtCheckDecays.o: /usr/include/pthread.h /usr/include/sched.h
-EvtCheckDecays.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtCheckDecays.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtCheckDecays.o: /usr/include/bits/pthreadtypes.h
-EvtCheckDecays.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtCheckDecays.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtCheckDecays.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtCheckDecays.o: /usr/include/ctype.h /usr/include/endian.h
-EvtCheckDecays.o: /usr/include/bits/endian.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtCheckDecays.o: /usr/include/stdint.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/exception
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/climits
-EvtCheckDecays.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtCheckDecays.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtCheckDecays.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtCheckDecays.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/limits
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/algorithm
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtCheckDecays.o: /usr/include/c++/3.4.6/streambuf
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtCheckDecays.o: /usr/include/c++/3.4.6/locale
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtCheckDecays.o: /usr/include/c++/3.4.6/typeinfo
-EvtCheckDecays.o: /usr/include/c++/3.4.6/istream
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtCheckDecays.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtCheckDecays.o: /usr/include/c++/3.4.6/vector
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtCheckDecays.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtCheckDecays.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtCheckDecays.o: ../EvtGenBase/EvtPartProp.hh
-EvtCheckDecays.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtCheckDecays.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtCheckDecays.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtGen.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdio.h
-EvtGen.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtGen.o: /usr/include/gnu/stubs.h
-EvtGen.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtGen.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtGen.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtGen.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtGen.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtGen.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtGen.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtGen.o: /usr/include/c++/3.4.6/fstream /usr/include/c++/3.4.6/istream
-EvtGen.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtGen.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtGen.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtGen.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtGen.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtGen.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtGen.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtGen.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtGen.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtGen.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtGen.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtGen.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtGen.o: /usr/include/ctype.h /usr/include/endian.h
-EvtGen.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtGen.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtGen.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtGen.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtGen.o: /usr/include/c++/3.4.6/exception
-EvtGen.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtGen.o: /usr/include/c++/3.4.6/climits
-EvtGen.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtGen.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtGen.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtGen.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtGen.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtGen.o: /usr/include/assert.h /usr/include/c++/3.4.6/bits/localefwd.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtGen.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtGen.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtGen.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtGen.o: /usr/include/c++/3.4.6/limits
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtGen.o: /usr/include/c++/3.4.6/algorithm
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtGen.o: /usr/include/c++/3.4.6/streambuf
-EvtGen.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtGen.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtGen.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtGen.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtGen.o: /usr/include/c++/3.4.6/locale
-EvtGen.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtGen.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/ostream
-EvtGen.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtGen.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/fstream.tcc /usr/include/math.h
-EvtGen.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtGen.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtComplex.hh
-EvtGen.o: /usr/include/c++/3.4.6/iostream ../EvtGenBase/EvtConst.hh
-EvtGen.o: ../EvtGen/EvtGen.hh ../EvtGenBase/EvtPDL.hh
-EvtGen.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtSpinType.hh
-EvtGen.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtId.hh
-EvtGen.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtGen.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TLorentzVector.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMath.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/Rtypes.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/RConfig.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/RVersion.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/DllImport.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/Rtypeinfo.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TGenericClassInfo.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TSchemaHelper.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMathBase.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TError.h
-EvtGen.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/float.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TVector3.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TVector2.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TObject.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TStorage.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TVersionCheck.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/Riosfwd.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TBuffer.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrix.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixF.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixT.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixTBase.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TNamed.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TString.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TRefCnt.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixFBasefwd.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixDBasefwd.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TVectorFfwd.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TVectorDfwd.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixTUtils.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixFfwd.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixFUtils.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TMatrixFUtilsfwd.h
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TRotation.h
-EvtGen.o: /usr/include/c++/3.4.6/list /usr/include/c++/3.4.6/bits/stl_list.h
-EvtGen.o: /usr/include/c++/3.4.6/bits/list.tcc ../EvtGenBase/EvtVector4R.hh
-EvtGen.o: ../EvtGenBase/EvtVectorParticle.hh ../EvtGenBase/EvtVector4C.hh
-EvtGen.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtVector3R.hh
-EvtGen.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtSpinDensity.hh
-EvtGen.o: ../EvtGenBase/EvtScalarParticle.hh ../EvtGenBase/EvtDecayTable.hh
-EvtGen.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtParticleDecayList.hh
-EvtGen.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtStdHep.hh
-EvtGen.o: ../EvtGenBase/EvtSecondary.hh ../EvtGenBase/EvtRandom.hh
-EvtGen.o: ../EvtGenBase/EvtRandomEngine.hh
-EvtGen.o: /home/fionda/cern/root/v5-23-04/include/TRandom.h
-EvtGen.o: ../EvtGenBase/EvtSimpleRandomEngine.hh
-EvtGen.o: ../EvtGenBase/EvtParticleFactory.hh ../EvtGenModels/EvtModelReg.hh
-EvtGen.o: ../EvtGenBase/EvtStatus.hh ../EvtGenBase/EvtAbsRadCorr.hh
-EvtGen.o: ../EvtGenBase/EvtRadCorr.hh ../EvtGenModels/EvtPHOTOS.hh
diff --git a/TEvtGen/EvtGen/config.mk b/TEvtGen/EvtGen/config.mk
deleted file mode 100644 (file)
index fdfae6d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-EVTCXX=gcc
-EVTF77=g77
-EVTCXXFLAGS=-I. -DEVTSTANDALONE -I/home/fionda/cern/root/v5-23-04/include -I/home/fionda/cern/alice/v4-16-Rev-13_G3v1-10_Rv5-23-04/include -I../ 
-EVTDEPINC=-I. -DEVTSTANDALONE -I/home/fionda/cern/root/v5-23-04/include -I/home/fionda/cern/alice/v4-16-Rev-13_G3v1-10_Rv5-23-04/include -I../   -Iignoring -Inonexistent -Idirectory -I"/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../i386-redhat-linux/include" -I/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6 -I/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/i386-redhat-linux -I/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/backward -I/usr/local/include -I/usr/lib/gcc/i386-redhat-linux/3.4.6/include -I/usr/include
-EVTF77FLAGS= -I/home/fionda/cern/root/v5-23-04/include -I../ -I/cern/pro/lib
-EVTLINK=-L. -L/cern/pro/lib -L/cern/pro/lib -z muldefs
-EVTLINKOPT=
-EVTSYSLIB=-lg2c -lnsl
-EVTPYLIB=pythia6205
-EVTPHLIB=photos202
-EVTROOTLIBS=-L/home/fionda/cern/root/v5-23-04/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic
diff --git a/TEvtGen/EvtGen/decay.evt b/TEvtGen/EvtGen/decay.evt
deleted file mode 100644 (file)
index 0e47e3e..0000000
+++ /dev/null
@@ -1,1349 +0,0 @@
-Define dm 0.51e12
-Define alpha 1.3416
-Define beta  0.4
-Define gamma 1.4
-Decay UPS4
-0.500 2 B+  B-                               VSS
-0.420 2 B0  B0B                              VSS_MIX
-Enddecay
-Decay B0B
-0.0490 3 D*+    E-   NUEB                 HQET3S1 1.0 1.53 0.57
-0.0180 3 D+     E-   NUEB                 ISGW2
-0.0020 3 1P1P   E-   NUEB                 ISGW2
-0.0020 3 3P0P   E-   NUEB                 ISGW2
-0.0070 3 3P1P   E-   NUEB                 ISGW2
-0.0070 3 3P2P   E-   NUEB                 ISGW2
-0.0010 4 D*+  PI0   E-   NUEB             GOITY_ROBERTS
-0.0020 4 D*0  PI+    E-   NUEB             GOITY_ROBERTS
-0.0030 4 D+  PI0   E-   NUEB              GOITY_ROBERTS
-0.0060 4 D0  PI+    E-   NUEB              GOITY_ROBERTS
-0.0490 3 D*+    MU-  NUMB                  HQET3S1 1.0 1.53 0.57
-0.0180 3 D+     MU-  NUMB                  ISGW2
-0.0020 3 1P1P   MU-  NUMB                  ISGW2
-0.0020 3 3P0P   MU-  NUMB                  ISGW2
-0.0070 3 3P1P   MU-  NUMB                  ISGW2
-0.0070 3 3P2P   MU-  NUMB                  ISGW2
-0.0010 4 D*+  PI0   MU-   NUMB             GOITY_ROBERTS
-0.0020 4 D*0  PI+    MU-   NUMB             GOITY_ROBERTS
-0.0030 4 D+  PI0   MU-   NUMB              GOITY_ROBERTS
-0.0060 4 D0  PI+    MU-   NUMB              GOITY_ROBERTS
-0.0160 3 D*+    TAU- NUTB                 ISGW2
-0.0090 3 D+     TAU- NUTB                 ISGW2
-0.0007 3 1P1P   TAU- NUTB                 ISGW2
-0.0007 3 3P0P   TAU- NUTB                 ISGW2
-0.0020 3 3P1P   TAU- NUTB                 ISGW2
-0.0020 3 3P2P   TAU- NUTB                 ISGW2
-0.000064 3 PI+     E-   NUEB           ISGW2
-0.000250 3 RHO+   E-   NUEB                 ISGW2
-0.000274 3 A1+    E-   NUEB                 ISGW2
-0.000170 3 B1+    E-   NUEB                 ISGW2
-0.000024 3 A0+    E-   NUEB                 ISGW2
-0.000024 3 A2+    E-   NUEB                 ISGW2
-0.000000 3 D21S0P E-   NUEB                 ISGW2
-0.000000 3 D23S1P E-   NUEB                 ISGW2
-0.000064 3 PI+     MU-  NUMB          ISGW2
-0.000250 3 RHO+   MU-  NUMB               ISGW2
-0.000274 3 A1+    MU-  NUMB                  ISGW2
-0.000170 3 B1+    MU-  NUMB                  ISGW2
-0.000024 3 A0+    MU-  NUMB                  ISGW2
-0.000024 3 A2+    MU-  NUMB                  ISGW2
-0.000000 3 D21S0P MU-  NUMB                  ISGW2
-0.000000 3 D23S1P MU-  NUMB                  ISGW2
-0.000021 3 PI+     TAU- NUTB         ISGW2
-0.000083 3 RHO+   TAU- NUTB                 ISGW2
-0.000090 3 A1+    TAU- NUTB                 ISGW2
-0.000008 3 B1+    TAU- NUTB                 ISGW2
-0.000008 3 A0+    TAU- NUTB                 ISGW2
-0.000008 3 A2+    TAU- NUTB                 ISGW2
-0.000000 3 D21S0P TAU- NUTB                 ISGW2
-0.000000 3 D23S1P TAU- NUTB                 ISGW2
-0.77375   0                                  JETSET
-Enddecay
-Decay B0
-0.0490 3 D*-    E+   NUE                HQET3S1 1.0 1.53 0.57
-0.0180 3 D-     E+   NUE                ISGW2
-0.0020 3 1P1N   E+   NUE                ISGW2
-0.0020 3 3P0N   E+   NUE                ISGW2
-0.0070 3 3P1N   E+   NUE                ISGW2
-0.0070 3 3P2N   E+   NUE                ISGW2
-0.0010 4 D*-  PI0   E+   NUE            GOITY_ROBERTS
-0.0020 4 D*B  PI-   E+   NUE            GOITY_ROBERTS
-0.0030 4 D-   PI0   E+   NUE             GOITY_ROBERTS
-0.0060 4 D0B  PI-   E+   NUE             GOITY_ROBERTS
-0.0490 3 D*-    MU+  NUM                HQET3S1 1.0 1.53 0.57
-0.0180 3 D-     MU+  NUM                ISGW2
-0.0020 3 1P1N   MU+  NUM                ISGW2
-0.0020 3 3P0N   MU+  NUM                ISGW2
-0.0070 3 3P1N   MU+  NUM                ISGW2
-0.0070 3 3P2N   MU+  NUM                ISGW2
-0.0010 4 D*-  PI0   MU+   NUM           GOITY_ROBERTS
-0.0020 4 D*B  PI-   MU+   NUM           GOITY_ROBERTS
-0.0030 4 D-  PI0   MU+   NUM            GOITY_ROBERTS
-0.0060 4 D0B  PI-   MU+   NUM            GOITY_ROBERTS
-0.0160 3 D*-    TAU+ NUT                ISGW2
-0.0090 3 D-     TAU+ NUT                ISGW2
-0.0007 3 1P1N   TAU+ NUT                ISGW2
-0.0007 3 3P0N   TAU+ NUT                ISGW2
-0.0020 3 3P1N   TAU+ NUT                ISGW2
-0.0020 3 3P2N   TAU+ NUT                ISGW2
-0.000064 3 PI-    E+   NUE           ISGW2
-0.000250 3 RHO-   E+   NUE            ISGW2
-0.000274 3 A1-    E+   NUE                ISGW2
-0.000170 3 B1-    E+   NUE                ISGW2
-0.000024 3 A0-    E+   NUE                ISGW2
-0.000024 3 A2-    E+   NUE                ISGW2
-0.000000 3 D21S0N E+   NUE                ISGW2
-0.000000 3 D23S1N E+   NUE                ISGW2
-0.000064 3 PI-    MU+  NUM             ISGW2
-0.000250 3 RHO-   MU+  NUM                ISGW2
-0.000274 3 A1-    MU+  NUM                ISGW2
-0.000170 3 B1-    MU+  NUM                ISGW2
-0.000024 3 A0-    MU+  NUM                ISGW2
-0.000024 3 A2-    MU+  NUM                ISGW2
-0.000000 3 D21S0N MU+  NUM                ISGW2
-0.000000 3 D23S1N MU+  NUM                ISGW2
-0.000021 3 PI-    TAU+ NUT                ISGW2
-0.000083 3 RHO-   TAU+ NUT                ISGW2
-0.000090 3 A1-    TAU+ NUT                ISGW2
-0.000008 3 B1-    TAU+ NUT                ISGW2
-0.000008 3 A0-    TAU+ NUT                ISGW2
-0.000008 3 A2-    TAU+ NUT                ISGW2
-0.000000 3 D21S0N TAU+ NUT                ISGW2
-0.000000 3 D23S1N TAU+ NUT                ISGW2
-0.77377 0                                     JETSET
-Enddecay
-Decay B-
-0.0490 3 D*0    E-   NUEB                 HQET3S1 1.0 1.53 0.57
-0.0180 3 D0     E-   NUEB                 ISGW2
-0.0020 3 1P10   E-   NUEB                 ISGW2
-0.0020 3 3P00   E-   NUEB                 ISGW2
-0.0070 3 3P10   E-   NUEB                 ISGW2
-0.0070 3 3P20   E-   NUEB                 ISGW2
-0.0020 4 D*+  PI-   E-   NUEB             GOITY_ROBERTS
-0.0010 4 D*0  PI0   E-   NUEB             GOITY_ROBERTS
-0.0060 4 D+  PI-   E-   NUEB              GOITY_ROBERTS
-0.0030 4 D0  PI0   E-   NUEB              GOITY_ROBERTS
-0.0490 3 D*0    MU-  NUMB                  HQET3S1 1.0 1.53 0.57
-0.0180 3 D0     MU-  NUMB                  ISGW2
-0.0020 3 1P10   MU-  NUMB                  ISGW2
-0.0020 3 3P00   MU-  NUMB                  ISGW2
-0.0070 3 3P10   MU-  NUMB                  ISGW2
-0.0070 3 3P20   MU-  NUMB                  ISGW2
-0.0020 4 D*+  PI-   MU-   NUMB             GOITY_ROBERTS
-0.0010 4 D*0  PI0   MU-   NUMB             GOITY_ROBERTS
-0.0060 4 D+  PI-   MU-   NUMB              GOITY_ROBERTS
-0.0030 4 D0  PI0   MU-   NUMB              GOITY_ROBERTS
-0.0160 3 D*0    TAU- NUTB                 ISGW2
-0.0090 3 D0     TAU- NUTB                 ISGW2
-0.0007 3 1P10   TAU- NUTB                 ISGW2
-0.0007 3 3P00   TAU- NUTB                 ISGW2
-0.0020 3 3P10   TAU- NUTB                 ISGW2
-0.0020 3 3P20   TAU- NUTB                 ISGW2
-0.000032 3 PI0    E-   NUEB            ISGW2
-0.000012 3 ETA    E-   NUEB            ISGW2
-0.000125 3 RHO0   E-   NUEB       ISGW2
-0.000125 3 OMEG   E-   NUEB                 ISGW2
-0.000020 3 ETA'   E-   NUEB            ISGW2
-0.000137 3 A10    E-   NUEB                 ISGW2
-0.000060 3 A20    E-   NUEB                 ISGW2
-0.000080 3 B10    E-   NUEB                 ISGW2
-0.000012 3 A00    E-   NUEB                 ISGW2
-0.000006 3 F0     E-   NUEB                 ISGW2
-0.000006 3 F0'    E-   NUEB                 ISGW2
-0.000068 3 F1     E-   NUEB                 ISGW2
-0.000068 3 F1'    E-   NUEB                 ISGW2
-0.000040 3 H1     E-   NUEB                 ISGW2
-0.000040 3 H1'    E-   NUEB                 ISGW2
-0.000060 3 F2     E-   NUEB                 ISGW2
-0.000060 3 F2'    E-   NUEB                 ISGW2
-0.000000 3 D21S00 E-   NUEB                 ISGW2
-0.000000 3 D23S10 E-   NUEB                 ISGW2
-0.000032 3 PI0    MU-  NUMB             ISGW2
-0.000012 3 ETA    MU-  NUMB             ISGW2
-0.000125 3 RHO0   MU-  NUMB            ISGW2
-0.000125 3 OMEG   MU-  NUMB                  ISGW2
-0.000020 3 ETA'   MU-  NUMB             ISGW2
-0.000137 3 A10    MU-  NUMB                  ISGW2
-0.000060 3 A20    MU-  NUMB                  ISGW2
-0.000080 3 B10    MU-  NUMB                  ISGW2
-0.000012 3 A00    MU-  NUMB                  ISGW2
-0.000006 3 F0     MU-  NUMB                  ISGW2
-0.000006 3 F0'    MU-  NUMB                  ISGW2
-0.000068 3 F1     MU-  NUMB                  ISGW2
-0.000068 3 F1'    MU-  NUMB                  ISGW2
-0.000040 3 H1     MU-  NUMB                  ISGW2
-0.000040 3 H1'    MU-  NUMB                  ISGW2
-0.000060 3 F2     MU-  NUMB                  ISGW2
-0.000060 3 F2'    MU-  NUMB                  ISGW2
-0.000000 3 D21S00 MU-  NUMB                  ISGW2
-0.000000 3 D23S10 MU-  NUMB                  ISGW2
-0.000010 3 PI0    TAU- NUTB                 ISGW2
-0.000004 3 ETA    TAU- NUTB                 ISGW2
-0.000042 3 RHO0   TAU- NUTB                 ISGW2
-0.000060 3 A20    TAU-  NUTB                 ISGW2
-0.000042 3 OMEG   TAU- NUTB                 ISGW2
-0.000007 3 ETA'   TAU- NUTB                 ISGW2
-0.000046 3 A10    TAU- NUTB                 ISGW2
-0.000027 3 B10    TAU- NUTB                 ISGW2
-0.000004 3 A00    TAU- NUTB                 ISGW2
-0.000002 3 F0     TAU- NUTB                 ISGW2
-0.000002 3 F0'    TAU- NUTB                 ISGW2
-0.000023 3 F1     TAU- NUTB                 ISGW2
-0.000023 3 F1'    TAU- NUTB                 ISGW2
-0.000013 3 H1     TAU- NUTB                 ISGW2
-0.000013 3 H1'    TAU- NUTB                 ISGW2
-0.000020 3 F2     TAU- NUTB                 ISGW2
-0.000020 3 F2'    TAU- NUTB                 ISGW2
-0.000000 3 D21S00 TAU- NUTB                 ISGW2
-0.000000 3 D23S10 TAU- NUTB                 ISGW2
-0.000020 2 TAU-  NUTB                       SLN
-0.000020 2 E-  NUEB                       SLN
-0.000020 2 MU-  NUMB                        SLN
-0.77352 0                                     JETSET
-Enddecay
-Decay B+
-0.0490 3 D*B    E+   NUE                  HQET3S1 1.0 1.53 0.57
-0.0180 3 D0B     E+   NUE                  ISGW2
-0.0020 3 1P1B   E+   NUE                  ISGW2
-0.0020 3 3P0B   E+   NUE                  ISGW2
-0.0070 3 3P1B   E+   NUE                  ISGW2
-0.0070 3 3P2B   E+   NUE                  ISGW2
-0.0020 4 D*-  PI+    E+   NUE              GOITY_ROBERTS
-0.0010 4 D*B  PI0   E+   NUE              GOITY_ROBERTS
-0.0060 4 D-  PI+    E+   NUE               GOITY_ROBERTS
-0.0030 4 D0B  PI0   E+   NUE               GOITY_ROBERTS
-0.0490 3 D*B    MU+  NUM                  HQET3S1 1.0 1.53 0.57
-0.0180 3 D0B    MU+  NUM                  ISGW2
-0.0020 3 1P1B   MU+  NUM                  ISGW2
-0.0020 3 3P0B   MU+  NUM                  ISGW2
-0.0070 3 3P1B   MU+  NUM                  ISGW2
-0.0070 3 3P2B   MU+  NUM                  ISGW2
-0.0020 4 D*-  PI+    MU+   NUM             GOITY_ROBERTS
-0.0010 4 D*B  PI0   MU+   NUM             GOITY_ROBERTS
-0.0060 4 D-  PI+    MU+   NUM              GOITY_ROBERTS
-0.0030 4 D0B  PI0   MU+   NUM              GOITY_ROBERTS
-0.0160 3 D*B    TAU+ NUT                  ISGW2
-0.0090 3 D0B     TAU+ NUT                  ISGW2
-0.0007 3 1P1B   TAU+ NUT                  ISGW2
-0.0007 3 3P0B   TAU+ NUT                  ISGW2
-0.0020 3 3P1B   TAU+ NUT                  ISGW2
-0.0020 3 3P2B   TAU+ NUT                  ISGW2
-0.000032 3 PI0    E+   NUE            ISGW2
-0.000012 3 ETA    E+   NUE            ISGW2
-0.000125 3 RHO0   E+   NUE            ISGW2
-0.000125 3 OMEG   E+   NUE                 ISGW2
-0.000020 3 ETA'   E+   NUE            ISGW2
-0.000137 3 A10    E+   NUE                  ISGW2
-0.000060 3 A20    E+   NUE                  ISGW2
-0.000080 3 B10    E+   NUE                  ISGW2
-0.000012 3 A00    E+   NUE                  ISGW2
-0.000006 3 F0     E+   NUE                  ISGW2
-0.000006 3 F0'    E+   NUE                  ISGW2
-0.000068 3 F1     E+   NUE                  ISGW2
-0.000068 3 F1'    E+   NUE                  ISGW2
-0.000040 3 H1     E+   NUE                  ISGW2
-0.000040 3 H1'    E+   NUE                  ISGW2
-0.000060 3 F2     E+   NUE                  ISGW2
-0.000060 3 F2'    E+   NUE                  ISGW2
-0.000000 3 D21S0B E+   NUE                  ISGW2
-0.000000 3 D23S1B E+   NUE                  ISGW2
-0.000032 3 PI0    MU+  NUM                  ISGW2
-0.000012 3 ETA    MU+  NUM                  ISGW2
-0.000125 3 RHO0   MU+  NUM                  ISGW2
-0.000125 3 OMEG   MU+  NUM                  ISGW2
-0.000020 3 ETA'   MU+  NUM                  ISGW2
-0.000137 3 A10    MU+  NUM                  ISGW2
-0.000080 3 B10    MU+  NUM                  ISGW2
-0.000012 3 A00    MU+  NUM                  ISGW2
-0.000006 3 A20    MU+  NUM                  ISGW2
-0.000006 3 F0     MU+  NUM                  ISGW2
-0.000006 3 F0'    MU+  NUM                  ISGW2
-0.000068 3 F1     MU+  NUM                  ISGW2
-0.000068 3 F1'    MU+  NUM                  ISGW2
-0.000040 3 H1     MU+  NUM                  ISGW2
-0.000040 3 H1'    MU+  NUM                  ISGW2
-0.000060 3 F2     MU+  NUM                  ISGW2
-0.000060 3 F2'    MU+  NUM                  ISGW2
-0.000000 3 D21S0B MU+  NUM                  ISGW2
-0.000000 3 D23S1B MU+  NUM                  ISGW2
-0.000010 3 PI0    TAU+ NUT                  ISGW2
-0.000004 3 ETA    TAU+ NUT                  ISGW2
-0.000042 3 RHO0   TAU+ NUT                  ISGW2
-0.000042 3 OMEG   TAU+ NUT                  ISGW2
-0.000007 3 ETA'   TAU+ NUT                  ISGW2
-0.000046 3 A10    TAU+ NUT                  ISGW2
-0.000027 3 B10    TAU+ NUT                  ISGW2
-0.000006 3 A20    TAU+  NUT                  ISGW2
-0.000004 3 A00    TAU+ NUT                  ISGW2
-0.000002 3 F0     TAU+ NUT                  ISGW2
-0.000002 3 F0'    TAU+ NUT                  ISGW2
-0.000023 3 F1     TAU+ NUT                  ISGW2
-0.000023 3 F1'    TAU+ NUT                  ISGW2
-0.000013 3 H1     TAU+ NUT                  ISGW2
-0.000013 3 H1'    TAU+ NUT                  ISGW2
-0.000020 3 F2     TAU+ NUT                  ISGW2
-0.000020 3 F2'    TAU+ NUT                  ISGW2
-0.000000 3 D21S0B TAU+ NUT                  ISGW2
-0.000000 3 D23S1B TAU+ NUT                  ISGW2
-0.000020 2 TAU+  NUT                       SLN
-0.000020 2 E+  NUE                       SLN
-0.000020 2 MU+  NUM                       SLN
-0.77352 0                                     JETSET
-Enddecay
-Decay TAU-
-1.000 0                                     JETSET
-Enddecay
-Decay TAU+
-1.000 0                                     JETSET
-Enddecay
-Decay DS+
-0.0200 3  PHI   E+     NUE                  ISGW2
-0.0388 3  ETA   E+     NUE                  ISGW2
-0.0168 3  ETA'  E+     NUE                  ISGW2
-0.0027 3  KB    E+     NUE                  ISGW2
-0.0010 3  K*B   E+     NUE                  ISGW2
-0.0200 3  PHI   MU+    NUM                  ISGW2
-0.0388 3  ETA   MU+    NUM                  ISGW2
-0.0168 3  ETA'  MU+    NUM                  ISGW2
-0.0027 3  KB    MU+    NUM                  ISGW2
-0.0010 3  K*B   MU+    NUM                  ISGW2
-0.0091 2  NUM   MU+                         PHSP
-0.0910 2  NUT   TAU+                        PHSP
-0.0370 2  PHI   PI+                          SVS
-0.0200 2  ETA   PI+                          PHSP2
-0.0518 2  ETA'  PI+                          PHSP2
-0.0010 2  OMEG  PI+                          SVS
-0.0010 2  RHO0  PI+                          SVS
-0.0020 2  RHO+  PI0                         SVS
-0.0010 2  PI+    PI0                         PHSP2
-0.0104 2  F0    PI+                          PHSP2
-0.0688 2  PHI   RHO+                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0
-0.1058 2  RHO+  ETA                         SVS
-0.1273 2  RHO+  ETA                         SVS
-0.0109 3 PI+    PI-   PI+                     PHSP
-0.0050 3 PI+    PI0   PI0                    PHSP
-0.0200 3 PHI   PI+    PI0                    PHSP
-0.0100 3 ETA   PI+    PI0                    PHSP
-0.0100 3 ETA'  PI+    PI0                    PHSP
-0.0155 4 PHI   PI+    PI-   PI+               PHSP
-0.0050 4 PHI   PI+    PI0   PI0              PHSP
-0.0050 4 ETA   PI+    PI-   PI+               PHSP
-0.0050 4 ETA   PI+    PI0   PI0              PHSP
-0.0374 2 KB    K+                           PHSP2
-0.0352 2 K*B   K+                           SVS
-0.0444 2 K*+   KB                           SVS
-0.0592 2 K*B   K*+                          SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0
-0.0093 3 K+    K-    PI+                     PHSP
-0.0050 3 KB    K+    PI0                    PHSP
-0.0020 4 KB    K+    PI+    PI-              PHSP
-0.0020 4 KB    K+    PI0   PI0              PHSP
-0.0030 2 PHI   K+                           SVS
-0.0015 2 ETA   K+                           PHSP2
-0.0035 2 ETA'  K+                           PHSP2
-0.0030 3 ETA   K+    PI0                    PHSP
-0.0020 4 ETA   K+    PI+    PI-              PHSP
-0.0020 3 ETA'  K+    PI0                    PHSP
-0.0010 4 ETA'  K+    PI+    PI-              PHSP
-0.0030 3 K+    K-    K+                     PHSP
-0.0025 2 K0    PI+                           PHSP2
-0.0025 2 RHO+  K0                           SVS
-0.0010 3 K0    PI+    PI0                    PHSP
-0.0020 2 A1+   K0                           SVS
-0.0025 2 K*0   PI+                           SVS
-0.0025 2 K*0   RHO+                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0
-0.0023 3 K*0   PI+    PI0                    PHSP
-Enddecay
-Decay DS-
-0.0200 3  PHI   E-     NUEB                 ISGW2
-0.0388 3  ETA   E-     NUEB                 ISGW2
-0.0168 3  ETA'  E-     NUEB                 ISGW2
-0.0027 3  K0    E-     NUEB                 ISGW2
-0.0010 3  K*0   E-     NUEB                 ISGW2
-0.0200 3  PHI   MU-    NUMB                  ISGW2
-0.0388 3  ETA   MU-    NUMB                  ISGW2
-0.0168 3  ETA'  MU-    NUMB                  ISGW2
-0.0027 3  K0    MU-    NUMB                  ISGW2
-0.0010 3  K*0   MU-    NUMB                  ISGW2
-0.0091 2  NUMB   MU-                         PHSP
-0.0910 2  NUTB  TAU-                        PHSP
-0.0370 2  PHI   PI-                         SVS
-0.0200 2  ETA   PI-                         PHSP2
-0.0518 2  ETA'  PI-                         PHSP2
-0.0010 2  OMEG  PI-                         SVS
-0.0010 2  RHO0  PI-                         SVS
-0.0020 2  RHO-  PI0                         SVS
-0.0010 2  PI-   PI0                         PHSP2
-0.0104 2  F0    PI-                         PHSP2
-0.0688 2  PHI   RHO-                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0
-0.1058 2  RHO-  ETA                         SVS
-0.1273 2  RHO-  ETA                         SVS
-0.0109 3 PI-   PI-   PI+                     PHSP
-0.0050 3 PI-   PI0   PI0                    PHSP
-0.0200 3 PHI   PI-   PI0                    PHSP
-0.0100 3 ETA   PI-   PI0                    PHSP
-0.0100 3 ETA'  PI-   PI0                    PHSP
-0.0155 4 PHI   PI-   PI-   PI+               PHSP
-0.0050 4 PHI   PI-   PI0   PI0              PHSP
-0.0050 4 ETA   PI-   PI-   PI+               PHSP
-0.0050 4 ETA   PI-   PI0   PI0              PHSP
-0.0374 2 K0    K-                           PHSP2
-0.0352 2 K*0   K-                           SVS
-0.0444 2 K*-   K0                           SVS
-0.0592 2 K*0   K*-                          SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0
-0.0093 3 K+    K-    PI-                    PHSP
-0.0050 3 K0    K-    PI0                    PHSP
-0.0020 4 K0    K-    PI+    PI-              PHSP
-0.0020 4 K0    K-    PI0   PI0              PHSP
-0.0030 2 PHI   K-                           SVS
-0.0015 2 ETA   K-                           PHSP2
-0.0035 2 ETA'  K-                           PHSP2
-0.0030 3 ETA   K-    PI0                    PHSP
-0.0020 4 ETA   K-    PI+    PI-              PHSP
-0.0020 3 ETA'  K-    PI0                    PHSP
-0.0010 4 ETA'  K-    PI+    PI-              PHSP
-0.0030 3 K-    K-    K+                     PHSP
-0.0025 2 KB    PI-                          PHSP2
-0.0025 2 RHO-  KB                           SVS
-0.0010 3 KB    PI-   PI0                    PHSP
-0.0020 2 A1-   KB                           SVS
-0.0025 2 K*B   PI-                          SVS
-0.0025 2 K*B   RHO-                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0
-0.0023 3 K*B   PI-   PI0                    PHSP
-Enddecay
-Decay PI0
-0.9880 2  GAMM GAMM                         PHSP
-0.0120 3  GAMM E+  E-                       PHSP
-Enddecay
-Decay ETA
-0.3880 2  GAMM GAMM                         PHSP
-0.3190 3  PI0 PI0 PI0                       PHSP
-0.2360 3  PI- PI+  PI0                       PHSP
-0.0488 3  GAMM PI- PI+                       PHSP
-0.0050 3  GAMM E+  E-                       PHSP
-0.0003 3  GAMM MU+ MU-                      PHSP
-0.0007 3  GAMM GAMM PI0                     PHSP
-0.0012 4  PI+  PI- E+  E-                    PHSP
-0.0010 4  GAMM GAMM E+  E-                  PHSP
-Enddecay
-Decay K0S
-0.6861 2  PI+   PI-                          PHSP
-0.3139 2  PI0  PI0                          PHSP
-Enddecay
-Decay K0
-0.500  1  K0L                               PHSP
-0.500  1  K0S                               PHSP
-Enddecay
-Decay KB
-0.500  1  K0L                               PHSP
-0.500  1  K0S                               PHSP
-Enddecay
-Decay K1*0
-1.000 0                                     JETSET
-Enddecay
-Decay K1*B
-1.000 0                                     JETSET
-Enddecay
-Decay K10
-0.2800 2 RHO-  K+                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1400 2 RHO0  K0                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1067 2 K*+   PI-                            VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.0533 2 K*0   PI0                            VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1100 2 OMEG  K0                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1444 3 K0    PI+  PI-                        PHSP
-0.1244 3 K+    PI- PI0                        PHSP
-0.0412 3 K0    PI0 PI0                        PHSP
-Enddecay
-Decay K1B
-0.2800 2 RHO+  K-                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1400 2 RHO0  KB                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1067 2 K*-   PI+                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.0533 2 K*B   PI0                            VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1100 2 OMEG  KB                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1444 3 KB    PI+  PI-                        PHSP
-0.1244 3 K-    PI+  PI0                        PHSP
-0.0412 3 KB    PI0 PI0                        PHSP
-Enddecay
-Decay K1+
-0.2800 2 RHO+  K0                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1400 2 RHO0  K-                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1067 2 K*0   PI+                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.0533 2 K*+   PI0                            VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1100 2 OMEG  K+                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1444 3 K+    PI+  PI-                        PHSP
-0.1244 3 K0    PI+  PI0                        PHSP
-0.0412 3 K+    PI0 PI0                        PHSP
-Enddecay
-Decay K1-
-0.2800 2 RHO-  KB                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1400 2 RHO0  K+                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1067 2 K*B   PI-                            VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.0533 2 K*-   PI0                            VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1100 2 OMEG  K-                             VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.1444 3 K-    PI+  PI-                        PHSP
-0.1244 3 KB    PI- PI0                        PHSP
-0.0412 3 K-    PI0 PI0                        PHSP
-Enddecay
-Decay K*0
-0.6657  2   K+  PI-                         VSS
-0.3323  2   K0  PI0                         VSS
-0.0020  2   K0  GAMM                        VSP_PWAVE
-Enddecay
-Decay K*B
-0.6657  2   K-  PI+                          VSS
-0.3323  2   KB  PI0                         VSS
-0.0020  2   KB  GAMM                        VSP_PWAVE
-Enddecay
-Decay K*+
-0.6660  2   K0  PI+                          VSS
-0.3330  2   K+  PI0                         VSS
-0.0010  2   K+  GAMM                        VSP_PWAVE
-Enddecay
-Decay K*-
-0.6660  2   KB  PI-                         VSS
-0.3330  2   K-  PI0                         VSS
-0.0010  2   K-  GAMM                        VSP_PWAVE
-Enddecay
-Decay ETA'
-0.4370  3  PI+  PI- ETA                      PHSP
-0.2080  3  PI0 PI0 ETA                      PHSP
-0.3020  2  GAMM RHO0                        PHSP
-0.0302  2  GAMM OMEG                        PHSP
-0.0212  2  GAMM GAMM                        PHSP
-0.0015  3  PI0 PI0 PI0                      PHSP
-0.0001  3  GAMM MU- MU+                     PHSP
-Enddecay
-Decay DEL+
-1.000 0                                     JETSET
-Enddecay
-Decay ADEL+
-1.000 0                                     JETSET
-Enddecay
-Decay DEL++
-1.000 0                                     JETSET
-Enddecay
-Decay ADL++
-1.000 0                                     JETSET
-Enddecay
-Decay CUD3
-1.000 0                                     JETSET
-Enddecay
-Decay ACUD3
-1.000 0                                     JETSET
-Enddecay
-Decay CSD0
-1.000 0                                     JETSET
-Enddecay
-Decay ACSD0
-1.000 0                                     JETSET
-Enddecay
-Decay CSD3
-1.000 0                                     JETSET
-Enddecay
-Decay ACSD3
-1.000 0                                     JETSET
-Enddecay
-Decay XI*0
-1.000 0                                     JETSET
-Enddecay
-Decay AXI*0
-1.000 0                                     JETSET
-Enddecay
-Decay SIGC0
-1.000 0                                     JETSET
-Enddecay
-Decay ASIC0
-1.000 0                                     JETSET
-Enddecay
-Decay LAMC
-1.000 0                                     JETSET
-Enddecay
-Decay ALAMC
-1.000 0                                     JETSET
-Enddecay
-Decay K2*+
-0.3310 2 K0  PI+                             TSS
-0.1660 2 K+  PI0                            TSS
-0.1680 2 K*0 PI+                             TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0840 2 K*+ PI0                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0540 3 K*0 PI+  PI0                        PHSP
-0.0540 3 K*+ PI+  PI-                        PHSP
-0.0540 3 K*+ PI0 PI0                        PHSP
-0.0590 2 RHO+ K0                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0300 2 RHO0 K+                          TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-Enddecay
-Decay K2*-
-0.3310 2 KB  PI-                            TSS
-0.1660 2 K-  PI0                            TSS
-0.1680 2 K*B PI-                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0840 2 K*- PI0                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0540 3 K*B PI- PI0                        PHSP
-0.0540 3 K*- PI+  PI-                        PHSP
-0.0540 3 K*- PI0 PI0                        PHSP
-0.0590 2 RHO- K0                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0300 2 RHO0 K-                          TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-Enddecay
-Decay K2*0
-0.3310 2 K+  PI-                            TSS
-0.1660 2 K0  PI0                            TSS
-0.1680 2 K*+ PI-                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0840 2 K*0 PI0                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0540 3 K*0 PI+  PI-                        PHSP
-0.0540 3 K*0 PI0 PI0                        PHSP
-0.0540 3 K*+ PI- PI0                        PHSP
-0.0590 2 RHO- K+                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0300 2 RHO0 K0                           TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-Enddecay
-Decay K2*B
-0.3310 2 K-  PI+                             TSS
-0.1660 2 KB  PI0                            TSS
-0.1680 2 K*- PI+                             TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0840 2 K*B PI0                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0540 3 K*B PI+  PI-                        PHSP
-0.0540 3 K*B PI0 PI0                        PHSP
-0.0540 3 K*- PI+  PI0                        PHSP
-0.0590 2 RHO+ K-                            TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-0.0300 2 RHO0 KB                           TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0  
-Enddecay
-Decay DS*+
-1.000 0                                     JETSET
-Enddecay
-Decay DS*-
-1.000 0                                     JETSET
-Enddecay
-Decay 3P1SP
-1.000 0                                     JETSET
-Enddecay
-Decay 3P1SN
-1.000 0                                     JETSET
-Enddecay
-Decay SIG+
-1.000 0                                     JETSET
-Enddecay
-Decay ASIG+
-1.000 0                                     JETSET
-Enddecay
-Decay SIGC+
-1.000 0                                     JETSET
-Enddecay
-Decay ASIC+
-1.000 0                                     JETSET
-Enddecay
-Decay LAM
-1.000 0                                     JETSET
-Enddecay
-Decay ALAM
-1.000 0                                     JETSET
-Enddecay
-Decay 3P00
-0.3333 2 D0 PI0                             PHSP2
-0.6667 2 D+ PI-                             PHSP2
-Enddecay
-Decay 3P0B
-0.3333 2 D0B PI0                            PHSP2
-0.6667 2 D- PI+                              PHSP2
-Enddecay
-Decay 3P0P
-0.3333 2 D+ PI0                             PHSP2
-0.6667 2 D0 PI+                              PHSP2
-Enddecay
-Decay 3P0N
-0.3333 2 D- PI0                             PHSP2
-0.6667 2 D0B PI-                            PHSP2
-Enddecay
-Decay ETAC
-1.000 0                                     JETSET
-Enddecay
-Decay PSI
-0.0599 2  E+  E-                            VLL
-0.0597 2  MU+ MU-                           VLL
-0.8804 0                                    JETSET
-Enddecay
-Decay PHI
-0.4910 2 K+   K-                            VSS
-0.3430 2 K0L  K0S                           VSS
-0.0430 2 RHO+ PI-                           VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.0430 2 RHO0 PI0                           VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.0430 2 RHO- PI+                            VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0
-0.0240 3 PI+   PI- PI0                       PHSP
-0.0120 2 ETA GAMM                           VSP_PWAVE
-0.0010 2 PI0 GAMM                           VSP_PWAVE
-Enddecay
-Decay CHI2
-1.000 0                                     JETSET
-Enddecay
-Decay DEL0
-1.000 0                                     JETSET
-Enddecay
-Decay ADEL0
-1.000 0                                     JETSET
-Enddecay
-Decay DEL-
-1.000 0                                     JETSET
-Enddecay
-Decay ADEL-
-1.000 0                                     JETSET
-Enddecay
-Decay SIG-
-1.000 0                                     JETSET
-Enddecay
-Decay ASIG-
-1.000 0                                     JETSET
-Enddecay
-Decay CDD3
-1.000 0                                     JETSET
-Enddecay
-Decay ACDD3
-1.000 0                                     JETSET
-Enddecay
-Decay SIG0
-1.000 0                                     JETSET
-Enddecay
-Decay ASIG0
-1.000 0                                     JETSET
-Enddecay
-Decay CSU0
-1.000 0                                     JETSET
-Enddecay
-Decay ACSU0
-1.000 0                                     JETSET
-Enddecay
-Decay CUU3
-1.000 0                                     JETSET
-Enddecay
-Decay ACUU3
-1.000 0                                     JETSET
-Enddecay
-Decay F0
-0.5200 2 PI+   PI-                            PHSP2
-0.2600 2 PI0  PI0                            PHSP2
-0.1100 2 K+   K-                             PHSP2
-0.0550 2 K0S  K0S                            PHSP2
-0.0550 2 K0L  K0L                            PHSP2
-Enddecay
-Decay F0'
-0.6200 2 PI+   PI-                            PHSP2
-0.3100 2 PI0  PI0                            PHSP2
-0.0350 2 K+   K-                             PHSP2
-0.0175 2 K0S  K0S                            PHSP2
-0.0175 2 K0L  K0L                            PHSP2
-Enddecay
-Decay CHI1
-1.000 0                                     JETSET
-Enddecay
-Decay SIG*-
-1.000 0                                     JETSET
-Enddecay
-Decay ASI*-
-1.000 0                                     JETSET
-Enddecay
-Decay SIC++
-1.000 0                                     JETSET
-Enddecay
-Decay ASC++
-1.000 0                                     JETSET
-Enddecay
-Decay SIG*+
-1.000 0                                     JETSET
-Enddecay
-Decay ASI*+
-1.000 0                                     JETSET
-Enddecay
-Decay SIG*0
-1.000 0                                     JETSET
-Enddecay
-Decay ASI*0
-1.000 0                                     JETSET
-Enddecay
-Decay XI0
-1.000 0                                     JETSET
-Enddecay
-Decay AXI0
-1.000 0                                     JETSET
-Enddecay
-Decay XI-
-1.000 0                                     JETSET
-Enddecay
-Decay AXI-
-1.000 0                                     JETSET
-Enddecay
-Decay A00
-0.9000  2 ETA  PI0                          PHSP2
-0.0500  2 K+   K-                           PHSP2
-0.0250  2 K0S  K0S                          PHSP2
-0.0250  2 K0L  K0L                          PHSP2
-Enddecay
-Decay A0+
-0.9000  2 ETA  PI+                           PHSP2
-0.1000  2 KB   K+                           PHSP2
-Enddecay
-Decay A0-
-0.9000  2 ETA  PI-                          PHSP2
-0.1000  2 K0   K-                           PHSP2
-Enddecay
-Decay D*+
-0.6790  2 D0  PI+                         VSS
-0.3100  2 D+  PI0                        VSS
-0.0110  2 D+  GAMM                       VSP_PWAVE
-Enddecay
-Decay D*-
-0.6790  2 D0B PI-                        VSS
-0.3100  2 D-  PI0                        VSS
-0.0110  2 D-  GAMM                       VSP_PWAVE
-Enddecay
-Decay D*0
-0.6350  2 D0  PI0                        VSS
-0.3650  2 D0  GAMM                       VSS
-Enddecay
-Decay D*B
-0.6350  2 D0B  PI0                       VSS
-0.3650  2 D0B  GAMM                      VSS
-Enddecay
-Decay D+
-0.0504 3 K*B  E+  NUE                    ISGW2
-0.0929 3 KB   E+  NUE                    ISGW2
-0.0036 3 K1B  E+  NUE                    ISGW2
-0.0038 3 K2*B E+  NUE                    ISGW2
-0.0064 3 PI0  E+  NUE                    ISGW2
-0.0028 3 ETA  E+  NUE                    ISGW2
-0.0011 3 ETA' E+  NUE                    ISGW2
-0.0030 3 RHO0 E+  NUE                    ISGW2
-0.0029 3 OMEG E+  NUE                   ISGW2
-0.0504 3 K*B  MU+  NUM                    ISGW2
-0.0929 3 KB   MU+  NUM                    ISGW2
-0.0036 3 K1B  MU+  NUM                    ISGW2
-0.0038 3 K2*B MU+  NUM                    ISGW2
-0.0064 3 PI0  MU+  NUM                    ISGW2
-0.0028 3 ETA  MU+  NUM                    ISGW2
-0.0011 3 ETA' MU+  NUM                    ISGW2
-0.0030 3 RHO0 MU+  NUM                    ISGW2
-0.0029 3 OMEG MU+  NUM                   ISGW2
-0.0009 2 MU+ NUM                         PHSP
-0.0024 2 TAU+ NUT                        PHSP
-0.0292 2 KB  PI+                          PHSP2
-0.0722 2 RHO+ KB                         SVS
-0.0807 2 A1+ KB                         SVS
-0.0213 2 K*B  PI+                         SVS
-0.0508 2 K1*B  PI+                         SVS
-0.0345 2 K2*B  PI+                        PHSP
-0.0503 2 K*B RHO+                        SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0
-0.0548 3 K-  PI+   PI+                     PHSP
-0.0155 3 KB  PI0  PI+                     PHSP
-0.0100 3 KB  ETA  PI+                     PHSP
-0.0050 3 KB  RHO0  PI+                     PHSP
-0.0050 3 KB  OMEG  PI+                     PHSP
-0.0096 3 K-  RHO+  PI+                     PHSP
-0.0200 3 K*- PI+   PI+                     PHSP
-0.0100 3 K*B PI0  PI+                     PHSP
-0.0100 3 K*B ETA  PI+                     PHSP
-0.0078 3 K*B RHO0  PI+                     PHSP
-0.0050 3 K*B OMEG  PI+                     PHSP
-0.0100 3 K*- RHO+  PI+                     PHSP
-0.0060 4 K-  PI+   PI+    PI0              PHSP
-0.0100 4 KB  PI+   PI+    PI-              PHSP
-0.0200 4 KB  PI+   PI0   PI0              PHSP
-0.0035 5 K-  PI+   PI+    PI+    PI-        PHSP
-0.0035 5 K-  PI+   PI+    PI0   PI0        PHSP
-0.0035 5 KB  PI+   PI+    PI-   PI0        PHSP
-0.0035 5 KB  PI+   PI0   PI0   PI0        PHSP
-0.0200 3 KB  KB   K+                     PHSP
-0.0070 2 PHI PI+                           SVS
-0.0100 3 PHI PI+   PI0                    PHSP
-0.0082 2 KB  K+                          PHSP2
-0.0052 2 K*B  K+                         SVS
-0.0052 2 K*+  KB                         SVS
-0.0140 2 K*B K*+                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0 
-0.0040 3 K+   K-  PI+                     PHSP
-0.0010 3 K+  KB  PI0                     PHSP
-0.0010 3 KB  K0  PI+                      PHSP
-0.0010 3 K*+ K-  PI+                      PHSP
-0.0010 3 K+  K*- PI+                      PHSP
-0.0010 3 K*+ KB  PI0                     PHSP
-0.0010 3 K+  K*B PI0                     PHSP
-0.0010 3 K*B K0  PI+                      PHSP
-0.0010 3 KB  K*0 PI+                      PHSP
-0.0026 2 PI0 PI+                          PHSP2
-0.0002 2 RHO0 PI+                         SVS
-0.0032 3 PI+   PI+   PI-                   PHSP
-0.0030 3 PI+   PI0  PI0                   PHSP
-0.0030 4 PI+   PI+   PI-  PI0              PHSP
-0.0020 4 PI+   PI0  PI0  PI0              PHSP
-0.0076 2 ETA PI+                         PHSP2
-0.0030 3 ETA PI+  PI0                    PHSP
-0.0030 4 ETA PI+  PI+  PI-                PHSP
-0.0020 4 ETA PI+  PI0 PI0                PHSP
-Enddecay
-Decay D-
-0.0504 3 K*0  E-  NUEB                    ISGW2
-0.0929 3 K0   E-  NUEB                    ISGW2
-0.0036 3 K10  E-  NUEB                    ISGW2
-0.0038 3 K2*0 E-  NUEB                    ISGW2
-0.0064 3 PI0  E-  NUEB                    ISGW2
-0.0028 3 ETA  E-  NUEB                    ISGW2
-0.0011 3 ETA' E-  NUEB                    ISGW2
-0.0030 3 RHO0 E-  NUEB                    ISGW2
-0.0029 3 OMEG E-  NUEB                   ISGW2
-0.0504 3 K*0  MU-  NUMB                     ISGW2
-0.0929 3 K0   MU-  NUMB                     ISGW2
-0.0036 3 K10  MU-  NUMB                     ISGW2
-0.0038 3 K2*0 MU-  NUMB                     ISGW2
-0.0064 3 PI0  MU-  NUMB                     ISGW2
-0.0028 3 ETA  MU-  NUMB                     ISGW2
-0.0011 3 ETA' MU-  NUMB                     ISGW2
-0.0030 3 RHO0 MU-  NUMB                     ISGW2
-0.0029 3 OMEG MU-  NUMB                    ISGW2
-0.0009 2 MU- NUMB                          PHSP
-0.0024 2 TAU- NUTB                        PHSP
-0.0292 2 K0  PI-                         PHSP2
-0.0722 2 RHO- K0                         SVS
-0.0807 2 A1- K0                         SVS
-0.0213 2 K*0  PI-                        SVS
-0.0508 2 K1*0  PI-                        SVS
-0.0345 2 K2*0  PI-                        PHSP
-0.0503 2 K*0 RHO-                        SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0
-0.0548 3 K+  PI-  PI-                    PHSP
-0.0155 3 K0  PI0  PI-                    PHSP
-0.0100 3 K0  ETA  PI-                    PHSP
-0.0050 3 K0  RHO0  PI-                    PHSP
-0.0050 3 K0  OMEG  PI-                    PHSP
-0.0096 3 K+  RHO-  PI-                    PHSP
-0.0200 3 K*+ PI-  PI-                    PHSP
-0.0100 3 K*0 PI0  PI-                    PHSP
-0.0100 3 K*0 ETA  PI-                    PHSP
-0.0078 3 K*0 RHO0  PI-                    PHSP
-0.0050 3 K*0 OMEG  PI-                    PHSP
-0.0100 3 K*+ RHO-  PI-                    PHSP
-0.0060 4 K+  PI-  PI-   PI0              PHSP
-0.0100 4 K0  PI-  PI-   PI+               PHSP
-0.0200 4 K0  PI-  PI0   PI0              PHSP
-0.0035 5 K+  PI-  PI-   PI-   PI+         PHSP
-0.0035 5 K+  PI-  PI-   PI0   PI0        PHSP
-0.0035 5 K0  PI-  PI-   PI+    PI0        PHSP
-0.0035 5 K0  PI-  PI0   PI0   PI0        PHSP
-0.0200 3 K0  K0   K-                     PHSP
-0.0070 2 PHI PI-                          SVS
-0.0100 3 PHI PI-  PI0                    PHSP
-0.0082 2 K0  K-                          PHSP2
-0.0052 2 K*0  K-                         SVS
-0.0052 2 K*-  K0                         SVS
-0.0140 2 K*0 K*-                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0 
-0.0040 3 K-   K+  PI-                    PHSP
-0.0010 3 K-  K0  PI0                     PHSP
-0.0010 3 KB  K0  PI-                     PHSP
-0.0010 3 K*- K+  PI-                     PHSP
-0.0010 3 K-  K*+ PI-                     PHSP
-0.0010 3 K*- K0  PI0                     PHSP
-0.0010 3 K-  K*0 PI0                     PHSP
-0.0010 3 K*0 KB  PI-                     PHSP
-0.0010 3 K0  K*B PI-                     PHSP
-0.0026 2 PI0 PI-                         PHSP2
-0.0002 2 RHO0 PI-                        SVS
-0.0032 3 PI-  PI+   PI-                   PHSP
-0.0030 3 PI-  PI0  PI0                   PHSP
-0.0030 4 PI-  PI+   PI-  PI0              PHSP
-0.0020 4 PI-  PI0  PI0  PI0              PHSP
-0.0076 2 ETA PI-                        PHSP2
-0.0030 3 ETA PI- PI0                    PHSP
-0.0030 4 ETA PI- PI+  PI-                PHSP
-0.0020 4 ETA PI- PI0 PI0                PHSP
-Enddecay
-Alias  K*-R  K*-                     
-Alias  K*BR  K*B                    
-Decay K*-R
-1.0000 2 KB PI-                          VSS
-Enddecay
-Decay K*BR
-1.0000 2 KB PI0                          VSS
-Enddecay
-Decay D0
-0.0198 3 K*-  E+  NUE                    ISGW2
-0.0364 3 K-   E+  NUE                    ISGW2
-0.0014 3 K1-  E+  NUE                    ISGW2
-0.0015 3 K2*- E+  NUE                    ISGW2
-0.0050 3 PI-  E+  NUE                    ISGW2
-0.0029 3 RHO- E+  NUE                    ISGW2
-0.0198 3 K*-  MU+ NUM                    ISGW2
-0.0364 3 K-   MU+ NUM                    ISGW2
-0.0014 3 K1-  MU+ NUM                    ISGW2
-0.0015 3 K2*- MU+ NUM                    ISGW2
-0.0050 3 PI-  MU+ NUM                    ISGW2
-0.0029 3 RHO- MU+ NUM                    ISGW2
-0.0391 2 K-  PI+                          PHSP2
-0.0220 2 KB  PI0                         PHSP2
-0.0077 2 KB  ETA                         PHSP2
-0.0174 2 KB  ETA'                        PHSP2
-0.0207 2 OMEG KB                         SVS  
-0.0159 2 K*B ETA                         SVS
-0.0020 2 K*B ETA'                        SVS
-0.0798 2 A1+ K-                          SVS
-0.0600 2 K*- RHO+                        SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0
-0.0161 2 K*B RHO0                        SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0
-0.0111 2 K*B OMEG                        SVV_HELAMP  1.0 0.0 1.0 0.0 1.0 0.0
-0.1307 3 K-  PI+   PI0                    D0_DALITZ
-0.0259 2 K*-R PI+                         SVS
-0.0085 2 K*BR PI0                        SVS
-0.0107 2 K1- PI+                          SVS
-0.0071 2 K1B PI0                         SVS
-0.0213 3 KB  PI+   PI-                    PHSP
-0.0145 3 KB  PI0  PI0                    PHSP
-0.0174 3 K*B PI+   PI-                    PHSP
-0.0116 3 K*B PI0  PI0                    PHSP
-0.0100 3 K*- PI+   PI0                    PHSP
-0.0068 3 K-  RHO+ PI0                    PHSP
-0.0060 3 K-  PI+   RHO0                   PHSP
-0.0303 3 K-  PI+   OMEG                   PHSP
-0.0100 3 K-  PI+   ETA                    PHSP
-0.0075 3 K-  PI+   ETA'                   PHSP
-0.0143 4 K-  PI+   PI+    PI-              PHSP
-0.0407 4 KB  PI+   PI-   PI0              PHSP
-0.0698 4 K-  PI+   PI0   PI0              PHSP
-0.0200 4 KB  PI0  PI0   PI0              PHSP
-0.0038 5 K-  PI+   PI+    PI-   PI0        PHSP
-0.0038 5 K-  PI+   PI0   PI0   PI0        PHSP
-0.0038 5 KB  PI+   PI-   PI+    PI-        PHSP
-0.0038 5 KB  PI+   PI-   PI0   PI0        PHSP
-0.0088 2 PHI KB                          SVS
-0.0051 3 KB  K+   K-                     PHSP
-0.0010 3 K0S K0S  K0S                    PHSP
-0.0044 2 K+  K-                          PHSP2
-0.0006 2 K0S K0S                         PHSP2
-0.0006 2 K0L K0L                         PHSP2
-0.0020 2 K*0 KB                          SVS
-0.0020 2 K*B K0                          SVS
-0.0019 2 K*- K+                          SVS
-0.0035 2 K*+ K-                          SVS
-0.0010 2 K*B K*0                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0 
-0.0020 2 PHI PI0                         SVS
-0.0025 3 PHI PI+   PI-                    PHSP
-0.0030 4 K+  K-   PI+   PI-               PHSP
-0.0030 4 K+  K-   PI0  PI0               PHSP
-0.0015 4 KB  K0   PI+   PI-               PHSP
-0.0015 4 KB  K0   PI0  PI0               PHSP
-0.0015 2 PI+  PI-                         PHSP2
-0.0009 2 PI0 PI0                         PHSP2
-0.0010 2 ETA PI0                         PHSP2
-0.0010 2 ETA'  PI0                       PHSP2
-0.0010 2 ETA ETA                         PHSP2
-0.0040 2 RHO+ PI-                        SVS
-0.0040 2 RHO- PI+                         SVS
-0.0020 2 RHO0 PI0                        SVS
-0.0020 3 PI+   PI-  PI0                   PHSP
-0.0010 3 PI0  PI0  PI0                   PHSP
-0.0081 4 PI+   PI+   PI-  PI-              PHSP
-0.0050 4 PI+   PI+   PI0  PI0              PHSP
-0.0140 5 PI+   PI-  PI+   PI-  PI0         PHSP
-0.0060 5 PI+   PI-  PI0  PI0  PI0         PHSP
-Enddecay
-Alias  K*+R  K*+                     
-Alias  K*0R  K*0                    
-Decay K*+R
-1.0000 2 K0 PI+                           VSS
-Enddecay
-Decay K*0R
-1.0000 2 K0 PI0                          VSS
-Enddecay
-Decay D0B
-0.0198 3 K*+  E-  NUEB                    ISGW2
-0.0364 3 K+   E-  NUEB                    ISGW2
-0.0014 3 K1+  E-  NUEB                    ISGW2
-0.0015 3 K2*+ E-  NUEB                    ISGW2
-0.0050 3 PI+   E-  NUEB                    ISGW2
-0.0029 3 RHO+ E-  NUEB                    ISGW2
-0.0198 3 K*+  MU- NUMB                    ISGW2
-0.0364 3 K+   MU- NUMB                    ISGW2
-0.0014 3 K1+  MU- NUMB                     ISGW2
-0.0015 3 K2*+ MU- NUMB                     ISGW2
-0.0050 3 PI+   MU- NUMB                     ISGW2
-0.0029 3 RHO+ MU- NUMB                     ISGW2
-0.0391 2 K+  PI-                         PHSP2
-0.0220 2 K0  PI0                         PHSP2
-0.0077 2 K0  ETA                         PHSP2
-0.0174 2 K0  ETA'                        PHSP2
-0.0207 2 OMEG K0                         SVS  
-0.0159 2 K*0 ETA                         SVS
-0.0020 2 K*0 ETA'                        SVS
-0.0798 2 A1- K+                          SVS
-0.0600 2 K*+ RHO-                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0 
-0.0161 2 K*0 RHO0                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0 
-0.0111 2 K*0 OMEG                        SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0 
-0.1307 3 K+  PI-  PI0                    D0_DALITZ
-0.0259 2 K*+R PI-                        SVS
-0.0085 2 K*0R PI0                        SVS
-0.0107 2 K1+ PI-                         SVS
-0.0071 2 K10 PI0                         SVS
-0.0213 3 K0  PI+   PI-                    PHSP
-0.0145 3 K0  PI0  PI0                    PHSP
-0.0174 3 K*0 PI+   PI-                    PHSP
-0.0116 3 K*0 PI0  PI0                    PHSP
-0.0100 3 K*+ PI-  PI0                    PHSP
-0.0068 3 K+  RHO- PI0                    PHSP
-0.0060 3 K+  PI-  RHO0                   PHSP
-0.0303 3 K+  PI-  OMEG                   PHSP
-0.0100 3 K+  PI-  ETA                    PHSP
-0.0075 3 K+  PI-  ETA'                   PHSP
-0.0143 4 K+  PI-  PI+    PI-              PHSP
-0.0407 4 K0  PI+   PI-   PI0              PHSP
-0.0698 4 K+  PI-  PI0   PI0              PHSP
-0.0200 4 K0  PI0  PI0   PI0              PHSP
-0.0038 5 K+  PI-  PI+    PI-   PI0        PHSP
-0.0038 5 K+  PI-  PI0   PI0   PI0        PHSP
-0.0038 5 K0  PI+   PI-   PI+    PI-        PHSP
-0.0038 5 K0  PI+   PI-   PI0   PI0        PHSP
-0.0088 2 PHI K0                          SVS
-0.0051 3 K0  K+   K-                     PHSP
-0.0010 3 K0S K0S  K0S                    PHSP
-0.0044 2 K+  K-                          PHSP2
-0.0006 2 K0S K0S                         PHSP2
-0.0006 2 K0L K0L                         PHSP2
-0.0020 2 K*B K0                          SVS
-0.0020 2 K*0 KB                          SVS
-0.0019 2 K*+ K-                          SVS
-0.0035 2 K*- K+                          SVS
-0.0010 2 K*0 K*B                         SVV_HELAMP 1.0 0.0 1.0 0.0 1.0 0.0
-0.0020 2 PHI PI0                         SVS
-0.0025 3 PHI PI+   PI-                    PHSP
-0.0030 4 K+  K-   PI+   PI-               PHSP
-0.0030 4 K+  K-   PI0  PI0               PHSP
-0.0015 4 KB  K0   PI+   PI-               PHSP
-0.0015 4 KB  K0   PI0  PI0               PHSP
-0.0015 2 PI+  PI-                         PHSP2
-0.0009 2 PI0 PI0                         PHSP2
-0.0010 2 ETA PI0                         PHSP2
-0.0010 2 ETA'  PI0                       PHSP2
-0.0010 2 ETA ETA                         PHSP2
-0.0040 2 RHO+ PI-                        SVS
-0.0040 2 RHO- PI+                         SVS
-0.0020 2 RHO0 PI0                        SVS
-0.0020 3 PI+   PI-  PI0                   PHSP
-0.0010 3 PI0  PI0  PI0                   PHSP
-0.0081 4 PI+   PI+   PI-  PI-              PHSP
-0.0050 4 PI+   PI+   PI0  PI0              PHSP
-0.0140 5 PI+   PI-  PI+   PI-  PI0         PHSP
-0.0060 5 PI+   PI-  PI0  PI0  PI0         PHSP
-Enddecay
-Decay RHO0
-1.000  2 PI+  PI-                         VSS
-Enddecay
-Decay RHO+
-1.000  2 PI+  PI0                         VSS
-Enddecay
-Decay RHO-
-1.000  2 PI- PI0                         VSS
-Enddecay
-Decay F1
-0.1500 3 RHO0 PI+   PI-                   PHSP
-0.0500 3 RHO0 PI0  PI0                   PHSP
-0.0500 3 RHO+ PI-  PI0                   PHSP
-0.0500 3 RHO- PI+   PI0                   PHSP
-0.1400 2 A00  PI0                        VSS
-0.1400 2 A0+  PI-                        VSS
-0.1400 2 A0-  PI+                         VSS
-0.0700 3 ETA  PI+   PI-                   PHSP
-0.0300 3 ETA  PI0  PI0                   PHSP
-0.0300 3 K+   K-   PI0                   PHSP
-0.0200 3 K0   KB   PI0                   PHSP
-0.0300 3 KB   K+   PI-                   PHSP
-0.0300 3 K0   K-   PI+                    PHSP
-0.0700 2 GAMM RHO0                       PHSP
-Enddecay
-Decay F1'
-0.2500 3 K+   K-   PI0                   PHSP
-0.2500 3 K0   KB   PI0                   PHSP
-0.2500 3 KB   K+   PI-                   PHSP
-0.2500 3 K0   K-   PI+                    PHSP
-Enddecay
-Decay F2
-0.5670 2 PI+   PI-                        TSS
-0.2840 2 PI0  PI0                        TSS
-0.0280 4 PI+   PI-  PI+   PI-              PHSP
-0.0660 4 PI+   PI-  PI0  PI0              PHSP
-0.0030 4 PI0  PI0  PI0  PI0              PHSP
-0.0240 2 K+   K-                         TSS
-0.0240 2 K0L  K0S                        TSS
-0.0040 2 ETA  ETA                        TSS
-Enddecay
-Decay F2'
-0.3560 2 K+   K-                         TSS
-0.3560 2 K0L  K0S                        TSS
-0.2790 2 ETA  ETA                        TSS
-0.0060 2 PI+   PI-                        TSS
-0.0030 2 PI0  PI0                        TSS
-Enddecay
-Decay H1
-0.3333 2 RHO+ PI-                        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.3333 2 RHO- PI+                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.3334 2 RHO0 PI0                        VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay H1'
-0.2500 2 K*+  K-                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.2500 2 K*-  K+                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.2500 2 K*B  K0                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.2500 2 K*0  KB                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay 1P1P
-0.3333  2 D*+ PI0                         VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-0.6667  2 D*0 PI+                          VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-Enddecay
-Decay 1P10
-0.6667  2 D*+ PI-                         VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-0.3333  2 D*0 PI0                         VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-Enddecay
-Decay 1P1B
-0.3333  2 D*B PI0                         VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-0.6667  2 D*- PI+                          VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-Enddecay
-Decay 1P1N
-0.3333  2 D*- PI0                         VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-0.6667  2 D*B PI-                         VVS_PWAVE  0.0 0.0 0.0 0.0 1.0 0.0 
-Enddecay
-Decay 3P10
-0.6667  2 D*+ PI-                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.3333  2 D*0 PI0                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay 3P1B
-0.3333  2 D*B PI0                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.6667  2 D*- PI+                          VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay 3P1P
-0.3333  2 D*+ PI0                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.6667  2 D*0 PI+                          VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay 3P1N
-0.3333  2 D*- PI0                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-0.6667  2 D*B PI-                         VVS_PWAVE  1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay 3P20
-0.2090  2 D*+ PI-                         TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.1030  2 D*0 PI0                         TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.4590  2 D+ PI-                          TSS
-0.2290  2 D0 PI0                          TSS
-Enddecay
-Decay 3P2B
-0.1030  2 D*B PI0                         TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.2090  2 D*- PI+                          TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.2290  2 D0B PI0                         TSS
-0.4590  2 D- PI+                           TSS
-Enddecay
-Decay 3P2P
-0.1030  2 D*+ PI0                         TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.2090  2 D*0 PI+                          TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.2290  2 D+ PI0                          TSS
-0.4590  2 D0 PI+                           TSS
-Enddecay
-Decay 3P2N
-0.1030  2 D*- PI0                         TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.2090  2 D*B PI-                         TVS_PWAVE  0.0 0.0 1.0 0.0 0.0 0.0 
-0.2290  2 D- PI0                          TSS
-0.4590  2 D0B PI-                         TSS
-Enddecay
-Decay D21S00
-0.6667  2 D*+ PI-                         SVS
-0.3333  2 D*0 PI0                         SVS
-Enddecay
-Decay D21S0B
-0.3333  2 D*B PI0                         SVS
-0.6667  2 D*- PI+                          SVS
-Enddecay
-Decay D21S0P
-0.3333  2 D*+ PI0                         SVS
-0.6667  2 D*0 PI+                          SVS
-Enddecay
-Decay D21S0N
-0.3333  2 D*- PI0                         SVS
-0.6667  2 D*B PI-                         SVS
-Enddecay
-Decay D23S10
-0.3333  2 D*+ PI-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.1667  2 D*0 PI0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.1667  2 D0  PI0                        VSS
-0.3333  2 D+  PI-                        VSS
-Enddecay
-Decay D23S1B
-0.1667  2 D*B PI0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.3333  2 D*- PI+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.1667  2 D0B  PI0                       VSS
-0.3333  2 D-  PI+                         VSS
-Enddecay
-Decay D23S1P
-0.1667  2 D*+ PI0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.3333  2 D*0 PI+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.1667  2 D+  PI0                        VSS
-0.3333  2 D0  PI+                         VSS
-Enddecay
-Decay D23S1N
-0.1667  2 D*- PI0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.3333  2 D*B PI-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.1667  2 D-  PI0                        VSS
-0.3333  2 D0B  PI-                       VSS
-Enddecay
-Decay OMEG
-0.8880  3 PI-  PI+   PI0                  OMEGA_DALITZ
-0.0850  2 PI0  GAMM                      VSP_PWAVE       
-0.0221  2 PI-  PI+                        VSS
-0.0008  2 ETA  GAMM                      VSP_PWAVE       
-0.0006  3 PI0  E+  E-                    PHSP
-0.0001  3 PI0  MU+ MU-                   PHSP
-0.0020  3 PI+   PI- GAMM                  PHSP
-0.0004  3 PI0  PI0 GAMM                  PHSP
-0.0010  4 PI+  PI- PI+  PI-                PHSP
-Enddecay
-Decay A1+
-0.4920 2 RHO0 PI+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.5080 2 RHO+ PI0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay A10
-0.5000 2 RHO- PI+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.5000 2 RHO+ PI-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay A1-
-0.4920 2 RHO0 PI-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0  
-0.5080 2 RHO- PI0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-Enddecay
-Decay A2+
-0.3500 2 RHO0 PI+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0 
-0.3500 2 RHO+ PI0                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0 
-0.1440 2 ETA  PI+                         TSS
-0.1050 3 OMEG PI+  PI0                    PHSP
-0.0480 2 KB   K+                         TSS
-0.0030 2 PI+   GAMM                       PHSP
-Enddecay
-Decay A2-
-0.3500 2 RHO0 PI-                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0 
-0.3500 2 RHO- PI0                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0 
-0.1440 2 ETA  PI-                        TSS
-0.1050 3 OMEG PI- PI0                    PHSP
-0.0480 2 KB   K-                         TSS
-0.0030 2 PI-  GAMM                       PHSP
-Enddecay
-Decay A20
-0.3500 2 RHO+ PI-                        TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0 
-0.3500 2 RHO- PI+                         TVS_PWAVE 0.0 0.0 1.0 0.0 0.0 0.0 
-0.1440 2 ETA  PI0                        TSS
-0.1050 3 OMEG PI+  PI-                    PHSP
-0.0240 2 K+   K-                         TSS
-0.0120 2 K0L  K0L                        TSS
-0.0120 2 K0S  K0S                        TSS
-0.0030 2 PI0  GAMM                       PHSP
-Enddecay
-Decay B1+
-0.9970 2 OMEG PI+                         VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.0030 2 PI+   GAMM                       VSP_PWAVE
-Enddecay
-Decay B1-
-0.9970 2 OMEG PI-                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.0030 2 PI-  GAMM                       VSP_PWAVE
-Enddecay
-Decay B10
-0.9970 2 OMEG PI0                        VVS_PWAVE 1.0 0.0 0.0 0.0 0.0 0.0 
-0.0030 2 PI0  GAMM                       VSP_PWAVE
-Enddecay
-End
-
-
-
-
-
-
-
-
-
index 52aeb48bcc200e7b3dd098ee12b2e726652d0114..e62aa12dea38ba7870cab34f6b850f650ca5759d 100644 (file)
-*      type        name                 id  mass/GeV width/GeV max_Dm/GeV 3*charge 2*spin lifetime*c/mm Lund-KC
-*
-add  p Parton      d                     1  0.0099          0       0       -1      1       0 1
-add  p Parton      anti-d               -1  0.0099          0       0       1       1       0 0
-add  p Parton      u                     2  0.0056          0       0       2       1       0 2
-add  p Parton      anti-u               -2  0.0056          0       0       -2      1       0 0
-add  p Parton      s                     3  0.199           0       0       -1      1       0 3
-add  p Parton      anti-s               -3  0.199           0       0       1       1       0 0
-add  p Parton      c                     4  1.35            0       0       2       1       0 4
-add  p Parton      anti-c               -4  1.35            0       0       -2      1       0 0
-add  p Parton      b                     5  5.              0       0       -1      1       0 5
-add  p Parton      anti-b               -5  5.              0       0       1       1       0 0
-add  p Parton      t                     6  175.            0       0       2       1       0 6
-add  p Parton      anti-t               -6  175.            0       0       -2      1       0 0
-add  p Parton      b'                    7  400.            0       0       -1      1       0 7
-add  p Parton      anti-b'              -7  400.            0       0       1       1       0 0
-add  p Parton      t'                    8  500.            0       0       2       1       0 8
-add  p Parton      anti-t'              -8  500.            0       0       -2      1       0 0
-add  p InterBoson  g                    21  0               0       0       0       2       0 21
-add  p Lepton      e-                   11  0.000510999     0       0       -3      1       0 11
-add  p Lepton      e+                  -11  0.000510999     0       0       3       1       0 0
-add  p Lepton      nu_e                 12  0               0       0       0       1       0 12
-add  p Lepton      anti-nu_e           -12  0               0       0       0       1       0 0
-add  p Lepton      mu-                  13  0.1056584       0       0       -3      1 658654. 13
-add  p Lepton      mu+                 -13  0.1056584       0       0       3       1 658654. 0
-add  p Lepton      nu_mu                14  0               0       0       0       1       0 14
-add  p Lepton      anti-nu_mu          -14  0               0       0       0       1       0 0
-add  p Lepton      tau-                 15  1.77690         0       0       -3      1 0.08711 15
-add  p Lepton      tau+                -15  1.77690         0       0       3       1 0.08711 0
-add  p Lepton      nu_tau               16  0               0       0       0       1       0 16
-add  p Lepton      anti-nu_tau         -16  0               0       0       0       1       0 0
-add  p Lepton      L-                   17  400.            0       0       -3      1       0 17
-add  p Lepton      L+                  -17  400.            0       0       3       1       0 0
-add  p Lepton      nu_L                 18  0               0       0       0       1       0 18
-add  p Lepton      anti-nu_L           -18  0               0       0       0       1       0 0
-add  p InterBoson  gamma                22  0               0       0       0       2       0 22
-add  p Special     vpho              10022  0               0       0       0       2       0 0
-add  p InterBoson  gammaFSR         100022  0.000000001     0       0       0       2       0 0
-add  p Special     gammafsr         100022  0               0       0       0       2       0 0
-add  p Special     Cerenkov          20022  0               0       0       0       2       0 0
-add  p InterBoson  Z0                   23  91.1876    2.4952       10.     0       2       0 23
-add  p InterBoson  W+                   24  80.403      2.141       10.     3       2       0 24
-add  p InterBoson  W-                  -24  80.403      2.141       10.     -3      2       0 0
-add  p InterBoson  Higgs0               25  200.            0       0       0       0       0 25
-add  p InterBoson  reggeon              28  0               0       0       0       0       0 28
-add  p InterBoson  pomeron              29  0               0       0       0       0       0 29
-add  p InterBoson  Z'0                  32  500.            0       0       0       2       0 32
-add  p InterBoson  Z''0                 33  900.            0       0       0       2       0 33
-add  p InterBoson  W'+                  34  500.            0       0       3       2       0 34
-add  p InterBoson  W'-                 -34  500.            0       0       -3      2       0 0
-add  p InterBoson  Higgs'0              35  300.            0       0       0       0       0 35
-add  p InterBoson  A0                   36  300.            0       0       0       0       0 36
-add  p InterBoson  Higgs+               37  300.            0       0       3       0       0 37
-add  p InterBoson  Higgs-              -37  300.            0       0       -3      0       0 0
-add  p InterBoson  R0                   40  5000.           0       0       0       2       0 40
-add  p InterBoson  anti-R0             -40  5000.           0       0       0       2       0 0
-add  p Special     Xu0                  41  1.               0       0       0       0       0 41
-add  p Special     Xu+                  42  1.               0       0      +3       0       0 42
-add  p Special     Xu-                 -42  1.               0       0      -3       0       0 0
-add  p Special     specflav             81  0               0       0       0       0       0 81
-add  p Special     rndmflav             82  0               0       0       0       0       0 82
-add  p Special     anti-rndmflav       -82  0               0       0       0       0       0 0
-add  p Special     phasespa             83  0               0       0       0       0       0 83
-add  p Special     c-hadron             84  2.0             0       0       2       0     0.1 84
-add  p Special     anti-c-hadron       -84  2.0             0       0       -2      0     0.1 0
-add  p Special     b-hadron             85  5.0             0       0       -1      0   0.387 85
-add  p Special     anti-b-hadron       -85  5.0             0       0       1       0   0.387 0
-add  p Special     t-hadron             86  175.            0       0       2       0       0 86
-add  p Special     anti-t-hadron       -86  175.            0       0       -2      0       0 0
-add  p Special     b'-hadron            87  400.            0       0       -1      0       0 87
-add  p Special     anti-b'-hadron      -87  400.            0       0       1       0       0 0
-add  p Special     t'-hadron            88  500.            0       0       2       0       0 88
-add  p Special     anti-t'-hadron      -88  500.            0       0       -2      0       0 0
-add  p Special     Wvirt+               89  0               0       0       3       0       0 89
-add  p Special     Wvirt-              -89  0               0       0       -3      0       0 0
-add  p Special     diquark              90  0               0       0       0       0       0 90
-add  p Special     anti-diquark        -90  0               0       0       0       0       0 0
-add  p Special     cluster              91  0               0       0       0       0       0 91
-add  p Special     string               92  0               0       0       0       0       0 92
-add  p Special     indep                93  0               0       0       0       0       0 93
-add  p Special     CMshower             94  0               0       0       0       0       0 94
-add  p Special     SPHEaxis             95  0               0       0       0       0       0 95
-add  p Special     THRUaxis             96  0               0       0       0       0       0 96
-add  p Special     CLUSjet              97  0               0       0       0       0       0 97
-add  p Special     CELLjet              98  0               0       0       0       0       0 98
-add  p Special     table               99  0               0       0       0       0       0 99
-add  p Special     bsbottom            500 9.2            0.01        0       0       0       0 500
-add  p Meson       pi0                 111  0.134977        0       0       0       0       0 111
-add  p Meson       pi+                 211  0.139570        0       0       3       0  7804.5 101
-add  p Meson       pi-                -211  0.139570        0       0       -3      0  7804.5 0
-add  p Special     pi_diff+            210  0               0       0       3       0       0 281
-add  p Special     pi_diff-           -210  0               0       0       -3      0       0 0
-add  p Meson       pi(2S)0           20111  1.30            0.40    0.5     0       0       0 0
-add  p Meson       pi(2S)+           20211  1.30            0.40    0.5     3       0       0 0
-add  p Meson       pi(2S)-          -20211  1.30            0.40    0.5     -3      0       0 0
-add  p Meson       eta                 221  0.547785        0       0       0       0       0 112
-add  p Meson       eta(2S)           20221  1.294           0.055   0.2     0       0       0 0
-add  p Meson       eta'                331  0.95778         0.0002  0.002   0       0       0 113 
-add  p Meson       eta(1405)       9020221  1.4098          0.0511  0.3     0       0       0 0
-add  p Meson       eta(1475)        100331  1.476           0.087   0.45    0       0       0 0
-add  p Meson       rho0                113  0.77549         0.1494  0.48    0       2       0 131
-add  p Special     rho_diff0           110  0               0       0       0       2       0 284
-add  p Meson       rho+                213  0.77549         0.1494  0.48    3       2       0 121
-add  p Meson       rho-               -213  0.77549         0.1494  0.48    -3      2       0 0
-add  p Meson       rho(2S)0          30113  1.465           0.40    0.5     0       2       0 0
-add  p Meson       rho(2S)+          30213  1.465           0.40    0.5     3       2       0 0
-add  p Meson       rho(2S)-         -30213  1.465           0.40    0.5     -3      2       0 0
-add  p Meson       rho(3S)0          40113  1.720           0.250   0.5     0       2       0 0
-add  p Meson       rho(3S)+          40213  1.720           0.250   0.5     3       2       0 0
-add  p Meson       rho(3S)-         -40213  1.720           0.250   0.5     -3      2       0 0
-add  p Meson       omega               223  0.78265         0.00849 0.18    0       2       0 132
-add  p Special     omega_diff          220  0               0       0       0       2       0 285
-add  p Meson       omega(2S)         30223  1.42            0.174   0.4     0       2       0 0
-add  p Meson       phi                 333  1.019455        0.00426 0.032   0       2       0 133
-add  p Special     phi_diff            330  0               0       0       0       2       0 286
-add  p Meson       a_00              10111  0.9847          0.057   0.050   0       0       0 171
-add  p Meson       a_0+              10211  0.9847          0.057   0.050   3       0       0 161
-add  p Meson       a_0-             -10211  0.9847          0.057   0.050   -3      0       0 0
-add  p Meson       f_0               10221  0.980           0.05    0.0   0       0       0 172 
-add  p Meson       f'_0              10331  1.4             0.3     0.35    0       0       0 173
-add  p Meson       b_10              10113  1.2295          0.142   0.25    0       2       0 151
-add  p Meson       b_1+              10213  1.2295          0.142   0.25    3       2       0 141
-add  p Meson       b_1-             -10213  1.2295          0.142   0.25    -3      2       0 0
-add  p Meson       h_1               10223  1.17            0.36    0.2     0       2       0 152
-add  p Meson       h'_1              10333  1.386           0.091   0.010   0       2       0 153
-add  p Meson       a_10              20113  1.23            0.4     0.6     0       2       0 191
-add  p Meson       a_1+              20213  1.23            0.4     0.6     3       2       0 181
-add  p Meson       a_1-             -20213  1.23            0.4     0.6     -3      2       0 0
-add  p Meson       f_1               20223  1.2818          0.0242  0.05    0       2       0 192
-add  p Meson       f'_1              20333  1.4263          0.0549  0.10    0       2       0 193
-add  p Meson       a_20                115  1.3183          0.107   0.5     0       4       0 211
-add  p Meson       a_2+                215  1.3183          0.107   0.5     3       4       0 201
-add  p Meson       a_2-               -215  1.3183          0.107   0.5     -3      4       0 0
-add  p Meson       f_2                 225  1.2751          0.185   0.27    0       4       0 212
-add  p Meson       f_0(1500)         50221  1.505           0.109   0.3     0       0       0 0
-add  p Meson       f_0(1710)        110331  1.724           0.137   0.5     0       0       0 0
-add  p Meson       f'_2                335  1.525           0.073   0.2     0       4       0 213
-add  p Meson       f_2(1950)       9050225  1.944           0.472   1.0     0       4       0 0
-add  p Meson       f_4(2050)           229  2.018           0.237   0.7     0       8       0 0
-add  p Meson       K0                  311  0.497648        0       0       0       0       0 102
-add  p Meson       anti-K0            -311  0.497648        0       0       0       0       0 0
-add  p Meson       K_S0                310  0.497648        0       0       0       0  26.842 222
-add  p Meson       K_L0                130  0.497648        0       0       0       0  15340. 221
-add  p Meson       K+                  321  0.493677        0       0       3       0   3713. 103
-add  p Meson       K-                 -321  0.493677        0       0       -3      0   3713. 0
-add  p Meson       K*0                 313  0.89600         0.0503  0.23     0       2      0 122
-add  p Meson       anti-K*0           -313  0.89600         0.0503  0.23     0       2      0 0
-add  p Meson       K*+                 323  0.89166         0.0508  0.23     3       2      0 123
-add  p Meson       K*-                -323  0.89166         0.0508  0.23     -3      2      0 0
-add  p Meson       K_0*0             10311  1.414           0.290   0.6     0       0       0 162
-add  p Meson       anti-K_0*0       -10311  1.414           0.290   0.6     0       0       0 0
-add  p Meson       K_0*+             10321  1.414           0.232   0.6     3       0       0 163
-add  p Meson       K_0*-            -10321  1.414           0.232   0.6     -3      0       0 0
-add  p Meson       K_10              10313  1.272           0.09    0.2     0       2       0 142
-add  p Meson       anti-K_10        -10313  1.272           0.09    0.2     0       2       0 0
-add  p Meson       K_1+              10323  1.272           0.09    0.2     3       2       0 143
-add  p Meson       K_1-             -10323  1.272           0.09    0.2     -3      2       0 0
-add  p Meson       K_2*0               315  1.4324          0.109   0.7     0       4       0 202
-add  p Meson       anti-K_2*0         -315  1.4324          0.109   0.7     0       4       0 0
-add  p Meson       K_2*+               325  1.4256          0.0985  0.7     3       4       0 203
-add  p Meson       K_2*-              -325  1.4256          0.0985  0.7     -3      4       0 0
-add  p Meson       K'_10             20313  1.403           0.174   0.4     0       2       0 182
-add  p Meson       anti-K'_10       -20313  1.403           0.174   0.4     0       2       0 0
-add  p Meson       K'_1+             20323  1.403           0.174   0.4     3       2       0 183
-add  p Meson       K'_1-            -20323  1.403           0.174   0.4     -3      2       0 0
-add  p Meson       K'*0             100313  1.414           0.232   0.6      0      2       0 425
-add  p Meson       anti-K'*0       -100313  1.414           0.232   0.6      0      2       0  0  
-add  p Meson       K'*+             100323  1.414           0.232   0.6      3      2       0 426 
-add  p Meson       K'*-            -100323  1.414           0.232   0.6     -3      2       0  0 
-add  p Meson       K''*0             30313  1.717           0.322   0.7      0      2       0 427 
-add  p Meson       anti-K''*0       -30313  1.717           0.322   0.7      0      2       0  0 
-add  p Meson       K''*+             30323  1.717           0.322   0.7      3      2       0 428
-add  p Meson       K''*-            -30323  1.717           0.322   0.7     -3      2       0  0  
-add  p Meson       K_3*0               317  1.776           0.159   0.7      0      6       0 429
-add  p Meson       anti-K_3*0         -317  1.776           0.159   0.7      0      6       0  0
-add  p Meson       K_3*+               327  1.776           0.159   0.7      3      6       0 430
-add  p Meson       K_3*-              -327  1.776           0.159   0.7     -3      6       0  0
-add  p Meson       K_4*0               319  2.045           0.198   0.2      0      8       0 431  
-add  p Meson       anti-K_4*0         -319  2.045           0.198   0.2      0      8       0  0
-add  p Meson       K_4*+               329  2.045           0.198   0.2      3      8       0 432
-add  p Meson       K_4*-              -329  2.045           0.198   0.2     -3      8       0  0
-add  p Meson       D+                  411  1.86962         0       0        3      0  0.3118 104
-add  p Meson       D-                 -411  1.86962         0       0        -3     0  0.3118 0  
-add  p Meson       D0                  421  1.86484         0       0        0      0  0.1229 105
-add  p Meson       anti-D0            -421  1.86484         0       0        0      0  0.1229 0  
-add  p Meson       D0H                 422  1.86484          0       0        0       0  0.1234 105
-add  p Meson       D0L                -422  1.86484          0       0        0       0  0.1234 0
-add  p Meson       D*+                 413  2.01027         0.000096 0.0004  3      2       0 124
-add  p Meson       D*-                -413  2.01027         0.000096 0.0004  -3     2       0 0  
-add  p Meson       D*0                 423  2.00697         0       0        0      2       0 125
-add  p Meson       anti-D*0           -423  2.00697         0       0        0      2       0 0  
-add  p Meson       D_0*+             10411  2.403           0.283   0.303    3      0       0 164
-add  p Meson       D_0*-            -10411  2.403           0.283   0.303    -3     0       0 0  
-add  p Meson       D_0*0             10421  2.352           0.261   0.299    0      0       0 165
-add  p Meson       anti-D_0*0       -10421  2.352           0.261   0.299    0      0       0 0  
-add  p Meson       D_1+              10413  2.4234          0.025   0.28     3      2       0 144
-add  p Meson       D_1-             -10413  2.4234          0.025   0.28     -3     2       0 0  
-add  p Meson       D_10              10423  2.4223          0.0204  0.272    0      2       0 145
-add  p Meson       anti-D_10        -10423  2.4223          0.0204  0.272    0      2       0 0  
-add  p Meson       D_2*+               415  2.459           0.029   0.312    3      4       0 204
-add  p Meson       D_2*-              -415  2.459           0.029   0.312    -3     4       0 0  
-add  p Meson       D_2*0               425  2.4611          0.043   0.309    0      4       0 205
-add  p Meson       anti-D_2*0         -425  2.4611          0.043   0.309    0      4       0 0  
-add  p Meson       D'_1+             20413  2.461           0.29    0.314    3      2       0 184
-add  p Meson       D'_1-            -20413  2.461           0.29    0.314    -3     2       0 0
-add  p Meson       D'_10             20423  2.461           0.29    0.311    0      2       0 185
-add  p Meson       anti-D'_10       -20423  2.461           0.29    0.311    0      2       0 0
-add  p Meson       D_s+                431  1.96849         0       0        3      0  0.1499 106 
-add  p Meson       D_s-               -431  1.96849         0       0        -3     0  0.1499 0  
-add  p Meson       D_s*+               433  2.1123          0       0        3      2       0 126
-add  p Meson       D_s*-              -433  2.1123          0       0        -3     2       0 0  
-add  p Meson       D_s0*+            10431  2.3178          0       0        3      0       0 166
-add  p Meson       D_s0*-           -10431  2.3178          0       0        -3     0       0 0  
-add  p Meson       D_s1+             10433  2.4596          0       0        3      2       0 146
-add  p Meson       D_s1-            -10433  2.4596          0       0        -3     2       0 0  
-add  p Meson       D_s2*+              435  2.5726          0.020   0.06     3      4       0 206
-add  p Meson       D_s2*-             -435  2.5726          0.020   0.06     -3     4       0 0  
-add  p Meson       D'_s1+            20433  2.53535         0       0        3      2       0 186
-add  p Meson       D'_s1-           -20433  2.53535         0       0        -3     2       0 0  
-add  p Meson       D(2S)+            30411  2.58            0       0        3      0       0 0
-add  p Meson       D(2S)-           -30411  2.58            0       0        -3     0       0 0
-add  p Meson       D(2S)0            30421  2.58            0       0        0      0       0 0
-add  p Meson       anti-D(2S)0      -30421  2.58            0       0        0      0       0 0
-add  p Meson       D*(2S)+           30413  2.64            0       0        3      2       0 0
-add  p Meson       D*(2S)-          -30413  2.64            0       0        -3     2       0 0
-add  p Meson       D*(2S)0           30423  2.64            0       0        0      2       0 0
-add  p Meson       anti-D*(2S)0     -30423  2.64            0       0        0      2       0 0
-add  p Meson       B0                  511  5.2794          0       0       0       0   0.462 107
-add  p Meson       anti-B0            -511  5.2794          0       0       0       0   0.462 0
-add  p Meson       B+                  521  5.2791          0       0       3       0   0.502 108
-add  p Meson       B-                 -521  5.2791          0       0       -3      0   0.502 0
-add  p Meson       B0L                 150  5.2794          0       0       0       0   0.462 0
-add  p Meson       B0H                 510  5.2794          0       0       0       0   0.462 0
-add  p Meson       B_s0L               350  5.36930         0       0       0       0   0.490 0
-add  p Meson       B_s0H               530  5.36930         0       0       0       0   0.430 0
-add  p Meson       B*0                 513  5.3248          0       0       0       2       0 127
-add  p Meson       anti-B*0           -513  5.3248          0       0       0       2       0 0
-add  p Meson       B*+                 523  5.3246          0       0       3       2       0 128
-add  p Meson       B*-                -523  5.3246          0       0       -3      2       0 0
-add  p Meson       B_0*0             10511  5.697           0.1     0.2     0       0       0 167
-add  p Meson       anti-B_0*0       -10511  5.697           0.1     0.2     0       0       0 0
-add  p Meson       B_0*+             10521  5.697           0.1     0.2     3       0       0 168
-add  p Meson       B_0*-            -10521  5.697           0.1     0.2     -3      0       0 0
-add  p Meson       B_10              10513  5.679           0.1     0.2     0       2       0 147
-add  p Meson       anti-B_10        -10513  5.679           0.1     0.2     0       2       0 0
-add  p Meson       B_1+              10523  5.679           0.1     0.2     3       2       0 148
-add  p Meson       B_1-             -10523  5.679           0.1     0.2     -3      2       0 0
-add  p Meson       B_2*0               515  5.692           0.1     0.2     0       4       0 207
-add  p Meson       anti-B_2*0         -515  5.692           0.1     0.2     0       4       0 0
-add  p Meson       B_2*+               525  5.692           0.1     0.2     3       4       0 208
-add  p Meson       B_2*-              -525  5.692           0.1     0.2     -3      4       0 0
-add  p Meson       B'_10             20513  5.740           0.1     0.2     0       2       0 187
-add  p Meson       anti-B'_10       -20513  5.740           0.1     0.2     0       2       0 0
-add  p Meson       B'_1+             20523  5.740           0.1     0.2     3       2       0 188
-add  p Meson       B'_1-            -20523  5.740           0.1     0.2     -3      2       0 0
-add  p Meson       B_s0                531  5.36930         0       0       0       0   0.460 109
-add  p Meson       anti-B_s0          -531  5.36930         0       0       0       0   0.460 0
-add  p Meson       B_s*0               533  5.4163          0       0       0       2       0 129
-add  p Meson       anti-B_s*0         -533  5.4163          0       0       0       2       0 0
-add  p Meson       B_s0*0            10531  5.766           0.1     0.12    0       0       0 169
-add  p Meson       anti-B_s0*0      -10531  5.766           0.1     0.12    0       0       0 0
-add  p Meson       B_s10             10533  5.810           0.1     0.12    0       2       0 149
-add  p Meson       anti-B_s10       -10533  5.810           0.1     0.12    0       2       0 0
-add  p Meson       B_s2*0              535  5.853           0.1     0.2     0       4       0 209
-add  p Meson       anti-B_s2*0        -535  5.853           0.1     0.2     0       4       0 0
-add  p Meson       B'_s10            20533  5.840           0.1     0.2     0       2       0 189
-add  p Meson       anti-B'_s10      -20533  5.840           0.1     0.2     0       2       0 0
-add  p Meson       B_c+                541  6.400           0       0       3       0   0.140 110
-add  p Meson       B_c-               -541  6.400           0       0       -3      0   0.140 0
-add  p Meson       B_c*+               543  6.602           0       0       3       2       0 130
-add  p Meson       B_c*-              -543  6.602           0       0       -3      2       0 0
-add  p Meson       B_c0*+            10541  7.25            0.02    0.06    3       0       0 170
-add  p Meson       B_c0*-           -10541  7.25            0.02    0.06    -3      0       0 0
-add  p Meson       B_c1+             10543  7.30            0.02    0.06    3       2       0 150
-add  p Meson       B_c1-            -10543  7.30            0.02    0.06    -3      2       0 0
-add  p Meson       B_c2*+              545  7.350           0.02    0.06    3       4       0 210
-add  p Meson       B_c2*-             -545  7.350           0.02    0.06    -3      4       0 0
-add  p Meson       B'_c1+            20543  7.40            0.2     0.2     3       2       0 190
-add  p Meson       B'_c1-           -20543  7.40            0.2     0.2     -3      2       0 0
-add  p Meson       eta_c               441  2.9798          0.0265  0.15    0       0       0 114 
-add  p Meson       eta_c(2S)         20441  3.637           0.014   0.07    0       0       0 460
-add  p Meson       J/psi               443  3.096916      0.0000934 0.0002  0       2       0 134
-add  p Special     psi_diff            440  0               0       0       0       2       0 287
-add  p Meson       psi(2S)           30443  3.68609        0.000327 0.0008  0       2       0 231  
-add  p Meson       psi(3770)         40443  3.7724          0.0252  0.030   0       2       0 0  
-add  p Meson       psi(4040)         50443  4.039           0.080   0.100   0       2       0 0  
-add  p Meson       psi(4160)         60443  4.153           0.103   0.150   0       2       0 0  
-add  p Meson       psi(4415)         70443  4.421           0.062   0.050   0       2       0 0  
-add  p Meson       h_c               10443  3.52528         0       0       0       2       0 154
-add  p Meson       chi_c0            10441  3.41475         0.0104  0.104   0       0       0 174
-add  p Meson       chi_c1            20443  3.51066         0.00089 0.01    0       2       0 194
-add  p Meson       chi_c2              445  3.55620         0.00205 0.021   0       4       0 214
-add  p Meson       eta_b               551  9.403           0       0       0       0       0 115
-add  p Meson       eta_b(2S)         20551  9.997           0       0       0       0       0 401
-add  p Meson       eta_b(3S)         40551 10.335           0       0       0       0       0 402
-add  p Meson       Upsilon             553  9.46030      0.00005402 0.0005  0       2       0 135
-add  p Meson       Upsilon(2S)       30553 10.02326      0.00003198 0.0004  0       2       0 235
-add  p Meson       Upsilon(3S)       60553 10.3552       0.00002032 0.00026 0       2       0 403
-add  p Meson       Upsilon(4S)       70553 10.5794          0.0205  0.039   0       2       0 404
-add  p Meson       Upsilon(5S)       80553 10.865           0.110   0       0       2       0 405
-add  p Meson       h_b               10553  9.875           0       0       0       2       0 155
-add  p Meson       h_b(2P)           40553 10.25500         0       0       0       2       0 422
-add  p Meson       h_b(3P)          100553 10.51600         0       0       0       2       0 423
-add  p Meson       chi_b0            10551  9.85944         0       0       0       0       0 175
-add  p Meson       chi_b1            20553  9.89278         0       0       0       2       0 195
-add  p Meson       chi_b2              555  9.91221         0       0       0       4       0 215
-add  p Meson       chi_b0(2P)        30551 10.2325          0       0       0       0       0 410
-add  p Meson       chi_b1(2P)        50553 10.25564         0       0       0       2       0 411
-add  p Meson       chi_b2(2P)        10555 10.26865         0       0       0       4       0 412
-add  p Meson       chi_b0(3P)        50551 10.50070         0       0       0       0       0 413
-add  p Meson       chi_b1(3P)       110553 10.51600         0       0       0       2       0 414
-add  p Meson       chi_b2(3P)        20555 10.52640         0       0       0       4       0 415
-add  p Meson       eta_b2(1D)        40555 10.157           0       0       0       2       0 424
-add  p Meson       eta_b2(2D)        60555 10.441           0       0       0       2       0 425
-add  p Meson       Upsilon_1(1D)    120553 10.15010         0       0       0       2       0 416
-add  p Meson       Upsilon_2(1D)     30555 10.15620         0       0       0       4       0 417
-add  p Meson       Upsilon_3(1D)       557 10.15990         0       0       0       6       0 418
-add  p Meson       Upsilon_1(2D)    130553 10.43490         0       0       0       2       0 419
-add  p Meson       Upsilon_2(2D)     50555 10.44060         0       0       0       4       0 420
-add  p Meson       Upsilon_3(2D)     10557 10.44430         0       0       0       6       0 421
-add  p Meson       sigma_0           10222  0.478           0.324   0       0       0       0 0
-add  p Meson      omega(1650)       60223  1.67            0.315   0       0       2       0 0
-add  p Meson      rho(1900)       9030113  1.89            0.151   0       0       2       0 0
-add  p Meson      rho(2150)       9040113  2.149           0.363   0       0       2       0 0
-add  p Meson      X(1750)         9180223  1.754           0.122   0       0       2       0 0
-add  p Meson      omega(1960)     9060223  1.96            0.195   0       0       2       0 0
-add  p Meson      rho(1965)       9050113  1.99            0.268   0       0       2       0 0
-add  p Meson      rho(2000)       9060113  2.00            0.295   0       0       2       0 0
-add  p Meson      omega(2145)     9070223  2.15            0.214   0       0       2       0 0
-add  p Meson      omega(2205)     9080223  2.21            0.350   0       0       2       0 0
-add  p Meson      rho(2265)       9070113  2.27            0.325   0       0       2       0 0
-add  p Meson      rho(2280)       9080113  2.28            0.440   0       0       2       0 0
-add  p Meson      X(2290)         9190223  2.29            0.275   0       0       2       0 0
-add  p Meson      omega(2330)     9090223  2.33            0.435   0       0       2       0 0
-add  p Baryon      Delta-             1114  1.234           0.115   0.14    -3      3       0 361
-add  p Baryon      anti-Delta+       -1114  1.234           0.115   0.14    3       3       0 0
-add  p Special     n_diffr            2110  0               0       0       0       1       0 282
-add  p Special     anti-n_diffr      -2110  0               0       0       0       1       0 0
-add  p Baryon      n0                 2112  0.9395656       0       0       0       1 2.66E14 332
-add  p Baryon      anti-n0           -2112  0.9395656       0       0       0       1 2.66E14 0
-add  p Baryon      Delta0             2114  1.233           0.115   0.14    0       3       0 362
-add  p Baryon      anti-Delta0       -2114  1.233           0.115   0.14    0       3       0 0
-add  p Special     p_diff+            2210  0               0       0       3       1       0 283
-add  p Special     anti-p_diff-      -2210  0               0       0       -3      1       0 0
-add  p Baryon      p+                 2212  0.9382723       0       0       3       1       0 333
-add  p Baryon      anti-p-           -2212  0.9382723       0       0       -3      1       0 0
-add  p Baryon      Delta+             2214  1.232           0.115   0.14    3       3       0 363
-add  p Baryon      anti-Delta-       -2214  1.232           0.115   0.14    -3      3       0 0
-add  p Baryon      Delta++            2224  1.231           0.115   0.14    6       3       0 364
-add  p Baryon      anti-Delta--      -2224  1.231           0.115   0.14    -6      3       0 0
-add  p Baryon      Sigma-             3112  1.197436        0       0       -3      1   44.34 335
-add  p Baryon      anti-Sigma+       -3112  1.197436        0       0       3       1   44.34 0
-add  p Baryon      Sigma*-            3114  1.3872          0.0394  0.04    -3      3       0 365
-add  p Baryon      anti-Sigma*+      -3114  1.3872          0.0394  0.04    3       3       0 0
-add  p Baryon      Lambda0            3122  1.115684        0       0       0       1   78.88 306
-add  p Baryon      anti-Lambda0      -3122  1.115684        0       0       0       1   78.88 0
-add  p Baryon    Lambda(1405)0       13122  1.407           0.050   0       0       1       0 0
-add  p Baryon    anti-Lambda(1405)0 -13122  1.407           0.050   0       0       1       0 0
-add  p Baryon    Lambda(1520)0        3124  1.5195          0.0156  0.18    0       3       0 0
-add  p Baryon    anti-Lambda(1520)0  -3124  1.5195          0.0156  0.18    0       3       0 0
-add  p Baryon    Lambda(1600)0       23122  1.6             0.15    0.25    0       1       0 0
-add  p Baryon    anti-Lambda(1600)0 -23122  1.6             0.15    0.25    0       1       0 0
-add  p Baryon    Lambda(1670)0       33122  1.67            0.035   0.18    0       1       0 0
-add  p Baryon    anti-Lambda(1670)0 -33122  1.67            0.035   0.18    0       1       0 0
-add  p Baryon    Lambda(1690)0       13124  1.69            0.06    0.3     0       3       0 0
-add  p Baryon    anti-Lambda(1690)0 -13124  1.69            0.06    0.3     0       3       0 0
-add  p Baryon    Lambda(1800)0       43122  1.8             0.3     0       0       1       0 0
-add  p Baryon    anti-Lambda(1800)0 -43122  1.8             0.3     0       0       1       0 0
-add  p Baryon    Lambda(1810)0       53122  1.81            0.15    0       0       1       0 0
-add  p Baryon    anti-Lambda(1810)0 -53122  1.81            0.15    0       0       1       0 0
-add  p Baryon    Lambda(1820)0        3126  1.82            0.08    0.4     0       5       0 0
-add  p Baryon    anti-Lambda(1820)0  -3126  1.82            0.08    0.4     0       5       0 0
-add  p Baryon    Lambda(1830)0       13126  1.83            0.095   0.48    0       5       0 0
-add  p Baryon    anti-Lambda(1830)0 -13126  1.83            0.095   0.48    0       5       0 0
-add  p Baryon     Sigma(1660)0       13212  1.66            0.1     0       0       1       0 0
-add  p Baryon     anti-Sigma(1660)0 -13212  1.66            0.1     0       0       1       0 0
-add  p Baryon     Sigma(1670)0       13214  1.67            0.06    0.3     0       3       0 0
-add  p Baryon     anti-Sigma(1670)0 -13214  1.67            0.06    0.3     0       3       0 0
-add  p Baryon     Sigma(1750)0       23212  1.75            0.09    0.45    0       1       0 0
-add  p Baryon     anti-Sigma(1750)0 -23212  1.75            0.09    0.45    0       1       0 0
-add  p Baryon     Sigma(1775)0        3216  1.775           0.12    0       0       5       0 0
-add  p Baryon     anti-Sigma(1775)0  -3216  1.775           0.12    0       0       5       0 0
-add  p Baryon      Sigma0             3212  1.19255         0       0       0       1       0 336
-add  p Baryon      anti-Sigma0       -3212  1.19255         0       0       0       1       0 0
-add  p Baryon      Sigma*0            3214  1.3837          0.036   0.035   0       3       0 366
-add  p Baryon      anti-Sigma*0      -3214  1.3837          0.036   0.035   0       3       0 0
-add  p Baryon      Sigma+             3222  1.18937         0       0       3       1   23.96 337
-add  p Baryon      anti-Sigma-       -3222  1.18937         0       0       -3      1   23.96 0
-add  p Baryon      Sigma*+            3224  1.3828          0.036   0.035   3       3       0 367
-add  p Baryon      anti-Sigma*-      -3224  1.3828          0.036   0.035   -3      3       0 0
-add  p Baryon      Xi-                3312  1.32132         0       0       -3      1    49.1 338
-add  p Baryon      anti-Xi+          -3312  1.32132         0       0       3       1    49.1 0
-add  p Baryon      Xi*-               3314  1.5350          0.0099  0.05    -3      3       0 368
-add  p Baryon      anti-Xi*+         -3314  1.5350          0.0099  0.05    3       3       0 0
-add  p Baryon      Xi0                3322  1.3149          0       0       0       1    87.1 339
-add  p Baryon      anti-Xi0          -3322  1.3149          0       0       0       1    87.1 0
-add  p Baryon      Xi*0               3324  1.5318          0.0091  0.05    0       3       0 369
-add  p Baryon      anti-Xi*0         -3324  1.5318          0.0091  0.05    0       3       0 0
-add  p Baryon      Omega-             3334  1.67245         0       0       -3      3    24.6 370
-add  p Baryon      anti-Omega+       -3334  1.67245         0       0       3       3    24.6 0
-add  p Baryon      Lambda_c(2593)+   14122  2.5939          0.0036  0       3       1       0 462
-add  p Baryon anti-Lambda_c(2593)-  -14122  2.5939          0.0036  0       -3      1       0 0
-add  p Baryon      Lambda_c(2625)+   14124  2.6266          0.0019  0       3       3       0 471
-add  p Baryon anti-Lambda_c(2625)-  -14124  2.6266          0.0019  0       -3      3       0 0
-add  p Baryon      Sigma_c0           4112  2.4522          0.0016  0       0       1       0 341
-add  p Baryon      anti-Sigma_c0     -4112  2.4522          0.0016  0       0       1       0 0
-add  p Baryon      Sigma_c*0          4114  2.5175          0.013   0       0       3       0 371
-add  p Baryon      anti-Sigma_c*0    -4114  2.5175          0.013   0       0       3       0 0
-add  p Baryon      Sigma_c+           4212  2.4513          0       0       3       1       0 342
-add  p Baryon      anti-Sigma_c-     -4212  2.4513          0       0       -3      1       0 0
-add  p Baryon      Sigma_c*+          4214  2.5159          0       0       3       3       0 372
-add  p Baryon      anti-Sigma_c*-    -4214  2.5159          0       0       -3      3       0 0
-add  p Baryon      Sigma_c++          4222  2.4526          0.002   0       6       1       0 343
-add  p Baryon      anti-Sigma_c--    -4222  2.4526          0.002   0       -6      1       0 0
-add  p Baryon      Sigma_c*++         4224  2.5194          0.018   0       6       3       0 373
-add  p Baryon      anti-Sigma_c*--   -4224  2.5194          0.018   0       -6      3       0 0
-add  p Baryon      Xi'_c0             4312  2.5788          0       0       0       1       0 344
-add  p Baryon      anti-Xi'_c0       -4312  2.5788          0       0       0       1       0 0
-add  p Baryon      Xi'_c+             4322  2.5741          0       0       3       1       0 345
-add  p Baryon      anti-Xi'_c-       -4322  2.5741          0       0       -3      1       0 0
-add  p Baryon      Xi_c*+             4324  2.6474          0       0       3       3       0 375
-add  p Baryon      anti-Xi_c*-       -4324  2.6474          0       0       -3      3       0 0
-add  p Baryon      Lambda_c+          4122  2.2849          0       0       3       1  0.0618 312
-add  p Baryon      anti-Lambda_c-    -4122  2.2849          0       0       -3      1  0.0618 0
-add  p Baryon      Xi_c0              4132  2.4703          0       0       0       1   0.029 314
-add  p Baryon      anti-Xi_c0        -4132  2.4703          0       0       0       1   0.029 0
-add  p Baryon      Xi_c+              4232  2.4656          0       0       3       1   0.106 315
-add  p Baryon      anti-Xi_c-        -4232  2.4656          0       0       -3      1   0.106 0
-add  p Baryon      Xi_c*0             4314  2.6438          0       0       0       3       0 374
-add  p Baryon      anti-Xi_c*0       -4314  2.6438          0       0       0       3       0 0
-add  p Baryon      Lambda_c(2765)+   24122  2.765           0.050   0       3       1       0 480
-add  p Baryon anti-Lambda_c(2765)-  -24122  2.765           0.050   0       -3      1       0 0
-add  p Baryon      Lambda_c(2880)+   24124  2.880           0.005   0       3       3       0 481
-add  p Baryon anti-Lambda_c(2880)-  -24124  2.880           0.005   0       -3      3       0 0
-add  p Baryon      Lambda_c(2925)+   34122  2.925           0.03    0       3       1       0 482
-add  p Baryon anti-Lambda_c(2925)-  -34122  2.925           0.03    0       -3      1       0 0
-add  p Baryon      Lambda_c(2975)+   34124  2.975           0.01    0       3       3       0 483
-add  p Baryon anti-Lambda_c(2975)-  -34124  2.975           0.01    0       -3      3       0 0
-add  p Baryon      Sigma_c(2795)0    14112  2.795           0.06    0       0       1       0 461
-add  p Baryon anti-Sigma_c(2795)0   -14112  2.795           0.06    0       0       1       0 0
-add  p Baryon      Sigma_c(2850)0    14114  2.850           0.09    0       0       3       0 470
-add  p Baryon anti-Sigma_c(2850)0   -14114  2.850           0.09    0       0       3       0 0
-add  p Baryon      Sigma_c(2795)+    14212  2.795           0.06    0       3       1       0 464
-add  p Baryon anti-Sigma_c(2795)-   -14212  2.795           0.06    0       -3      1       0 0
-add  p Baryon      Sigma_c(2850)+    14214  2.850           0.09    0       3       3       0 473
-add  p Baryon anti-Sigma_c(2850)-   -14214  2.850           0.09    0       -3      3       0 0
-add  p Baryon      Sigma_c(2795)++   14222  2.795           0.06    0       6       1       0 465
-add  p Baryon anti-Sigma_c(2795)--  -14222  2.795           0.06    0       -6      1       0 0
-add  p Baryon      Sigma_c(2850)++   14224  2.850           0.09    0       6       3       0 474
-add  p Baryon anti-Sigma_c(2850)--  -14224  2.850           0.09    0       -6      3       0 0
-add  p Baryon      Xi_c(2790)0       14132  2.790           0       0       0       1       0 463
-add  p Baryon anti-Xi_c(2790)0      -14132  2.790           0       0       0       1       0 0
-add  p Baryon      Xi_c(2790)+       14232  2.790           0       0       3       1       0 466
-add  p Baryon anti-Xi_c(2790)-      -14232  2.790           0       0       -3      1       0 0
-add  p Baryon      Xi_c(2815)0       14134  2.819           0       0       0       3       0 472
-add  p Baryon anti-Xi_c(2815)0      -14134  2.819           0       0       0       3       0 0
-add  p Baryon      Xi_c(2815)+       14234  2.8149          0       0       3       3       0 475
-add  p Baryon anti-Xi_c(2815)-      -14234  2.8149          0       0       -3      3       0 0
-add  p Baryon      Xi_c(2900)0       14312  2.900          0.02     0       0       1       0 467
-add  p Baryon anti-Xi_c(2900)0      -14312  2.900          0.02     0       0       1       0 0
-add  p Baryon      Xi_c(2900)+       14322  2.900          0.02     0       3       1       0 468
-add  p Baryon anti-Xi_c(2900)-      -14322  2.900          0.02     0       -3      1       0 0
-add  p Baryon      Xi_c(2950)0       14314  2.950          0.04     0       0       3       0 476
-add  p Baryon anti-Xi_c(2950)0      -14314  2.950          0.04     0       0       3       0 0
-add  p Baryon      Xi_c(2950)+       14324  2.950          0.04     0       3       3       0 477
-add  p Baryon anti-Xi_c(2950)-      -14324  2.950          0.04     0       -3      3       0 0
-add  p Baryon      Xi_cc+             4412  3.460           0       0       3       1       0 491
-add  p Baryon      anti-Xi_cc-       -4412  3.460           0       0      -3       1       0 0
-add  p Baryon      Xi_cc++            4422  3.460           0       0       6       1       0 492
-add  p Baryon      anti-Xi_cc--      -4422  3.460           0       0      -6       1       0 0
-add  p Baryon      Omega_cc+          4432  3.875           0       0       3       1       0 493
-add  p Baryon      anti-Omega_cc-    -4432  3.875           0       0      -3       1       0 0
-add  p Baryon      Xi_cc*+            4414  3.520           0       0       3       1       0 494
-add  p Baryon      anti-Xi_cc*-      -4414  3.520           0       0      -3       1       0 0
-add  p Baryon      Xi_cc*++           4424  3.520           0       0       6       1       0 495
-add  p Baryon      anti-Xi_cc*--     -4424  3.520           0       0      -6       1       0 0
-add  p Baryon      Omega_cc*+         4434  3.975           0       0       3       1       0 496
-add  p Baryon      anti-Omega_cc*-   -4434  3.975           0       0      -3       1       0 0
-add  p Baryon      Omega_c0           4332  2.6975          0       0       0       1   0.019 346
-add  p Baryon      anti-Omega_c0     -4332  2.6975          0       0       0       1   0.019 0
-add  p Baryon      Omega_c*0          4334  2.8             0       0       0       3       0 376
-add  p Baryon      anti-Omega_c*0    -4334  2.8             0       0       0       3       0 0
-add  p Baryon      Omega_c(2850)0    14332  2.850          0.02     0       0       1       0 469
-add  p Baryon anti-Omega_c(2850)0   -14332  2.850          0.02     0       0       1       0 0
-add  p Baryon      Omega_c(2900)0    14334  2.9            0.04     0       0       3       0 478
-add  p Baryon anti-Omega_c(2900)0   -14334  2.9            0.04     0       0       3       0 0
-add  p Baryon      Sigma_b-           5112  5.80            0       0       -3      1       0 351
-add  p Baryon      anti-Sigma_b+     -5112  5.80            0       0       3       1       0 0
-add  p Baryon      Sigma_b*-          5114  5.81            0       0       -3      3       0 381
-add  p Baryon      anti-Sigma_b*+    -5114  5.81            0       0       3       3       0 0
-add  p Baryon      Lambda_b0          5122  5.624           0       0       0       1   0.368 322
-add  p Baryon      anti-Lambda_b0    -5122  5.625           0       0       0       1   0.368 0
-add  p Baryon      Xi_b-              5132  5.84            0       0       -3      1    0.40 324
-add  p Baryon      anti-Xi_b+        -5132  5.84            0       0       3       1    0.40 0
-add  p Baryon      Sigma_b0           5212  5.80            0       0       0       1       0 352
-add  p Baryon      anti-Sigma_b0     -5212  5.80            0       0       0       1       0 0
-add  p Baryon      Sigma_b*0          5214  5.81            0       0       0       3       0 382
-add  p Baryon      anti-Sigma_b*0    -5214  5.81            0       0       0       3       0 0
-add  p Baryon      Sigma_b+           5222  5.80            0       0       3       1       0 353
-add  p Baryon      anti-Sigma_b-     -5222  5.80            0       0       -3      1       0 0
-add  p Baryon      Sigma_b*+          5224  5.81            0       0       3       3       0 383
-add  p Baryon      anti-Sigma_b*-    -5224  5.81            0       0       -3      3       0 0
-add  p Baryon      Xi_b0              5232  5.84            0       0       0       1    0.40 325
-add  p Baryon      anti-Xi_b0        -5232  5.84            0       0       0       1    0.40 0
-add  p Baryon      Xi'_b-             5312  5.96            0       0       -3      1       0 354
-add  p Baryon      anti-Xi'_b+       -5312  5.96            0       0       3       1       0 0
-add  p Baryon      Xi_b*-             5314  5.97            0       0       -3      3       0 384
-add  p Baryon      anti-Xi_b*+       -5314  5.97            0       0       3       3       0 0
-add  p Baryon      Xi'_b0             5322  5.96            0       0       0       1       0 355
-add  p Baryon      anti-Xi'_b0       -5322  5.96            0       0       0       1       0 0
-add  p Baryon      Xi_b*0             5324  5.97            0       0       0       3       0 385
-add  p Baryon      anti-Xi_b*0       -5324  5.97            0       0       0       3       0 0
-add  p Baryon      Omega_b-           5332  6.12            0       0       -3      1    0.40 356
-add  p Baryon      anti-Omega_b+     -5332  6.12            0       0       3       1    0.40 0
-add  p Baryon      Omega_b*-          5334  6.13            0       0       -3      3       0 386
-add  p Baryon      anti-Omega_b*+    -5334  6.13            0       0       3       3       0 0
-add  p DiQuark     dd_0               1101  0               0       0       -2      0       0 0
-add  p DiQuark     anti-dd_0         -1101  0               0       0       2       0       0 0
-add  p DiQuark     ud_0               2101  0               0       0       1       0       0 0
-add  p DiQuark     anti-ud_0         -2101  0               0       0       -1      0       0 0
-add  p DiQuark     uu_0               2201  0               0       0       4       0       0 0
-add  p DiQuark     anti-uu_0         -2201  0               0       0       -4      0       0 0
-add  p DiQuark     sd_0               3101  0               0       0       -2      0       0 0
-add  p DiQuark     anti-sd_0         -3101  0               0       0       2       0       0 0
-add  p DiQuark     su_0               3201  0               0       0       1       0       0 0
-add  p DiQuark     anti-su_0         -3201  0               0       0       -1      0       0 0
-add  p DiQuark     ss_0               3301  0               0       0       -2      0       0 0
-add  p DiQuark     anti-ss_0         -3301  0               0       0       2       0       0 0
-add  p DiQuark     cd_0               4101  0               0       0       1       0       0 0
-add  p DiQuark     anti-cd_0         -4101  0               0       0       -1      0       0 0
-add  p DiQuark     cu_0               4201  0               0       0       4       0       0 0
-add  p DiQuark     anti-cu_0         -4201  0               0       0       -4      0       0 0
-add  p DiQuark     cs_0               4301  0               0       0       1       0       0 0
-add  p DiQuark     anti-cs_0         -4301  0               0       0       -1      0       0 0
-add  p DiQuark     cc_0               4401  0               0       0       4       0       0 0
-add  p DiQuark     anti-cc_0         -4401  0               0       0       -4      0       0 0
-add  p DiQuark     bd_0               5101  0               0       0       -2      0       0 0
-add  p DiQuark     anti-bd_0         -5101  0               0       0       2       0       0 0
-add  p DiQuark     bu_0               5201  0               0       0       1       0       0 0
-add  p DiQuark     anti-bu_0         -5201  0               0       0       -1      0       0 0
-add  p DiQuark     bs_0               5301  0               0       0       -2      0       0 0
-add  p DiQuark     anti-bs_0         -5301  0               0       0       2       0       0 0
-add  p DiQuark     bc_0               5401  0               0       0       1       0       0 0
-add  p DiQuark     anti-bc_0         -5401  0               0       0       -1      0       0 0
-add  p DiQuark     bb_0               5501  0               0       0       -2      0       0 0
-add  p DiQuark     anti-bb_0         -5501  0               0       0       2       0       0 0
-add  p DiQuark     dd_1               1103  0               0       0       -2      2       0 0
-add  p DiQuark     anti-dd_1         -1103  0               0       0       2       2       0 0
-add  p DiQuark     ud_1               2103  0               0       0       1       2       0 0
-add  p DiQuark     anti-ud_1         -2103  0               0       0       -1      2       0 0
-add  p DiQuark     uu_1               2203  0               0       0       4       2       0 0
-add  p DiQuark     anti-uu_1         -2203  0               0       0       -4      2       0 0
-add  p DiQuark     sd_1               3103  0               0       0       -2      2       0 0
-add  p DiQuark     anti-sd_1         -3103  0               0       0       2       2       0 0
-add  p DiQuark     su_1               3203  0               0       0       1       2       0 0
-add  p DiQuark     anti-su_1         -3203  0               0       0       -1      2       0 0
-add  p DiQuark     ss_1               3303  0               0       0       -2      2       0 0
-add  p DiQuark     anti-ss_1         -3303  0               0       0       2       2       0 0
-add  p DiQuark     cd_1               4103  0               0       0       1       2       0 0
-add  p DiQuark     anti-cd_1         -4103  0               0       0       -1      2       0 0
-add  p DiQuark     cu_1               4203  0               0       0       4       2       0 0
-add  p DiQuark     anti-cu_1         -4203  0               0       0       -4      2       0 0
-add  p DiQuark     cs_1               4303  0               0       0       1       2       0 0
-add  p DiQuark     anti-cs_1         -4303  0               0       0       -1      2       0 0
-add  p DiQuark     cc_1               4403  0               0       0       4       2       0 0
-add  p DiQuark     anti-cc_1         -4403  0               0       0       -4      2       0 0
-add  p DiQuark     bd_1               5103  0               0       0       -2      2       0 0
-add  p DiQuark     anti-bd_1         -5103  0               0       0       2       2       0 0
-add  p DiQuark     bu_1               5203  0               0       0       1       2       0 0
-add  p DiQuark     anti-bu_1         -5203  0               0       0       -1      2       0 0
-add  p DiQuark     bs_1               5303  0               0       0       -2      2       0 0
-add  p DiQuark     anti-bs_1         -5303  0               0       0       2       2       0 0
-add  p DiQuark     bc_1               5403  0               0       0       1       2       0 0
-add  p DiQuark     anti-bc_1         -5403  0               0       0       -1      2       0 0
-add  p DiQuark     bb_1               5503  0               0       0       -2      2       0 0
-add  p DiQuark     anti-bb_1         -5503  0               0       0       2       2       0 0
-add  p Nucleus     deuteron           1011  1.8756134       0       0       3       0       0 0
-add  p Nucleus     anti-deuteron     -1011  1.8756134       0       0       -3      0       0 0
-add  p Nucleus     tritium            1021  2.80925         0       0       3       1       0 0
-add  p Nucleus     anti-tritium      -1021  2.80925         0       0       -3      1       0 0
-add  p Nucleus     He3                1012  2.80923         0       0       6       1       0 0
-add  p Nucleus     anti-He3          -1012  2.80923         0       0       -6      1       0 0
-add  p Nucleus     alpha              1022  3.727417        0       0       6       0       0 0
-add  p Nucleus     anti-alpha        -1022  3.727417        0       0       -6      0       0 0
-add  p Special     geantino            100  0               0       0       0       0       0 0
-add  p Special     chargedgeantino     101  0               0       0       3       0       0 0
-add  p Meson       Xsd               30343  1.6000       0.50       1.0     0       0       0 455
-add  p Meson       anti-Xsd         -30343  1.6000       0.50       1.0     0       0       0 0
-add  p Meson       Xsu               30353  1.6000       0.50       1.0     3       0       0 456
-add  p Meson       anti-Xsu         -30353  1.6000       0.50       1.0    -3       0       0 0
-add  p Meson       Xdd               30373  1.6000       0.50       1.0            0       0       0 458
-add  p Meson       anti-Xdd         -30373  1.6000       0.50       1.0     0       0       0 0
-add  p Meson       Xdu               30383  1.6000       0.50       1.0     3       0       0 459
-add  p Meson       anti-Xdu         -30383  1.6000       0.50       1.0           -3       0       0 0
-add  p Meson       Xss               30363  1.8000       0.50       1.0     0       0       0 457
-add  p Meson       anti-Xss         -30363  1.8000       0.50       1.0     0       0       0 0
-*
-* Dummy particles for users to change properties & simulate new particles. 
-* Convention for the numbers after the "dummy": charge spin_serial
-*
-add  p Meson       dummy00_1             51  1             0.1       1.0    0      0       0 0
-add  p Meson       dummy10_1             52  1             0.1       1.0    3      0       0 0
-add  p Meson       dummy01_1             53  1             0.1       1.0    0      2       0 0
-add  p Meson       dummy11_1             54  1             0.1       1.0    3      2       0 0
-add  p Meson       anti-dummy00_1       -51  1             0.1       1.0    0      0       0 0
-add  p Meson       anti-dummy10_1       -52  1             0.1       1.0   -3      0       0 0
-add  p Meson       anti-dummy01_1       -53  1             0.1       1.0    0      2       0 0
-add  p Meson       anti-dummy11_1       -54  1             0.1       1.0   -3      2       0 0
-add  p Meson       dummy00_2             55  1             0.1       1.0    0      0       0 0
-add  p Meson       dummy10_2             56  1             0.1       1.0    3      0       0 0
-add  p Meson       dummy01_2             57  1             0.1       1.0    0      2       0 0
-add  p Meson       dummy11_2             58  1             0.1       1.0    3      2       0 0
-add  p Meson       anti-dummy00_2       -55  1             0.1       1.0    0      0       0 0
-add  p Meson       anti-dummy10_2       -56  1             0.1       1.0   -3      0       0 0
-add  p Meson       anti-dummy01_2       -57  1             0.1       1.0    0      2       0 0
-add  p Meson       anti-dummy11_2       -58  1             0.1       1.0   -3      2       0 0
-
-
-
-
-*      |           |                     |  |               |       |       |       |       | + KC=Lund internal code
-*      |           |                     |  |               |       |       |       |       + T=c*lifetime (mm, alternative to W)
-*      |           |                     |  |               |       |       |       + S=2*spin
-*      |           |                     |  |               |       |       + Q=3*charge
-*      |           |                     |  |               |       + WM=max deviation from mass
-*      |           |                     |  |               + W=width in GeV
-*      |           |                     |  + M=mass in GeV
-*      |           |                     + ID=STDHEP-ID
-*      |           + NAME=name to be used in printout or as char string to identify particle
-*      + TYPE
-sets    p       e-              isStable        1
-sets    p       e+              isStable        1
-sets    p       nu_e            isStable        1
-sets    p       anti-nu_e       isStable        1
-sets    p       mu-             isStable        1
-sets    p       mu+             isStable        1
-sets    p       nu_mu           isStable        1
-sets    p       anti-nu_mu      isStable        1
-sets    p       nu_tau          isStable        1
-sets    p       anti-nu_tau     isStable        1
-sets    p       nu_L            isStable        1
-sets    p       anti-nu_L       isStable        1
-sets    p       gamma           isStable        1
-sets    p       Z''0            isStable        1
-sets    p       Higgs'0         isStable        1
-sets    p       A0              isStable        1
-sets    p       K_L0            isStable        1
-sets    p       pi_diff+        isStable        1
-sets    p       pi_diff-        isStable        1
-sets    p       pi+             isStable        1
-sets    p       pi-             isStable        1
-sets    p       K+              isStable        1
-sets    p       K-              isStable        1
-sets    p       n_diff0         isStable        1
-sets    p       anti-n_diff0    isStable        1
-sets    p       n0              isStable        1
-sets    p       anti-n0         isStable        1
-sets    p       p_diff+         isStable       1       
-sets   p       anti-p_diff-    isStable        1
-sets   p       p+              isStable        1
-sets   p       anti-p-         isStable        1
-sets   p       geantino        isStable        1
-sets   p       chargedgeantino isStable        1
-sets   p       cerenkov        isStable        1
-sets   p       deuteron        isStable        1
-sets   p       anti-deuteron   isStable        1
-sets   p       tritium         isStable        1
-sets   p       anti-tritium    isStable        1
-sets   p       alpha           isStable        1
-sets   p       anti-alpha      isStable        1
-sets   p       He3             isStable        1
-sets   p       anti-He3        isStable        1
+*---------------------------------------------------------------------------------------------------------------------------------------
+* 5/10/2013 Updated by R. Godang. The format and convention are based on the current evt.pdl and PDG 2012
+*--------------------------------------------------------------------------------------------------------------------------------------- 
+*                  name                  id      mass/GeV    width/GeV     max_Dm/GeV    3*charge   2*spin    lifetime*c/mm    PythiaId   
+add  p Particle  K_4*+                            329  2.0450000e+00  1.9800000e-01  2.0000000e-01     3     8  0.0000000e+00          0
+add  p Particle  h_b(2P)                       110553  1.0255000e+01  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00     110553
+add  p Particle  b                                  5  5.0000000e+00  0.0000000e+00  0.0000000e+00    -1     1  0.0000000e+00          5
+add  p Particle  anti-nu_e                        -12  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00        -12
+add  p Particle  D_2*0                            425  2.4611000e+00  4.3000001e-02  3.0900000e-01     0     4  0.0000000e+00        425
+add  p Particle  Upsilon                          553  9.4603000e+00  5.4000022e-05  5.0000000e-04     0     2  0.0000000e+00        553
+add  p Particle  anti-B'_10                    -20513  5.7570000e+00  2.5027080e-01  2.0000000e-01     0     2  0.0000000e+00     -20513
+add  p Particle  anti-K0                         -311  4.9761400e-01  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00       -311
+add  p Particle  Lambda(1405)0                  13122  1.4060000e+00  5.0000015e-02  7.0000000e-02     0     1  0.0000000e+00          0
+add  p Particle  K*+                              323  8.9166000e-01  5.0800012e-02  2.3000000e-01     3     2  0.0000000e+00        323
+add  p Particle  e+                               -11  5.1099891e-04  0.0000000e+00  0.0000000e+00     3     1  0.0000000e+00        -11
+add  p Particle  B0H                              510  5.2795300e+00  0.0000000e+00  0.0000000e+00     0     0  4.5718350e-01          0
+add  p Particle  K_2*-                           -325  1.4256000e+00  9.8500006e-02  7.0000000e-01    -3     4  0.0000000e+00       -325
+add  p Particle  B'_10                          20513  5.7570000e+00  2.5027080e-01  2.0000000e-01     0     2  0.0000000e+00      20513
+add  p Particle  K-                              -321  4.9367700e-01  0.0000000e+00  0.0000000e+00    -3     0  3.7114306e+03       -321
+add  p Particle  eta_b2(2D)                    110555  1.0441000e+01  0.0000000e+00  0.0000000e+00     0     4  0.0000000e+00     110555
+add  p Particle  K'*0                          100313  1.4140000e+00  2.3199996e-01  6.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  B_s10                          10533  5.8310000e+00  3.9891649e-02  1.0000000e-02     0     2  0.0000000e+00      10533
+add  p Particle  K_S0                             310  4.9761400e-01  0.0000000e+00  0.0000000e+00     0     0  2.6840419e+01        310
+add  p Particle  Upsilon_1(2D)                 130553  1.0434900e+01  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00     130553
+add  p Particle  B_0*-                         -10521  5.7380000e+00  1.4993444e-01  2.0000000e-01    -3     0  0.0000000e+00     -10521
+add  p Particle  D'_10                          20423  2.4450000e+00  2.5027080e-01  3.0000000e-01     0     2  0.0000000e+00      20423
+add  p Particle  B+                               521  5.2791500e+00  0.0000000e+00  0.0000000e+00     3     0  4.9106005e-01        521
+add  p Particle  B_0*+                          10521  5.7380000e+00  1.4993444e-01  2.0000000e-01     3     0  0.0000000e+00      10521
+add  p Particle  Sigma_b*-                       5114  5.8364000e+00  0.0000000e+00  0.0000000e+00    -3     3  0.0000000e+00       5114
+add  p Particle  anti-Lambda(1405)0            -13122  1.4060000e+00  5.0000015e-02  7.0000000e-02     0     1  0.0000000e+00          0
+add  p Particle  anti-B_s10                    -10533  5.8310000e+00  3.9891649e-02  1.0000000e-02     0     2  0.0000000e+00     -10533
+add  p Particle  B0L                              150  5.2795300e+00  0.0000000e+00  0.0000000e+00     0     0  4.5718350e-01          0
+add  p Particle  anti-B_0*0                    -10511  5.7380000e+00  1.4993444e-01  2.0000000e-01     0     0  0.0000000e+00     -10511
+add  p Particle  anti-Sigma(1660)0             -13212  1.6600000e+00  1.0000000e-01  4.0000000e-01     0     1  0.0000000e+00          0
+add  p Particle  Xi_b0                           5232  5.7924000e+00  0.0000000e+00  0.0000000e+00     0     1  4.2570529e-01       5232
+add  p Particle  D_2*-                           -415  2.4601000e+00  3.6999998e-02  3.1200000e-01    -3     4  0.0000000e+00       -415
+add  p Particle  b_1-                          -10213  1.2295000e+00  1.4200001e-01  2.5000000e-01    -3     2  0.0000000e+00     -10213
+add  p Particle  K*0                              313  8.9600000e-01  5.0299999e-02  2.3000000e-01     0     2  0.0000000e+00        313
+add  p Particle  anti-K'*0                    -100313  1.4140000e+00  2.3199996e-01  6.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  anti-Lambda(1600)0            -23122  1.6000000e+00  1.5000001e-01  2.5000000e-01     0     1  0.0000000e+00          0
+add  p Particle  B'_1+                          20523  5.7570000e+00  2.5027080e-01  2.0000000e-01     3     2  0.0000000e+00      20523
+add  p Particle  tau-                              15  1.7768400e+00  0.0000000e+00  0.0000000e+00    -3     1  8.7119688e-02         15
+add  p Particle  f'_1                           20333  1.4264000e+00  5.4900015e-02  1.0000000e-01     0     2  0.0000000e+00      20333
+add  p Particle  D(2S)-                       -100411  2.5800000e+00  0.0000000e+00  0.0000000e+00    -3     0  0.0000000e+00          0
+add  p Particle  D_s2*-                          -435  2.5726000e+00  2.0000000e-02  6.0000000e-02    -3     4  0.0000000e+00       -435
+add  p Particle  n0                              2112  9.3956536e-01  0.0000000e+00  0.0000000e+00     0     1  2.6552618e+14       2112
+add  p Particle  anti-Xi*+                      -3314  1.5350000e+00  9.9000002e-03  5.0000000e-02     3     3  0.0000000e+00      -3314
+add  p Particle  D*-                             -413  2.0102700e+00  9.6000002e-05  4.0000000e-04    -3     2  0.0000000e+00       -413
+add  p Particle  a_1+                           20213  1.2300000e+00  4.1999998e-01  6.0000000e-01     3     2  0.0000000e+00      20213
+add  p Particle  D*+                              413  2.0102700e+00  9.6000002e-05  4.0000000e-04     3     2  0.0000000e+00        413
+add  p Particle  rndmflav                          82  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         82
+add  p Particle  anti-uu_1                      -2203  0.0000000e+00  0.0000000e+00  0.0000000e+00    -4     2  0.0000000e+00      -2203
+add  p Particle  anti-c                            -4  1.3500000e+00  0.0000000e+00  0.0000000e+00    -2     1  0.0000000e+00         -4
+add  p Particle  Upsilon(5S)                  9000553  1.0865000e+01  1.1000001e-01  1.6500000e+00     0     2  0.0000000e+00          0
+add  p Particle  Xi_cc++                         4422  3.5979800e+00  0.0000000e+00  0.0000000e+00     6     1  1.0000000e-01       4422
+add  p Particle  B_c-                            -541  6.2760000e+00  0.0000000e+00  0.0000000e+00    -3     0  1.3490661e-01       -541
+add  p Particle  anti-Sigma*+                   -3114  1.3872000e+00  3.9400008e-02  4.0000000e-02     3     3  0.0000000e+00      -3114
+add  p Particle  anti-b'-hadron                   -87  4.0000000e+02  0.0000000e+00  0.0000000e+00     1     0  0.0000000e+00          0
+add  p Particle  Upsilon_1(1D)                  30553  1.0150100e+01  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00      30553
+add  p Particle  eta_c(2S)                     100441  3.6370000e+00  1.3999999e-02  2.0000000e-02     0     0  0.0000000e+00     100441
+add  p Particle  anti-Delta-                    -2214  1.2320000e+00  1.1800001e-01  1.4000000e-01    -3     3  0.0000000e+00      -2214
+add  p Particle  anti-D_0*0                    -10421  2.4000000e+00  1.5027676e-01  2.9900000e-01     0     0  0.0000000e+00     -10421
+add  p Particle  anti-nu_L                        -18  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00        -18
+add  p Particle  Lambda(1830)0                  13126  1.8300000e+00  9.5000007e-02  4.8000000e-01     0     5  0.0000000e+00          0
+add  p Particle  Lambda0                         3122  1.1156830e+00  0.0000000e+00  0.0000000e+00     0     1  7.8875396e+01       3122
+add  p Particle  uu_1                            2203  0.0000000e+00  0.0000000e+00  0.0000000e+00     4     2  0.0000000e+00       2203
+add  p Particle  psi(4160)                    9010443  4.1530000e+00  7.8000000e-02  1.5000000e-01     0     2  0.0000000e+00          0
+add  p Particle  Xi'_b0                          5322  5.9600000e+00  6.5821220e-06  1.0000000e-04     0     1  0.0000000e+00       5322
+add  p Particle  b'-hadron                         87  4.0000000e+02  0.0000000e+00  0.0000000e+00    -1     0  0.0000000e+00          0
+add  p Particle  Omega-                          3334  1.6724500e+00  0.0000000e+00  0.0000000e+00    -3     3  2.4612961e+01       3334
+add  p Particle  B_10                           10513  5.7320000e+00  3.9891649e-02  2.0000000e-01     0     2  0.0000000e+00      10513
+add  p Particle  anti-ud_1                      -2103  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     2  0.0000000e+00      -2103
+add  p Particle  t-hadron                          86  1.7500000e+02  0.0000000e+00  0.0000000e+00     2     0  0.0000000e+00          0
+add  p Particle  anti-t-hadron                    -86  1.7500000e+02  0.0000000e+00  0.0000000e+00    -2     0  0.0000000e+00          0
+add  p Particle  anti-Sigma0                    -3212  1.1926420e+00  8.8947595e-06  1.3000000e-04     0     1  0.0000000e+00      -3212
+add  p Particle  B'_1-                         -20523  5.7570000e+00  2.5027080e-01  2.0000000e-01    -3     2  0.0000000e+00     -20523
+add  p Particle  Lambda_c(2593)+                14122  2.5954000e+00  3.6000005e-03  5.4000000e-02     3     1  0.0000000e+00          0
+add  p Particle  anti-Lambda(1820)0             -3126  1.8200000e+00  7.9999995e-02  4.0000000e-01     0     5  0.0000000e+00          0
+add  p Particle  Omega_cc+                       4432  3.7866300e+00  0.0000000e+00  0.0000000e+00     3     1  1.0000000e-01       4432
+add  p Particle  anti-Delta--                   -2224  1.2320000e+00  1.1800001e-01  1.4000000e-01    -6     3  0.0000000e+00      -2224
+add  p Particle  B_2*0                            515  5.7469000e+00  5.0245206e-02  2.0000000e-01     0     4  0.0000000e+00        515
+add  p Particle  K'_10                          20313  1.4030000e+00  1.7399999e-01  4.0000000e-01     0     2  0.0000000e+00      20313
+add  p Particle  sigma_0                      9000221  4.7800000e-01  0.0000000e+00  4.7800000e-01     0     0  0.0000000e+00          0
+add  p Particle  anti-Xi_cc*--                  -4424  3.6564800e+00  0.0000000e+00  0.0000000e+00    -6     3  0.0000000e+00      -4424
+add  p Particle  anti-D_10                     -10423  2.4223000e+00  2.0400003e-02  2.7200000e-01     0     2  0.0000000e+00     -10423
+add  p Particle  anti-Lambda_c(2593)-          -14122  2.5954000e+00  3.6000005e-03  5.4000000e-02    -3     1  0.0000000e+00          0
+add  p Particle  B_1-                          -10523  5.7320000e+00  3.9891649e-02  2.0000000e-01    -3     2  0.0000000e+00     -10523
+add  p Particle  anti-Xi_cc-                    -4412  3.5979800e+00  0.0000000e+00  0.0000000e+00    -3     1  1.0000000e-01      -4412
+add  p Particle  D_s-                            -431  1.9684900e+00  0.0000000e+00  0.0000000e+00    -3     0  1.4989623e-01       -431
+add  p Particle  anti-Lambda_c-                 -4122  2.2864600e+00  0.0000000e+00  0.0000000e+00    -3     1  5.9958492e-02      -4122
+add  p Particle  Xi_cc+                          4412  3.5979800e+00  0.0000000e+00  0.0000000e+00     3     1  1.0000000e-01       4412
+add  p Particle  B_1+                           10523  5.7320000e+00  3.9891649e-02  2.0000000e-01     3     2  0.0000000e+00      10523
+add  p Particle  D_0*-                         -10411  2.4000000e+00  1.5027676e-01  3.0300000e-01    -3     0  0.0000000e+00     -10411
+add  p Particle  anti-Xi_cc--                   -4422  3.5979800e+00  0.0000000e+00  0.0000000e+00    -6     1  1.0000000e-01      -4422
+add  p Particle  anti-Sigma_b*+                 -5114  5.8364000e+00  0.0000000e+00  0.0000000e+00     3     3  0.0000000e+00      -5114
+add  p Particle  chi_b2(3P)                    200555  1.0526400e+01  0.0000000e+00  0.0000000e+00     0     4  0.0000000e+00     200555
+add  p Particle  K''*-                         -30323  1.7170000e+00  3.2000002e-01  7.0000000e-01    -3     2  0.0000000e+00          0
+add  p Particle  vpho                           10022  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00          0
+add  p Particle  K_4*-                           -329  2.0450000e+00  1.9800000e-01  2.0000000e-01    -3     8  0.0000000e+00          0
+add  p Particle  K_L0                             130  4.9761400e-01  0.0000000e+00  0.0000000e+00     0     0  1.5337382e+04        130
+add  p Particle  eta_b(3S)                     200551  1.0335000e+01  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00          0
+add  p Particle  K''*+                          30323  1.7170000e+00  3.2000002e-01  7.0000000e-01     3     2  0.0000000e+00          0
+add  p Particle  Lambda(1800)0                  43122  1.8000000e+00  2.9999996e-01  4.5000000e-01     0     1  0.0000000e+00          0
+add  p Particle  anti-Lambda(1800)0            -43122  1.8000000e+00  2.9999996e-01  4.5000000e-01     0     1  0.0000000e+00          0
+add  p Particle  K_10                           10313  1.2720000e+00  8.9999999e-02  2.0000000e-01     0     2  0.0000000e+00      10313
+add  p Particle  D*(2S)-                      -100413  2.6400000e+00  0.0000000e+00  0.0000000e+00    -3     2  0.0000000e+00          0
+add  p Particle  CELLjet                           98  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         98
+add  p Particle  B_c2*-                          -545  7.3500000e+00  0.0000000e+00  6.0000000e-02    -3     4  0.0000000e+00       -545
+add  p Particle  K_0*0                          10311  1.4200000e+00  2.7000000e-01  6.0000000e-01     0     0  0.0000000e+00      10311
+add  p Particle  D_s0*-                        -10431  2.3178000e+00  1.0000033e-03  1.0000000e-02    -3     0  0.0000000e+00     -10431
+add  p Particle  h_b(3P)                       210553  1.0516000e+01  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00     210553
+add  p Particle  Lambda_c+                       4122  2.2864600e+00  0.0000000e+00  0.0000000e+00     3     1  5.9958492e-02       4122
+add  p Particle  Xi_c0                           4132  2.4710000e+00  0.0000000e+00  0.0000000e+00     0     1  3.3576755e-02       4132
+add  p Particle  D_s0*+                         10431  2.3178000e+00  1.0000033e-03  1.0000000e-02     3     0  0.0000000e+00      10431
+add  p Particle  junction                          88  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         88
+add  p Particle  K'_1-                         -20323  1.4030000e+00  1.7399999e-01  4.0000000e-01    -3     2  0.0000000e+00     -20323
+add  p Particle  X_2(3872)                    9910445  3.8722000e+00  3.1700598e-04  2.9000000e-03     0     4  0.0000000e+00    9910445
+add  p Particle  K+                               321  4.9367700e-01  0.0000000e+00  0.0000000e+00     3     0  3.7114306e+03        321
+add  p Particle  anti-Xi_cc*-                   -4414  3.6564800e+00  0.0000000e+00  0.0000000e+00    -3     3  0.0000000e+00      -4414
+add  p Particle  s                                  3  1.9900000e-01  0.0000000e+00  0.0000000e+00    -1     1  0.0000000e+00          3
+add  p Particle  D*(2S)+                       100413  2.6400000e+00  0.0000000e+00  0.0000000e+00     3     2  0.0000000e+00          0
+add  p Particle  D_s*+                            433  2.1123000e+00  6.5821023e-06  1.0000000e-04     3     2  0.0000000e+00        433
+add  p Particle  anti-Omega_c*0                 -4334  2.7683000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00      -4334
+add  p Particle  D_0*+                          10411  2.4000000e+00  1.5027676e-01  3.0300000e-01     3     0  0.0000000e+00      10411
+add  p Particle  anti-p-                        -2212  9.3827203e-01  0.0000000e+00  0.0000000e+00    -3     1  0.0000000e+00      -2212
+add  p Particle  anti-bd_1                      -5103  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     2  0.0000000e+00      -5103
+add  p Particle  h_b                            10553  9.8750000e+00  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00      10553
+add  p Particle  anti-Lambda(1830)0            -13126  1.8300000e+00  9.5000007e-02  4.8000000e-01     0     5  0.0000000e+00          0
+add  p Particle  anti-u                            -2  5.6000000e-03  0.0000000e+00  0.0000000e+00    -2     1  0.0000000e+00         -2
+add  p Particle  mu+                              -13  1.0565837e-01  0.0000000e+00  0.0000000e+00     3     1  6.5864973e+05        -13
+add  p Particle  bc_0                            5401  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     0  0.0000000e+00       5401
+add  p Particle  alpha                     1000020040  3.7274170e+00  0.0000000e+00  0.0000000e+00     6     0  0.0000000e+00          0
+add  p Particle  Sigma*-                         3114  1.3872000e+00  3.9400008e-02  4.0000000e-02    -3     3  0.0000000e+00       3114
+add  p Particle  K''*0                          30313  1.7170000e+00  3.2000002e-01  7.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  B*-                             -523  5.3251000e+00  6.5819970e-06  1.0000000e-04    -3     2  0.0000000e+00       -523
+add  p Particle  phasespa                          83  1.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         83
+add  p Particle  b_10                           10113  1.2295000e+00  1.4200001e-01  2.5000000e-01     0     2  0.0000000e+00      10113
+add  p Particle  D+                               411  1.8696200e+00  0.0000000e+00  0.0000000e+00     3     0  3.1178416e-01        411
+add  p Particle  b-hadron                          85  5.0000000e+00  0.0000000e+00  0.0000000e+00    -1     0  3.8699999e-01         85
+add  p Particle  anti-Xi_b*0                    -5324  5.9700000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00      -5324
+add  p Particle  chi_b1(3P)                    220553  1.0516000e+01  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00     220553
+add  p Particle  D*(2S)0                       100423  2.6400000e+00  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00          0
+add  p Particle  anti-D*0                        -423  2.0069700e+00  6.5821023e-06  3.0000000e-04     0     2  0.0000000e+00       -423
+add  p Particle  Lambda(1810)0                  53122  1.8100000e+00  1.5000001e-01  4.6000000e-01     0     1  0.0000000e+00          0
+add  p Particle  rho0                             113  7.7549000e-01  1.4940001e-01  4.8000000e-01     0     2  0.0000000e+00        113
+add  p Particle  anti-B*0                        -513  5.3251000e+00  6.5819970e-06  1.0000000e-04     0     2  0.0000000e+00       -513
+add  p Particle  pi-                             -211  1.3957018e-01  0.0000000e+00  0.0000000e+00    -3     0  7.8044971e+03       -211
+add  p Particle  anti-B'_s10                   -20533  5.8590000e+00  2.5027080e-01  2.0000000e-02     0     2  0.0000000e+00     -20533
+add  p Particle  h_1                            10223  1.1700000e+00  3.6000005e-01  2.0000000e-01     0     2  0.0000000e+00      10223
+add  p Particle  geantino                   480000000  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00          0
+add  p Particle  indep                             93  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         93
+add  p Particle  Cerenkov                       20022  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00          0
+add  p Particle  anti-Sigma*0                   -3214  1.3837000e+00  3.6000005e-02  3.5000000e-02     0     3  0.0000000e+00      -3214
+add  p Particle  a_10                           20113  1.2300000e+00  4.1999998e-01  6.0000000e-01     0     2  0.0000000e+00      20113
+add  p Particle  Higgs+                            37  3.1000000e+02  7.0022575e+00  0.0000000e+00     3     0  0.0000000e+00         37
+add  p Particle  Sigma*0                         3214  1.3837000e+00  3.6000005e-02  3.5000000e-02     0     3  0.0000000e+00       3214
+add  p Particle  Xi_cc*+                         4414  3.6564800e+00  0.0000000e+00  0.0000000e+00     3     3  0.0000000e+00       4414
+add  p Particle  f'_2                             335  1.5250000e+00  7.3000004e-02  2.0000000e-01     0     4  0.0000000e+00        335
+add  p Particle  Xi_b-                           5132  5.7924000e+00  0.0000000e+00  0.0000000e+00    -3     1  4.2570529e-01       5132
+add  p Particle  anti-K_4*0                      -319  2.0450000e+00  1.9800000e-01  2.0000000e-01     0     8  0.0000000e+00          0
+add  p Particle  rho(2S)+                      100213  1.4650000e+00  4.0000012e-01  5.0000000e-01     3     2  0.0000000e+00          0
+add  p Particle  eta_c                            441  2.9803000e+00  2.6700003e-02  1.5000000e-01     0     0  0.0000000e+00        441
+add  p Particle  D_0*0                          10421  2.4000000e+00  1.5027676e-01  2.9900000e-01     0     0  0.0000000e+00      10421
+add  p Particle  bu_1                            5203  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     2  0.0000000e+00       5203
+add  p Particle  anti-su_1                      -3203  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     2  0.0000000e+00      -3203
+add  p Particle  K_2*0                            315  1.4324000e+00  1.0900000e-01  7.0000000e-01     0     4  0.0000000e+00        315
+add  p Particle  anti-Omega_c0                  -4332  2.6975000e+00  0.0000000e+00  0.0000000e+00     0     1  2.0685680e-02      -4332
+add  p Particle  D_s1-                         -20433  2.4596000e+00  1.0000033e-03  1.0000000e-02    -3     2  0.0000000e+00     -20433
+add  p Particle  anti-deuteron            -1000010020  1.8756130e+00  0.0000000e+00  0.0000000e+00    -3     0  0.0000000e+00          0
+add  p Particle  cd_1                            4103  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     2  0.0000000e+00       4103
+add  p Particle  B_c1+                          10543  7.3000000e+00  0.0000000e+00  6.0000000e-02     3     2  0.0000000e+00      10543
+add  p Particle  D_s2*+                           435  2.5726000e+00  2.0000000e-02  6.0000000e-02     3     4  0.0000000e+00        435
+add  p Particle  Omega_b-                        5332  6.1200000e+00  0.0000000e+00  0.0000000e+00    -3     1  4.6467831e-01       5332
+add  p Particle  B_c0*-                        -10541  7.2500000e+00  0.0000000e+00  6.0000000e-02    -3     0  0.0000000e+00     -10541
+add  p Particle  Upsilon(4S)                   300553  1.0579400e+01  2.0500001e-02  3.9000000e-02     0     2  0.0000000e+00     300553
+add  p Particle  Sigma_b*+                       5224  5.8290000e+00  0.0000000e+00  0.0000000e+00     3     3  0.0000000e+00       5224
+add  p Particle  anti-Delta0                    -2114  1.2320000e+00  1.1800001e-01  1.4000000e-01     0     3  0.0000000e+00      -2114
+add  p Particle  sd_0                            3101  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     0  0.0000000e+00       3101
+add  p Particle  anti-sd_0                      -3101  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     0  0.0000000e+00      -3101
+add  p Particle  D_s1+                          20433  2.4596000e+00  1.0000033e-03  1.0000000e-02     3     2  0.0000000e+00      20433
+add  p Particle  Upsilon(2S)                   100553  1.0023260e+01  3.2000002e-05  4.0000000e-04     0     2  0.0000000e+00     100553
+add  p Particle  eta'                             331  9.5766000e-01  2.0500001e-04  2.0000000e-03     0     0  0.0000000e+00        331
+add  p Particle  anti-Sigma(1775)0              -3216  1.7750000e+00  1.1999999e-01  5.0000000e-01     0     5  0.0000000e+00          0
+add  p Particle  D_10                           10423  2.4223000e+00  2.0400003e-02  2.7200000e-01     0     2  0.0000000e+00      10423
+add  p Particle  Sigma_b*0                       5214  5.8290000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00       5214
+add  p Particle  K*-                             -323  8.9166000e-01  5.0800012e-02  2.3000000e-01    -3     2  0.0000000e+00       -323
+add  p Particle  anti-nu_mu                       -14  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00        -14
+add  p Particle  Sigma_b+                        5222  5.8078000e+00  6.5821220e-06  1.0000000e-04     3     1  0.0000000e+00       5222
+add  p Particle  anti-K_2*0                      -315  1.4324000e+00  1.0900000e-01  7.0000000e-01     0     4  0.0000000e+00       -315
+add  p Particle  chi_c1                         20443  3.5106600e+00  8.8999997e-04  1.0000000e-02     0     2  0.0000000e+00      20443
+add  p Particle  D'_1+                          20413  2.4450000e+00  2.5027080e-01  3.0000000e-01     3     2  0.0000000e+00      20413
+add  p Particle  anti-Xi_b+                     -5132  5.7924000e+00  0.0000000e+00  0.0000000e+00     3     1  4.2570529e-01      -5132
+add  p Particle  anti-Xss                      -30363  1.8000000e+00  0.0000000e+00  1.0000000e+00     0     2  0.0000000e+00     -30363
+add  p Particle  D-                              -411  1.8696200e+00  0.0000000e+00  0.0000000e+00    -3     0  3.1178416e-01       -411
+add  p Particle  B*0                              513  5.3251000e+00  6.5819970e-06  1.0000000e-04     0     2  0.0000000e+00        513
+add  p Particle  Xu+                               44  1.0000000e+00  0.0000000e+00  0.0000000e+00     3     0  0.0000000e+00         44
+add  p Particle  B'_s10                         20533  5.8590000e+00  2.5027080e-01  2.0000000e-02     0     2  0.0000000e+00      20533
+add  p Particle  anti-Xi0                       -3322  1.3148600e+00  0.0000000e+00  0.0000000e+00     0     1  8.6939813e+01      -3322
+add  p Particle  Xi*0                            3324  1.5318000e+00  9.1000002e-03  5.0000000e-02     0     3  0.0000000e+00       3324
+add  p Particle  anti-b-hadron                    -85  5.0000000e+00  0.0000000e+00  0.0000000e+00     1     0  3.8699999e-01        -85
+add  p Particle  CLUSjet                           97  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         97
+add  p Particle  d                                  1  9.9000000e-03  0.0000000e+00  0.0000000e+00    -1     1  0.0000000e+00          1
+add  p Particle  psi(4415)                    9020443  4.4210000e+00  6.1999976e-02  8.0000000e-02     0     2  0.0000000e+00          0
+add  p Particle  B_0*0                          10511  5.7380000e+00  1.4993444e-01  2.0000000e-01     0     0  0.0000000e+00      10511
+add  p Particle  h'_1                           10333  1.4000000e+00  0.0000000e+00  1.0000000e-02     0     2  0.0000000e+00      10333
+add  p Particle  anti-Xi_c-                     -4232  2.4679000e+00  0.0000000e+00  0.0000000e+00    -3     1  1.3250827e-01      -4232
+add  p Particle  anti-b                            -5  5.0000000e+00  0.0000000e+00  0.0000000e+00     1     1  0.0000000e+00         -5
+add  p Particle  cu_0                            4201  0.0000000e+00  0.0000000e+00  0.0000000e+00     4     0  0.0000000e+00       4201
+add  p Particle  K_1-                          -10323  1.2720000e+00  8.9999999e-02  2.0000000e-01    -3     2  0.0000000e+00     -10323
+add  p Particle  f_1                            20223  1.2818000e+00  2.4300002e-02  5.0000000e-02     0     2  0.0000000e+00      20223
+add  p Particle  omega(2S)                     100223  1.4250000e+00  2.1500001e-01  4.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  Sigma*+                         3224  1.3828000e+00  3.5799992e-02  3.5000000e-02     3     3  0.0000000e+00       3224
+add  p Particle  bu_0                            5201  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     0  0.0000000e+00       5201
+add  p Particle  a_1-                          -20213  1.2300000e+00  4.1999998e-01  6.0000000e-01    -3     2  0.0000000e+00     -20213
+add  p Particle  f'_0                           30221  1.3500000e+00  3.5000005e-01  3.5000000e-01     0     0  0.0000000e+00      10331
+add  p Particle  anti-K''*0                    -30313  1.7170000e+00  3.2000002e-01  7.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  rho(3S)-                      -30213  1.7200000e+00  2.4999998e-01  5.0000000e-01    -3     2  0.0000000e+00          0
+add  p Particle  K_2*+                            325  1.4256000e+00  9.8500006e-02  7.0000000e-01     3     4  0.0000000e+00        325
+add  p Particle  D'_s1-                        -10433  2.5353000e+00  1.0000033e-03  1.0000000e-02    -3     2  0.0000000e+00     -10433
+add  p Particle  D'_s1+                         10433  2.5353000e+00  1.0000033e-03  1.0000000e-02     3     2  0.0000000e+00      10433
+add  p Particle  K'_1+                          20323  1.4030000e+00  1.7399999e-01  4.0000000e-01     3     2  0.0000000e+00      20323
+add  p Particle  anti-Omega_b+                  -5332  6.1200000e+00  0.0000000e+00  0.0000000e+00     3     1  4.6467831e-01      -5332
+add  p Particle  b_1+                           10213  1.2295000e+00  1.4200001e-01  2.5000000e-01     3     2  0.0000000e+00      10213
+add  p Particle  rho-                            -213  7.7549000e-01  1.4940001e-01  4.8000000e-01    -3     2  0.0000000e+00       -213
+add  p Particle  B_c*-                           -543  6.6020000e+00  0.0000000e+00  0.0000000e+00    -3     2  0.0000000e+00       -543
+add  p Particle  Upsilon(3S)                   200553  1.0355200e+01  2.0299998e-05  2.6000000e-04     0     2  0.0000000e+00     200553
+add  p Particle  B*+                              523  5.3251000e+00  6.5819970e-06  1.0000000e-04     3     2  0.0000000e+00        523
+add  p Particle  Sigma(1660)0                   13212  1.6600000e+00  1.0000000e-01  4.0000000e-01     0     1  0.0000000e+00          0
+add  p Particle  anti-cu_0                      -4201  0.0000000e+00  0.0000000e+00  0.0000000e+00    -4     0  0.0000000e+00      -4201
+add  p Particle  su_1                            3203  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     2  0.0000000e+00       3203
+add  p Particle  f_2                              225  1.2751000e+00  1.8509998e-01  2.7000000e-01     0     4  0.0000000e+00        225
+add  p Particle  anti-c-hadron                    -84  2.0000000e+00  0.0000000e+00  0.0000000e+00    -2     0  1.0000000e-01        -84
+add  p Particle  a_2-                            -215  1.3183000e+00  1.0700000e-01  5.0000000e-01    -3     4  0.0000000e+00       -215
+add  p Particle  c-hadron                          84  2.0000000e+00  0.0000000e+00  0.0000000e+00     2     0  1.0000000e-01         84
+add  p Particle  anti-cd_1                      -4103  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     2  0.0000000e+00      -4103
+add  p Particle  b'                                 7  4.0000000e+02  0.0000000e+00  0.0000000e+00    -1     1  0.0000000e+00          7
+add  p Particle  anti-Sigma_b*-                 -5224  5.8290000e+00  0.0000000e+00  0.0000000e+00    -3     3  0.0000000e+00      -5224
+add  p Particle  anti-t                            -6  1.7500000e+02  1.3981600e+00  1.3981560e+01    -2     1  0.0000000e+00         -6
+add  p Particle  t                                  6  1.7500000e+02  1.3981600e+00  1.3981560e+01     2     1  0.0000000e+00          6
+add  p Particle  pi+                              211  1.3957018e-01  0.0000000e+00  0.0000000e+00     3     0  7.8044971e+03        211
+add  p Particle  anti-Lambda(1690)0            -13124  1.6900000e+00  6.0000018e-02  3.0000000e-01     0     3  0.0000000e+00          0
+add  p Particle  Delta0                          2114  1.2320000e+00  1.1800001e-01  1.4000000e-01     0     3  0.0000000e+00       2114
+add  p Particle  B-                              -521  5.2791500e+00  0.0000000e+00  0.0000000e+00    -3     0  4.9106005e-01       -521
+add  p Particle  ud_1                            2103  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     2  0.0000000e+00       2103
+add  p Particle  Z''0                              33  9.0000000e+02  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00         33
+add  p Particle  anti-ss_1                      -3303  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     2  0.0000000e+00      -3303
+add  p Particle  anti-cd_0                      -4101  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     0  0.0000000e+00      -4101
+add  p Particle  anti-cs_0                      -4301  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     0  0.0000000e+00      -4301
+add  p Particle  D_s+                             431  1.9684900e+00  0.0000000e+00  0.0000000e+00     3     0  1.4989623e-01        431
+add  p Particle  anti-D_2*0                      -425  2.4611000e+00  4.3000001e-02  3.0900000e-01     0     4  0.0000000e+00       -425
+add  p Particle  L-                                17  4.0000000e+02  0.0000000e+00  0.0000000e+00    -3     1  0.0000000e+00         17
+add  p Particle  omega                            223  7.8265000e-01  8.4899999e-03  1.8000000e-01     0     2  0.0000000e+00        223
+add  p Particle  e-                                11  5.1099891e-04  0.0000000e+00  0.0000000e+00    -3     1  0.0000000e+00         11
+add  p Particle  a_20                             115  1.3183000e+00  1.0700000e-01  5.0000000e-01     0     4  0.0000000e+00        115
+add  p Particle  t'                                 8  5.0000000e+02  0.0000000e+00  0.0000000e+00     2     1  0.0000000e+00          8
+add  p Particle  cs_0                            4301  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     0  0.0000000e+00       4301
+add  p Particle  pi(2S)+                       100211  1.3000000e+00  3.9999988e-01  5.0000000e-01     3     0  0.0000000e+00          0
+add  p Particle  cu_1                            4203  0.0000000e+00  0.0000000e+00  0.0000000e+00     4     2  0.0000000e+00       4203
+add  p Particle  Sigma_b0                        5212  5.8078000e+00  6.5821220e-06  1.0000000e-04     0     1  0.0000000e+00       5212
+add  p Particle  anti-su_0                      -3201  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     0  0.0000000e+00      -3201
+add  p Particle  anti-D'_10                    -20423  2.4450000e+00  2.5027080e-01  3.0000000e-01     0     2  0.0000000e+00     -20423
+add  p Particle  anti-Sigma_c-                  -4212  2.4529000e+00  1.6455309e-03  2.4680000e-02    -3     1  0.0000000e+00      -4212
+add  p Particle  chi_b1(2P)                    120553  1.0255500e+01  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00     120553
+add  p Particle  bd_0                            5101  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     0  0.0000000e+00       5101
+add  p Particle  Omega_cc*+                      4434  3.8246600e+00  0.0000000e+00  0.0000000e+00     3     3  0.0000000e+00       4434
+add  p Particle  anti-Lambda(1670)0            -33122  1.6700000e+00  3.5000005e-02  1.8000000e-01     0     1  0.0000000e+00          0
+add  p Particle  nu_e                              12  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00         12
+add  p Particle  CMshower                          94  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         94
+add  p Particle  su_0                            3201  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     0  0.0000000e+00       3201
+add  p Particle  Omega_b*-                       5334  6.1300000e+00  0.0000000e+00  0.0000000e+00    -3     3  0.0000000e+00       5334
+add  p Particle  eta_b(2S)                     100551  9.9970000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00          0
+add  p Particle  h_c                            10443  3.5259300e+00  0.0000000e+00  2.0000000e-02     0     2  0.0000000e+00      10443
+add  p Particle  W+                                24  8.0398000e+01  2.1400000e+00  1.0000000e+01     3     2  0.0000000e+00         24
+add  p Particle  a_2+                             215  1.3183000e+00  1.0700000e-01  5.0000000e-01     3     4  0.0000000e+00        215
+add  p Particle  K_0*-                         -10321  1.4200000e+00  2.7000000e-01  6.0000000e-01    -3     0  0.0000000e+00     -10321
+add  p Particle  Upsilon_3(1D)                    557  1.0159900e+01  0.0000000e+00  0.0000000e+00     0     6  0.0000000e+00        557
+add  p Particle  eta_b2(1D)                     10555  1.0157000e+01  0.0000000e+00  0.0000000e+00     0     4  0.0000000e+00      10555
+add  p Particle  cluster                           91  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         91
+add  p Particle  D*0                              423  2.0069700e+00  6.5821023e-06  3.0000000e-04     0     2  0.0000000e+00        423
+add  p Particle  Sigma_c*0                       4114  2.5180000e+00  1.6100002e-02  9.1900000e-02     0     3  0.0000000e+00       4114
+add  p Particle  K_3*-                           -327  1.7760000e+00  1.5900001e-01  7.0000000e-01    -3     6  0.0000000e+00          0
+add  p Particle  anti-rndmflav                    -82  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00        -82
+add  p Particle  anti-Sigma_c*0                 -4114  2.5180000e+00  1.6100002e-02  9.1900000e-02     0     3  0.0000000e+00      -4114
+add  p Particle  anti-K_10                     -10313  1.2720000e+00  8.9999999e-02  2.0000000e-01     0     2  0.0000000e+00     -10313
+add  p Particle  omega(1650)                    30223  1.6700000e+00  3.1499993e-01  0.0000000e+00     0     2  0.0000000e+00          0
+add  p Particle  anti-t'                           -8  5.0000000e+02  0.0000000e+00  0.0000000e+00    -2     1  0.0000000e+00         -8
+add  p Particle  Lambda_b0                       5122  5.6202000e+00  0.0000000e+00  0.0000000e+00     0     1  4.1371359e-01       5122
+add  p Particle  chi_b0(3P)                    210551  1.0500700e+01  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00     210551
+add  p Particle  anti-Omega+                    -3334  1.6724500e+00  0.0000000e+00  0.0000000e+00     3     3  2.4612961e+01      -3334
+add  p Particle  bs_1                            5303  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     2  0.0000000e+00       5303
+add  p Particle  tritium                   1000010030  2.8092500e+00  0.0000000e+00  0.0000000e+00     3     0  0.0000000e+00          0
+add  p Particle  Lambda(1670)0                  33122  1.6700000e+00  3.5000005e-02  1.8000000e-01     0     1  0.0000000e+00          0
+add  p Particle  anti-cc_1                      -4403  0.0000000e+00  0.0000000e+00  0.0000000e+00    -4     2  0.0000000e+00      -4403
+add  p Particle  anti-Sigma(1670)0             -13214  1.6700000e+00  6.0000018e-02  3.0000000e-01     0     3  0.0000000e+00          0
+add  p Particle  B_s0                             531  5.3663000e+00  0.0000000e+00  0.0000000e+00     0     0  4.4129450e-01        531
+add  p Particle  A0                                36  3.1000000e+02  7.0022575e+00  0.0000000e+00     0     0  0.0000000e+00         36
+add  p Particle  anti-Lambda_c(2625)-           -4124  2.6266000e+00  0.0000000e+00  2.8500000e-02    -3     3  0.0000000e+00          0
+add  p Particle  THRUaxis                          96  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         96
+add  p Particle  chi_b2(2P)                    100555  1.0268600e+01  0.0000000e+00  0.0000000e+00     0     4  0.0000000e+00     100555
+add  p Particle  SPHEaxis                          95  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         95
+add  p Particle  B'_c1-                        -20543  7.4000000e+00  0.0000000e+00  2.0000000e-01    -3     2  0.0000000e+00     -20543
+add  p Particle  string                            92  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         92
+add  p Particle  eta(2S)                       100221  1.2940000e+00  5.5000021e-02  2.0000000e-01     0     0  0.0000000e+00          0
+add  p Particle  Xi'_c0                          4312  2.5780000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00       4312
+add  p Particle  cc_1                            4403  0.0000000e+00  0.0000000e+00  0.0000000e+00     4     2  0.0000000e+00       4403
+add  p Particle  anti-Xi_c0                     -4132  2.4710000e+00  0.0000000e+00  0.0000000e+00     0     1  3.3576755e-02      -4132
+add  p Particle  anti-D(2S)0                  -100421  2.5800000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00          0
+add  p Particle  a_00                         9000111  9.8470000e-01  7.4999997e-02  5.0000000e-02     0     0  0.0000000e+00      10111
+add  p Particle  Delta+                          2214  1.2320000e+00  1.1800001e-01  1.4000000e-01     3     3  0.0000000e+00       2214
+add  p Particle  sd_1                            3103  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     2  0.0000000e+00       3103
+add  p Particle  pi(2S)-                      -100211  1.3000000e+00  3.9999988e-01  5.0000000e-01    -3     0  0.0000000e+00          0
+add  p Particle  bb_1                            5503  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     2  0.0000000e+00       5503
+add  p Particle  K_3*+                            327  1.7760000e+00  1.5900001e-01  7.0000000e-01     3     6  0.0000000e+00          0
+add  p Particle  anti-bs_1                      -5303  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     2  0.0000000e+00      -5303
+add  p Particle  cs_1                            4303  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     2  0.0000000e+00       4303
+add  p Particle  anti-bu_1                      -5203  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     2  0.0000000e+00      -5203
+add  p Particle  phi(1680)                     100333  1.6800000e+00  1.5000001e-01  0.0000000e+00     0     2  0.0000000e+00          0
+add  p Particle  Sigma_c++                       4222  2.4540200e+00  2.2300002e-03  2.7000000e-02     6     1  0.0000000e+00       4222
+add  p Particle  Xss                            30363  1.8000000e+00  0.0000000e+00  1.0000000e+00     0     2  0.0000000e+00      30363
+add  p Particle  anti-Omega_cc*-                -4434  3.8246600e+00  0.0000000e+00  0.0000000e+00    -3     3  0.0000000e+00      -4434
+add  p Particle  anti-sd_1                      -3103  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     2  0.0000000e+00      -3103
+add  p Particle  W'+                               34  5.0000000e+02  0.0000000e+00  0.0000000e+00     3     2  0.0000000e+00         34
+add  p Particle  Sigma(1670)0                   13214  1.6700000e+00  6.0000018e-02  3.0000000e-01     0     3  0.0000000e+00          0
+add  p Particle  bd_1                            5103  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     2  0.0000000e+00       5103
+add  p Particle  anti-B0                         -511  5.2795300e+00  0.0000000e+00  0.0000000e+00     0     0  4.5718350e-01       -511
+add  p Particle  phi                              333  1.0194550e+00  4.2600002e-03  3.2000000e-02     0     2  0.0000000e+00        333
+add  p Particle  B0                               511  5.2795300e+00  0.0000000e+00  0.0000000e+00     0     0  4.5718350e-01        511
+add  p Particle  system                            90  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         90
+add  p Particle  Xi_c*0                          4314  2.6461000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00       4314
+add  p Particle  anti-Xi_c*-                    -4324  2.6466000e+00  0.0000000e+00  0.0000000e+00    -3     3  0.0000000e+00      -4324
+add  p Particle  Lambda(1600)0                  23122  1.6000000e+00  1.5000001e-01  2.5000000e-01     0     1  0.0000000e+00          0
+add  p Particle  anti-Lambda(1520)0             -3124  1.5195000e+00  1.5600000e-02  1.8000000e-01     0     3  0.0000000e+00          0
+add  p Particle  anti-B_s*0                      -533  5.4128000e+00  6.5821220e-06  1.0000000e-04     0     2  0.0000000e+00       -533
+add  p Particle  Higgs0                            25  1.1500000e+02  7.0022575e+00  0.0000000e+00     0     0  0.0000000e+00         25
+add  p Particle  D(2S)0                        100421  2.5800000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00          0
+add  p Particle  Xi_cc*++                        4424  3.6564800e+00  0.0000000e+00  0.0000000e+00     6     3  0.0000000e+00       4424
+add  p Particle  anti-R0                          -41  5.0000000e+03  0.0000000e+00  4.1729150e+03     0     2  0.0000000e+00        -41
+add  p Particle  psi(3770)                      30443  3.7729200e+00  2.7199998e-02  3.0000000e-02     0     2  0.0000000e+00      30443
+add  p Particle  B_2*-                           -525  5.7469000e+00  5.0245206e-02  2.0000000e-01    -3     4  0.0000000e+00       -525
+add  p Particle  anti-Xi*0                      -3324  1.5318000e+00  9.1000002e-03  5.0000000e-02     0     3  0.0000000e+00      -3324
+add  p Particle  rho+                             213  7.7549000e-01  1.4940001e-01  4.8000000e-01     3     2  0.0000000e+00        213
+add  p Particle  K'*+                          100323  1.4140000e+00  2.3199996e-01  6.0000000e-01     3     2  0.0000000e+00          0
+add  p Particle  R0                                41  5.0000000e+03  0.0000000e+00  4.1729150e+03     0     2  0.0000000e+00         41
+add  p Particle  Xsu                            30353  1.6000000e+00  0.0000000e+00  1.0000000e+00     3     2  0.0000000e+00      30353
+add  p Particle  anti-Xsu                      -30353  1.6000000e+00  0.0000000e+00  1.0000000e+00    -3     2  0.0000000e+00     -30353
+add  p Particle  anti-Sigma+                    -3112  1.1974490e+00  0.0000000e+00  0.0000000e+00     3     1  4.4339305e+01      -3112
+add  p Particle  Lambda_c(2625)+                 4124  2.6266000e+00  0.0000000e+00  2.8500000e-02     3     3  0.0000000e+00          0
+add  p Particle  Xi'_c+                          4322  2.5757000e+00  0.0000000e+00  0.0000000e+00     3     1  0.0000000e+00       4322
+add  p Particle  anti-K_3*0                      -317  1.7760000e+00  1.5900001e-01  7.0000000e-01     0     6  0.0000000e+00          0
+add  p Particle  Lambda(1520)0                   3124  1.5195000e+00  1.5600000e-02  1.8000000e-01     0     3  0.0000000e+00          0
+add  p Particle  anti-B_s0*0                   -10531  5.8410000e+00  1.4993444e-01  6.5000000e-02     0     0  0.0000000e+00     -10531
+add  p Particle  Sigma(1775)0                    3216  1.7750000e+00  1.1999999e-01  5.0000000e-01     0     5  0.0000000e+00          0
+add  p Particle  tau+                             -15  1.7768400e+00  0.0000000e+00  0.0000000e+00     3     1  8.7119688e-02        -15
+add  p Particle  anti-Sigma-                    -3222  1.1893700e+00  0.0000000e+00  0.0000000e+00    -3     1  2.4037359e+01      -3222
+add  p Particle  K_4*0                            319  2.0450000e+00  1.9800000e-01  2.0000000e-01     0     8  0.0000000e+00          0
+add  p Particle  D'_1-                         -20413  2.4450000e+00  2.5027080e-01  3.0000000e-01    -3     2  0.0000000e+00     -20413
+add  p Particle  B_2*+                            525  5.7469000e+00  5.0245206e-02  2.0000000e-01     3     4  0.0000000e+00        525
+add  p Particle  anti-He3                 -1000020030  2.8092300e+00  0.0000000e+00  0.0000000e+00    -6     0  0.0000000e+00          0
+add  p Particle  anti-K'_10                    -20313  1.4030000e+00  1.7399999e-01  4.0000000e-01     0     2  0.0000000e+00     -20313
+add  p Particle  Z(4430)-                    -9042413  4.4330000e+00  3.1700598e-04  0.0000000e+00    -3     2  0.0000000e+00   -9042413
+add  p Particle  D_2*+                            415  2.4601000e+00  3.6999998e-02  3.1200000e-01     3     4  0.0000000e+00        415
+add  p Particle  Z0                                23  9.1187600e+01  2.4951996e+00  1.0000000e+01     0     2  0.0000000e+00         23
+add  p Particle  Xi0                             3322  1.3148600e+00  0.0000000e+00  0.0000000e+00     0     1  8.6939813e+01       3322
+add  p Particle  chi_c2                           445  3.5562000e+00  2.0299998e-03  6.0000000e-03     0     4  0.0000000e+00        445
+add  p Particle  B_s0*0                         10531  5.8410000e+00  1.4993444e-01  6.5000000e-02     0     0  0.0000000e+00      10531
+add  p Particle  anti-Omega_b*+                 -5334  6.1300000e+00  0.0000000e+00  0.0000000e+00     3     3  0.0000000e+00      -5334
+add  p Particle  Xsd                            30343  1.6000000e+00  0.0000000e+00  1.0000000e+00     0     2  0.0000000e+00      30343
+add  p Particle  bc_1                            5403  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     2  0.0000000e+00       5403
+add  p Particle  anti-bc_1                      -5403  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     2  0.0000000e+00      -5403
+add  p Particle  Xi_c*+                          4324  2.6466000e+00  0.0000000e+00  0.0000000e+00     3     3  0.0000000e+00       4324
+add  p Particle  anti-Sigma_b-                  -5222  5.8078000e+00  6.5821220e-06  1.0000000e-04    -3     1  0.0000000e+00      -5222
+add  p Particle  bs_0                            5301  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     0  0.0000000e+00       5301
+add  p Particle  chi_b1                         20553  9.8927000e+00  9.8928000e+00  0.0000000e+00     0     2  0.0000000e+00      20553
+add  p Particle  Omega_c0                        4332  2.6975000e+00  0.0000000e+00  0.0000000e+00     0     1  2.0685680e-02       4332
+add  p Particle  chi_b0(2P)                    110551  1.0232500e+01  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00     110551
+add  p Particle  anti-D0                         -421  1.8648400e+00  0.0000000e+00  0.0000000e+00     0     0  1.2294489e-01       -421
+add  p Particle  anti-Xsd                      -30343  1.6000000e+00  0.0000000e+00  1.0000000e+00     0     2  0.0000000e+00     -30343
+add  p Particle  anti-cu_1                      -4203  0.0000000e+00  0.0000000e+00  0.0000000e+00    -4     2  0.0000000e+00      -4203
+add  p Particle  K0                               311  4.9761400e-01  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00        311
+add  p Particle  psi(2S)                       100443  3.6860900e+00  3.1700003e-04  8.0000000e-04     0     2  0.0000000e+00     100443
+add  p Particle  anti-B_2*0                      -515  5.7469000e+00  5.0245206e-02  2.0000000e-01     0     4  0.0000000e+00       -515
+add  p Particle  mu-                               13  1.0565837e-01  0.0000000e+00  0.0000000e+00    -3     1  6.5864973e+05         13
+add  p Particle  anti-Xi'_b+                    -5312  5.9600000e+00  6.5821220e-06  1.0000000e-04     3     1  0.0000000e+00      -5312
+add  p Particle  anti-tritium             -1000010030  2.8092500e+00  0.0000000e+00  0.0000000e+00    -3     0  0.0000000e+00          0
+add  p Particle  u                                  2  5.6000000e-03  0.0000000e+00  0.0000000e+00     2     1  0.0000000e+00          2
+add  p Particle  Xi_b*0                          5324  5.9700000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00       5324
+add  p Particle  ud_0                            2101  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     0  0.0000000e+00       2101
+add  p Particle  anti-bc_0                      -5401  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     0  0.0000000e+00      -5401
+add  p Particle  K_3*0                            317  1.7760000e+00  1.5900001e-01  7.0000000e-01     0     6  0.0000000e+00          0
+add  p Particle  anti-ud_0                      -2101  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     0  0.0000000e+00      -2101
+add  p Particle  rho(3S)+                       30213  1.7200000e+00  2.4999998e-01  5.0000000e-01     3     2  0.0000000e+00          0
+add  p Particle  anti-Omega_cc-                 -4432  3.7866300e+00  0.0000000e+00  0.0000000e+00    -3     1  1.0000000e-01      -4432
+add  p Particle  Sigma+                          3222  1.1893700e+00  0.0000000e+00  0.0000000e+00     3     1  2.4037359e+01       3222
+add  p Particle  anti-Sigma_c0                  -4112  2.4537600e+00  2.1999997e-03  2.4000000e-02     0     1  0.0000000e+00      -4112
+add  p Particle  Sigma_c+                        4212  2.4529000e+00  1.6455309e-03  2.4680000e-02     3     1  0.0000000e+00       4212
+add  p Particle  He3                       1000020030  2.8092300e+00  0.0000000e+00  0.0000000e+00     6     0  0.0000000e+00          0
+add  p Particle  anti-Lambda0                   -3122  1.1156830e+00  0.0000000e+00  0.0000000e+00     0     1  7.8875396e+01      -3122
+add  p Particle  D0                               421  1.8648400e+00  0.0000000e+00  0.0000000e+00     0     0  1.2294489e-01        421
+add  p Particle  Upsilon_2(1D)                  20555  1.0156200e+01  0.0000000e+00  0.0000000e+00     0     4  0.0000000e+00      20555
+add  p Particle  psi(4040)                    9000443  4.0390000e+00  8.0000005e-02  1.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  B_s0L                            350  5.3663000e+00  0.0000000e+00  0.0000000e+00     0     0  4.2184546e-01          0
+add  p Particle  Xi'_b-                          5312  5.9600000e+00  6.5821220e-06  1.0000000e-04    -3     1  0.0000000e+00       5312
+add  p Particle  anti-Xi'_c-                    -4322  2.5757000e+00  0.0000000e+00  0.0000000e+00    -3     1  0.0000000e+00      -4322
+add  p Particle  anti-bu_0                      -5201  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     0  0.0000000e+00      -5201
+add  p Particle  Xu-                              -44  1.0000000e+00  0.0000000e+00  0.0000000e+00    -3     0  0.0000000e+00        -44
+add  p Particle  Sigma_c0                        4112  2.4537600e+00  2.1999997e-03  2.4000000e-02     0     1  0.0000000e+00       4112
+add  p Particle  K'*-                         -100323  1.4140000e+00  2.3199996e-01  6.0000000e-01    -3     2  0.0000000e+00          0
+add  p Particle  table                             99  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         99
+add  p Particle  Higgs'0                           35  3.1000000e+02  7.0022575e+00  0.0000000e+00     0     0  0.0000000e+00         35
+add  p Particle  anti-bs_0                      -5301  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     0  0.0000000e+00      -5301
+add  p Particle  Sigma-                          3112  1.1974490e+00  0.0000000e+00  0.0000000e+00    -3     1  4.4339305e+01       3112
+add  p Particle  anti-Sigma_b*0                 -5214  5.8290000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00      -5214
+add  p Particle  anti-B_10                     -10513  5.7320000e+00  3.9891649e-02  2.0000000e-01     0     2  0.0000000e+00     -10513
+add  p Particle  anti-s                            -3  1.9900000e-01  0.0000000e+00  0.0000000e+00     1     1  0.0000000e+00         -3
+add  p Particle  anti-Xi'_b0                    -5322  5.9600000e+00  6.5821220e-06  1.0000000e-04     0     1  0.0000000e+00      -5322
+add  p Particle  chi_b0                         10551  9.8594000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00      10551
+add  p Particle  D_1+                           10413  2.4230000e+00  2.0006450e-02  2.7000000e-01     3     2  0.0000000e+00      10413
+add  p Particle  J/psi                            443  3.0969160e+00  9.3199996e-05  2.0000000e-04     0     2  0.0000000e+00        443
+add  p Particle  eta                              221  5.4785300e-01  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00        221
+add  p Particle  specflav                          81  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         81
+add  p Particle  W-                               -24  8.0398000e+01  2.1400000e+00  1.0000000e+01    -3     2  0.0000000e+00        -24
+add  p Particle  nu_mu                             14  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00         14
+add  p Particle  p+                              2212  9.3827203e-01  0.0000000e+00  0.0000000e+00     3     1  0.0000000e+00       2212
+add  p Particle  anti-Sigma*-                   -3224  1.3828000e+00  3.5799992e-02  3.5000000e-02    -3     3  0.0000000e+00      -3224
+add  p Particle  Omega_c*0                       4334  2.7683000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00       4334
+add  p Particle  Xi_b*-                          5314  5.9700000e+00  0.0000000e+00  0.0000000e+00    -3     3  0.0000000e+00       5314
+add  p Particle  pi0                              111  1.3497660e-01  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00        111
+add  p Particle  D_s*-                           -433  2.1123000e+00  6.5821023e-06  1.0000000e-04    -3     2  0.0000000e+00       -433
+add  p Particle  a_0+                         9000211  9.8470000e-01  7.4999997e-02  5.0000000e-02     3     0  0.0000000e+00      10211
+add  p Particle  nu_L                              18  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00         18
+add  p Particle  Xi_c+                           4232  2.4679000e+00  0.0000000e+00  0.0000000e+00     3     1  1.3250827e-01       4232
+add  p Particle  K_0*+                          10321  1.4200000e+00  2.7000000e-01  6.0000000e-01     3     0  0.0000000e+00      10321
+add  p Particle  rho(2S)-                     -100213  1.4650000e+00  4.0000012e-01  5.0000000e-01    -3     2  0.0000000e+00          0
+add  p Particle  eta_b                            551  9.4030000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00        551
+add  p Particle  ss_1                            3303  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     2  0.0000000e+00       3303
+add  p Particle  anti-d                            -1  9.9000000e-03  0.0000000e+00  0.0000000e+00     1     1  0.0000000e+00         -1
+add  p Particle  anti-Xi_b*+                    -5314  5.9700000e+00  0.0000000e+00  0.0000000e+00     3     3  0.0000000e+00      -5314
+add  p Particle  anti-K*0                        -313  8.9600000e-01  5.0299999e-02  2.3000000e-01     0     2  0.0000000e+00       -313
+add  p Particle  anti-B_s0                       -531  5.3663000e+00  0.0000000e+00  0.0000000e+00     0     0  4.4129450e-01       -531
+add  p Particle  Delta-                          1114  1.2320000e+00  1.1800001e-01  1.4000000e-01    -3     3  0.0000000e+00       1114
+add  p Particle  anti-n0                        -2112  9.3956536e-01  0.0000000e+00  0.0000000e+00     0     1  2.6552618e+14      -2112
+add  p Particle  W'-                              -34  5.0000000e+02  0.0000000e+00  0.0000000e+00    -3     2  0.0000000e+00        -34
+add  p Particle  B_c0*+                         10541  7.2500000e+00  0.0000000e+00  6.0000000e-02     3     0  0.0000000e+00      10541
+add  p Particle  B_s2*0                           535  5.8397000e+00  5.0245206e-02  2.9000000e-02     0     4  0.0000000e+00        535
+add  p Particle  X_1(3872)                    9920443  3.8722000e+00  3.1700598e-04  2.9000000e-03     0     2  0.0000000e+00    9920443
+add  p Particle  anti-Sigma_c--                 -4222  2.4540200e+00  2.2300002e-03  2.7000000e-02    -6     1  0.0000000e+00      -4222
+add  p Particle  anti-B_s2*0                     -535  5.8397000e+00  5.0245206e-02  2.9000000e-02     0     4  0.0000000e+00       -535
+add  p Particle  Delta++                         2224  1.2320000e+00  1.1800001e-01  1.4000000e-01     6     3  0.0000000e+00       2224
+add  p Particle  Upsilon_2(2D)                 120555  1.0440600e+01  0.0000000e+00  0.0000000e+00     0     4  0.0000000e+00     120555
+add  p Particle  chi_c0                         10441  3.4147500e+00  1.0200000e-02  5.0000000e-02     0     0  0.0000000e+00      10441
+add  p Particle  Xu0                               43  1.0000000e+00  0.0000000e+00  0.0000000e+00     0     0  0.0000000e+00         43
+add  p Particle  anti-Xi'_c0                    -4312  2.5780000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00      -4312
+add  p Particle  chi_b2                           555  9.9122000e+00  0.0000000e+00  0.0000000e+00     0     4  0.0000000e+00        555
+add  p Particle  B'_c1+                         20543  7.4000000e+00  0.0000000e+00  2.0000000e-01     3     2  0.0000000e+00      20543
+add  p Particle  deuteron                  1000010020  1.8756130e+00  0.0000000e+00  0.0000000e+00     3     0  0.0000000e+00          0
+add  p Particle  anti-Lambda(1810)0            -53122  1.8100000e+00  1.5000001e-01  4.6000000e-01     0     1  0.0000000e+00          0
+add  p Particle  B_c*+                            543  6.6020000e+00  0.0000000e+00  0.0000000e+00     3     2  0.0000000e+00        543
+add  p Particle  B_c2*+                           545  7.3500000e+00  0.0000000e+00  6.0000000e-02     3     4  0.0000000e+00        545
+add  p Particle  Xi*-                            3314  1.5350000e+00  9.9000002e-03  5.0000000e-02    -3     3  0.0000000e+00       3314
+add  p Particle  f_0(1500)                    9030221  1.5050000e+00  1.0900000e-01  3.0000000e-01     0     0  0.0000000e+00          0
+add  p Particle  anti-Delta+                    -1114  1.2320000e+00  1.1800001e-01  1.4000000e-01     3     3  0.0000000e+00      -1114
+add  p Particle  Sigma0                          3212  1.1926420e+00  8.8947595e-06  1.3000000e-04     0     1  0.0000000e+00       3212
+add  p Particle  Z(4430)+                     9042413  4.4330000e+00  3.1700598e-04  0.0000000e+00     3     2  0.0000000e+00    9042413
+add  p Particle  B_c+                             541  6.2760000e+00  0.0000000e+00  0.0000000e+00     3     0  1.3490661e-01        541
+add  p Particle  B_s*0                            533  5.4128000e+00  6.5821220e-06  1.0000000e-04     0     2  0.0000000e+00        533
+add  p Particle  rho(2S)0                      100113  1.4650000e+00  4.0000012e-01  5.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  anti-alpha               -1000020040  3.7274170e+00  0.0000000e+00  0.0000000e+00    -6     0  0.0000000e+00          0
+add  p Particle  dd_1                            1103  0.0000000e+00  0.0000000e+00  0.0000000e+00    -2     2  0.0000000e+00       1103
+add  p Particle  Xi-                             3312  1.3217100e+00  0.0000000e+00  0.0000000e+00    -3     1  4.9135984e+01       3312
+add  p Particle  Lambda(1820)0                   3126  1.8200000e+00  7.9999995e-02  4.0000000e-01     0     5  0.0000000e+00          0
+add  p Particle  anti-Sigma_b0                  -5212  5.8078000e+00  6.5821220e-06  1.0000000e-04     0     1  0.0000000e+00      -5212
+add  p Particle  anti-Sigma_b+                  -5112  5.8152000e+00  6.5821220e-06  1.0000000e-04     3     1  0.0000000e+00      -5112
+add  p Particle  cd_0                            4101  0.0000000e+00  0.0000000e+00  0.0000000e+00     1     0  0.0000000e+00       4101
+add  p Particle  anti-cs_1                      -4303  0.0000000e+00  0.0000000e+00  0.0000000e+00    -1     2  0.0000000e+00      -4303
+add  p Particle  K_1+                           10323  1.2720000e+00  8.9999999e-02  2.0000000e-01     3     2  0.0000000e+00      10323
+add  p Particle  Higgs-                           -37  3.1000000e+02  7.0022575e+00  0.0000000e+00    -3     0  0.0000000e+00        -37
+add  p Particle  anti-K_0*0                    -10311  1.4200000e+00  2.7000000e-01  6.0000000e-01     0     0  0.0000000e+00     -10311
+add  p Particle  anti-Xi_c*0                    -4314  2.6461000e+00  0.0000000e+00  0.0000000e+00     0     3  0.0000000e+00      -4314
+add  p Particle  anti-Xi+                       -3312  1.3217100e+00  0.0000000e+00  0.0000000e+00     3     1  4.9135984e+01      -3312
+add  p Particle  anti-D*(2S)0                 -100423  2.6400000e+00  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00          0
+add  p Particle  anti-dd_1                      -1103  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     2  0.0000000e+00      -1103
+add  p Particle  anti-b'                           -7  4.0000000e+02  0.0000000e+00  0.0000000e+00     1     1  0.0000000e+00         -7
+add  p Particle  a_0-                        -9000211  9.8470000e-01  7.4999997e-02  5.0000000e-02    -3     0  0.0000000e+00     -10211
+add  p Particle  anti-nu_tau                      -16  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00        -16
+add  p Particle  Z'0                               32  5.0000000e+02  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00         32
+add  p Particle  g                                 21  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00         21
+add  p Particle  nu_tau                            16  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     1  0.0000000e+00         16
+add  p Particle  c                                  4  1.3500000e+00  0.0000000e+00  0.0000000e+00     2     1  0.0000000e+00          4
+add  p Particle  Upsilon_3(2D)                 100557  1.0444300e+01  0.0000000e+00  0.0000000e+00     0     6  0.0000000e+00     100557
+add  p Particle  Lambda(1690)0                  13124  1.6900000e+00  6.0000018e-02  3.0000000e-01     0     3  0.0000000e+00          0
+add  p Particle  f_0                          9010221  9.8000000e-01  7.0000003e-02  5.0000000e-03     0     0  0.0000000e+00      10221
+add  p Particle  pi(2S)0                       100111  1.3000000e+00  3.9999988e-01  5.0000000e-01     0     0  0.0000000e+00          0
+add  p Particle  Sigma_c*+                       4214  2.5175000e+00  2.0000000e-03  3.0000000e-02     3     3  0.0000000e+00       4214
+add  p Particle  Sigma(1750)0                   23212  1.7500000e+00  8.9999999e-02  4.5000000e-01     0     1  0.0000000e+00          0
+add  p Particle  D_1-                          -10413  2.4230000e+00  2.0006450e-02  2.7000000e-01    -3     2  0.0000000e+00     -10413
+add  p Particle  anti-bd_0                      -5101  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     0  0.0000000e+00      -5101
+add  p Particle  B_c1-                         -10543  7.3000000e+00  0.0000000e+00  6.0000000e-02    -3     2  0.0000000e+00     -10543
+add  p Particle  D(2S)+                        100411  2.5800000e+00  0.0000000e+00  0.0000000e+00     3     0  0.0000000e+00          0
+add  p Particle  anti-Sigma_c*-                 -4214  2.5175000e+00  2.0000000e-03  3.0000000e-02    -3     3  0.0000000e+00      -4214
+add  p Particle  anti-Lambda_b0                 -5122  5.6202000e+00  0.0000000e+00  0.0000000e+00     0     1  4.1371359e-01      -5122
+add  p Particle  rho(3S)0                       30113  1.7200000e+00  2.4999998e-01  5.0000000e-01     0     2  0.0000000e+00          0
+add  p Particle  anti-bb_1                      -5503  0.0000000e+00  0.0000000e+00  0.0000000e+00     2     2  0.0000000e+00      -5503
+add  p Particle  Sigma_b-                        5112  5.8152000e+00  6.5821220e-06  1.0000000e-04    -3     1  0.0000000e+00       5112
+add  p Particle  anti-Sigma(1750)0             -23212  1.7500000e+00  8.9999999e-02  4.5000000e-01     0     1  0.0000000e+00          0
+add  p Particle  anti-Sigma_c*--                -4224  2.5184000e+00  1.4900002e-02  9.2000000e-02    -6     3  0.0000000e+00      -4224
+add  p Particle  Sigma_c*++                      4224  2.5184000e+00  1.4900002e-02  9.2000000e-02     6     3  0.0000000e+00       4224
+add  p Particle  B_s0H                            530  5.3663000e+00  0.0000000e+00  0.0000000e+00     0     0  4.6074353e-01          0
+add  p Particle  L+                               -17  4.0000000e+02  0.0000000e+00  0.0000000e+00     3     1  0.0000000e+00        -17
+add  p Particle  anti-Xi_b0                     -5232  5.7924000e+00  0.0000000e+00  0.0000000e+00     0     1  4.2570529e-01      -5232
+add  p Particle  gamma                             22  0.0000000e+00  0.0000000e+00  0.0000000e+00     0     2  0.0000000e+00         22
+*---------------------------------------------------------------------------------------------------------------------------------------
+* Added by R. Godang 5/10/2013 for Belle II. The parameters are given by Shohei Nishida
+*---------------------------------------------------------------------------------------------------------------------------------------
+add  p Particle  Xdd                            30643  1.6000000e+00  5.0000000e-01  9.6700000e-01     0     0   0.0000000e+00         0  
+add  p Particle  anti-Xdd                      -30643  1.6000000e+00  5.0000000e-01  9.6700000e-01     0     0   0.0000000e+00         0
+add  p Particle  Xdu+                           30653  1.6000000e+00  5.0000000e-01  9.6700000e-01     3     0   0.0000000e+00         0
+add  p Particle  anti-Xdu-                     -30653  1.6000000e+00  5.0000000e-01  9.6700000e-01    -3     0   0.0000000e+00         0
+*---------------------------------------------------------------------------------------------------------------------------------------
+* Added by R. Godang 5/10/2013 for Belle II. The parameters are given by Kiyoshi Hayasaka 
+*---------------------------------------------------------------------------------------------------------------------------------------
+add  p Particle  pi(1)(1400)0                 9000113  1.3540000e+00  3.3000000e-01  0.0000000e+00     0     4   5.9796000e-13         0
+add  p Particle  pi(1)(1400)+                 9000213  1.3540000e+00  3.3000000e-01  0.0000000e+00     3     4   5.9796000e-13         0
+add  p Particle  eta(1405)                    9020221  1.4089000e+00  5.1100000e-02  0.0000000e+00     0     0   3.8616000e-12         0
+add  p Particle  a(0)(1450)0                    10111  1.4740000e+00  2.6500000e-01  0.0000000e+00     0     0   7.4463000e-13         0 
+add  p Particle  a(0)(1450)+                    10211  1.4740000e+00  2.6500000e-01  0.0000000e+00     3     0   7.4463000e-13         0 
+add  p Particle  eta(1475)                     100331  1.4760000e+00  8.5000000e-02  0.0000000e+00     0     0   2.3215000e-12         0
+add  p Particle  pi(1)(1600)0                 9010113  1.6620000e+00  2.4000000e-01  0.0000000e+00     0     4   8.2220000e-13         0
+add  p Particle  pi(1)(1600)+                 9010213  1.6620000e+00  2.4000000e-01  0.0000000e+00     3     4   8.2220000e-13         0
+add  p Particle  eta(2)(1645)                   10225  1.6170000e+00  1.8100000e-01  0.0000000e+00     0     8   1.0902000e-12         0
+add  p Particle  omega(3)(1670)                   227  1.6670000e+00  1.6800000e-01  0.0000000e+00     0    12   1.1746000e-12         0 
+add  p Particle  pi(2)(1670)0                   10115  1.6722000e+00  2.6000000e-01  0.0000000e+00     0     8   7.5895000e-13         0
+add  p Particle  pi(2)(1670)+                   10215  1.6722000e+00  2.6000000e-01  0.0000000e+00     3     8   7.5895000e-13         0
+add  p Particle  rho(3)(1690)0                    117  1.6888000e+00  1.6100000e-01  0.0000000e+00     0    12   1.2256000e-12         0
+add  p Particle  rho(3)(1690)+                    217  1.6888000e+00  1.6100000e-01  0.0000000e+00     3    12   1.2256000e-12         0
+add  p Particle  f(0)(1710)                     10331  1.7200000e+00  1.3500000e-01  0.0000000e+00     0     0   1.4617000e-12         0  
+add  p Particle  pi(1800)0                    9010111  1.8120000e+00  2.0800000e-01  0.0000000e+00     0     0   9.4869000e-13         0
+add  p Particle  pi(1800)+                    9010211  1.8120000e+00  2.0800000e-01  0.0000000e+00     3     0   9.4869000e-13         0
+add  p Particle  phi(3)(1850)                     337  1.8540000e+00  8.7000000e-02  0.0000000e+00     0    12   2.2681000e-12         0 
+add  p Particle  f(2)(1950)                   9050225  1.9440000e+00  4.7200000e-01  0.0000000e+00     0     8   4.1807000e-13         0
+add  p Particle  f(2)(2010)                   9060225  2.0100000e+00  2.0000000e-01  0.0000000e+00     0     8   9.8663000e-13         0
+add  p Particle  a(4)(2040)0                      119  1.9960000e+00  2.5500000e-01  0.0000000e+00     0    16   7.7383000e-13         0
+add  p Particle  a(4)(2040)+                      219  1.9960000e+00  2.5500000e-01  0.0000000e+00     3    16   7.7383000e-13         0
+add  p Particle  f(4)(2050)                       229  2.0180000e+00  2.3700000e-01  0.0000000e+00     0    16   8.3260000e-13         0  
+add  p Particle  f(2)(2300)                   9080225  2.2970000e+00  1.5000000e-01  0.0000000e+00     0     8   1.3155000e-12         0 
+add  p Particle  f(2)(2340)                   9090225  2.3400000e+00  1.5000000e-01  0.0000000e+00     0     8   6.1665000e-13         0 
+add  p Particle  K(2)(1770)0                    10315  1.7730000e+00  1.8600000e-01  0.0000000e+00     0     8   1.0609000e-12         0 
+add  p Particle  K(2)(1770)+                    10325  1.7730000e+00  1.8600000e-01  0.0000000e+00     3     8   1.0609000e-12         0  
+add  p Particle  K(2)(1820)0                    20315  1.8160000e+00  2.7600000e-01  0.0000000e+00     0     8   7.1495000e-13         0
+add  p Particle  K(2)(1820)+                    20325  1.8160000e+00  2.7600000e-01  0.0000000e+00     3     8   7.1495000e-13         0
 end
+
index fc69bf8080f217b20914b32685fba98db0a385af..f8dda61708d3e67763ffcb2d5383c8b44acaabd1 100644 (file)
@@ -40,9 +40,6 @@ Evt3Rank3C directProd(const EvtVector3C& c1,const EvtVector3C& c2,
                      const EvtVector3C& c3); 
 Evt3Rank3C conj(const Evt3Rank3C& t2);
 
-Evt3Rank3C directProd(const EvtVector3C& c1,const EvtVector3C& c2,
-                              const EvtVector3C& c3);
-
 
 class Evt3Rank3C {
 
index 8a61adf2673c6f8818de0b3f5f5aefe64e188c14..9befaf3b4e4d4c4c99585299b74d9589faf9da60 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtAbsBinning.hh,v 1.1 2003/05/02 21:41:08 dvoretsk Exp $
+ *    File: $Id: EvtAbsBinning.hh,v 1.2 2009-03-16 16:43:39 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 86%
rename from TEvtGen/EvtGenBase/EvtAbsLineShape.cxx
rename to TEvtGen/EvtGenBase/EvtAbsLineShape.cpp
index 7865b88507a40c9c9a68ec1f8120f290fa133726..f5ca120565cdd823516d453e5b7fb3bc3f7ea7d1 100644 (file)
@@ -43,7 +43,6 @@ EvtAbsLineShape::EvtAbsLineShape(double mass, double width, double maxRange, Evt
 
   _includeDecayFact = false;
   _includeBirthFact = false;
-  _applyFixForSP8 = false;
   _mass=mass;
   _width=width;
   _spin=sp;
@@ -74,7 +73,6 @@ EvtAbsLineShape::EvtAbsLineShape(const EvtAbsLineShape& x){
   _width=x._width;
   _spin=x._spin;
   _maxRange=x._maxRange;
-  _applyFixForSP8 = x._applyFixForSP8;
 }
 
 EvtAbsLineShape& EvtAbsLineShape::operator=(const EvtAbsLineShape& x){
@@ -87,7 +85,6 @@ EvtAbsLineShape& EvtAbsLineShape::operator=(const EvtAbsLineShape& x){
   _width=x._width;
   _spin=x._spin;
   _maxRange=x._maxRange;
-  _applyFixForSP8 = x._applyFixForSP8;
   return *this; 
 }
 
@@ -114,17 +111,18 @@ double EvtAbsLineShape::rollMass() {
     return temp;
   }
 }
-double EvtAbsLineShape::getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId, double maxMass, double *dauMasses) {
+double EvtAbsLineShape::getRandMass(EvtId *parId, int /* nDaug */, EvtId * /*dauId*/, EvtId */*othDaugId*/, double maxMass, double */*dauMasses*/) {
 
   if ( _width< 0.0001) return _mass;
   //its not flat - but generated according to a BW
 
   if (maxMass>0&&maxMass<_massMin) {
-    report(ERROR,"EvtGen") << "In EvtAbsLineShape::getRandMass"<<endl;
-    report(ERROR,"EvtGen") << "Decaying particle "<<EvtPDL::name(*parId)
-                           << " with mass "<<maxMass<<endl;
-    report(ERROR,"EvtGen") << " to particle" 
-                           << " with a minimal mass of "<< _massMin<<endl;
+    report(DEBUG,"EvtGen") << "In EvtAbsLineShape::getRandMass:"<<endl;
+    report(DEBUG,"EvtGen") << "Cannot create a particle with a minimal mass of "
+                           << _massMin << " from a "<<EvtPDL::name(*parId)
+                           << " decay with available left-over mass-energy " << maxMass
+                           << ". Returning 0.0 mass. The rest of this decay chain will probably fail..." << endl;
+    return 0.0;
   }
 
   double mMin=_massMin;
@@ -135,7 +133,7 @@ double EvtAbsLineShape::getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId
   
   return ( _mass + ((_width/2.0)*tan(EvtRandom::Flat(ymin,ymax))));
   //  return EvtRandom::Flat(_massMin,_massMax);
-}
+};
 
 double EvtAbsLineShape::getMassProb(double mass, double massPar, int nDaug, double *massDau) {
 
index 3e6c58fbac81af2bab030239942bb548bf07f99a..933bbaee7286fc1fae9f3431a0dcb2c9c5e11ca8 100644 (file)
@@ -51,7 +51,8 @@ public:
   void reSetWidth(double width) { _width=width;}
   void reSetMassMin(double mass) { _massMin=mass;}
   void reSetMassMax(double mass) { _massMax=mass;}
-  virtual void reSetBlatt(double blatt) {};
+  virtual void reSetBlatt(double /*blatt*/) {};
+  virtual void reSetBlattBirth(double /*blatt*/) {};
   void includeBirthFactor(bool yesno) { _includeBirthFact = yesno; }
   void includeDecayFactor(bool yesno) { _includeDecayFact = yesno; }
   void setPWForDecay( int spin, EvtId d1, EvtId d2) { 
@@ -68,7 +69,6 @@ public:
   virtual double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId,double maxMass, double *dauMasses);
   virtual double getMassProb(double mass, double massPar, int nDaug, double *massDau);
 
-  void fixForSP8() { _applyFixForSP8=true;}
 protected:
 
   bool _includeDecayFact;
@@ -91,8 +91,6 @@ protected:
   std::vector<int> _userSetBirthPW;
 
   EvtSpinType::spintype _spin;
-  
-  bool _applyFixForSP8;
 }; 
 
 #endif
index bcbc865b95a867c127cdf8516671cd497b663682..a74e848c443befb2876f06c46804f5943438e9f2 100644 (file)
@@ -29,7 +29,8 @@ class EvtAbsRadCorr {
 
 public:
 
-  virtual ~EvtAbsRadCorr() {}
+  EvtAbsRadCorr() {};
+  virtual ~EvtAbsRadCorr() {};
   virtual void doRadCorr(EvtParticle *p)=0;
 
 
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtAmp.cxx
rename to TEvtGen/EvtGenBase/EvtAmp.cpp
index 2d65b9940f5d443dd1e3edc8307b8c63c459ce0a..a78ef6f0362834e7f0d4d4a6c82f68e83a1cfd94 100644 (file)
@@ -194,7 +194,7 @@ EvtSpinDensity EvtAmp::getSpinDensity(){
        int kk;
 
         int allloop = 1;
-        for (kk=0;kk<(_nontrivial-1); kk++ ) {
+        for (kk=0;kk<_ndaug; kk++ ) {
          allloop *= dstates[kk];
        }
         
@@ -413,13 +413,9 @@ EvtSpinDensity EvtAmp::contract(int k,const EvtAmp& amp2){
 }
 
 
-EvtAmp EvtAmp::contract(int i, const EvtAmp& a1,const EvtAmp& a2){
+EvtAmp EvtAmp::contract(int , const EvtAmp& ,const EvtAmp& ){
   
   //Do we need this method?
-
-  assert(a2._pstates>1&&a2._nontrivial==1);
-  assert(i<=a1._nontrivial);
-
   EvtAmp tmp;
   report(DEBUG,"EvtGen") << "EvtAmp::contract not written yet" << endl;
   return tmp;
@@ -430,6 +426,7 @@ EvtAmp EvtAmp::contract(int i, const EvtAmp& a1,const EvtAmp& a2){
 void EvtAmp::dump(){
 
   int i,list[10];
+  for (i = 0; i < 10; i++) {list[i] = 0;}
 
   report(DEBUG,"EvtGen") << "Number of daugthers:"<<_ndaug<<endl;
   report(DEBUG,"EvtGen") << "Number of states of the parent:"<<_pstates<<endl;
@@ -456,6 +453,8 @@ void EvtAmp::dump(){
   }
 
   int allloop[10];
+  for (i = 0; i < 10; i++) {allloop[i] = 0;}
+
   allloop[0]=1;
   for (i=0;i<_nontrivial;i++) {
     if (i==0){
index 3df0f6298e822d254d4e1c5711dd2e0b101c64a2..68cd7c7040ff90097ec5fc4e2599f22f294e221b 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtAmpAmpPdf.hh,v 1.2 2003/06/20 17:19:59 dvoretsk Exp $
+ *    File: $Id: EvtAmpAmpPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 3892b9f84da9f6adaee4b5aa6492b2c35fb70788..27963e1abd732e2b6f20d2998e25013c43dff997 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtAmpPdf.hh,v 1.5 2003/06/20 17:19:59 dvoretsk Exp $
+ *    File: $Id: EvtAmpPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 60c4486fbb7a833bd4e94db19b4d714eedd31443..b0b598c944bf1358f4ea8cf99c1bace4be02734e 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtAmplitude.hh,v 1.5 2003/06/20 17:19:59 dvoretsk Exp $
+ *    File: $Id: EvtAmplitude.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 1c91bc682fa2e62f1779d0a38837390632c98509..4a4170993e2b1e66a509ef05c757fb2f53cda4e6 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtAmplitudeSum.hh,v 1.10 2009/02/18 03:31:37 ryd Exp $
+ *    File: $Id: EvtAmplitudeSum.hh,v 1.2 2009-03-16 16:42:46 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 72%
rename from TEvtGen/EvtGenBase/EvtBlattWeisskopf.cxx
rename to TEvtGen/EvtGenBase/EvtBlattWeisskopf.cpp
index 0197355168017d59f715203bdca79d5eab17adf0..b41ec0b99514f54509db7c65843c5769e29dd8c7 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtBlattWeisskopf.cc,v 1.6 2004/12/21 19:58:41 ryd Exp $
+ *    File: $Id: EvtBlattWeisskopf.cpp,v 1.3 2009-03-16 15:56:37 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -64,24 +64,29 @@ double EvtBlattWeisskopf::operator()(double p) const
 
 double EvtBlattWeisskopf::compute(double p) const
 {
-  if(p < 0) {
-    
-    report(INFO,"EvtGen") << "Momentum " << p << " negative in form factor calculation" << endl;
-    assert(0);
-  }
-  else {
-    
-    double x = p*p*_radial*_radial;
-    
-    if(0 == _LL) return 1.;
-    else
-      if(1 == _LL) return sqrt(1.0/(1.0+x));
-      else
-       if(2 == _LL) return sqrt(1.0/(1.0+x/3.0+x*x/9.0));
-       else {
-         report(INFO,"EvtGen") << "Angular momentum " << _LL << " not implemented" << endl;
-         assert(0);
-       }
+
+  double value(1.0);
+
+  double z = p*_radial;
+  double zSq = z*z;
+
+  if (_LL == 0) {
+    value = 1.0;
+  } else if (_LL == 1) {
+    value = sqrt(1.0/(1.0 + zSq));
+  } else if (_LL == 2) {
+    value = sqrt(1.0/(zSq*(zSq + 3.0) + 9.0));
+  } else if (_LL == 3) {
+    double denom = zSq*(zSq*(zSq + 6.0) + 45.0) + 225.0;
+    value = sqrt(1.0/denom);
+  } else if (_LL == 4) {
+    double denom = zSq*(zSq*(zSq*(zSq + 10.0) + 135.0) + 1575.0) + 11025.0;
+    value = sqrt(1.0/denom);
+  } else if (_LL == 5) {
+    double denom = zSq*(zSq*(zSq*(zSq*(zSq + 15.0) + 315.0) + 6300.0) + 99225.0) + 893025.0;
+    value = sqrt(1.0/denom);
   }
-}
 
+  return value;
+
+}
index 058f1efc660102fbd110615b34fffabb553854d5..e3faaa9fe6614ab21dc42af0bdfc3889c2aff553 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtBlattWeisskopf.hh,v 1.3 2004/09/14 03:24:11 gowdy Exp $
+ *    File: $Id: EvtBlattWeisskopf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 95%
rename from TEvtGen/EvtGenBase/EvtBreitWignerPdf.cxx
rename to TEvtGen/EvtGenBase/EvtBreitWignerPdf.cpp
index 0234a90ce5c0684e21b22aef422c1bd401a03ae8..3a781cae734cdbf78b348bda3603dfea295d655f 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtBreitWignerPdf.cc,v 1.14 2004/12/21 19:58:41 ryd Exp $
+ *    File: $Id: EvtBreitWignerPdf.cpp,v 1.3 2009-03-16 15:55:55 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 3023137d1338ec8cb72f204a8645fa7dfc0a6539..db1da7cb98d9d39ececc28a70dba1561cab9d09e 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtBreitWignerPdf.hh,v 1.5 2003/06/20 17:20:00 dvoretsk Exp $
+ *    File: $Id: EvtBreitWignerPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 97%
rename from TEvtGen/EvtGenBase/EvtCGCoefSingle.cxx
rename to TEvtGen/EvtGenBase/EvtCGCoefSingle.cpp
index a2e596ee4a12e24cea6a576d5d973a394a102f16..27e10c74f3c27feb8b1f118c1e5f4b6a8c48ddfc 100644 (file)
@@ -115,8 +115,8 @@ void EvtCGCoefSingle::init(int j1,int j2){
 
 double EvtCGCoefSingle::coef(int J,int M,int j1,int j2,int m1,int m2){
 
-  assert(j1==_j1);
-  assert(j2==_j2);
+  assert(j1==_j1); _unused( j1 );
+  assert(j2==_j2); _unused( j2 );
 
   return cg(J,M,m1,m2);
 
@@ -126,7 +126,7 @@ double EvtCGCoefSingle::coef(int J,int M,int j1,int j2,int m1,int m2){
 
 double& EvtCGCoefSingle::cg(int J,int M, int m1, int m2){
 
-  assert(M==m1+m2);
+  assert(M==m1+m2); _unused( m2 );
   assert(abs(M)<=J);
   assert(J<=_Jmax);
   assert(J>=_Jmin);
similarity index 66%
rename from TEvtGen/EvtGenBase/EvtCPUtil.cxx
rename to TEvtGen/EvtGenBase/EvtCPUtil.cpp
index 3aa80b8b27a05f9640178c52f9eb1c28daa65eee..b0d53a0152f003e66784ce46935315992b1501dd 100644 (file)
@@ -17,6 +17,8 @@
 //
 //    RYD     March 24, 1998         Module created
 //
+//    COWAN   June 10, 2009         Added methods for getting dGamma(s)
+//                                  and dm(s) using B(s)0H and B(s)0L.
 //------------------------------------------------------------------------
 // 
 #include "EvtGenBase/EvtPatches.hh"
 #include <assert.h>
 using std::endl;
 
+EvtCPUtil::EvtCPUtil(int mixingType) {
+  _enableFlip = false;
+  _mixingType = mixingType;
+}
+
+EvtCPUtil::~EvtCPUtil() {
+}
+
+EvtCPUtil* EvtCPUtil::getInstance() {
+
+  static EvtCPUtil* theCPUtil = 0;
+
+  if (theCPUtil == 0) {
+    theCPUtil = new EvtCPUtil(1);
+  }
+
+  return theCPUtil;
+
+}
 
 //added two functions for finding the fraction of B0 tags for decays into 
 //both CP eigenstates and non-CP eigenstates -- NK, Jan. 27th, 1998
 
 void EvtCPUtil::fractB0CP(EvtComplex Af, EvtComplex Abarf, 
-                         double deltam, double beta, double &fract) {
-//this function returns the number of B0 tags for decays into CP-eigenstates
-//(the "probB0" in the new EvtOtherB)
+                         double /*deltam*/, double beta, double &fract) {
+
+  //This function returns the number of B0 tags for decays into CP-eigenstates
+  //(the "probB0" in the new EvtOtherB)
 
   //double gamma_B = EvtPDL::getWidth(B0);   
   //double xd = deltam/gamma_B;
@@ -64,6 +86,7 @@ void EvtCPUtil::fractB0CP(EvtComplex Af, EvtComplex Abarf,
   return; 
 
 }
+
 void EvtCPUtil::fractB0nonCP(EvtComplex Af, EvtComplex Abarf, 
                             EvtComplex Afbar, EvtComplex Abarfbar, 
                             double deltam, double beta, 
@@ -122,6 +145,20 @@ void EvtCPUtil::fractB0nonCP(EvtComplex Af, EvtComplex Abarf,
 
 void EvtCPUtil::OtherB( EvtParticle *p,double &t, EvtId &otherb, double probB0){
 
+  if (_mixingType == EvtCPUtil::Coherent) {
+
+    OtherCoherentB(p, t, otherb, probB0);
+
+  } else if (_mixingType == EvtCPUtil::Incoherent) {
+
+    OtherIncoherentB(p, t, otherb, probB0);
+
+  }
+
+}
+
+void EvtCPUtil::OtherCoherentB( EvtParticle *p,double &t, EvtId &otherb, double probB0){
+
   //Can not call this recursively!!!
   static int entryCount=0;
   entryCount++;
@@ -208,7 +245,7 @@ void EvtCPUtil::OtherB( EvtParticle *p,double &t, EvtId &otherb, double probB0){
     //kludge!! Lange Mar21, 2003        
     // if the other B is an alias... don't change the flavor..          
     if ( other->getId().isAlias() ) {   
-      OtherB(p,t,otherb);       
+      OtherB(p,t,otherb);
       entryCount--;
       return;   
       
@@ -261,10 +298,89 @@ void EvtCPUtil::OtherB( EvtParticle *p,double &t, EvtId &otherb, double probB0){
   return ;
 }
 
+// ========================================================================
+bool EvtCPUtil::isBsMixed ( EvtParticle * p )
+{
+  if ( ! ( p->getParent() ) ) return false ;
+
+  static EvtId BS0=EvtPDL::getId("B_s0");
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+
+  if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) ) return false ;
+
+  if ( ( p->getParent()->getId() == BS0 ) ||
+       ( p->getParent()->getId() == BSB ) ) return true ;
+
+  return false ;
+}
+
+// ========================================================================
+bool EvtCPUtil::isB0Mixed ( EvtParticle * p )
+{
+  if ( ! ( p->getParent() ) ) return false ;
 
+  static EvtId B0 =EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
 
-void EvtCPUtil::OtherB( EvtParticle *p,double &t, EvtId &otherb){
+  if ( ( p->getId() != B0 ) && ( p->getId() != B0B ) ) return false ;
 
+  if ( ( p->getParent()->getId() == B0 ) ||
+       ( p->getParent()->getId() == B0B ) ) return true ;
+
+  return false ;
+}
+//============================================================================
+// Return the tag of the event (ie the anti-flavour of the produced 
+// B meson). Flip the flavour of the event with probB probability
+//============================================================================
+void EvtCPUtil::OtherIncoherentB( EvtParticle * p ,
+                                  double & t ,
+                                  EvtId & otherb ,
+                                  double probB )
+{
+  //std::cout<<"New routine running"<<endl;
+  //if(p->getId() == B0 || p->getId() == B0B) 
+  //added by liming Zhang
+  enableFlip();
+  if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+    p->getParent()->setLifetime() ;
+    t = p->getParent()->getLifetime() ;
+  }
+  else {
+    p->setLifetime() ;
+    t = p->getLifetime() ;
+  }
+
+  if ( flipIsEnabled() ) {
+    //std::cout << " liming << flipIsEnabled " << std::endl;
+    // Flip the flavour of the particle with probability probB
+    bool isFlipped = ( EvtRandom::Flat( 0. , 1. ) < probB ) ;
+
+    if ( isFlipped ) {
+      if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+        p->getParent()
+          ->setId( EvtPDL::chargeConj( p->getParent()->getId() ) ) ;
+        p->setId( EvtPDL::chargeConj( p->getId() ) ) ;
+      }
+      else {
+        p->setId( EvtPDL::chargeConj( p->getId() ) ) ;
+      }
+    }
+  }
+
+  if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+    // if B has mixed, tag flavour is charge conjugate of parent of B-meson
+    otherb = EvtPDL::chargeConj( p->getParent()->getId() ) ;
+  }
+  else {
+    // else it is opposite flavour than this B hadron
+    otherb = EvtPDL::chargeConj( p->getId() ) ;
+  }
+
+  return ;
+}
+//============================================================================
+void EvtCPUtil::OtherB( EvtParticle *p,double &t, EvtId &otherb){
 
   static EvtId BSB=EvtPDL::getId("anti-B_s0");
   static EvtId BS0=EvtPDL::getId("B_s0");
@@ -310,12 +426,8 @@ void EvtCPUtil::OtherB( EvtParticle *p,double &t, EvtId &otherb){
     return;
   }
 
-
-
-  
   p->setLifetime();
 
-
   // now get the time between the decay of this B and the other B!
   
   EvtParticle *parent=p->getParent();
@@ -347,7 +459,7 @@ void EvtCPUtil::OtherB( EvtParticle *p,double &t, EvtId &otherb){
   return ;
 }
 
-
+// No CP violation is assumed
 void EvtCPUtil::incoherentMix(const EvtId id, double &t, int &mix){
 
   int stdHepNum=EvtPDL::getStdHep(id);
@@ -364,10 +476,16 @@ void EvtCPUtil::incoherentMix(const EvtId id, double &t, int &mix){
 
   double ctauL=EvtPDL::getctau(lId);
   double ctauH=EvtPDL::getctau(hId);
-  double ctau=0.5*(ctauL+ctauH);
-  double y=(ctauH-ctauL)/ctau;
 
-  //need to figure out how to get these parameters into the code...
+  // Bug Fixed: Corrected the average as gamma is the relevent parameter
+  double ctau=2.0*(ctauL*ctauH)/(ctauL+ctauH);
+  //double ctau=0.5*(ctauL+ctauH);
+
+  // Bug Fixed: ctau definition changed above
+  //double y=(ctauH-ctauL)/(2*ctau);
+  double y=(ctauH-ctauL)/(ctauH+ctauL);
+
+  //deltam and qoverp defined in DECAY.DEC
 
   std::string qoverpParmName=std::string("qoverp_incohMix_")+partName;
   std::string mdParmName=std::string("dm_incohMix_")+partName;
@@ -383,7 +501,7 @@ void EvtCPUtil::incoherentMix(const EvtId id, double &t, int &mix){
     fac=qoverp*qoverp;
   }
 
-  double mixprob=(x*x+y*y)/(x*x+y*y+fac*(2+x*x-y*y));
+  double mixprob=(x*x+y*y)/(x*x+y*y+fac*(2.0+x*x-y*y));
 
   int mixsign;
 
@@ -391,10 +509,14 @@ void EvtCPUtil::incoherentMix(const EvtId id, double &t, int &mix){
 
   double prob;
 
+  // Find the longest of the two lifetimes
+  double ctaulong = ctauL<=ctauH?ctauH:ctauL;
+
+  // Bug fixed: Ensure cosine argument is dimensionless so /ctau
   do{
-    t=-log(EvtRandom::Flat())*ctauL;
-    prob=1.0+exp(2.0*y*t/ctau)+mixsign*2.0*exp(y*t/ctau)*cos(x*t);
-  }while(prob<4*EvtRandom::Flat());
+    t=-log(EvtRandom::Flat())*ctaulong;
+    prob=1.0+exp(-2.0*fabs(y)*t/ctau)+mixsign*2.0*exp(-fabs(y)*t/ctau)*cos(x*t/ctau);
+  }while(prob<4.0*EvtRandom::Flat());
 
   mix=0;
 
@@ -404,11 +526,41 @@ void EvtCPUtil::incoherentMix(const EvtId id, double &t, int &mix){
 }
 
 
+double EvtCPUtil::getDeltaGamma(const EvtId id){
 
+  int stdHepNum = EvtPDL::getStdHep(id);
+  stdHepNum = abs(stdHepNum);
+  EvtId partId = EvtPDL::evtIdFromStdHep(stdHepNum);
 
+  std::string partName = EvtPDL::name(partId);
+  std::string hname = partName + std::string("H");
+  std::string lname = partName + std::string("L");
+  
+  EvtId lId = EvtPDL::getId(lname);
+  EvtId hId = EvtPDL::getId(hname);
 
+  double ctauL = EvtPDL::getctau(lId);  
+  double ctauH = EvtPDL::getctau(hId);
+  
+  double dGamma = (1/ctauL - 1/ctauH)*EvtConst::c;
+  return dGamma;
+}
 
+double EvtCPUtil::getDeltaM(const EvtId id){
 
+  int stdHepNum = EvtPDL::getStdHep(id);  
+  stdHepNum = abs(stdHepNum); 
+  EvtId partId = EvtPDL::evtIdFromStdHep(stdHepNum);
+  
+  std::string partName = EvtPDL::name(partId);
+  std::string parmName = std::string("dm_incohMix_") + partName;
 
+  int ierr;  
+  double dM = atof(EvtSymTable::get(parmName,ierr).c_str());
+  return dM;
+}
 
+bool EvtCPUtil::flipIsEnabled() { return _enableFlip ; }
+void EvtCPUtil::enableFlip() { _enableFlip = true ; }
+void EvtCPUtil::disableFlip() { _enableFlip = false ; }
 
index 12e55fe9b31f64b2656ac4d80d47ce0928a061c5..0111d470610b459f6138edea59f4317dc9d083ef 100644 (file)
 class EvtParticle;
 class EvtId;
 
-class EvtCPUtil{
+class EvtCPUtil {
 
 public:
 
-  static void fractB0CP(EvtComplex Af, EvtComplex Abarf, 
+  EvtCPUtil(int mixingType);
+  ~EvtCPUtil();
+
+  enum MixingType {Coherent = 0, Incoherent = 1};
+
+  static EvtCPUtil* getInstance();
+
+  void setMixingType(int mixingType) {_mixingType = mixingType;}
+  int getMixingType() {return _mixingType;}
+
+  void fractB0CP(EvtComplex Af, EvtComplex Abarf, 
                        double deltam, double beta, double &fract);
 
-  static void fractB0nonCP(EvtComplex Af, EvtComplex Abarf, 
-                          EvtComplex Afbar, EvtComplex Abarfbar, 
-                          double deltam, double beta, int flip, 
-                          double &fract);
+  void fractB0nonCP(EvtComplex Af, EvtComplex Abarf, 
+                   EvtComplex Afbar, EvtComplex Abarfbar, 
+                   double deltam, double beta, int flip, 
+                   double &fract);
+
+  // Mark Whitehead 7/12/2009
+  // Add required lines from EvtIncoherentMixing.hh to fix CPV
 
-  static void OtherB(EvtParticle *p, double &t, EvtId &otherb);
+  // Functions to check if a B has mixed (comes from a B)
+  bool isB0Mixed( EvtParticle * ) ;
+  bool isBsMixed( EvtParticle * ) ;
 
-  static void OtherB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
+  bool flipIsEnabled() ;
+  void enableFlip() ;
+  void disableFlip() ;
+
+  void OtherB(EvtParticle *p, double &t, EvtId &otherb);
+
+  void OtherCoherentB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
+  void OtherIncoherentB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
+
+  void OtherB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
 
   //id is the produced particle
   //t returns the lifetime of the particle
   //and mix will be 1 if it mixed otherwise 0
-  static void incoherentMix(const EvtId id, double &t, int &mix);
+  void incoherentMix(const EvtId id, double &t, int &mix);
+
+  double getDeltaGamma(const EvtId id);
+  double getDeltaM(const EvtId id);
 
+private:
 
+  bool _enableFlip;
+  int _mixingType;
 
 };
 
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtCyclic3.cxx
rename to TEvtGen/EvtGenBase/EvtCyclic3.cpp
index 6b186cdfc61b98e0653b732e3280afd85a2a0f2e..5cbe7a6f8257b9ccbb4859c0e51de5d32bfc8a39 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtCyclic3.cc,v 1.16 2009/02/18 03:31:37 ryd Exp $
+ *    File: $Id: EvtCyclic3.cpp,v 1.3 2009-03-16 15:55:13 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -12,6 +12,7 @@
 #include <string.h>
 #include <iostream>
 #include "EvtGenBase/EvtCyclic3.hh"
+#include "EvtGenBase/EvtPatches.hh"
 using std::ostream;
 
 using namespace EvtCyclic3;
@@ -56,7 +57,7 @@ Index EvtCyclic3::permute(Index i, Perm p)
 
 Perm EvtCyclic3::permutation(Index i1,Index i2,Index i3)
 {
-  assert(i1 != i2  && i2 != i3 && i3 != i1);
+  assert(i1 != i2  && i2 != i3 && i3 != i1); _unused( i3 );
   if(i1 == A) return (i2 == B) ? ABC : ACB;
   if(i1 == B) return (i2 == C) ? BCA : BAC;
   if(i1 == C) return (i2 == A) ? CAB : CBA;
@@ -238,7 +239,7 @@ Index EvtCyclic3::strToIndex(const char* str)
   if(strcmp(str,"A")) return A;
   else if(strcmp(str,"B")) return B;
   else if(strcmp(str,"C")) return C;
-  else assert(0);
+  else assert(0); return A;
 }
 
 
@@ -247,7 +248,7 @@ Pair EvtCyclic3::strToPair(const char* str)
   if(!strcmp(str,"AB") || !strcmp(str,"BA")) return AB;
   else if(!strcmp(str,"BC") || !strcmp(str,"CB")) return BC;
   else if(!strcmp(str,"CA") || !strcmp(str,"AC")) return CA;
-  else assert(0);
+  else assert(0); return AB;
 }
 
 
index 84d4c94bcb48ce76f32bbdba8408f08e6dd25d6a..45864b63ad0182ba0bfb126f689ceb85a5757cc1 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtCyclic3.hh,v 1.12 2009/02/15 18:09:01 ryd Exp $
+ *    File: $Id: EvtCyclic3.hh,v 1.2 2009-03-16 16:42:46 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -72,7 +72,7 @@ namespace EvtCyclic3 {
   char* append(const char* str, EvtCyclic3::Index i);
   char* append(const char* str, EvtCyclic3::Pair i);
 
-}
+};
 
 //where should these go?
 //ostream& operator<<(ostream&, EvtCyclic3::Index);
similarity index 94%
rename from TEvtGen/EvtGenBase/EvtDalitzCoord.cxx
rename to TEvtGen/EvtGenBase/EvtDalitzCoord.cpp
index 4e7142da269c7f681b0945d8e6692e12b622023f..de2e0de2ec400a21299b81314249292395f71fe5 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzCoord.cc,v 1.3 2004/12/21 19:58:42 ryd Exp $
+ *    File: $Id: EvtDalitzCoord.cpp,v 1.3 2009-03-16 15:55:13 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index e5ace96a1c12eede9fc9162cf113d46214341385..81a47d42309dd4ed62c5734119442ab8cfe3f0d7 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzCoord.hh,v 1.3 2004/08/06 06:08:24 bartoldu Exp $
+ *    File: $Id: EvtDalitzCoord.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 94%
rename from TEvtGen/EvtGenBase/EvtDalitzFlatPdf.cxx
rename to TEvtGen/EvtGenBase/EvtDalitzFlatPdf.cpp
index ea43125de0cb0777e7d85ad48c4641dd81ff94e8..1e23c4f7a786f520375bf21fa2665ea0c3be9712 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzFlatPdf.cc,v 1.4 2004/12/21 19:58:42 ryd Exp $
+ *    File: $Id: EvtDalitzFlatPdf.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -63,5 +63,5 @@ EvtDalitzPoint EvtDalitzFlatPdf::randomPoint()
   }
   
   printf("No point generated for dalitz plot after %d tries\n",maxTries);
-  assert(0);
+  return EvtDalitzPoint();
 }
index b526bdc87ebc0ea216b4fb7f598eecc472a7230e..64451bcd478745a2e7bdf5688b200b283c048dac 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzFlatPdf.hh,v 1.1 2003/06/20 17:20:03 dvoretsk Exp $
+ *    File: $Id: EvtDalitzFlatPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 99%
rename from TEvtGen/EvtGenBase/EvtDalitzPlot.cxx
rename to TEvtGen/EvtGenBase/EvtDalitzPlot.cpp
index d75cde09eae94bff2d170fcc3d89c56055287e96..fe540c1289adbad44a30bfb07d443f41ecb120d4 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtDalitzPlot.cc,v 1.23 2004/12/21 19:58:42 ryd Exp $
+//      $Id: EvtDalitzPlot.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
index f72b7404a8da7d9ca505da0755f0e750ba4c744f..3fdf96814d4b2b2a31e3ba7981e44a3245384f3b 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtDalitzPlot.hh,v 1.16 2003/06/20 17:20:03 dvoretsk Exp $
+//      $Id: EvtDalitzPlot.hh,v 1.2 2009-03-16 16:44:53 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtDalitzPoint.cxx
rename to TEvtGen/EvtGenBase/EvtDalitzPoint.cpp
index f3481a457ed1475f8d3c161439965874ea38306a..feb4c8d289bcea1eea2d578f135bedaaaa306c7d 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzPoint.cc,v 1.14 2004/12/21 19:58:42 ryd Exp $
+ *    File: $Id: EvtDalitzPoint.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -171,7 +171,7 @@ bool EvtDalitzPoint::isValid() const
       inside = true;
   
   return inside;
-}
+};
 
 double EvtDalitzPoint::bigM() const
 {
index 8e324503d19b532a8e94f01045c297be5e9613c8..7b83ddc0396505847f169d9be0e61c8f2b002606 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzPoint.hh,v 1.10 2003/06/19 02:17:11 dvoretsk Exp $
+ *    File: $Id: EvtDalitzPoint.hh,v 1.2 2009-03-16 16:44:53 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 95%
rename from TEvtGen/EvtGenBase/EvtDalitzResPdf.cxx
rename to TEvtGen/EvtGenBase/EvtDalitzResPdf.cpp
index aef31c9277599b2c448f99dab0cfe82f4b724f78..7a03b681b3421bac41f0737ca3b0b8be73ed4e53 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzResPdf.cc,v 1.5 2004/12/21 19:58:42 ryd Exp $
+ *    File: $Id: EvtDalitzResPdf.cpp,v 1.3 2009-03-16 15:54:07 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -86,7 +86,7 @@ EvtDalitzPoint EvtDalitzResPdf::randomPoint()
   // (in the outer box)
   
   printf("No point generated for dalitz plot after 1000 tries\n");
-  assert(0);
+  return EvtDalitzPoint(0.,0.,0.,0.,0.,0.);
 }
 
 
index 91cd356a10cea8a652acfc25116f07ff5c7020f6..20edeea0f9b330b7b36914d6286436bb4bdcc7cc 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzResPdf.hh,v 1.2 2003/06/20 17:20:04 dvoretsk Exp $
+ *    File: $Id: EvtDalitzResPdf.hh,v 1.2 2009-03-16 16:42:46 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 90%
rename from TEvtGen/EvtGenBase/EvtDalitzReso.cxx
rename to TEvtGen/EvtGenBase/EvtDalitzReso.cpp
index 3c395a8240682fdba174604eb703a94152028e85..281e0a50d58137b9729ec34912ab2d846452047c 100644 (file)
@@ -2,7 +2,7 @@
 /*****************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzReso.cc,v 1.4 2008/11/27 16:29:30 jordix Exp $
+ *    File: $Id: EvtDalitzReso.cpp,v 1.1 2009-03-16 16:47:51 robbep Exp $
  *
  * Description:
  *   Class to compute Dalitz amplitudes based on many models that cannot be
@@ -36,7 +36,7 @@ using EvtCyclic3::Pair;
 
 // single Breit-Wigner
 EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes, 
-                            EvtSpinType::spintype spin, double m0, double g0, NumType typeN) 
+                            EvtSpinType::spintype spin, double m0, double g0, NumType typeN, double f_b, double f_d
   : _dp(dp),
     _pairAng(pairAng),
     _pairRes(pairRes),
@@ -46,13 +46,15 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes
     _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
     _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
     _g1(-1.),_g2(-1.),_coupling2(Undefined),
+    _f_b(f_b), _f_d(f_d),
     _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
-    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
+    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.),_cutoff(-1.), _scaleByMOverQ(false),
+    _alpha(0.)
 {
   _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin); 
   _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
-  _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
-  _vd.set_f( 1.5 );
+  _vb.set_f( _f_b ); // Default values for Blatt-Weisskopf factors are 0.0 and 1.5.
+  _vd.set_f( _f_d );
   assert(_typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II);  // single BW cannot be K-matrix
 }
 
@@ -70,8 +72,10 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes
     _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
     _m0_mix(m0_mix),_g0_mix(g0_mix),_delta_mix(delta_mix),_amp_mix(amp_mix),
     _g1(-1.),_g2(-1.),_coupling2(Undefined),
+    _f_b(0.0), _f_d(1.5),
     _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
-    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
+    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.),_cutoff(-1.), _scaleByMOverQ(false),
+    _alpha(0.)
 {
   _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin); 
   _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
@@ -93,8 +97,10 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes
     _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
     _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
     _g1(g1),_g2(g2),_coupling2(coupling2),
+    _f_b(0.0), _f_d(1.5),
     _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
-    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
+    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.),_cutoff(-1.), _scaleByMOverQ(false),
+    _alpha(0.)
 {
   _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin);   
   _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
@@ -117,8 +123,10 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairRes, std::string
     _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
     _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
     _g1(-1.),_g2(-1.),_coupling2(Undefined),
+    _f_b(0.), _f_d(0.),
     _kmatrix_index(-1),_fr12prod(fr12prod),_fr13prod(fr13prod),_fr14prod(fr14prod),_fr15prod(fr15prod),_s0prod(s0prod),
-    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
+    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.),_cutoff(-1.), _scaleByMOverQ(false),
+    _alpha(0.)
 {
   assert(_typeN==K_MATRIX || _typeN==K_MATRIX_I || _typeN==K_MATRIX_II);
   _spin=EvtSpinType::SCALAR;
@@ -134,7 +142,7 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairRes, std::string
 
 // LASS parameterization
 EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairRes, 
-                            double m0, double g0, double a, double r, double B, double phiB, double R, double phiR) 
+                            double m0, double g0, double a, double r, double B, double phiB, double R, double phiR, double cutoff, bool scaleByMOverQ
   : _dp(dp),
     _pairRes(pairRes),
     _typeN(LASS),
@@ -142,8 +150,10 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairRes,
     _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
     _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
     _g1(-1.),_g2(-1.),_coupling2(Undefined),
+    _f_b(0.0), _f_d(1.5),
     _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
-    _a(a),_r(r),_Blass(B),_phiB(phiB),_R(R),_phiR(phiR)
+    _a(a),_r(r),_Blass(B),_phiB(phiB),_R(R),_phiR(phiR), _cutoff(cutoff), _scaleByMOverQ(scaleByMOverQ),
+    _alpha(0.)
 {
   _spin=EvtSpinType::SCALAR;
   _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
@@ -151,6 +161,23 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairRes,
 }
 
 
+//Flatte
+EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0)
+  : _dp(dp),
+    _pairRes(pairRes),
+    _typeN(FLATTE),
+    _m0(m0), _g0(0.),
+    _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
+    _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
+    _g1(-1.),_g2(-1.),_coupling2(Undefined),
+    _f_b(0.), _f_d(0.),
+    _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
+    _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.),_cutoff(-1.), _scaleByMOverQ(false),
+    _alpha(0.)
+{
+  _spin=EvtSpinType::SCALAR;
+}
+
 
 EvtDalitzReso::EvtDalitzReso(const EvtDalitzReso& other) 
   : _dp(other._dp),
@@ -163,10 +190,13 @@ EvtDalitzReso::EvtDalitzReso(const EvtDalitzReso& other)
     _massFirst(other._massFirst),_massSecond(other._massSecond),
     _m0_mix(other._m0_mix),_g0_mix(other._g0_mix),_delta_mix(other._delta_mix),_amp_mix(other._amp_mix),
     _g1(other._g1),_g2(other._g2),_coupling2(other._coupling2),
+    _f_b(other._f_b), _f_d(other._f_d),
     _kmatrix_index(other._kmatrix_index),
     _fr12prod(other._fr12prod),_fr13prod(other._fr13prod),_fr14prod(other._fr14prod),_fr15prod(other._fr15prod),
     _s0prod(other._s0prod),
-    _a(other._a),_r(other._r),_Blass(other._Blass),_phiB(other._phiB),_R(other._R),_phiR(other._phiR)
+    _a(other._a),_r(other._r),_Blass(other._Blass),_phiB(other._phiB),_R(other._R),_phiR(other._phiR),_cutoff(other._cutoff), _scaleByMOverQ(other._scaleByMOverQ),
+    _alpha(other._alpha),
+    _flatteParams(other._flatteParams)
 {}
 
 
@@ -178,6 +208,15 @@ EvtComplex EvtDalitzReso::evaluate(const EvtDalitzPoint& x)
 {
   double m = sqrt(x.q(_pairRes));
 
+  if (_typeN==NON_RES) 
+    return EvtComplex(1.0,0.0);
+
+  if (_typeN==NON_RES_LIN)
+    return m*m;
+
+  if (_typeN==NON_RES_EXP)
+    return exp(-_alpha*m*m);
+
   // do use always hash table (speed up fitting)
   if (_typeN==K_MATRIX || _typeN==K_MATRIX_I || _typeN==K_MATRIX_II)
     return Fvector( m*m, _kmatrix_index );
@@ -185,9 +224,15 @@ EvtComplex EvtDalitzReso::evaluate(const EvtDalitzPoint& x)
   if (_typeN==LASS)
     return lass(m*m);
 
+  if (_typeN==FLATTE)
+    return flatte(m);
+
   EvtComplex amp(1.0,0.0);
 
-  if (_dp.bigM() != x.bigM()) _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),x.bigM(),_spin); 
+  if (fabs(_dp.bigM() - x.bigM()) > 0.000001) {
+    _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),x.bigM(),_spin);
+    _vb.set_f(_f_b);
+  }
   EvtTwoBodyKine vb(m,x.m(EvtCyclic3::other(_pairRes)),x.bigM());
   EvtTwoBodyKine vd(_massFirst,_massSecond,m);   
 
@@ -829,11 +874,30 @@ EvtComplex EvtDalitzReso::lass(double s)
   EvtComplex  bkgB,resT;
   bkgB = EvtComplex(_Blass*sin(totalB),0)*EvtComplex(cos(totalB),sin(totalB));
   resT = EvtComplex(_R*sin(deltaR),0)*EvtComplex(cos(totalR),sin(totalR))*EvtComplex(cos(2*totalB),sin(2*totalB));
-  EvtComplex T = bkgB + resT;      
+
+  EvtComplex T;
+  if(_cutoff>0 && sqrt(s)>_cutoff) T = resT;
+  else T = bkgB + resT;
+
+  if(_scaleByMOverQ) T*=(sqrt(s)/q);
 
   return T;
 }
 
 
+EvtComplex EvtDalitzReso::flatte(const double& m) {
 
+  EvtComplex w;
 
+  for (vector<EvtFlatteParam>::const_iterator param = _flatteParams.begin();
+       param != _flatteParams.end();
+       ++param) {
+    double m1 = (*param).m1(); double m2 = (*param).m2();
+    double g = (*param).g();
+    w += (g*g*sqrtCplx((1-((m1-m2)*(m1-m2))/(m*m))*(1-((m1+m2)*(m1+m2))/(m*m))));
+  }
+  
+  EvtComplex denom = _m0*_m0 - m*m - EvtComplex(0,1)*w;
+
+  return EvtComplex(1.0,0.0)/denom;
+}
index 67c2a40b42ea96b38562fc2c9276134e1bb096e6..43bf5b13236471e974069cb78624cc6c5b9d1137 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtDalitzReso.hh,v 1.4 2008/11/27 16:29:30 jordix Exp $
+ *    File: $Id: EvtDalitzReso.hh,v 1.1 2009-03-16 16:50:49 robbep Exp $
  *
  * Description:
  *   Class to compute Dalitz amplitudes based on many models that cannot be
@@ -25,6 +25,7 @@
 #include "EvtGenBase/EvtDalitzPoint.hh"
 #include "EvtGenBase/EvtDecayAmp.hh"
 #include "EvtGenBase/EvtBlattWeisskopf.hh"
+#include "EvtGenBase/EvtFlatte.hh"
 
 using std::vector;
 using std::map;
@@ -38,7 +39,8 @@ public:
   enum NumType { NBW            = 0 , RBW_ZEMACH        = 1 , RBW_KUEHN  = 2 , RBW_CLEO        = 3 ,
                 RBW_ZEMACH2    = 4 , GS_CLEO           = 5 , K_MATRIX   = 6 , RBW_CLEO_ZEMACH = 7 ,
                 GS_CLEO_ZEMACH = 8 , LASS              = 9 , K_MATRIX_I = 10, K_MATRIX_II     = 11,
-                GAUSS_CLEO     = 12, GAUSS_CLEO_ZEMACH = 13 };
+                GAUSS_CLEO     = 12, GAUSS_CLEO_ZEMACH = 13, FLATTE = 14, NON_RES = 15,
+     NON_RES_LIN    = 16, NON_RES_EXP       = 17 };
 
   // Coupling type
   //  ChgPion : pi+ pi-
@@ -50,10 +52,12 @@ public:
   //  EtaPion : eta pi0
   enum CouplingType {Undefined=0,PicPic=1,PizPiz,PiPi,KcKc,KzKz,KK,EtaPic,EtaPiz,PicPicKK,WA76};
 
-  EvtDalitzReso() {};
+  EvtDalitzReso() : _typeN(NON_RES) {};
+
+  EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, NumType typeN, double alpha=0.0) : _dp(dp), _pairRes(pairRes), _typeN(typeN), _alpha(alpha) {};
 
   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
-               EvtSpinType::spintype spin, double m0, double g0, NumType typeN);
+               EvtSpinType::spintype spin, double m0, double g0, NumType typeN, double f_b=0.0, double f_d=1.5);
 
   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
                EvtSpinType::spintype spin, double m0, double g0, NumType typeN,
@@ -68,7 +72,10 @@ public:
 
   // LASS
   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0, double g0,
-               double a, double r, double B, double phiB, double R, double phiR);
+               double a, double r, double B, double phiB, double R, double phiR, double cutoff=-1, bool scaleByMOverQ=false);
+
+  //Flatte
+  EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0);
 
   EvtDalitzReso(const EvtDalitzReso& other);
 
@@ -81,6 +88,8 @@ public:
   void set_fd( double R ) { _vd.set_f( R ); }
   void set_fb( double R ) { _vb.set_f( R ); }
 
+  void addFlatteParam(const EvtFlatteParam& param) { _flatteParams.push_back(param); }
+
 private:
   EvtComplex psFactor(double& ma, double& mb, double& m);
   EvtComplex psFactor(double& ma1, double& mb1, double& ma2, double& mb2, double& m);
@@ -101,6 +110,9 @@ private:
   EvtComplex mixFactor(EvtComplex prop, EvtComplex prop_mix);
   EvtComplex Fvector( double s, int index );
   EvtComplex lass(double s);
+  EvtComplex flatte(const double& m);
+
+  inline EvtComplex sqrtCplx(double in) { return (in > 0) ? EvtComplex(sqrt(in), 0) : EvtComplex(0, sqrt(-in)); }
 
   // Dalitz plot
   EvtDalitzPlot _dp; 
@@ -133,6 +145,9 @@ private:
   double _g1,_g2;
   CouplingType _coupling2;
 
+  // variables for Blatt-Weisskopf form factors
+  double _f_b, _f_d;
+
   // K-matrix 
   int _kmatrix_index;
   EvtComplex _fr12prod,_fr13prod,_fr14prod,_fr15prod;
@@ -145,6 +160,15 @@ private:
   double _phiB;
   double _R;
   double _phiR;
+  double _cutoff;
+  bool _scaleByMOverQ;
+
+  //Nonresonant
+  double _alpha;
+
+  // Flatte
+  std::vector<EvtFlatteParam> _flatteParams;
+
 };
 
 #endif
similarity index 88%
rename from TEvtGen/EvtGenBase/EvtDecayAmp.cxx
rename to TEvtGen/EvtGenBase/EvtDecayAmp.cpp
index bf3a2714d9134be9364f400088d52ca47a33bc91..1d799c2978d86f10f4983f6994b91615254b0651 100644 (file)
@@ -67,10 +67,10 @@ void EvtDecayAmp::makeDecay(EvtParticle* p, bool recursive){
     if (prob!=prob) {
 
       report(DEBUG,"EvtGen") << "Forward density matrix:"<<endl;
-      report(ERROR,"EvtGen") << p->getSpinDensityForward();
+      report(DEBUG,"EvtGen") << p->getSpinDensityForward();
 
       report(DEBUG,"EvtGen") << "Decay density matrix:"<<endl;
-      report(ERROR,"EvtGen") << rho;
+      report(DEBUG,"EvtGen") << rho;
 
       report(DEBUG,"EvtGen") << "prob:"<<prob<<endl;
       
@@ -179,17 +179,34 @@ void EvtDecayAmp::makeDecay(EvtParticle* p, bool recursive){
          report(ERROR,"EvtGen")<<"forward rho failed Check:"<<
            EvtPDL::name(p->getId()).c_str()<<" "<<p->getChannel()<<" "<<i<<endl;
          
-         report(ERROR,"EvtGen")<<"Parent:"<<EvtPDL::name(p->getParent()->getId()).c_str()<<endl;
-         report(ERROR,"EvtGen")<<"GrandParent:"<<EvtPDL::name(p->getParent()->getParent()->getId()).c_str()<<endl;
-         report(ERROR,"EvtGen")<<"GrandGrandParent:"<<EvtPDL::name(p->getParent()->getParent()->getParent()->getId()).c_str()<<endl;
-         
-         report(ERROR,"EvtGen") << rho;
+         p->printTree();
+
+         for (size_t idaug = 0; idaug < p->getNDaug(); idaug++) {
+           EvtParticle* daughter = p->getDaug(idaug);
+           if (daughter != 0) {daughter->printTree();}
+         }
+
+         EvtParticle* pParent = p->getParent();
+         if (pParent != 0) {
+           report(ERROR,"EvtGen")<<"Parent:"<<EvtPDL::name(pParent->getId()).c_str()<<endl;
+
+           EvtParticle* grandParent = pParent->getParent();
+
+           if (grandParent != 0) {
+             report(ERROR,"EvtGen")<<"GrandParent:"<<EvtPDL::name(grandParent->getId()).c_str()<<endl;
+           }
+         }
+
+         report(ERROR,"EvtGen") << " EvtSpinDensity rho: " << rho;
          
          _amp2.dump();
+
          for(size_t ii=0;ii<i+1;ii++){
-           report(ERROR,"EvtGen") << rho_list[ii];
+           report(ERROR,"EvtGen") << "rho_list[" << ii << "] = " << rho_list[ii];
          }
+
          report(ERROR,"EvtGen") << "-------Done with error-------"<<endl;  
+
        }
       
        p->getDaug(i)->setSpinDensityForward(rho);
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtDecayBase.cxx
rename to TEvtGen/EvtGenBase/EvtDecayBase.cpp
index 71d176eb65c12e270d4dab5f5b59c83c5a049669..430e049396d6e4a49add892ccc918d2956e1b75a 100644 (file)
@@ -135,7 +135,36 @@ void EvtDecayBase::command(std::string){
   ::abort();
 }
 
+std::string EvtDecayBase::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "param00";
+  case 1:
+    return "param01";
+  case 2:
+    return "param02";
+  case 3:
+    return "param03";
+  case 4:
+    return "param04";
+  case 5:
+    return "param05";
+  case 6:
+    return "param06";
+  case 7:
+    return "param07";
+  case 8:
+    return "param08";
+  case 9:
+    return "param09";
+  default:
+      return "";
+  }
+}
 
+std::string EvtDecayBase::getParamDefault(int /*i*/) {
+  return "";
+}
 
 void EvtDecayBase::init() {
 
@@ -567,7 +596,7 @@ double EvtDecayBase::getArg(unsigned int j) {
   // Verify string
 
   if (getParentId().getId() == 25) {
-    int i;
+    int i = 0 ; 
     ++i;
   }
 
index bf95f73f03952e9ca29935c297bfe772eabc9f51..53ef05f808f3b83f3ec65008a8ca8984ae7027b0 100644 (file)
@@ -48,6 +48,8 @@ class EvtDecayBase{
   virtual std::string commandName();
   virtual void command(std::string cmd);
 
+  virtual std::string getParamName(int i);
+  virtual std::string getParamDefault(int i);
 
   double getProbMax( double prob );
   double resetProbMax( double prob );
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtDecayMode.cxx
rename to TEvtGen/EvtGenBase/EvtDecayMode.cpp
index 001c66fa33665059e346017541467cc52874d607..479ddef655d564d205d9b159e2e2390ed44c31ae 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtDecayMode.cc,v 1.17 2009/02/18 03:31:38 ryd Exp $
+//      $Id: EvtDecayMode.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
@@ -30,7 +30,7 @@ using std::ostream;
 using std::string;
 using std::vector;
 
+
 EvtDecayMode::EvtDecayMode(std::string mother,vector<string> dau)
   : _mother(mother),
     _dau(dau)
index a739fffbc126e75994654abdfffd2505dc4ee292..e3da1c7ad714b4050b8abe1db52b9c5617f54a44 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtDecayMode.hh,v 1.10 2009/02/15 18:15:59 ryd Exp $
+//      $Id: EvtDecayMode.hh,v 1.2 2009-03-16 16:44:33 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
diff --git a/TEvtGen/EvtGenBase/EvtDecayTable.cpp b/TEvtGen/EvtGenBase/EvtDecayTable.cpp
new file mode 100644 (file)
index 0000000..f74e35a
--- /dev/null
@@ -0,0 +1,1499 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtDecayTable.cc
+//
+// Description:
+//
+// Modification history:
+//
+//    DJL/RYD     September 25, 1996         Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sstream>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtRandom.hh"
+#include "EvtGenBase/EvtDecayTable.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtSymTable.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+#include "EvtGenBase/EvtModel.hh"
+#include "EvtGenBase/EvtParser.hh"
+#include "EvtGenBase/EvtParserXml.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtModelAlias.hh"
+#include "EvtGenBase/EvtRadCorr.hh"
+#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
+
+using std::endl;
+using std::fstream;
+using std::ifstream;
+
+EvtDecayTable::EvtDecayTable() {
+  _decaytable.clear();
+}
+
+EvtDecayTable::~EvtDecayTable() {
+  _decaytable.clear();
+}
+
+EvtDecayTable* EvtDecayTable::getInstance() {
+
+  static EvtDecayTable* theDecayTable = 0;
+
+  if (theDecayTable == 0) {
+    theDecayTable = new EvtDecayTable();
+  }
+
+  return theDecayTable;
+
+}
+
+int EvtDecayTable::getNMode(int ipar){
+   return _decaytable[ipar].getNMode();
+} 
+
+EvtDecayBase* EvtDecayTable::getDecay(int ipar, int imode){
+  return _decaytable[ipar].getDecayModel(imode);
+}
+
+void EvtDecayTable::printSummary(){
+  
+  for(size_t i=0;i<EvtPDL::entries();i++){
+    _decaytable[i].printSummary();
+  }
+
+}
+
+EvtDecayBase* EvtDecayTable::getDecayFunc(EvtParticle *p){
+  int partnum;
+  
+  partnum=p->getId().getAlias();
+
+  if ( _decaytable[partnum].getNMode()==0 ) return 0;
+  return _decaytable[partnum].getDecayModel(p);
+
+}
+
+void EvtDecayTable::readDecayFile(const std::string dec_name, bool verbose){
+
+  if ( _decaytable.size() < EvtPDL::entries() ) _decaytable.resize(EvtPDL::entries());
+  EvtModel &modelist=EvtModel::instance();
+  EvtExtGeneratorCommandsTable* extGenCommands = EvtExtGeneratorCommandsTable::getInstance();
+  std::string colon(":"), equals("=");
+
+  int i;
+
+  report(INFO,"EvtGen") << "In readDecayFile, reading:"<<dec_name.c_str()<<endl;
+  
+  ifstream fin;
+  
+  fin.open(dec_name.c_str());
+  if (!fin) {
+    report(ERROR,"EvtGen") << "Could not open "<<dec_name.c_str()<<endl;
+  }
+  fin.close();
+
+  EvtParser parser;
+  parser.read(dec_name);
+
+  int itok;
+
+  int hasend=0;
+
+  std::string token;
+
+  for(itok=0;itok<parser.getNToken();itok++){
+
+    token=parser.getToken(itok);
+    
+    if (token=="End") hasend=1;
+
+  }
+
+  if (!hasend){
+    report(ERROR,"EvtGen") << "Could not find an 'End' in "<<dec_name.c_str()<<endl;
+    report(ERROR,"EvtGen") << "Will terminate execution."<<endl;
+    ::abort();
+  }
+
+
+
+  std::string model,parent,sdaug;  
+
+  EvtId ipar;
+
+  int n_daugh;
+  EvtId daught[MAX_DAUG];
+  double brfr;
+
+  int itoken=0;
+
+  std::vector<EvtModelAlias> modelAliasList;
+
+  
+  do{
+
+    token=parser.getToken(itoken++);
+
+    //Easy way to turn off photos... Lange September 5, 2000
+    if (token=="noPhotos"){ 
+      EvtRadCorr::setNeverRadCorr();
+      if ( verbose )
+       report(INFO,"EvtGen") 
+         << "As requested, PHOTOS will be turned off."<<endl; 
+    }
+    else if (token=="yesPhotos"){ 
+      EvtRadCorr::setAlwaysRadCorr();
+      if ( verbose) 
+       report(INFO,"EvtGen") 
+         << "As requested, PHOTOS will be turned on for all decays."<<endl; 
+    }
+    else if (token=="normalPhotos"){ 
+      EvtRadCorr::setNormalRadCorr();
+      if ( verbose) 
+       report(INFO,"EvtGen") 
+         << "As requested, PHOTOS will be turned on only when requested."<<endl; 
+    }
+    else if (token=="Alias"){
+
+      std::string newname;
+      std::string oldname;
+
+      newname=parser.getToken(itoken++);
+      oldname=parser.getToken(itoken++);
+
+      EvtId id=EvtPDL::getId(oldname);
+
+      if (id==EvtId(-1,-1)) {
+       report(ERROR,"EvtGen") <<"Unknown particle name:"<<oldname.c_str()
+                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
+       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+       ::abort();
+      }
+
+      EvtPDL::alias(id,newname);
+      if ( _decaytable.size() < EvtPDL::entries() ) _decaytable.resize(EvtPDL::entries());
+
+    } else if (token=="ModelAlias"){
+      std::vector<std::string> modelArgList;
+
+      std::string aliasName=parser.getToken(itoken++);
+      std::string modelName=parser.getToken(itoken++);
+
+      std::string nameTemp;
+      do{
+       nameTemp=parser.getToken(itoken++);
+       if (nameTemp!=";") {
+         modelArgList.push_back(nameTemp);
+       }
+      }while(nameTemp!=";");
+      EvtModelAlias newAlias(aliasName,modelName,modelArgList);
+      modelAliasList.push_back(newAlias);
+    } else if (token=="ChargeConj"){
+
+      std::string aname;
+      std::string abarname;
+
+      aname=parser.getToken(itoken++);
+      abarname=parser.getToken(itoken++);
+
+      EvtId a=EvtPDL::getId(aname);
+      EvtId abar=EvtPDL::getId(abarname);
+
+      if (a==EvtId(-1,-1)) {
+       report(ERROR,"EvtGen") <<"Unknown particle name:"<<aname.c_str()
+                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
+       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+       ::abort();
+      }
+
+      if (abar==EvtId(-1,-1)) {
+       report(ERROR,"EvtGen") <<"Unknown particle name:"<<abarname.c_str()
+                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
+       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+       ::abort();
+      }
+
+
+      EvtPDL::aliasChgConj(a,abar);
+
+    } else if (token == "JetSetPar") {
+
+      // Check if any old Pythia 6 commands are present
+      std::string pythiaCommand = parser.getToken(itoken++);
+
+      Command command;
+
+      // The old command format is NAME(INT)=VALUE
+      int i1 = pythiaCommand.find_first_of("(");
+      int i2 = pythiaCommand.find_first_of(")");
+      int i3 = pythiaCommand.find_first_of("=");
+
+      std::string pythiaModule = pythiaCommand.substr(0, i1);
+      std::string pythiaParam = pythiaCommand.substr(i1+1, i2-i1-1);
+      std::string pythiaValue = pythiaCommand.substr(i3+1);
+
+      command["MODULE"] = pythiaModule;
+      command["PARAM"] = pythiaParam;
+      command["VALUE"] = pythiaValue;
+
+      command["GENERATOR"] = "Both";
+      command["VERSION"] = "PYTHIA6";
+
+      extGenCommands->addCommand("PYTHIA", command);
+
+    } else if (modelist.isCommand(token)){
+
+      std::string cnfgstr;
+
+      cnfgstr=parser.getToken(itoken++);
+
+      modelist.storeCommand(token,cnfgstr);
+
+    } else if (token == "PythiaGenericParam" || token == "PythiaAliasParam" ||
+              token == "PythiaBothParam") {
+
+      // Read in any Pythia 8 commands, which will be of the form 
+      // pythia<type>Param module:param=value, with no spaces in the parameter 
+      // string! Here, <type> specifies whether the command is for generic 
+      // decays, alias decays, or both.
+
+      // Pythia 6 commands will be defined by the old JetSetPar command
+      // name, which is handled by the modelist.isCommand() statement above.
+
+      std::string pythiaCommand = parser.getToken(itoken++);
+      std::string pythiaModule(""), pythiaParam(""), pythiaValue("");
+
+      // Separate out the string into the 3 sections using the delimiters
+      // ":" and "=".
+      
+      std::vector<std::string> pComVect1 = this->splitString(pythiaCommand, colon);
+
+      if (pComVect1.size() == 2) {
+
+       pythiaModule = pComVect1[0];
+
+       std::string pCom2 = pComVect1[1];
+
+       std::vector<std::string> pComVect2 = this->splitString(pCom2, equals);
+
+       if (pComVect2.size() == 2) {
+
+         pythiaParam = pComVect2[0];
+         pythiaValue = pComVect2[1];
+
+       }
+
+      }
+
+      // Define the Pythia 8 command and pass it to the external generator
+      // command list.
+      Command command;
+      if (token == "PythiaGenericParam") {
+       command["GENERATOR"] = "Generic";
+      } else if (token == "PythiaAliasParam") {
+       command["GENERATOR"] = "Alias";
+      } else {
+       command["GENERATOR"] = "Both";
+      }
+      
+      command["MODULE"]  = pythiaModule;
+      command["PARAM"]   = pythiaParam;
+      command["VALUE"]   = pythiaValue;
+
+      command["VERSION"] = "PYTHIA8";
+      extGenCommands->addCommand("PYTHIA", command);
+      
+    } else if (token=="CDecay"){
+
+      std::string name;
+
+      name=parser.getToken(itoken++);
+      ipar=EvtPDL::getId(name);
+
+      if (ipar==EvtId(-1,-1)) {
+       report(ERROR,"EvtGen") <<"Unknown particle name:"<<name.c_str()
+                              <<" on line "
+                              <<parser.getLineofToken(itoken-1)<<endl;
+       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+       ::abort();
+      }
+
+      EvtId cipar=EvtPDL::chargeConj(ipar);
+
+      if (_decaytable[ipar.getAlias()].getNMode()!=0) {
+       if ( verbose )
+         report(DEBUG,"EvtGen") << 
+           "Redefined decay of "<<name.c_str()<<" in CDecay"<<endl;
+
+       _decaytable[ipar.getAlias()].removeDecay();
+      }
+
+      //take contents of cipar and conjugate and store in ipar
+      _decaytable[ipar.getAlias()].makeChargeConj(&_decaytable[cipar.getAlias()]);
+
+    } else if (token=="Define"){
+
+      std::string name;
+
+      name=parser.getToken(itoken++);
+      //      value=atof(parser.getToken(itoken++).c_str());
+
+      EvtSymTable::define(name,parser.getToken(itoken++));
+
+      //New code Lange April 10, 2001 - allow the user
+      //to change particle definitions of EXISTING
+      //particles on the fly
+    } else if (token=="Particle"){
+
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      if ( verbose )
+       report(INFO,"EvtGen") << pname.c_str() << endl;
+      //There should be at least the mass 
+      double newMass=atof(parser.getToken(itoken++).c_str());
+      EvtId thisPart = EvtPDL::getId(pname);
+      double newWidth=EvtPDL::getMeanMass(thisPart);
+      if ( parser.getNToken() > 3 ) newWidth=atof(parser.getToken(itoken++).c_str());
+
+      //Now make the change!
+      EvtPDL::reSetMass(thisPart, newMass);
+      EvtPDL::reSetWidth(thisPart, newWidth);
+
+      if (verbose )
+       report(INFO,"EvtGen") << "Changing particle properties of " <<
+         pname.c_str() << " Mass=" << newMass << " Width="<<newWidth<<endl;
+
+    } else if ( token=="ChangeMassMin") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      double tmass=atof(parser.getToken(itoken++).c_str());
+
+      EvtId thisPart = EvtPDL::getId(pname);
+      EvtPDL::reSetMassMin(thisPart,tmass);
+      if ( verbose )
+       report(DEBUG,"EvtGen") <<"Refined minimum mass for " << EvtPDL::name(thisPart).c_str() << " to be " << tmass << endl;
+
+    } else if ( token=="ChangeMassMax") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      double tmass=atof(parser.getToken(itoken++).c_str());
+      EvtId thisPart = EvtPDL::getId(pname);
+      EvtPDL::reSetMassMax(thisPart,tmass);
+      if ( verbose )
+       report(DEBUG,"EvtGen") <<"Refined maximum mass for " << EvtPDL::name(thisPart).c_str() << " to be " << tmass << endl;
+
+    } else if ( token=="IncludeBirthFactor") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      bool yesno=false;
+      if ( parser.getToken(itoken++)=="yes") yesno=true;
+      EvtId thisPart = EvtPDL::getId(pname);
+      EvtPDL::includeBirthFactor(thisPart,yesno);
+      if ( verbose ) {
+       if ( yesno ) report(DEBUG,"EvtGen") <<"Include birth factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+       if ( !yesno ) report(DEBUG,"EvtGen") <<"No longer include birth factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+      }
+
+    } else if ( token=="IncludeDecayFactor") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      bool yesno=false;
+      if ( parser.getToken(itoken++)=="yes") yesno=true;
+      EvtId thisPart = EvtPDL::getId(pname);
+      EvtPDL::includeDecayFactor(thisPart,yesno);
+      if ( verbose ) {
+       if ( yesno ) report(DEBUG,"EvtGen") <<"Include decay factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+       if ( !yesno ) report(DEBUG,"EvtGen") <<"No longer include decay factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+      }
+    } else if ( token=="LSNONRELBW") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      EvtId thisPart = EvtPDL::getId(pname);
+      std::string tstr="NONRELBW";
+      EvtPDL::changeLS(thisPart,tstr);
+      if ( verbose )
+       report(DEBUG,"EvtGen") <<"Change lineshape to non-rel BW for " << EvtPDL::name(thisPart).c_str() <<endl;
+    } else if ( token=="LSFLAT") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      EvtId thisPart = EvtPDL::getId(pname);
+      std::string tstr="FLAT";
+      EvtPDL::changeLS(thisPart,tstr);
+      if (verbose) 
+       report(DEBUG,"EvtGen") <<"Change lineshape to flat for " << EvtPDL::name(thisPart).c_str() <<endl;
+    } else if ( token=="LSMANYDELTAFUNC") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      EvtId thisPart = EvtPDL::getId(pname);
+      std::string tstr="MANYDELTAFUNC";
+      EvtPDL::changeLS(thisPart,tstr);
+      if ( verbose )
+       report(DEBUG,"EvtGen") <<"Change lineshape to spikes for " << EvtPDL::name(thisPart).c_str() <<endl;
+
+    } else if ( token=="BlattWeisskopf") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      double tnum=atof(parser.getToken(itoken++).c_str());
+      EvtId thisPart = EvtPDL::getId(pname);
+      EvtPDL::reSetBlatt(thisPart,tnum);
+      if ( verbose )
+       report(DEBUG,"EvtGen") <<"Redefined Blatt-Weisskopf factor " << EvtPDL::name(thisPart).c_str() << " to be " << tnum << endl;
+    } else if ( token=="BlattWeisskopfBirth") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      double tnum=atof(parser.getToken(itoken++).c_str());
+      EvtId thisPart = EvtPDL::getId(pname);
+      EvtPDL::reSetBlattBirth(thisPart,tnum);
+      if ( verbose )
+       report(DEBUG,"EvtGen") <<"Redefined Blatt-Weisskopf birth factor " << EvtPDL::name(thisPart).c_str() << " to be " << tnum << endl;
+    } else if ( token=="SetLineshapePW") {
+      std::string pname;
+      pname=parser.getToken(itoken++);
+      EvtId thisPart = EvtPDL::getId(pname);
+      std::string pnameD1=parser.getToken(itoken++);
+      EvtId thisD1 = EvtPDL::getId(pnameD1);
+      std::string pnameD2=parser.getToken(itoken++);
+      EvtId thisD2 = EvtPDL::getId(pnameD2);
+      int pw=atoi(parser.getToken(itoken++).c_str());
+      if ( verbose ) 
+       report(DEBUG,"EvtGen") <<"Redefined Partial wave for " << pname.c_str() << " to " << pnameD1.c_str() << " " << pnameD2.c_str() << " ("<<pw<<")"<<endl;
+      EvtPDL::setPWForDecay(thisPart,pw,thisD1,thisD2);
+      EvtPDL::setPWForBirthL(thisD1,pw,thisPart,thisD2);
+      EvtPDL::setPWForBirthL(thisD2,pw,thisPart,thisD1);
+
+
+    } else if (token=="Decay") {
+
+      std::string temp_fcn_new_model;
+
+      EvtDecayBase* temp_fcn_new;
+      
+      double brfrsum=0.0;
+
+  
+
+      parent=parser.getToken(itoken++);
+      ipar=EvtPDL::getId(parent);
+
+      if (ipar==EvtId(-1,-1)) {
+        report(ERROR,"EvtGen") <<"Unknown particle name:"<<parent.c_str()
+                               <<" on line "
+                               <<parser.getLineofToken(itoken-1)<<endl;
+        report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+        ::abort();
+      }
+
+      if (_decaytable[ipar.getAlias()].getNMode()!=0) {
+        report(DEBUG,"EvtGen") <<"Redefined decay of "
+                               <<parent.c_str()<<endl;
+        _decaytable[ipar.getAlias()].removeDecay();
+      }
+
+
+      do{
+        
+        token=parser.getToken(itoken++);
+        
+        if (token!="Enddecay"){
+          
+          i=0;
+          while (token.c_str()[i++]!=0){
+            if (isalpha(token.c_str()[i])){
+              report(ERROR,"EvtGen") << 
+                "Expected to find a branching fraction or Enddecay "<<
+                "but found:"<<token.c_str()<<" on line "<<
+                parser.getLineofToken(itoken-1)<<endl;
+              report(ERROR,"EvtGen") << "Possibly to few arguments to model "<<
+                "on previous line!"<<endl;
+              report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+              ::abort();
+            }
+          }
+          
+          brfr=atof(token.c_str());
+          
+          int isname=EvtPDL::getId(parser.getToken(itoken)).getId()>=0;
+          int ismodel=modelist.isModel(parser.getToken(itoken));
+          
+          if (!(isname||ismodel)){
+            //see if this is an aliased model
+            for(size_t iAlias=0;iAlias<modelAliasList.size();iAlias++){
+              if ( modelAliasList[iAlias].matchAlias(parser.getToken(itoken)) ) {
+                ismodel=2;
+                break;
+              }
+            }
+          }
+          
+          if (!(isname||ismodel)){
+            
+            report(INFO,"EvtGen") << parser.getToken(itoken).c_str()
+                                  << " is neither a particle name nor "
+                                  << "the name of a model. "<<endl;
+            report(INFO,"EvtGen") << "It was encountered on line "<<
+              parser.getLineofToken(itoken)<<" of the decay file."<<endl;
+            report(INFO,"EvtGen") << "Please fix it. Thank you."<<endl;
+            report(INFO,"EvtGen") << "Be sure to check that the "
+                                  << "correct case has been used. \n";
+            report(INFO,"EvtGen") << "Terminating execution. \n";
+            ::abort();
+            
+            itoken++;
+          }
+          
+          n_daugh=0;
+          
+          while(EvtPDL::getId(parser.getToken(itoken)).getId()>=0){
+            sdaug=parser.getToken(itoken++);
+            daught[n_daugh++]=EvtPDL::getId(sdaug);
+            if (daught[n_daugh-1]==EvtId(-1,-1)) {
+              report(ERROR,"EvtGen") <<"Unknown particle name:"<<sdaug.c_str()
+                                     <<" on line "<<parser.getLineofToken(itoken)<<endl;
+              report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+              ::abort();
+            }
+          }
+          
+          
+          model=parser.getToken(itoken++);
+          
+          
+          int photos=0;
+          int verbose=0;
+          int summary=0;
+          
+          do{
+            if (model=="PHOTOS"){
+              photos=1;
+              model=parser.getToken(itoken++);
+            }
+            if (model=="VERBOSE"){
+              verbose=1;
+              model=parser.getToken(itoken++);
+            }
+            if (model=="SUMMARY"){
+              summary=1;
+              model=parser.getToken(itoken++);
+            }
+          }while(model=="PHOTOS"||
+                 model=="VERBOSE"||
+                 model=="SUMMARY");
+          
+          //see if this is an aliased model
+          int foundAnAlias=-1;
+          for(size_t iAlias=0;iAlias<modelAliasList.size();iAlias++){
+            if ( modelAliasList[iAlias].matchAlias(model) ) {
+              foundAnAlias=iAlias;
+              break;
+            }
+          }
+          
+          if ( foundAnAlias==-1 ) {
+            if(!modelist.isModel(model)){
+              report(ERROR,"EvtGen") << 
+                "Expected to find a model name,"<<
+                "found:"<<model.c_str()<<" on line "<<
+                parser.getLineofToken(itoken)<<endl;
+              report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+              ::abort();
+            }
+          }
+          else{
+            model=modelAliasList[foundAnAlias].getName();
+          }
+          
+          temp_fcn_new_model=model;
+          temp_fcn_new=modelist.getFcn(model);
+          
+          
+          if (photos){
+            temp_fcn_new->setPHOTOS();
+          }
+          if (verbose){
+            temp_fcn_new->setVerbose();
+          }
+          if (summary){
+            temp_fcn_new->setSummary();
+          }
+          
+
+         std::vector<std::string> temp_fcn_new_args;
+
+         std::string name;
+         int ierr;
+
+         if ( foundAnAlias==-1 ) {
+           do{
+             name=parser.getToken(itoken++);
+             if (name!=";") {
+               temp_fcn_new_args.push_back(EvtSymTable::get(name,ierr));
+               if (ierr) {
+                 report(ERROR,"EvtGen")
+                   <<"Reading arguments and found:"<<
+                   name.c_str()<<" on line:"<<
+                   parser.getLineofToken(itoken-1)<<endl;
+                 report(ERROR,"EvtGen") 
+                   << "Will terminate execution!"<<endl;
+                 ::abort();
+               }
+             }
+             //int isname=EvtPDL::getId(name).getId()>=0;
+             int ismodel=modelist.isModel(name);
+             if (ismodel) {
+               report(ERROR,"EvtGen")
+                 <<"Expected ';' but found:"<<
+                 name.c_str()<<" on line:"<<
+                 parser.getLineofToken(itoken-1)<<endl;
+               report(ERROR,"EvtGen") 
+                 << "Most probable error is omitted ';'."<<endl;
+               report(ERROR,"EvtGen") 
+                 << "Will terminate execution!"<<endl;
+               ::abort();
+             }
+           }while(name!=";");
+         }
+         else{
+           std::vector<std::string> copyMe=modelAliasList[foundAnAlias].getArgList();
+           temp_fcn_new_args=copyMe;
+           itoken++;
+         }
+         //Found one decay.
+
+         brfrsum+=brfr;
+
+         temp_fcn_new->saveDecayInfo(ipar,n_daugh,
+                                     daught,
+                                     temp_fcn_new_args.size(),
+                                     temp_fcn_new_args,
+                                     temp_fcn_new_model,
+                                     brfr);
+
+         double massmin=0.0;
+
+         //          for (i=0;i<n_daugh;i++){
+          for (i=0;i<temp_fcn_new->nRealDaughters();i++){
+           if ( EvtPDL::getMinMass(daught[i])>0.0001 ){
+              massmin+=EvtPDL::getMinMass(daught[i]);
+           } else {
+              massmin+=EvtPDL::getMeanMass(daught[i]);
+           }  
+         } 
+         
+         _decaytable[ipar.getAlias()].addMode(temp_fcn_new,brfrsum,massmin);
+         
+
+       }
+      } while(token!="Enddecay");      
+
+      _decaytable[ipar.getAlias()].finalize();
+
+    }
+    // Allow copying of decays from one particle to another; useful
+    // in combination with RemoveDecay
+    else if (token=="CopyDecay") {
+      std::string newname;
+      std::string oldname;
+      
+      newname=parser.getToken(itoken++);
+      oldname=parser.getToken(itoken++);
+      
+      EvtId newipar=EvtPDL::getId(newname);
+      EvtId oldipar=EvtPDL::getId(oldname);
+      
+      if (oldipar==EvtId(-1,-1)) {
+       report(ERROR,"EvtGen") <<"Unknown particle name:"<<oldname.c_str()
+                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
+       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+       ::abort();
+      }
+      if (newipar==EvtId(-1,-1)) {
+       report(ERROR,"EvtGen") <<"Unknown particle name:"<<newname.c_str()
+                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
+       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+       ::abort();
+      }
+      if (_decaytable[newipar.getAlias()].getNMode()!=0) {
+       report(DEBUG,"EvtGen") <<"Redefining decay of "
+                              <<newname<<endl;
+       _decaytable[newipar.getAlias()].removeDecay();
+      }
+      _decaytable[newipar.getAlias()] = _decaytable[oldipar.getAlias()];
+    }
+    // Enable decay deletion; intended primarily for aliases
+    // Peter Onyisi, March 2008
+    else if (token=="RemoveDecay") {
+      parent = parser.getToken(itoken++);
+      ipar = EvtPDL::getId(parent);
+      
+      if (ipar==EvtId(-1,-1)) {
+        report(ERROR,"EvtGen") <<"Unknown particle name:"<<parent.c_str()
+                               <<" on line "
+                               <<parser.getLineofToken(itoken-1)<<endl;
+        report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+        ::abort();
+      }
+       
+      if (_decaytable[ipar.getAlias()].getNMode()==0) {
+        report(DEBUG,"EvtGen") << "No decays to delete for "
+                               << parent.c_str() << endl;
+      } else {
+        report(DEBUG,"EvtGen") <<"Deleting selected decays of "
+                               <<parent.c_str()<<endl;
+      }
+      
+      do {
+        token = parser.getToken(itoken);
+        
+        if (token != "Enddecay") {
+         n_daugh = 0;
+         while (EvtPDL::getId(parser.getToken(itoken)).getId() >= 0) {
+           sdaug = parser.getToken(itoken++);
+           daught[n_daugh++] = EvtPDL::getId(sdaug);
+           if (daught[n_daugh-1]==EvtId(-1,-1)) {
+             report(ERROR,"EvtGen") <<"Unknown particle name:"<<sdaug.c_str()
+                                    <<" on line "<<parser.getLineofToken(itoken)<<endl;
+             report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+             ::abort();
+           }
+         }
+         token = parser.getToken(itoken);
+         if (token != ";") {
+           report(ERROR,"EvtGen")
+             <<"Expected ';' but found:"<<
+             token <<" on line:"<<
+             parser.getLineofToken(itoken-1)<<endl;
+           report(ERROR,"EvtGen") 
+             << "Most probable error is omitted ';'."<<endl;
+           report(ERROR,"EvtGen") 
+             << "Will terminate execution!"<<endl;
+           ::abort();
+         }
+         token = parser.getToken(itoken++);
+         EvtDecayBase* temp_fcn_new = modelist.getFcn("PHSP");
+         std::vector<std::string> temp_fcn_new_args;
+         std::string temp_fcn_new_model("PHSP");
+         temp_fcn_new->saveDecayInfo(ipar, n_daugh,
+                                      daught,
+                                      0,
+                                      temp_fcn_new_args,
+                                      temp_fcn_new_model,
+                                      0.);
+         _decaytable[ipar.getAlias()].removeMode(temp_fcn_new);
+        }
+      } while (token != "Enddecay");
+      itoken++;
+    }
+    else if (token!="End"){
+
+      report(ERROR,"EvtGen") << "Found unknown command:'"<<token.c_str()<<"' on line "
+                            <<parser.getLineofToken(itoken)<<endl;
+      report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+      ::abort();
+
+    }
+
+  } while ((token!="End")&&itoken!=parser.getNToken());
+
+  //Now we may need to reset the minimum mass for some particles????
+
+  for (size_t ii=0; ii<EvtPDL::entries(); ii++){
+    EvtId temp(ii,ii);
+    int nModTot=getNMode(ii);
+    //no decay modes
+    if ( nModTot == 0 ) continue;
+    //0 width?
+    if ( EvtPDL::getWidth(temp) < 0.0000001 ) continue;
+    int jj;
+    double minMass=EvtPDL::getMaxMass(temp);
+    for (jj=0; jj<nModTot; jj++) {
+      double tmass=_decaytable[ii].getDecay(jj).getMassMin();
+      if ( tmass< minMass) minMass=tmass;
+    }
+    if ( minMass > EvtPDL::getMinMass(temp) ) {
+      if ( verbose )
+       report(INFO,"EvtGen") << "Given allowed decays, resetting minMass " << EvtPDL::name(temp).c_str() << " " 
+                             << EvtPDL::getMinMass(temp) << " to " << minMass << endl;
+      EvtPDL::reSetMassMin(temp,minMass);
+    }
+  }
+}
+
+void EvtDecayTable::readXMLDecayFile(const std::string dec_name, bool verbose){
+  if ( _decaytable.size() < EvtPDL::entries() ) _decaytable.resize(EvtPDL::entries());
+  EvtModel &modelist=EvtModel::instance();
+  EvtExtGeneratorCommandsTable* extGenCommands = EvtExtGeneratorCommandsTable::getInstance();
+
+  EvtParserXml parser;
+  parser.open(dec_name);
+
+  EvtId ipar;
+  std::string decayParent = "";
+  double brfrSum = 0.;
+  std::vector<EvtModelAlias> modelAliasList;
+  bool endReached = false;
+
+  while(parser.readNextTag()) {
+      //TAGS FOUND UNDER DATA
+      if(parser.getParentTagTitle() == "data") {
+        if(parser.getTagTitle() == "photos") {
+          std::string usage = parser.readAttribute("usage");
+          if(usage == "always") {
+            EvtRadCorr::setAlwaysRadCorr();
+            if ( verbose )
+              report(INFO,"EvtGen")
+                << "As requested, PHOTOS will be turned on for all decays."<<endl;
+          } else if(usage == "never") {
+            EvtRadCorr::setNeverRadCorr();
+            if ( verbose )
+              report(INFO,"EvtGen")
+                << "As requested, PHOTOS will be turned off."<<endl;
+          } else {
+            EvtRadCorr::setNormalRadCorr();
+            if ( verbose )
+              report(INFO,"EvtGen")
+                << "As requested, PHOTOS will be turned on only when requested."<<endl;
+          }
+
+        } else if(parser.getTagTitle() == "alias") {
+          std::string alias = parser.readAttribute("name");
+          std::string particle = parser.readAttribute("particle");
+          checkParticle(particle);
+          EvtId id=EvtPDL::getId(particle);
+
+          EvtPDL::alias(id,alias);
+          if ( _decaytable.size() < EvtPDL::entries() ) _decaytable.resize(EvtPDL::entries());
+
+        } else if(parser.getTagTitle() == "modelAlias") {
+          std::vector<std::string> modelArgList;
+
+          std::string alias = parser.readAttribute("name");
+          std::string model = parser.readAttribute("model");
+          std::string paramStr = parser.readAttribute("params");
+          std::istringstream paramStream(paramStr);
+
+          std::string param;
+
+          if(paramStr=="") {
+            EvtDecayBase* fcn = modelist.getFcn(model);
+            int i(0);
+            std::string paramName = fcn->getParamName(0);
+            while(paramName!="") {
+              param = parser.readAttribute(paramName,fcn->getParamDefault(i));
+              if(param=="") break;
+              modelArgList.push_back(param);
+              ++i;
+              paramName = fcn->getParamName(i);
+            }
+          } else {
+            while(std::getline(paramStream, param, ' ')) {
+              modelArgList.push_back(param);
+            }
+          }
+          EvtModelAlias newAlias(alias,model,modelArgList);
+          modelAliasList.push_back(newAlias);
+
+        } else if(parser.getTagTitle() == "chargeConj") {
+          std::string particle = parser.readAttribute("particle");
+          std::string conjugate = parser.readAttribute("conjugate");
+
+          EvtId a=EvtPDL::getId(particle);
+          EvtId abar=EvtPDL::getId(conjugate);
+
+          checkParticle(particle);
+          checkParticle(conjugate);
+
+          EvtPDL::aliasChgConj(a,abar);
+
+        } else if(parser.getTagTitle() == "conjDecay") {
+          std::string particle = parser.readAttribute("particle");
+
+          EvtId a=EvtPDL::getId(particle);
+          EvtId abar=EvtPDL::chargeConj(a);
+
+          checkParticle(particle);
+          checkParticle(abar.getName());
+
+          if (_decaytable[a.getAlias()].getNMode()!=0) {
+            if ( verbose )
+              report(DEBUG,"EvtGen") <<
+                "Redefined decay of "<<particle.c_str()<<" in ConjDecay"<<endl;
+
+            _decaytable[a.getAlias()].removeDecay();
+          }
+
+          //take contents of abar and conjugate and store in a
+          _decaytable[a.getAlias()].makeChargeConj(&_decaytable[abar.getAlias()]);
+          
+        } else if(parser.getTagTitle() == "define") {
+          std::string name = parser.readAttribute("name");
+          std::string value = parser.readAttribute("value");
+          EvtSymTable::define(name,value);
+
+        } else if(parser.getTagTitle() == "particle") {
+          std::string name = parser.readAttribute("name");
+          double mass = parser.readAttributeDouble("mass");
+          double width = parser.readAttributeDouble("width");
+          double minMass = parser.readAttributeDouble("massMin");
+          double maxMass = parser.readAttributeDouble("massMax");
+          std::string birthFactor = parser.readAttribute("includeBirthFactor");
+          std::string decayFactor = parser.readAttribute("includeDecayFactor");
+          std::string lineShape = parser.readAttribute("lineShape");
+          double blattWeisskopfD = parser.readAttributeDouble("blattWeisskopfFactor");
+          double blattWeisskopfB = parser.readAttributeDouble("blattWeisskopfBirth");
+
+          EvtId thisPart = EvtPDL::getId(name);
+          checkParticle(name);
+
+          if(mass != -1) {
+            EvtPDL::reSetMass(thisPart, mass);
+            report(DEBUG,"EvtGen") <<"Refined mass for " << EvtPDL::name(thisPart).c_str() << " to be " << mass << endl;
+          }
+          if(width != -1) {
+            EvtPDL::reSetWidth(thisPart, width);
+            report(DEBUG,"EvtGen") <<"Refined width for " << EvtPDL::name(thisPart).c_str() << " to be " << width << endl;
+          }
+          if(minMass != -1) {
+            EvtPDL::reSetMassMin(thisPart,minMass);
+            report(DEBUG,"EvtGen") <<"Refined minimum mass for " << EvtPDL::name(thisPart).c_str() << " to be " << minMass << endl;
+          }
+          if(maxMass != -1) {
+            EvtPDL::reSetMassMax(thisPart,maxMass);
+            report(DEBUG,"EvtGen") <<"Refined maximum mass for " << EvtPDL::name(thisPart).c_str() << " to be " << maxMass << endl;
+          }
+          if(!birthFactor.empty()) {
+            EvtPDL::includeBirthFactor(thisPart,stringToBoolean(birthFactor));
+            if(verbose) {
+              if(stringToBoolean(birthFactor)) {
+                report(DEBUG,"EvtGen") <<"Include birth factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+              } else {
+                report(DEBUG,"EvtGen") <<"No longer include birth factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+              }
+            }
+          }
+          if(!decayFactor.empty()) {
+            EvtPDL::includeDecayFactor(thisPart,stringToBoolean(decayFactor));
+            if(verbose) {
+              if(stringToBoolean(decayFactor)) {
+                report(DEBUG,"EvtGen") <<"Include decay factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+              } else {
+                report(DEBUG,"EvtGen") <<"No longer include decay factor for " << EvtPDL::name(thisPart).c_str() <<endl;
+              }
+            }
+          }
+          if(!lineShape.empty()) {
+            EvtPDL::changeLS(thisPart,lineShape);
+            if ( verbose )
+              report(DEBUG,"EvtGen") <<"Change lineshape to " << lineShape << " for " << EvtPDL::name(thisPart).c_str() <<endl;
+          }
+          if(blattWeisskopfD != -1) {
+            EvtPDL::reSetBlatt(thisPart,blattWeisskopfD);
+            if ( verbose )
+              report(DEBUG,"EvtGen") <<"Redefined Blatt-Weisskopf factor "
+                                     << EvtPDL::name(thisPart).c_str() << " to be " << blattWeisskopfD << endl;
+          }
+          if(blattWeisskopfB != -1) {
+            EvtPDL::reSetBlattBirth(thisPart,blattWeisskopfB);
+            if ( verbose )
+              report(DEBUG,"EvtGen") <<"Redefined Blatt-Weisskopf birth factor "
+                                     << EvtPDL::name(thisPart).c_str() << " to be " << blattWeisskopfB << endl;
+          }
+        } else if(parser.getTagTitle() == "lineShapePW") {
+          std::string parent = parser.readAttribute("parent");
+          std::string daug1 = parser.readAttribute("daug1");
+          std::string daug2 = parser.readAttribute("daug2");
+          int pw = parser.readAttributeInt("pw");
+
+          checkParticle(parent);
+          checkParticle(daug1);
+          checkParticle(daug2);
+
+          EvtId thisPart = EvtPDL::getId(parent);
+          EvtId thisD1 = EvtPDL::getId(daug1);
+          EvtId thisD2 = EvtPDL::getId(daug2);
+
+          EvtPDL::setPWForDecay(thisPart,pw,thisD1,thisD2);
+          EvtPDL::setPWForBirthL(thisD1,pw,thisPart,thisD2);
+          EvtPDL::setPWForBirthL(thisD2,pw,thisPart,thisD1);
+          if ( verbose )
+            report(DEBUG,"EvtGen") <<"Redefined Partial wave for " << parent.c_str() << " to "
+                                   << daug1.c_str() << " " << daug2.c_str() << " ("<<pw<<")"<<endl;
+
+        } else if(parser.getTagTitle() == "decay") { //start of a particle
+          brfrSum = 0.;
+          decayParent = parser.readAttribute("name");
+          checkParticle(decayParent);
+          ipar=EvtPDL::getId(decayParent);
+
+          if (_decaytable[ipar.getAlias()].getNMode()!=0) {
+            report(DEBUG,"EvtGen") <<"Redefined decay of "
+                                   <<decayParent.c_str()<<endl;
+            _decaytable[ipar.getAlias()].removeDecay();
+          }
+
+        } else if(parser.getTagTitle() == "copyDecay") {
+          std::string particle = parser.readAttribute("particle");
+          std::string copy = parser.readAttribute("copy");
+
+          EvtId newipar=EvtPDL::getId(particle);
+          EvtId oldipar=EvtPDL::getId(copy);
+
+          checkParticle(particle);
+          checkParticle(copy);
+
+          if (_decaytable[newipar.getAlias()].getNMode()!=0) {
+            report(DEBUG,"EvtGen") <<"Redefining decay of "
+                                   <<particle<<endl;
+            _decaytable[newipar.getAlias()].removeDecay();
+          }
+          _decaytable[newipar.getAlias()] = _decaytable[oldipar.getAlias()];
+
+        } else if(parser.getTagTitle() == "removeDecay") {
+          decayParent = parser.readAttribute("particle");
+          checkParticle(decayParent);
+          ipar=EvtPDL::getId(decayParent);
+
+          if (_decaytable[ipar.getAlias()].getNMode()==0) {
+            report(DEBUG,"EvtGen") << "No decays to delete for "
+                                   << decayParent.c_str() << endl;
+          } else {
+            report(DEBUG,"EvtGen") <<"Deleting selected decays of "
+                                   <<decayParent.c_str()<<endl;
+          }
+
+        } else if(parser.getTagTitle() == "pythiaParam") {
+          Command command;
+          command["GENERATOR"] = parser.readAttribute("generator");
+          command["MODULE"]    = parser.readAttribute("module");
+          command["PARAM"]     = parser.readAttribute("param");
+          command["VALUE"]     = parser.readAttribute("value");
+          command["VERSION"]   = "PYTHIA8";
+          extGenCommands->addCommand("PYTHIA", command);
+
+        } else if(parser.getTagTitle() == "pythia6Param") {
+          Command command;
+          command["GENERATOR"] = parser.readAttribute("generator");
+          command["MODULE"]    = parser.readAttribute("module");
+          command["PARAM"]     = parser.readAttribute("param");
+          command["VALUE"]     = parser.readAttribute("value");
+          command["VERSION"]   = "PYTHIA6";
+          extGenCommands->addCommand("PYTHIA", command);
+
+        } else if(parser.getTagTitle() == "/data") { //end of data
+          endReached = true;
+          parser.close();
+          break;
+        } else if(parser.getTagTitle() == "Title" || parser.getTagTitle() == "Details"
+               || parser.getTagTitle() == "Author" || parser.getTagTitle() == "Version"
+          //the above tags are expected to be in the XML decay file but are not used by EvtGen
+               || parser.getTagTitle() == "dalitzDecay" || parser.getTagTitle() == "copyDalitz") {
+          //the above tags are only used by EvtGenModels/EvtDalitzTable
+        } else {  report(INFO,"EvtGen") << "Unknown tag "<<parser.getTagTitle()
+                  <<" found in XML decay file near line "<<parser.getLineNumber()<<". Tag will be ignored."<<endl;
+        }
+      //TAGS FOUND UNDER DECAY
+      } else if(parser.getParentTagTitle() == "decay") {
+        if(parser.getTagTitle() == "channel") { //start of a channel
+          int nDaughters = 0;
+          EvtId daughter[MAX_DAUG];
+
+          EvtDecayBase* temp_fcn_new;
+          std::string temp_fcn_new_model;
+          std::vector<std::string> temp_fcn_new_args;
+
+          double brfr = parser.readAttributeDouble("br");
+          std::string daugStr = parser.readAttribute("daughters");
+          std::istringstream daugStream(daugStr);
+          std::string model = parser.readAttribute("model");
+          std::string paramStr = parser.readAttribute("params");
+          std::istringstream paramStream(paramStr);
+          bool decVerbose = parser.readAttributeBool("verbose");
+          bool decPhotos = parser.readAttributeBool("photos");
+          bool decSummary = parser.readAttributeBool("summary");
+
+          std::string daugh;
+          while(std::getline(daugStream, daugh, ' ')) {
+            checkParticle(daugh);
+            daughter[nDaughters++] = EvtPDL::getId(daugh);
+          }
+
+          int modelAlias = -1;
+          for(size_t iAlias=0;iAlias<modelAliasList.size();iAlias++){
+            if ( modelAliasList[iAlias].matchAlias(model) ) {
+              modelAlias=iAlias;
+              break;
+            }
+          }
+
+          if ( modelAlias==-1 ) {
+            if(!modelist.isModel(model)){
+              report(ERROR,"EvtGen") <<
+                "Expected to find a model name near line "<<parser.getLineNumber()<<","<<
+                "found:"<<model.c_str()<<endl;
+              report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+              ::abort();
+            }
+          } else {
+            model=modelAliasList[modelAlias].getName();
+          }
+
+          temp_fcn_new_model = model;
+          temp_fcn_new = modelist.getFcn(model);
+
+          if(decPhotos) temp_fcn_new->setPHOTOS();
+          if(decVerbose) temp_fcn_new->setVerbose();
+          if(decSummary) temp_fcn_new->setSummary();
+
+          int ierr;
+          if(modelAlias == -1) {
+            std::string param;
+            if(paramStr == "") {
+              int i(0);
+              std::string paramName = temp_fcn_new->getParamName(0); 
+              while(paramName != "") {
+                param = parser.readAttribute(paramName,temp_fcn_new->getParamDefault(i));
+                if(param == "") break; //params must be added in order so we can't just skip the missing ones
+                temp_fcn_new_args.push_back(EvtSymTable::get(param,ierr));
+                if (ierr) {
+                  report(ERROR,"EvtGen")
+                    <<"Reading arguments near line "<<parser.getLineNumber()<<" and found:"<<
+                    param.c_str()<<endl;
+                  report(ERROR,"EvtGen")
+                    << "Will terminate execution!"<<endl;
+                  ::abort();
+                }
+                ++i;
+                paramName = temp_fcn_new->getParamName(i);
+              }
+
+            } else {//if the params are not set seperately
+              while(std::getline(paramStream, param, ' ')) {
+                temp_fcn_new_args.push_back(EvtSymTable::get(param,ierr));
+                if (ierr) {
+                  report(ERROR,"EvtGen")
+                    <<"Reading arguments near line "<<parser.getLineNumber()<<" and found:"<<
+                    param.c_str()<<endl;
+                  report(ERROR,"EvtGen")
+                    << "Will terminate execution!"<<endl;
+                  ::abort();
+                }
+              }
+            }
+          } else {
+            std::vector<std::string> copyMe=modelAliasList[modelAlias].getArgList();
+            temp_fcn_new_args=copyMe;
+          }
+
+          brfrSum+=brfr;
+
+          temp_fcn_new->saveDecayInfo(ipar,nDaughters,
+                                      daughter,
+                                      temp_fcn_new_args.size(),
+                                      temp_fcn_new_args,
+                                      temp_fcn_new_model,
+                                      brfr);
+
+          double massMin=0.0;
+
+          for (int i=0;i<temp_fcn_new->nRealDaughters();i++){
+            if ( EvtPDL::getMinMass(daughter[i])>0.0001 ){
+              massMin+=EvtPDL::getMinMass(daughter[i]);
+            } else {
+              massMin+=EvtPDL::getMeanMass(daughter[i]);
+            }
+          }
+
+          _decaytable[ipar.getAlias()].addMode(temp_fcn_new,brfrSum,massMin);
+
+        } else if(parser.getTagTitle() == "/decay") { //end of a particle
+          _decaytable[ipar.getAlias()].finalize();
+        } else report(INFO,"EvtGen") << "Unexpected tag "<<parser.getTagTitle()
+                                     <<" found in XML decay file near line "<<parser.getLineNumber()<<". Tag will be ignored."<<endl;
+      //TAGS FOUND UNDER REMOVEDECAY
+      } else if(parser.getParentTagTitle() == "removeDecay") {
+        if(parser.getTagTitle() == "channel") { //start of a channel
+          int nDaughters = 0;
+          EvtId daughter[MAX_DAUG];
+
+          std::string daugStr = parser.readAttribute("daughters");
+          std::istringstream daugStream(daugStr);
+
+          std::string daugh;
+          while(std::getline(daugStream, daugh, ' ')) {
+            checkParticle(daugh);
+            daughter[nDaughters++] = EvtPDL::getId(daugh);
+          }
+
+          EvtDecayBase* temp_fcn_new = modelist.getFcn("PHSP");
+          std::vector<std::string> temp_fcn_new_args;
+          std::string temp_fcn_new_model("PHSP");
+          temp_fcn_new->saveDecayInfo(ipar, nDaughters,
+                                      daughter,
+                                      0,
+                                      temp_fcn_new_args,
+                                      temp_fcn_new_model,
+                                      0.);
+          _decaytable[ipar.getAlias()].removeMode(temp_fcn_new);
+        } else if(parser.getTagTitle() != "/removeDecay") {
+          report(INFO,"EvtGen") << "Unexpected tag "<<parser.getTagTitle()
+                                <<" found in XML decay file near line "<<parser.getLineNumber()<<". Tag will be ignored."<<endl;
+        }
+      }
+  }//while lines in file
+
+  if(!endReached) {
+    report(INFO,"EvtGen") << "Either the decay file ended prematurely or the file is badly formed.\n"
+                          <<"Error occured near line"<<parser.getLineNumber()<<endl;
+    ::abort();
+  }
+
+  //Now we may need to reset the minimum mass for some particles????
+  for (size_t ii=0; ii<EvtPDL::entries(); ii++){
+    EvtId temp(ii,ii);
+    int nModTot=getNMode(ii);
+    //no decay modes
+    if ( nModTot == 0 ) continue;
+    //0 width?
+    if ( EvtPDL::getWidth(temp) < 0.0000001 ) continue;
+    int jj;
+    double minMass=EvtPDL::getMaxMass(temp);
+    for (jj=0; jj<nModTot; jj++) {
+      double tmass=_decaytable[ii].getDecay(jj).getMassMin();
+      if ( tmass< minMass) minMass=tmass;
+    }
+    if ( minMass > EvtPDL::getMinMass(temp) ) {
+      if ( verbose )
+        report(INFO,"EvtGen") << "Given allowed decays, resetting minMass " << EvtPDL::name(temp).c_str() << " "
+                              << EvtPDL::getMinMass(temp) << " to " << minMass << endl;
+      EvtPDL::reSetMassMin(temp,minMass);
+    }
+  }
+}
+
+bool EvtDecayTable::stringToBoolean(std::string valStr) {
+  return (valStr == "true" || valStr == "1" || valStr == "on" || valStr == "yes");
+}
+
+void EvtDecayTable::checkParticle(std::string particle) {
+  if (EvtPDL::getId(particle)==EvtId(-1,-1)) {
+    report(ERROR,"EvtGen") <<"Unknown particle name:"<<particle.c_str()<<endl;
+    report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+    ::abort();
+  }
+}
+
+EvtDecayBase* EvtDecayTable::findDecayModel(EvtId id, int modeInt) {
+
+  int aliasInt = id.getAlias();
+
+  EvtDecayBase* theModel = this->findDecayModel(aliasInt, modeInt);
+
+  return theModel;
+
+}
+
+EvtDecayBase* EvtDecayTable::findDecayModel(int aliasInt, int modeInt) {
+
+  EvtDecayBase* theModel(0);
+
+  if (aliasInt >= 0 && aliasInt < (int) EvtPDL::entries()) {
+
+    theModel = _decaytable[aliasInt].getDecayModel(modeInt);
+
+  }
+
+  return theModel;
+
+}
+
+bool EvtDecayTable::hasPythia(EvtId id) {
+
+  bool hasPythia = this->hasPythia(id.getAlias());
+  return hasPythia;
+
+}
+
+bool EvtDecayTable::hasPythia(int aliasInt) {
+
+  bool hasPythia(false);
+  if (aliasInt >= 0 && aliasInt < (int) EvtPDL::entries()) {
+
+    hasPythia = _decaytable[aliasInt].isJetSet();
+
+  }
+  
+  return hasPythia;
+
+}
+
+int EvtDecayTable::getNModes(EvtId id) {
+
+  int nModes = this->getNModes(id.getAlias());
+  return nModes;
+
+}
+
+int EvtDecayTable::getNModes(int aliasInt) {
+
+  int nModes(0);
+
+  if (aliasInt >= 0 && aliasInt < (int) EvtPDL::entries()) {
+
+    nModes = _decaytable[aliasInt].getNMode();
+  }
+
+  return nModes;
+
+}
+
+int  EvtDecayTable::findChannel(EvtId parent, std::string model, 
+                               int ndaug, EvtId *daugs, 
+                               int narg, std::string *args){
+
+   int i,j,right;
+   EvtId daugs_scratch[50];
+   int nmatch,k;
+
+   for(i=0;i<_decaytable[parent.getAlias()].getNMode();i++){
+
+     right=1;
+
+     right=right&&model==_decaytable[parent.getAlias()].
+                   getDecay(i).getDecayModel()->getModelName();
+     right=right&&(ndaug==_decaytable[parent.getAlias()].
+            getDecay(i).getDecayModel()->getNDaug());
+     right=right&&(narg==_decaytable[parent.getAlias()].
+            getDecay(i).getDecayModel()->getNArg());
+
+     if ( right ){
+
+       
+
+       for(j=0;j<ndaug;j++){
+        daugs_scratch[j]=daugs[j];
+       }
+
+       nmatch=0;
+
+       for(j=0;j<_decaytable[parent.getAlias()].
+            getDecay(i).getDecayModel()->getNDaug();j++){
+
+         for(k=0;k<ndaug;k++){
+          if (daugs_scratch[k]==_decaytable[parent.getAlias()].
+              getDecay(i).getDecayModel()->getDaug(j)){
+             daugs_scratch[k]=EvtId(-1,-1);
+             nmatch++;
+            break;
+          }
+        }
+       } 
+
+       right=right&&(nmatch==ndaug);
+
+       for(j=0;j<_decaytable[parent.getAlias()].
+            getDecay(i).getDecayModel()->getNArg();j++){
+        right=right&&(args[j]==_decaytable[parent.getAlias()].
+                getDecay(i).getDecayModel()->getArgStr(j));
+       } 
+     }
+     if (right) return i;
+   }
+   return -1;
+}
+
+int  EvtDecayTable::inChannelList(EvtId parent, int ndaug, EvtId *daugs){
+
+   int i,j,k;
+   EvtId daugs_scratch[MAX_DAUG];
+
+   int dsum=0;
+   for(i=0;i<ndaug;i++){
+     dsum+=daugs[i].getAlias();
+   }
+
+   int nmatch;
+
+   int ipar=parent.getAlias();
+
+   int nmode=_decaytable[ipar].getNMode();
+
+   for(i=0;i<nmode;i++){
+
+     EvtDecayBase* thedecaymodel=_decaytable[ipar].getDecay(i).getDecayModel();
+
+     if (thedecaymodel->getDSum()==dsum){
+
+       int nd=thedecaymodel->getNDaug();
+
+       if (ndaug==nd){
+        for(j=0;j<ndaug;j++){
+          daugs_scratch[j]=daugs[j];
+        }
+        nmatch=0;
+        for(j=0;j<nd;j++){
+          for(k=0;k<ndaug;k++){
+            if (EvtId(daugs_scratch[k])==thedecaymodel->getDaug(j)){
+              daugs_scratch[k]=EvtId(-1,-1);
+              nmatch++;
+              break;
+            }
+          }
+        } 
+         if ((nmatch==ndaug)&&
+             (!
+              ((thedecaymodel->getModelName()=="JETSET")||
+               (thedecaymodel->getModelName()=="PYTHIA")))){
+           return i;
+         }
+       }
+     }
+   }
+
+   return -1;
+}
+   
+std::vector<std::string> EvtDecayTable::splitString(std::string& theString, 
+                                                   std::string& splitter) {
+
+  // Code from STLplus
+  std::vector<std::string> result;
+
+  if (!theString.empty() && !splitter.empty()) {
+
+    for (std::string::size_type offset = 0;;) {
+
+      std::string::size_type found = theString.find(splitter, offset);
+
+      if (found != std::string::npos) {
+       std::string tmpString = theString.substr(offset, found-offset);
+        if (tmpString.size() > 0) {result.push_back(tmpString);}
+        offset = found + splitter.size();
+      } else {
+       std::string tmpString = theString.substr(offset, theString.size()-offset);
+        if (tmpString.size() > 0) {result.push_back(tmpString);}
+        break;
+      }
+    }
+  }
+
+  return result;
+}
+
+     
diff --git a/TEvtGen/EvtGenBase/EvtDecayTable.cxx b/TEvtGen/EvtGenBase/EvtDecayTable.cxx
deleted file mode 100644 (file)
index 9dec0a6..0000000
+++ /dev/null
@@ -1,850 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtDecayTable.cc
-//
-// Description:
-//
-// Modification history:
-//
-//    DJL/RYD     September 25, 1996         Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-
-#include <iostream>
-#include <iomanip>
-#include <fstream>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtRandom.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtSymTable.hh"
-#include "EvtGenBase/EvtDecayBase.hh"
-#include "EvtGenBase/EvtModel.hh"
-#include "EvtGenBase/EvtParser.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenBase/EvtModelAlias.hh"
-#include "EvtGenBase/EvtRadCorr.hh"
-using std::endl;
-using std::fstream;
-using std::ifstream;
-
-std::vector<EvtParticleDecayList> EvtDecayTable::_decaytable;
-
-int EvtDecayTable::getNMode(int ipar){
-   return _decaytable[ipar].getNMode();
-} 
-
-EvtDecayBase* EvtDecayTable::getDecay(int ipar, int imode){
-  return _decaytable[ipar].getDecayModel(imode);
-}
-
-void EvtDecayTable::printSummary(){
-  
-  for(size_t i=0;i<EvtPDL::entries();i++){
-    _decaytable[i].printSummary();
-  }
-
-}
-
-EvtDecayBase* EvtDecayTable::getDecayFunc(EvtParticle *p){
-  int partnum;
-  
-  partnum=p->getId().getAlias();
-
-  if ( _decaytable[partnum].getNMode()==0 ) return 0;
-  return _decaytable[partnum].getDecayModel(p);
-
-}
-
-void EvtDecayTable::readDecayFile(const std::string dec_name, bool verbose){
-
-  if ( _decaytable.size() < EvtPDL::entries() ) _decaytable.resize(EvtPDL::entries());
-  EvtModel &modelist=EvtModel::instance();
-  int i;
-
-  report(INFO,"EvtGen") << "In readDecayFile, reading:"<<dec_name.c_str()<<endl;
-  
-  ifstream fin;
-  
-  fin.open(dec_name.c_str());
-  if (!fin) {
-    report(ERROR,"EvtGen") << "Could not open "<<dec_name.c_str()<<endl;
-  }
-  fin.close();
-
-  EvtParser parser;
-  parser.read(dec_name);
-
-  int itok;
-
-  int hasend=0;
-
-  std::string token;
-
-  for(itok=0;itok<parser.getNToken();itok++){
-
-    token=parser.getToken(itok);
-    
-    if (token=="End") hasend=1;
-
-  }
-
-  if (!hasend){
-    report(ERROR,"EvtGen") << "Could not find an 'End' in "<<dec_name.c_str()<<endl;
-    report(ERROR,"EvtGen") << "Will terminate execution."<<endl;
-    ::abort();
-  }
-
-
-
-  std::string model,parent,sdaug;  
-
-  EvtId ipar;
-
-  int n_daugh;
-  EvtId daught[MAX_DAUG];
-  double brfr;
-
-  int itoken=0;
-
-  std::vector<EvtModelAlias> modelAliasList;
-
-  
-  do{
-
-    token=parser.getToken(itoken++);
-
-    //Easy way to turn off photos... Lange September 5, 2000
-    if (token=="noPhotos"){ 
-      EvtRadCorr::setNeverRadCorr();
-      if ( verbose )
-       report(INFO,"EvtGen") 
-         << "As requested, PHOTOS will be turned off."<<endl; 
-    }
-    else if (token=="yesPhotos"){ 
-      EvtRadCorr::setAlwaysRadCorr();
-      if ( verbose) 
-       report(INFO,"EvtGen") 
-         << "As requested, PHOTOS will be turned on for all decays."<<endl; 
-    }
-    else if (token=="normalPhotos"){ 
-      EvtRadCorr::setNormalRadCorr();
-      if ( verbose) 
-       report(INFO,"EvtGen") 
-         << "As requested, PHOTOS will be turned on only when requested."<<endl; 
-    }
-    else if (token=="Alias"){
-
-      std::string newname;
-      std::string oldname;
-
-      newname=parser.getToken(itoken++);
-      oldname=parser.getToken(itoken++);
-
-      EvtId id=EvtPDL::getId(oldname);
-
-      if (id==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") <<"Unknown particle name:"<<oldname.c_str()
-                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
-       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-       ::abort();
-      }
-
-      EvtPDL::alias(id,newname);
-      if ( _decaytable.size() < EvtPDL::entries() ) _decaytable.resize(EvtPDL::entries());
-
-    } else if (token=="ModelAlias"){
-      std::vector<std::string> modelArgList;
-
-      std::string aliasName=parser.getToken(itoken++);
-      std::string modelName=parser.getToken(itoken++);
-
-      std::string nameTemp;
-      do{
-       nameTemp=parser.getToken(itoken++);
-       if (nameTemp!=";") {
-         modelArgList.push_back(nameTemp);
-       }
-      }while(nameTemp!=";");
-      EvtModelAlias newAlias(aliasName,modelName,modelArgList);
-      modelAliasList.push_back(newAlias);
-    } else if (token=="ChargeConj"){
-
-      std::string aname;
-      std::string abarname;
-
-      aname=parser.getToken(itoken++);
-      abarname=parser.getToken(itoken++);
-
-      EvtId a=EvtPDL::getId(aname);
-      EvtId abar=EvtPDL::getId(abarname);
-
-      if (a==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") <<"Unknown particle name:"<<aname.c_str()
-                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
-       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-       ::abort();
-      }
-
-      if (abar==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") <<"Unknown particle name:"<<abarname.c_str()
-                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
-       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-       ::abort();
-      }
-
-
-      EvtPDL::aliasChgConj(a,abar);
-
-    } else if (modelist.isCommand(token)){
-
-      std::string cnfgstr;
-
-      cnfgstr=parser.getToken(itoken++);
-
-      modelist.storeCommand(token,cnfgstr);
-
-    } else if (token=="CDecay"){
-
-      std::string name;
-
-      name=parser.getToken(itoken++);
-      ipar=EvtPDL::getId(name);
-
-      if (ipar==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") <<"Unknown particle name:"<<name.c_str()
-                              <<" on line "
-                              <<parser.getLineofToken(itoken-1)<<endl;
-       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-       ::abort();
-      }
-
-      EvtId cipar=EvtPDL::chargeConj(ipar);
-
-      if (_decaytable[ipar.getAlias()].getNMode()!=0) {
-       if ( verbose )
-         report(DEBUG,"EvtGen") << 
-           "Redefined decay of "<<name.c_str()<<" in CDecay"<<endl;
-
-       _decaytable[ipar.getAlias()].removeDecay();
-      }
-
-      //take contents of cipar and conjugate and store in ipar
-      _decaytable[ipar.getAlias()].makeChargeConj(&_decaytable[cipar.getAlias()]);
-
-    } else if (token=="Define"){
-
-      std::string name;
-
-      name=parser.getToken(itoken++);
-      //      value=atof(parser.getToken(itoken++).c_str());
-
-      EvtSymTable::define(name,parser.getToken(itoken++));
-
-      //New code Lange April 10, 2001 - allow the user
-      //to change particle definitions of EXISTING
-      //particles on the fly
-    } else if (token=="Particle"){
-
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      if ( verbose )
-       report(INFO,"EvtGen") << pname.c_str() << endl;
-      //There should be at least the mass 
-      double newMass=atof(parser.getToken(itoken++).c_str());
-      EvtId thisPart = EvtPDL::getId(pname);
-      double newWidth=EvtPDL::getMeanMass(thisPart);
-      if ( parser.getNToken() > 3 ) newWidth=atof(parser.getToken(itoken++).c_str());
-
-      //Now make the change!
-      EvtPDL::reSetMass(thisPart, newMass);
-      EvtPDL::reSetWidth(thisPart, newWidth);
-
-      if (verbose )
-       report(INFO,"EvtGen") << "Changing particle properties of " <<
-         pname.c_str() << " Mass=" << newMass << " Width="<<newWidth<<endl;
-
-    } else if ( token=="ChangeMassMin") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      double tmass=atof(parser.getToken(itoken++).c_str());
-
-      EvtId thisPart = EvtPDL::getId(pname);
-      EvtPDL::reSetMassMin(thisPart,tmass);
-      if ( verbose )
-       report(DEBUG,"EvtGen") <<"Refined minimum mass for " << EvtPDL::name(thisPart).c_str() << " to be " << tmass << endl;
-
-    } else if ( token=="ChangeMassMax") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      double tmass=atof(parser.getToken(itoken++).c_str());
-      EvtId thisPart = EvtPDL::getId(pname);
-      EvtPDL::reSetMassMax(thisPart,tmass);
-      if ( verbose )
-       report(DEBUG,"EvtGen") <<"Refined maximum mass for " << EvtPDL::name(thisPart).c_str() << " to be " << tmass << endl;
-
-    } else if ( token=="IncludeBirthFactor") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      bool yesno=false;
-      if ( parser.getToken(itoken++).c_str()=="yes") yesno=true;
-      EvtId thisPart = EvtPDL::getId(pname);
-      EvtPDL::includeBirthFactor(thisPart,yesno);
-      if ( verbose ) {
-       if ( yesno ) report(DEBUG,"EvtGen") <<"Include birth factor for " << EvtPDL::name(thisPart).c_str() <<endl;
-       if ( !yesno ) report(DEBUG,"EvtGen") <<"No longer include birth factor for " << EvtPDL::name(thisPart).c_str() <<endl;
-      }
-
-    } else if ( token=="IncludeDecayFactor") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      bool yesno=false;
-      if ( parser.getToken(itoken++).c_str()=="yes") yesno=true;
-      EvtId thisPart = EvtPDL::getId(pname);
-      EvtPDL::includeDecayFactor(thisPart,yesno);
-      if ( verbose ) {
-       if ( yesno ) report(DEBUG,"EvtGen") <<"Include decay factor for " << EvtPDL::name(thisPart).c_str() <<endl;
-       if ( !yesno ) report(DEBUG,"EvtGen") <<"No longer include decay factor for " << EvtPDL::name(thisPart).c_str() <<endl;
-      }
-    } else if ( token=="LSNONRELBW") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      EvtId thisPart = EvtPDL::getId(pname);
-      std::string tstr="NONRELBW";
-      EvtPDL::changeLS(thisPart,tstr);
-      if ( verbose )
-       report(DEBUG,"EvtGen") <<"Change lineshape to non-rel BW for " << EvtPDL::name(thisPart).c_str() <<endl;
-    } else if ( token=="SP8LSFIX") {
-      //this was a bug, but preserve functionality as not to confuse people...
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      EvtId thisPart = EvtPDL::getId(pname);
-      EvtPDL::fixLSForSP8(thisPart);
-      if ( verbose )
-       report(DEBUG,"EvtGen") <<"Fixed lineshape for SP8 --from D.Lange,J.Smith " << EvtPDL::name(thisPart).c_str() <<endl;
-
-    } else if ( token=="SP6LSFIX") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      EvtId thisPart = EvtPDL::getId(pname);
-      EvtPDL::fixLSForSP8(thisPart);
-      if ( verbose ) 
-       report(DEBUG,"EvtGen") <<"Fixed lineshape for SP8 --from D.Lange,J.Smith " << EvtPDL::name(thisPart).c_str() <<endl;
-
-    } else if ( token=="LSFLAT") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      EvtId thisPart = EvtPDL::getId(pname);
-      std::string tstr="FLAT";
-      EvtPDL::changeLS(thisPart,tstr);
-      if (verbose) 
-       report(DEBUG,"EvtGen") <<"Change lineshape to flat for " << EvtPDL::name(thisPart).c_str() <<endl;
-    } else if ( token=="LSMANYDELTAFUNC") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      EvtId thisPart = EvtPDL::getId(pname);
-      std::string tstr="MANYDELTAFUNC";
-      EvtPDL::changeLS(thisPart,tstr);
-      if ( verbose )
-       report(DEBUG,"EvtGen") <<"Change lineshape to spikes for " << EvtPDL::name(thisPart).c_str() <<endl;
-
-    } else if ( token=="BlattWeisskopf") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      double tnum=atof(parser.getToken(itoken++).c_str());
-      EvtId thisPart = EvtPDL::getId(pname);
-      EvtPDL::reSetBlatt(thisPart,tnum);
-      if ( verbose )
-       report(DEBUG,"EvtGen") <<"Redefined Blatt-Weisskopf factor " << EvtPDL::name(thisPart).c_str() << " to be " << tnum << endl;
-    } else if ( token=="SetLineshapePW") {
-      std::string pname;
-      pname=parser.getToken(itoken++);
-      EvtId thisPart = EvtPDL::getId(pname);
-      std::string pnameD1=parser.getToken(itoken++);
-      EvtId thisD1 = EvtPDL::getId(pnameD1);
-      std::string pnameD2=parser.getToken(itoken++);
-      EvtId thisD2 = EvtPDL::getId(pnameD2);
-      int pw=atoi(parser.getToken(itoken++).c_str());
-      if ( verbose ) 
-       report(DEBUG,"EvtGen") <<"Redefined Partial wave for " << pname.c_str() << " to " << pnameD1.c_str() << " " << pnameD2.c_str() << " ("<<pw<<")"<<endl;
-      EvtPDL::setPWForDecay(thisPart,pw,thisD1,thisD2);
-      EvtPDL::setPWForBirthL(thisD1,pw,thisPart,thisD2);
-      EvtPDL::setPWForBirthL(thisD2,pw,thisPart,thisD1);
-
-
-    } else if (token=="Decay") {
-
-      std::string temp_fcn_new_model;
-
-      EvtDecayBase* temp_fcn_new;
-      
-      double brfrsum=0.0;
-
-  
-
-      parent=parser.getToken(itoken++);
-      ipar=EvtPDL::getId(parent);
-
-      if (ipar==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") <<"Unknown particle name:"<<parent.c_str()
-                              <<" on line "
-                              <<parser.getLineofToken(itoken-1)<<endl;
-       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-       ::abort();
-      }
-
-      if (_decaytable[ipar.getAlias()].getNMode()!=0) {
-       report(DEBUG,"EvtGen") <<"Redefined decay of "
-                              <<parent.c_str()<<endl;
-       _decaytable[ipar.getAlias()].removeDecay();
-      }
-
-
-      do{
-
-        token=parser.getToken(itoken++);
-
-        if (token!="Enddecay"){
-
-         i=0;
-         while (token.c_str()[i++]!=0){
-           if (isalpha(token.c_str()[i])){
-             report(ERROR,"EvtGen") << 
-               "Expected to find a branching fraction or Enddecay "<<
-               "but found:"<<token.c_str()<<" on line "<<
-               parser.getLineofToken(itoken-1)<<endl;
-             report(ERROR,"EvtGen") << "Possibly to few arguments to model "<<
-               "on previous line!"<<endl;
-             report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
-             ::abort();
-           }
-         }
-         
-          brfr=atof(token.c_str());
-
-         int isname=EvtPDL::getId(parser.getToken(itoken)).getId()>=0;
-          int ismodel=modelist.isModel(parser.getToken(itoken));
-
-          if (!(isname||ismodel)){
-           //see if this is an aliased model
-           for(size_t iAlias=0;iAlias<modelAliasList.size();iAlias++){
-             if ( modelAliasList[iAlias].matchAlias(parser.getToken(itoken)) ) {
-               ismodel=2;
-               break;
-             }
-           }
-         }
-
-          if (!(isname||ismodel)){
-
-           report(INFO,"EvtGen") << parser.getToken(itoken).c_str()
-            << " is neither a particle name nor "
-            << "the name of a model. "<<endl;
-           report(INFO,"EvtGen") << "It was encountered on line "<<
-             parser.getLineofToken(itoken)<<" of the decay file."<<endl;
-           report(INFO,"EvtGen") << "Please fix it. Thank you."<<endl;
-           report(INFO,"EvtGen") << "Be sure to check that the "
-            << "correct case has been used. \n";
-           report(INFO,"EvtGen") << "Terminating execution. \n";
-           ::abort();
-
-           itoken++;
-         }
-
-          n_daugh=0;
-
-         while(EvtPDL::getId(parser.getToken(itoken)).getId()>=0){
-            sdaug=parser.getToken(itoken++);
-            daught[n_daugh++]=EvtPDL::getId(sdaug);
-           if (daught[n_daugh-1]==EvtId(-1,-1)) {
-             report(ERROR,"EvtGen") <<"Unknown particle name:"<<sdaug.c_str()
-                                    <<" on line "<<parser.getLineofToken(itoken)<<endl;
-             report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-             ::abort();
-           }
-          }
-
-         
-          model=parser.getToken(itoken++);
-
-
-          int photos=0;
-          int verbose=0;
-          int summary=0;
-         
-         do{
-           if (model=="PHOTOS"){
-             photos=1;
-             model=parser.getToken(itoken++);
-           }
-           if (model=="VERBOSE"){
-             verbose=1;
-             model=parser.getToken(itoken++);
-           }
-           if (model=="SUMMARY"){
-             summary=1;
-             model=parser.getToken(itoken++);
-           }
-         }while(model=="PHOTOS"||
-                model=="VERBOSE"||
-                model=="SUMMARY");
-
-         //see if this is an aliased model
-         int foundAnAlias=-1;
-         for(size_t iAlias=0;iAlias<modelAliasList.size();iAlias++){
-           if ( modelAliasList[iAlias].matchAlias(model) ) {
-             foundAnAlias=iAlias;
-             break;
-           }
-         }
-
-         if ( foundAnAlias==-1 ) {
-           if(!modelist.isModel(model)){
-             report(ERROR,"EvtGen") << 
-               "Expected to find a model name,"<<
-               "found:"<<model.c_str()<<" on line "<<
-               parser.getLineofToken(itoken)<<endl;
-             report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
-             ::abort();
-           }
-         }
-         else{
-           model=modelAliasList[foundAnAlias].getName();
-         }
-
-         temp_fcn_new_model=model;
-         temp_fcn_new=modelist.getFcn(model);
-
-
-          if (photos){
-           temp_fcn_new->setPHOTOS();
-         }
-          if (verbose){
-           temp_fcn_new->setVerbose();
-         }
-          if (summary){
-           temp_fcn_new->setSummary();
-         }
-         
-
-         std::vector<std::string> temp_fcn_new_args;
-
-         std::string name;
-         int ierr;
-
-         if ( foundAnAlias==-1 ) {
-           do{
-             name=parser.getToken(itoken++);
-             if (name!=";") {
-               temp_fcn_new_args.push_back(EvtSymTable::get(name,ierr));
-               if (ierr) {
-                 report(ERROR,"EvtGen")
-                   <<"Reading arguments and found:"<<
-                   name.c_str()<<" on line:"<<
-                   parser.getLineofToken(itoken-1)<<endl;
-                 report(ERROR,"EvtGen") 
-                   << "Will terminate execution!"<<endl;
-                 ::abort();
-               }
-             }
-             //int isname=EvtPDL::getId(name).getId()>=0;
-             int ismodel=modelist.isModel(name);
-             if (ismodel) {
-               report(ERROR,"EvtGen")
-                 <<"Expected ';' but found:"<<
-                 name.c_str()<<" on line:"<<
-                 parser.getLineofToken(itoken-1)<<endl;
-               report(ERROR,"EvtGen") 
-                 << "Most probable error is omitted ';'."<<endl;
-               report(ERROR,"EvtGen") 
-                 << "Will terminate execution!"<<endl;
-               ::abort();
-             }
-           }while(name!=";");
-         }
-         else{
-           std::vector<std::string> copyMe=modelAliasList[foundAnAlias].getArgList();
-           temp_fcn_new_args=copyMe;
-           itoken++;
-         }
-         //Found one decay.
-
-         brfrsum+=brfr;
-
-         temp_fcn_new->saveDecayInfo(ipar,n_daugh,
-                                     daught,
-                                     temp_fcn_new_args.size(),
-                                     temp_fcn_new_args,
-                                     temp_fcn_new_model,
-                                     brfr);
-
-         double massmin=0.0;
-
-         //          for (i=0;i<n_daugh;i++){
-          for (i=0;i<temp_fcn_new->nRealDaughters();i++){
-           if ( EvtPDL::getMinMass(daught[i])>0.0001 ){
-              massmin+=EvtPDL::getMinMass(daught[i]);
-           } else {
-              massmin+=EvtPDL::getMeanMass(daught[i]);
-           }  
-         } 
-         
-         _decaytable[ipar.getAlias()].addMode(temp_fcn_new,brfrsum,massmin);
-         
-
-       }
-      } while(token!="Enddecay");      
-
-      _decaytable[ipar.getAlias()].finalize();
-
-    }
-    // Allow copying of decays from one particle to another; useful
-    // in combination with RemoveDecay
-    else if (token=="CopyDecay") {
-      std::string newname;
-      std::string oldname;
-      
-      newname=parser.getToken(itoken++);
-      oldname=parser.getToken(itoken++);
-      
-      EvtId newipar=EvtPDL::getId(newname);
-      EvtId oldipar=EvtPDL::getId(oldname);
-      
-      if (oldipar==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") <<"Unknown particle name:"<<oldname.c_str()
-                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
-       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-       ::abort();
-      }
-      if (newipar==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") <<"Unknown particle name:"<<newname.c_str()
-                              <<" on line "<<parser.getLineofToken(itoken)<<endl;
-       report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-       ::abort();
-      }
-      if (_decaytable[newipar.getAlias()].getNMode()!=0) {
-       report(DEBUG,"EvtGen") <<"Redefining decay of "
-                              <<newname<<endl;
-       _decaytable[newipar.getAlias()].removeDecay();
-      }
-      _decaytable[newipar.getAlias()] = _decaytable[oldipar.getAlias()];
-    }
-    // Enable decay deletion; intended primarily for aliases
-    // Peter Onyisi, March 2008
-    else if (token=="RemoveDecay") {
-      parent = parser.getToken(itoken++);
-      ipar = EvtPDL::getId(parent);
-      
-      if (ipar==EvtId(-1,-1)) {
-        report(ERROR,"EvtGen") <<"Unknown particle name:"<<parent.c_str()
-                               <<" on line "
-                               <<parser.getLineofToken(itoken-1)<<endl;
-        report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-        ::abort();
-      }
-       
-      if (_decaytable[ipar.getAlias()].getNMode()==0) {
-        report(DEBUG,"EvtGen") << "No decays to delete for "
-                               << parent.c_str() << endl;
-      } else {
-        report(DEBUG,"EvtGen") <<"Deleting selected decays of "
-                               <<parent.c_str()<<endl;
-      }
-      
-      do {
-        token = parser.getToken(itoken);
-        
-        if (token != "Enddecay") {
-         n_daugh = 0;
-         while (EvtPDL::getId(parser.getToken(itoken)).getId() >= 0) {
-           sdaug = parser.getToken(itoken++);
-           daught[n_daugh++] = EvtPDL::getId(sdaug);
-           if (daught[n_daugh-1]==EvtId(-1,-1)) {
-             report(ERROR,"EvtGen") <<"Unknown particle name:"<<sdaug.c_str()
-                                    <<" on line "<<parser.getLineofToken(itoken)<<endl;
-             report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
-             ::abort();
-           }
-         }
-         token = parser.getToken(itoken);
-         if (token != ";") {
-           report(ERROR,"EvtGen")
-             <<"Expected ';' but found:"<<
-             token <<" on line:"<<
-             parser.getLineofToken(itoken-1)<<endl;
-           report(ERROR,"EvtGen") 
-             << "Most probable error is omitted ';'."<<endl;
-           report(ERROR,"EvtGen") 
-             << "Will terminate execution!"<<endl;
-           ::abort();
-         }
-         token = parser.getToken(itoken++);
-         EvtDecayBase* temp_fcn_new = modelist.getFcn("PHSP");
-         std::vector<std::string> temp_fcn_new_args;
-         std::string temp_fcn_new_model("PHSP");
-         temp_fcn_new->saveDecayInfo(ipar, n_daugh,
-                                      daught,
-                                      0,
-                                      temp_fcn_new_args,
-                                      temp_fcn_new_model,
-                                      0.);
-         _decaytable[ipar.getAlias()].removeMode(temp_fcn_new);
-        }
-      } while (token != "Enddecay");
-      itoken++;
-    }
-    else if (token!="End"){
-
-      report(ERROR,"EvtGen") << "Found unknown command:'"<<token.c_str()<<"' on line "
-                            <<parser.getLineofToken(itoken)<<endl;
-      report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
-      ::abort();
-
-    }
-
-  } while ((token!="End")&&itoken!=parser.getNToken());
-
-  //Now we may need to reset the minimum mass for some particles????
-
-  for (size_t ii=0; ii<EvtPDL::entries(); ii++){
-    EvtId temp(ii,ii);
-    int nModTot=getNMode(ii);
-    //no decay modes
-    if ( nModTot == 0 ) continue;
-    //0 width?
-    if ( EvtPDL::getWidth(temp) < 0.0000001 ) continue;
-    int jj;
-    double minMass=EvtPDL::getMaxMass(temp);
-    for (jj=0; jj<nModTot; jj++) {
-      double tmass=_decaytable[ii].getDecay(jj).getMassMin();
-      if ( tmass< minMass) minMass=tmass;
-    }
-    if ( minMass > EvtPDL::getMinMass(temp) ) {
-      if ( verbose )
-       report(INFO,"EvtGen") << "Given allowed decays, resetting minMass " << EvtPDL::name(temp).c_str() << " " 
-                             << EvtPDL::getMinMass(temp) << " to " << minMass << endl;
-      EvtPDL::reSetMassMin(temp,minMass);
-    }
-  }
-}
-
-int  EvtDecayTable::findChannel(EvtId parent, std::string model, 
-                               int ndaug, EvtId *daugs, 
-                               int narg, std::string *args){
-
-   int i,j,right;
-   EvtId daugs_scratch[50];
-   int nmatch,k;
-
-   for(i=0;i<_decaytable[parent.getAlias()].getNMode();i++){
-
-     right=1;
-
-     right=right&&model==_decaytable[parent.getAlias()].
-                   getDecay(i).getDecayModel()->getModelName();
-     right=right&&(ndaug==_decaytable[parent.getAlias()].
-            getDecay(i).getDecayModel()->getNDaug());
-     right=right&&(narg==_decaytable[parent.getAlias()].
-            getDecay(i).getDecayModel()->getNArg());
-
-     if ( right ){
-
-       
-
-       for(j=0;j<ndaug;j++){
-        daugs_scratch[j]=daugs[j];
-       }
-
-       nmatch=0;
-
-       for(j=0;j<_decaytable[parent.getAlias()].
-            getDecay(i).getDecayModel()->getNDaug();j++){
-
-         for(k=0;k<ndaug;k++){
-          if (daugs_scratch[k]==_decaytable[parent.getAlias()].
-              getDecay(i).getDecayModel()->getDaug(j)){
-             daugs_scratch[k]=EvtId(-1,-1);
-             nmatch++;
-            break;
-          }
-        }
-       } 
-
-       right=right&&(nmatch==ndaug);
-
-       for(j=0;j<_decaytable[parent.getAlias()].
-            getDecay(i).getDecayModel()->getNArg();j++){
-        right=right&&(args[j]==_decaytable[parent.getAlias()].
-                getDecay(i).getDecayModel()->getArgStr(j));
-       } 
-     }
-     if (right) return i;
-   }
-   return -1;
-}
-
-int  EvtDecayTable::inChannelList(EvtId parent, int ndaug, EvtId *daugs){
-
-   int i,j,k;
-   EvtId daugs_scratch[MAX_DAUG];
-
-   int dsum=0;
-   for(i=0;i<ndaug;i++){
-     dsum+=daugs[i].getAlias();
-   }
-
-   int nmatch;
-
-   int ipar=parent.getAlias();
-
-   int nmode=_decaytable[ipar].getNMode();
-
-   for(i=0;i<nmode;i++){
-
-     EvtDecayBase* thedecaymodel=_decaytable[ipar].getDecay(i).getDecayModel();
-
-     if (thedecaymodel->getDSum()==dsum){
-
-       int nd=thedecaymodel->getNDaug();
-
-       if (ndaug==nd){
-        for(j=0;j<ndaug;j++){
-          daugs_scratch[j]=daugs[j];
-        }
-        nmatch=0;
-        for(j=0;j<nd;j++){
-          for(k=0;k<ndaug;k++){
-            if (EvtId(daugs_scratch[k])==thedecaymodel->getDaug(j)){
-              daugs_scratch[k]=EvtId(-1,-1);
-              nmatch++;
-              break;
-            }
-          }
-        } 
-         if ((nmatch==ndaug)&&
-             (!
-              ((thedecaymodel->getModelName()=="JETSET")||
-               (thedecaymodel->getModelName()=="PYTHIA")))){
-           return i;
-         }
-       }
-     }
-   }
-
-   return -1;
-}
-   
-      
index f7fb0ad30456a68b6b18981dd17322f261fe4b9c..f3d79bc7e7ba302aa5a47d92e0d2d429da745711 100644 (file)
 
 class EvtId;
 
-
-typedef EvtDecayBase* EvtDecayBasePtr;
-
 class EvtDecayTable{
 
 public:
 
-  static int getNMode(int ipar);
+  static EvtDecayTable* getInstance();
+
+  int getNMode(int ipar);
 
-  static EvtDecayBase* getDecay(int ipar, int imode);
+  EvtDecayBase* getDecay(int ipar, int imode);
 
-  static void readDecayFile(const std::string dec_name, bool verbose=true);
+  void readDecayFile(const std::string dec_name, bool verbose=true);
+  void readXMLDecayFile(const std::string dec_name, bool verbose=true);
 
-  static int findChannel(EvtId parent,std::string model,int ndaug, 
-                        EvtId *daugs,
-                        int narg, std::string *args);
+  bool stringToBoolean(std::string valStr);
+  void checkParticle(std::string particle);
+
+  int findChannel(EvtId parent,std::string model,int ndaug, 
+                 EvtId *daugs,
+                 int narg, std::string *args);
   
-  static int inChannelList(EvtId parent, int ndaug, EvtId *daugs);
+  int inChannelList(EvtId parent, int ndaug, EvtId *daugs);
+
+  EvtDecayBase *getDecayFunc(EvtParticle *p);
+
+  void printSummary();
 
-  static EvtDecayBase *getDecayFunc(EvtParticle *p);
+  void checkConj();
 
-  static void printSummary();
+  std::vector<EvtParticleDecayList> getDecayTable() {return _decaytable;};
 
-  static void checkConj();
+  EvtDecayBase* findDecayModel(int aliasInt, int modeInt);
+  EvtDecayBase* findDecayModel(EvtId id, int modeInt);
 
-  static const std::vector<EvtParticleDecayList> & decaytable() {return _decaytable;};
+  bool hasPythia(int aliasInt);
+  bool hasPythia(EvtId id);
+
+  int getNModes(int aliasInt);
+  int getNModes(EvtId id);
+
+  std::vector<std::string> splitString(std::string& theString, 
+                                      std::string& splitter);
+
+protected:  
+
+  EvtDecayTable();
+  ~EvtDecayTable();
 
 private:
 
-  static std::vector<EvtParticleDecayList> _decaytable;
+  std::vector<EvtParticleDecayList> _decaytable;
+
+  EvtDecayTable(const EvtDecayTable&) {};
+  //EvtDecayTable& operator=(const EvtDecayTable&) {};
 
 };
 
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtDiLog.cxx
rename to TEvtGen/EvtGenBase/EvtDiLog.cpp
index cda0708ccd673650984d3fb02b30a77930f5d652..1cb30d045321e2abe83a78c409999b6460de8c37 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: EvtDiLog.cc,v 1.1 2009/02/18 21:21:33 ryd Exp $
+// $Id: EvtDiLog.cpp,v 1.3 2009-03-16 15:52:42 robbep Exp $
 // Include files
 
 // local
index 46b335539be2e08230f9744ca8ee6c90fb0b26f9..19d789cace501856a7b5e7cd4ace9bb6cfef8a38 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: EvtDiLog.hh,v 1.1 2009/02/18 21:21:33 ryd Exp $
+// $Id: EvtDiLog.hh,v 1.3 2009-03-16 16:44:33 robbep Exp $
 #ifndef EVTGENBASE_EVTDILOG_HH 
 #define EVTGENBASE_EVTDILOG_HH 1
 
similarity index 89%
rename from TEvtGen/EvtGenBase/EvtDiracParticle.cxx
rename to TEvtGen/EvtGenBase/EvtDiracParticle.cpp
index 9b97025108545bf4e114b5612ea9e82ea043c95c..c1b0feeb3218091bf8afa76a63a92c64aeb9812b 100644 (file)
@@ -128,11 +128,11 @@ EvtSpinDensity EvtDiracParticle::rotateToHelicityBasis() const{
       
   for (int i=0; i<2; i++) {
     if (EvtPDL::getStdHep(getId())>0){  
-      R.set(0,i,(EvtComplex)(spplus*_spinorRest[i])/sqmt2);
-      R.set(1,i,(EvtComplex)(spminus*_spinorRest[i])/sqmt2);
+      R.set(0,i,(spplus*_spinorRest[i])/sqmt2);
+      R.set(1,i,(spminus*_spinorRest[i])/sqmt2);
     } else {
-      R.set(0,i,(EvtComplex)(_spinorRest[i]*spplus)/sqmt2);
-      R.set(1,i,(EvtComplex)(_spinorRest[i]*spminus)/sqmt2);
+      R.set(0,i,(_spinorRest[i]*spplus)/sqmt2);
+      R.set(1,i,(_spinorRest[i]*spminus)/sqmt2);
     } 
   }
 
@@ -167,11 +167,11 @@ EvtSpinDensity EvtDiracParticle::rotateToHelicityBasis(double alpha,
       
   for (int i=0; i<2; i++) {
     if (EvtPDL::getStdHep(getId())>0){  
-      R.set(0,i,(EvtComplex)(spplus*_spinorRest[i])/sqmt2);
-      R.set(1,i,(EvtComplex)(spminus*_spinorRest[i])/sqmt2);
+      R.set(0,i,(spplus*_spinorRest[i])/sqmt2);
+      R.set(1,i,(spminus*_spinorRest[i])/sqmt2);
     } else {
-      R.set(0,i,(EvtComplex)(_spinorRest[i]*spplus)/sqmt2);
-      R.set(1,i,(EvtComplex)(_spinorRest[i]*spminus)/sqmt2);
+      R.set(0,i,(_spinorRest[i]*spplus)/sqmt2);
+      R.set(1,i,(_spinorRest[i]*spminus)/sqmt2);
     } 
   }
 
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtDiracSpinor.cxx
rename to TEvtGen/EvtGenBase/EvtDiracSpinor.cpp
index 6f091dcb3804e4a7d67c5f2f584406288194f526..7c269a020c257c3f71c8b6567ab5a689346f801c 100644 (file)
@@ -118,9 +118,10 @@ void EvtDiracSpinor::applyBoostTo(const EvtVector3R& boost) {
     return;
   }
 
-  assert(b2<1.0);
+  //assert(b2<1.0);
 
-  gamma=1.0/sqrt(1-b2);
+  gamma=1.0;
+  if (b2 < 1.0) {gamma = 1.0/sqrt(1.0-b2);}
   
   f1=sqrt((gamma+1.0)/2.0);
   f2=f1*gamma/(gamma+1.0);
@@ -338,21 +339,6 @@ EvtDiracSpinor operator*(const EvtComplex& c, const EvtDiracSpinor& d) {
      return result;
  }
 
-
-EvtComplex operator*(const EvtDiracSpinor& d,const EvtDiracSpinor& dp){
-
-  int i;
-  EvtComplex temp;
-
-  temp=EvtComplex(0.0,0.0);
-
-  for(i=0;i<4;i++){
-    temp+=::conj(d.get_spinor(i))*dp.get_spinor(i);
-  }
-  return temp;
-}
-
-
 EvtDiracSpinor EvtDiracSpinor::adjoint() const
 {
     EvtDiracSpinor d = this->conj(); // first conjugate, then multiply with gamma0
@@ -365,3 +351,16 @@ EvtDiracSpinor EvtDiracSpinor::adjoint() const
 
     return result;
 }
+
+EvtComplex operator*(const EvtDiracSpinor& d,const EvtDiracSpinor& dp){
+
+  int i;
+  EvtComplex temp;
+  
+  temp=EvtComplex(0.0,0.0);
+  
+  for(i=0;i<4;i++){
+    temp += conj( d.get_spinor(i) ) * dp.get_spinor( i ) ;
+  }
+  return temp;
+}
index 3477925fd06d4025cc4c17fd92eff6ef155d7f68..251732e26c5e3dc5cc4e85fd9d67141a59e1d0d1 100644 (file)
@@ -56,8 +56,9 @@ class EvtDiracSpinor {
                                  const EvtDiracSpinor& u2); 
   friend EvtDiracSpinor operator*(const EvtComplex& c,
                                  const EvtDiracSpinor& d);
-  friend EvtComplex operator*(const EvtDiracSpinor& d, const EvtDiracSpinor& dp);
 
+  friend EvtComplex operator*(const EvtDiracSpinor& d ,
+                              const EvtDiracSpinor& dp ) ;
  
   friend std::ostream& operator<<(std::ostream& s, const EvtDiracSpinor& c);  
 
diff --git a/TEvtGen/EvtGenBase/EvtExtGeneratorCommandsTable.cpp b/TEvtGen/EvtGenBase/EvtExtGeneratorCommandsTable.cpp
new file mode 100644 (file)
index 0000000..456ef41
--- /dev/null
@@ -0,0 +1,40 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2012      University of Warwick, UK
+//
+// Module: EvtExtGeneratorCommandsTable
+//
+// Description:  Table of commands to pass to external generators
+//
+// Modification history:
+//
+//    Daniel Craik       March 2012            Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
+
+EvtExtGeneratorCommandsTable::EvtExtGeneratorCommandsTable() {
+  _commandMap.clear();
+}
+
+EvtExtGeneratorCommandsTable::~EvtExtGeneratorCommandsTable() {
+  _commandMap.clear();
+}
+
+EvtExtGeneratorCommandsTable* EvtExtGeneratorCommandsTable::getInstance() {
+
+  static EvtExtGeneratorCommandsTable* theCommandMap = 0;
+
+  if (theCommandMap == 0) {
+    theCommandMap = new EvtExtGeneratorCommandsTable();
+  }
+
+  return theCommandMap;
+
+}
diff --git a/TEvtGen/EvtGenBase/EvtExtGeneratorCommandsTable.hh b/TEvtGen/EvtGenBase/EvtExtGeneratorCommandsTable.hh
new file mode 100644 (file)
index 0000000..7031622
--- /dev/null
@@ -0,0 +1,53 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2012      University of Warwick, UK
+//
+// Module: EvtExtGeneratorCommandsTable
+//
+// Description:  Table of commands to pass to external generators
+//
+// Modification history:
+//
+//    Daniel Craik       March 2012            Module created
+//
+//------------------------------------------------------------------------
+
+#include <map>
+#include <vector>
+#include <string>
+
+#ifndef EVTEXTGENERATORCOMMANDSTABLE_HH
+#define EVTEXTGENERATORCOMMANDSTABLE_HH
+
+typedef std::map<std::string, std::string> Command;
+typedef std::vector<Command> GeneratorCommands;
+typedef std::map<std::string, GeneratorCommands > GlobalCommandMap;
+
+class EvtExtGeneratorCommandsTable {
+
+public:
+
+  static EvtExtGeneratorCommandsTable* getInstance();
+
+  void addCommand(std::string extGenerator, Command command) { _commandMap[extGenerator].push_back(command); }
+  const GeneratorCommands& getCommands(std::string extGenerator) { return _commandMap[extGenerator]; }
+
+protected:
+
+  EvtExtGeneratorCommandsTable();
+  ~EvtExtGeneratorCommandsTable();
+
+private:
+
+  GlobalCommandMap _commandMap;
+
+  EvtExtGeneratorCommandsTable(const EvtExtGeneratorCommandsTable&) {};
+
+};
+
+#endif
index 4b2a15a4ce78f73fd42c7c5e2b76bc047ccb0298..b2628fb9f93657f90250f1800bbeafa7694fa6d1 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtFlatAmp.hh,v 1.4 2009/02/18 03:31:38 ryd Exp $
+ *    File: $Id: EvtFlatAmp.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtGammaMatrix.cxx
rename to TEvtGen/EvtGenBase/EvtGammaMatrix.cpp
index 118e3846afc8ceac98821b443d1bcc9385e54165..2d84f9f6fa60a1c3dadbcef3bee96faaf039ba2b 100644 (file)
@@ -613,22 +613,7 @@ EvtDiracSpinor operator*(const EvtGammaMatrix& g,const EvtDiracSpinor& d){
    }
    
    return temp;
-}  
-
-/*
-EvtComplex operator*(const EvtDiracSpinor& d,const EvtDiracSpinor& dp){
-
-  int i;
-  EvtComplex temp;
-  
-  temp=EvtComplex(0.0,0.0);
-  
-  for(i=0;i<4;i++){
-    temp+=::conj(d.get_spinor(i))*dp.get_spinor(i);
-  }
-  return temp;
-}  
-*/
+}
 
 // upper index
 const EvtGammaMatrix& EvtGammaMatrix::sigmaUpper(unsigned int mu, unsigned int nu)
@@ -698,7 +683,18 @@ const EvtGammaMatrix& EvtGammaMatrix::sigmaLower(unsigned int mu, unsigned int n
 }
 
 
-EvtGammaMatrix slash(const EvtVector4C& p)
+EvtGammaMatrix EvtGenFunctions::slash(const EvtVector4C& p)
+{
+    return EvtGammaMatrix::g0()*p.get(0) + 
+      EvtGammaMatrix::g1()*p.get(1) + 
+      EvtGammaMatrix::g2()*p.get(2) + 
+      EvtGammaMatrix::g3()*p.get(3);
+}
+
+EvtGammaMatrix EvtGenFunctions::slash(const EvtVector4R& p)
 {
-    return EvtGammaMatrix::g0()*p.get(0) + EvtGammaMatrix::g1()*p.get(1) + EvtGammaMatrix::g2()*p.get(2) + EvtGammaMatrix::g3()*p.get(3);
+  return EvtGammaMatrix::g0()*p.get(0) + 
+    EvtGammaMatrix::g1()*p.get(1) + 
+    EvtGammaMatrix::g2()*p.get(2) + 
+    EvtGammaMatrix::g3()*p.get(3);
 }
index 9a21e4575deb9919f01f603cc80c453cea4e3841..2d7cc11b955f70d817ecbacf71008801616b4c5d 100644 (file)
 class EvtGammaMatrix;
 class EvtVector4C;
 
-EvtGammaMatrix slash(const EvtVector4C& p);
+namespace EvtGenFunctions {
+  // slash or Feynman slash a 4-vector
+  EvtGammaMatrix slash( const EvtVector4C& p ) ;
+  EvtGammaMatrix slash( const EvtVector4R& p ) ;
+};
 
 class EvtGammaMatrix {
 
@@ -37,14 +41,11 @@ class EvtGammaMatrix {
     friend EvtGammaMatrix operator*(const EvtGammaMatrix& g, const EvtComplex& c);
     friend EvtGammaMatrix operator/(const EvtGammaMatrix& g, const double d);
     friend EvtDiracSpinor operator*(const EvtGammaMatrix& g,const EvtDiracSpinor& d);
-    //friend EvtComplex operator*(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
     friend EvtGammaMatrix operator+(const EvtGammaMatrix& g1,const EvtGammaMatrix& g2);
     friend EvtGammaMatrix operator-(const EvtGammaMatrix& g1,const EvtGammaMatrix& g2);
     friend EvtGammaMatrix operator*(const EvtGammaMatrix& g1,const EvtGammaMatrix& g2);
     friend std::ostream& operator<<(std::ostream& s, const EvtGammaMatrix& v);
     friend EvtDiracSpinor EvtDiracSpinor::adjoint() const;
-    // slash or Feynman slash a 4-vector
-    friend EvtGammaMatrix slash(const EvtVector4C& p);
 
     
 public:
@@ -96,7 +97,7 @@ inline EvtGammaMatrix operator*(const EvtGammaMatrix& g1,const EvtGammaMatrix& g
   return EvtGammaMatrix(g1)*=g2;
 }
 
-inline EvtGammaMatrix operator/(const EvtGammaMatrix& g, double d)
+inline EvtGammaMatrix operator/(const EvtGammaMatrix& g, const double d)
 {
     return g * EvtComplex(1/d,0);
 }
diff --git a/TEvtGen/EvtGenBase/EvtGenBaseLinkDef.h b/TEvtGen/EvtGenBase/EvtGenBaseLinkDef.h
deleted file mode 100644 (file)
index 832fad5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#endif
-
diff --git a/TEvtGen/EvtGenBase/EvtGenBaseLinkDefOLD.h b/TEvtGen/EvtGenBase/EvtGenBaseLinkDefOLD.h
deleted file mode 100644 (file)
index 7502ebe..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ class Evt3Rank3C+;
-#pragma link C++ class EvtAbsLineShape+;
-#pragma link C++ class EvtAmp+;
-#pragma link C++ class EvtAmpIndex+;
-#pragma link C++ class EvtAmpSubIndex+;
-#pragma link C++ class EvtBlattWeisskopf+;
-#pragma link C++ class EvtBreitWignerPdf+;
-#pragma link C++ class EvtCGCoefSingle+;
-#pragma link C++ class EvtCPUtil+;
-#pragma link C++ class EvtComplex+;
-#pragma link C++ class EvtConst+;
-#pragma link C++ class EvtCyclic3+;
-#pragma link C++ class EvtDalitzCoord+;
-#pragma link C++ class EvtDalitzFlatPdf+;
-#pragma link C++ class EvtDalitzPlot+;
-#pragma link C++ class EvtDalitzPoint+;
-#pragma link C++ class EvtDalitzResPdf+;
-#pragma link C++ class EvtDalitzReso+;
-#pragma link C++ class EvtDecayAmp+;
-#pragma link C++ class EvtDecayBase+;
-#pragma link C++ class EvtDecayIncoherent+;
-#pragma link C++ class EvtDecayMode+;
-#pragma link C++ class EvtDecayParm+;
-#pragma link C++ class EvtDecayProb+;
-#pragma link C++ class EvtDecayTable+;
-#pragma link C++ class EvtDiLog+;
-#pragma link C++ class EvtDiracParticle+;
-#pragma link C++ class EvtDiracSpinor+;
-#pragma link C++ class EvtEvalHelAmp+;
-#pragma link C++ class EvtFlatLineShape+;
-#pragma link C++ class EvtFlatte+;
-#pragma link C++ class EvtGammaMatrix+;
-#pragma link C++ class EvtGenKine+;
-#pragma link C++ class EvtHighSpinParticle+;
-#pragma link C++ class EvtId+;
-#pragma link C++ class EvtIdSet+;
-#pragma link C++ class EvtIntegPdf1D+;
-#pragma link C++ class EvtIntervalFlatPdf+;
-//#pragma link C++ class EvtKine+;
-#pragma link C++ class EvtLASSAmp+;
-#pragma link C++ class EvtMBreitWigner+;
-#pragma link C++ class EvtMHelAmp+;
-#pragma link C++ class EvtMNode+;
-#pragma link C++ class EvtMParticle+;
-#pragma link C++ class EvtMRes+;
-#pragma link C++ class EvtMTree+;
-#pragma link C++ class EvtMTrivialLS+;
-#pragma link C++ class EvtManyDeltaFuncLineShape+;
-#pragma link C++ class EvtMassAmp+;
-#pragma link C++ class EvtModel+;
-#pragma link C++ class EvtModelAlias+;
-#pragma link C++ class EvtMultiChannelParser+;
-#pragma link C++ class EvtNeutrinoParticle+;
-#pragma link C++ class EvtNonresonantAmp+;
-#pragma link C++ class EvtOrthogVector+;
-#pragma link C++ class EvtPDL+;
-#pragma link C++ class EvtParser+;
-#pragma link C++ class EvtPartProp+;
-#pragma link C++ class EvtParticle+;
-#pragma link C++ class EvtParticleDecay+;
-#pragma link C++ class EvtParticleDecayList+;
-#pragma link C++ class EvtParticleFactory+;
-#pragma link C++ class EvtPhotonParticle+;
-#pragma link C++ class EvtPoint1D+;
-#pragma link C++ class EvtPropBreitWigner+;
-#pragma link C++ class EvtPropBreitWignerRel+;
-#pragma link C++ class EvtPropFlatte+;
-#pragma link C++ class EvtPropGounarisSakurai+;
-#pragma link C++ class EvtPto3PAmp+;
-#pragma link C++ class EvtPto3PAmpFactory+;
-#pragma link C++ class EvtPto3PAmpSmpResolution+;
-#pragma link C++ class EvtRadCorr+;
-//#pragma link C++ class EvtRanFor+;
-#pragma link C++ class EvtRandom+;
-//#pragma link C++ class EvtRanf+;
-#pragma link C++ class EvtRaritaSchwinger+;
-#pragma link C++ class EvtRaritaSchwingerParticle+;
-#pragma link C++ class EvtRelBreitWignerBarrierFact+;
-//#pragma link C++ class EvtReport+;
-#pragma link C++ class EvtResonance+;
-#pragma link C++ class EvtResonance2+;
-#pragma link C++ class EvtScalarParticle+;
-#pragma link C++ class EvtSecondary+;
-#pragma link C++ class EvtSemiLeptonicAmp+;
-#pragma link C++ class EvtSemiLeptonicBaryonAmp+;
-#pragma link C++ class EvtSemiLeptonicScalarAmp+;
-#pragma link C++ class EvtSemiLeptonicTensorAmp+;
-#pragma link C++ class EvtSemiLeptonicVectorAmp+;
-#pragma link C++ class EvtSimpleRandomEngine+;
-#pragma link C++ class EvtSpinAmp+;
-#pragma link C++ class EvtSpinDensity+;
-#pragma link C++ class EvtSpinType+;
-#pragma link C++ class EvtStdHep+;
-#pragma link C++ class EvtStringParticle+;
-#pragma link C++ class EvtSymTable+;
-#pragma link C++ class EvtTensor3C+;
-#pragma link C++ class EvtTensor4C+;
-#pragma link C++ class EvtTensorParticle+;
-#pragma link C++ class EvtTwoBodyKine+;
-#pragma link C++ class EvtTwoBodyVertex+;
-#pragma link C++ class EvtValError+;
-#pragma link C++ class EvtVector3C+;
-#pragma link C++ class EvtVector3R+;
-#pragma link C++ class EvtVector4C+;
-#pragma link C++ class EvtVector4R+;
-#pragma link C++ class EvtVectorParticle+;
-#pragma link C++ class EvtdFunction+;
-#pragma link C++ class EvtdFunctionSingle+;
-
-#endif
-
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtGenKine.cxx
rename to TEvtGen/EvtGenBase/EvtGenKine.cpp
index 26fb98542b37d06ca204581f8412865dbc1142a9..86639bf4beb59f443b506f0da11ea2732b68c504 100644 (file)
@@ -66,7 +66,10 @@ double EvtGenKine::PhaseSpace( int ndaug, double mass[30], EvtVector4R p4[30],
      energy = ( mp*mp + mass[0]*mass[0] -
               mass[1]*mass[1] ) / ( 2.0 * mp );
 
-     p3 = sqrt( energy*energy - mass[0]*mass[0] );
+     p3 = 0.0;
+     if (energy > mass[0]) {
+       p3 = sqrt( energy*energy - mass[0]*mass[0] );
+     }
 
      p4[0].set( energy, 0.0, 0.0, p3 );
 
@@ -88,7 +91,7 @@ double EvtGenKine::PhaseSpace( int ndaug, double mass[30], EvtVector4R p4[30],
   if ( ndaug != 2 ) {
 
     double wtmax=0.0;
-    double pm[5][30],to[4],pmin,pmax,psum,rnd[30];
+    double pm[5][30],pmin,pmax,psum,rnd[30];
     double ran,wt,pa,costh,sinth,phi,p[4][30],be[4],bep,temp;
     int i,il,ilr,i1,il1u,il1,il2r,ilu;
     int il2=0;
@@ -104,11 +107,6 @@ double EvtGenKine::PhaseSpace( int ndaug, double mass[30], EvtVector4R p4[30],
      pm[3][0]=0.0;
      pm[4][0]=mp;
 
-     to[0]=mp;
-     to[1]=0.0;
-     to[2]=0.0;
-     to[3]=0.0;
-
      psum=0.0;
      for(i=1;i<ndaug+1;i++){
        psum=psum+mass[i-1];
diff --git a/TEvtGen/EvtGenBase/EvtHepMCEvent.cpp b/TEvtGen/EvtGenBase/EvtHepMCEvent.cpp
new file mode 100644 (file)
index 0000000..308e006
--- /dev/null
@@ -0,0 +1,198 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtHepMCEvent
+//
+// Description: Create an HepMC::GenEvent for the complete EvtParticle 
+//              decay tree.
+//
+// Modification history:
+//
+//    John Back       June 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtHepMCEvent.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPDL.hh"
+
+#include "HepMC/Units.h"
+
+EvtHepMCEvent::EvtHepMCEvent() : 
+  _theEvent(0), 
+  _translation(0.0, 0.0, 0.0, 0.0)
+{
+}
+
+EvtHepMCEvent::~EvtHepMCEvent() {
+  this->deleteEvent();
+}
+
+void EvtHepMCEvent::deleteEvent() {
+
+  if (_theEvent != 0) {
+    _theEvent->clear();
+    delete _theEvent; _theEvent = 0;
+  }
+
+}
+
+void EvtHepMCEvent::constructEvent(EvtParticle* baseParticle) {
+
+  EvtVector4R origin(0.0, 0.0, 0.0, 0.0);
+  this->constructEvent(baseParticle, origin);
+
+}
+
+void EvtHepMCEvent::constructEvent(EvtParticle* baseParticle, EvtVector4R& translation) {
+
+  // This class does not take ownership of the base particle pointer.
+  // Rather, it uses the base particle to construct the event.
+
+  this->deleteEvent();
+  if (baseParticle == 0) {return;}
+
+  _theEvent = new HepMC::GenEvent(HepMC::Units::GEV, HepMC::Units::MM);
+  _translation = translation;
+
+  // Use the recursive function addVertex to add a vertex with incoming/outgoing
+  // particles. Adds a new vertex for any EvtParticles with decay daughters.
+  // All particles are in the rest frame of the base particle ("lab frame").
+
+  HepMC::GenParticle* hepMCGenParticle = this->createGenParticle(baseParticle, EvtHepMCEvent::LAB);
+
+  this->addVertex(baseParticle, hepMCGenParticle);
+
+}
+
+HepMC::GenParticle* EvtHepMCEvent::createGenParticle(EvtParticle* theParticle, int frameType) {
+
+  // Create an HepMC GenParticle, with the 4-momenta in the frame given by the frameType integer
+  HepMC::GenParticle* genParticle = 0;
+
+  if (theParticle != 0) {
+
+    // Set the particle status integer to either stable or decayed
+    int status(EvtHepMCEvent::STABLE);
+    int nDaug = theParticle->getNDaug();
+    if (nDaug > 0) {status = EvtHepMCEvent::DECAYED;}
+
+    // Get the 4-momentum (E, px, py, pz) for the EvtParticle.
+    EvtVector4R p4(0.0, 0.0, 0.0, 0.0);
+
+    if (frameType == EvtHepMCEvent::RESTFRAME) {
+      p4 = theParticle->getP4Restframe();
+    } else if (frameType == EvtHepMCEvent::LAB) {
+      p4 = theParticle->getP4Lab();
+    } else {
+      p4 = theParticle->getP4();
+    }
+  
+    // Convert this to the HepMC 4-momentum
+    double E = p4.get(0);
+    double px = p4.get(1);
+    double py = p4.get(2);
+    double pz = p4.get(3);
+
+    HepMC::FourVector hepMC_p4(px, py, pz, E);
+
+    // Get the particle PDG integer id
+    int PDGInt = EvtPDL::getStdHep(theParticle->getId());
+
+    genParticle = new HepMC::GenParticle(hepMC_p4, PDGInt, status);
+
+  }
+
+  return genParticle;
+
+}
+
+void EvtHepMCEvent::addVertex(EvtParticle* inEvtParticle, HepMC::GenParticle* inGenParticle) {
+
+  // This is a recursive function that adds GenVertices to the GenEvent for
+  // the incoming EvtParticle and its daughters. We use two separate
+  // pointers for the EvtParticle and GenParticle information: the former
+  // to obtain the PDGId, 4-momenta, daughter and vertex positions, the latter to
+  // set the incoming particle to the vertex. Note that the outgoing particle for
+  // one vertex might be the incoming particle for another vertex - this needs to
+  // be the same GenParticle pointer, hence the reason for using it as a 2nd argument
+  // in this function.
+
+  if (_theEvent == 0 || inEvtParticle == 0 || inGenParticle == 0) {return;}
+
+  // Create the decay vertex
+  HepMC::FourVector vtxCoord = this->getVertexCoord(inEvtParticle);
+  HepMC::GenVertex* theVertex = new HepMC::GenVertex(vtxCoord);
+
+  // Add the vertex to the event
+  _theEvent->add_vertex(theVertex);
+
+  // Set the incoming particle
+  theVertex->add_particle_in(inGenParticle);
+
+  // Set the outgoing particles (decay products)
+  int nDaug = inEvtParticle->getNDaug();
+  int iDaug(0);
+  // Loop over the daughters
+  for (iDaug = 0; iDaug < nDaug; iDaug++) {
+
+    EvtParticle* evtDaughter = inEvtParticle->getDaug(iDaug);
+    HepMC::GenParticle* genDaughter = this->createGenParticle(evtDaughter, EvtHepMCEvent::LAB);
+
+    if (genDaughter != 0) {
+
+      // Add a new GenParticle (outgoing) particle daughter to the vertex
+      theVertex->add_particle_out(genDaughter);
+
+      // Find out if the daughter also has decay products.
+      // If so, recursively run this function again.
+      int nDaugProducts = evtDaughter->getNDaug();
+
+      if (nDaugProducts > 0) {
+         
+       // Recursively process daughter particles and add their vertices to the event
+       this->addVertex(evtDaughter, genDaughter);
+
+      } // Have daughter products
+
+    } // hepMCDaughter != 0
+
+  } // Loop over daughters
+
+}
+
+HepMC::FourVector EvtHepMCEvent::getVertexCoord(EvtParticle* theParticle) {
+
+  HepMC::FourVector vertexCoord(0.0, 0.0, 0.0, 0.0);
+
+  if (theParticle != 0 && theParticle->getNDaug() != 0) {
+
+    // Get the position (t,x,y,z) of the EvtParticle, offset by the translation vector.
+    // This position will be the point where the particle decays. So we ask
+    // the position of the (1st) daughter particle.
+    EvtParticle* daugParticle = theParticle->getDaug(0);
+    
+    if (daugParticle != 0) {
+
+      EvtVector4R vtxPosition = daugParticle->get4Pos() + _translation;
+
+      // Create the HepMC 4 vector of the position (x,y,z,t)
+      vertexCoord.setX(vtxPosition.get(1));
+      vertexCoord.setY(vtxPosition.get(2));
+      vertexCoord.setZ(vtxPosition.get(3));
+      vertexCoord.setT(vtxPosition.get(0));
+
+    }
+
+  }
+
+  return vertexCoord;
+
+}
diff --git a/TEvtGen/EvtGenBase/EvtHepMCEvent.hh b/TEvtGen/EvtGenBase/EvtHepMCEvent.hh
new file mode 100644 (file)
index 0000000..cb503eb
--- /dev/null
@@ -0,0 +1,77 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtHepMCEvent
+//
+// Description: Create an HepMC::GenEvent for the complete EvtParticle 
+//              decay tree.
+//
+// Modification history:
+//
+//    John Back       June 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTHEPMCEVENT_HH
+#define EVTHEPMCEVENT_HH
+
+#include "EvtGenBase/EvtVector4R.hh"
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenParticle.h"
+#include "HepMC/SimpleVector.h"
+
+class EvtParticle;
+
+class EvtHepMCEvent {
+
+public:
+
+  EvtHepMCEvent();
+  virtual ~EvtHepMCEvent();
+
+  // Select what frame a given GenParticle is in:
+  // its own restframe, the lab frame (first mother), or its mother's frame
+  enum HepMCFrame {RESTFRAME = 1, LAB = 2, MOTHER = 3};
+  // Select the GenParticle status
+  enum HepMCStatus {STABLE = 1, DECAYED = 2, HISTORY = 3};
+
+  void constructEvent(EvtParticle* baseParticle);
+  void constructEvent(EvtParticle* baseParticle, EvtVector4R& translation);
+  
+  HepMC::GenEvent* getEvent() {return _theEvent;}
+
+  // Methods used to create GenParticles and FourVectors of vertices.
+  // Make these public so that other classes may call them if they use EvtHepMCEvent.
+
+  // Create a GenParticle using info from the EvtParticle, specifying what frame
+  // the 4-momentum is from.
+  HepMC::GenParticle* createGenParticle(EvtParticle* theParticle, int frameType);
+
+  // Find out the decay vertex position for the given EvtParticle.
+  HepMC::FourVector getVertexCoord(EvtParticle* theParticle);
+
+protected:
+
+private:
+
+  // Delete the event structure (called by destructor)
+  void deleteEvent();
+
+  // Add a vertex to the event. This is called by the constructEvent function
+  // and is recursive, i.e. it loops through all possible daughter particles and
+  // their descendents.
+  void addVertex(EvtParticle* inEvtParticle, HepMC::GenParticle* inGenParticle);
+
+  HepMC::GenEvent* _theEvent;
+  EvtVector4R _translation;
+
+};
+
+#endif
similarity index 93%
rename from TEvtGen/EvtGenBase/EvtId.cxx
rename to TEvtGen/EvtGenBase/EvtId.cpp
index 116106a1dda77339ed2df2a6d9073bc3375bf761..d09dcadf36f4c131efba975d9d1f48c7dba836af 100644 (file)
@@ -39,3 +39,8 @@ int EvtId::isConjugate(const EvtId & id) const {
   return EvtPDL::getStdHep(*this) == - EvtPDL::getStdHep(id);
 }
 
+std::string EvtId::getName() const {
+
+  return EvtPDL::name(*this);
+
+}
index d541684a203c1ea9ae1ab657506351b3fe06a5f7..06a5f23387bb62b61bb44c9c4be1b04f87d57cf5 100644 (file)
@@ -22,7 +22,7 @@
 #define EVTID_HH
 
 #include <iostream>
-//class ostream;
+#include <string>
 
 class EvtId {
 
@@ -37,6 +37,8 @@ public:
 
   int operator==(const EvtId& id) const { return _id==id._id; }
   int operator!=(const EvtId& id) const { return _id!=id._id; }
+  int operator<(const EvtId& id) const { return _id<id._id; }
+
   int isConjugate(const EvtId & id) const;
 
   int getId() const { return _id;}
@@ -45,6 +47,8 @@ public:
 
   int isAlias() const { return _id!=_alias;}
 
+  std::string getName() const;
+
 private:
 
   //particle number 0..n. The order of particles are determined 
@@ -58,4 +62,3 @@ private:
 }; 
 
 #endif
-
diff --git a/TEvtGen/EvtGenBase/EvtIncoherentMixing.cpp b/TEvtGen/EvtGenBase/EvtIncoherentMixing.cpp
new file mode 100644 (file)
index 0000000..58057c5
--- /dev/null
@@ -0,0 +1,264 @@
+// $Id: EvtIncoherentMixing.cpp,v 1.13 2009-11-27 09:09:41 mwhitehe Exp $
+// Include files 
+
+
+// local
+#include "EvtGenBase/EvtIncoherentMixing.hh"
+#include <stdlib.h>
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtRandom.hh"
+
+//-----------------------------------------------------------------------------
+// Implementation file for class : EvtIncoherentMixing
+//
+// 2003-10-09 : Patrick Robbe
+//-----------------------------------------------------------------------------
+
+
+bool EvtIncoherentMixing::_doB0Mixing = false ;
+bool EvtIncoherentMixing::_doBsMixing = false ;
+bool EvtIncoherentMixing::_enableFlip = false ;
+double EvtIncoherentMixing::_dGammad = 0. ;
+double EvtIncoherentMixing::_deltamd = 0.502e12 ;
+// dGamma_s corresponds to DeltaGamma / Gamma = 10 %
+double EvtIncoherentMixing::_dGammas = 6.852e10 ;
+double EvtIncoherentMixing::_deltams = 20.e12 ;
+
+//=============================================================================
+// Standard constructor, initializes variables
+//=============================================================================
+EvtIncoherentMixing::EvtIncoherentMixing(  ) {
+  _doB0Mixing = false ;
+  _doBsMixing = false ;
+  _dGammad = 0. ;
+  // dGammas corresponds to DeltaGamma / Gamma = 10 %
+  _dGammas = 6.852e10 ;
+  _deltamd = 0.502e12 ;
+  _deltams = 20.e12 ;
+  _enableFlip = false ;
+}
+//=============================================================================
+EvtIncoherentMixing::~EvtIncoherentMixing( ) 
+{
+}
+// ============================================================================
+void EvtIncoherentMixing::incoherentB0Mix( const EvtId id, double &t , 
+                                           int &mix )
+{
+  static EvtId B0  = EvtPDL::getId( "B0" ) ;
+  static EvtId B0B = EvtPDL::getId( "anti-B0" ) ;
+  if ( ( B0 != id ) && ( B0B != id ) ) {
+    report(ERROR,"EvtGen") << "Bad configuration in incoherentB0Mix" 
+                           << std::endl ;
+    ::abort() ;
+  }
+  
+  double x = getdeltamd() * EvtPDL::getctau( B0 ) / EvtConst::c ;
+
+  double y = getdGammad() * ( EvtPDL::getctau( B0 ) / EvtConst::c ) / 2. ;
+
+  double fac = 1. ; // No CP violation
+
+  double mixprob = ( x*x + y*y ) / ( x*x + y*y + ( 1./fac ) * 
+                                     ( 2. + x*x - y*y ) ) ;
+
+  int mixsign ;
+  
+  // decide if state is mixed
+  mixsign = ( mixprob > EvtRandom::Flat( 0. , 1. ) ) ? -1 : 1 ;
+
+  double prob ;
+  
+  do {
+    t = -log( EvtRandom::Flat() ) * EvtPDL::getctau( B0 ) / ( 1. - y ) ;
+    prob = ( 1. + exp( -2. * y * t / EvtPDL::getctau( B0 ) ) +
+      mixsign * 2. * exp( -y * t / EvtPDL::getctau( B0 ) ) * 
+      cos( getdeltamd() * t / EvtConst::c ) ) / 2. ;
+  } while ( prob < 2. * EvtRandom::Flat() ) ;
+  mix = 0 ;
+  if ( mixsign == -1 ) mix = 1 ;
+  
+  return ;  
+}
+// ============================================================================
+void EvtIncoherentMixing::incoherentBsMix( const EvtId id, double &t , 
+                                           int &mix )
+{
+  static EvtId BS  = EvtPDL::getId( "B_s0" ) ;
+  static EvtId BSB = EvtPDL::getId( "anti-B_s0" ) ;
+  if ( ( BS != id ) && ( BSB != id ) ) {
+    report(ERROR,"EvtGen") << "Bad configuration in incoherentBsMix" 
+                           << std::endl ;
+    ::abort() ;
+  }
+  
+  double x = getdeltams() * EvtPDL::getctau( BS ) / EvtConst::c ;
+
+  double y = getdGammas() * ( EvtPDL::getctau( BS ) / EvtConst::c ) / 2. ;
+
+  double fac = 1. ; // No CP violation
+
+  double mixprob = ( x*x + y*y ) / ( x*x + y*y + ( 1./fac ) * 
+                                     ( 2. + x*x - y*y ) ) ;
+
+  int mixsign ;
+  
+  // decide if state is mixed
+  mixsign = ( mixprob > EvtRandom::Flat( 0. , 1. ) ) ? -1 : 1 ;
+
+  double prob ;
+  
+  do {
+    t = -log( EvtRandom::Flat() ) * EvtPDL::getctau( BS ) / ( 1. - y ) ;
+    prob = ( 1. + exp( -2. * y * t / EvtPDL::getctau( BS ) ) +
+      mixsign * 2. * exp( -y * t / EvtPDL::getctau( BS ) ) * 
+      cos( getdeltams() * t / EvtConst::c ) ) / 2. ;
+  } while ( prob < 2. * EvtRandom::Flat() ) ;
+  mix = 0 ;
+  if ( mixsign == -1 ) mix = 1 ;
+  
+  return ;  
+}
+
+// ========================================================================
+bool EvtIncoherentMixing::isBsMixed ( EvtParticle * p ) 
+{ 
+  if ( ! ( p->getParent() ) ) return false ;
+  
+  static EvtId BS0=EvtPDL::getId("B_s0");
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+  
+  if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) ) return false ;
+  
+  if ( ( p->getParent()->getId() == BS0 ) ||
+       ( p->getParent()->getId() == BSB ) ) return true ;
+  
+  return false ;
+}
+
+// ========================================================================
+bool EvtIncoherentMixing::isB0Mixed ( EvtParticle * p ) 
+{ 
+  if ( ! ( p->getParent() ) ) return false ;
+  
+  static EvtId B0 =EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+  
+  if ( ( p->getId() != B0 ) && ( p->getId() != B0B ) ) return false ;
+  
+  if ( ( p->getParent()->getId() == B0 ) ||
+       ( p->getParent()->getId() == B0B ) ) return true ;
+  
+  return false ;
+}
+//============================================================================
+// Return the tag of the event (ie the anti-flavour of the produced 
+// B meson). Flip the flavour of the event with probB probability
+//============================================================================
+void EvtIncoherentMixing::OtherB( EvtParticle * p ,
+                                  double & t ,
+                                  EvtId & otherb ,
+                                  double probB ) 
+{
+  //if(p->getId() == B0 || p->getId() == B0B) 
+  //added by liming Zhang
+  enableFlip();
+  if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+    p->getParent()->setLifetime() ;
+    t = p->getParent()->getLifetime() ;
+  }
+  else {
+    p->setLifetime() ;
+    t = p->getLifetime() ;
+  }
+
+  if ( flipIsEnabled() ) {
+    //std::cout << " liming << flipIsEnabled " << std::endl;
+    // Flip the flavour of the particle with probability probB
+    bool isFlipped = ( EvtRandom::Flat( 0. , 1. ) < probB ) ;
+    
+    if ( isFlipped ) {
+      if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+        p->getParent()
+          ->setId( EvtPDL::chargeConj( p->getParent()->getId() ) ) ;
+        p->setId( EvtPDL::chargeConj( p->getId() ) ) ;
+      }
+      else {
+        p->setId( EvtPDL::chargeConj( p->getId() ) ) ;
+      }
+    }
+  }
+  
+  if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+    // if B has mixed, tag flavour is charge conjugate of parent of B-meson
+    otherb = EvtPDL::chargeConj( p->getParent()->getId() ) ;
+  }
+  else {
+    // else it is opposite flavour than this B hadron
+    otherb = EvtPDL::chargeConj( p->getId() ) ;
+  }
+
+  return ;
+}
+//============================================================================
+// Return the tag of the event (ie the anti-flavour of the produced 
+// B meson). No flip
+//============================================================================
+void EvtIncoherentMixing::OtherB( EvtParticle * p ,
+                                  double & t ,
+                                  EvtId & otherb ) 
+{
+  if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+    p->getParent()->setLifetime() ;
+    t = p->getParent()->getLifetime() ;
+  }
+  else {
+    p->setLifetime() ;
+    t = p->getLifetime() ;
+  }
+  
+  if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+    // if B has mixed, tag flavour is charge conjugate of parent of B-meson
+    otherb = EvtPDL::chargeConj( p->getParent()->getId() ) ;
+  }
+  else {
+    // else it is opposite flavour than this B hadron
+    otherb = EvtPDL::chargeConj( p->getId() ) ;
+  }
+
+  return ;
+}
+
+
+// activate or desactivate the Bs mixing
+void EvtIncoherentMixing::setB0Mixing()   { _doB0Mixing = true ; }
+void EvtIncoherentMixing::unsetB0Mixing() { _doB0Mixing = false ; } 
+
+// activate or desactivate the B0 mixing
+void EvtIncoherentMixing::setBsMixing()   { _doBsMixing = true ; } 
+void EvtIncoherentMixing::unsetBsMixing() { _doBsMixing = false ; } 
+
+// is mixing activated ? 
+bool EvtIncoherentMixing::doB0Mixing()  { return _doB0Mixing ; }
+bool EvtIncoherentMixing::doBsMixing()  { return _doBsMixing ; }
+
+// set values for the mixing
+void EvtIncoherentMixing::setdGammad( double value )  { _dGammad = value ; } 
+void EvtIncoherentMixing::setdeltamd( double value )  { _deltamd = value ; } 
+void EvtIncoherentMixing::setdGammas( double value )  { _dGammas = value ; } 
+void EvtIncoherentMixing::setdeltams( double value )  { _deltams = value ; } 
+
+// get parameters for mixing
+double EvtIncoherentMixing::getdGammad() { return _dGammad ; } 
+double EvtIncoherentMixing::getdeltamd() { return _deltamd ; }
+double EvtIncoherentMixing::getdGammas() { return _dGammas ; } 
+double EvtIncoherentMixing::getdeltams() { return _deltams ; }
+
+bool EvtIncoherentMixing::flipIsEnabled() { return _enableFlip ; } 
+void EvtIncoherentMixing::enableFlip() { _enableFlip = true ; } 
+void EvtIncoherentMixing::disableFlip() { _enableFlip = false ; } 
diff --git a/TEvtGen/EvtGenBase/EvtIncoherentMixing.hh b/TEvtGen/EvtGenBase/EvtIncoherentMixing.hh
new file mode 100644 (file)
index 0000000..8ae47ab
--- /dev/null
@@ -0,0 +1,78 @@
+// $Id: EvtIncoherentMixing.hh,v 1.6 2009-11-25 13:41:59 mwhitehe Exp $
+#ifndef EVTINCOHERENTMIXING_HH 
+#define EVTINCOHERENTMIXING_HH 1
+
+// Include files
+
+#include "EvtGenBase/EvtParticle.hh"
+
+/** @class EvtIncoherentMixing EvtIncoherentMixing.hh EvtGenBase/EvtIncoherentMixing.hh
+ *  Class to contain the parameters of the incoherent B0 and B0S mixing
+ *
+ *  @author Patrick Robbe
+ *  @date   2003-10-09
+ */
+class EvtIncoherentMixing {
+public:
+  /// Standard constructor
+  EvtIncoherentMixing( );
+
+  ~EvtIncoherentMixing( ) ; ///< Destructor
+
+  // activate or desactivate the Bs mixing
+  static void setB0Mixing() ;
+  static void unsetB0Mixing() ;
+
+  // activate or desactivate the B0 mixing
+  static void setBsMixing() ;
+  static void unsetBsMixing() ;
+
+  // is mixing activated ? 
+  static bool doB0Mixing() ;
+  static bool doBsMixing() ;
+
+  // set values for the mixing
+  static void setdGammad( double value ) ;
+  static void setdeltamd( double value ) ;
+  static void setdGammas( double value ) ;
+  static void setdeltams( double value ) ;
+
+  // get parameters for mixing
+  static double getdGammad() ;
+  static double getdeltamd() ;
+  static double getdGammas() ;
+  static double getdeltams() ;
+
+  // Functions to obtain time and type of the mixing ( 1 mix, 0 unmix )
+  static void incoherentB0Mix( const EvtId id, double &t, int &mix ) ;
+  static void incoherentBsMix( const EvtId id, double &t, int &mix ) ;
+
+  // Functions to check if a B has mixed (comes from a B)
+  static bool isB0Mixed( EvtParticle * ) ;
+  static bool isBsMixed( EvtParticle * ) ;
+
+  // Functions for CP models
+  // returns for particle p the decay time t , the flavour of the tag
+  // side (B0, anti-B0, B_s0, anti-B_s0). The flavour of p can flip
+  // with probability probB
+  static void OtherB( EvtParticle * p , double & t , EvtId & otherb ,
+                      double probB ) ;
+  static void OtherB( EvtParticle * p , double & t , EvtId & otherb ) ;
+
+  static bool flipIsEnabled() ;
+  static void enableFlip() ;
+  static void disableFlip() ;
+
+protected:
+
+private:
+
+  static bool _doB0Mixing ;
+  static bool _doBsMixing ;
+  static double _dGammad ;
+  static double _deltamd ;
+  static double _dGammas ;
+  static double _deltams ;
+  static bool _enableFlip ;
+};
+#endif // EVTGENBASE_EVTINCOHERENTMIXING_HH
similarity index 94%
rename from TEvtGen/EvtGenBase/EvtIntegPdf1D.cxx
rename to TEvtGen/EvtGenBase/EvtIntegPdf1D.cpp
index 0652697e568643c066ba3f22a4daa1d01514dc09..d2fa8b4799d16db7446b6ef3676c143159670fce 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtIntegPdf1D.cc,v 1.10 2004/12/21 19:58:44 ryd Exp $
+ *    File: $Id: EvtIntegPdf1D.cpp,v 1.3 2009-03-16 15:48:09 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index c2056ee10095af79e3656278960b853dbf757963..c9400ee07ba99c9d7d360da78b5d6ca33f27b12d 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtIntegPdf1D.hh,v 1.8 2003/06/20 17:20:06 dvoretsk Exp $
+ *    File: $Id: EvtIntegPdf1D.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 93%
rename from TEvtGen/EvtGenBase/EvtIntervalFlatPdf.cxx
rename to TEvtGen/EvtGenBase/EvtIntervalFlatPdf.cpp
index a279fdda59cbc436a349e0ce8301840255876881..f43b6cd9c4b4d90add11d6d9e014ad55784a8b01 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtIntervalFlatPdf.cc,v 1.4 2004/12/21 19:58:44 ryd Exp $
+ *    File: $Id: EvtIntervalFlatPdf.cpp,v 1.3 2009-03-16 15:51:08 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index caaaba40b4a0c536370099fdeeff5570de1bb885..cb29ddd6dbeaec87ee8e4821bec9abe0a69b02e3 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtIntervalFlatPdf.hh,v 1.1 2003/06/20 17:20:09 dvoretsk Exp $
+ *    File: $Id: EvtIntervalFlatPdf.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 90%
rename from TEvtGen/EvtGenBase/EvtKine.cxx
rename to TEvtGen/EvtGenBase/EvtKine.cpp
index a9303cbbdb270ceb025fec346a7d1fde50165f54..aa01d0e4f2825ef690d039b75fa6c8c1ff01218f 100644 (file)
@@ -54,11 +54,12 @@ double EvtDecayAngleChi(const EvtVector4R& p4_p,const EvtVector4R& p4_d1,
   
 
   // boost all vectors parent restframe
-
-  p4_d1p=boostTo(p4_d1,p4_p);
-  p4_d2p=boostTo(p4_d2,p4_p);
-  p4_h1p=boostTo(p4_h1,p4_p);
-  p4_h2p=boostTo(p4_h2,p4_p);
+  // This does not boost particle to parent rest frame !!!
+  // It goes from parents rest frame to frame where parent has given momentum.
+  p4_d1p=boostTo(p4_d1,p4_p,true);
+  p4_d2p=boostTo(p4_d2,p4_p,true);
+  p4_h1p=boostTo(p4_h1,p4_p,true);
+  p4_h2p=boostTo(p4_h2,p4_p,true);
   
 
   EvtVector4R d1_perp,d1_prime,h1_perp;
@@ -94,7 +95,7 @@ double EvtDecayAngleChi(const EvtVector4R& p4_p,const EvtVector4R& p4_d1,
 double EvtDecayPlaneNormalAngle(const EvtVector4R& p,const EvtVector4R& q,
                           const EvtVector4R& d1,const EvtVector4R& d2){
 
-  EvtVector4C lc=dual(directProd(d1,d2)).cont2(q);
+  EvtVector4C lc=dual(EvtGenFunctions::directProd(d1,d2)).cont2(q);
 
   EvtVector4R l(real(lc.get(0)),real(lc.get(1)),
                real(lc.get(2)),real(lc.get(3)));
similarity index 85%
rename from TEvtGen/EvtGenBase/EvtLASSAmp.cxx
rename to TEvtGen/EvtGenBase/EvtLASSAmp.cpp
index be253d0752102d42537163f74f04652e6c8a3020..aac6bc9fb989a5e80317ee4aa8c868b626994ce8 100644 (file)
@@ -1,4 +1,3 @@
-#include "EvtGenBase/EvtPatches.hh"
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory 
  * Package: EvtGenBase 
@@ -23,14 +22,15 @@ using EvtCyclic3::Pair;
 EvtLASSAmp::EvtLASSAmp(EvtDalitzPlot *dp, 
                       EvtCyclic3::Pair pair,
                       double m0, double g0,
-                      double a, double r, double cutoff) :
+                      double a, double r, double cutoff, std::string subtype) :
   EvtAmplitude<EvtDalitzPoint>(),
   _pair(pair),
   _m0(m0),
   _g0(g0),
   _r(r),
   _a(a),
-  _cutoff(cutoff)
+  _cutoff(cutoff),
+  _subtype(subtype)
 {
   _dalitzSpace = dp;
   double ma = dp->m( first(pair) );
@@ -51,7 +51,9 @@ EvtLASSAmp::EvtLASSAmp(const EvtLASSAmp& other) :
   _q0(other._q0),
   _r(other._r),
   _a(other._a),
-  _cutoff(other._cutoff)
+  _cutoff(other._cutoff),
+  _subtype(other._subtype)
+
 {  
   _dalitzSpace = other._dalitzSpace;
 }
@@ -108,5 +110,22 @@ EvtLASSAmp::amplitude(const EvtDalitzPoint &dalitzPoint) const {
   double gamma = _g0 * q/m * _m0/_q0;
   EvtComplex lass_Kstar = (_m0*_m0)*(_g0/_q0)/(_m0*_m0-m*m-EvtComplex(0.,_m0*gamma));   
 
-  return lass_elastic + lass_phase * lass_Kstar;
+  EvtComplex theAmplitude(0.0, 0.0);
+
+  if (_subtype == "LASS_ELASTIC") {
+
+    theAmplitude = lass_elastic;
+
+  } else if (_subtype == "LASS_RESONANT") {
+
+    theAmplitude = lass_phase * lass_Kstar;
+
+  } else {
+
+    theAmplitude = lass_phase * lass_Kstar + lass_elastic;
+
+  }
+
+  return theAmplitude;
 }
index 5a19c9f965320bc982f7576664bb0672ced735ae..a626bc37186f3be7dfa730bf29e3de0fd01a3c03 100644 (file)
@@ -1,7 +1,8 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *  Author: Denis Dujmic, ddujmic@slac.stanford.edu
+ *  Authors: Denis Dujmic, ddujmic@slac.stanford.edu
+ *           Andrew Wagner, apwagner@slac.stanford.edu
  *
  * Copyright (C) 2005 SLAC
  *******************************************************************************/
@@ -9,6 +10,8 @@
 #ifndef EVT_LASS_AMP_HH
 #define EVT_LASS_AMP_HH
 
+#include <string>
+
 #include "EvtGenBase/EvtCyclic3.hh"
 #include "EvtGenBase/EvtDalitzPoint.hh"
 #include "EvtGenBase/EvtDalitzPlot.hh"
@@ -16,8 +19,6 @@
 
 class EvtComplex;
 
-
-
 class EvtLASSAmp : public EvtAmplitude<EvtDalitzPoint> {
   
 public:
@@ -25,7 +26,7 @@ public:
   EvtLASSAmp( EvtDalitzPlot *dp, 
              EvtCyclic3::Pair pair,
              double m0, double g0,
-             double a, double r, double cutoff );
+             double a, double r, double cutoff, std::string subtype = "LASS" );
 
   EvtLASSAmp(const EvtLASSAmp& other);
 
@@ -48,6 +49,7 @@ private:
   double _r;
   double _a;
   double _cutoff;
+  std::string _subtype;
 
 };
 
similarity index 88%
rename from TEvtGen/EvtGenBase/EvtMParticle.cxx
rename to TEvtGen/EvtGenBase/EvtMParticle.cpp
index 999f6ea7bc347edd57da9edf1d48dbf82d7f7a50..542c0b97bf74ab7e341fb9ac325cb1cef786a5ff 100644 (file)
@@ -9,7 +9,7 @@ EvtMParticle::EvtMParticle( int label, const EvtId& id )
     _resonance.push_back( label );
 }
 
-EvtSpinAmp EvtMParticle::amplitude( const vector<EvtVector4R> &product) const
+EvtSpinAmp EvtMParticle::amplitude( const vector<EvtVector4R> &/*product*/) const
 {
     vector<EvtSpinType::spintype> types( 2, getspintype() );
     EvtSpinAmp amp( types, EvtComplex( 0.0, 0.0 ) );
index 0b151dc1a0a1fbc5bef2f7b25aabab647cfe341b..f1ee8d9a157f7d522a2313ebe30bb6b198146d4c 100644 (file)
@@ -12,7 +12,7 @@ class EvtMParticle : public EvtMNode {
         EvtSpinAmp amplitude( const vector<EvtVector4R>& product ) const;
         int getnchild() const { return 0; }
         
-        EvtComplex line( const vector<EvtVector4R>& product ) const
+  EvtComplex line( const vector<EvtVector4R>& /*product*/ ) const
         { return EvtComplex(1.0, 0.0); }
 
         EvtMNode * duplicate() const;
similarity index 78%
rename from TEvtGen/EvtGenBase/EvtMTrivialLS.cxx
rename to TEvtGen/EvtGenBase/EvtMTrivialLS.cpp
index 8bfd22e67a62d345b6f48b765794c732326b6370..b86366cee8501b0460ead6159fc9374232066090 100644 (file)
@@ -1,7 +1,7 @@
 #include "EvtGenBase/EvtPatches.hh"
 #include "EvtGenBase/EvtMTrivialLS.hh"
 
-EvtComplex EvtMTrivialLS::shape( const vector<EvtVector4R>& product ) const 
+EvtComplex EvtMTrivialLS::shape( const vector<EvtVector4R>& /*product*/ ) const 
 { 
     return EvtComplex(1.0, 0.0); 
 }
index 4089b6716f62c6f349dbcdecbc5a8336437c7144..a4afcade81caaada13520e2c8c9bcbddbfa7a00e 100644 (file)
@@ -7,7 +7,7 @@ class EvtMTrivialLS : public EvtMLineShape {
 
     public:
 
-        EvtMTrivialLS( const EvtId& id, const vector<string>& args ) {};
+        EvtMTrivialLS( const EvtId& /*id*/, const vector<string>& /*args*/ ) {};
         ~EvtMTrivialLS() {};
 
         EvtComplex shape( const vector<EvtVector4R>& product ) const; 
index 3500685ce449b45c12f3d77215567cac4d33d642..9c045a72e48c904e9da90152a3f2802d8b09e07d 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtMacros.hh,v 1.1 2003/01/21 09:25:39 dvoretsk Exp $
+ *    File: $Id: EvtMacros.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 97%
rename from TEvtGen/EvtGenBase/EvtMassAmp.cxx
rename to TEvtGen/EvtGenBase/EvtMassAmp.cpp
index c0bfa57bcb6a93ace56a0e258b21721cc8f238e7..d9c3677dc8b09cce664c43a53f03749375900846 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtMassAmp.cc,v 1.11 2006/01/25 19:55:43 lange Exp $
+//      $Id: EvtMassAmp.cpp,v 1.3 2009-03-16 15:47:10 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
index d7fbc4758e21bc3fd28366944600e314319a01f0..6238823dd51634b17dcd7f9f7a7189db28ca990b 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtMassAmp.hh,v 1.11 2006/01/25 19:55:43 lange Exp $
+//      $Id: EvtMassAmp.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
index bbc78fdb6d05cadcf7851661d7bc016bb11b2dec..3074a5c25f7a386d309b9d621f22dd2c9209570d 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtMatrix.hh,v 1.5 2008/11/27 16:27:24 jordix Exp $
+ *    File: $Id: EvtMatrix.hh,v 1.1 2009-03-16 16:50:49 robbep Exp $
  *
  * Description:
  *   Class to make simple computations with matrices: assignment, product,
@@ -19,7 +19,6 @@
 #include <sstream>
 
 
-
 template <class T> class EvtMatrix
 {
 private:
@@ -110,7 +109,7 @@ template <class T> T EvtMatrix< T >::det()
   for ( int col = 0; col < _range; col++ )
     {
       EvtMatrix< T >* minor = min( 0, col );
-      sum += pow( -1., col ) * _mat[ 0 ][ col ] * minor->det();
+      sum += std::pow( -1., col ) * _mat[ 0 ][ col ] * minor->det();
       delete minor;
     }
 
@@ -158,8 +157,8 @@ template <class T> EvtMatrix< T >* EvtMatrix< T >::inverse()
     for ( int col = 0; col < _range; col++ )
       {
        EvtMatrix< T >* minor = min( row, col );
-       inv->_mat[col][row] = pow( -1., row + col ) * minor->det() / determinant;
-        delete minor;
+       inv->_mat[col][row] = std::pow( -1., row + col ) * minor->det() / determinant;
+       delete minor;
       }
 
   return inv;
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtMultiChannelParser.cxx
rename to TEvtGen/EvtGenBase/EvtMultiChannelParser.cpp
index fc64a0cf3f02dd5c5d7e3244a37c4cb6f7c3cce5..49290c5d4416a29bf31f329829281d57b85011bb 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtMultiChannelParser.cc,v 1.17 2009/02/19 03:22:30 ryd Exp $
+//      $Id: EvtMultiChannelParser.cpp,v 1.4 2009-03-16 15:46:01 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
@@ -159,7 +159,7 @@ void EvtMultiChannelParser::parse(const std::vector<std::string>& v)
       
       assert(conjugate == false);
       conjugate = true;
-      assert(!isKeyword(v[++i]));
+      i++;
       _dm =  strtod(v[i++].c_str(),tc);
       _mixAmpli = strtod(v[i++].c_str(),tc);
       _mixPhase = strtod(v[i++].c_str(),tc);
@@ -197,7 +197,7 @@ void EvtMultiChannelParser::parse(const std::vector<std::string>& v)
       }
     
 
-    assert(i > i0);
+    assert(i > i0); _unused( i0 );
   }
 
   printf("PARSING SUCCESSFUL\n");
@@ -213,7 +213,8 @@ void EvtMultiChannelParser::parseComplexCoef(size_t& i, const std::vector<std::s
   // place holder for strtod
   char** tc = 0;
 
-  assert(v[i++] == std::string("COEFFICIENT"));
+  std::string coefString = v[i++];
+  assert(coefString == std::string("COEFFICIENT"));
 
   if(v[i] == std::string("POLAR_DEG")) {
 
index 568bcdc397938da7619916180a5c0f9f2dfd5b92..f1632c0a93b464ca7379418a236d49b0fd9665ca 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtMultiChannelParser.hh,v 1.7 2009/02/19 03:22:30 ryd Exp $
+//      $Id: EvtMultiChannelParser.hh,v 1.2 2009-03-16 16:41:09 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtPDL.cxx
rename to TEvtGen/EvtGenBase/EvtPDL.cpp
index 315270b94f6f02bc6bb4d158020af830d2d2782a..0b3fd29927fc67a00aeb31f99600128133c12e16 100644 (file)
@@ -402,6 +402,10 @@ void EvtPDL::reSetBlatt(EvtId i,double blatt) {
   partlist()[i.getId()].reSetBlatt(blatt);
 }
 
+void EvtPDL::reSetBlattBirth(EvtId i,double blatt) {
+  partlist()[i.getId()].reSetBlattBirth(blatt);
+}
+
 void EvtPDL::includeBirthFactor(EvtId i,bool yesno) {
   partlist()[i.getId()].includeBirthFactor(yesno);
 }
index ba2fc897b74a421a52b1f7f4646ed572ed96669f..5ce47ce23689a17f07c613af0d9f863953ccf094 100644 (file)
@@ -73,12 +73,12 @@ public:
   static void reSetMassMin(EvtId i, double mass);
   static void reSetMassMax(EvtId i,double mass);
   static void reSetBlatt(EvtId i,double blatt);
+  static void reSetBlattBirth(EvtId i,double blatt);
   static void includeBirthFactor(EvtId i,bool yesno);
   static void includeDecayFactor(EvtId i,bool yesno);
   static void changeLS(EvtId i, std::string &newLS );
   static void setPWForDecay(EvtId i, int spin, EvtId d1, EvtId d2);
   static void setPWForBirthL(EvtId i, int spin, EvtId par, EvtId othD);
-  static void fixLSForSP8(EvtId i) { partlist()[i.getId()].fixLSForSP8();}
 private:
 
   void setUpConstsPdt();
diff --git a/TEvtGen/EvtGenBase/EvtParserXml.cpp b/TEvtGen/EvtGenBase/EvtParserXml.cpp
new file mode 100644 (file)
index 0000000..f4db979
--- /dev/null
@@ -0,0 +1,264 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtParserXml.cc
+//
+// Description: Reading the decay XML file.
+//
+// Modification history:
+//
+//    DCC     24 October, 2011        Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include <fstream>
+#include <sstream>
+#include <string.h>
+#include <vector>
+#include "EvtGenBase/EvtParserXml.hh"
+#include "EvtGenBase/EvtReport.hh"
+using namespace std;
+
+EvtParserXml::EvtParserXml(){
+  _line = "";
+  _lineNo=0;
+  _tag = "";
+  _tagTitle = "";
+}
+
+EvtParserXml::~EvtParserXml(){
+
+
+}
+
+
+bool EvtParserXml::open(std::string filename){
+  
+  if(!expandEnvVars(filename)) {
+    report(ERROR,"EvtGen") << "Error while expanding environment variables in file name '"<<filename.c_str()<<"'"<<endl;
+    return false;
+  }
+
+  _fin.open(filename.c_str());
+  if (!_fin) {
+    report(ERROR,"EvtGen") << "Could not open file '"<<filename.c_str()<<"'"<<endl;
+    return false;
+  }
+
+  return true;
+  
+}
+
+bool EvtParserXml::close() {
+  _fin.close();
+  return true;
+}
+
+bool EvtParserXml::readNextTag() {
+    if(!processTagTree()) {
+      report(ERROR,"EvtGen")
+                  << "Unexpected end tag "<<_tagTitle<<" found near line "<<_lineNo<<endl;
+      report(ERROR,"EvtGen")
+                  << "Will terminate execution!"<<endl;
+      return false;
+    }//first process the previous tag to find out where we are in the tag tree
+
+    while(_line.find("<") == std::string::npos) {//add lines until we find start of a tag
+      std::string addLine;
+      if(!std::getline(_fin, addLine)) return false;
+      _lineNo++;
+      _line += " ";
+      _line += addLine;
+    }
+
+    unsigned int startTag;
+    unsigned int endTag;
+    unsigned int endTagTitle;
+
+    startTag = _line.find("<");
+
+    if(_line[startTag+1] =='?') { //XML header tag - ignore then read the next tag
+      while(_line.find("?>", startTag) == std::string::npos) {
+        std::string addLine;
+        if(!std::getline(_fin, addLine)) return false;
+        _lineNo++;
+        _line += " ";
+        _line += addLine;
+      }
+      endTag = _line.find("?>", startTag);
+      _line = _line.substr(endTag + 2);
+      return readNextTag();
+    } else if(_line[startTag+1] == '!') { //XML comment tag - ignore then read the next tag
+      while(_line.find("-->", startTag) == std::string::npos) {
+        std::string addLine;
+        if(!std::getline(_fin, addLine)) return false;
+        _lineNo++;
+        _line += " ";
+        _line += addLine;
+      }
+      endTag = _line.find("-->", startTag);
+      _line = _line.substr(endTag + 3);
+      _tagTitle = "";
+      _tag = "";
+      return readNextTag();
+    } else { //parsable
+
+      while(_line.find(">", startTag) == std::string::npos) {//find end of a tag
+        std::string addLine;
+        if(!std::getline(_fin, addLine)) return false;
+        _lineNo++;
+        _line += " ";
+        _line += addLine;
+      }
+      endTag = _line.find(">", startTag);
+      _inLineTag = false;
+      if(_line.find("/>", startTag) < endTag) {
+        endTag--;
+        _inLineTag = true;
+      }
+
+      if(_line.find(" ", startTag) != std::string::npos && _line.find(" ", startTag) < endTag) {//find end of the first word in the tag
+        endTagTitle = _line.find(" ", startTag);
+      } else {
+        endTagTitle = endTag;
+      }
+
+      _tagTitle = _line.substr(startTag + 1, endTagTitle - startTag - 1);
+      _tag = _line.substr(startTag + 1, endTag - startTag - 1);
+
+      //now we have the tag lets remove it from the line
+      if(_inLineTag) {
+        _line = _line.substr(endTag+2);
+      } else {
+        _line = _line.substr(endTag+1);
+      }
+      return true;
+    }
+}
+
+std::string EvtParserXml::getParentTagTitle() {
+  if(_tagTree.empty()) return "";
+  else return _tagTree.back();
+}
+
+std::string EvtParserXml::readAttribute(std::string attribute, std::string defaultValue) {
+  std::string whitespace = " \t\n\v\f\r";
+  for(unsigned int i=0; i<whitespace.size(); i++) {
+  //find any whitespace followed by the attribute name followed by an '='
+    std::string attName = whitespace[i] + attribute + "=";
+    if (_tag.find(attName) != std::string::npos) {
+      int startAttri = _tag.find(attName);
+      int startQuote = _tag.find("\"", startAttri + 1);
+      int endQuote = _tag.find("\"", startQuote + 1);
+      return _tag.substr(startQuote + 1, endQuote - startQuote - 1);
+    }
+  }
+  return defaultValue;
+}
+
+bool EvtParserXml::readAttributeBool(std::string attribute, bool defaultValue) {
+  std::string valStr = readAttribute(attribute);
+  if(!defaultValue) return (valStr == "true" || valStr == "1" || valStr == "on" || valStr == "yes");
+  else return (valStr != "false" && valStr != "0" && valStr != "off" && valStr != "no");
+}
+
+int EvtParserXml::readAttributeInt(std::string attribute, int defaultValue) {
+  std::string valStr = readAttribute(attribute);
+  if (valStr == "") return defaultValue;
+  std::istringstream valStream(valStr);
+  int retVal;
+  valStream >> retVal;
+  return retVal;
+}
+
+double EvtParserXml::readAttributeDouble(std::string attribute, double defaultValue) {
+  std::string valStr = readAttribute(attribute);
+  if (valStr == "") return defaultValue;
+  std::istringstream valStream(valStr);
+  double retVal;
+  valStream >> retVal;
+  return retVal;
+}
+
+bool EvtParserXml::processTagTree() {
+  if(_tagTitle == "") return true;
+  if(_tagTitle[0] == '/') {
+    if(_tagTitle.substr(1) == _tagTree.back()) {
+      _tagTree.pop_back();
+    } else {
+      return false;
+    }
+  } else if(!_inLineTag) {
+    _tagTree.push_back(_tagTitle);
+  }
+  return true;
+}
+
+bool EvtParserXml::expandEnvVars(std::string& str) {
+  while(str.find('$') != std::string::npos) {
+    size_t varStart = str.find('$');
+    size_t varNameLength;
+    std::string varName;
+    
+    //if this is the last character then just remove the $
+    if(varStart == str.length()-1) {
+      str.erase(varStart);
+      return true;
+    }
+    
+    if(str[varStart+1] == '{') {
+      //deal with environment variables in {}s
+      size_t braceStart = varStart+1;
+      size_t braceEnd = str.find('}',braceStart);
+      
+      if(braceEnd == std::string::npos) {
+        report(ERROR,"EvtGen")
+          << "Incomplete environment variable found in text: "<<str<<endl;
+        report(ERROR,"EvtGen")
+          << "Will terminate execution!"<<endl;
+          return false;
+      }
+
+      varName = str.substr(braceStart+1,braceEnd-braceStart-1);
+      varNameLength = braceEnd-varStart;
+
+    } else {
+      //deal with everything else
+      varNameLength=0;
+
+      while(varNameLength + varStart + 1 < str.length() && isAlphaNum(str[varStart+varNameLength+1])) {
+        ++varNameLength;
+      }
+
+      varName = str.substr(varStart+1,varNameLength);
+    }
+
+    char* envVar = getenv(varName.c_str());
+
+    if(envVar) str.replace(varStart,varNameLength+1,envVar);
+    else {
+      report(WARNING,"EvtGen")
+        << "Undefined environment variable found in text: "<<varName<<endl;
+      str.replace(varStart,varNameLength+1,"");
+    }
+  }
+  return true;
+}
+
+bool EvtParserXml::isAlphaNum(char c) {
+  if(c>='0' && c<='9') return true;
+  if(c>='A' && c<='Z') return true;
+  if(c>='a' && c<='z') return true;
+  if(c=='_') return true;
+  return false;
+}
diff --git a/TEvtGen/EvtGenBase/EvtParserXml.hh b/TEvtGen/EvtGenBase/EvtParserXml.hh
new file mode 100644 (file)
index 0000000..e3e8289
--- /dev/null
@@ -0,0 +1,67 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtParserXml.hh
+//
+// Description:
+//
+// Modification history:
+//
+//    DCC     24 October, 2011         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTPARSERXML_HH
+#define EVTPARSERXML_HH
+
+#include <string>
+#include <vector>
+
+#include <fstream>
+
+class EvtParserXml {
+public:
+  EvtParserXml();
+  ~EvtParserXml();
+
+  bool open(std::string filename);
+  bool close();
+
+  bool readNextTag();
+
+  std::string getTagTitle() { return _tagTitle; }
+  std::string getParentTagTitle();
+  int getLineNumber() { return _lineNo; }
+  bool isTagInline() { return _inLineTag; }
+  
+  std::string readAttribute(std::string attribute, std::string defaultValue="");
+  bool readAttributeBool(std::string attribute, bool defaultValue=false);
+  int readAttributeInt(std::string attribute, int defaultValue=-1);
+  double readAttributeDouble(std::string attribute, double defaultValue=-1.);
+
+private:
+
+  std::ifstream _fin;
+  std::string _line;
+  int _lineNo;
+
+  std::string _tag;
+  std::string _tagTitle;
+  bool _inLineTag;
+  std::vector<std::string> _tagTree;
+
+  bool processTagTree();
+
+  bool expandEnvVars(std::string& str);
+  bool isAlphaNum(char c);
+}; 
+
+#endif
+
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtPartProp.cxx
rename to TEvtGen/EvtGenBase/EvtPartProp.cpp
index cbb120d05622003d0176288091b2135c230ab9d6..12e3b1c9a8167aad17337dbcde2b57aeb85ac15a 100644 (file)
@@ -147,6 +147,10 @@ void EvtPartProp::reSetBlatt(double blatt){
   if (!_lineShape) ::abort();
   _lineShape->reSetBlatt(blatt);
 }
+void EvtPartProp::reSetBlattBirth(double blatt){
+  if (!_lineShape) ::abort();
+  _lineShape->reSetBlattBirth(blatt);
+}
 void EvtPartProp::includeBirthFactor(bool yesno){
   if (!_lineShape) ::abort();
   _lineShape->includeBirthFactor(yesno);
index 80a46494d3b7b45a4eebb7d555d02bffa7ed2544..590b7cca83d50ca8cbd9d552b93539985e88ed89 100644 (file)
@@ -86,12 +86,12 @@ public:
   void reSetMassMin(double mass);
   void reSetMassMax(double mass);
   void reSetBlatt(double blatt);
+  void reSetBlattBirth(double blatt);
   void includeBirthFactor(bool yesno);
   void includeDecayFactor(bool yesno);
   void newLineShape(std::string type);
   void setPWForDecay( int spin, EvtId d1, EvtId d2);
   void setPWForBirthL( int spin, EvtId par, EvtId othD);
-  void fixLSForSP8() {_lineShape->fixForSP8();}
 
 private:
 
similarity index 89%
rename from TEvtGen/EvtGenBase/EvtParticle.cxx
rename to TEvtGen/EvtGenBase/EvtParticle.cpp
index 5cddb7346b0621f2b598fd95e2dbad35adecff1f..127145abec6093c02236141dd2af7a0eb44339c5 100644 (file)
@@ -45,6 +45,7 @@
 #include "EvtGenBase/EvtCPUtil.hh"
 #include "EvtGenBase/EvtParticleFactory.hh"
 #include "EvtGenBase/EvtIdSet.hh"
+#include "EvtGenBase/EvtStatus.hh"
 
 using std::endl;
 
@@ -109,6 +110,8 @@ int EvtParticle::firstornot() const { return _first;}
 
 EvtId EvtParticle::getId() const { return _id;}
 
+int EvtParticle::getPDGId() const {return EvtPDL::getStdHep(_id);}
+
 EvtSpinType::spintype EvtParticle::getSpinType() const 
       { return EvtPDL::getSpinType(_id);}
 
@@ -218,28 +221,28 @@ void EvtParticle::initDecay(bool useMinMass) {
     for (size_t i=0;i<par->getNDaug();i++) {
       EvtParticle *tDaug=par->getDaug(i);
       if ( p != tDaug )
-       parMass-=EvtPDL::getMinMass(tDaug->getId());
+        parMass-=EvtPDL::getMinMass(tDaug->getId());
     }
   }
-
+  
   if ( _isInit ) {
     //we have already been here - just reroll the masses!
     if ( _ndaug>0) {
       for(size_t ii=0;ii<_ndaug;ii++){
-       if ( _ndaug==1 ||  EvtPDL::getWidth(p->getDaug(ii)->getId()) > 0.0000001)
-         p->getDaug(ii)->initDecay(useMinMass);
-       else p->getDaug(ii)->setMass(EvtPDL::getMeanMass(p->getDaug(ii)->getId()));
+        if ( _ndaug==1 ||  EvtPDL::getWidth(p->getDaug(ii)->getId()) > 0.0000001)
+          p->getDaug(ii)->initDecay(useMinMass);
+        else p->getDaug(ii)->setMass(EvtPDL::getMeanMass(p->getDaug(ii)->getId()));
       }
     }
-
+    
     EvtId *dauId=0;
     double *dauMasses=0;
     if ( _ndaug > 0) {
       dauId=new EvtId[_ndaug];
       dauMasses=new double[_ndaug];
       for (size_t j=0;j<_ndaug;j++) { 
-       dauId[j]=p->getDaug(j)->getId();
-       dauMasses[j]=p->getDaug(j)->mass();
+        dauId[j]=p->getDaug(j)->getId();
+        dauMasses[j]=p->getDaug(j)->mass();
       }
     }
     EvtId *parId=0;
@@ -248,13 +251,13 @@ void EvtParticle::initDecay(bool useMinMass) {
     if (tempPar) {
       parId=new EvtId(tempPar->getId());
       if ( tempPar->getNDaug()==2 ) {
-       if ( tempPar->getDaug(0) == this ) othDauId=new EvtId(tempPar->getDaug(1)->getId());
-       else othDauId=new EvtId(tempPar->getDaug(0)->getId());
+        if ( tempPar->getDaug(0) == this ) othDauId=new EvtId(tempPar->getDaug(1)->getId());
+        else othDauId=new EvtId(tempPar->getDaug(0)->getId());
       }
     }
     if ( p->getParent() && _validP4==false ) {
       if ( !useMinMass ) {
-       p->setMass(EvtPDL::getRandMass(p->getId(),parId,_ndaug,dauId,othDauId,parMass,dauMasses));
+        p->setMass(EvtPDL::getRandMass(p->getId(),parId,_ndaug,dauId,othDauId,parMass,dauMasses));
       }
       else p->setMass(EvtPDL::getMinMass(p->getId()));
     }
@@ -264,7 +267,7 @@ void EvtParticle::initDecay(bool useMinMass) {
     if ( dauMasses) delete [] dauMasses;
     return;
   }
-
+  
   
   //Will include effects of mixing here
   //added by Lange Jan4,2000
@@ -276,7 +279,7 @@ void EvtParticle::initDecay(bool useMinMass) {
   static EvtId D0B=EvtPDL::getId("anti-D0");
   static EvtId U4S=EvtPDL::getId("Upsilon(4S)");
   static EvtIdSet borUps(BS0,BSB,BD0,BDB,U4S);
-
+  
   //only makes sense if there is no parent particle which is a B or an Upsilon
   bool hasBorUps=false;
   if ( getParent() && borUps.contains(getParent()->getId()) ) hasBorUps=true;
@@ -287,7 +290,7 @@ void EvtParticle::initDecay(bool useMinMass) {
   if ( (getNDaug()==0 && !hasBorUps) && (thisId==BS0||thisId==BSB||thisId==BD0||thisId==BDB)){
     double t;
     int mix;
-    EvtCPUtil::incoherentMix(getId(), t, mix);
+    EvtCPUtil::getInstance()->incoherentMix(getId(), t, mix);
     setLifetime(t);
     
     if (mix) {
@@ -296,33 +299,33 @@ void EvtParticle::initDecay(bool useMinMass) {
     
       scalar_part=new EvtScalarParticle;
       if (getId()==BS0) {
-       EvtVector4R p_init(EvtPDL::getMass(BSB),0.0,0.0,0.0);
-       scalar_part->init(BSB,p_init);
+        EvtVector4R p_init(EvtPDL::getMass(BSB),0.0,0.0,0.0);
+        scalar_part->init(EvtPDL::chargeConj(getId()),p_init);
       }
       else if (getId()==BSB) {
-       EvtVector4R p_init(EvtPDL::getMass(BS0),0.0,0.0,0.0);
-       scalar_part->init(BS0,p_init);
+        EvtVector4R p_init(EvtPDL::getMass(BS0),0.0,0.0,0.0);
+        scalar_part->init(EvtPDL::chargeConj(getId()),p_init);
       }
       else if (getId()==BD0) {
-       EvtVector4R p_init(EvtPDL::getMass(BDB),0.0,0.0,0.0);
-       scalar_part->init(BDB,p_init);
+        EvtVector4R p_init(EvtPDL::getMass(BDB),0.0,0.0,0.0);
+        scalar_part->init(EvtPDL::chargeConj(getId()),p_init);
       }
       else if (getId()==BDB) {
-       EvtVector4R p_init(EvtPDL::getMass(BD0),0.0,0.0,0.0);
-       scalar_part->init(BD0,p_init);
+        EvtVector4R p_init(EvtPDL::getMass(BD0),0.0,0.0,0.0);
+        scalar_part->init(EvtPDL::chargeConj(getId()),p_init);
       }
       else if (getId()==D0) {
-       EvtVector4R p_init(EvtPDL::getMass(D0B),0.0,0.0,0.0);
-       scalar_part->init(D0B,p_init);
+        EvtVector4R p_init(EvtPDL::getMass(D0B),0.0,0.0,0.0);
+        scalar_part->init(EvtPDL::chargeConj(getId()),p_init);
       }
       else if (getId()==D0B) {
-       EvtVector4R p_init(EvtPDL::getMass(D0),0.0,0.0,0.0);
-       scalar_part->init(D0,p_init);
+        EvtVector4R p_init(EvtPDL::getMass(D0),0.0,0.0,0.0);
+        scalar_part->init(EvtPDL::chargeConj(getId()),p_init);
       }
-
+      
       scalar_part->setLifetime(0);
       scalar_part->setDiagonalSpinDensity();      
-    
+      
       insertDaugPtr(0,scalar_part);
 
       _ndaug=1;
@@ -334,10 +337,9 @@ void EvtParticle::initDecay(bool useMinMass) {
 
     }
   }
-  if ( _ndaug==1 ) std::cout << "hi " << EvtPDL::name(this->getId()) << std::endl;
 
   EvtDecayBase *decayer;
-  decayer = EvtDecayTable::getDecayFunc(p);
+  decayer = EvtDecayTable::getInstance()->getDecayFunc(p);
 
   if ( decayer ) {
     p->makeDaughters(decayer->nRealDaughters(),decayer->getDaugs());
@@ -345,7 +347,7 @@ void EvtParticle::initDecay(bool useMinMass) {
     for(size_t i=0;i<p->getNDaug();i++){
       //      std::cout << EvtPDL::name(p->getDaug(i)->getId()) << " " << i << " " << p->getDaug(i)->getSpinType() << " " << EvtPDL::name(p->getId()) << std::endl;
       if ( EvtPDL::getWidth(p->getDaug(i)->getId()) > 0.0000001)
-       p->getDaug(i)->initDecay(useMinMass);
+        p->getDaug(i)->initDecay(useMinMass);
       else p->getDaug(i)->setMass(EvtPDL::getMeanMass(p->getDaug(i)->getId()));
     }
   }
@@ -403,7 +405,7 @@ void EvtParticle::decay(){
   //}
 
   EvtDecayBase *decayer;
-  decayer = EvtDecayTable::getDecayFunc(p);
+  decayer = EvtDecayTable::getInstance()->getDecayFunc(p);
   //  if ( decayer ) {
   //    report(INFO,"EvtGen") << "calling decay for " << EvtPDL::name(p->getId()) << " " << p->mass() << " " << p->getP4() << " " << p->getNDaug() << " " << p << endl;
   //    report(INFO,"EvtGen") << "NDaug= " << decayer->getNDaug() << endl;
@@ -420,21 +422,32 @@ void EvtParticle::decay(){
 
   //if there are already daughters, then this step is already done!
   // figure out the masses
-  if ( _ndaug == 0 ) generateMassTree();
+  bool massTreeOK(true);
+  if ( _ndaug == 0 ) {
+    massTreeOK = generateMassTree();
+  }
+
+  if (massTreeOK == false) {
+    report(INFO,"EvtGen")<<"Could not decay "<<EvtPDL::name(p->getId())
+                        <<" with mass "<<p->mass()
+                        <<" to decay channel number "<<_channel<<endl;
+    _isDecayed = false;
+    return;
+  }
   
   static EvtId BS0=EvtPDL::getId("B_s0");
   static EvtId BSB=EvtPDL::getId("anti-B_s0");
   static EvtId BD0=EvtPDL::getId("B0");
   static EvtId BDB=EvtPDL::getId("anti-B0"); 
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
+  // static EvtId D0=EvtPDL::getId("D0");
+  // static EvtId D0B=EvtPDL::getId("anti-D0");
 
   EvtId thisId=getId();
   // remove D0 mixing for now..
   //  if ( _ndaug==1 &&  (thisId==BS0||thisId==BSB||thisId==BD0||thisId==BDB||thisId==D0||thisId==D0B) ) {
   if ( _ndaug==1 &&  (thisId==BS0||thisId==BSB||thisId==BD0||thisId==BDB) ) {
     p=p->getDaug(0);
-    decayer = EvtDecayTable::getDecayFunc(p);
+    decayer = EvtDecayTable::getInstance()->getDecayFunc(p);
   }
   //now we have accepted a set of masses - time
   if ( decayer != 0) {
@@ -448,7 +461,10 @@ void EvtParticle::decay(){
   return;  
 }
 
-void EvtParticle::generateMassTree() {
+bool EvtParticle::generateMassTree() {
+
+  bool isOK(true);
+
   double massProb=1.;
   double ranNum=2.;
   int counter=0;
@@ -478,11 +494,15 @@ void EvtParticle::generateMassTree() {
        }
        else {
          report(INFO,"EvtGen") << "Sorry, no luck finding a valid set of masses.  This may be a pathological combo\n";
-         assert(0);
+         isOK = false;
+         break;
        }
       }
     }
   }
+
+  return isOK;
+
 }
 
 double EvtParticle::compMassProb() {
@@ -583,8 +603,6 @@ EvtVector4C EvtParticle::epsPhoton(int i){
 
 EvtDiracSpinor EvtParticle::spParent(int i) const {
   EvtDiracSpinor tempD;
-  int temp;
-  temp = i;
   printParticle();
   report(ERROR,"EvtGen") << "and you have asked for the:"<<i
                         <<"th dirac spinor."
@@ -596,8 +614,6 @@ EvtDiracSpinor EvtParticle::spParent(int i) const {
 
 EvtDiracSpinor EvtParticle::sp(int i) const {
   EvtDiracSpinor tempD;
-  int temp;
-  temp = i;
   printParticle();
   report(ERROR,"EvtGen") << "and you have asked for the:"<<i
                         <<"th dirac spinor."
@@ -630,8 +646,6 @@ EvtDiracSpinor EvtParticle::spNeutrino() const {
 }
 
 EvtTensor4C EvtParticle::epsTensorParent(int i) const {
-  int temp;
-  temp = i;
   EvtTensor4C tempC; 
   printParticle();
   report(ERROR,"EvtGen") << "and you have asked for the:"<<i
@@ -643,8 +657,6 @@ EvtTensor4C EvtParticle::epsTensorParent(int i) const {
 }
 
 EvtTensor4C EvtParticle::epsTensor(int i) const {
-  int temp;
-  temp = i;
   EvtTensor4C tempC; 
   printParticle();
   report(ERROR,"EvtGen") << "and you have asked for the:"<<i
@@ -658,8 +670,6 @@ EvtTensor4C EvtParticle::epsTensor(int i) const {
 
 EvtRaritaSchwinger EvtParticle::spRSParent(int i) const {
   EvtRaritaSchwinger tempD;
-  int temp;
-  temp = i;
   printParticle();
   report(ERROR,"EvtGen") << "and you have asked for the:"<<i
                         <<"th Rarita-Schwinger spinor."
@@ -671,8 +681,6 @@ EvtRaritaSchwinger EvtParticle::spRSParent(int i) const {
 
 EvtRaritaSchwinger EvtParticle::spRS(int i) const {
   EvtRaritaSchwinger tempD;
-  int temp;
-  temp = i;
   printParticle();
   report(ERROR,"EvtGen") << "and you have asked for the:"<<i
                         <<"th Rarita-Schwinger spinor."
@@ -899,7 +907,7 @@ void EvtParticle::printTreeRec(unsigned int level) const {
       report(INFO,"") << EvtPDL::name(_daug[i]->getId()).c_str()<<" ";
     }
     for(i=0;i<_ndaug;i++){
-      report(INFO,"") << _daug[i]->mass()<<" " << _daug[i]->getSpinStates() << " ";
+      report(INFO,"") << _daug[i]->mass()<< " " << _daug[i]->getP4() << " " <<_daug[i]->getSpinStates() << "; ";
     }
     report(INFO,"")<<endl;
     for(i=0;i<_ndaug;i++){
@@ -1055,7 +1063,8 @@ double EvtParticle::initializePhaseSpace(
     //but keep the decay channel of the parent.
     this->deleteDaughters(t1);
     this->makeDaughters(numdaughter,daughters);
-    this->generateMassTree();
+    bool massTreeOK = this->generateMassTree();
+    if (massTreeOK == false) {return 0.0;}
   }
 
   double weight=0.;
@@ -1121,6 +1130,29 @@ double EvtParticle::initializePhaseSpace(
   return weight;
 }
 
+void EvtParticle::makeDaughters(unsigned int ndaugstore, std::vector<EvtId> idVector) {
+
+  // Convert the STL vector method to use the array method for now, since the
+  // array method pervades most of the EvtGen code...
+
+  unsigned int nVector = idVector.size();
+  if (nVector < ndaugstore) {
+    report(ERROR,"EvtGen") << "Asking to make "<<ndaugstore<<" daughters when there "
+                          << "are only "<<nVector<<" EvtId values available"<<endl;
+    return;
+  }
+
+  EvtId *idArray=new EvtId[ndaugstore];
+  unsigned int i;
+  for (i = 0; i < ndaugstore; i++) {
+    idArray[i] = idVector[i];
+  }
+
+  this->makeDaughters(ndaugstore, idArray);
+
+  delete[] idArray;
+}
+
 void EvtParticle::makeDaughters( unsigned int ndaugstore, EvtId *id){
 
   unsigned int i;
@@ -1159,3 +1191,10 @@ void EvtParticle::setDecayProb(double prob) {
   if ( _decayProb == 0 )  _decayProb=new double;
   *_decayProb=prob;
 }
+
+std::string EvtParticle::getName() {
+  
+  std::string theName = _id.getName();
+  return theName;
+
+}
index 879505e98279b34bad38fcb6523c0c32ed164ed7..5809c10f4d85b4388f0e5a22008d56cade3b5770 100644 (file)
@@ -28,6 +28,7 @@
 #include "EvtGenBase/EvtId.hh"
 #include "EvtGenBase/EvtSpinType.hh"
 #include <string>
+#include <vector>
 
 class EvtDiracSpinor;
 class EvtVector4C;
@@ -157,6 +158,13 @@ public:
   */ 
   void makeDaughters(unsigned int ndaug,EvtId *id);
 
+  /**
+  * Creates the daughters in the list of ids and 
+  * adds them to the parent. Note that momentum
+  * is left uninitialized, this is _only_ creation.
+  */ 
+  void makeDaughters(unsigned int ndaug, std::vector<EvtId> idVector);
+
   /**
   * Similar to the routine above except that here 
   * momentum is generated according to phase space 
@@ -236,6 +244,12 @@ public:
   */
   EvtId getId() const;
 
+  /**
+  * Returns the PDG id of the particle
+  */
+  
+  int getPDGId() const;
+
   /** 
   * Returns particle type.
   */
@@ -370,7 +384,7 @@ public:
   //lange - April 29, 2002
   void setId(EvtId id) { _id=id;}
   void initDecay(bool useMinMass=false);
-  void generateMassTree();
+  bool generateMassTree();
 
   double compMassProb();
 
@@ -396,7 +410,9 @@ public:
   double* decayProb() {return _decayProb;}
   void setDecayProb( double p);
 
-  
+  // Return the name of the particle (from the EvtId number)
+  std::string getName();
+   
 protected:
 
   void setp( double e, double px, double py, double pz) { 
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtParticleDecayList.cxx
rename to TEvtGen/EvtGenBase/EvtParticleDecayList.cpp
index 64279a8f09d85052899f58a8f7508407e8326d57..0e5583d0f02bd3762b4ae2811ac5581b6bbda3ec 100644 (file)
@@ -108,6 +108,19 @@ void EvtParticleDecayList::removeDecay(){
   
 }
 
+EvtDecayBase* EvtParticleDecayList::getDecayModel(int imode) {
+
+  EvtDecayBase* theModel(0);
+  if (imode >= 0 && imode < _nmode) {
+    EvtParticleDecay* theDecay = _decaylist[imode];
+    if (theDecay != 0) {
+      theModel = theDecay->getDecayModel();
+    }
+  }
+
+  return theModel;
+
+}
 
 EvtDecayBase* EvtParticleDecayList::getDecayModel(EvtParticle *p){
 
@@ -224,7 +237,7 @@ void EvtParticleDecayList::setNMode(int nmode){
 }
 
 
-EvtParticleDecay& EvtParticleDecayList::getDecay(int nchannel) {
+EvtParticleDecay& EvtParticleDecayList::getDecay(int nchannel) const {
   if (nchannel>=_nmode) {
     report(ERROR,"EvtGen") <<"Error getting channel:"
                           <<nchannel<<" with only "<<_nmode
@@ -276,6 +289,7 @@ void EvtParticleDecayList::addMode(EvtDecayBase* decay, double brfrsum,
       if ( newDec->getModelName() == "JSCONT" || newDec->getModelName() == "PYCONT" ) continue;
       if ( newDec->getModelName() == "PYGAGA"  ) continue;
       if ( newDec->getModelName() == "LUNDAREALAW" ) continue;
+      if ( newDec->getModelName() == "TAUOLA") continue;
       report(ERROR,"EvtGen") << "Two matching decays with same parent in decay table\n";
       report(ERROR,"EvtGen") << "Please fix that\n";
       report(ERROR,"EvtGen") << "Parent " << EvtPDL::name(newDec->getParentId()).c_str() << endl;
@@ -438,7 +452,7 @@ void EvtParticleDecayList::removeMode(EvtDecayBase* decay) {
 }
 
 
-bool EvtParticleDecayList::isJetSet() {
+bool EvtParticleDecayList::isJetSet() const {
   int i ;
   EvtDecayBase * decayer ;
  
index 5af376e35392b0b8fe4edd6c70775de95065a805..572575c6cb5928970aec8420671cc739d821eaeb 100644 (file)
@@ -46,11 +46,9 @@ public:
   void setNMode(int nmode);
 
   EvtDecayBase* getDecayModel(EvtParticle *p);
-  EvtDecayBase* getDecayModel(int imode) {return _decaylist[imode]->getDecayModel();}
-  const EvtDecayBase* getDecayModel(int imode) const {return _decaylist[imode]->getDecayModel();}
+  EvtDecayBase* getDecayModel(int imode);
 
-
-  EvtParticleDecay& getDecay(int nchannel);
+  EvtParticleDecay& getDecay(int nchannel) const;
 
   double getRawBrfrSum() {return _rawbrfrsum;}
   void setRawBrfrSum(double rawbrfrsum) {_rawbrfrsum=rawbrfrsum;}
@@ -70,7 +68,7 @@ public:
 
   void printSummary();
 
-  bool isJetSet() ;
+  bool isJetSet() const ;
 
 private:
 
index 5fc140675db8f1e2380e38777a31cf4a4bacfd52..1a727bee604138d494347adf08f1b0625a3bbe70 100644 (file)
@@ -4,3 +4,5 @@
 typedef long            clock_t; /* relative time in a specified resolution */
 #endif  /* ifndef _CLOCK_T */
 #endif
+
+#define _unused(x) ((void)x)
index 73c2104b6d286b7167a100a639ed083813bfaabb..13cfb2054d1e2fd90ef23c57a4f3af987faaeebf 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPdf.hh,v 1.15 2009/02/18 03:31:38 ryd Exp $
+ *    File: $Id: EvtPdf.hh,v 1.2 2009-03-16 16:40:15 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 08748f4bb6239edae4b6c1c07fbd6dcb5fe41527..1fee11d6456790a57fa5bd749b222ec5059da035 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPdfMax.hh,v 1.4 2004/12/03 22:18:56 ryd Exp $
+ *    File: $Id: EvtPdfMax.hh,v 1.2 2009-03-16 16:40:15 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index b99cefc468090313fb6c1be40f363e86f98953f8..ba73bce6ce9094b465d734d0d2567f5cee56769e 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPdfSum.hh,v 1.10 2009/02/19 03:22:30 ryd Exp $
+ *    File: $Id: EvtPdfSum.hh,v 1.3 2009-03-16 16:40:16 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtPhotonParticle.cxx
rename to TEvtGen/EvtGenBase/EvtPhotonParticle.cpp
index 86f18be98acd638d71bd495de24e5428209ccbfc..40e0c84e0fe62b611b5e0aa6dc2d66745c5b9876 100644 (file)
@@ -28,6 +28,9 @@
 #include "EvtGenBase/EvtReport.hh"
 using std::endl;
 
+EvtPhotonParticle::EvtPhotonParticle() {
+}
+
 EvtPhotonParticle::~EvtPhotonParticle(){}
 
 void EvtPhotonParticle::init(EvtId part_n,const EvtVector4R& p4){
index a6298b424316a67f5505180c8869973b2050bea5..fe57891a649ddd1b29161eedd830e5a3a9e6d355 100644 (file)
@@ -31,7 +31,7 @@ class EvtPhotonParticle: public EvtParticle {
 
 public:
 
-  EvtPhotonParticle(){}
+  EvtPhotonParticle();
   virtual ~EvtPhotonParticle();
 
   void init(EvtId part_n,double e,double px,double py,double pz);
similarity index 93%
rename from TEvtGen/EvtGenBase/EvtPoint1D.cxx
rename to TEvtGen/EvtGenBase/EvtPoint1D.cpp
index 885743a28bacbc6fbb59a465795c30c9714cdefe..a8354d374b8aa0148b8552f6bc185942f7a0280d 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPoint1D.cc,v 1.4 2004/12/21 19:58:47 ryd Exp $
+ *    File: $Id: EvtPoint1D.cpp,v 1.3 2009-03-16 15:44:41 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 4d84141077e3e32457ba509a5915015c4a2bf7fa..e4db9cdf32b50732cd1a145057e19c5e925aaed3 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPoint1D.hh,v 1.2 2003/06/20 17:20:10 dvoretsk Exp $
+ *    File: $Id: EvtPoint1D.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index baca96f889bdb8e4e745fbd63ae01fb64e280e8b..9981a100a1f3103e3e156b9968373d48419851a8 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPointPred.hh,v 1.1 2003/03/03 05:38:19 dvoretsk Exp $
+ *    File: $Id: EvtPointPred.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -28,4 +28,4 @@ public:
     return x.isValid();
   }
 };
-#endif
+
index 57f68567d4b81a6e6a3949999d48650c0a5c1a98..83b2cffbf6077ab31778d24918bb13a23a8d2958 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPredGen.hh,v 1.3 2003/06/19 02:17:14 dvoretsk Exp $
+ *    File: $Id: EvtPredGen.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 92%
rename from TEvtGen/EvtGenBase/EvtPropBreitWigner.cxx
rename to TEvtGen/EvtGenBase/EvtPropBreitWigner.cpp
index 0690cced1e6efee34fb6871993b75d7b8f330187..f93191306d38bfd82c28d6d81f0c461dc893bd90 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPropBreitWigner.cc,v 1.5 2004/12/21 19:58:47 ryd Exp $
+ *    File: $Id: EvtPropBreitWigner.cpp,v 1.3 2009-03-16 15:44:41 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 7741fde4ad12648b49ff4574e7e64affc600acea..e8520e5323c62739c4254d721047fee6ef58d084 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPropBreitWigner.hh,v 1.3 2003/06/20 17:20:11 dvoretsk Exp $
+ *    File: $Id: EvtPropBreitWigner.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 92%
rename from TEvtGen/EvtGenBase/EvtPropBreitWignerRel.cxx
rename to TEvtGen/EvtGenBase/EvtPropBreitWignerRel.cpp
index 78ed0df8fd85a1daa6034c46cc5d26570c19d7c0..b3e9e28ebcd40736d33da9492526559942dc0c9d 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPropBreitWignerRel.cc,v 1.5 2004/12/21 19:58:47 ryd Exp $
+ *    File: $Id: EvtPropBreitWignerRel.cpp,v 1.3 2009-03-16 15:44:41 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index c8781531a352f2046e5db73d5e7c63ceaf4bf083..e9380caaf02d748eae8ab87e5abcb97702fe59d7 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPropBreitWignerRel.hh,v 1.3 2003/06/20 17:20:11 dvoretsk Exp $
+ *    File: $Id: EvtPropBreitWignerRel.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 97%
rename from TEvtGen/EvtGenBase/EvtPropGounarisSakurai.cxx
rename to TEvtGen/EvtGenBase/EvtPropGounarisSakurai.cpp
index fdade08a79ef3104e5bb6dfbeb90347bb98210b7..90375396547f03fd8874ee72a6ac8c4b4bfb19d7 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPropGounarisSakurai.cc,v 1.2 2008/06/27 23:34:54 tlatham Exp $
+ *    File: $Id: EvtPropGounarisSakurai.cpp,v 1.1 2009-03-16 16:47:03 robbep Exp $
  *  Author: Matt Graham 
  *  modified from EvtPropBreitWignerRel...this should be used for rho's
  *******************************************************************************/
index 7d3d2e3cd950feee696ee7944feb88ecf6384e1f..14d327d04517aa33b5856d307074932cc4cec7a9 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPropGounarisSakurai.hh,v 1.1 2008/03/04 20:02:16 apwagner Exp $
+ *    File: $Id: EvtPropGounarisSakurai.hh,v 1.1 2009-03-16 16:50:50 robbep Exp $
  *  Author: Matt Graham 
  *  modified from EvtPropBreitWignerRel...this should be used for rho's
  *******************************************************************************/
index 14ed38494399d09fc53448dd2acc2771553ce529..d4dc47b02b9bdda98f08af29c73a32960e8c2429 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPropagator.hh,v 1.4 2009/02/18 03:31:38 ryd Exp $
+ *    File: $Id: EvtPropagator.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtPto3PAmp.cxx
rename to TEvtGen/EvtGenBase/EvtPto3PAmp.cpp
index 362daeb1cf0cd39906cc7f3dcc15ff44c007f689..b49b2bcb4857ad97a1c4685b15edc968fe11442d 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPto3PAmp.cc,v 1.21 2009/02/18 03:31:38 ryd Exp $
+ *    File: $Id: EvtPto3PAmp.cpp,v 1.3 2009-03-16 15:44:04 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 9315c86a3aa48b903e579826df1344a6abc3a06d..3f93de7950277d5f46e1c64e0ae25ffb8cc15150 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtPto3PAmp.hh,v 1.14 2008/03/04 20:02:16 apwagner Exp $
+ *    File: $Id: EvtPto3PAmp.hh,v 1.2 2009-03-16 16:41:09 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -30,7 +30,7 @@ public:
   // Numerator type
   enum NumType {NBW=0, RBW_ZEMACH=1, RBW_KUEHN=2, RBW_CLEO=3, FLATTE, GAUSS, DOUBLE_GAUSS,
                NONRES, NONRES_LIN, NONRES_EXP, NONRES_EXP_ADD, NONRES_CCS, NONRES_LAURA, 
-               LASS, GS};
+               LASS, LASS_ELASTIC, LASS_RESONANT, GS};
 
 
   EvtPto3PAmp(EvtDalitzPlot dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes,  
similarity index 94%
rename from TEvtGen/EvtGenBase/EvtPto3PAmpFactory.cxx
rename to TEvtGen/EvtGenBase/EvtPto3PAmpFactory.cpp
index 62e7f363aff1b64f319abab5a152800b196e9ba6..0bc349e9eb136acf2f00e58ab56aa8c01c870dee 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtPto3PAmpFactory.cc,v 1.22 2009/02/19 03:22:30 ryd Exp $
+//      $Id: EvtPto3PAmpFactory.cpp,v 1.3 2009-03-16 15:44:04 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
@@ -84,7 +84,7 @@ void EvtPto3PAmpFactory::processAmp(EvtComplex c, std::vector<std::string> vv, b
     pdf = new EvtDalitzFlatPdf(_dp);
     amp = new EvtNonresonantAmp( &_dp, typeNRes, pairRes, alpha);  
   }
-  else if (vv[0]=="LASS") {
+  else if (vv[0]=="LASS" || vv[0]=="LASS_ELASTIC" || vv[0]=="LASS_RESONANT") {
     pairRes = strToPair(vv[1].c_str());
     double m0 = strtod(vv[2].c_str(),0);
     double g0 = strtod(vv[3].c_str(),0);
@@ -92,7 +92,7 @@ void EvtPto3PAmpFactory::processAmp(EvtComplex c, std::vector<std::string> vv, b
     double r  = strtod(vv[5].c_str(),0);
     double cutoff  = strtod(vv[6].c_str(),0);
     pdf = new EvtDalitzResPdf(_dp,m0,g0,pairRes);
-    amp = new EvtLASSAmp( &_dp, pairRes, m0, g0, a, r, cutoff);
+    amp = new EvtLASSAmp( &_dp, pairRes, m0, g0, a, r, cutoff, vv[0]);
   }
 
   /*
@@ -104,7 +104,7 @@ void EvtPto3PAmpFactory::processAmp(EvtComplex c, std::vector<std::string> vv, b
     // RESONANCE stanza
     
     pairRes = strToPair(vv[1].c_str());
-    EvtSpinType::spintype spinR;
+    EvtSpinType::spintype spinR = EvtSpinType::SCALAR;
     double mR, gR;      
     name = vv[2];
     EvtId resId = EvtPDL::getId(vv[2]);
@@ -166,7 +166,8 @@ void EvtPto3PAmpFactory::processAmp(EvtComplex c, std::vector<std::string> vv, b
       
     // TYPE stanza
     
-    assert(vv[++i] == "TYPE");
+    std::string typeName = vv[++i];
+    assert(typeName == "TYPE");
     std::string type = vv[++i];
     if(_verbose) printf("Propagator type %s\n",vv[i].c_str());
     
@@ -238,7 +239,7 @@ void EvtPto3PAmpFactory::processAmp(EvtComplex c, std::vector<std::string> vv, b
        if(vv[i+1] == "MIN") {
          i++;
          double min = strtod(vv[++i].c_str(),0);
-         if(_verbose) std::cout<<"CUTOFF MIN = "<<min<<std::endl;
+         if(_verbose) std::cout<<"CUTOFF MIN = "<<min<<" "<<minwidths<<std::endl;
          //ensure against cutting off too close to the resonance
          assert( min<(mR-minwidths*gR) );
          partAmp->setmin(min);
@@ -246,7 +247,7 @@ void EvtPto3PAmpFactory::processAmp(EvtComplex c, std::vector<std::string> vv, b
        else if (vv[i+1] == "MAX") {
          i++;
          double max = strtod(vv[++i].c_str(),0);
-         if(_verbose) std::cout<<"CUTOFF MAX = "<<max<<std::endl;
+         if(_verbose) std::cout<<"CUTOFF MAX = "<<max<<" "<<minwidths<<std::endl;
          //ensure against cutting off too close to the resonance
          assert( max>(mR+minwidths*gR) );
          partAmp->setmax(max);
index c5b4aed0c58ac7997640cceba62b0ee1c930ac54..d55d2120f26df9387cf59e8f2942b8cd2c62b867 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtPto3PAmpFactory.hh,v 1.10 2006/01/31 18:08:46 ddujmic Exp $
+//      $Id: EvtPto3PAmpFactory.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
similarity index 94%
rename from TEvtGen/EvtGenBase/EvtRanFor.cxx
rename to TEvtGen/EvtGenBase/EvtRanFor.cpp
index 1b7d0a317e11acc1eb1db05da07e0d0c5219afde..70a162b2eaee7501120d6834212e7cc0e1787f27 100644 (file)
@@ -1,6 +1,6 @@
 //--------------------------------------------------------------------------
 // File and Version Information:
-//      $Id: EvtRanFor.cc,v 1.4 2009/02/18 03:31:38 ryd Exp $
+//      $Id: EvtRanFor.cpp,v 1.5 2009-03-16 15:44:04 robbep Exp $
 //
 // Description:
 //     subroutine emcranfor_.
index f168c5a14439f0fc517d41c8f3bd8834d1ba9453..a849e64183d0e9c4bd0d6c2096177493bbd94ccd 100644 (file)
@@ -24,8 +24,6 @@
 #ifndef EVTRANDOMENGINE_HH
 #define EVTRANDOMENGINE_HH
 
-#include <TRandom.h>
-
 class EvtRandomEngine{
 
 public:
@@ -38,33 +36,6 @@ private:
 
 };
 
-//define class for generating random numbers (I put this in place of the commented part)
-class EvtNUMRandomEngine:public EvtRandomEngine{
-public:
-  double random(){return  gRandom->Rndm();}
-};
-
-
-//old lines: those are in the macro testEvtGen.cc    
-/*
-//define class for generating random numbers
-class EvtCLHEPRandomEngine:public EvtRandomEngine{
-public:
-  double random();
-};
-
-#ifdef NOCLHEPNAMESPACE
-namespace CLHEP {
-typedef HepJamesRandom HepJamesRandom ;
-}
-#endif
-
-double EvtCLHEPRandomEngine::random(){
-  static CLHEP::HepJamesRandom randengine;
-  return randengine.flat();
-}
-*/
-
 #endif
 
 
similarity index 91%
rename from TEvtGen/EvtGenBase/EvtRanf.cxx
rename to TEvtGen/EvtGenBase/EvtRanf.cpp
index 79b0542f31554a92cb3180cb67d42f15fe766512..ae5fc0729606e7bbe7bda7b91b47788e9dfb7176 100644 (file)
@@ -1,6 +1,6 @@
 //--------------------------------------------------------------------------
 // File and Version Information:
-//      $Id: EvtRanf.cc,v 1.1 2009/02/28 11:14:16 lange Exp $
+//      $Id: EvtRanf.cpp,v 1.5 2009-03-16 15:44:04 robbep Exp $
 //
 // Description:
 //     subroutine evtranf_.
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtRelBreitWignerBarrierFact.cxx
rename to TEvtGen/EvtGenBase/EvtRelBreitWignerBarrierFact.cpp
index ea3500e2c361dca7225f79d779699b095e8ce5ae..91853eee6ece78a85227e2879f51d44212fcd1b4 100644 (file)
@@ -49,7 +49,8 @@ EvtRelBreitWignerBarrierFact::EvtRelBreitWignerBarrierFact(double mass, double w
   _mass=mass;
   _width=width;
   _spin=sp;
-  _blatt=3.0;
+  _blattDecay=3.0;
+  _blattBirth=1.0;
   _maxRange=maxRange;
   _errorCond=false;
 
@@ -73,7 +74,8 @@ EvtRelBreitWignerBarrierFact::EvtRelBreitWignerBarrierFact(const EvtRelBreitWign
 {
   _massMax=x._massMax;
   _massMin=x._massMin;
-  _blatt=x._blatt;
+  _blattDecay=x._blattDecay;
+  _blattBirth=x._blattBirth;
   _maxRange=x._maxRange;
   _includeDecayFact=x._includeDecayFact;
   _includeBirthFact=x._includeBirthFact;
@@ -87,7 +89,8 @@ EvtRelBreitWignerBarrierFact& EvtRelBreitWignerBarrierFact::operator=(const EvtR
   _spin=x._spin;
   _massMax=x._massMax;
   _massMin=x._massMin;
-  _blatt=x._blatt;
+  _blattDecay=x._blattDecay;
+  _blattBirth=x._blattBirth;
   _maxRange=x._maxRange;
   _includeDecayFact=x._includeDecayFact;
   _includeBirthFact=x._includeBirthFact;
@@ -220,10 +223,11 @@ double EvtRelBreitWignerBarrierFact::getRandMass(EvtId *parId,int nDaug, EvtId *
   // Define relativistic propagator amplitude
 
   EvtTwoBodyVertex vd(massD1,massD2,_mass,Lmin/2);
-  vd.set_f(_blatt);
+  vd.set_f(_blattDecay);
   EvtPropBreitWignerRel bw(_mass,_width);
   EvtMassAmp amp(bw,vd);
 
+
   if ( _includeDecayFact) {
     amp.addDeathFact();
     amp.addDeathFactFF();
@@ -232,10 +236,7 @@ double EvtRelBreitWignerBarrierFact::getRandMass(EvtId *parId,int nDaug, EvtId *
     if ( _includeBirthFact ) {
 
       EvtTwoBodyVertex vb(_mass,massOthD,massParent,birthl/2);
-      //whoops 060116
-      //needed to actually tell the vertex about the form factor!
-      //otherwise its just 1
-      if ( _applyFixForSP8 ) vb.set_f(_blatt);
+      vb.set_f(_blattBirth);
       amp.setBirthVtx(vb);
       amp.addBirthFact();
       amp.addBirthFactFF();
@@ -266,7 +267,6 @@ double EvtRelBreitWignerBarrierFact::getRandMass(EvtId *parId,int nDaug, EvtId *
   if ( tempMaxLoc < tempMinMass) tempMaxLoc=tempMinMass;
 
   double safetyFactor=1.2;
-  if ( _applyFixForSP8 ) safetyFactor=1.4;
 
   EvtPdfMax<EvtPoint1D> max(safetyFactor*pdf.evaluate(EvtPoint1D(tempMinMass,tempMax,tempMaxLoc)));
 
@@ -280,7 +280,7 @@ double EvtRelBreitWignerBarrierFact::getRandMass(EvtId *parId,int nDaug, EvtId *
   EvtPoint1D point = predgen();
   return point.value();
 
-}
+};
 
 
 
index e47f43bac04dff746d83dc8d39b5e431d24e096a..459ac218c4803793fca2d4f67b6e263397e20551 100644 (file)
@@ -43,11 +43,13 @@ public:
   // ie B->rho K rho->pipi, othDaugId = K
    double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId, double maxMass, double *dauMasses);
 
-  virtual void reSetBlatt(double blatt) { _blatt = blatt; }
+  virtual void reSetBlatt(double blatt) { _blattDecay = blatt; }
+  virtual void reSetBlattBirth(double blatt) { _blattBirth = blatt; }
 
 protected:
 
-  double _blatt;
+  double _blattDecay;
+  double _blattBirth;
   bool _errorCond;
 
 }; 
index 43dbca8fd469a7858010cd9ada4837b9bef95eaa..35e5106157314ba75eea15b4f89dc7d9d0e0bb5f 100644 (file)
@@ -29,7 +29,8 @@ class EvtId;
 class EvtSemiLeptonicAmp{
 
  public:
-
+  virtual ~EvtSemiLeptonicAmp( ) { } ;
+   
   //Daughters are initialized and have been added to the parent.
   //No need to carry around the daughters seperately!
 
diff --git a/TEvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp b/TEvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp
new file mode 100644 (file)
index 0000000..eb7e4e9
--- /dev/null
@@ -0,0 +1,801 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtSemiLeptonicBaryonAmp.cc
+//
+// Description: Routine to implement semileptonic decays of Dirac baryons
+//
+// Modification history:
+//
+//    R.J. Tesarek     May 28, 2004     Module created
+//    Karen Gibson     1/20/2006        Module updated for 1/2+->1/2+,
+//                                      1/2+->1/2-, 1/2+->3/2- Lambda decays
+//
+//--------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtDiracSpinor.hh"
+#include "EvtGenBase/EvtDiracParticle.hh"
+#include "EvtGenBase/EvtRaritaSchwinger.hh"
+#include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtAmp.hh"
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+#include "EvtGenBase/EvtGammaMatrix.hh"
+
+#include <stdlib.h>
+
+using std::endl;
+
+
+EvtSemiLeptonicBaryonAmp::~EvtSemiLeptonicBaryonAmp(){
+}
+
+
+void EvtSemiLeptonicBaryonAmp::CalcAmp( EvtParticle *parent,
+                                       EvtAmp& amp,
+                                       EvtSemiLeptonicFF *FormFactors ) {
+
+  static EvtId EM=EvtPDL::getId("e-");
+  static EvtId MUM=EvtPDL::getId("mu-");
+  static EvtId TAUM=EvtPDL::getId("tau-");
+  static EvtId EP=EvtPDL::getId("e+");
+  static EvtId MUP=EvtPDL::getId("mu+");
+  static EvtId TAUP=EvtPDL::getId("tau+");
+
+  //Add the lepton and neutrino 4 momenta to find q2
+
+  EvtVector4R q = parent->getDaug(1)->getP4() 
+                    + parent->getDaug(2)->getP4(); 
+  double q2 = (q.mass2());
+
+  double f1v,f1a,f2v,f2a;
+  double m_meson = parent->getDaug(0)->mass();
+
+  FormFactors->getbaryonff(parent->getId(),
+                          parent->getDaug(0)->getId(),
+                           q2,
+                           m_meson,
+                           &f1v, 
+                           &f1a, 
+                           &f2v, 
+                           &f2a);
+
+  EvtVector4R p4b;
+  p4b.set(parent->mass(),0.0,0.0,0.0);
+  
+  EvtVector4C temp_00_term1;
+  EvtVector4C temp_00_term2;
+  
+  EvtVector4C temp_01_term1;
+  EvtVector4C temp_01_term2;
+  
+  EvtVector4C temp_10_term1;
+  EvtVector4C temp_10_term2;
+  
+  EvtVector4C temp_11_term1;
+  EvtVector4C temp_11_term2;
+  
+  EvtDiracSpinor p0=parent->sp(0);
+  EvtDiracSpinor p1=parent->sp(1);
+  
+  EvtDiracSpinor d0=parent->getDaug(0)->spParent(0);
+  EvtDiracSpinor d1=parent->getDaug(0)->spParent(1);
+  
+  temp_00_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p0)));
+  temp_00_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
+  temp_01_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p1)));
+  temp_01_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
+  temp_10_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p0)));
+  temp_10_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
+  temp_11_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p1)));
+  temp_11_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
+  
+  temp_00_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p0)));
+  temp_00_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
+  temp_01_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p1)));
+  temp_01_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
+  temp_10_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p0)));
+  temp_10_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
+  temp_11_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p1)));
+  temp_11_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
+  
+  temp_00_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p0)));
+  temp_00_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
+  temp_01_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p1)));
+  temp_01_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
+  temp_10_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p0)));
+  temp_10_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
+  temp_11_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p1)));
+  temp_11_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
+  
+  temp_00_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p0)));
+  temp_00_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
+  temp_01_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p1)));
+  temp_01_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
+  temp_10_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p0)));
+  temp_10_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
+  temp_11_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p1)));
+  temp_11_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
+  
+
+
+  EvtVector4C l1,l2;
+
+  EvtId l_num = parent->getDaug(1)->getId();
+  if (l_num==EM||l_num==MUM||l_num==TAUM){
+
+    l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
+                          parent->getDaug(2)->spParentNeutrino());
+    l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
+                          parent->getDaug(2)->spParentNeutrino());
+  }
+  else{
+    if (l_num==EP||l_num==MUP||l_num==TAUP){
+    l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
+                           parent->getDaug(1)->spParent(0));
+    l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
+                           parent->getDaug(1)->spParent(1));
+    }
+    else{
+      report(ERROR,"EvtGen") << "Wrong lepton number"<<endl;
+    }
+  }
+
+  amp.vertex(0,0,0,l1.cont(temp_00_term1+temp_00_term2));
+  amp.vertex(0,0,1,l2.cont(temp_00_term1+temp_00_term2));
+
+  amp.vertex(0,1,0,l1.cont(temp_01_term1+temp_01_term2));
+  amp.vertex(0,1,1,l2.cont(temp_01_term1+temp_01_term2));
+
+  amp.vertex(1,0,0,l1.cont(temp_10_term1+temp_10_term2));
+  amp.vertex(1,0,1,l2.cont(temp_10_term1+temp_10_term2));
+
+  amp.vertex(1,1,0,l1.cont(temp_11_term1+temp_11_term2));
+  amp.vertex(1,1,1,l2.cont(temp_11_term1+temp_11_term2));
+
+  return;
+}
+
+
+
+double EvtSemiLeptonicBaryonAmp::CalcMaxProb( EvtId parent, EvtId baryon, 
+                                             EvtId lepton, EvtId nudaug,
+                                             EvtSemiLeptonicFF *FormFactors,
+                                             EvtComplex r00, EvtComplex r01, 
+                                             EvtComplex r10, EvtComplex r11) {
+
+  //This routine takes the arguements parent, baryon, and lepton
+  //number, and a form factor model, and returns a maximum
+  //probability for this semileptonic form factor model.  A
+  //brute force method is used.  The 2D cos theta lepton and
+  //q2 phase space is probed.
+
+  //Start by declaring a particle at rest.
+
+  //It only makes sense to have a scalar parent.  For now. 
+  //This should be generalized later.
+
+  //  EvtScalarParticle *scalar_part;
+  //  scalar_part=new EvtScalarParticle;
+
+  EvtDiracParticle *dirac_part;
+  EvtParticle *root_part;
+  dirac_part=new EvtDiracParticle;
+
+  //cludge to avoid generating random numbers!
+  //  scalar_part->noLifeTime();
+  dirac_part->noLifeTime();
+
+  EvtVector4R p_init;
+  
+  p_init.set(EvtPDL::getMass(parent),0.0,0.0,0.0);
+  //  scalar_part->init(parent,p_init);
+  //  root_part=(EvtParticle *)scalar_part;
+  //  root_part->set_type(EvtSpinType::SCALAR);
+
+  dirac_part->init(parent,p_init);
+  root_part=(EvtParticle *)dirac_part;
+  root_part->setDiagonalSpinDensity();      
+
+  EvtParticle *daughter, *lep, *trino;
+  
+  EvtAmp amp;
+
+  EvtId listdaug[3];
+  listdaug[0] = baryon;
+  listdaug[1] = lepton;
+  listdaug[2] = nudaug;
+
+  amp.init(parent,3,listdaug);
+
+  root_part->makeDaughters(3,listdaug);
+  daughter=root_part->getDaug(0);
+  lep=root_part->getDaug(1);
+  trino=root_part->getDaug(2);
+
+  //cludge to avoid generating random numbers!
+  daughter->noLifeTime();
+  lep->noLifeTime();
+  trino->noLifeTime();
+
+
+  //Initial particle is unpolarized, well it is a scalar so it is 
+  //trivial
+  EvtSpinDensity rho;
+  rho.setDiag(root_part->getSpinStates());
+  
+  double mass[3];
+  
+  double m = root_part->mass();
+  
+  EvtVector4R p4baryon, p4lepton, p4nu, p4w;
+  double q2max;
+
+  double q2, elepton, plepton;
+  int i,j;
+  double erho,prho,costl;
+
+  double maxfoundprob = 0.0;
+  double prob = -10.0;
+  int massiter;
+
+  for (massiter=0;massiter<3;massiter++){
+
+    mass[0] = EvtPDL::getMass(baryon);
+    mass[1] = EvtPDL::getMass(lepton);
+    mass[2] = EvtPDL::getMass(nudaug);
+    if ( massiter==1 ) {
+      mass[0] = EvtPDL::getMinMass(baryon);
+    }
+    if ( massiter==2 ) {
+      mass[0] = EvtPDL::getMaxMass(baryon);
+    }
+
+    q2max = (m-mass[0])*(m-mass[0]);
+    
+    //loop over q2
+
+    for (i=0;i<25;i++) {
+      q2 = ((i+0.5)*q2max)/25.0;
+      
+      erho = ( m*m + mass[0]*mass[0] - q2 )/(2.0*m);
+      
+      prho = sqrt(erho*erho-mass[0]*mass[0]);
+      
+      p4baryon.set(erho,0.0,0.0,-1.0*prho);
+      p4w.set(m-erho,0.0,0.0,prho);
+      
+      //This is in the W rest frame
+      elepton = (q2+mass[1]*mass[1])/(2.0*sqrt(q2));
+      plepton = sqrt(elepton*elepton-mass[1]*mass[1]);
+      
+      double probctl[3];
+
+      for (j=0;j<3;j++) {
+       
+        costl = 0.99*(j - 1.0);
+       
+       //These are in the W rest frame. Need to boost out into
+       //the B frame.
+        p4lepton.set(elepton,0.0,
+                 plepton*sqrt(1.0-costl*costl),plepton*costl);
+        p4nu.set(plepton,0.0,
+                -1.0*plepton*sqrt(1.0-costl*costl),-1.0*plepton*costl);
+
+       EvtVector4R boost((m-erho),0.0,0.0,1.0*prho);
+        p4lepton=boostTo(p4lepton,boost);
+        p4nu=boostTo(p4nu,boost);
+
+       //Now initialize the daughters...
+
+        daughter->init(baryon,p4baryon);
+        lep->init(lepton,p4lepton);
+        trino->init(nudaug,p4nu);
+
+        CalcAmp(root_part,amp,FormFactors,r00,r01,r10,r11);
+
+       //Now find the probability at this q2 and cos theta lepton point
+        //and compare to maxfoundprob.
+
+       //Do a little magic to get the probability!!
+       prob = rho.normalizedProb(amp.getSpinDensity());
+
+       probctl[j]=prob;
+      }
+
+      //probclt contains prob at ctl=-1,0,1.
+      //prob=a+b*ctl+c*ctl^2
+
+      double a=probctl[1];
+      double b=0.5*(probctl[2]-probctl[0]);
+      double c=0.5*(probctl[2]+probctl[0])-probctl[1];
+
+      prob=probctl[0];
+      if (probctl[1]>prob) prob=probctl[1];
+      if (probctl[2]>prob) prob=probctl[2];
+
+      if (fabs(c)>1e-20){
+       double ctlx=-0.5*b/c;
+       if (fabs(ctlx)<1.0){
+         double probtmp=a+b*ctlx+c*ctlx*ctlx;
+         if (probtmp>prob) prob=probtmp;
+       } 
+
+      }
+
+      //report(DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
+      //                           << probctl[0]<<" "
+      //                           << probctl[1]<<" "
+      //                           << probctl[2]<<std::endl;
+
+      if ( prob > maxfoundprob ) {
+       maxfoundprob = prob; 
+      }
+
+    }
+    if ( EvtPDL::getWidth(baryon) <= 0.0 ) {
+      //if the particle is narrow dont bother with changing the mass.
+      massiter = 4;
+    }
+
+  }
+  root_part->deleteTree();  
+
+  maxfoundprob *=1.1;
+  return maxfoundprob;
+  
+}
+void EvtSemiLeptonicBaryonAmp::CalcAmp(EvtParticle *parent,
+                                      EvtAmp& amp,
+                                      EvtSemiLeptonicFF *FormFactors,
+                                      EvtComplex r00, EvtComplex r01, 
+                                      EvtComplex r10, EvtComplex r11) {
+  //  Leptons
+  static EvtId EM=EvtPDL::getId("e-");
+  static EvtId MUM=EvtPDL::getId("mu-");
+  static EvtId TAUM=EvtPDL::getId("tau-");
+  //  Anti-Leptons
+  static EvtId EP=EvtPDL::getId("e+");
+  static EvtId MUP=EvtPDL::getId("mu+");
+  static EvtId TAUP=EvtPDL::getId("tau+");
+
+  //  Baryons
+  static EvtId LAMCP=EvtPDL::getId("Lambda_c+");
+  static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+");
+  static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+");
+  static EvtId LAMB=EvtPDL::getId("Lambda_b0");
+
+  // Anti-Baryons
+  static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-");
+  static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-");
+  static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-");
+  static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
+
+  // Set the spin density matrix of the parent baryon
+  EvtSpinDensity rho;
+  rho.setDim(2);
+  rho.set(0,0,r00);
+  rho.set(0,1,r01);
+
+  rho.set(1,0,r10);
+  rho.set(1,1,r11);
+
+  EvtVector4R vector4P = parent->getP4Lab();
+  double pmag = vector4P.d3mag();
+  double cosTheta = vector4P.get(3)/pmag;
+  
+  double theta = acos(cosTheta);
+  double phi = atan2(vector4P.get(2), vector4P.get(1));
+  
+  parent->setSpinDensityForwardHelicityBasis(rho,phi,theta, 0.0);
+  //parent->setSpinDensityForward(rho);
+
+  // Set the four momentum of the parent baryon in it's rest frame
+  EvtVector4R p4b;
+  p4b.set(parent->mass(), 0.0,0.0,0.0);
+
+  // Get the four momentum of the daughter baryon in the parent's rest frame
+  EvtVector4R p4daught = parent->getDaug(0)->getP4();
+  
+  // Add the lepton and neutrino 4 momenta to find q (q^2)
+  EvtVector4R q = parent->getDaug(1)->getP4() 
+    + parent->getDaug(2)->getP4();
+  
+  double q2 = q.mass2();
+
+
+  EvtId l_num = parent->getDaug(1)->getId();
+  EvtId bar_num = parent->getDaug(0)->getId();
+  EvtId par_num = parent->getId();
+  
+  double baryonmass = parent->getDaug(0)->mass();
+  
+  // Handle spin-1/2 daughter baryon Dirac spinor cases
+  if( EvtPDL::getSpinType(parent->getDaug(0)->getId())==EvtSpinType::DIRAC ) {
+
+    // Set the form factors
+    double f1,f2,f3,g1,g2,g3;
+    FormFactors->getdiracff( par_num,
+                            bar_num,
+                            q2,
+                            baryonmass,
+                            &f1, &f2, &f3,
+                            &g1, &g2, &g3);
+    
+    const double form_fact[6] = {f1, f2, f3, g1, g2, g3};
+    
+    EvtVector4C b11, b12, b21, b22, l1, l2;
+
+    //  Lepton Current
+    if(l_num==EM || l_num==MUM || l_num==TAUM){
+
+      l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
+                           parent->getDaug(2)->spParentNeutrino());
+      l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
+                           parent->getDaug(2)->spParentNeutrino());
+      
+    } else if (l_num==EP || l_num==MUP || l_num==TAUP) {
+
+      l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
+                           parent->getDaug(1)->spParent(0));
+      l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
+                           parent->getDaug(1)->spParent(1));
+      
+    } else {
+      report(ERROR,"EvtGen")<< "Wrong lepton number \n";
+      ::abort();
+    }
+
+    // Baryon current
+
+    // Flag for particle/anti-particle parent, daughter with same/opp. parity
+    // pflag = 0 => particle, same parity parent, daughter
+    // pflag = 1 => particle, opp. parity parent, daughter
+    // pflag = 2 => anti-particle, same parity parent, daughter
+    // pflag = 3 => anti-particle, opp. parity parent, daughter
+
+    int pflag = 0;
+
+    // Handle 1/2+ -> 1/2+ first
+    if ( (par_num==LAMB && bar_num==LAMCP) 
+        || (par_num==LAMBB && bar_num==LAMCM) ) {
+
+      // Set particle/anti-particle flag
+      if (bar_num==LAMCP)
+       pflag = 0;
+      else if (bar_num==LAMCM)
+       pflag = 2;
+
+      b11=EvtBaryonVACurrent(parent->getDaug(0)->spParent(0),
+                            parent->sp(0),
+                            p4b, p4daught, form_fact, pflag);
+      b21=EvtBaryonVACurrent(parent->getDaug(0)->spParent(0),
+                            parent->sp(1),
+                            p4b, p4daught, form_fact, pflag);
+      b12=EvtBaryonVACurrent(parent->getDaug(0)->spParent(1),
+                            parent->sp(0),
+                            p4b, p4daught, form_fact, pflag);
+      b22=EvtBaryonVACurrent(parent->getDaug(0)->spParent(1),
+                            parent->sp(1),
+                            p4b, p4daught, form_fact, pflag);
+    }
+
+    // Handle 1/2+ -> 1/2- second
+    else if( (par_num==LAMB && bar_num==LAMC1P) 
+            || (par_num==LAMBB && bar_num==LAMC1M) ) {
+      
+      // Set particle/anti-particle flag
+      if (bar_num==LAMC1P)
+       pflag = 1;
+      else if (bar_num==LAMC1M)
+       pflag = 3;
+
+      b11=EvtBaryonVACurrent((parent->getDaug(0)->spParent(0)),
+                            (EvtGammaMatrix::g5()*parent->sp(0)),
+                            p4b, p4daught, form_fact, pflag);
+      b21=EvtBaryonVACurrent((parent->getDaug(0)->spParent(0)),
+                            (EvtGammaMatrix::g5()*parent->sp(1)),
+                            p4b, p4daught, form_fact, pflag);
+      b12=EvtBaryonVACurrent((parent->getDaug(0)->spParent(1)),
+                            (EvtGammaMatrix::g5()*parent->sp(0)),
+                            p4b, p4daught, form_fact, pflag);
+      b22=EvtBaryonVACurrent((parent->getDaug(0)->spParent(1)),
+                            (EvtGammaMatrix::g5()*parent->sp(1)),
+                            p4b, p4daught, form_fact, pflag);
+      
+    }
+
+    else {
+      report(ERROR,"EvtGen") << "Dirac semilep. baryon current " 
+                            << "not implemented for this decay sequence." 
+                            << std::endl;
+      ::abort();
+    }
+     
+    amp.vertex(0,0,0,l1*b11);
+    amp.vertex(0,0,1,l2*b11);
+    
+    amp.vertex(1,0,0,l1*b21);
+    amp.vertex(1,0,1,l2*b21);
+    
+    amp.vertex(0,1,0,l1*b12);
+    amp.vertex(0,1,1,l2*b12);
+    
+    amp.vertex(1,1,0,l1*b22);
+    amp.vertex(1,1,1,l2*b22);
+
+  }
+  
+  // Need special handling for the spin-3/2 daughter baryon 
+  // Rarita-Schwinger spinor cases
+  else if( EvtPDL::getSpinType(parent->getDaug(0)->getId())==EvtSpinType::RARITASCHWINGER ) {
+    
+    // Set the form factors
+    double f1,f2,f3,f4,g1,g2,g3,g4;
+    FormFactors->getraritaff( par_num,
+                             bar_num,
+                             q2,
+                             baryonmass,
+                             &f1, &f2, &f3, &f4,
+                             &g1, &g2, &g3, &g4);
+    
+    const double form_fact[8] = {f1, f2, f3, f4, g1, g2, g3, g4};
+    
+    EvtId l_num = parent->getDaug(1)->getId();
+    
+    EvtVector4C b11, b12, b21, b22, b13, b23, b14, b24, l1, l2;
+
+    //  Lepton Current
+    if (l_num==EM || l_num==MUM || l_num==TAUM) {
+      //  Lepton Current
+      l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
+                           parent->getDaug(2)->spParentNeutrino());
+      l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
+                           parent->getDaug(2)->spParentNeutrino());
+    }
+    else if (l_num==EP || l_num==MUP || l_num==TAUP) {
+      l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
+                           parent->getDaug(1)->spParent(0));
+      l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
+                           parent->getDaug(1)->spParent(1));
+      
+    } else {
+      report(ERROR,"EvtGen")<< "Wrong lepton number \n";
+    }
+      
+    //  Baryon Current
+    // Declare particle, anti-particle flag, same/opp. parity
+    // pflag = 0 => particle
+    // pflag = 1 => anti-particle
+    int pflag = 0;
+    
+    // Handle cases of 1/2+ -> 3/2-
+    if (par_num==LAMB && bar_num==LAMC2P) {
+      // Set flag for particle case
+      pflag = 0;
+    }
+    else if (par_num==LAMBB && bar_num==LAMC2M) {
+      // Set flag for anti-particle case
+      pflag = 1;
+    }
+    else {
+      report(ERROR,"EvtGen") << "Rarita-Schwinger semilep. baryon current " 
+                            << "not implemented for this decay sequence." 
+                            << std::endl;
+      ::abort();
+    }
+     
+    // Baryon current
+    b11=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(0),
+                                parent->sp(0),
+                                p4b, p4daught, form_fact, pflag);
+    b21=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(0),
+                                parent->sp(1),
+                                p4b, p4daught, form_fact, pflag);
+    
+    b12=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(1),
+                                parent->sp(0),
+                                p4b, p4daught, form_fact, pflag);
+    b22=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(1),
+                                parent->sp(1),
+                                p4b, p4daught, form_fact, pflag);
+    
+    b13=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(2),
+                                parent->sp(0),
+                                p4b, p4daught, form_fact, pflag);
+    b23=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(2),
+                                parent->sp(1),
+                                p4b, p4daught, form_fact, pflag);
+    
+    b14=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(3),
+                                parent->sp(0),
+                                p4b, p4daught, form_fact, pflag);
+    b24=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(3),
+                                parent->sp(1),
+                                p4b, p4daught, form_fact, pflag);
+    
+    amp.vertex(0,0,0,l1*b11);
+    amp.vertex(0,0,1,l2*b11);
+    
+    amp.vertex(1,0,0,l1*b21);
+    amp.vertex(1,0,1,l2*b21);
+    
+    amp.vertex(0,1,0,l1*b12);
+    amp.vertex(0,1,1,l2*b12);
+    
+    amp.vertex(1,1,0,l1*b22);
+    amp.vertex(1,1,1,l2*b22);
+    
+    amp.vertex(0,2,0,l1*b13);
+    amp.vertex(0,2,1,l2*b13);
+    
+    amp.vertex(1,2,0,l1*b23);
+    amp.vertex(1,2,1,l2*b23);
+
+    amp.vertex(0,3,0,l1*b14);
+    amp.vertex(0,3,1,l2*b14);
+    
+    amp.vertex(1,3,0,l1*b24);
+    amp.vertex(1,3,1,l2*b24);
+
+  }
+
+}
+  
+
+EvtVector4C EvtSemiLeptonicBaryonAmp::EvtBaryonVACurrent( const EvtDiracSpinor& Bf,
+                                                         const EvtDiracSpinor& Bi, 
+                                                         EvtVector4R parent, 
+                                                         EvtVector4R daught, 
+                                                         const double *ff,
+                                                         int pflag) {
+
+  // flag == 0 => particle, same parity 
+  // flag == 1 => particle, opposite parity 
+  // flag == 2 => anti-particle, same parity 
+  // flag == 3 => anti-particle, opposite parity 
+
+  // particle
+  EvtComplex cv = EvtComplex(1.0, 0.);
+  EvtComplex ca = EvtComplex(1.0, 0.);
+
+  EvtComplex cg0 = EvtComplex(1.0, 0.);
+  EvtComplex cg5 = EvtComplex(1.0, 0.);
+
+  // antiparticle- same parity parent & daughter
+  if( pflag == 2 ) {
+    cv = EvtComplex(-1.0, 0.);
+    ca = EvtComplex(1.0, 0.);
+
+    cg0 =  EvtComplex(1.0, 0.0);
+    cg5 =  EvtComplex(0.0, -1.0);
+  }
+  // antiparticle- opposite parity parent & daughter
+  else if( pflag == 3) {
+    cv = EvtComplex(1.0, 0.);
+    ca = EvtComplex(-1.0, 0.);
+
+    cg0 =  EvtComplex(0.0, -1.0);
+    cg5 =  EvtComplex(1.0, 0.0);
+  }
+
+  EvtVector4C t[6];
+
+  // Term 1 = \bar{u}(p',s')*(F_1(q^2)*\gamma_{mu})*u(p,s)
+  t[0] = cv*EvtLeptonVCurrent( Bf, Bi);
+
+  // Term 2 = \bar{u}(p',s')*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
+  t[1] = cg0*EvtLeptonSCurrent( Bf, Bi ) * (parent/parent.mass());
+
+  // Term 3 = \bar{u}(p',s')*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
+  t[2] = cg0*EvtLeptonSCurrent( Bf, Bi ) * (daught/daught.mass());
+
+  // Term 4 = \bar{u}(p',s')*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
+  t[3] = ca*EvtLeptonACurrent( Bf, Bi);
+
+  // Term 5 =  \bar{u}(p',s')*(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
+  t[4] = cg5*EvtLeptonPCurrent( Bf, Bi ) * (parent/parent.mass());
+
+  // Term 6 = \bar{u}(p',s')*(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
+  t[5] = cg5*EvtLeptonPCurrent( Bf, Bi ) * (daught/daught.mass());
+
+  // Sum the individual terms
+  EvtVector4C current = (ff[0]*t[0] + ff[1]*t[1] + ff[2]*t[2]
+                        - ff[3]*t[3] - ff[4]*t[4] - ff[5]*t[5]);
+  
+  return current;
+}
+
+EvtVector4C EvtSemiLeptonicBaryonAmp::EvtBaryonVARaritaCurrent( const EvtRaritaSchwinger& Bf,
+                                                               const EvtDiracSpinor& Bi, 
+                                                               EvtVector4R parent, 
+                                                               EvtVector4R daught, 
+                                                               const double *ff,
+                                                               int pflag) {
+
+  // flag == 0 => particle
+  // flag == 1 => anti-particle
+
+  // particle
+  EvtComplex cv = EvtComplex(1.0, 0.);
+  EvtComplex ca = EvtComplex(1.0, 0.);
+
+  EvtComplex cg0 = EvtComplex(1.0, 0.);
+  EvtComplex cg5 = EvtComplex(1.0, 0.);
+
+  // antiparticle
+  if( pflag == 1 ) {
+    cv = EvtComplex(-1.0, 0.);
+    ca = EvtComplex(1.0, 0.);
+    cg0 =  EvtComplex(1.0, 0.0);
+    cg5 =  EvtComplex(0.0, -1.0);
+ }
+
+  EvtVector4C t[8];
+  EvtTensor4C id;
+  id.setdiag(1.0,1.0,1.0,1.0);
+
+  EvtDiracSpinor tmp;
+  for(int i=0;i<4;i++){
+    tmp.set_spinor(i,Bf.getVector(i)*parent);
+  }
+
+  EvtVector4C v1,v2;
+  for(int i=0;i<4;i++){
+    v1.set(i,EvtLeptonSCurrent(Bf.getSpinor(i),Bi));
+    v2.set(i,EvtLeptonPCurrent(Bf.getSpinor(i),Bi));
+  }
+
+  // Term 1 = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_1(q^2)*\gamma_{mu})*u(p,s)
+  t[0] = (cv/parent.mass()) * EvtLeptonVCurrent(tmp, Bi);
+
+  // Term 2 
+  // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
+  t[1] = ((cg0/parent.mass()) * EvtLeptonSCurrent(tmp, Bi)) * (parent/parent.mass());
+
+  // Term 3 
+  // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
+  t[2] = ((cg0/parent.mass()) * EvtLeptonSCurrent(tmp, Bi)) * (daught/daught.mass());
+
+  // Term 4 = \bar{u}^{\alpha}(p',s')*(F_4(q^2)*g_{\alpha,\mu})*u(p,s)
+  t[3] = cg0*(id.cont2(v1));
+
+  // Term 5 
+  // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
+  t[4] = (ca/parent.mass()) * EvtLeptonACurrent(tmp, Bi);
+
+  // Term 6 
+  // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
+  //      *(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
+  t[5] = ((cg5/parent.mass()) * EvtLeptonPCurrent(tmp, Bi)) * (parent/parent.mass());
+
+  // Term 7 
+  // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
+  //      *(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
+  t[6] = ((cg5/parent.mass()) * EvtLeptonPCurrent(tmp, Bi)) * (daught/daught.mass());
+
+  // Term 8 = \bar{u}^{\alpha}(p',s')*(G_4(q^2)*g_{\alpha,\mu}*\gamma_5))*u(p,s)
+  t[7] = cg5*(id.cont2(v2));
+
+  // Sum the individual terms
+  EvtVector4C current = (ff[0]*t[0] + ff[1]*t[1] + ff[2]*t[2] + ff[3]*t[3]
+                        - ff[4]*t[4] - ff[5]*t[5] - ff[6]*t[6] - ff[7]*t[7]);
+  
+  return current;
+}
diff --git a/TEvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.cxx b/TEvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.cxx
deleted file mode 100644 (file)
index 8df266a..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtSemiLeptonicBaryonAmp.cc
-//
-// Description: Routine to implement semileptonic decays to vector
-//              mesons. 
-//
-// Modification history:
-//
-//    Lange    Oct 20, 2004   Module created.
-//
-//------------------------------------------------------------------------
-//
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtGenKine.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenBase/EvtTensor4C.hh"
-#include "EvtGenBase/EvtVector4C.hh"
-#include "EvtGenBase/EvtDiracSpinor.hh"
-#include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
-#include "EvtGenBase/EvtId.hh"
-#include "EvtGenBase/EvtAmp.hh"
-#include "EvtGenBase/EvtSemiLeptonicFF.hh"
-#include "EvtGenBase/EvtGammaMatrix.hh"
-using std::endl;
-
-void EvtSemiLeptonicBaryonAmp::CalcAmp( EvtParticle *parent,
-                                       EvtAmp& amp,
-                                       EvtSemiLeptonicFF *FormFactors ) {
-
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  //Add the lepton and neutrino 4 momenta to find q2
-
-  EvtVector4R q = parent->getDaug(1)->getP4() 
-                    + parent->getDaug(2)->getP4(); 
-  double q2 = (q.mass2());
-
-  double f1v,f1a,f2v,f2a;
-  double m_meson = parent->getDaug(0)->mass();
-
-  FormFactors->getbaryonff(parent->getId(),
-                          parent->getDaug(0)->getId(),
-                           q2,
-                           m_meson,
-                           &f1v, 
-                           &f1a, 
-                           &f2v, 
-                           &f2a);
-
-  EvtVector4R p4b;
-  p4b.set(parent->mass(),0.0,0.0,0.0);
-  
-  EvtVector4C temp_00_term1;
-  EvtVector4C temp_00_term2;
-  
-  EvtVector4C temp_01_term1;
-  EvtVector4C temp_01_term2;
-  
-  EvtVector4C temp_10_term1;
-  EvtVector4C temp_10_term2;
-  
-  EvtVector4C temp_11_term1;
-  EvtVector4C temp_11_term2;
-  
-  EvtDiracSpinor p0=parent->sp(0);
-  EvtDiracSpinor p1=parent->sp(1);
-  
-  EvtDiracSpinor d0=parent->getDaug(0)->spParent(0);
-  EvtDiracSpinor d1=parent->getDaug(0)->spParent(1);
-  
-  temp_00_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p0)));
-  temp_00_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
-  temp_01_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p1)));
-  temp_01_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
-  temp_10_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p0)));
-  temp_10_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
-  temp_11_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p1)));
-  temp_11_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
-  
-  temp_00_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p0)));
-  temp_00_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
-  temp_01_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p1)));
-  temp_01_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
-  temp_10_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p0)));
-  temp_10_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
-  temp_11_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p1)));
-  temp_11_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
-  
-  temp_00_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p0)));
-  temp_00_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
-  temp_01_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p1)));
-  temp_01_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
-  temp_10_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p0)));
-  temp_10_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
-  temp_11_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p1)));
-  temp_11_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
-  
-  temp_00_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p0)));
-  temp_00_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
-  temp_01_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p1)));
-  temp_01_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
-  temp_10_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p0)));
-  temp_10_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
-  temp_11_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p1)));
-  temp_11_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
-  
-
-
-  EvtVector4C l1,l2;
-
-  EvtId l_num = parent->getDaug(1)->getId();
-  if (l_num==EM||l_num==MUM||l_num==TAUM){
-
-    l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
-                          parent->getDaug(2)->spParentNeutrino());
-    l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
-                          parent->getDaug(2)->spParentNeutrino());
-  }
-  else{
-    if (l_num==EP||l_num==MUP||l_num==TAUP){
-    l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
-                           parent->getDaug(1)->spParent(0));
-    l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
-                           parent->getDaug(1)->spParent(1));
-    }
-    else{
-      report(ERROR,"EvtGen") << "Wrong lepton number"<<endl;
-    }
-  }
-
-  amp.vertex(0,0,0,l1.cont(temp_00_term1+temp_00_term2));
-  amp.vertex(0,0,1,l2.cont(temp_00_term1+temp_00_term2));
-
-  amp.vertex(0,1,0,l1.cont(temp_01_term1+temp_01_term2));
-  amp.vertex(0,1,1,l2.cont(temp_01_term1+temp_01_term2));
-
-  amp.vertex(1,0,0,l1.cont(temp_10_term1+temp_10_term2));
-  amp.vertex(1,0,1,l2.cont(temp_10_term1+temp_10_term2));
-
-  amp.vertex(1,1,0,l1.cont(temp_11_term1+temp_11_term2));
-  amp.vertex(1,1,1,l2.cont(temp_11_term1+temp_11_term2));
-
-  return;
-}
-
index 6004196942fe4d8053f3a4faee079c56cbc64959..38d5615e410ac4a69b0c2aed94ad5fd7739fc2f7 100644 (file)
@@ -27,15 +27,47 @@ class EvtParticle;
 class EvtAmp;
 class EvtSemiLeptonicFF;
 
+class EvtVector4C;
+class EvtVector4R;
+class EvtDiracSpinor;
+class EvtRaritaSchwinger;
+
 class EvtSemiLeptonicBaryonAmp:public EvtSemiLeptonicAmp {
 
  public:
 
+  virtual ~EvtSemiLeptonicBaryonAmp();
+
   //Daughters are initialized and have been added to the parent.
   //No need to carry around the daughters seperately!
   void CalcAmp( EvtParticle *parent,EvtAmp& amp,
                EvtSemiLeptonicFF *FormFactors );
 
+  void CalcAmp( EvtParticle *parent, EvtAmp& amp,
+               EvtSemiLeptonicFF *FormFactors,
+               EvtComplex r00, EvtComplex r01,
+               EvtComplex r10, EvtComplex r11 );
+  
+  double CalcMaxProb( EvtId parent, EvtId meson, EvtId lepton,
+                      EvtId nudaug, EvtSemiLeptonicFF *FormFactors,
+                      EvtComplex r00, EvtComplex r01,
+                      EvtComplex r10, EvtComplex r11);
+
+
+ private:
+
+  EvtVector4C EvtBaryonVACurrent( const EvtDiracSpinor& Bf,
+                                 const EvtDiracSpinor& Bi, 
+                                 EvtVector4R parent, 
+                                 EvtVector4R daught, 
+                                 const double *ff, int pflag);
+
+  EvtVector4C EvtBaryonVARaritaCurrent( const EvtRaritaSchwinger& Bf_vect,
+                                       const EvtDiracSpinor& Bi, 
+                                       EvtVector4R parent, 
+                                       EvtVector4R daught, 
+                                       const double *ff, int pflag);
+
 };
 
 #endif
index f4066c63d3b17025503739b4ad3cf0f66fd2e06c..d5c009a7301774491903bd25c3590f664409cf00 100644 (file)
@@ -27,6 +27,7 @@
 class EvtSemiLeptonicFF{
 
 public:
+  virtual ~EvtSemiLeptonicFF( ) { } ;
 
   virtual void getscalarff( EvtId parent, EvtId daught,
                            double t, double mass, double *fpf,
@@ -44,8 +45,19 @@ public:
                            double *f1v, 
                            double *f1a, 
                            double *f2v, 
-                          double *f2a) = 0 ;
+                          double *f2a) = 0;
 
+  virtual void getdiracff( EvtId parent, EvtId daught,
+                          double q2, double mass, 
+                          double *f1, double *f2, double *f3,
+                          double *g1, double *g2, double *g3 ) = 0;
+
+  virtual void getraritaff( EvtId parent, EvtId daught,
+                           double q2, double mass, 
+                           double *f1, double *f2, 
+                           double *f3, double *f4,
+                           double *g1, double *g2, 
+                           double *g3, double *g4 ) = 0;
 
 };
 
similarity index 97%
rename from TEvtGen/EvtGenBase/EvtSemiLeptonicTensorAmp.cxx
rename to TEvtGen/EvtGenBase/EvtSemiLeptonicTensorAmp.cpp
index a6c761d321475653a0a8e8f32dd9afcf8eba0b1b..e8c6d054a4bc264e19bee69149fc643b3f0baff2 100644 (file)
@@ -118,7 +118,7 @@ void EvtSemiLeptonicTensorAmp::CalcAmp( EvtParticle *parent,
 
   EvtTensor4C tds;
   if (l_num==EM||l_num==MUM||l_num==TAUM){
-    EvtTensor4C tdual=EvtComplex(0.0,hf)*dual(directProd(pp,pm));
+    EvtTensor4C tdual=EvtComplex(0.0,hf)*dual(EvtGenFunctions::directProd(pp,pm));
     tds0=tdual.cont2(ep_meson_b[0])
       -kf*ep_meson_b[0]
       -bpf*ep_meson_bb[0]*pp-bmf*ep_meson_bb[0]*pm;
@@ -152,7 +152,7 @@ void EvtSemiLeptonicTensorAmp::CalcAmp( EvtParticle *parent,
   }
   else{
     if (l_num==EP||l_num==MUP||l_num==TAUP){
-     EvtTensor4C tdual=EvtComplex(0.0,-hf)*dual(directProd(pp,pm));
+     EvtTensor4C tdual=EvtComplex(0.0,-hf)*dual(EvtGenFunctions::directProd(pp,pm));
       tds0=tdual.cont2(ep_meson_b[0])
         -kf*ep_meson_b[0]
         -bpf*ep_meson_bb[0]*pp-bmf*ep_meson_bb[0]*pm;
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtSemiLeptonicVectorAmp.cxx
rename to TEvtGen/EvtGenBase/EvtSemiLeptonicVectorAmp.cpp
index 8eb73ce0e3c2b3c3152a5bed2092e2e825d42e8b..67ac2617bd3656c023af090323ecb246108332b8 100644 (file)
@@ -100,7 +100,7 @@ void EvtSemiLeptonicVectorAmp::CalcAmp( EvtParticle *parent,
     tds = a1f*(m_b+m_meson)*EvtTensor4C::g();
     tds.addDirProd((-a2f/(m_b+m_meson))*p4b,p4b+p4meson);
     tds+=EvtComplex(0.0,vf/(m_b+m_meson))
-                  *dual(directProd(p4meson+p4b,p4b-p4meson));
+      *dual(EvtGenFunctions::directProd(p4meson+p4b,p4b-p4meson));
     tds.addDirProd((a0f-a3f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
 
     l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
@@ -113,7 +113,7 @@ void EvtSemiLeptonicVectorAmp::CalcAmp( EvtParticle *parent,
     tds = a1f*(m_b+m_meson)*EvtTensor4C::g();
     tds.addDirProd((-a2f/(m_b+m_meson))*p4b,p4b+p4meson);
     tds-=EvtComplex(0.0,vf/(m_b+m_meson))
-                  *dual(directProd(p4meson+p4b,p4b-p4meson));
+                  *dual(EvtGenFunctions::directProd(p4meson+p4b,p4b-p4meson));
     tds.addDirProd((a0f-a3f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
 
     l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
index 48bd6b86105e460c9251e5ec5bf354460bec7ca3..76865c47ac23fdb05effb8ecdede33d1a04f41a8 100644 (file)
@@ -23,7 +23,9 @@
 #ifndef EVTSIMPLERANDOMENGINE_HH
 #define EVTSIMPLERANDOMENGINE_HH
 
-class EvtSimpleRandomEngine{
+#include "EvtGenBase/EvtRandomEngine.hh"
+
+class EvtSimpleRandomEngine : public EvtRandomEngine {
 
 public:
 
similarity index 99%
rename from TEvtGen/EvtGenBase/EvtSpinAmp.cxx
rename to TEvtGen/EvtGenBase/EvtSpinAmp.cpp
index 3fb064557fd00c80455c0a30188ba32a7ae4b768..7ffaa79977cfd380b6a135b5ea24c53dc96e6bb8 100644 (file)
@@ -379,7 +379,7 @@ bool EvtSpinAmp::iterate( vector<int>& index ) const
         }
     }
 
-    return abs(index[last])<=_twospin[last];
+    return (abs(index[last]))<=((int)_twospin[last]);
 }
 
 // Test whether a particular index is an allowed one (specifically to deal with
similarity index 94%
rename from TEvtGen/EvtGenBase/EvtSpinDensity.cxx
rename to TEvtGen/EvtGenBase/EvtSpinDensity.cpp
index ec60482895a3a8192ec970936d8e89c3c0d3976d..c427613fb195ff7d06c3043e1f49631a0ff5f727 100644 (file)
@@ -157,10 +157,18 @@ int EvtSpinDensity::check(){
 
   int i,j;
 
+  double trace(0.0);
+
+  for (i=0;i<dim;i++) {
+    trace += abs(rho[i][i]);
+  }
+
   for(i=0;i<dim;i++){
 
     if (real(rho[i][i])<0.0) return 0;
-    if (imag(rho[i][i])*1000000.0>abs(rho[i][i])) {
+    if (imag(rho[i][i])*1000000.0>trace) {
+      report(INFO,"EvtGen") << *this << endl;
+      report(INFO,"EvtGen") << trace << endl;
       report(INFO,"EvtGen") << "Failing 1"<<endl;
       return 0;
     }
index b9c69a3d7c75d0e308fd83e222df1f644229e091..e42f3f66b0c4a1085598a0f26f990963bd4c7827 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtStdlibRandomEngine.hh,v 1.1 2003/06/29 06:01:29 dvoretsk Exp $
+ *    File: $Id: EvtStdlibRandomEngine.hh,v 1.2 2009-03-16 16:39:15 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
@@ -15,6 +15,7 @@
 #define EVT_STDLIB_RANDOM_ENGINE_HH
 
 #include <stdlib.h>
+#include <TRandom.h>
 #include "EvtGenBase/EvtRandomEngine.hh"
 
 class EvtStdlibRandomEngine : public EvtRandomEngine {
@@ -22,14 +23,16 @@ public:
   
   void setSeed(unsigned int seed)
   {
-    srand(seed);
+    //srand(seed);
+    gRandom->SetSeed(seed);
   }
   
   virtual double random()
   {
-    double x = rand();
+    /*double x = rand();
     double y = RAND_MAX;
-    return x/y;
+    return x/y;*/
+    return gRandom->Rndm();
   }
 };
 
index adfd0b319df7a11565d43a3713242fb8775521d6..1b05d9c6c1685dcdab08881c95d0f8c0463eb25a 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtStreamAdapter.hh,v 1.1 2003/03/03 05:38:22 dvoretsk Exp $
+ *    File: $Id: EvtStreamAdapter.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 6313a1f8a94275c83e196a3c02791f16bbba1fc1..ee886706e4fba2e9610baf965d70dd589b22f80e 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtStreamInputIterator.hh,v 1.1 2003/03/03 05:38:22 dvoretsk Exp $
+ *    File: $Id: EvtStreamInputIterator.hh,v 1.2 2009-03-16 16:41:09 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
 #define EVT_STREAM_INPUT_ITERATOR_HH
 
 #include "EvtGenBase/EvtStreamAdapter.hh"
+
 #include <iterator>
+#include <cstddef>
+
 using std::input_iterator_tag;
 
 template <class Point>
@@ -23,6 +26,7 @@ public:
 
   typedef input_iterator_tag iterator_category;
   typedef Point              value_type;
+  typedef ptrdiff_t          difference_type;
   typedef const Point*       pointer;
   typedef const Point&       reference;
 
similarity index 93%
rename from TEvtGen/EvtGenBase/EvtTensor3C.cxx
rename to TEvtGen/EvtGenBase/EvtTensor3C.cpp
index 78aed447d797c0db9165488340a99dc0152b0696..1bdb7d5141f58dd7f6319b6a1e63409d91b7356d 100644 (file)
@@ -147,7 +147,7 @@ EvtTensor3C EvtTensor3C::operator*=(const EvtComplex& c) {
 }
 
 
-EvtTensor3C EvtTensor3C::operator*=(double c){
+EvtTensor3C EvtTensor3C::operator*=(const double c){
 
   int i,j;
   
@@ -162,7 +162,7 @@ EvtTensor3C EvtTensor3C::operator*=(double c){
 
 
 
-EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3C& c2){ 
+EvtTensor3C EvtGenFunctions::directProd(const EvtVector3C& c1,const EvtVector3C& c2){ 
   EvtTensor3C temp;
   int i,j;
   
@@ -175,7 +175,7 @@ EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3C& c2){
 }
 
 
-EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3R& c2){ 
+EvtTensor3C EvtGenFunctions::directProd(const EvtVector3C& c1,const EvtVector3R& c2){ 
   EvtTensor3C temp;
   int i,j;
   
@@ -188,7 +188,7 @@ EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3R& c2){
 }
 
 
-EvtTensor3C directProd(const EvtVector3R& c1,const EvtVector3R& c2){ 
+EvtTensor3C EvtGenFunctions::directProd(const EvtVector3R& c1,const EvtVector3R& c2){ 
   EvtTensor3C temp;
   int i,j;
   
@@ -304,7 +304,7 @@ EvtVector3C EvtTensor3C::cont2(const EvtVector3R& v) const {
 } 
 
 
-EvtTensor3C eps(const EvtVector3R& v){
+EvtTensor3C EvtGenFunctions::eps(const EvtVector3R& v){
 
   EvtTensor3C temp;
 
@@ -345,7 +345,7 @@ ostream& operator<<(ostream& s,const EvtTensor3C& v){
 }
 
 
-EvtTensor3C rotateEuler(const EvtTensor3C& v,
+EvtTensor3C EvtGenFunctions::rotateEuler(const EvtTensor3C& v,
                        double alpha,double beta,double gamma){
 
   EvtTensor3C tmp(v);
index 51db4947080fbb650fdcbe9d5859041a4b84995d..8f06129086545818e0913087dfacf045df868477 100644 (file)
@@ -29,36 +29,36 @@ class EvtVector3R;
 
 class EvtTensor3C;
 
-EvtTensor3C eps(const EvtVector3R& v);
-
-EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3C& c2);
-EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3R& c2);
-EvtTensor3C directProd(const EvtVector3R& c1,const EvtVector3R& c2);
+namespace EvtGenFunctions {
+  EvtTensor3C eps(const EvtVector3R& v);
+  EvtTensor3C rotateEuler(const EvtTensor3C& v,
+                                double phi,double theta,double ksi);
+  EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3C& c2); 
+  EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3R& c2); 
+  EvtTensor3C directProd(const EvtVector3R& c1,const EvtVector3R& c2);
+};
 
 class EvtTensor3C {
-
-  friend EvtTensor3C rotateEuler(const EvtTensor3C& v,
-                                double phi,double theta,double ksi);
   friend EvtTensor3C operator*(
                  const EvtComplex& c,const EvtTensor3C& t2);
-  friend EvtTensor3C operator*(double d,const EvtTensor3C& t2);
+  friend EvtTensor3C operator*(const double d,const EvtTensor3C& t2);
   friend EvtTensor3C operator*(
                   const EvtTensor3C& t2,const EvtComplex& c);
-  friend EvtTensor3C operator*(const EvtTensor3C& t2,double d);
+  friend EvtTensor3C operator*(const EvtTensor3C& t2,const double d);
   friend EvtTensor3C operator+(
                   const EvtTensor3C& t1,const EvtTensor3C& t2);
   friend EvtTensor3C operator-(
                   const EvtTensor3C& t1,const EvtTensor3C& t2);
-  friend EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3C& c2); 
-  friend EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3R& c2); 
-  friend EvtTensor3C directProd(const EvtVector3R& c1,const EvtVector3R& c2); 
+  friend EvtTensor3C EvtGenFunctions::directProd(const EvtVector3C& c1,const EvtVector3C& c2); 
+  friend EvtTensor3C EvtGenFunctions::directProd(const EvtVector3C& c1,const EvtVector3R& c2); 
+  friend EvtTensor3C EvtGenFunctions::directProd(const EvtVector3R& c1,const EvtVector3R& c2); 
   friend EvtTensor3C conj(const EvtTensor3C& t2);
   //Contract the second index of two tensors result(i,j) = t1(i,k)t2(j,k)
   friend EvtTensor3C cont22(const EvtTensor3C& t1,const EvtTensor3C& t2); 
   //Contract the first index of two tensors result(i,j) = t1(k,i)t2(k,j)
   friend EvtTensor3C cont11(const EvtTensor3C& t1,const EvtTensor3C& t2);
   //Contract the last index of eps_{ijk} with w
-  friend EvtTensor3C eps(const EvtVector3R& v);
+  friend EvtTensor3C EvtGenFunctions::eps(const EvtVector3R& v);
   friend std::ostream& operator<<(std::ostream& c,const EvtTensor3C& v); 
 
 public:
@@ -76,7 +76,7 @@ public:
 
   EvtTensor3C operator+=(const EvtTensor3C& t2);
   EvtTensor3C operator-=(const EvtTensor3C& t2);
-  EvtTensor3C operator*=(double d);
+  EvtTensor3C operator*=(const double d);
   EvtTensor3C operator*=(const EvtComplex& c);
   EvtTensor3C conj() const;
   EvtVector3C cont1(const EvtVector3C& v) const; 
@@ -102,7 +102,7 @@ inline EvtTensor3C operator*(const EvtTensor3C& t2,const EvtComplex& c){
   return EvtTensor3C(t2)*=c;
 }
 
-inline EvtTensor3C operator*(const EvtTensor3C& t2,double d){
+inline EvtTensor3C operator*(const EvtTensor3C& t2,const double d){
   return EvtTensor3C(t2)*=d;
 }
 
similarity index 95%
rename from TEvtGen/EvtGenBase/EvtTensor4C.cxx
rename to TEvtGen/EvtGenBase/EvtTensor4C.cpp
index c6025185fe2c5d726e301bcb820599f404efedde..ead84333742a228a96ef12e2de50cefffc989aa9 100644 (file)
@@ -316,7 +316,11 @@ EvtComplex cont(const EvtTensor4C& t1,const EvtTensor4C& t2){
 
   for (i=0;i<4;i++) {
     for (j=0;j<4;j++) {
-      sum+=t1.t[i][j]*t2.t[i][j]; 
+      if ((i==0&&j!=0) || (j==0&&i!=0)) {
+       sum -= t1.t[i][j]*t2.t[i][j];
+      } else {
+       sum += t1.t[i][j]*t2.t[i][j]; 
+      }
     }
   }
 
@@ -324,7 +328,8 @@ EvtComplex cont(const EvtTensor4C& t1,const EvtTensor4C& t2){
 }
 
 
-EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2){ 
+EvtTensor4C EvtGenFunctions::directProd(const EvtVector4C& c1,
+                                        const EvtVector4C& c2){ 
   EvtTensor4C temp;
   int i,j;
   
@@ -337,7 +342,8 @@ EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2){
 }
 
 
-EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2){ 
+EvtTensor4C EvtGenFunctions::directProd(const EvtVector4C& c1,
+                                        const EvtVector4R& c2){ 
   EvtTensor4C temp;
   int i,j;
   
@@ -350,7 +356,8 @@ EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2){
 }
 
 
-EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2){ 
+EvtTensor4C EvtGenFunctions::directProd(const EvtVector4R& c1,
+                                        const EvtVector4R& c2){ 
 
   EvtTensor4C temp;
   int i,j;
index 5b0f502e0401f6dd16b5227902b4f8bfbe75b403..65fa8e8527ce924676a40ed49f0e769740375163 100644 (file)
@@ -29,12 +29,16 @@ class EvtVector4C;
 class EvtVector4R;
 class EvtVector3R;
 
-EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2);
-EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2);
-EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2);
-EvtTensor4C dual(const EvtTensor4C& t2);
+namespace EvtGenFunctions {
+  EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2);
+  EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2); 
+  EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2);
+};
 
 class EvtTensor4C {
+  friend EvtTensor4C EvtGenFunctions::directProd(const EvtVector4R& c1,const EvtVector4R& c2);
+  friend EvtTensor4C EvtGenFunctions::directProd(const EvtVector4C& c1,const EvtVector4C& c2); 
+  friend EvtTensor4C EvtGenFunctions::directProd(const EvtVector4C& c1,const EvtVector4R& c2);
 
   friend EvtTensor4C rotateEuler(const EvtTensor4C& e,
                                 double alpha,double beta,double gamma);
@@ -42,9 +46,6 @@ class EvtTensor4C {
                             const EvtVector4R p4);
   friend EvtTensor4C boostTo(const EvtTensor4C& e,
                             const EvtVector3R boost); 
-  friend EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2); 
-  friend EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2); 
-  friend EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2); 
   friend EvtTensor4C dual(const EvtTensor4C& t2); 
   friend EvtTensor4C conj(const EvtTensor4C& t2);
   friend EvtTensor4C cont22(const EvtTensor4C& t1,const EvtTensor4C& t2);
similarity index 77%
rename from TEvtGen/EvtGenBase/EvtTensorParticle.cxx
rename to TEvtGen/EvtGenBase/EvtTensorParticle.cpp
index d25427e7f678a85972a23eecedcf605277587034..0883072048f7e8a8779188f4b17c5acc2facc1cc 100644 (file)
@@ -114,15 +114,15 @@ EvtSpinDensity EvtTensorParticle::rotateToHelicityBasis() const{
   static EvtVector4C ezero(0.0,0.0,0.0,1.0);
   static EvtVector4C eminus(0.0,1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
   
-  static EvtTensor4C dPpp(directProd(eplus,eplus));
-  static EvtTensor4C dPp0(directProd(eplus,ezero));
-  static EvtTensor4C dP0p(directProd(ezero,eplus));
-  static EvtTensor4C dPpm(directProd(eplus,eminus));
-  static EvtTensor4C dP00(directProd(ezero,ezero));
-  static EvtTensor4C dPmp(directProd(eminus,eplus));
-  static EvtTensor4C dPmm(directProd(eminus,eminus));
-  static EvtTensor4C dPm0(directProd(eminus,ezero));
-  static EvtTensor4C dP0m(directProd(ezero,eminus));
+  static EvtTensor4C dPpp(EvtGenFunctions::directProd(eplus,eplus));
+  static EvtTensor4C dPp0(EvtGenFunctions::directProd(eplus,ezero));
+  static EvtTensor4C dP0p(EvtGenFunctions::directProd(ezero,eplus));
+  static EvtTensor4C dPpm(EvtGenFunctions::directProd(eplus,eminus));
+  static EvtTensor4C dP00(EvtGenFunctions::directProd(ezero,ezero));
+  static EvtTensor4C dPmp(EvtGenFunctions::directProd(eminus,eplus));
+  static EvtTensor4C dPmm(EvtGenFunctions::directProd(eminus,eminus));
+  static EvtTensor4C dPm0(EvtGenFunctions::directProd(eminus,ezero));
+  static EvtTensor4C dP0m(EvtGenFunctions::directProd(ezero,eminus));
 
   static EvtTensor4C es0(conj(dPpp));
   static EvtTensor4C es1(conj((1/sqrt(2.0))*dPp0 +(1/sqrt(2.0))*dP0p));
@@ -162,15 +162,15 @@ EvtSpinDensity EvtTensorParticle::rotateToHelicityBasis(double alpha,
 
   for (int i=0; i<5; i++) es[i].zero();    
   
-  es[0]=directProd(eplus,eplus);
-  es[1] =(1/sqrt(2.0))*directProd(eplus,ezero)
-    +(1/sqrt(2.0))*directProd(ezero,eplus);
-  es[2] =(1/sqrt(6.0))*directProd(eplus,eminus)
-    +(2/sqrt(6.0))*directProd(ezero,ezero)
-    +(1/sqrt(6.0))*directProd(eminus,eplus);
-  es[3] =(1/sqrt(2.0))*directProd(eminus,ezero)
-    +(1/sqrt(2.0))*directProd(ezero,eminus);
-  es[4]=directProd(eminus,eminus);
+  es[0]=EvtGenFunctions::directProd(eplus,eplus);
+  es[1] =(1/sqrt(2.0))*EvtGenFunctions::directProd(eplus,ezero)
+    +(1/sqrt(2.0))*EvtGenFunctions::directProd(ezero,eplus);
+  es[2] =(1/sqrt(6.0))*EvtGenFunctions::directProd(eplus,eminus)
+    +(2/sqrt(6.0))*EvtGenFunctions::directProd(ezero,ezero)
+    +(1/sqrt(6.0))*EvtGenFunctions::directProd(eminus,eplus);
+  es[3] =(1/sqrt(2.0))*EvtGenFunctions::directProd(eminus,ezero)
+    +(1/sqrt(2.0))*EvtGenFunctions::directProd(ezero,eminus);
+  es[4]=EvtGenFunctions::directProd(eminus,eminus);
 
   for (int i=0; i<5; i++) es[i]=conj(es[i]);    
 
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtTwoBodyKine.cxx
rename to TEvtGen/EvtGenBase/EvtTwoBodyKine.cpp
index 27c124657cfbea0b09e879a63cffaf2306e1e22a..a9a578f195afb54513cbf71502ecd56202a76e80 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtTwoBodyKine.cc,v 1.8 2004/12/21 19:58:50 ryd Exp $
+ *    File: $Id: EvtTwoBodyKine.cpp,v 1.3 2009-03-16 15:37:54 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 11d9caa8084cdfe8e9472b39d383f54045c2d4a7..3bbf4b6d106bbc18ccd50ac0b918c861d2ee4af4 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtTwoBodyKine.hh,v 1.6 2004/08/06 06:08:26 bartoldu Exp $
+ *    File: $Id: EvtTwoBodyKine.hh,v 1.2 2009-03-16 16:34:38 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 96%
rename from TEvtGen/EvtGenBase/EvtTwoBodyVertex.cxx
rename to TEvtGen/EvtGenBase/EvtTwoBodyVertex.cpp
index 7e97375171b9568ca1d7d432c5902ed5a934d235..a2623f38d4ebe504a80349da5cca35580b2e3cd8 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtTwoBodyVertex.cc,v 1.6 2004/12/21 19:58:50 ryd Exp $
+ *    File: $Id: EvtTwoBodyVertex.cpp,v 1.3 2009-03-16 15:38:39 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 68c4ed3c3ead4a095ac1818f028b673be8b0da38..1b0bc466e89970d362ae4e2cf5e1ddfcd59d95cb 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtTwoBodyVertex.hh,v 1.6 2004/08/06 06:08:26 bartoldu Exp $
+ *    File: $Id: EvtTwoBodyVertex.hh,v 1.2 2009-03-16 16:34:38 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
similarity index 97%
rename from TEvtGen/EvtGenBase/EvtValError.cxx
rename to TEvtGen/EvtGenBase/EvtValError.cpp
index 9fc7e250c0ff337d8ffe8c1d847cbec864b3cce9..f13b9055213843cb53b83f5c7e4cbbb2ff639d83 100644 (file)
@@ -2,7 +2,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtValError.cc,v 1.7 2004/12/21 19:58:50 ryd Exp $
+ *    File: $Id: EvtValError.cpp,v 1.3 2009-03-16 15:39:28 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 0ea1cc7d79c117459ba4e62e832b2831c6077cf8..303062f5eef758be873f7c8c0cd3f7060c2c1452 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenBase
- *    File: $Id: EvtValError.hh,v 1.6 2004/08/06 06:08:26 bartoldu Exp $
+ *    File: $Id: EvtValError.hh,v 1.2 2009-03-16 16:34:38 robbep Exp $
  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
  *
  * Copyright (C) 2002 Caltech
index 28eea8616f1f739946e7bdf2e2b6fbcbb4c68df2..9e873fe6a756df8ffc52d83e7de9e68a9c2570f8 100644 (file)
@@ -45,7 +45,7 @@ public:
   EvtVector3C();
   EvtVector3C(const EvtComplex&,const EvtComplex&,const EvtComplex&);
   virtual ~EvtVector3C();
-  inline void set(int,const EvtComplex&);
+  inline void set(const int,const EvtComplex&);
   inline void set(const EvtComplex&,const EvtComplex&,const EvtComplex&);
   inline void set(double,double,double);
   inline EvtVector3C& operator*=(const EvtComplex& c);
@@ -72,7 +72,7 @@ inline EvtVector3C::EvtVector3C(const EvtVector3R& v1){
 
 } 
 
-inline void EvtVector3C::set(int i,const EvtComplex& c){
+inline void EvtVector3C::set(const int i,const EvtComplex& c){
 
   v[i]=c;
   
similarity index 73%
rename from TEvtGen/EvtGenBase/EvtVector4R.cxx
rename to TEvtGen/EvtGenBase/EvtVector4R.cpp
index a5ac6678532b6ed91c5ef497ff530d74d67242ef..79e490855fc0f77019444f64a1a5caab1bce2b56 100644 (file)
@@ -20,8 +20,7 @@
 // 
 #include "EvtGenBase/EvtPatches.hh"
 #include <iostream>
-#include <math.h>
-#include <assert.h>
+#include <cmath>
 #include "EvtGenBase/EvtVector4R.hh"
 #include "EvtGenBase/EvtVector3R.hh"
 #include "EvtGenBase/EvtVector4C.hh"
@@ -29,7 +28,9 @@
 
 using std::ostream;
 
-
+EvtVector4R::EvtVector4R() {
+  v[0] = 0.0; v[1] = 0.0; v[2] = 0.0; v[3] = 0.0;
+}
 
 EvtVector4R::EvtVector4R(double e,double p1,double p2, double p3){
   
@@ -59,19 +60,19 @@ EvtVector4R rotateEuler(const EvtVector4R& rs,
 }
 
 EvtVector4R boostTo(const EvtVector4R& rs,
-                   const EvtVector4R& p4){
+                   const EvtVector4R& p4, bool inverse){
 
   EvtVector4R tmp(rs);
-  tmp.applyBoostTo(p4);
+  tmp.applyBoostTo(p4, inverse);
   return tmp;
 
 }
 
 EvtVector4R boostTo(const EvtVector4R& rs,
-                   const EvtVector3R& boost){
+                   const EvtVector3R& boost, bool inverse){
 
   EvtVector4R tmp(rs);
-  tmp.applyBoostTo(boost);
+  tmp.applyBoostTo(boost, inverse);
   return tmp;
 
 }
@@ -105,19 +106,19 @@ ostream& operator<<(ostream& s, const EvtVector4R& v){
 
 }
 
-void EvtVector4R::applyBoostTo(const EvtVector4R& p4){
+void EvtVector4R::applyBoostTo(const EvtVector4R& p4, bool inverse){
 
   double e=p4.get(0);
 
   EvtVector3R boost(p4.get(1)/e,p4.get(2)/e,p4.get(3)/e);
 
-  applyBoostTo(boost);
+  applyBoostTo(boost, inverse);
 
   return;
 
 }
 
-void EvtVector4R::applyBoostTo(const EvtVector3R& boost){
+void EvtVector4R::applyBoostTo(const EvtVector3R& boost, bool inverse){
 
   double bx,by,bz,gamma,b2;
 
@@ -131,40 +132,44 @@ void EvtVector4R::applyBoostTo(const EvtVector3R& boost){
 
   b2=bxx+byy+bzz;
 
+  if (b2 > 0.0 && b2 < 1.0) {
 
-  if (b2==0.0){
-    return;
-  }
-
-  assert(b2<1.0);
-
-  gamma=1.0/sqrt(1-b2);
-
-
-  double gb2=(gamma-1.0)/b2;
-
-  double gb2xy=gb2*bx*by;
-  double gb2xz=gb2*bx*bz;
-  double gb2yz=gb2*by*bz;
-
-  double gbx=gamma*bx;
-  double gby=gamma*by;
-  double gbz=gamma*bz;
+    gamma=1.0/sqrt(1.0-b2);
 
-  double e2=v[0];
-  double px2=v[1];
-  double py2=v[2];
-  double pz2=v[3];
+    double gb2=(gamma-1.0)/b2;
 
-  v[0]=gamma*e2+gbx*px2+gby*py2+gbz*pz2;
+    double gb2xy=gb2*bx*by;
+    double gb2xz=gb2*bx*bz;
+    double gb2yz=gb2*by*bz;
 
-  v[1]=gbx*e2+gb2*bxx*px2+px2+gb2xy*py2+gb2xz*pz2;
+    double gbx=gamma*bx;
+    double gby=gamma*by;
+    double gbz=gamma*bz;
 
-  v[2]=gby*e2+gb2*byy*py2+py2+gb2xy*px2+gb2yz*pz2;
+    double e2=v[0];
+    double px2=v[1];
+    double py2=v[2];
+    double pz2=v[3];
 
-  v[3]=gbz*e2+gb2*bzz*pz2+pz2+gb2yz*py2+gb2xz*px2;
-
-  return;
+    if ( inverse ) {
+      v[0]=gamma*e2-gbx*px2-gby*py2-gbz*pz2;
+      
+      v[1]=-gbx*e2+gb2*bxx*px2+px2+gb2xy*py2+gb2xz*pz2;
+      v[2]=-gby*e2+gb2*byy*py2+py2+gb2xy*px2+gb2yz*pz2;
+      v[3]=-gbz*e2+gb2*bzz*pz2+pz2+gb2yz*py2+gb2xz*px2;
+    }
+    else {
+      v[0]=gamma*e2+gbx*px2+gby*py2+gbz*pz2;
+      
+      v[1]=gbx*e2+gb2*bxx*px2+px2+gb2xy*py2+gb2xz*pz2;
+      v[2]=gby*e2+gb2*byy*py2+py2+gb2xy*px2+gb2yz*pz2;
+      v[3]=gbz*e2+gb2*bzz*pz2+pz2+gb2yz*py2+gb2xz*px2;
+    }
+  }
 
 }
 
@@ -217,11 +222,11 @@ double EvtVector4R::dot ( const EvtVector4R& p2 )const{
 double EvtVector4R::scalartripler3( const EvtVector4R& p1,
         const EvtVector4R& p2, const EvtVector4R& p3 ) const
 {
-    EvtVector4C lc=dual(directProd(*this, p1)).cont2(p2);
-    EvtVector4R  l(real(lc.get(0)), real(lc.get(1)), real(lc.get(2)),
-            real(lc.get(3)));
-
-    return -1.0/mass() * (l * p3);
+  EvtVector4C lc=dual(EvtGenFunctions::directProd(*this, p1)).cont2(p2);
+  EvtVector4R  l(real(lc.get(0)), real(lc.get(1)), real(lc.get(2)),
+                 real(lc.get(3)));
+  
+  return -1.0/mass() * (l * p3);
 }
 
 // Calculate the 3-d dot product of 4-vectors p1 and p2 in the rest frame of
index dc792e1bf82476b2dd68d9576383d138c03ed8e0..a675318107593ceba40450c51c0f0b57e35142cc 100644 (file)
@@ -28,12 +28,6 @@ class EvtVector3R;
 
 class EvtVector4R {
 
-  friend EvtVector4R rotateEuler(const EvtVector4R& rs,
-                                double alpha,double beta,double gamma);
-  friend EvtVector4R boostTo(const EvtVector4R& rs,
-                            const EvtVector4R& p4);
-  friend EvtVector4R boostTo(const EvtVector4R& rs,
-                            const EvtVector3R& boost);
   
 
   inline friend EvtVector4R operator*(double d,const EvtVector4R& v2); 
@@ -44,7 +38,7 @@ class EvtVector4R {
   inline friend EvtVector4R operator-(const EvtVector4R& v1,const EvtVector4R& v2); 
   
 public:
-  EvtVector4R(){}
+  EvtVector4R();
   EvtVector4R(double e,double px,double py ,double pz);
   inline void set(int i,double d);
   inline void set(double e,double px,double py ,double pz);
@@ -59,8 +53,8 @@ public:
   double mass2() const;     
   double mass() const;
   void applyRotateEuler(double alpha,double beta,double gamma);
-  void applyBoostTo(const EvtVector4R& p4);
-  void applyBoostTo(const EvtVector3R& boost);
+  void applyBoostTo(const EvtVector4R& p4, bool inverse = false);
+  void applyBoostTo(const EvtVector3R& boost, bool inverse = false);
   EvtVector4R cross(const EvtVector4R& v2);
   double dot(const EvtVector4R& v2) const;
   double d3mag() const;
@@ -81,6 +75,12 @@ private:
 
 };
 
+EvtVector4R rotateEuler(const EvtVector4R& rs,
+                                double alpha,double beta,double gamma);
+EvtVector4R boostTo(const EvtVector4R& rs,
+                    const EvtVector4R& p4, bool inverse = false);
+EvtVector4R boostTo(const EvtVector4R& rs,
+                    const EvtVector3R& boost, bool inverse = false);
 
 inline EvtVector4R& EvtVector4R::operator=(const EvtVector4R& v2){
 
similarity index 98%
rename from TEvtGen/EvtGenBase/EvtdFunctionSingle.cxx
rename to TEvtGen/EvtGenBase/EvtdFunctionSingle.cpp
index 4d440f575263447594a0a9fb7b0101beb86e9c48..3b7b31502d9dcbaca99831214e7c76c9f12deb35 100644 (file)
@@ -74,7 +74,7 @@ void EvtdFunctionSingle::init(int j,int m1,int m2){
 
 double EvtdFunctionSingle::d(int j,int m1,int m2, double theta){
 
-  assert(j==_j);
+  assert(j==_j); _unused( j );
   assert(m1==_m1);
   assert(m2==_m2);
 
diff --git a/TEvtGen/EvtGenBase/cambiaNome.C b/TEvtGen/EvtGenBase/cambiaNome.C
deleted file mode 100644 (file)
index 13eb345..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-void cambiaNome(){
-TSeqCollection *sec = gSystem->GetListOfFileHandlers();
-sec->Print();
-cout<< "Entries" << sec->GetEntries() << endl;
-sec->Draw();
-}
diff --git a/TEvtGen/EvtGenExternal/EvtExternalGenFactory.cpp b/TEvtGen/EvtGenExternal/EvtExternalGenFactory.cpp
new file mode 100644 (file)
index 0000000..8fb64a9
--- /dev/null
@@ -0,0 +1,157 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtExternalGenFactory
+//
+// Description: A factory type method to create engines for external physics
+// generators like Pythia.
+//
+// Modification history:
+//
+//    John Back       April 2011            Module created
+//
+//------------------------------------------------------------------------------
+//
+
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenExternal/EvtExternalGenFactory.hh"
+
+#ifdef EVTGEN_PYTHIA
+#include "EvtGenExternal/EvtPythiaEngine.hh"
+#endif
+
+#ifdef EVTGEN_PHOTOS
+#include "EvtGenExternal/EvtPhotosEngine.hh"
+#endif
+
+#ifdef EVTGEN_TAUOLA
+#include "EvtGenExternal/EvtTauolaEngine.hh"
+#endif
+
+#include <iostream>
+using std::endl;
+
+EvtExternalGenFactory::EvtExternalGenFactory() {
+
+  _extGenMap.clear();
+
+}
+
+EvtExternalGenFactory::~EvtExternalGenFactory() {
+
+  ExtGenMap::iterator iter;
+  for (iter = _extGenMap.begin(); iter != _extGenMap.end(); ++iter) {
+
+    EvtAbsExternalGen* theGenerator = iter->second;
+    delete theGenerator;
+
+  }
+  
+  _extGenMap.clear();
+
+}
+
+EvtExternalGenFactory* EvtExternalGenFactory::getInstance() {
+
+  static EvtExternalGenFactory* theFactory = 0;
+  
+  if (theFactory == 0) {
+    theFactory = new EvtExternalGenFactory();
+  }
+
+  return theFactory;
+
+}
+
+void EvtExternalGenFactory::definePythiaGenerator(std::string xmlDir, 
+                                                 bool convertPhysCodes,
+                                                 bool useEvtGenRandom) {
+
+  // Only define the generator if we have the external ifdef variable set
+#ifdef EVTGEN_PYTHIA
+
+  int genId = EvtExternalGenFactory::PythiaGenId;
+
+  report(INFO,"EvtGen")<<"Defining EvtPythiaEngine: data tables defined in "
+                      <<xmlDir<<endl;
+
+  if (convertPhysCodes == true) {
+    report(INFO,"EvtGen")<<"Pythia 6 codes in decay files will be converted to Pythia 8 codes"<<endl;
+  } else {
+    report(INFO,"EvtGen")<<"Pythia 8 codes need to be used in decay files"<<endl;
+  }
+
+  if (useEvtGenRandom == true) {
+    report(INFO,"EvtGen")<<"Using EvtGen random engine for Pythia 8 as well"<<endl;
+  }
+
+  EvtAbsExternalGen* pythiaGenerator = new EvtPythiaEngine(xmlDir, convertPhysCodes, useEvtGenRandom);
+  _extGenMap[genId] = pythiaGenerator;
+
+#endif
+
+}
+
+void EvtExternalGenFactory::definePhotosGenerator(std::string photonType, bool useEvtGenRandom) {
+
+#ifdef EVTGEN_PHOTOS
+
+  int genId = EvtExternalGenFactory::PhotosGenId;
+  report(INFO,"EvtGen")<<"Defining EvtPhotosEngine using photonType = "<<photonType<<endl;
+  EvtAbsExternalGen* photosGenerator = new EvtPhotosEngine(photonType, useEvtGenRandom);
+  _extGenMap[genId] = photosGenerator;
+
+#endif
+
+}
+
+void EvtExternalGenFactory::defineTauolaGenerator(bool useEvtGenRandom) {
+
+#ifdef EVTGEN_TAUOLA
+
+  int genId = EvtExternalGenFactory::TauolaGenId;
+  report(INFO,"EvtGen")<<"Defining EvtTauolaEngine."<<endl;
+  EvtAbsExternalGen* tauolaGenerator = new EvtTauolaEngine(useEvtGenRandom);
+  _extGenMap[genId] = tauolaGenerator;
+
+#endif
+
+}
+
+EvtAbsExternalGen* EvtExternalGenFactory::getGenerator(int genId) {
+
+  EvtAbsExternalGen* theGenerator(0);
+
+  ExtGenMap::iterator iter;
+
+  if ((iter = _extGenMap.find(genId)) != _extGenMap.end()) {
+
+    // Retrieve the external generator engine
+    theGenerator = iter->second;
+
+  }
+
+  return theGenerator;
+
+}
+
+void EvtExternalGenFactory::initialiseAllGenerators() {
+
+  ExtGenMap::iterator iter;
+  for (iter = _extGenMap.begin(); iter != _extGenMap.end(); ++iter) {
+
+    EvtAbsExternalGen* theGenerator = iter->second;
+    if (theGenerator != 0) {
+      theGenerator->initialise();
+    }
+
+  }
+  
+}
diff --git a/TEvtGen/EvtGenExternal/EvtExternalGenFactory.hh b/TEvtGen/EvtGenExternal/EvtExternalGenFactory.hh
new file mode 100644 (file)
index 0000000..feed214
--- /dev/null
@@ -0,0 +1,66 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtExternalGenFactory
+//
+// Description: A factory type method to create engines for external physics
+// generators like Pythia.
+//
+// Modification history:
+//
+//    John Back       April 2011            Module created
+//
+//------------------------------------------------------------------------------
+//
+
+#ifndef EVTEXTERNALGENFACTORY_HH
+#define EVTEXTERNALGENFACTORY_HH
+
+#include "EvtGenModels/EvtAbsExternalGen.hh"
+
+#include <map>
+
+class EvtExternalGenFactory {
+
+public:
+  
+  enum genId {PythiaGenId = 0, PhotosGenId, TauolaGenId};
+
+  static EvtExternalGenFactory* getInstance();
+
+  EvtAbsExternalGen* getGenerator(int genId = 0);
+
+  void initialiseAllGenerators();
+
+  void definePythiaGenerator(std::string xmlDir, bool convertPhysCodes, bool useEvtGenRandom = true);
+  void definePhotosGenerator(std::string photonType = "gamma", bool useEvtGenRandom = true);
+  void defineTauolaGenerator(bool useEvtGenRandom = true);
+
+  //methods to add configuration commands to the pythia generators
+  //void addPythiaCommand( std::string generator, std::string module, std::string param, std::string value);
+  //void addPythia6Command(std::string generator, std::string module, std::string param, std::string value);
+
+protected:
+
+  EvtExternalGenFactory();
+  ~EvtExternalGenFactory();
+
+  typedef std::map<int, EvtAbsExternalGen*> ExtGenMap;
+  typedef std::map<int, std::map<std::string, std::vector<std::string> > > ExtGenCommandMap;
+
+private:
+
+  EvtExternalGenFactory(const EvtExternalGenFactory&) {};
+
+  ExtGenMap _extGenMap;
+  ExtGenCommandMap _extGenCommandMap;
+
+};
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtExternalGenList.cpp b/TEvtGen/EvtGenExternal/EvtExternalGenList.cpp
new file mode 100644 (file)
index 0000000..034aa57
--- /dev/null
@@ -0,0 +1,77 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2012     University of Warwick, UK
+//
+// Module: EvtExternalGenFactory
+//
+// Description: A factory type method to create engines for external physics
+// generators like Pythia.
+//
+// Modification history:
+//
+//    John Back       Sept 2012           Module created
+//
+//------------------------------------------------------------------------------
+//
+#include <TSystem.h>
+#include "EvtGenExternal/EvtExternalGenList.hh"
+
+#include "EvtGenExternal/EvtExternalGenFactory.hh"
+#include "EvtGenExternal/EvtPHOTOS.hh"
+#include "EvtGenExternal/EvtPythia.hh"
+#include "EvtGenExternal/EvtTauola.hh"
+
+EvtExternalGenList::EvtExternalGenList(bool convertPythiaCodes, std::string pythiaXmlDir,
+                                      std::string photonType, bool useEvtGenRandom) {
+
+  // Instantiate the external generator factory
+  EvtExternalGenFactory* extFactory = EvtExternalGenFactory::getInstance();
+
+  // Define the external generator "engines" here
+  extFactory->definePhotosGenerator(photonType, useEvtGenRandom);
+
+  if (pythiaXmlDir.size() < 1) {
+    // If we have no string defined, check the value of the
+    // PYTHIA8DATA environment variable which should be set to the 
+    // xmldoc Pythia directory
+    char* pythiaDataDir = getenv("PYTHIA8DATA");
+    if (pythiaDataDir != 0) {pythiaXmlDir = pythiaDataDir;}
+  }
+
+  extFactory->definePythiaGenerator(pythiaXmlDir, convertPythiaCodes,
+                                   useEvtGenRandom);
+
+  extFactory->defineTauolaGenerator(useEvtGenRandom);  
+
+}
+
+EvtExternalGenList::~EvtExternalGenList() {
+}
+
+EvtAbsRadCorr* EvtExternalGenList::getPhotosModel() {
+
+  // Define the Photos model, which uses the EvtPhotosEngine class.
+  EvtPHOTOS* photosModel = new EvtPHOTOS();
+  return photosModel;
+
+}
+
+std::list<EvtDecayBase*> EvtExternalGenList::getListOfModels() {
+
+  // Create the Pythia and Tauola models, which use their own engine classes.
+  EvtPythia* pythiaModel = new EvtPythia();
+  EvtTauola* tauolaModel = new EvtTauola();
+
+  std::list<EvtDecayBase*> extraModels;
+  extraModels.push_back(pythiaModel);
+  extraModels.push_back(tauolaModel);
+
+  // Return the list of models
+  return extraModels;
+
+}
diff --git a/TEvtGen/EvtGenExternal/EvtExternalGenList.hh b/TEvtGen/EvtGenExternal/EvtExternalGenList.hh
new file mode 100644 (file)
index 0000000..bd4d49a
--- /dev/null
@@ -0,0 +1,50 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2012      University of Warwick, UK
+//
+// Module: EvtExternalGenFactory
+//
+// Description: A factory type method to create engines for external physics
+// generators like Pythia.
+//
+// Modification history:
+//
+//    John Back       Sept 2012           Module created
+//
+//------------------------------------------------------------------------------
+//
+
+#ifndef EVTEXTERNALGENLIST_HH
+#define EVTEXTERNALGENLIST_HH
+
+#include "EvtGenBase/EvtAbsRadCorr.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+
+#include <list>
+
+class EvtExternalGenList {
+
+public:
+
+  EvtExternalGenList(bool convertPythiaCodes = true, std::string pythiaXmlDir = "", 
+                    std::string photonType = "gamma", bool useEvtGenRandom = true);
+
+  virtual ~EvtExternalGenList();
+
+  std::list<EvtDecayBase*> getListOfModels();
+
+  EvtAbsRadCorr* getPhotosModel();
+
+protected:
+
+private:
+
+};
+
+#endif
+
diff --git a/TEvtGen/EvtGenExternal/EvtPHOTOS.cpp b/TEvtGen/EvtGenExternal/EvtPHOTOS.cpp
new file mode 100644 (file)
index 0000000..a6ef2ba
--- /dev/null
@@ -0,0 +1,50 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtPHOTOS.cc
+//
+// Description: This routine takes the particle *p and applies
+//              the PHOTOS package to generate final state radiation
+//              on the produced mesons.
+//
+// Modification history:
+//
+//    RYD     October 1, 1997        Module created
+//    JJB     May 2011               Modified to use new PHOTOS generator
+//
+//------------------------------------------------------------------------
+//
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGenExternal/EvtPHOTOS.hh"
+#include "EvtGenExternal/EvtExternalGenFactory.hh"
+
+EvtPHOTOS::EvtPHOTOS() {
+
+  _photosEngine = 0;
+  
+}
+
+EvtPHOTOS::~EvtPHOTOS() {
+
+}
+
+void EvtPHOTOS::doRadCorr(EvtParticle *p) {
+
+  if (_photosEngine == 0) {
+    _photosEngine = EvtExternalGenFactory::getInstance()->getGenerator(EvtExternalGenFactory::PhotosGenId);
+  }
+
+  if (_photosEngine != 0) {
+    _photosEngine->doDecay(p);
+  }
+  
+}
+
similarity index 82%
rename from TEvtGen/EvtGenModels/EvtPHOTOS.hh
rename to TEvtGen/EvtGenExternal/EvtPHOTOS.hh
index 3a25244864c8e0da10451ecd166ecd9612727e48..958621e4225f8f6bd1ff5ac7f3e0d310037efb8a 100644 (file)
 #include <string>
 
 class EvtParticle;
+class EvtAbsExternalGen;
 
-class EvtPHOTOS : public EvtAbsRadCorr{
+class EvtPHOTOS : public EvtAbsRadCorr {
 
 public:
     
-    //The photon type to use
-    EvtPHOTOS(std::string photontype="gamma"); 
-             
-    void doRadCorr(EvtParticle *p);
+  EvtPHOTOS();
+  virtual ~EvtPHOTOS();
+
+  virtual void doRadCorr(EvtParticle *p);
 
 private:
-    std::string _photontype;
+
+  EvtAbsExternalGen* _photosEngine;
 
 };
 
diff --git a/TEvtGen/EvtGenExternal/EvtPhotosEngine.cpp b/TEvtGen/EvtGenExternal/EvtPhotosEngine.cpp
new file mode 100644 (file)
index 0000000..d1b760d
--- /dev/null
@@ -0,0 +1,253 @@
+#ifdef EVTGEN_PHOTOS
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtPhotosEngine
+//
+// Description: Interface to the PHOTOS external generator
+//
+// Modification history:
+//
+//    John Back       May 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenExternal/EvtPhotosEngine.hh"
+
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+#include "EvtGenBase/EvtPhotonParticle.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtRandom.hh"
+
+#include "Photos/Photos.h"
+#include "Photos/PhotosHepMCEvent.h"
+#include "Photos/PhotosHepMCParticle.h"
+#include "Photos/PhotosParticle.h"
+
+#include "HepMC/GenVertex.h"
+#include "HepMC/SimpleVector.h"
+#include "HepMC/Units.h"
+
+#include <iostream>
+#include <sstream>
+#include <vector>
+
+using std::endl;
+
+EvtPhotosEngine::EvtPhotosEngine(std::string photonType, bool useEvtGenRandom) {
+
+  _photonType = photonType;
+  _gammaId = EvtId(-1,-1);
+  _mPhoton = 0.0;
+
+  report(INFO,"EvtGen")<<"Setting up PHOTOS."<<endl;
+
+  if (useEvtGenRandom == true) {
+      
+    report(INFO,"EvtGen")<<"Using EvtGen random number engine also for Photos++"<<endl;
+
+    Photospp::Photos::setRandomGenerator(EvtRandom::Flat);
+
+  }
+
+  Photospp::Photos::initialize();
+
+  // Set minimum photon energy (0.1 keV at 1 GeV scale)
+  Photospp::Photos::setInfraredCutOff(1.0e-7);
+  // Increase the maximum possible value of the interference weight
+  Photospp::Photos::maxWtInterference(64.0); // 2^n, where n = number of charges (+,-)
+  Photospp::Photos::setInterference(true);
+  Photospp::Photos::setExponentiation(true);
+
+  _initialised = false;
+
+}
+
+EvtPhotosEngine::~EvtPhotosEngine() {
+
+}
+
+void EvtPhotosEngine::initialise() {
+
+  if (_initialised == false) {
+
+    _gammaId = EvtPDL::getId(_photonType);
+
+    if (_gammaId == EvtId(-1,-1)) {
+      report(INFO,"EvtGen")<<"Error in EvtPhotosEngine. Do not recognise the photon type "
+                          <<_photonType<<". Setting this to \"gamma\". "<<endl;
+      _gammaId = EvtPDL::getId("gamma");
+    }
+
+    _mPhoton = EvtPDL::getMeanMass(_gammaId);
+
+    _initialised = true;
+  }
+
+}
+
+bool EvtPhotosEngine::doDecay(EvtParticle* theMother) {
+
+  if (_initialised == false) {this->initialise();}
+
+  if (theMother == 0) {return false;}
+
+  // Create a dummy HepMC GenEvent containing a single vertex, with the mother
+  // assigned as the incoming particle and its daughters as outgoing particles.
+  // We then pass this event to Photos for processing.
+  // It will return a modified version of the event, updating the momentum of
+  // the original particles and will contain any new photon particles. 
+  // We add these extra photons to the mother particle daughter list.
+
+  // Skip running Photos if the particle has no daughters, since we can't add FSR.
+  // Also skip Photos if the particle has too many daughters (>= 10) to avoid a problem
+  // with a hard coded upper limit in the PHOENE subroutine.
+  int nDaug(theMother->getNDaug());
+  if (nDaug == 0 || nDaug >= 10) {return false;}
+
+  // Create the dummy event.
+  HepMC::GenEvent* theEvent = new HepMC::GenEvent(HepMC::Units::GEV, HepMC::Units::MM);
+
+  // Create the decay "vertex".
+  HepMC::GenVertex* theVertex = new HepMC::GenVertex();
+  theEvent->add_vertex(theVertex);
+
+  // Add the mother particle as the incoming particle to the vertex.
+  HepMC::GenParticle* hepMCMother = this->createGenParticle(theMother, true);
+  theVertex->add_particle_in(hepMCMother);
+
+  // Find all daughter particles and assign them as outgoing particles to the vertex.
+  int iDaug(0);
+  for (iDaug = 0; iDaug < nDaug; iDaug++) {
+
+    EvtParticle* theDaughter = theMother->getDaug(iDaug);
+    HepMC::GenParticle* hepMCDaughter = this->createGenParticle(theDaughter, false);
+    theVertex->add_particle_out(hepMCDaughter);
+
+  }
+
+  // Now pass the event to Photos for processing
+  // Create a Photos event object
+  Photospp::PhotosHepMCEvent photosEvent(theEvent);
+
+  // Run the Photos algorithm
+  photosEvent.process();    
+
+  // See if Photos has created new particles. If not, do nothing extra.
+  int nDecayPart = theVertex->particles_out_size();
+  int iLoop(0);
+
+  if (nDecayPart > nDaug) {
+
+    // We have extra particles from Photos
+
+    // Get the iterator of outgoing particles for this vertex
+    HepMC::GenVertex::particles_out_const_iterator outIter;
+    for (outIter = theVertex->particles_out_const_begin();
+        outIter != theVertex->particles_out_const_end(); ++outIter) {
+
+      // Get the next HepMC GenParticle
+      HepMC::GenParticle *outParticle = *outIter;
+
+      // Get the three-momentum Photos result for this particle
+      double px(0.0), py(0.0), pz(0.0);
+      if (outParticle != 0) {
+       HepMC::FourVector HepMCP4 = outParticle->momentum();
+       px = HepMCP4.px();
+       py = HepMCP4.py();
+       pz = HepMCP4.pz();
+      }
+
+      // Create an empty 4-momentum vector for the new/modified daughters
+      EvtVector4R newP4;
+
+      if (iLoop < nDaug) {
+
+       // Original daughters
+       EvtParticle* daugParticle = theMother->getDaug(iLoop);
+       if (daugParticle != 0) {
+
+         // Keep the original particle mass, but set the three-momentum
+         // according to what Photos has modified. However, this will 
+         // violate energy conservation (from what Photos has provided).
+         double mass = daugParticle->mass();
+         double energy = sqrt(mass*mass + px*px + py*py + pz*pz);
+         newP4.set(energy, px, py, pz);
+         // Set the new four-momentum (FSR applied)
+         daugParticle->setP4WithFSR(newP4);
+
+       }
+
+      } else {
+
+       // Extra photon particle. Setup the four-momentum object.
+       double energy = sqrt(_mPhoton*_mPhoton + px*px + py*py + pz*pz);
+       newP4.set(energy, px, py, pz);
+
+       // Create a new photon particle and add it to the list of daughters
+       EvtPhotonParticle* gamma = new EvtPhotonParticle();
+       gamma->init(_gammaId, newP4);
+       gamma->setFSRP4toZero();
+       gamma->addDaug(theMother); // Let the mother know about this new particle
+
+      }
+      
+      // Increment the loop counter for detecting additional photon particles
+      iLoop++;
+
+    }    
+
+  }
+
+  // Cleanup
+  theEvent->clear();
+  delete theEvent;
+
+  return true;
+
+}
+
+HepMC::GenParticle* EvtPhotosEngine::createGenParticle(EvtParticle* theParticle, bool incoming) {
+
+  // Method to create an HepMC::GenParticle version of the given EvtParticle.
+  if (theParticle == 0) {return 0;}
+
+  // Get the 4-momentum (E, px, py, pz) for the EvtParticle
+  EvtVector4R p4(0.0, 0.0, 0.0, 0.0);
+
+  if (incoming == true) {
+    p4 = theParticle->getP4Restframe();
+  } else {
+    p4 = theParticle->getP4();
+  }
+  
+  // Convert this to the HepMC 4-momentum
+  double E = p4.get(0);
+  double px = p4.get(1);
+  double py = p4.get(2);
+  double pz = p4.get(3);
+
+  HepMC::FourVector hepMC_p4(px, py, pz, E);
+
+  int PDGInt = EvtPDL::getStdHep(theParticle->getId());
+
+  // Set the status flag for the particle. This is required, otherwise Photos++ 
+  // will crash from out-of-bounds array index problems.
+  int status = Photospp::PhotosParticle::HISTORY;
+  if (incoming == false) {status = Photospp::PhotosParticle::STABLE;}
+
+  HepMC::GenParticle* genParticle = new HepMC::GenParticle(hepMC_p4, PDGInt, status);
+
+  return genParticle;
+
+}
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtPhotosEngine.hh b/TEvtGen/EvtGenExternal/EvtPhotosEngine.hh
new file mode 100644 (file)
index 0000000..19dd515
--- /dev/null
@@ -0,0 +1,60 @@
+#ifdef EVTGEN_PHOTOS
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtPhotosEngine
+//
+// Description: Interface to the PHOTOS external generator
+//
+// Modification history:
+//
+//    John Back       May 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTPHOTOSENGINE_HH
+#define EVTPHOTOSENGINE_HH
+
+#include "EvtGenModels/EvtAbsExternalGen.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenParticle.h"
+
+#include <string>
+
+class EvtPhotosEngine : public EvtAbsExternalGen {
+
+public:
+
+  EvtPhotosEngine(std::string photonType = "gamma", bool useEvtGenRandom = true);
+  virtual ~EvtPhotosEngine();
+
+  virtual bool doDecay(EvtParticle* theMother);
+
+  virtual void initialise();
+
+protected:
+
+private:
+
+  std::string _photonType;
+  EvtId _gammaId;
+  double _mPhoton;
+  bool _initialised;
+
+  HepMC::GenParticle* createGenParticle(EvtParticle* theParticle, bool incoming);
+
+};
+
+#endif
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtPythia.cpp b/TEvtGen/EvtGenExternal/EvtPythia.cpp
new file mode 100644 (file)
index 0000000..ec085d9
--- /dev/null
@@ -0,0 +1,161 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//                    2011      University of Warwick, UK
+// Module: EvtPythia.cc
+//
+// Description: Routine to decay a particle according th phase space
+//
+// Modification history:
+//
+//    RYD       January 8, 1997       Module created
+//    JJB       April 2011            Modified to use new Pythia8 interface
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtSpinDensity.hh"
+
+#include "EvtGenExternal/EvtPythia.hh"
+
+#include "EvtGenExternal/EvtExternalGenFactory.hh"
+#include "EvtGenModels/EvtAbsExternalGen.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+
+#include <iostream>
+#include <cmath>
+
+EvtPythia::EvtPythia() {
+
+  // Set the Pythia engine to a null pointer at first.
+  // When we do the decay, we retrieve the pointer to the Pythia engine
+  // and use that for all decays. All clones will use the same Pythia engine.
+  _pythiaEngine = 0;
+
+}
+
+EvtPythia::~EvtPythia() {
+  _commandList.clear();
+}
+
+std::string EvtPythia::getName(){
+
+  return "PYTHIA";
+
+}
+
+EvtDecayBase* EvtPythia::clone(){
+
+  return new EvtPythia();
+
+}
+
+
+void EvtPythia::init(){
+
+  // Do not check for any arguments. The PythiaEngine will check
+  // to see if there is an integer specifying the decay physics,
+  // otherwise it just uses phase-space.
+
+}
+
+void EvtPythia::initProbMax(){
+
+  noProbMax();
+
+}
+
+void EvtPythia::decay( EvtParticle *p ){
+
+  // We have to initialise the Pythia engine after the decay.dec files have been read in,
+  // since we will be modifying Pythia data tables, and that is only possible once we have
+  // defined all Pythia-type decays we want to use. 
+  // We check to see if the engine has been created before doing the decay.
+  // This should only create the full Pythia engine once, and all clones will point to the same engine.
+
+  if (_pythiaEngine == 0) {
+    _pythiaEngine = EvtExternalGenFactory::getInstance()->getGenerator(EvtExternalGenFactory::PythiaGenId);
+  }
+    
+  if (_pythiaEngine != 0) {
+    _pythiaEngine->doDecay(p);
+  }
+
+  this->fixPolarisations(p);
+
+}
+
+void EvtPythia::fixPolarisations(EvtParticle *p) {
+
+  // Special case to handle the J/psi polarisation
+
+  if (p == 0) {return;}
+
+  int nDaug = p->getNDaug();  
+  int i(0);
+
+  static EvtId Jpsi = EvtPDL::getId("J/psi");
+
+  for (i = 0; i < nDaug; i++){
+
+    EvtParticle* theDaug = p->getDaug(i);
+
+    if (theDaug != 0) {
+
+      if (theDaug->getId() == Jpsi) {
+  
+       EvtSpinDensity rho;
+      
+       rho.setDim(3);
+       rho.set(0,0,0.5);
+       rho.set(0,1,0.0);
+       rho.set(0,2,0.0);
+
+       rho.set(1,0,0.0);
+       rho.set(1,1,1.0);
+       rho.set(1,2,0.0);
+
+       rho.set(2,0,0.0);
+       rho.set(2,1,0.0);
+       rho.set(2,2,0.5);
+
+       EvtVector4R p4Psi = theDaug->getP4();
+
+       double alpha = atan2(p4Psi.get(2),p4Psi.get(1));
+       double beta = acos(p4Psi.get(3)/p4Psi.d3mag());
+
+       theDaug->setSpinDensityForwardHelicityBasis(rho,alpha,beta,0.0);
+       setDaughterSpinDensity(i);
+
+      }
+    }
+  }
+}
+
+std::string EvtPythia::commandName() {
+
+  // Allow backward compatibility for decay.dec files
+  // having JetSetPar parameters. They are obsolete for Pythia 8, 
+  // since the JetSet-type array variables do not exist.
+  // Need to think about including user defined parameters in 
+  // EvtPythiaEngine::updatePhysicsParameters().
+  return std::string("JetSetPar");
+  
+}
+
+void EvtPythia::command(std::string cmd) {
+
+  // Locally store commands in a vector
+  _commandList.push_back(cmd);
+
+}
diff --git a/TEvtGen/EvtGenExternal/EvtPythia.hh b/TEvtGen/EvtGenExternal/EvtPythia.hh
new file mode 100644 (file)
index 0000000..ba25cdf
--- /dev/null
@@ -0,0 +1,69 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//                    2011      University of Warwick, UK
+//
+// Module: EvtGen/EvtPythia.hh
+//
+// Description:
+// Class to handle generic phase space decays not done
+// in other decay models.
+//
+// Modification history:
+//
+//    DJL/RYD     August 11, 1998         Module created
+//    JJB         April 2011         Modified to use new Pythia8 interface
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTPYTHIA_HH
+#define EVTPYTHIA_HH
+
+#include "EvtGenBase/EvtDecayIncoherent.hh"
+
+#include <string>
+#include <vector>
+
+class EvtParticle;
+class EvtAbsExternalGen;
+class EvtDecayBase;
+
+class EvtPythia: public  EvtDecayIncoherent  {
+
+public:
+  
+  EvtPythia();
+  virtual ~EvtPythia();
+
+  std::string getName();
+
+  EvtDecayBase* clone();
+
+  void initProbMax();
+
+  void init();
+
+  void decay(EvtParticle *p);
+
+  std::string commandName();
+  void command(std::string);
+
+protected:
+
+  EvtAbsExternalGen* _pythiaEngine;
+
+private:
+
+  void fixPolarisations(EvtParticle *p);
+  std::vector<std::string> _commandList;
+
+};
+
+#endif
+
diff --git a/TEvtGen/EvtGenExternal/EvtPythia6CommandConverter.cpp b/TEvtGen/EvtGenExternal/EvtPythia6CommandConverter.cpp
new file mode 100644 (file)
index 0000000..6c83e2f
--- /dev/null
@@ -0,0 +1,236 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2012      University of Warwick, UK
+//
+// Module: EvtPythia6CommandConverter
+//
+// Description:  Function to replace Pythia 6 commands with the
+//               corresponding Pythia 8 commands.
+//
+// Modification history:
+//
+//    Daniel Craik       March 2012            Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenExternal/EvtPythia6CommandConverter.hh"
+
+#include "EvtGenBase/EvtReport.hh"
+
+#include <iostream>
+#include <stdlib.h>
+
+using std::endl;
+
+std::vector<std::string> convertPythia6Command(Command command) {
+  std::string module = command["MODULE"];
+  std::string param  = command["PARAM"];
+  std::string value  = command["VALUE"];
+  std::vector<std::string> commandStrings;
+  if(module == "MSTJ") {
+    switch(atoi(param.c_str())) {
+      //1,2,3
+      case 11:
+        switch(atoi(value.c_str())) {
+          case 3:
+            commandStrings.push_back("StringZ:usePetersonC = on");
+            commandStrings.push_back("StringZ:usePetersonB = on");
+            commandStrings.push_back("StringZ:usePetersonH = on");
+            break;
+          case 1:
+          case 4:
+            report(ERROR,"EvtGen")<<"Pythia6 parameter: MSTJ(11)="<<value<<" is only implicitly supported."<<endl;
+            report(ERROR,"EvtGen")<<"Please use MSTJ(11)=5 and ensure PARJ(46) and PARJ(47) are both set appropriately."<<endl;
+            ::abort();
+          case 5:
+            commandStrings.push_back("StringZ:usePetersonC = off");
+            commandStrings.push_back("StringZ:usePetersonB = off");
+            commandStrings.push_back("StringZ:usePetersonH = off");
+            break;
+          default:
+            report(ERROR,"EvtGen")<<"Pythia6 parameter: MSTJ(11)="<<value<<" is not currently supported."<<endl;
+            report(ERROR,"EvtGen")<<"Please use MSTJ(11)=3 or MSTJ(11)=5."<<endl;
+            ::abort();
+        }
+        break;
+      case 12:
+        switch(atoi(value.c_str())) {
+          case 2:
+            commandStrings.push_back("StringFlav:suppressLeadingB = off");
+            break;
+          case 3:
+            commandStrings.push_back("StringFlav:suppressLeadingB = on");
+            break;
+          default:
+            report(ERROR,"EvtGen")<<"Pythia6 parameter: MSTJ(12)="<<value<<" is not currently supported."<<endl;
+            report(ERROR,"EvtGen")<<"Please use MSTJ(12)=2 or MSTJ(12)=3."<<endl;
+            ::abort();
+        }
+        break;
+      //13-19,21-24
+      case 26:
+        switch(atoi(value.c_str())) {
+          case 0:
+            commandStrings.push_back("ParticleDecays:mixB = off");
+            break;
+          case 1:
+          case 2:
+            commandStrings.push_back("ParticleDecays:mixB = on");
+            break;
+        }
+        break;
+      //28,38-50
+      //51 Inclusion of BE effects - TODO
+      case 52:
+        switch(atoi(value.c_str())) {
+          case 9:
+            commandStrings.push_back("BoseEinstein:Eta = on");
+          case 7:
+            commandStrings.push_back("BoseEinstein:Kaon = on");
+          case 3:
+            commandStrings.push_back("BoseEinstein:Pion = on");
+            break;
+          default:
+            report(ERROR,"EvtGen")<<"Pythia6 parameter: MSTJ(52)="<<value<<" is not allowed."<<endl;
+            report(ERROR,"EvtGen")<<"Please select 3,7 or 9."<<endl;
+            ::abort();
+        }
+        break;
+      //53-57,91-93,101-121
+      default:
+        report(WARNING,"EvtGen")<<"Pythia6 parameter: "<<module<<"("<<param<<") is not currently supported and will be ignored."<<endl;
+        report(WARNING,"EvtGen")<<"A similar Pythia8 parameter may be available."<<endl;
+    }
+  } else if(module == "PARJ") {
+    switch(atoi(param.c_str())) {
+      case 1:
+        commandStrings.push_back("StringFlav:probQQtoQ = "+value);
+        break;
+      case 2:
+        commandStrings.push_back("StringFlav:probStoUD = "+value);
+        break;
+      case 3:
+        commandStrings.push_back("StringFlav:probSQtoQQ = "+value);
+        break;
+      case 4:
+        commandStrings.push_back("StringFlav:probQQ1toQQ0 = "+value);
+        break;
+      case 5:
+        commandStrings.push_back("StringFlav:popcornRate = "+value);
+        break;
+      case 6:
+        commandStrings.push_back("StringFlav:popcornSpair = "+value);
+        break;
+      case 7:
+        commandStrings.push_back("StringFlav:popcornSmeson = "+value);
+        break;
+      //8-10 Advanced popcorn model - can't find these in Pythia8 (unsupported?)
+      case 11:
+        commandStrings.push_back("StringFlav:mesonUDvector = "+value);
+        break;
+      case 12:
+        commandStrings.push_back("StringFlav:mesonSvector = "+value);
+        break;
+      case 13:
+        commandStrings.push_back("StringFlav:mesonCvector = "+value);
+        commandStrings.push_back("StringFlav:mesonBvector = "+value);
+        break;
+      case 14:
+        commandStrings.push_back("StringFlav:mesonUDL1S0J1 = "+value);
+        commandStrings.push_back("StringFlav:mesonSL1S0J1 = "+value);
+        commandStrings.push_back("StringFlav:mesonCL1S0J1 = "+value);
+        commandStrings.push_back("StringFlav:mesonBL1S0J1 = "+value);
+        break;
+      case 15:
+        commandStrings.push_back("StringFlav:mesonUDL1S1J0 = "+value);
+        commandStrings.push_back("StringFlav:mesonSL1S1J0 = "+value);
+        commandStrings.push_back("StringFlav:mesonCL1S1J0 = "+value);
+        commandStrings.push_back("StringFlav:mesonBL1S1J0 = "+value);
+        break;
+      case 16:
+        commandStrings.push_back("StringFlav:mesonUDL1S1J1 = "+value);
+        commandStrings.push_back("StringFlav:mesonSL1S1J1 = "+value);
+        commandStrings.push_back("StringFlav:mesonCL1S1J1 = "+value);
+        commandStrings.push_back("StringFlav:mesonBL1S1J1 = "+value);
+        break;
+      case 17:
+        commandStrings.push_back("StringFlav:mesonUDL1S1J2 = "+value);
+        commandStrings.push_back("StringFlav:mesonSL1S1J2 = "+value);
+        commandStrings.push_back("StringFlav:mesonCL1S1J2 = "+value);
+        commandStrings.push_back("StringFlav:mesonBL1S1J2 = "+value);
+        break;
+      case 18:
+        commandStrings.push_back("StringFlav:decupletSup = "+value);
+        break;
+      case 19:
+        commandStrings.push_back("StringFlav:lightLeadingBSup = "+value);
+        commandStrings.push_back("StringFlav:heavyLeadingBSup = "+value);
+        break;
+      //21-24 Gaussian PT distributions for primary hadrons - can't find these in Pythia8
+      case 25:
+        commandStrings.push_back("StringFlav:etaSup = "+value);
+        break;
+      case 26:
+        commandStrings.push_back("StringFlav:etaPrimeSup = "+value);
+        break;
+      //31,32
+      case 33:
+        commandStrings.push_back("StringFragmentation:stopMass = "+value);
+        break;
+      //34 Stop mass for MSTJ(11)=2 - can't find MSTJ(11)=2 analogue in Pythia 8 so leaving this out too
+      //36
+      case 37:
+        commandStrings.push_back("StringFragmentation:stopSmear = "+value);
+        break;
+      //39,40
+      case 41:
+        commandStrings.push_back("StringZ:aLund = "+value);
+        break;
+      case 42:
+        commandStrings.push_back("StringZ:bLund = "+value);
+        break;
+      //43,44
+      case 45:
+        commandStrings.push_back("StringZ:aExtraDiquark = "+value);
+        break;
+      case 46:
+        commandStrings.push_back("StringZ:rFactC = "+value);
+        break;
+      case 47:
+        commandStrings.push_back("StringZ:rFactB = "+value);
+        break;
+      //48,49,50,51-55,59,61-63,64,65,66,71,72,73,74
+      case 76:
+        commandStrings.push_back("ParticleDecays:xBdMix = "+value);
+        break;
+      case 77:
+        commandStrings.push_back("ParticleDecays:xBsMix = "+value);
+        break;
+      //80-90 Time-like parton showers - can't find these in Pythia8
+      case 91:
+        commandStrings.push_back("BoseEinstein:widthSep = "+value);
+        break;
+      case 92:
+        commandStrings.push_back("BoseEinstein:lambda = "+value);
+        break;
+      case 93:
+        commandStrings.push_back("BoseEinstein:QRef = "+value);
+        break;
+      //94-96 Further BE parameters - can't find these in Pythia8
+      //121-171 parameters for ee event generation - can't find these in Pythia8
+      //180-195 Various coupling constants & parameters related to couplings - can't find these in Pythia8
+      default:
+        report(WARNING,"EvtGen")<<"Pythia6 parameter: "<<module<<"("<<param<<") is not currently supported and will be ignored."<<endl;
+        report(WARNING,"EvtGen")<<"A similar Pythia8 parameter may be available."<<endl;
+    }
+  } else {
+    report(WARNING,"EvtGen")<<"Pythia6 parameter: "<<module<<"("<<param<<") is not currently supported and will be ignored."<<endl;
+    report(WARNING,"EvtGen")<<"A similar Pythia8 parameter may be available."<<endl;
+  }
+    return commandStrings;
+}
diff --git a/TEvtGen/EvtGenExternal/EvtPythia6CommandConverter.hh b/TEvtGen/EvtGenExternal/EvtPythia6CommandConverter.hh
new file mode 100644 (file)
index 0000000..fd632d1
--- /dev/null
@@ -0,0 +1,31 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2012      University of Warwick, UK
+//
+// Module: EvtPythia6CommandConverter
+//
+// Description:  Function to replace Pythia 6 commands with the
+//               corresponding Pythia 8 commands.
+//
+// Modification history:
+//
+//    Daniel Craik       March 2012            Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
+
+#include <string>
+#include <vector>
+
+#ifndef EVTPYTHIA6COMMANDCONVERTER_HH
+#define EVTPYTHIA6COMMANDCONVERTER_HH
+
+std::vector<std::string> convertPythia6Command(Command command);
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtPythiaEngine.cpp b/TEvtGen/EvtGenExternal/EvtPythiaEngine.cpp
new file mode 100644 (file)
index 0000000..c649b44
--- /dev/null
@@ -0,0 +1,803 @@
+#ifdef EVTGEN_PYTHIA
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtPythiaEngine
+//
+// Description: Interface to the Pytha 8 external generator
+//
+// Modification history:
+//
+//    John Back       April 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenExternal/EvtPythiaEngine.hh"
+
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtDecayTable.hh"
+#include "EvtGenBase/EvtSpinType.hh"
+#include "EvtGenBase/EvtParticleFactory.hh"
+#include "EvtGenBase/EvtReport.hh"
+
+#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
+#include "EvtGenExternal/EvtPythia6CommandConverter.hh"
+
+//#include "Pythia8/Event.h"
+#include "pythia8175/include/Event.h"
+
+#include <iostream>
+#include <sstream>
+
+using std::endl;
+
+EvtPythiaEngine::EvtPythiaEngine(std::string xmlDir, bool convertPhysCodes,
+                                bool useEvtGenRandom) {
+
+  // Create two Pythia generators. One will be for generic
+  // Pythia decays in the decay.dec file. The other one will be to 
+  // only decay aliased particles, which are in general "signal" 
+  // decays different from those in the decay.dec file.
+  // Even though it is not possible to have two different particle
+  // versions in one Pythia generator, we can use two generators to 
+  // get the required behaviour.
+
+  report(INFO,"EvtGen")<<"Creating generic Pythia generator"<<endl;
+  _genericPythiaGen = new Pythia8::Pythia(xmlDir);
+  _genericPartData = _genericPythiaGen->particleData;
+
+  report(INFO,"EvtGen")<<"Creating alias Pythia generator"<<endl;
+  _aliasPythiaGen  = new Pythia8::Pythia(xmlDir);
+  _aliasPartData = _aliasPythiaGen->particleData;
+
+  _thePythiaGenerator = 0;
+  _daugPDGVector.clear(); _daugP4Vector.clear();
+
+  _convertPhysCodes = convertPhysCodes;
+
+  // Specify if we are going to use the random number generator (engine)
+  // from EvtGen for Pythia 8.
+  _useEvtGenRandom = useEvtGenRandom;
+
+  _evtgenRandom = new EvtPythiaRandom();
+
+  _initialised = false;
+
+}
+
+EvtPythiaEngine::~EvtPythiaEngine() {
+
+  delete _genericPythiaGen; _genericPythiaGen = 0;
+  delete _aliasPythiaGen; _aliasPythiaGen = 0;
+
+  delete _evtgenRandom; _evtgenRandom = 0;
+
+  _thePythiaGenerator = 0;
+
+  this->clearDaughterVectors();
+  this->clearPythiaModeMap();
+}
+
+void EvtPythiaEngine::clearDaughterVectors() {
+  _daugPDGVector.clear();
+  _daugP4Vector.clear();
+}
+
+void EvtPythiaEngine::clearPythiaModeMap() {
+
+  PythiaModeMap::iterator iter;
+  for (iter = _pythiaModeMap.begin(); iter != _pythiaModeMap.end(); ++iter) {
+
+    std::vector<int> modeVector = iter->second;
+    modeVector.clear();
+
+  }
+
+  _pythiaModeMap.clear();
+
+}
+
+void EvtPythiaEngine::initialise() {
+
+  if (_initialised) {return;}
+
+  this->clearPythiaModeMap();
+
+  this->updateParticleLists();
+
+  // Hadron-level processes only (hadronized, string fragmentation and secondary decays).
+  // We do not want to generate the full pp or e+e- event structure etc..
+  _genericPythiaGen->readString("ProcessLevel:all = off");
+  _aliasPythiaGen->readString("ProcessLevel:all = off");
+
+  // Apply any other physics (or special particle) requirements/cuts etc..
+  this->updatePhysicsParameters();
+
+  // Set the random number generator
+  if (_useEvtGenRandom == true) {
+
+    _genericPythiaGen->setRndmEnginePtr(_evtgenRandom);
+    _aliasPythiaGen->setRndmEnginePtr(_evtgenRandom);
+
+  }
+
+  _genericPythiaGen->init();
+  _aliasPythiaGen->init();
+
+  _initialised = true;
+
+}
+
+bool EvtPythiaEngine::doDecay(EvtParticle* theParticle) {
+
+  // Store the mother particle within a Pythia8 Event object.
+  // Then do the hadron level decays.
+  // The EvtParticle must be a colour singlet (meson/baryon/lepton), i.e. not a gluon or quark
+
+  // We delete any daughters the particle may have, since we are asking Pythia
+  // to generate the decay anew. Also note that _any_ Pythia decay allowed for the particle
+  // will be generated and not the specific Pythia decay mode that EvtGen has already
+  // specified. This is necessary since we only want to initialise the Pythia decay table
+  // once; all Pythia branching fractions for a given mother particle are renormalised to sum to 1.0.
+  // In EvtGen decay.dec files, it may be the case that Pythia decays are only used
+  // for some of the particle decays (i.e. Pythia BF sum < 1.0). As we loop over many events,
+  // the total frequency for each Pythia decay mode will normalise correctly to what
+  // we wanted via the specifications made to the decay.dec file, even though event-by-event
+  // the EvtGen decay channel and the Pythia decay channel may be different.
+
+  if (_initialised == false) {this->initialise();}
+  
+  if (theParticle == 0) {
+    report(INFO,"EvtGen")<<"Error in EvtPythiaEngine::doDecay. The mother particle is null. Not doing any Pythia decay."<<endl;
+    return false;
+  }
+
+  // Delete EvtParticle daughters if they already exist
+  if (theParticle->getNDaug() != 0) {
+    bool keepChannel(false);
+    theParticle->deleteDaughters(keepChannel);
+  }
+
+  EvtId particleId = theParticle->getId();
+  int isAlias = particleId.isAlias();
+
+  // Choose the generator depending if we have an aliased (parent) particle or not
+  _thePythiaGenerator = _genericPythiaGen;
+  if (isAlias == 1) {_thePythiaGenerator = _aliasPythiaGen;}
+
+  //_thePythiaGenerator->settings.listChanged();
+
+  // Need to use the reference to the Pythia8::Event object,
+  // otherwise it will just return a new empty, default event object.
+  Pythia8::Event& theEvent = _thePythiaGenerator->event;
+  theEvent.reset();
+
+  // Initialise the event to be the particle rest frame
+  int PDGCode = EvtPDL::getStdHep(particleId);
+
+  int status(1);
+  int colour(0), anticolour(0);
+  double px(0.0), py(0.0), pz(0.0);
+  double m0 = theParticle->mass();
+  double E = m0;
+
+  theEvent.append(PDGCode, status, colour, anticolour, px, py, pz, E, m0);
+
+  // Generate the Pythia event
+  int iTrial(0);
+  bool generatedEvent(false);
+  for (iTrial = 0; iTrial < 10; iTrial++) {
+    
+    generatedEvent = _thePythiaGenerator->next();
+    if (generatedEvent) {break;}
+    
+  }
+
+  bool success(false);
+
+  if (generatedEvent) {
+
+    // Store the daughters for this particle from the Pythia decay tree.
+    // This is a recursive function that will continue looping through
+    // all available daughters until the first set of non-quark and non-gluon 
+    // particles are encountered in the Pythia Event structure.
+
+    // First, clear up the internal vectors storing the daughter
+    // EvtId types and 4-momenta.
+    this->clearDaughterVectors();
+
+    // Now store the daughter info. Since this is a recursive function
+    // to loop through the full Pythia decay tree, we do not want to create 
+    // EvtParticles here but in the next step.
+    this->storeDaughterInfo(theParticle, 1);
+
+    // Now create the EvtParticle daughters of the (parent) particle.
+    // We need to use the EvtParticle::makeDaughters function
+    // owing to the way EvtParticle stores parent-daughter information.
+    this->createDaughterEvtParticles(theParticle);
+
+    //theParticle->printTree();
+    //theEvent.list(true, true);
+
+    success = true;
+
+  } 
+
+  return success;
+
+}
+
+void EvtPythiaEngine::storeDaughterInfo(EvtParticle* theParticle, int startInt) {
+  
+  Pythia8::Event& theEvent = _thePythiaGenerator->event;
+
+  std::vector<int> daugList = theEvent.daughterList(startInt);
+
+  std::vector<int>::iterator daugIter;
+  for (daugIter = daugList.begin(); daugIter != daugList.end(); ++daugIter) {
+
+    int daugInt = *daugIter;
+
+    // Ask if the daughter is a quark or gluon. If so, recursively search again.
+    Pythia8::Particle& daugParticle = theEvent[daugInt];
+
+    if (daugParticle.isQuark() || daugParticle.isGluon()) {
+
+      // Recursively search for correct daughter type
+      this->storeDaughterInfo(theParticle, daugInt);
+
+    } else {
+
+      // We have a daughter that is not a quark nor gluon particle.
+      // Make sure we are not double counting particles, since several quarks
+      // and gluons make one particle.
+      // Set the status flag for any "new" particle to say that we have stored it.
+      // Use status flag = 1000 (within the user allowed range for Pythia codes).
+
+      // Check that the status flag for the particle is not equal to 1000
+      int statusCode = daugParticle.status();
+      if (statusCode != 1000) {
+
+       int daugPDGInt = daugParticle.id();
+
+       double px = daugParticle.px();
+       double py = daugParticle.py();
+       double pz = daugParticle.pz();
+       double E = daugParticle.e();
+       EvtVector4R daughterP4(E, px, py, pz);
+
+       // Now store the EvtId and 4-momentum in the internal vectors
+       _daugPDGVector.push_back(daugPDGInt);
+       _daugP4Vector.push_back(daughterP4);
+
+       // Set the status flag for the Pythia particle to let us know
+       // that we have already considered it to avoid double counting.
+       daugParticle.status(1000);
+
+      } // Status code != 1000
+
+    }
+
+  }
+
+}
+
+void EvtPythiaEngine::createDaughterEvtParticles(EvtParticle* theParent) {
+
+  if (theParent == 0) {
+    report(INFO,"EvtGen")<<"Error in EvtPythiaEngine::createDaughterEvtParticles. The parent is null"<<endl;
+    return;
+  }
+
+  // Get the list of Pythia decay modes defined for this particle id alias.
+  // It would be easier to just use the decay channel number that Pythia chose to use 
+  // for the particle decay, but this is not accessible from the Pythia interface at present.
+
+  int nDaughters = _daugPDGVector.size();
+  std::vector<EvtId> daugAliasIdVect(0);
+
+  EvtId particleId = theParent->getId();
+  // Check to see if we have an anti-particle. If we do, charge conjugate the particle id to get the
+  // Pythia "alias" we can compare with the defined (particle) Pythia modes.
+  int PDGId = EvtPDL::getStdHep(particleId);
+  int aliasInt = particleId.getAlias();
+  int pythiaAliasInt(aliasInt);
+
+  if (PDGId < 0) {
+    // We have an anti-particle.
+    EvtId conjPartId = EvtPDL::chargeConj(particleId);
+    pythiaAliasInt = conjPartId.getAlias();
+  }
+
+  std::vector<int> pythiaModes = _pythiaModeMap[pythiaAliasInt];
+
+  // Loop over all available Pythia decay modes and find the channel that matches
+  // the daughter ids. Set each daughter id to also use the alias integer.
+  // This will then convert the Pythia generated channel to the EvtGen alias defined one.
+
+  std::vector<int>::iterator modeIter;
+  bool gotMode(false);
+
+  for (modeIter = pythiaModes.begin(); modeIter != pythiaModes.end(); ++modeIter) {
+
+    // Stop the loop if we have the right decay mode channel
+    if (gotMode) {break;}
+
+    int pythiaModeInt = *modeIter;
+
+    EvtDecayBase* decayModel = EvtDecayTable::getInstance()->findDecayModel(aliasInt, pythiaModeInt);
+
+    if (decayModel != 0) {
+
+      int nModeDaug = decayModel->getNDaug();
+
+      // We need to make sure that the number of daughters match
+      if (nDaughters == nModeDaug) {
+
+       int iModeDaug(0);
+       for (iModeDaug = 0; iModeDaug < nModeDaug; iModeDaug++) {
+
+         EvtId daugId = decayModel->getDaug(iModeDaug);
+         int daugPDGId = EvtPDL::getStdHep(daugId);
+         // Pythia has used the right PDG codes for this decay mode, even for conjugate modes
+         int pythiaPDGId = _daugPDGVector[iModeDaug];
+
+         if (daugPDGId == pythiaPDGId) {
+           daugAliasIdVect.push_back(daugId);
+         }
+
+       } // Loop over EvtGen mode daughters
+
+       int daugAliasSize = daugAliasIdVect.size();
+       if (daugAliasSize == nDaughters) {
+         // All daughter Id codes are accounted for. Set the flag to stop the loop.
+         gotMode = true;
+       } else {
+         // We do not have the correct daughter ordering. Clear the id vector
+         // and try another mode.
+         daugAliasIdVect.clear();
+       }
+
+      } // Same number of daughters
+    
+    } // decayModel != 0
+
+  } // Loop over available Pythia modes  
+
+  if (gotMode == false) {
+
+    // We did not find a match for the daughter aliases. Just use the normal PDG codes
+    // from the Pythia decay result
+    int iPyDaug(0);
+    for (iPyDaug = 0; iPyDaug < nDaughters; iPyDaug++) {
+
+      int daugPDGCode = _daugPDGVector[iPyDaug];
+      EvtId daugPyId = EvtPDL::evtIdFromStdHep(daugPDGCode);
+      daugAliasIdVect.push_back(daugPyId);
+
+    }
+  }
+
+  // Make the EvtParticle daughters (with correct alias id's). Their 4-momenta are uninitialised.
+  theParent->makeDaughters(nDaughters, daugAliasIdVect);
+
+  // Now set the 4-momenta of the daughters.
+  int iDaug(0);
+  // Can use an iterator here, but we already had to use the vector size...
+  for (iDaug = 0; iDaug < nDaughters; iDaug++) {
+
+    EvtParticle* theDaughter = theParent->getDaug(iDaug);
+
+    // Set the correct 4-momentum for each daughter particle.
+    if (theDaughter != 0) {
+      EvtId theDaugId = daugAliasIdVect[iDaug];
+      const EvtVector4R theDaugP4 = _daugP4Vector[iDaug];
+      theDaughter->init(theDaugId, theDaugP4);
+    }
+    
+  }
+
+}
+
+void EvtPythiaEngine::updateParticleLists() {
+
+  // Use the EvtGen decay table (decay/user.dec) to update particle entries 
+  // for Pythia. Pythia 8 should use the latest PDG codes, so if the evt.pdl
+  // file is up to date, just let Pythia 8 find the particle properties
+  // knowing the PDG code integer. If we want to use evt.pdl for _all_
+  // particle properties, then we need to make sure that this is up to date,
+  // and modify the code in this class to read that data and use it...
+  // Using the PDG code only also avoids the need to convert EvtGen particle names
+  // to Pythia particle names.
+
+  // Loop over all entries in the EvtPDL particle data table.
+  // Aliases are added at the end with id numbers equal to the
+  // original particle, but with alias integer = lastPDLEntry+1 etc..
+  int iPDL;
+  int nPDL = EvtPDL::entries();
+
+  // Reset the _addedPDGCodes map that keeps track
+  // of any new particles added to the Pythia input data stream
+  _addedPDGCodes.clear();
+
+  for (iPDL = 0; iPDL < nPDL; iPDL++) {
+
+    EvtId particleId = EvtPDL::getEntry(iPDL);
+    int aliasInt = particleId.getAlias();
+
+    // Check which particles have a Pythia decay defined.
+    // Get the list of all possible decays for the particle, using the alias integer.
+    // If the particle is not actually an alias, aliasInt = idInt.
+
+    // Should change isJetSet to isPythia eventually.
+    bool hasPythiaDecays = EvtDecayTable::getInstance()->hasPythia(aliasInt);
+
+    if (hasPythiaDecays) {
+
+      int isAlias = particleId.isAlias();
+
+      int PDGCode = EvtPDL::getStdHep(particleId);
+
+      // Decide what generator to use depending on ether we have 
+      // an alias particle or not
+      _thePythiaGenerator = _genericPythiaGen;
+      _theParticleData = _genericPartData;
+      if (isAlias == 1) {
+       _thePythiaGenerator = _aliasPythiaGen;
+       _theParticleData = _aliasPartData;
+      }
+
+      // Find the Pythia particle name given the standard PDG code integer
+      std::string dataName = _theParticleData.name(PDGCode);
+      bool alreadyStored(false);
+      if (_addedPDGCodes.find(abs(PDGCode)) != _addedPDGCodes.end()) {alreadyStored = true;}
+
+      if (dataName == " " && alreadyStored == false) {
+
+        // Particle and its antiparticle does not exist in the Pythia database.
+       // Create a new particle, then create the new decay modes.
+       this->createPythiaParticle(particleId, PDGCode);
+
+      } else {
+       
+       // Particle exists in the Pythia database.
+       // Could update mass/lifetime values here. For now just use Pythia defaults.
+
+      }
+
+      // For the particle, create the Pythia decay modes.
+      // Update Pythia data tables.
+      this->updatePythiaDecayTable(particleId, aliasInt, PDGCode);
+
+    } // Loop over Pythia decays
+
+  } // Loop over EvtPDL entries
+
+  //report(INFO,"EvtGen")<<"Writing out changed generic Pythia decay list"<<endl;
+  //_genericPythiaGen->particleData.listChanged();
+
+  //report(INFO,"EvtGen")<<"Writing out changed alias Pythia decay list"<<endl;
+  //_aliasPythiaGen->particleData.listChanged();
+
+}
+
+void EvtPythiaEngine::updatePythiaDecayTable(EvtId& particleId, int aliasInt, int PDGCode) {
+  
+  // Update the particle data table in Pythia.
+  // The tables store information about the allowed decay modes
+  // whre the PDGId for all particles must be positive; anti-particles are stored
+  // with the corresponding particle entry.
+  // Since we do not want to implement CP violation here, just use the same branching
+  // fractions for particle and anti-particle modes.
+
+  int nModes = EvtDecayTable::getInstance()->getNModes(aliasInt);
+  int iMode(0);
+
+  bool firstMode(true);
+
+  // Only process positive PDG codes.
+  if (PDGCode < 0) {return;} 
+
+  // Keep track of which decay modes are Pythia decays for each aliasInt
+  std::vector<int> pythiaModes(0);
+
+  // Loop over the decay modes for this particle
+  for (iMode = 0; iMode < nModes; iMode++) {
+      
+    EvtDecayBase* decayModel = EvtDecayTable::getInstance()->findDecayModel(aliasInt, iMode);
+
+    if (decayModel != 0) {
+
+      int nDaug = decayModel->getNDaug();
+
+      // If the decay mode has no daughters, then that means that there will be 
+      // no entries for any submode re-definitions for Pythia. 
+      // This sometimes occurs for any mode using non-standard Pythia 6 codes.
+      // Do not refine the decay mode, i.e. accept the Pythia 8 default (if it exists).
+      if (nDaug > 0) {
+
+       // Check to see if we have a Pythia decay mode
+       std::string modelName = decayModel->getModelName();
+
+       if (modelName == "PYTHIA") {
+
+         // Keep track which decay mode is a Pythia one. We need this in order to 
+         // reassign alias Id values for particles generated in the decay.
+         pythiaModes.push_back(iMode);
+
+         std::ostringstream oss;
+         oss.setf(std::ios::scientific);
+         // Write out the absolute value of the PDG code, since
+         // particles and anti-particles occupy the same part of the Pythia table.
+         oss << PDGCode;
+
+         if (firstMode) {
+           // Create a new channel
+           oss <<":oneChannel = ";
+           firstMode = false;
+         } else {
+           // Add the channel
+           oss <<":addChannel = ";
+         }
+
+         // Select all channels (particle and anti-particle).
+         // For CP violation, or different BFs for particle and anti-particle, 
+         // use options 2 or 3 (not here).
+         int onMode(1);
+         oss << onMode << " ";
+
+         double BF = decayModel->getBranchingFraction();
+         oss << BF << " ";
+         
+         // Need to convert the old Pythia physics mode integers with the new ones
+         // To do this, get the model argument and write a conversion method.
+         int modeInt = this->getModeInt(decayModel);
+         oss << modeInt;
+         
+         int iDaug(0); 
+         for (iDaug = 0; iDaug < nDaug; iDaug++) {
+           
+           EvtId daugId = decayModel->getDaug(iDaug);
+           int daugPDG = EvtPDL::getStdHep(daugId);
+           oss << " " << daugPDG;
+           
+         } // Daughter list
+
+         _thePythiaGenerator->readString(oss.str());
+               
+       } // is Pythia
+
+      } else {
+
+       report(INFO,"EvtGen")<<"Warning in EvtPythiaEngine. Trying to redefine Pythia table for "
+                            <<EvtPDL::name(particleId)<<" for a decay channel that has no daughters."
+                            <<" Keeping Pythia default (if available)."<<endl;   
+
+      }
+       
+    } else {
+       
+      report(INFO,"EvtGen")<<"Error in EvtPythiaEngine. decayModel is null for particle "
+                          <<EvtPDL::name(particleId)<<" mode number "<<iMode<<endl;
+       
+    }
+
+  } // Loop over modes
+
+  _pythiaModeMap[aliasInt] = pythiaModes;
+
+  // Now, renormalise the decay branching fractions to sum to 1.0
+  std::ostringstream rescaleStr;
+  rescaleStr.setf(std::ios::scientific);
+  rescaleStr << PDGCode << ":rescaleBR = 1.0";
+  
+  _thePythiaGenerator->readString(rescaleStr.str());
+
+}
+
+int EvtPythiaEngine::getModeInt(EvtDecayBase* decayModel) {
+
+  int tmpModeInt(0), modeInt(0);
+
+  if (decayModel != 0) {
+
+    int nVars = decayModel->getNArg();
+    // Just read the first integer, which specifies the Pythia decay model. 
+    // Ignore any other values.
+    if (nVars > 0) {
+      tmpModeInt = static_cast<int>(decayModel->getArg(0));
+    }
+  }
+
+  if (_convertPhysCodes) {
+
+    // Extra code to convert the old Pythia decay model integer MDME(ICC,2) to the new one.
+    // This should be removed eventually after updating decay.dec files to use
+    // the new convention.
+    
+    if (tmpModeInt == 0) {
+      modeInt = 0; // phase-space
+    } else if (tmpModeInt == 1) {
+      modeInt = 1; // omega or phi -> 3pi
+    } else if (tmpModeInt == 2) {
+      modeInt = 11; // Dalitz decay
+    } else if (tmpModeInt == 3) {
+      modeInt = 2; // V -> PS PS
+    } else if (tmpModeInt == 4) {
+      modeInt = 92; // onium -> ggg or gg gamma
+    } else if (tmpModeInt == 11) {
+      modeInt = 42; // phase-space of hadrons from available quarks
+    } else if (tmpModeInt == 12) {
+      modeInt = 42; // phase-space for onia resonances
+    } else if (tmpModeInt == 13) {
+      modeInt = 43; // phase-space of at least 3 hadrons
+    } else if (tmpModeInt == 14) {
+      modeInt = 44; // phase-space of at least 4 hadrons
+    } else if (tmpModeInt == 15) {
+      modeInt = 45; // phase-space of at least 5 hadrons
+    } else if (tmpModeInt >= 22 && tmpModeInt <= 30) {
+      modeInt = tmpModeInt + 40; // phase space of hadrons with fixed multiplicity (modeInt - 60)
+    } else if (tmpModeInt == 31) {
+      modeInt = 42; // two or more quarks phase-space; one spectactor quark
+    } else if (tmpModeInt == 32) {
+      modeInt = 91; // qqbar or gg pair
+    } else if (tmpModeInt == 33) {
+      modeInt = 0; // triplet q X qbar, where X = gluon or colour singlet (superfluous, since g's are created anyway)
+    } else if (tmpModeInt == 41) {
+      modeInt = 21; // weak decay phase space, weighting nu_tau spectrum
+    } else if (tmpModeInt == 42) {
+      modeInt = 22; // weak decay V-A matrix element
+    } else if (tmpModeInt == 43) {
+      modeInt = 22; // weak decay V-A matrix element, quarks as jets (superfluous)
+    } else if (tmpModeInt == 44) {
+      modeInt = 22; // weak decay V-A matrix element, parton showers (superfluous)
+    } else if (tmpModeInt == 48) {
+      modeInt = 23; // weak decay V-A matrix element, at least 3 decay products
+    } else if (tmpModeInt == 50) {
+      modeInt = 0; // default behaviour
+    } else if (tmpModeInt == 51) {
+      modeInt = 0; // step threshold (channel switched off when mass daughters > mother mass
+    } else if (tmpModeInt == 52 || tmpModeInt == 53) {
+      modeInt = 0; // beta-factor threshold
+    } else if (tmpModeInt == 84) {
+      modeInt = 42; // unknown physics process - just use phase-space
+    } else if (tmpModeInt == 101) {
+      modeInt = 0; // continuation line
+    } else if (tmpModeInt == 102) {
+      modeInt = 0; // off mass shell particles.
+    } else {
+      report(INFO,"EvtGen")<<"Pythia mode integer "<<tmpModeInt
+                          <<" is not recognised. Using phase-space model"<<endl;
+      modeInt = 0; // Use phase-space for anything else
+    }
+
+  } else {
+
+    // No need to convert the physics mode integer code
+    modeInt = tmpModeInt;
+
+  }
+
+  return modeInt;
+
+}
+
+void EvtPythiaEngine::createPythiaParticle(EvtId& particleId, int PDGCode) {
+
+  // Use the EvtGen name, PDGId and other variables to define the new Pythia particle.
+  EvtId antiPartId = EvtPDL::chargeConj(particleId);
+
+  std::string aliasName = EvtPDL::name(particleId); // If not an alias, aliasName = normal name
+  std::string antiName = EvtPDL::name(antiPartId);
+
+  EvtSpinType::spintype spinType = EvtPDL::getSpinType(particleId);
+  int spin = EvtSpinType::getSpin2(spinType);
+
+  int charge = EvtPDL::chg3(particleId);
+
+  // Must set the correct colour type manually here, since the evt.pdl file
+  // does not store this information. This is required for quarks otherwise
+  // Pythia cannot generate the decay properly.
+  int PDGId = EvtPDL::getStdHep(particleId);
+  int colour(0);
+  if (PDGId == 21) {
+    colour = 2; // gluons
+  } else if (PDGId <= 8 && PDGId > 0) {
+    colour = 1; // single quarks
+  }
+
+  double m0 = EvtPDL::getMeanMass(particleId);
+  double mWidth = EvtPDL::getWidth(particleId);
+  double mMin = EvtPDL::getMinMass(particleId);
+  double mMax = EvtPDL::getMaxMass(particleId);
+
+  double tau0 = EvtPDL::getctau(particleId);
+
+  std::ostringstream oss;
+  oss.setf(std::ios::scientific);
+  int absPDGCode = abs(PDGCode);
+  oss << absPDGCode << ":new = " << aliasName << " " << antiName << " "
+      << spin << " " << charge << " " << colour << " " 
+      << m0 << " " << mWidth << " " << mMin << " " << mMax << " "
+      << tau0;
+  
+  // Pass this information to Pythia
+  _thePythiaGenerator->readString(oss.str());
+
+  // Also store the absolute value of the PDG entry
+  // to keep track of which new particles have been added,
+  // which also automatically includes the anti-particle.
+  // We need to avoid creating new anti-particles when
+  // they already exist when the particle was added.
+  _addedPDGCodes[absPDGCode] = 1;
+
+}
+
+void EvtPythiaEngine::updatePhysicsParameters() {
+
+  // Update any more Pythia physics (or special particle) requirements/cuts etc..
+  // This should be used if any of the Pythia 6 parameters like JetSetPar MSTJ(i) = x
+  // are needed. Such commands will need to be implemented using the new interface
+  // pythiaGenerator->readString(cmd); Here cmd is a string telling Pythia 8
+  // what physics parameters to change. This will need to be done for the generic and
+  // alias generator pointers, as appropriate.
+
+  // Set the multiplicity level for hadronic weak decays
+  std::string multiWeakCut("ParticleDecays:multIncreaseWeak = 2.0");
+  _genericPythiaGen->readString(multiWeakCut);
+  _aliasPythiaGen->readString(multiWeakCut);
+
+  // Set the multiplicity level for all other decays
+  std::string multiCut("ParticleDecays:multIncrease = 4.5");
+  _genericPythiaGen->readString(multiCut);
+  _aliasPythiaGen->readString(multiCut);
+
+  //Now read in any custom configuration entered in the XML
+  GeneratorCommands commands = EvtExtGeneratorCommandsTable::getInstance()->getCommands("PYTHIA");
+  GeneratorCommands::iterator it = commands.begin();
+
+  for( ; it!=commands.end(); it++) {
+
+    Command command = *it;
+    std::vector<std::string> commandStrings;
+
+    if(command["VERSION"] == "PYTHIA6") {
+      report(INFO,"EvtGen")<<"Converting Pythia 6 command: "<<command["MODULE"]<<"("<<command["PARAM"]<<")="<<command["VALUE"]<<"..."<<endl;
+      commandStrings = convertPythia6Command(command);
+    } else if(command["VERSION"] == "PYTHIA8") {
+      commandStrings.push_back(command["MODULE"]+":"+command["PARAM"]+" = "+command["VALUE"]);
+    } else {
+      report(ERROR, "EvtGen") << "Pythia command received by EvtPythiaEngine has bad version:"<<endl;
+      report(ERROR, "EvtGen") << "Received "<<command["VERSION"]<<" but expected PYTHIA6 or PYTHIA8."<<endl;
+      report(ERROR, "EvtGen") << "The error is likely to be in EvtDecayTable.cpp"<<endl;
+      report(ERROR, "EvtGen") << "EvtGen will now abort."<<endl;
+      ::abort();
+    }
+    std::string generator = command["GENERATOR"];
+    if(generator == "GENERIC" || generator == "Generic" || generator == "generic" ||
+       generator == "BOTH" || generator == "Both" || generator == "both") {
+      std::vector<std::string>::iterator it2 = commandStrings.begin();
+      for( ; it2!=commandStrings.end(); it2++) {
+        report(INFO,"EvtGen")<<"Configuring generic Pythia generator: " << (*it2) << endl;
+        _genericPythiaGen->readString(*it2);
+      }
+    }
+    if(generator == "ALIAS" || generator == "Alias" || generator == "alias" ||
+       generator == "BOTH" || generator == "Both" || generator == "both") {
+      std::vector<std::string>::iterator it2 = commandStrings.begin();
+      for( ; it2!=commandStrings.end(); it2++) {
+        report(INFO,"EvtGen")<<"Configuring alias Pythia generator: " << (*it2) << endl;
+        _aliasPythiaGen->readString(*it2);
+      }
+    }
+  }
+}
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtPythiaEngine.hh b/TEvtGen/EvtGenExternal/EvtPythiaEngine.hh
new file mode 100644 (file)
index 0000000..5915f21
--- /dev/null
@@ -0,0 +1,95 @@
+#ifdef EVTGEN_PYTHIA
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtPythiaEngine
+//
+// Description: Interface to the Pytha 8 external generator
+//
+// Modification history:
+//
+//    John Back       April 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTPYTHIAENGINE_HH
+#define EVTPYTHIAENGINE_HH
+
+#include "EvtGenModels/EvtAbsExternalGen.hh"
+#include "EvtGenExternal/EvtPythiaRandom.hh"
+
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+
+//#include "Pythia8/Pythia.h"
+//#include "Pythia8/ParticleData.h"
+#include "pythia8175/include/Pythia.h"
+#include "pythia8175/include/ParticleData.h"
+
+#include <string>
+#include <vector>
+#include <map>
+
+class EvtPythiaEngine : public EvtAbsExternalGen {
+
+public:
+
+  EvtPythiaEngine(std::string xmlDir, 
+                 bool convertPhysCodes = false,
+                 bool useEvtGenRandom = true);
+  virtual ~EvtPythiaEngine();
+
+  virtual bool doDecay(EvtParticle* theMother);
+
+  virtual void initialise();
+
+protected:
+
+private:
+
+  void updateParticleLists();
+  void updatePhysicsParameters();
+
+  void createPythiaParticle(EvtId& particleId, int PDGCode);
+  void updatePythiaDecayTable(EvtId& particleId, int aliasInt, int PDGCode);
+  void storeDaughterInfo(EvtParticle* theParticle, int startInt);
+
+  void clearDaughterVectors();
+  void clearPythiaModeMap();
+
+  void createDaughterEvtParticles(EvtParticle* theParent);
+
+  int getModeInt(EvtDecayBase* decayModel);
+
+  Pythia8::Pythia* _genericPythiaGen;
+  Pythia8::Pythia* _aliasPythiaGen;
+  Pythia8::Pythia* _thePythiaGenerator;
+
+  Pythia8::ParticleData _genericPartData, _aliasPartData;  
+  Pythia8::ParticleData _theParticleData;
+
+  std::vector<int> _daugPDGVector;
+  std::vector<EvtVector4R> _daugP4Vector;
+
+  typedef std::map<int, std::vector<int> > PythiaModeMap;
+  PythiaModeMap _pythiaModeMap;
+
+  bool _convertPhysCodes, _initialised, _useEvtGenRandom;
+
+  EvtPythiaRandom* _evtgenRandom;
+
+  std::map<int, int> _addedPDGCodes;
+
+};
+
+#endif
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtPythiaRandom.hh b/TEvtGen/EvtGenExternal/EvtPythiaRandom.hh
new file mode 100644 (file)
index 0000000..eb05058
--- /dev/null
@@ -0,0 +1,46 @@
+#ifdef EVTGEN_PYTHIA
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2013    University of Warwick, UK
+//
+// Module: EvtGenExternal/EvtPythiaRandom.hh
+//
+// Description: Class to specify the chosen EvtGen random number (engine)
+// to also be used for Pythia 8.
+//
+// Modification history:
+//
+//    JJB     January 2013      Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTPYTHIARANDOM_HH
+#define EVTPYTHIARANDOM_HH
+
+#include "EvtGenBase/EvtRandom.hh"
+
+//#include "Pythia8/Basics.h"
+#include "pythia8175/include/Basics.h"
+
+class EvtPythiaRandom : public Pythia8::RndmEngine {
+
+public:
+
+  EvtPythiaRandom() {};
+
+  virtual ~EvtPythiaRandom() {};
+
+  virtual double flat() {return EvtRandom::Flat();}
+
+private:
+
+};
+
+#endif
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtTauola.cpp b/TEvtGen/EvtGenExternal/EvtTauola.cpp
new file mode 100644 (file)
index 0000000..7297020
--- /dev/null
@@ -0,0 +1,82 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C)  2011      University of Warwick, UK
+//
+// Description: Use the Tauola external generator for tau decays
+//
+// Modification history:
+//
+//    John Back    May 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGenBase/EvtParticle.hh"
+
+#include "EvtGenExternal/EvtTauola.hh"
+
+#include "EvtGenExternal/EvtExternalGenFactory.hh"
+#include "EvtGenModels/EvtAbsExternalGen.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+
+#include <string>
+#include <iostream>
+#include <cmath>
+
+EvtTauola::EvtTauola() {
+
+  // Set the Tauola engine to a null pointer at first.
+  // When we do the decay, we retrieve the pointer to the Tauola engine
+  // and use that for all decays. All clones will use the same Tauola engine.
+  _tauolaEngine = 0;
+
+}
+
+EvtTauola::~EvtTauola() {}
+
+std::string EvtTauola::getName(){
+
+  return "TAUOLA";
+
+}
+
+EvtDecayBase* EvtTauola::clone(){
+
+  return new EvtTauola();
+
+}
+
+
+void EvtTauola::init(){
+
+
+}
+
+void EvtTauola::initProbMax(){
+
+  noProbMax();
+
+}
+
+void EvtTauola::decay( EvtParticle *p ){
+
+  // We check to see if the Tauola engine has been created before doing the decay.
+  // This should only create the full Tauola engine once, and all clones will 
+  // point to the same engine.
+
+  if (_tauolaEngine == 0) {
+    _tauolaEngine = EvtExternalGenFactory::getInstance()->getGenerator(EvtExternalGenFactory::TauolaGenId);
+  }
+    
+  if (_tauolaEngine != 0) {
+    _tauolaEngine->doDecay(p);
+  }
+
+}
similarity index 62%
rename from TEvtGen/EvtGenModels/EvtJscontCDF.hh
rename to TEvtGen/EvtGenExternal/EvtTauola.hh
index 4eb5ef505593bcf7c33160dfcdfef8a275102609..42f9be65f2f68cd9d83b57131ecd81c95b7c8dae 100644 (file)
@@ -6,40 +6,48 @@
 //      of it, please give an appropriate acknowledgement.
 //
 // Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
+//      Copyright (C)  2011      University of Warwick, UK
 //
-// Module: EvtGen/EvtJscont.hh
-//
-// Description:
+// Description: Use the Tauola external generator for tau decays
 //
 // Modification history:
 //
-//    DJL/RYD     August 11, 1998         Module created
+//    John Back    May 2011   Module created
 //
 //------------------------------------------------------------------------
 
-#ifndef EVTJSCONTCDF_HH
-#define EVTJSCONTCDF_HH
+#ifndef EVTTAUOLA_HH
+#define EVTTAUOLA_HH
 
 #include "EvtGenBase/EvtDecayIncoherent.hh"
 
 class EvtParticle;
+class EvtAbsExternalGen;
+class EvtDecayBase;
 
-class EvtJscontCDF:public  EvtDecayIncoherent  {
+class EvtTauola: public  EvtDecayIncoherent  {
 
 public:
-
-  EvtJscontCDF() {}
-  virtual ~EvtJscontCDF();
+  
+  EvtTauola();
+  virtual ~EvtTauola();
 
   std::string getName();
+
   EvtDecayBase* clone();
 
-  void init();
   void initProbMax();
+  void init();
 
   void decay(EvtParticle *p); 
 
+protected:
+
+  EvtAbsExternalGen* _tauolaEngine;
+
+private:
+
 };
 
 #endif
+
diff --git a/TEvtGen/EvtGenExternal/EvtTauolaEngine.cpp b/TEvtGen/EvtGenExternal/EvtTauolaEngine.cpp
new file mode 100644 (file)
index 0000000..6fce205
--- /dev/null
@@ -0,0 +1,461 @@
+#ifdef EVTGEN_TAUOLA
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtTauolaEngine
+//
+// Description: Interface to the TAUOLA external generator, which 
+//              decays tau particles
+//
+// Modification history:
+//
+//    John Back       May 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenExternal/EvtTauolaEngine.hh"
+
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+#include "EvtGenBase/EvtDecayTable.hh"
+#include "EvtGenBase/EvtRandom.hh"
+#include "EvtGenBase/EvtReport.hh"
+
+#include "Tauola/Tauola.h"
+#include "Tauola/TauolaHepMCEvent.h"
+#include "Tauola/TauolaHepMCParticle.h"
+#include "Tauola/TauolaParticle.h"
+
+#include "HepMC/GenVertex.h"
+#include "HepMC/SimpleVector.h"
+#include "HepMC/Units.h"
+
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <cmath>
+
+using std::endl;
+
+EvtTauolaEngine::EvtTauolaEngine(bool useEvtGenRandom) {
+
+  // PDG standard code integer ID for tau particle
+  _tauPDG = 15; 
+  // Number of possible decay modes in Tauola
+  _nTauolaModes = 22;
+
+  report(INFO,"EvtGen")<<"Setting up TAUOLA."<<endl;
+
+  // These three lines are not really necessary since they are the default.
+  // But they are here so that we know what the initial conditions are.
+  Tauolapp::Tauola::setDecayingParticle(_tauPDG); // tau PDG code
+  Tauolapp::Tauola::setSameParticleDecayMode(Tauolapp::Tauola::All); // all modes allowed
+  Tauolapp::Tauola::setOppositeParticleDecayMode(Tauolapp::Tauola::All); // all modes allowed
+
+  // Initial the Tauola external generator
+  if (useEvtGenRandom == true) {
+      
+    report(INFO,"EvtGen")<<"Using EvtGen random number engine also for Tauola++"<<endl;
+      
+    Tauolapp::Tauola::setRandomGenerator(EvtRandom::Flat);
+      
+  }
+
+  Tauolapp::Tauola::initialize();
+
+  // Set-up possible decay modes when we have read the (user) decay file
+  _initialised = false;
+
+}
+
+EvtTauolaEngine::~EvtTauolaEngine() {
+
+}
+
+void EvtTauolaEngine::initialise() {
+
+  // Set up all possible tau decay modes.
+  // This should be done just before the first doDecay() call,
+  // since we want to make sure that any decay.dec files are processed
+  // first to get lists of particle modes and their alias definitions
+  // (for creating EvtParticles with the right history information).
+
+  if (_initialised == false) {
+
+    this->setUpPossibleTauModes();
+
+    _initialised = true;
+
+  }
+
+}
+
+void EvtTauolaEngine::setUpPossibleTauModes() {
+
+  // Get the decay table list defined by the decay.dec files.
+  // Only look for the first tau particle decay mode definitions with the Tauola name, 
+  // since that generator only allows the same BFs for both tau+ and tau- decays.
+  // We can not choose a specific tau decay event-by-event, since this is 
+  // only possible before we call Tauola::initialize().
+  // Otherwise, we could have selected a random mode ourselves for tau- and tau+
+  // separately (via selecting a random number and comparing it to be less than 
+  // the cumulative BF) for each event.
+
+  int nPDL = EvtPDL::entries();
+  int iPDL(0);
+
+  bool gotAnyTauolaModes(false);
+
+  for (iPDL = 0; iPDL < nPDL; iPDL++) {
+
+    EvtId particleId = EvtPDL::getEntry(iPDL);
+    int PDGId = EvtPDL::getStdHep(particleId);
+
+    if (abs(PDGId) == _tauPDG && gotAnyTauolaModes == false) {
+
+      int aliasInt = particleId.getAlias();
+
+      // Get the list of decay modes for this tau particle (alias)
+      int nModes = EvtDecayTable::getInstance()->getNModes(aliasInt);
+      int iMode(0), iTauMode(0);
+
+      // Vector to store tau mode branching fractions.
+      // The size of this vector equals the total number of possible
+      // Tauola decay modes. Initialise all BFs to zero.
+      std::vector<double> tauolaModeBFs(_nTauolaModes);
+
+      for (iTauMode = 0; iTauMode < _nTauolaModes; iTauMode++) {
+       tauolaModeBFs[iTauMode] = 0.0;
+      }
+      
+      double totalTauModeBF(0.0);
+
+      int nNonTauolaModes(0);
+
+      // Loop through each decay mode
+      for (iMode = 0; iMode < nModes; iMode++) {
+
+       EvtDecayBase* decayModel = EvtDecayTable::getInstance()->findDecayModel(aliasInt, iMode);
+       if (decayModel != 0) {
+
+         // Check that the decay model name matches TAUOLA
+         std::string modelName = decayModel->getName();
+         if (modelName == "TAUOLA") {
+       
+           if (gotAnyTauolaModes == false) {gotAnyTauolaModes = true;}
+           
+           // Extract the decay mode integer type and branching fraction
+           double BF = decayModel->getBranchingFraction();
+           int modeArrayInt = this->getModeInt(decayModel) - 1;
+           
+           if (modeArrayInt >= 0 && modeArrayInt < _nTauolaModes) {
+             tauolaModeBFs[modeArrayInt] = BF;
+             totalTauModeBF += BF;
+           }
+           
+         } else {
+
+           nNonTauolaModes++;
+
+         }
+
+       } // Decay mode exists
+
+      } // Loop over decay models
+
+      if (gotAnyTauolaModes == true && nNonTauolaModes > 0) {
+       
+       report(ERROR, "EvtGen") << "Please remove all non-TAUOLA decay modes for particle "
+                               <<EvtPDL::name(particleId)<<endl;
+       ::abort();
+       
+      }
+    
+      // Normalise all (non-zero) tau mode BFs to sum up to 1.0, and 
+      // let Tauola know about these normalised branching fractions
+      if (totalTauModeBF > 0.0) {
+
+       report(INFO,"EvtGen")<<"Setting TAUOLA BF modes using the definitions for the particle "
+                            <<EvtPDL::name(particleId)<<endl;
+
+       for (iTauMode = 0; iTauMode < _nTauolaModes; iTauMode++) {
+         
+         tauolaModeBFs[iTauMode] /= totalTauModeBF;
+         double modeBF = tauolaModeBFs[iTauMode];
+         report(INFO,"EvtGen")<<"Setting TAUOLA BF for mode "<<iTauMode+1<<" = "<<modeBF<<endl;
+         Tauolapp::Tauola::setTauBr(iTauMode+1, modeBF);
+         
+       }
+
+       report(INFO,"EvtGen")<<"Any other TAUOLA BF modes for other tau particle decay mode definitions will be ignored!"
+                            <<endl;
+
+      }
+  
+    } // Got tau particle and have yet to get a TAUOLA mode
+
+  } // Loop through PDL entries
+
+}
+
+int EvtTauolaEngine::getModeInt(EvtDecayBase* decayModel) {
+
+  int modeInt(0);
+
+  if (decayModel != 0) {
+
+    int nVars = decayModel->getNArg();
+
+    if (nVars > 0) {
+      modeInt = static_cast<int>(decayModel->getArg(0));
+    }
+
+  }
+
+  return modeInt;
+
+}
+
+bool EvtTauolaEngine::doDecay(EvtParticle* tauParticle) {
+
+  if (_initialised == false) {this->initialise();}
+
+  if (tauParticle == 0) {return false;}
+
+  // Check that we have a tau particle.
+  EvtId partId = tauParticle->getId();
+  if (abs(EvtPDL::getStdHep(partId)) != _tauPDG) {return false;}
+
+  int nTauDaug = tauParticle->getNDaug();
+
+  // If the number of tau daughters is not zero, then we have already decayed
+  // it using Tauola/another decay algorithm.
+  if (nTauDaug > 0) {return true;}
+
+  this->decayTauEvent(tauParticle);
+
+  return true;
+
+}
+
+void EvtTauolaEngine::decayTauEvent(EvtParticle* tauParticle) {
+
+  // Either we have a tau particle within a decay chain, or a single particle.
+  // Create a dummy HepMC event & vertex for the parent particle, containing the tau as 
+  // one of the outgoing particles. If we have a decay chain, the parent will be the 
+  // incoming particle, while the daughters, including the tau, are outgoing particles. 
+  // For the single particle case, the incoming particle is null, while the single tau 
+  // is the only outgoing particle.
+  // We can then pass this event to Tauola which should then decay the tau particle. 
+  // We also consider all other tau particles from the parent decay in the logic below.
+  
+  // Create the dummy event.
+  HepMC::GenEvent* theEvent = new HepMC::GenEvent(HepMC::Units::GEV, HepMC::Units::MM);
+  
+  // Create the decay "vertex".
+  HepMC::GenVertex* theVertex = new HepMC::GenVertex();
+  theEvent->add_vertex(theVertex);
+  
+  // Get the parent of this tau particle
+  EvtParticle* theParent = tauParticle->getParent();
+
+  // Assign the parent particle as the incoming particle to the vertex.
+  if (theParent != 0) {
+    HepMC::GenParticle* hepMCParent = this->createGenParticle(theParent);
+    theVertex->add_particle_in(hepMCParent);
+  } else {
+    // The tau particle has no parent. Set "itself" as the incoming particle for the first vertex.
+    // This is needed, otherwise Tauola warns of momentum non-conservation for this (1st) vertex.    
+    HepMC::GenParticle* tauGenInit = this->createGenParticle(tauParticle);
+    theVertex->add_particle_in(tauGenInit);
+  }
+
+  // Find all daughter particles and assign them as outgoing particles to the vertex.
+  // This will include the tau particle we are currently processing.
+  // If the parent decay has more than one tau particle, we need to include them as well.
+  // This is important since Tauola needs the correct physics correlations: we do not
+  // want Tauola to decay each particle separately if they are from tau pair combinations.
+  // Tauola will process the event, and we will create EvtParticles from all tau decay 
+  // products, i.e. the tau particle we currently have and any other tau particles.
+  // EvtGen will try to decay the other tau particle(s) by calling EvtTauola and therefore
+  // this function. However, we check to see if the tau candidate has any daughters already.
+  // If it does, then we have already set the tau decay products from Tauola.
+  
+  // Map to store (HepMC,EvtParticle) pairs for each tau candidate from the parent
+  // decay. This is needed to find out what EvtParticle corresponds to a given tau HepMC
+  // candidate: we do not want to recreate existing EvtParticle pointers.
+  std::map<HepMC::GenParticle*, EvtParticle*> tauMap;
+
+  if (theParent != 0) {
+  
+    // Find all tau particles in the decay tree and store them in the map
+    int nDaug(theParent->getNDaug());
+    int iDaug(0);
+    
+    for (iDaug = 0; iDaug < nDaug; iDaug++) {
+    
+      EvtParticle* theDaughter = theParent->getDaug(iDaug);
+    
+      if (theDaughter != 0) {
+        
+       HepMC::GenParticle* hepMCDaughter = this->createGenParticle(theDaughter);
+       theVertex->add_particle_out(hepMCDaughter);
+
+       EvtId theId = theDaughter->getId();
+       int PDGInt = EvtPDL::getStdHep(theId);
+    
+       if (abs(PDGInt) == _tauPDG) {
+         // Delete any siblings for the tau particle
+         if (theDaughter->getNDaug() > 0) {theDaughter->deleteDaughters(false);}
+         tauMap[hepMCDaughter] = theDaughter;
+       } else {
+         // Treat all other particles as "stable"
+         hepMCDaughter->set_status(Tauolapp::TauolaParticle::STABLE);
+       }
+               
+      } // theDaughter != 0
+    } // Loop over daughters
+
+  } else {
+
+    // We only have the one tau particle. Store only this in the map.
+    HepMC::GenParticle* singleTau = this->createGenParticle(tauParticle);
+    theVertex->add_particle_out(singleTau);
+    tauMap[singleTau] = tauParticle;
+
+  }
+  
+  // Now pass the event to Tauola for processing
+  // Create a Tauola event object
+  Tauolapp::TauolaHepMCEvent tauolaEvent(theEvent);
+
+  // Run the Tauola algorithm
+  tauolaEvent.decayTaus();
+
+  // Loop over all tau particles in the HepMC event and create their EvtParticle daughters.
+  // Store all final "stable" descendent particles as the tau daughters, i.e.
+  // let Tauola decay any resonances such as a_1 or rho.
+  // If there is more than one tau particle in the event, then also create the
+  // corresponding EvtParticles for their daughters as well. They will not be 
+  // re-decayed since we check at the start of this function if the tau particle has 
+  // any daughters before running Tauola decayTaus().
+  
+  HepMC::GenEvent::particle_iterator eventIter;
+  for (eventIter = theEvent->particles_begin(); eventIter != theEvent->particles_end(); 
+       ++eventIter) {
+    
+    // Check to see if we have a tau particle
+    HepMC::GenParticle* aParticle = (*eventIter);
+    
+    if (aParticle != 0 && abs(aParticle->pdg_id()) == _tauPDG) {
+      
+      // Find out what EvtParticle corresponds to the HepMC particle.
+      // We need this to create and attach EvtParticle daughters.
+      EvtParticle* tauEvtParticle = tauMap[aParticle];
+
+      if (tauEvtParticle != 0) {
+
+       // Get the tau 4-momentum in the lab (first mother) frame. We need to boost
+       // all the tau daughters to this frame, such that daug.getP4() is in the tau restframe.
+       EvtVector4R tauP4CM = tauEvtParticle->getP4Lab();
+       tauP4CM.set(tauP4CM.get(0), -tauP4CM.get(1), -tauP4CM.get(2), -tauP4CM.get(3));
+      
+       // Get the decay vertex for the tau particle
+       HepMC::GenVertex* endVertex = aParticle->end_vertex();
+       HepMC::GenVertex::particle_iterator tauIter;
+      
+       std::vector<EvtId> daugIdVect;
+       std::vector<EvtVector4R> daugP4Vect;
+      
+       // Loop through all descendants
+       for (tauIter = endVertex->particles_begin(HepMC::descendants);
+            tauIter != endVertex->particles_end(HepMC::descendants); ++tauIter) {
+       
+         HepMC::GenParticle* tauDaug = (*tauIter);
+       
+         // Check to see if this descendant has its own decay vertex, e.g. rho resonance.
+         // If so, skip this daughter and continue looping through the descendant list
+         // until we reach the final "stable" products (e.g. pi pi from rho -> pi pi).
+         HepMC::GenVertex* daugDecayVtx = tauDaug->end_vertex();
+         if (daugDecayVtx != 0) {continue;}
+         
+         // Store the particle id and 4-momentum
+         int tauDaugPDG = tauDaug->pdg_id();
+         EvtId daugId = EvtPDL::evtIdFromStdHep(tauDaugPDG);
+         daugIdVect.push_back(daugId);
+         
+         HepMC::FourVector tauDaugP4 = tauDaug->momentum();
+         double tauDaug_px = tauDaugP4.px();
+         double tauDaug_py = tauDaugP4.py();
+         double tauDaug_pz = tauDaugP4.pz();
+         double tauDaug_E = tauDaugP4.e();
+         
+         EvtVector4R daugP4(tauDaug_E, tauDaug_px, tauDaug_py, tauDaug_pz);
+         daugP4Vect.push_back(daugP4);
+         
+       } // Loop over HepMC tau daughters
+       
+       // Create the tau EvtParticle daughters and assign their ids and 4-mtm
+       int nDaug = daugIdVect.size();
+
+       tauEvtParticle->makeDaughters(nDaug, daugIdVect);
+
+       int iDaug(0);
+       for (iDaug = 0; iDaug < nDaug; iDaug++) {
+         
+         EvtParticle* theDaugPart = tauEvtParticle->getDaug(iDaug);
+         
+         if (theDaugPart != 0) {
+           EvtId theDaugId = daugIdVect[iDaug];
+           EvtVector4R theDaugP4 = daugP4Vect[iDaug];
+           theDaugP4.applyBoostTo(tauP4CM); // Boost the 4-mtm to the tau rest frame
+           theDaugPart->init(theDaugId, theDaugP4);
+         }
+         
+       } // Loop over tau daughters
+       
+      }
+
+    } // We have a tau HepMC particle in the event
+    
+  }
+  
+  theEvent->clear();
+  delete theEvent;
+
+}
+
+HepMC::GenParticle* EvtTauolaEngine::createGenParticle(EvtParticle* theParticle) {
+
+  // Method to create an HepMC::GenParticle version of the given EvtParticle.
+  if (theParticle == 0) {return 0;}
+
+  // Get the 4-momentum (E, px, py, pz) for the EvtParticle
+  EvtVector4R p4 = theParticle->getP4Lab();
+
+  // Convert this to the HepMC 4-momentum
+  double E = p4.get(0);
+  double px = p4.get(1);
+  double py = p4.get(2);
+  double pz = p4.get(3);
+
+  HepMC::FourVector hepMC_p4(px, py, pz, E);
+
+  int PDGInt = EvtPDL::getStdHep(theParticle->getId());
+
+  // Set the status flag for the particle.
+  int status = Tauolapp::TauolaParticle::HISTORY;
+
+  HepMC::GenParticle* genParticle = new HepMC::GenParticle(hepMC_p4, PDGInt, status);
+
+  return genParticle;
+
+}
+
+#endif
diff --git a/TEvtGen/EvtGenExternal/EvtTauolaEngine.hh b/TEvtGen/EvtGenExternal/EvtTauolaEngine.hh
new file mode 100644 (file)
index 0000000..10af26a
--- /dev/null
@@ -0,0 +1,66 @@
+#ifdef EVTGEN_TAUOLA
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtTauolaEngine
+//
+// Description: Interface to the TAUOLA external generator
+//
+// Modification history:
+//
+//    John Back       May 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTTAUOLAENGINE_HH
+#define EVTTAUOLAENGINE_HH
+
+#include "EvtGenModels/EvtAbsExternalGen.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenParticle.h"
+
+#include <vector>
+#include <map>
+
+class EvtTauolaEngine : public EvtAbsExternalGen {
+
+public:
+
+  EvtTauolaEngine(bool useEvtGenRandom = true);
+  virtual ~EvtTauolaEngine();
+
+  virtual bool doDecay(EvtParticle* theMother);
+
+  virtual void initialise();
+
+protected:
+
+private:
+
+  bool _initialised;
+  int _tauPDG, _nTauolaModes;
+
+  HepMC::GenParticle* createGenParticle(EvtParticle* theParticle);
+
+  void setUpPossibleTauModes();
+
+  int getModeInt(EvtDecayBase* decayModel);
+
+  void decayTauEvent(EvtParticle* tauParticle);
+
+};
+
+#endif
+
+#endif
diff --git a/TEvtGen/EvtGenModels/EvtAbsExternalGen.hh b/TEvtGen/EvtGenModels/EvtAbsExternalGen.hh
new file mode 100644 (file)
index 0000000..c95fd89
--- /dev/null
@@ -0,0 +1,41 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtAbsExternalGen
+//
+// Description: Pure abstract interface for external physics generators
+//
+// Modification history:
+//
+//    John Back       April 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTABS_EXTERNALGEN_HH
+#define EVTABS_EXTERNALGEN_HH
+
+#include "EvtGenBase/EvtParticle.hh"
+
+class EvtAbsExternalGen {
+
+public:
+
+  EvtAbsExternalGen() {};
+  virtual ~EvtAbsExternalGen() {};
+
+  virtual bool doDecay(EvtParticle* theMother) = 0;
+  virtual void initialise() = 0;
+
+protected:
+
+private:
+
+};
+
+#endif
similarity index 94%
rename from TEvtGen/EvtGenModels/EvtBBScalar.cxx
rename to TEvtGen/EvtGenModels/EvtBBScalar.cpp
index a89117bdac153be38a0068d0babb1c86e5bcdd20..36ac747811e9f0f219bba6ec17ab8ba69db0bac0 100644 (file)
@@ -54,6 +54,7 @@ EvtBBScalar::EvtBBScalar()
     FormFactor dummy;
     dummy.value = 0.36;
     dummy.sigma1 = 0.43;
+    dummy.sigma2 = 0.0;
     dummy.mV = 5.42;
     _f1Map.insert(make_pair(string("K"), dummy));
     dummy.sigma1 = 0.70;
@@ -110,7 +111,7 @@ void EvtBBScalar::setKnownBaryonTypes(const EvtId& baryon) {
     }
 }
 
-double EvtBBScalar::baryonF1F2(double t) {
+double EvtBBScalar::baryonF1F2(double t) const {
     // check for known form factors for combination of baryons
     if (_baryonCombination.test(Lambda) and _baryonCombination.test(Proton)) {
         return -sqrt(1.5) * G_p(t);
@@ -131,7 +132,7 @@ double EvtBBScalar::baryonF1F2(double t) {
     }
 }
 
-double EvtBBScalar::formFactorFit(double t, const vector<double>& params) {
+double EvtBBScalar::formFactorFit(double t, const vector<double>& params) const {
     static const double gamma = 2.148;
     static const double Lambda_0 = 0.3;
     double result = 0;
@@ -142,20 +143,17 @@ double EvtBBScalar::formFactorFit(double t, const vector<double>& params) {
 }
 
 
-double EvtBBScalar::G_p(double t) {
+double EvtBBScalar::G_p(double t) const {
     const vector<double> v_x(x, x+5);
     return formFactorFit(t, v_x);
 }
 
-
-double EvtBBScalar::G_n(double t) {
+double EvtBBScalar::G_n(double t) const {
     const vector<double> v_y(y, y+2);
     return -formFactorFit(t, v_y);
 }
 
-
-
-double EvtBBScalar::baryon_gA(double t) {
+double EvtBBScalar::baryon_gA(double t) const {
     // check for known form factors for combination of baryons
     if (_baryonCombination.test(Lambda) and _baryonCombination.test(Proton)) {
         return -1/sqrt(6.) * (D_A(t) + 3*F_A(t));
@@ -176,8 +174,7 @@ double EvtBBScalar::baryon_gA(double t) {
     }
 }
 
-
-double EvtBBScalar::baryon_gP(double t) {
+double EvtBBScalar::baryon_gP(double t) const {
     // check for known form factors for combination of baryons
     if (_baryonCombination.test(Lambda) and _baryonCombination.test(Proton)) {
         return -1/sqrt(6.) * (D_P(t) + 3*F_P(t));
@@ -198,7 +195,7 @@ double EvtBBScalar::baryon_gP(double t) {
     }
 }
 
-double EvtBBScalar::baryon_fS(double t) {
+double EvtBBScalar::baryon_fS(double t) const {
     // check for known form factors for combination of baryons
     if (_baryonCombination.test(Lambda) and _baryonCombination.test(Proton)) {
         return -1/sqrt(6.) * (D_S(t) + 3*F_S(t));
@@ -219,46 +216,39 @@ double EvtBBScalar::baryon_fS(double t) {
     }
 }
 
-        
-double EvtBBScalar::D_A(double t) {
+double EvtBBScalar::D_A(double t) const {
     const double d_tilde[] = {x[0]-1.5*y[0], -478};
     const vector<double> v_d_tilde(d_tilde, d_tilde+2);
     return formFactorFit(t, v_d_tilde);
 }
 
-
-double EvtBBScalar::F_A(double t) {
+double EvtBBScalar::F_A(double t) const {
     const double f_tilde[] = {2./3*x[0]+0.5*y[0], -478};
     const vector<double> v_f_tilde(f_tilde, f_tilde+2);
     return formFactorFit(t, v_f_tilde);
 }
 
-
-double EvtBBScalar::D_P(double t) {
+double EvtBBScalar::D_P(double t) const {
     const double d_bar[] = {1.5*y[0]* _massRatio, /*-952*/0};
     const vector<double> v_d_bar(d_bar, d_bar+2);
     return formFactorFit(t, v_d_bar);
 }
 
-
-double EvtBBScalar::F_P(double t) {
+double EvtBBScalar::F_P(double t) const {
     const double f_bar[] = {(x[0]-0.5*y[0]) * _massRatio, /*-952*/0};
     const vector<double> v_f_bar(f_bar, f_bar+2);
     return formFactorFit(t, v_f_bar);
 }
 
-
-double EvtBBScalar::D_S(double t) {
+double EvtBBScalar::D_S(double t) const {
     return -1.5 * _massRatio * G_n(t);
 }
 
-
-double EvtBBScalar::F_S(double t) {
+double EvtBBScalar::F_S(double t) const {
     return (G_p(t) + 0.5*G_n(t)) * _massRatio;
 }
 
-
-double EvtBBScalar::baryon_hA(double t) {
+double EvtBBScalar::baryon_hA(double t) const {
     return (1/_massRatio*baryon_gP(t)-baryon_gA(t))*pow(_baryonMassSum, 2)/t;
 }
 
@@ -342,7 +332,7 @@ void EvtBBScalar::initProbMax()
 }
 
 // Form factor f1 for B-pi transition
-double EvtBBScalar::B_pi_f1(double t)
+double EvtBBScalar::B_pi_f1(double t) const
 {
     FormFactor f = _f1Map[_scalarType];
     double mv2 = f.mV*f.mV;
@@ -350,14 +340,13 @@ double EvtBBScalar::B_pi_f1(double t)
 }
 
 // Form factor f0 for B-pi transition
-double EvtBBScalar::B_pi_f0(double t)
+double EvtBBScalar::B_pi_f0(double t) const
 {
     FormFactor f = _f0Map[_scalarType];
     double mv2 = f.mV*f.mV;
     return f.value / (1 - f.sigma1*t/mv2 + f.sigma2*t*t/mv2/mv2);
 }
 
-
 // constants of the B and C parts of the amplitude
 const EvtComplex EvtBBScalar::const_B = V_ub*V_us_star*a1 - V_tb*V_ts_star*a4;
 const EvtComplex EvtBBScalar::const_C = 2*a6*V_tb*V_ts_star;
@@ -396,7 +385,11 @@ EvtBBScalar::amp_B_vectorPart(const EvtDiracParticle* baryon1, const EvtDiracSpi
     }
     // The F2 contribution that is written out in the paper is neglected here.
     // see hep-ph/0204185
-    return b1Pol.adjoint()* (gamma*baryonF1F2(t) *b2Pol);
+    EvtDiracSpinor A = EvtComplex(baryonF1F2(t))*b2Pol ;
+    EvtDiracSpinor Adjb1Pol = b1Pol.adjoint() ;
+    EvtDiracSpinor gammaA = gamma * A ;
+    return Adjb1Pol * gammaA ;
+    //    return b1Pol.adjoint()*(gamma*(EvtComplex(baryonF1F2(t))*b2Pol));     
 }
 
 const EvtComplex
index 49d7803fa12092a03ad1962394dd47864012a61d..792dabe90e9fc70f00b9954caa50b6d272ba0e1a 100644 (file)
@@ -81,35 +81,35 @@ private:
 
     // used to choose the right value for the form factor depending on the type of scalar
     std::string _scalarType;
-    std::map<std::string, FormFactor> _f0Map;
-    std::map<std::string, FormFactor> _f1Map;
+    mutable std::map<std::string, FormFactor> _f0Map;
+    mutable std::map<std::string, FormFactor> _f1Map;
 
     // only consider F1+F2 here
     std::bitset<nBaryons> _baryonCombination;
     void setKnownBaryonTypes(const EvtId& baryon);
     
-    double B_pi_f1(double t);
-    double B_pi_f0(double t);
-    double baryonF1F2(double t);
-    double G_p(double t);
-    double G_n(double t);
+    double B_pi_f1(double t) const ;
+    double B_pi_f0(double t) const ;
+    double baryonF1F2(double t) const ;
+    double G_p(double t) const ;
+    double G_n(double t) const ;
     
-    double baryon_gA(double t);
-    double baryon_hA(double t);
-    double baryon_gP(double t);
-    double baryon_fS(double t);
-
-    double D_A(double t);
-    double F_A(double t);
-    double D_P(double t);
-    double F_P(double t);
-    double D_S(double t);
-    double F_S(double t);
+    double baryon_gA(double t) const;
+    double baryon_hA(double t) const;
+    double baryon_gP(double t) const ;
+    double baryon_fS(double t) const ;
+
+    double D_A(double t) const ;
+    double F_A(double t) const ;
+    double D_P(double t) const ;
+    double F_P(double t) const ;
+    double D_S(double t) const ;
+    double F_S(double t) const ;
 
     // (mB1 - mB2)/(mq1 - mq1)
     double _massRatio;
     double _baryonMassSum;
-    double formFactorFit(double t, const std::vector<double>& params);
+    double formFactorFit(double t, const std::vector<double>& params) const ;
 
     static const EvtComplex const_B;
     static const EvtComplex const_C;
@@ -137,7 +137,7 @@ private:
     amp_C_pseudoscalarPart(const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t);
 
     // initialize phasespace and calculate the amplitude for one (i=0,1) state of the photon
-    EvtComplex calcAmplitude(const EvtParticle* p, unsigned int polState);
+    EvtComplex calcAmpliude(const EvtParticle* p, const unsigned int polState);
 };
 
 #endif
diff --git a/TEvtGen/EvtGenModels/EvtBCVFF.cpp b/TEvtGen/EvtGenModels/EvtBCVFF.cpp
new file mode 100755 (executable)
index 0000000..ace9f03
--- /dev/null
@@ -0,0 +1,153 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtBCVFF.cc
+//
+// Description: form factors for B->Vlnu 
+//
+// Modification history:
+//
+//    AVL Jul 6, Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenModels/EvtBCVFF.hh"
+
+#include "EvtGenBase/EvtId.hh"
+#include <string>
+#include <math.h>
+#include "EvtGenBase/EvtPDL.hh"
+#include <stdlib.h>
+#include <iostream>
+
+using namespace std;
+
+EvtBCVFF::EvtBCVFF(int idV, int fit) {
+
+  idVector = idV;
+  whichfit = fit;
+  //cout<<"==== EvtBCVFF:: idVector="<<idVector<<" whichfit="<<whichfit<<endl;
+  return;
+}
+
+void EvtBCVFF::getvectorff(EvtId,EvtId,
+                          double t, double, double *a1f,
+                          double *a2f, double *vf, double *a0f ){
+  double q2=t;
+
+  if(whichfit == 0) {
+    *vf = 0;
+    *a0f = 0;
+    *a1f = 1;
+    *a2f=0;
+    
+    return;
+  };
+
+  if( idVector == EvtPDL::getId("J/psi").getId() ) { // Bc -> J/psi
+      if(whichfit == 1) { // SR form factor set from [Kiselev, hep-ph/0211021]
+       double Mbc = 6.277, Mpsi=3.0967; // Experimental values
+       double Mpole2 = 4.5*4.5, den = 1./(1.-q2/Mpole2);
+       double FV = 0.11*den,
+       FAp = -0.074*den,
+       FA0 = 5.9*den,
+       FAm = 0.12*den;
+       *vf = (Mbc + Mpsi)*FV;
+       *a2f = -(Mbc+Mpsi)*FAp;
+       *a1f = FA0/(Mbc+Mpsi);
+       *a0f = (q2*FAm + (Mbc+Mpsi)*(*a1f)-(Mbc-Mpsi)*(*a2f))/(2*Mpsi);    
+       return;
+      }
+      else if(whichfit == 2) {  // form factor set from  [Ebert, hep-ph/0306306] 
+       *vf = (0.49077824756158533 - 0.0012925655191347828*q2)/(1 - 0.06292520325875656*q2);
+       *a0f = (0.4160345034630221 - 0.0024720095310225023*q2)/(1 - 0.061603451915567785*q2);
+       *a1f = (0.4970212860605933 - 0.0067519730024654745*q2)/(1 - 0.050487026667172176*q2);
+       *a2f = (0.7315284919705497 + 0.0014263826220727142*q2 -  0.0006946090066269195*q2*q2)/(1 - 0.04885587273651653*q2);
+       return;
+      };
+  }
+  else if(idVector == EvtPDL::getId("psi(2S)").getId()) { // Bc -> psi((2S)
+      if(whichfit == 1) {
+       ////cout<<"BC2:: psi2S, Kiselev, q2="<<q2<<endl;
+       double Mbc = 6.277, Mpsi=3.0967, Mpsi2S = 3.686, kappa = Mpsi/Mpsi2S; // Experimental values
+       double Mpole2 = 4.5*4.5, den=1./(1.-q2/Mpole2);
+       double FV = 0.11*den*kappa/3.1,
+       FAp = -0.074*den*kappa/4.9,
+       FA0 = 5.9*den*kappa/3.5,
+       FAm = 0.12*den*kappa/2.3;
+       *vf = (Mbc + Mpsi2S)*FV;
+       *a2f = -(Mbc+Mpsi2S)*FAp;
+       *a1f = FA0/(Mbc+Mpsi2S);
+       *a0f = (q2*FAm + (Mbc+Mpsi2S)*(*a1f)-(Mbc-Mpsi2S)*(*a2f))/(2*Mpsi2S);  
+       return;
+      }
+      else if(whichfit == 2) {
+       ////cout<<"BC2:: psi2S, Ebert, q2="<<q2<<endl;
+       *vf  =  (0.24177223968739653 - 0.053589051007278135*q2)/(1 - 0.0977848994260899*q2);
+       *a0f = (0.23996026570086615 - 0.03530198514007337*q2)/(1 - 0.09371162519983989*q2);
+       *a1f = (0.17418379258849329 - 0.004129699022085851*q2*q2)/(1 + 0.06607665248402918*q2);
+       *a2f = (0.1352376939112041 - 0.040361722565209444*q2 + 0.003343515369431853*q2*q2)/(1 - 0.1463698128333418*q2);
+       return;
+      };
+  }
+  else {
+  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
+    ::abort();
+  };
+}
+
+
+void EvtBCVFF::getscalarff(EvtId, EvtId, double, double, double*, 
+                              double*){
+  
+  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
+  ::abort();
+
+}
+
+
+
+void EvtBCVFF::gettensorff(EvtId, EvtId, double, double, double*, 
+                              double*, double*, double*){
+  
+  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
+  ::abort();
+
+}
+
+
+
+void EvtBCVFF::getbaryonff(EvtId, EvtId, double, double, double*, 
+                              double*, double*, double*){
+  
+  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
+  ::abort();
+
+}
+
+void EvtBCVFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                              double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtBCVFF.\n";
+  ::abort();
+
+}
+
+void EvtBCVFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                               double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtBCVFF.\n";
+  ::abort();
+
+}
+
diff --git a/TEvtGen/EvtGenModels/EvtBCVFF.hh b/TEvtGen/EvtGenModels/EvtBCVFF.hh
new file mode 100755 (executable)
index 0000000..0e54b37
--- /dev/null
@@ -0,0 +1,59 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtBCVFF.hh
+//
+// Description: Form factors for EvtBCVFF model
+//
+// Modification history:
+//
+//    DJL     April 20, 1998         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTBCVFF_HH
+#define EVTBCVFF_HH
+
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+
+class EvtId;
+
+class EvtBCVFF : public EvtSemiLeptonicFF {
+
+public:
+
+  EvtBCVFF(int idV, int fit);
+  void getvectorff( EvtId parent, EvtId daught,
+                       double t, double mass, double *a1f,
+                       double *a2f, double *vf, double *a0f );
+
+  void getscalarff(EvtId, EvtId, double, double, double*, 
+                  double*);
+
+  void gettensorff(EvtId, EvtId, double, double, double*, 
+                  double*, double*, double*);
+
+  void getbaryonff(EvtId, EvtId, double, double, double*, 
+                  double*, double*, double*);
+
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
+
+private:
+
+  int idVector, whichfit;
+
+};
+
+#endif
+
similarity index 82%
rename from TEvtGen/EvtGenModels/EvtBHadronic.cxx
rename to TEvtGen/EvtGenModels/EvtBHadronic.cpp
index 2520391a284b519951b757b3cbf3426091270278..3a0ed8524c371d97d604f5771be09862ab188758 100644 (file)
@@ -73,9 +73,7 @@ void EvtBHadronic::decay( EvtParticle *p){
   p->initializePhaseSpace(getNDaug(),getDaugs());
 
   EvtVector4R p4[MAX_DAUG];
-  double m;
-
-  m = p->mass();
+  p->mass();
 
 
   int i,j;
@@ -127,9 +125,10 @@ void EvtBHadronic::decay( EvtParticle *p){
 
     g.setdiag(1.0,-1.0,-1.0,-1.0);
     tds = -f*g 
-      -ap*(directProd(p4b,p4b)+directProd(p4b,p4[0]))
-      -gf*EvtComplex(0.0,1.0)*dual(directProd(p4[0]+p4b,p4b-p4[0]))
-      -am*((directProd(p4b,p4b)-directProd(p4b,p4[0])));
+      -ap*(EvtGenFunctions::directProd(p4b,p4b)+EvtGenFunctions::directProd(p4b,p4[0]))
+      -gf*EvtComplex(0.0,1.0)*dual(EvtGenFunctions::directProd(p4[0]+p4b,p4b-p4[0]))
+      -am*((EvtGenFunctions::directProd(p4b,p4b)-
+            EvtGenFunctions::directProd(p4b,p4[0])));
     jb[0]=tds.cont1(p->getDaug(0)->epsParent(0).conj());
     jb[1]=tds.cont1(p->getDaug(0)->epsParent(1).conj());
     jb[2]=tds.cont1(p->getDaug(0)->epsParent(2).conj());
@@ -143,9 +142,11 @@ void EvtBHadronic::decay( EvtParticle *p){
 
     g.setdiag(1.0,-1.0,-1.0,-1.0);
     tds = -f*g 
-      -ap*(directProd(p4b,p4b)+directProd(p4b,p4[0]))
-      -gf*EvtComplex(0.0,1.0)*dual(directProd(p4[0]+p4b,p4b-p4[0]))
-      -am*((directProd(p4b,p4b)-directProd(p4b,p4[0])));
+      -ap*(EvtGenFunctions::directProd(p4b,p4b)+
+           EvtGenFunctions::directProd(p4b,p4[0]))
+      -gf*EvtComplex(0.0,1.0)*dual(EvtGenFunctions::directProd(p4[0]+p4b,p4b-p4[0]))
+      -am*((EvtGenFunctions::directProd(p4b,p4b)-
+            EvtGenFunctions::directProd(p4b,p4[0])));
     jb[0]=tds.cont1(p->getDaug(0)->epsParent(0).conj());
     jb[1]=tds.cont1(p->getDaug(0)->epsParent(1).conj());
     jb[2]=tds.cont1(p->getDaug(0)->epsParent(2).conj());
@@ -174,23 +175,23 @@ void EvtBHadronic::decay( EvtParticle *p){
     ep_meson_bb[3]=ep_meson_b[3]*(p4b);
     ep_meson_bb[4]=ep_meson_b[4]*(p4b);
     
-    jb[0]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[0])
+    jb[0]=EvtComplex(0.0,(1.0)*hf)*dual(EvtGenFunctions::directProd(pp,pm)).cont2(ep_meson_b[0])
        -kf*ep_meson_b[0]
        -bp*ep_meson_bb[0]*pp-bm*ep_meson_bb[0]*pm;
      
-    jb[1]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[1])
+    jb[1]=EvtComplex(0.0,(1.0)*hf)*dual(EvtGenFunctions::directProd(pp,pm)).cont2(ep_meson_b[1])
        -kf*ep_meson_b[1]
        -bp*ep_meson_bb[1]*pp-bm*ep_meson_bb[1]*pm;
     
-    jb[2]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[2])
+    jb[2]=EvtComplex(0.0,(1.0)*hf)*dual(EvtGenFunctions::directProd(pp,pm)).cont2(ep_meson_b[2])
        -kf*ep_meson_b[2]
        -bp*ep_meson_bb[2]*pp-bm*ep_meson_bb[2]*pm;
     
-    jb[3]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[3])
+    jb[3]=EvtComplex(0.0,(1.0)*hf)*dual(EvtGenFunctions::directProd(pp,pm)).cont2(ep_meson_b[3])
        -kf*ep_meson_b[3]
        -bp*ep_meson_bb[3]*pp-bm*ep_meson_bb[3]*pm;
     
-    jb[4]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[4])
+    jb[4]=EvtComplex(0.0,(1.0)*hf)*dual(EvtGenFunctions::directProd(pp,pm)).cont2(ep_meson_b[4])
        -kf*ep_meson_b[4]
        -bp*ep_meson_bb[4]*pp-bm*ep_meson_bb[4]*pm;
     break;
@@ -203,9 +204,11 @@ void EvtBHadronic::decay( EvtParticle *p){
     ffmodel.getvectorff(B0,D1P10,EvtPDL::getMeanMass(D1P10),q2,&f,&gf,&ap,&am);
     g.setdiag(1.0,-1.0,-1.0,-1.0);
     tds = -f*g 
-      -ap*(directProd(p4b,p4b)+directProd(p4b,p4[0]))
-      +gf*EvtComplex(0.0,1.0)*dual(directProd(p4[0]+p4b,p4b-p4[0]))
-      -am*((directProd(p4b,p4b)-directProd(p4b,p4[0])));
+      -ap*(EvtGenFunctions::directProd(p4b,p4b)+
+           EvtGenFunctions::directProd(p4b,p4[0]))
+      +gf*EvtComplex(0.0,1.0)*dual(EvtGenFunctions::directProd(p4[0]+p4b,p4b-p4[0]))
+      -am*((EvtGenFunctions::directProd(p4b,p4b)-
+            EvtGenFunctions::directProd(p4b,p4[0])));
     jb[0]=tds.cont1(p->getDaug(0)->epsParent(0).conj());
     jb[1]=tds.cont1(p->getDaug(0)->epsParent(1).conj());
     jb[2]=tds.cont1(p->getDaug(0)->epsParent(2).conj());
index 66eb0a6f81ea524681ec468067e25df611a75fbd..4438787aec916a9beea6bb7f7e06adcd10740137 100644 (file)
@@ -89,7 +89,7 @@ c      End
       Real*8  t3pions,ttag,t,Weight,Weight_max
       Real*8  AB0,AB0bar,Ainter,xd
       Real*8  m_rhop_2,m_rhom_2
-      Real*4  Evtranf,Tag
+      Real*8  Evtranf,Tag
       Real*8  Kin_moy,Kin_moy2,Kin,Lambda
       
       alphaCP      = 0.4
@@ -127,11 +127,11 @@ c what follows is just to show how the ouput of EVT3pions
 C should be used at the time dependant level.     
 c Decay time of the B->-3 pions
  1    Continue
-      t3pions=-Alog(Evtranf())
+      t3pions=-Dlog(Evtranf())
       If(t3pions.gt.10.) Go to 1
 c Decay time of the tagging B
  2    Continue
-      ttag   =-Alog(Evtranf())                
+      ttag   =-Dlog(Evtranf())                
       If(ttag   .gt.10.) Go to 2
 c time-difference between the 3pi decay and the tagging decay     
       t=t3pions-ttag      
@@ -459,7 +459,7 @@ c   ----------------------------------------------------------
 c      --- Used Functions 
 c      ----------------------------------------------------------
 
-       real evtranf
+       real*8 evtranf
 
 c      ----------------------------------------------------------
 c      --- Variables in Argument
@@ -604,7 +604,7 @@ c   ----------------------------------------------------------
        Do i=1,3
        P2(i)=-p1(i)-p3(i)
        End do
-
+12345   continue
        END
        
        
@@ -940,7 +940,7 @@ c --- commons
        
 c --- Used Functions 
 
-       Real evtranf    
+       Real*8 evtranf  
 
 c --- Variables in Argument
 
@@ -1053,7 +1053,7 @@ c------------------------------------------------------------------
        Real*8 c1,c2,c3,s1,s2,s3
        Real*8 MatRot(3,3)
         save MatRot
-       Real evtranf
+       Real*8 evtranf
        Integer new,i,j
       
        If(new.ne.0) Then
old mode 100644 (file)
new mode 100755 (executable)
index c1e8bdd..dde47ae
@@ -22,3 +22,4 @@ c Basic matrix elements
      >            ,M_Upsi,BetaBabar
      >            ,ptcut,coscut
      >             ,M_Kp,Mass_Kstarp,Mass_Kstar0,Gam_Kstarp,Gam_Kstar0
+
similarity index 87%
rename from TEvtGen/EvtGenModels/EvtBTo3piCP.cxx
rename to TEvtGen/EvtGenModels/EvtBTo3piCP.cpp
index 811eb093fd524f70550eb64ed1599350ea45a684..ca80c74a867c8f12fd33b73a5ac8a6dce42ab57c 100644 (file)
@@ -77,6 +77,25 @@ void EvtBTo3piCP::init(){
 
 void EvtBTo3piCP::initProbMax(){
 
+  // perform common blocks initialization before
+  // first use
+  double alpha=getArg(1);
+  int iset;
+
+  iset=10000;
+
+  double p4piplus[4],p4piminus[4],p4gamm1[4],p4gamm2[4]; 
+
+  double realA,imgA,realbarA,imgbarA;
+
+#ifdef WIN32
+  EVT3PIONS(&alpha,&iset,p4piplus,p4piminus,p4gamm1,p4gamm2,
+            &realA,&imgA,&realbarA,&imgbarA);
+#else
+  evt3pions_(&alpha,&iset,p4piplus,p4piminus,p4gamm1,p4gamm2,
+            &realA,&imgA,&realbarA,&imgbarA);
+#endif
+
   setProbMax(1.5);
 
 }
@@ -90,7 +109,7 @@ void EvtBTo3piCP::decay( EvtParticle *p){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   EvtParticle *pip,*pim,*pi0;
 
@@ -107,15 +126,7 @@ void EvtBTo3piCP::decay( EvtParticle *p){
   double alpha=getArg(1);
   int iset;
 
-  static int first=1;
-
-  if (first==1) {
-    iset=10000;
-    first=0;
-  }
-  else{
-    iset=0;
-  }
+  iset=0;
 
   double p4piplus[4],p4piminus[4],p4gamm1[4],p4gamm2[4]; 
 
index 42463439d417c7f53727718c99db7416a5b9966f..daf88ea7a564d8c0b57da2bd00200bc64d7de99d 100644 (file)
@@ -94,7 +94,7 @@ c      End
       Real*8  Weight,Weight_max
       Real*8  ABp,ABm
       Real*8  m_rho12,m_rho13
-      Real*4  Evtranf,Tag
+      Real*8  Evtranf,Tag
       alpha      = 0.4
       N_gener    = 0
       N_asked    = 100000
@@ -350,7 +350,7 @@ c   ----------------------------------------------------------
 c      --- Used Functions 
 c      ----------------------------------------------------------
 
-       real evtranf
+       real*8 evtranf
        
 
 c      ----------------------------------------------------------
@@ -497,7 +497,7 @@ c-----------------------------------------------------------------------
 
                                                                                                  
        Real*8 m12, m13, W12, W13, Wtot
-       Real*4 evt_gmas
+       Real*8 evt_gmas
        Complex*16 MatBp,MatBm
         Real*8  Real_Bp,Imag_Bp,Real_Bm,Imag_Bm                                                     
        Real*8     p1(5),p2(5),p3(5)
index 475d58f328dad630993d70bbe6caaf0bc41b7ea2..a66e17dba842088cbc1cb978fda2930c4d409f46 100644 (file)
@@ -90,7 +90,7 @@ c      End
       Real*8  Weight,Weight_max
       Real*8  ABp,ABm
       Real*8  m_rho12,m_rho13
-      Real*4  Evtranf,Tag
+      Real*8  Evtranf,Tag
       
       alpha      = 0.4
       N_gener    = 0
@@ -365,7 +365,7 @@ c   ----------------------------------------------------------
 c      --- Used Functions 
 c      ----------------------------------------------------------
 
-       real evtranf
+       real*8 evtranf
 
 c      ----------------------------------------------------------
 c      --- Variables in Argument
@@ -511,7 +511,7 @@ c-----------------------------------------------------------------------
 
                                                                                                  
        Real*8 m12, m13, W12, W13, Wtot
-       Real*4 evt_gmas
+       Real*8 evt_gmas
        Complex*16 MatBp,MatBm
         Real*8  Real_Bp,Imag_Bp,Real_Bm,Imag_Bm                                                     
        Real*8     p1(5),p2(5),p3(5)
similarity index 99%
rename from TEvtGen/EvtGenModels/EvtBTo4piCP.cxx
rename to TEvtGen/EvtGenModels/EvtBTo4piCP.cpp
index 136547256b9c3326aaa3472d7696a5ee2fc89aad..f0e1e64cd9090313e0a2cf2067c2d5bfab541547 100644 (file)
@@ -183,7 +183,7 @@ void EvtBTo4piCP::decay( EvtParticle *p){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
   
   p->initializePhaseSpace(getNDaug(),getDaugs());
   EvtVector4R mom1 = p->getDaug(0)->getP4();
diff --git a/TEvtGen/EvtGenModels/EvtBToDDalitzCPK.cpp b/TEvtGen/EvtGenModels/EvtBToDDalitzCPK.cpp
new file mode 100644 (file)
index 0000000..ca11649
--- /dev/null
@@ -0,0 +1,136 @@
+// $Id: EvtBToDDalitzCPK.cpp,v 1.2 2009-03-16 16:28:42 robbep Exp $
+// Include files 
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+
+// local
+#include "EvtGenModels/EvtBToDDalitzCPK.hh"
+
+//-----------------------------------------------------------------------------
+// Implementation file for class : EvtBToDDalitzCPK
+// Decay Model for B->D0K with D0->Ks pi+ pi-
+// it is just a way to get the arguments... 
+// Works also for other B->D0K decays...
+// 2003-12-08 : Patrick Robbe
+//-----------------------------------------------------------------------------
+
+//=============================================================================
+// Standard destructor
+//=============================================================================
+EvtBToDDalitzCPK::~EvtBToDDalitzCPK ( ) { }
+//=============================================================================
+// Name of the model
+//=============================================================================
+std::string EvtBToDDalitzCPK::getName( ) 
+{
+  return "BTODDALITZCPK" ;
+}
+//=============================================================================
+// Clone method
+//=============================================================================
+EvtDecayBase * EvtBToDDalitzCPK::clone ( ) 
+{
+  return new EvtBToDDalitzCPK ;
+}
+//=============================================================================
+// Initialisation method
+//=============================================================================
+void EvtBToDDalitzCPK::init ( ) 
+{
+  // Check that there are 3 arguments 
+  checkNArg( 3 ) ;
+  // Check that there are 2 daughters
+  checkNDaug( 2 ) ;
+  // Check that the particles of the decay are :
+  // B+/-   -> D0/bar K+/-
+  // B+/-   -> K+/- D0/bar
+  // B0/bar -> K*0/bar D0/bar
+  // and nothing else ...
+  static EvtId BP  = EvtPDL::getId( "B+" ) ;
+  static EvtId BM  = EvtPDL::getId( "B-" ) ;
+  static EvtId B0  = EvtPDL::getId( "B0" ) ;
+  static EvtId B0B = EvtPDL::getId( "anti-B0" ) ;
+  static EvtId KP  = EvtPDL::getId( "K+" ) ;
+  static EvtId KM  = EvtPDL::getId( "K-" ) ; 
+  static EvtId KS  = EvtPDL::getId( "K*0" ) ;
+  static EvtId KSB = EvtPDL::getId( "anti-K*0" ) ;
+  static EvtId D0  = EvtPDL::getId( "D0" ) ;
+  static EvtId D0B = EvtPDL::getId( "anti-D0" ) ;
+
+  _flag = 0 ;
+  
+  EvtId parent = getParentId() ;
+  EvtId d1     = getDaug( 0 )  ;
+  EvtId d2     = getDaug( 1 )  ;
+
+  if ( ( ( parent == BP ) || ( parent == BM  ) ) &&
+       ( ( d1     == D0 ) || ( d1     == D0B ) ) && 
+       ( ( d2     == KP ) || ( d2     == KM  ) ) ) {
+    _flag = 1 ;
+    // PHSP Decay 
+  }
+  else if ( ( ( parent == BP ) || ( parent == BM  ) ) &&
+            ( ( d1     == KP ) || ( d1     == KM  ) ) && 
+            ( ( d2     == D0 ) || ( d2     == D0B  ) ) ) {
+    _flag = 1 ;
+    // also PHSP decay
+  }
+  else if ( ( ( parent == B0 ) || ( parent == B0B ) ) &&
+            ( ( d1     == KS ) || ( d1     == KSB ) ) && 
+            ( ( d2     == D0 ) || ( d2     == D0B ) ) ) {
+    _flag = 2 ;
+    // SVS Decay
+  }
+  
+  if ( _flag == 0 ) {
+    report( ERROR , "EvtGen" ) << "EvtBToDDalitzCPK : Invalid mode." 
+                               << std::endl ;
+    assert( 0 ) ;
+  }
+}
+//=============================================================================
+// Set prob max
+//=============================================================================
+void EvtBToDDalitzCPK::initProbMax( ) 
+{
+  if ( _flag == 1 ) {
+    // PHSP
+    setProbMax ( 0. ) ;
+  }
+  else if ( _flag == 2 ) {
+    // SVS
+    setProbMax ( 1.0 ) ;
+  }
+}
+//=============================================================================
+// decay particle
+//=============================================================================
+void EvtBToDDalitzCPK::decay( EvtParticle * p ) 
+{
+  if ( _flag == 1 ) {
+    // PHSP
+    p -> initializePhaseSpace( getNDaug() , getDaugs() ) ;
+    vertex ( 0. ) ;
+  }
+  else if ( _flag == 2 ) {
+    // SVS
+    p->initializePhaseSpace(getNDaug(),getDaugs());
+    
+    EvtParticle *v;
+    v = p->getDaug(0);
+    double massv = v->mass();
+    EvtVector4R momv = v->getP4();
+    EvtVector4R moms = p->getDaug(1)->getP4();
+    double m_parent = p->mass();
+    EvtVector4R p4_parent = momv+moms;
+    
+    double norm=massv/(momv.d3mag()*m_parent);
+    p4_parent = norm*p4_parent;
+    vertex(0,p4_parent*(v->epsParent(0)));
+    vertex(1,p4_parent*(v->epsParent(1)));
+    vertex(2,p4_parent*(v->epsParent(2)));
+  }
+}
+
+
diff --git a/TEvtGen/EvtGenModels/EvtBToDDalitzCPK.hh b/TEvtGen/EvtGenModels/EvtBToDDalitzCPK.hh
new file mode 100644 (file)
index 0000000..afcb46b
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: EvtBToDDalitzCPK.hh,v 1.2 2009-03-16 16:37:55 robbep Exp $
+#ifndef EVTGENMODELS_EVTBTODDALITZCPK_HH 
+#define EVTGENMODELS_EVTBTODDALITZCPK_HH 1
+
+// Include files
+#include "EvtGenBase/EvtDecayAmp.hh"
+
+/** @class EvtBToDDalitzCPK EvtBToDDalitzCPK.hh EvtGenModels/EvtBToDDalitzCPK.hh
+ *  Decay Model for B->DK, (adds the possibility to use D0->Ks pi pi to 
+ *  find gamma with a Dalitz analysis
+ *
+ *  @author Patrick Robbe
+ *  @date   2003-12-08
+ */
+
+class EvtBToDDalitzCPK : public EvtDecayAmp {
+public:
+  /// Standard constructor
+  EvtBToDDalitzCPK( ) { }
+
+  virtual ~EvtBToDDalitzCPK( ); ///< Destructor
+
+  virtual std::string getName ( ) ;
+  EvtDecayBase * clone ( ) ;
+  
+  void decay ( EvtParticle * p ) ;
+  void init ( ) ;
+  
+  void initProbMax ( ) ;
+  
+protected:
+
+private:
+  int _flag ;
+
+};
+#endif // EVTGENMODELS_EVTBTODDALITZCPK_HH
index 4e692078b46a64c342b153ac6795a33f8a28d900..19d945eda0ad9cd5d602ff26934a5d77d2df7be6 100644 (file)
@@ -85,7 +85,7 @@ C      End
       Real*8  Weight,Weight_max
       Real*8  m_Kstarp,m_Kstar0,m_rhom
       Real*8  Wrong
-      Real*4  Evtranf,Tag
+      Real*8  Evtranf,Tag
       
       alphaCP      = 1.35
       betaCP       = 0.362
@@ -367,7 +367,7 @@ c   ----------------------------------------------------------
 c      --- Used Functions 
 c      ----------------------------------------------------------
 
-       real evtranf
+       real*8 evtranf
 
 c      ----------------------------------------------------------
 c      --- Variables in Argument
@@ -527,7 +527,7 @@ c-----------------------------------------------------------------------
 
                                                                                                  
        Real*8 m12, m13, m23, W12, W13, W23, Wtot
-       Real*4 evt_gmas
+       Real*8 evt_gmas
        Complex*16 MatB0,MatB0bar,BW12,BW13,BW23
         Real*8  Real_B0,Imag_B0,Real_B0bar,Imag_B0Bar                                                     
        Real*8     p1(5),p2(5),p3(5)
similarity index 88%
rename from TEvtGen/EvtGenModels/EvtBToKpipiCP.cxx
rename to TEvtGen/EvtGenModels/EvtBToKpipiCP.cpp
index fa7443f18c7224d95dcb6ed31d9f43d3ec2024ac..cb75aecbbe994322e22f5b61e3fcb6fc53247f70 100644 (file)
@@ -80,6 +80,22 @@ void EvtBToKpipiCP::init(){
   checkSpinDaughter(1,EvtSpinType::SCALAR);
   checkSpinDaughter(2,EvtSpinType::SCALAR);
 
+  double alpha=getArg(1);
+  double beta=getArg(2);
+  int iset;
+  iset=10000;
+
+  double p4Kplus[4],p4piminus[4],p4gamm1[4],p4gamm2[4]; 
+
+  double realA,imgA,realbarA,imgbarA;
+
+#ifdef WIN32
+  EVTKPIPI(&alpha,&beta,&iset,p4Kplus,p4piminus,p4gamm1,p4gamm2,
+            &realA,&imgA,&realbarA,&imgbarA);
+#else
+  evtkpipi_(&alpha,&beta,&iset,p4Kplus,p4piminus,p4gamm1,p4gamm2,
+            &realA,&imgA,&realbarA,&imgbarA);
+#endif
 }
 
 
@@ -92,7 +108,7 @@ void EvtBToKpipiCP::decay( EvtParticle *p){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   EvtParticle *Kp,*pim,*pi0;
 
@@ -108,15 +124,7 @@ void EvtBToKpipiCP::decay( EvtParticle *p){
   double beta=getArg(2);
   int iset;
 
-  static int first=1;
-
-  if (first==1) {
-    iset=10000;
-    first=0;
-  }
-  else{
-    iset=0;
-  }
+  iset=0;
 
   double p4Kplus[4],p4piminus[4],p4gamm1[4],p4gamm2[4]; 
 
similarity index 79%
rename from TEvtGen/EvtGenModels/EvtBToPlnuBKFF.cxx
rename to TEvtGen/EvtGenModels/EvtBToPlnuBKFF.cpp
index 598eebe25e55b813c00a03b994ecd6a32e796e90..4e11bc6976e57fc92e20a42977ed6f530d5df5c0 100644 (file)
@@ -38,8 +38,8 @@ EvtBToPlnuBKFF::EvtBToPlnuBKFF(double alpha, double beta) {
 }
 
 
-void EvtBToPlnuBKFF::getscalarff(EvtId parent,EvtId daught,
-                           double t, double mass, double *fp, double *f0) {
+void EvtBToPlnuBKFF::getscalarff(EvtId parent,EvtId /*daught*/,
+                           double t, double /*mass*/, double *fp, double *f0) {
 
   //Define mBstar
   EvtId Bplus = EvtPDL::getId("B+");
@@ -86,3 +86,20 @@ void EvtBToPlnuBKFF::getbaryonff(EvtId, EvtId, double, double, double*,
   ::abort();
 
 }
+
+void EvtBToPlnuBKFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                               double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtBToPlnuBKFF.\n";
+  ::abort();
+
+}
+
+void EvtBToPlnuBKFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                                double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtBToPlnuBKFF.\n";
+  ::abort();
+
+}
+
index 1cf88c4e92405ca8ff9561d2eb2fd18177a3639a..ad43a7b0c66ed0184d77b480d5dee762e2909cd8 100644 (file)
@@ -42,6 +42,11 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
 
 private:
   double _alpha;
similarity index 84%
rename from TEvtGen/EvtGenModels/EvtBToVlnuBallFF.cxx
rename to TEvtGen/EvtGenModels/EvtBToVlnuBallFF.cpp
index 7949dd5e587cfac0dc550be9e302aacdb874650f..0f67ec27d82914aedb2c369d664b7963cde1b72f 100644 (file)
@@ -51,8 +51,8 @@ EvtBToVlnuBallFF::EvtBToVlnuBallFF(double    r2_A1,
 }
 
 
-void EvtBToVlnuBallFF::getvectorff(EvtId parent,EvtId daught,
-                                  double t, double mass, double *a1f,
+void EvtBToVlnuBallFF::getvectorff(EvtId parent,EvtId /*daught*/,
+                                  double t, double /*mass*/, double *a1f,
                                   double *a2f, double *vf, double *a0f ){
   
   // FF calculations taken from the LCSR calculation of 
@@ -119,3 +119,19 @@ void EvtBToVlnuBallFF::getbaryonff(EvtId, EvtId, double, double, double*,
 
 }
 
+
+void EvtBToVlnuBallFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                                 double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtBToVlnuBallFF.\n";
+  ::abort();
+
+}
+
+void EvtBToVlnuBallFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                                  double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtBToVlnuBallFF.\n";
+  ::abort();
+
+}
index 9976c59096bdaf3565adbc80a1939dbb822e76ea..84de66898283fe5afb183bf7a45f42637f698410 100644 (file)
@@ -52,6 +52,12 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
+
 private:
   
   double    _r2_A1; 
diff --git a/TEvtGen/EvtGenModels/EvtBaryonPCR.cpp b/TEvtGen/EvtGenModels/EvtBaryonPCR.cpp
new file mode 100644 (file)
index 0000000..6cd2972
--- /dev/null
@@ -0,0 +1,199 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information:
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtBaryonVminusA.cc
+//
+// Description: Routine to implement semileptonic decays using realistic
+//              dynamics.  The form factors are from 
+//              M.Pervin,S.Capstick,W. Roberts, Phys.Rev. C72 035201(2005).
+//              
+//
+// Modification history:
+//
+//    R.J. Tesarek     May 28, 2004     Module created
+//    Karen Gibson     1/20/2006        Module updated for 1/2+->1/2+,
+//                                      1/2+->1/2-, 1/2+->3/2- Lambda decays
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenModels/EvtBaryonPCR.hh"
+#include "EvtGenBase/EvtConst.hh"
+#include "EvtGenBase/EvtIdSet.hh"
+#include <string>
+#include "EvtGenModels/EvtBaryonPCRFF.hh"
+
+using namespace std;
+#ifdef D0
+#undef D0
+#endif
+EvtBaryonPCR::EvtBaryonPCR():
+  baryonpcrffmodel(0)
+  ,calcamp(0)
+{}
+
+
+EvtBaryonPCR::~EvtBaryonPCR() {
+  delete baryonpcrffmodel;
+  baryonpcrffmodel=0;
+  delete calcamp;
+  calcamp=0;
+}
+
+std::string EvtBaryonPCR::getName(){
+  
+  return "BaryonPCR";     
+  
+}
+
+
+
+EvtDecayBase* EvtBaryonPCR::clone(){
+  
+  return new EvtBaryonPCR;
+  
+}
+
+void EvtBaryonPCR::decay( EvtParticle *p ){
+  
+  //This is a kludge to avoid warnings because the K_2* mass becomes to large.
+  static EvtIdSet regenerateMasses("K_2*+","K_2*-","K_2*0","anti-K_2*0",
+                                  "K_1+","K_1-","K_10","anti-K_10",
+                                  "D'_1+","D'_1-","D'_10","anti-D'_10");
+  
+  if (regenerateMasses.contains(getDaug(0))){
+    p->resetFirstOrNot();
+  }
+  
+  p->initializePhaseSpace(getNDaug(),getDaugs());
+  
+  EvtComplex r00(getArg(0), 0.0 );
+  EvtComplex r01(getArg(1), 0.0 );
+  EvtComplex r10(getArg(2), 0.0 );
+  EvtComplex r11(getArg(3), 0.0 );
+
+  calcamp->CalcAmp(p,_amp2,baryonpcrffmodel, r00, r01, r10, r11);
+  
+}
+
+void EvtBaryonPCR::initProbMax() {
+
+  // Baryons (partial list 5/28/04)
+
+  static EvtId SIGC0=EvtPDL::getId("Sigma_c0");
+  static EvtId SIGC0B=EvtPDL::getId("anti-Sigma_c0");
+  static EvtId SIGCP=EvtPDL::getId("Sigma_c+");
+  static EvtId SIGCM=EvtPDL::getId("anti-Sigma_c-");
+  static EvtId SIGCPP=EvtPDL::getId("Sigma_c++");
+  static EvtId SIGCMM=EvtPDL::getId("anti-Sigma_c--");
+  static EvtId LAMCP=EvtPDL::getId("Lambda_c+");
+  static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-");
+  static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+");
+  static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-");
+  static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+");
+  static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-");
+  static EvtId LAMB=EvtPDL::getId("Lambda_b0");
+  static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
+  
+  EvtId parnum,barnum,lnum;
+  
+  parnum = getParentId();
+  barnum = getDaug(0);
+  lnum = getDaug(1);
+
+  if( parnum==LAMB || parnum==LAMBB ) {
+    if( barnum==LAMCP|| barnum==LAMCM 
+       || barnum==LAMC1P || barnum==LAMC1M || barnum==LAMC2P || barnum==LAMC2M
+       || barnum==SIGC0 || barnum==SIGC0B || barnum==SIGCP || barnum==SIGCM 
+       || barnum==SIGCPP || barnum==SIGCMM ) {
+      setProbMax(22000.0);
+      return;
+    }
+  }
+  
+  //This is a real cludge.. (ryd)
+  setProbMax(0.0);
+  
+}
+
+void EvtBaryonPCR::init(){
+  
+  //if (getNArg()!=0) {
+  if (getNArg()!=4) {
+
+    report(ERROR,"EvtGen") << "EvtBaryonPCR generator expected "
+                          << " 4 arguments but found:"<<getNArg()<<endl;
+      //<< " 0 arguments but found:"<<getNArg()<<endl;
+    report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+    ::abort();
+
+  }
+
+  if ( getNDaug()!=3 ) {
+     report(ERROR,"EvtGen") 
+       << "Wrong number of daughters in EvtBaryonPCR.cc " 
+       << " 3 daughters expected but found: "<<getNDaug()<<endl;
+     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+     ::abort();
+  }
+
+
+  //We expect the parent to be a scalar 
+  //and the daughters to be X lepton neutrino
+
+  EvtSpinType::spintype parenttype=EvtPDL::getSpinType(getParentId());
+  EvtSpinType::spintype baryontype=EvtPDL::getSpinType(getDaug(0));
+  EvtSpinType::spintype leptontype=EvtPDL::getSpinType(getDaug(1));
+  EvtSpinType::spintype neutrinotype=EvtPDL::getSpinType(getDaug(2));
+
+  if ( parenttype != EvtSpinType::DIRAC ) {
+    report(ERROR,"EvtGen") << "EvtBaryonPCR generator expected "
+                           << " a DIRAC parent, found:"<<
+                           EvtPDL::name(getParentId())<<endl;
+    report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+    ::abort();
+  }
+  if ( leptontype != EvtSpinType::DIRAC ) {
+    report(ERROR,"EvtGen") << "EvtBaryonPCR generator expected "
+                           << " a DIRAC 2nd daughter, found:"<<
+                           EvtPDL::name(getDaug(1))<<endl;
+    report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+    ::abort();
+  }
+  if ( neutrinotype != EvtSpinType::NEUTRINO ) {
+    report(ERROR,"EvtGen") << "EvtBaryonPCR generator expected "
+                           << " a NEUTRINO 3rd daughter, found:"<<
+                           EvtPDL::name(getDaug(2))<<endl;
+    report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+    ::abort();
+  }
+
+  baryonpcrffmodel = new EvtBaryonPCRFF;
+  
+  if ( baryontype==EvtSpinType::DIRAC 
+       || baryontype==EvtSpinType::RARITASCHWINGER) { 
+    calcamp = new EvtSemiLeptonicBaryonAmp; 
+  }
+  else {
+    report(ERROR,"EvtGen") 
+      << "Wrong baryon spin type in EvtBaryonPCR.cc " 
+      << "Expected spin type " << EvtSpinType::DIRAC 
+      << ", found spin type " << baryontype <<endl;
+    report(ERROR,"EvtGen") << "Will terminate execution!" <<endl;
+     ::abort();
+  }
+  
+}
+
diff --git a/TEvtGen/EvtGenModels/EvtBaryonPCR.hh b/TEvtGen/EvtGenModels/EvtBaryonPCR.hh
new file mode 100644 (file)
index 0000000..8f96598
--- /dev/null
@@ -0,0 +1,54 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information:
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtBaryonPCR.hh
+//
+// Description:Implementation of the BaryonPCR model
+// Class to handle semileptonic decays using the BaryonVminusA
+// model.
+//
+// Modification history:
+//
+//    R.J. Tesarek     May 28, 2004     Module created
+//    Karen Gibson     1/20/2006        Module updated for 1/2+->1/2+,
+//                                      1/2+->1/2-, 1/2+->3/2- Lambda decays
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTBARYONPCR_HH
+#define EVTBARYONPCR_HH
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+#include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
+
+class EvtParticle;
+
+class EvtBaryonPCR:public  EvtDecayAmp  {
+
+public:
+
+  EvtBaryonPCR();
+  virtual ~EvtBaryonPCR();
+
+  std::string getName();
+  EvtDecayBase* clone();
+
+  void decay(EvtParticle *p);
+  void initProbMax();
+  void init();
+
+private:
+  EvtSemiLeptonicFF *baryonpcrffmodel;
+  EvtSemiLeptonicBaryonAmp *calcamp;
+};
+
+#endif
+
diff --git a/TEvtGen/EvtGenModels/EvtBaryonPCRFF.cpp b/TEvtGen/EvtGenModels/EvtBaryonPCRFF.cpp
new file mode 100644 (file)
index 0000000..e5e8d14
--- /dev/null
@@ -0,0 +1,267 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information:
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtBaryonVminusAFF.cc
+//
+// Description: Routine to implement semileptonic form factors
+//              according to the model BaryonVminusA
+//
+// Modification history:
+//
+//    R.J. Tesarek     May 28, 2004     Module created
+//    Karen Gibson     1/20/2006        Module updated for 1/2+->1/2+,
+//                                      1/2+->1/2-, 1/2+->3/2- Lambda decays
+//
+//--------------------------------------------------------------------------
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenModels/EvtBaryonPCRFF.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtIdSet.hh"
+#include "EvtGenBase/EvtConst.hh"
+#include <string>
+#include <math.h>
+#include <stdlib.h>
+using std::endl;
+
+void EvtBaryonPCRFF::getdiracff(EvtId parent, EvtId daught,
+                               double q2, double /* mass */ , 
+                               double *f1, double *f2, double *f3, 
+                               double *g1, double *g2, double *g3 ) {
+
+  // Baryons (partial list 5/28/04)
+  static EvtId LAMCP=EvtPDL::getId("Lambda_c+");
+  static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-");
+  static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+");
+  static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-");
+  static EvtId LAMB=EvtPDL::getId("Lambda_b0");
+  static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
+
+  double F1, F2, F3, G1, G2, G3;
+
+  if( parent==LAMB || parent==LAMBB ) {
+    // Implement constituent quark model form factors predicted 
+    // by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005)
+
+    if( daught==LAMCP|| daught==LAMCM ) {
+      
+      //  Parameters needed in the calculation;
+      double mQ = 5.28; 
+      double mq = 1.89;
+      double md = 0.40;
+      double MLamB = EvtPDL::getMass(parent);
+      double MLamC = EvtPDL::getMass(daught);
+      
+      double aL  = 0.59;
+      double aLp = 0.55;
+      
+      double aL2  = aL*aL;
+      double aLp2 = aLp*aLp;
+      double aLLp2 = 0.5*(aL2+aLp2);
+      
+      // relativistic correction factor
+      double k2 = 1.0;
+      double rho2 = 3.*md*md/(2.*k2*aLLp2);  
+      
+      // w = scalar product of the 4 velocities of the Lb and Lc.
+      double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
+
+      double I = pow(aL*aLp/aLLp2, 1.5)*exp(-rho2*(w*w-1.));
+
+      // Calculate the form factors
+      F1 = I*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) );
+      F2 = -I*( (md/mq)*(aLp2/aLLp2) - aL2*aLp2/(4.*aLLp2*mq*mQ) );
+      F3 = -I*md*aL2/(mQ*aLLp2);
+
+      G1 = I*( 1.0 - (aL2*aLp2)/(12.*aLLp2*mq*mQ) );
+      G2 = -I*( md*aLp2/(mq*aLLp2) 
+               + (aL2*aLp2)/(12.*aLLp2*mq*mQ)*(1.+12.*md*md/aLLp2) );
+      G3 = I*( md*aL2/(mQ*aLLp2) + md*md*aL2*aLp2/(mq*mQ*aLLp2*aLLp2) );
+       
+      // Set form factors to be passed to the amplitude calc.
+      *f1 = F1;
+      *f2 = F2;
+      *f3 = F3;
+      *g1 = G1;
+      *g2 = G2;
+      *g3 = G3;
+
+    }
+
+    else if( daught==LAMC1P || daught==LAMC1M ) {
+
+      double mQ = 5.28; 
+      double mq = 1.89;
+      double md = 0.40;
+      double MLamB = EvtPDL::getMass(parent);
+      double MLamC = EvtPDL::getMass(daught);
+      
+      double aL  = 0.59;
+      double aLp = 0.47;
+      
+      double aL2  = aL*aL;
+      double aLp2 = aLp*aLp;
+      double aLLp2 = 0.5*(aL2+aLp2);
+      
+      // relativistic correction factor
+      double k2 = 1.0;
+      double rho2 = 3.*md*md/(2.*k2*aLLp2);  
+
+      // w = scalar product of the 4 velocities of the Lb and Lc.
+      double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
+      
+      double I = pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.));
+
+      // Calculate the form factors
+      F1 = I*aL/6.0*( 3.0/mq - 1.0/mQ );
+      F2 = -I*( 2.0*md/aL - aL/(2.0*mq) + 2.*md*md*aL/(mQ*aLLp2) 
+               - (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2));
+      F3 = I*2.*md*md*aL/(mQ*aLLp2);
+
+      G1 = I*( 2.0*md/aL - aL/(6.*mQ) 
+              + (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2));
+      G2 = I*( -2.*md/aL + aL/(2.*mq) + aL/(3.*mQ) );
+      G3 = I*aL/(3.*mQ)*( 1.0 - (md/(2.*mq*aLLp2))*( 3.*aL2 - 2.*aLp2));
+       
+      // Set form factors to be passed to the amplitude calc.
+      *f1 = F1;
+      *f2 = F2;
+      *f3 = F3;
+      *g1 = G1;
+      *g2 = G2;
+      *g3 = G3;
+    }
+  }
+
+  else {
+    *f1 = 1.0;
+    *f2 = 1.0;
+    *f3 = 0.0;
+    *g1 = 1.0;
+    *g2 = 1.0;
+    *g3 = 0.0;
+  }
+
+  return ;
+}
+
+
+void EvtBaryonPCRFF::getraritaff( EvtId parent, EvtId daught,
+                                 double q2, double /* mass */, 
+                                 double *f1, double *f2, double *f3, double *f4, 
+                                 double *g1, double *g2, double *g3, double *g4 ) {
+
+  // Baryons (partial list 5/28/04)
+  static EvtId LAMB=EvtPDL::getId("Lambda_b0");
+  static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
+  static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+");
+  static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-");
+
+  double F1, F2, F3, F4, G1, G2, G3, G4;
+
+  if( parent==LAMB || parent==LAMBB ) {
+    // Implement constituent quark model form factors predicted 
+    // by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005)
+
+    if( daught==LAMC2P|| daught==LAMC2M ) {
+      
+      double mQ = 5.28; 
+      double mq = 1.89;
+      double md = 0.40;
+      double MLamB = EvtPDL::getMass(parent);
+      double MLamC = EvtPDL::getMass(daught);
+      
+      double aL  = 0.59;
+      double aLp = 0.47;
+      
+      double aL2  = aL*aL;
+      double aLp2 = aLp*aLp;
+      double aLLp2 = 0.5*(aL2+aLp2);
+      
+      // relativistic correction factor
+      double k2 = 1.0;
+      double rho2 = 3.*md*md/(2.*k2*aLLp2);  
+
+      // w = scalar product of the 4 velocities of the Lb and Lc.
+      double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
+      
+      double I = -(1./sqrt(3.))*pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.));
+    
+      // Calculate the form factors
+      F1 = I*3.0*md/aL*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) );
+      F2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL2)) - 5.*aL*aLp2*md/(4.*aLLp2*mq*mQ) );
+      F3 = -I*( 3.*md*md*aL/(mQ*aLLp2) + aL/(2.*mQ) );
+      F4 = I*aL/mQ;
+
+      G1 = I*( 3.0*md/aL - (aL/(2.*mQ))*(1. + 3.*md*aLp2/(2.*aLLp2*mq) ) );
+      G2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL)) + aL*aLp2*md/(4.*aLLp2*aLLp2*mq*mQ)*(aLLp2+12.*md*md) );
+      G3 = I*aL/(mQ*aLLp2)*( aLLp2/2. + 3.*md*md + aLp2*md/(mq*aLLp2)*(aLLp2+6.*md*md) );
+      G4 = -I*( aL/mQ + md/(mq*mQ)*aLp2*aL/aLLp2 );
+       
+      // Set form factors to be passed to the amplitude calc.
+      *f1 = F1;
+      *f2 = F2;
+      *f3 = F3;
+      *f4 = F4;
+      *g1 = G1;
+      *g2 = G2;
+      *g3 = G3;
+      *g4 = G4;
+    }
+  }
+  
+  else {
+    *f1 = 1.0;
+    *f2 = 1.0;
+    *f3 = 0.0;
+    *f4 = 0.0;
+    *g1 = 1.0;
+    *g2 = 1.0;
+    *g3 = 0.0;
+    *g4 = 0.0;
+
+  }
+
+  return ;
+
+
+}
+
+void EvtBaryonPCRFF::getscalarff(EvtId, EvtId, double, double, double*, double*) {
+
+  report(ERROR,"EvtGen") << "Not implemented :getscalarff in EvtBaryonPCRFF.\n";  
+  ::abort();
+
+}
+
+void EvtBaryonPCRFF::getvectorff(EvtId, EvtId, double, double, double*, double*,
+                                double*, double*) {
+
+  report(ERROR,"EvtGen") << "Not implemented :getvectorff in EvtBaryonPCRFF.\n";  
+  ::abort();
+
+}
+
+void EvtBaryonPCRFF::gettensorff(EvtId, EvtId, double, double, double*, double*,
+                                double*, double*) {
+
+  report(ERROR,"EvtGen") << "Not implemented :gettensorff in EvtBaryonPCRFF.\n";  
+  ::abort();
+
+}
+
+void EvtBaryonPCRFF::getbaryonff(EvtId, EvtId, double, double, double*, 
+                                double*, double*, double*){
+  
+  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBaryonPCRFF.\n";  
+  ::abort();
+
+}
diff --git a/TEvtGen/EvtGenModels/EvtBaryonPCRFF.hh b/TEvtGen/EvtGenModels/EvtBaryonPCRFF.hh
new file mode 100644 (file)
index 0000000..201e17d
--- /dev/null
@@ -0,0 +1,60 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information:
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtBaryonVminusAFF.hh
+//
+// Description:Form factor routines specific to EvtBaryonVminusA
+//
+// Modification history:
+//
+//    R.J. Tesarek     May 28, 2004     Module created
+//    Karen Gibson     1/20/2006        Module updated for 1/2+->1/2+,
+//                                      1/2+->1/2-, 1/2+->3/2- Lambda decays
+//    
+//------------------------------------------------------------------------
+
+#ifndef EVTBARYONPCRFF_HH
+#define EVTBARYONPCRFF_HH
+
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+
+class EvtId;
+
+class EvtBaryonPCRFF : public EvtSemiLeptonicFF {
+
+public:
+
+  void getscalarff(EvtId parent, EvtId daught,
+                  double t, double mass, double *fpf,
+                  double *f0f );
+  void getvectorff(EvtId parent, EvtId daught,
+                  double t, double mass, double *a1f,
+                  double *a2f, double *vf, double *a0f );
+  void gettensorff(EvtId parent, EvtId daught,
+                  double t, double mass, double *hf,
+                  double *kf, double *bpf, double *bmf );
+
+  void getbaryonff(EvtId, EvtId, double, double, double*, 
+                  double*, double*, double*);
+
+  void getdiracff( EvtId parent, EvtId daught,
+                  double q2, double mass, 
+                  double *f1, double *f2, double *f3,
+                  double *g1, double *g2, double *g3 );
+
+  void getraritaff( EvtId parent, EvtId daught,
+                   double q2, double mass, 
+                   double *f1, double *f2, double *f3, double *f4,
+                   double *g1, double *g2, double *g3, double *g4 );
+};
+
+#endif
+
+
diff --git a/TEvtGen/EvtGenModels/EvtBcBsNPi.cpp b/TEvtGen/EvtGenModels/EvtBcBsNPi.cpp
new file mode 100644 (file)
index 0000000..fe6139d
--- /dev/null
@@ -0,0 +1,72 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcBsNPi.hh
+//
+// Description: Decay model for Bc -> Bs + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  July 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtSpinType.hh"
+#include "EvtGenModels/EvtBcBsNPi.hh"
+
+EvtBcBsNPi::EvtBcBsNPi() {
+
+  _beta=-0.108; _mRho=0.775; _gammaRho=0.149;
+  _mRhopr=1.364; _gammaRhopr=0.400; _mA1=1.23; _gammaA1=0.4;
+  //           Fp_N=1.3; Fp_c1=0.30; Fp_c2=0.069;
+  Fp_N=3*1.3; Fp_c1=0.30; Fp_c2=0.069;
+  Fm_N=0.0; Fm_c1=0.0; Fm_c2=0.0;
+
+}
+
+EvtBcBsNPi::~EvtBcBsNPi() {
+}
+
+std::string EvtBcBsNPi::getName() {
+
+  return "BC_BS_NPI";
+
+}
+
+EvtDecayBase* EvtBcBsNPi::clone() {
+
+  return new EvtBcBsNPi;
+
+}
+
+void EvtBcBsNPi::init() {
+
+  checkNArg(0);
+
+  // check spins
+  checkSpinParent(EvtSpinType::SCALAR);
+  checkSpinDaughter(0,EvtSpinType::SCALAR);
+  // the others are scalar
+  for (int i=1; i<=(getNDaug()-1);i++) {
+    checkSpinDaughter(i,EvtSpinType::SCALAR);
+  }
+
+}
+
+void EvtBcBsNPi::initProbMax() {
+
+  if ( getNDaug() == 2 ) {
+    setProbMax(250.);
+  } else if ( getNDaug() == 3 ) {
+    setProbMax(25000.);// checked at 30k events
+  } else if( getNDaug() == 4 ) {
+    setProbMax(45000.); // checked at 30k events
+  }
+
+}
diff --git a/TEvtGen/EvtGenModels/EvtBcBsNPi.hh b/TEvtGen/EvtGenModels/EvtBcBsNPi.hh
new file mode 100644 (file)
index 0000000..a5ff7c8
--- /dev/null
@@ -0,0 +1,40 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcBsNPi.hh
+//
+// Description: Decay model for Bc -> Bs + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  July 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EvtBcBsNpi_HH
+#define EvtBcBsNpi_HH
+
+#include "EvtGenModels/EvtBcToNPi.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+#include <string>
+
+class EvtBcBsNPi : public EvtBcToNPi {
+public:
+
+  EvtBcBsNPi();
+  virtual ~EvtBcBsNPi();
+
+  virtual void init(); 
+  virtual void initProbMax();
+  
+  virtual std::string getName();
+  virtual EvtDecayBase* clone();
+
+};
+
+#endif
diff --git a/TEvtGen/EvtGenModels/EvtBcBsStarNPi.cpp b/TEvtGen/EvtGenModels/EvtBcBsStarNPi.cpp
new file mode 100644 (file)
index 0000000..e2ba6bd
--- /dev/null
@@ -0,0 +1,76 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcBsStarNPi.hh
+//
+// Description: Decay model for Bc -> Bs* + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  April 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGenModels/EvtBcBsStarNPi.hh"
+#include "EvtGenBase/EvtSpinType.hh"
+
+EvtBcBsStarNPi::EvtBcBsStarNPi() {
+
+  _beta=-0.108; _mRho=0.775; _gammaRho=0.149;
+  _mRhopr=1.364; _gammaRhopr=0.400; _mA1=1.23; _gammaA1=0.4;
+
+  FA0_N=8.1; FA0_c1=0.30; FA0_c2=0.069;
+  FAm_N=0.0; FAm_c1=0.0; FAm_c2=0.0;
+  FAp_N=0.15; FAp_c1=0.30; FAp_c2=0.069;
+  FV_N= 1.08; FV_c1=0.30; FV_c2=0.069; 
+
+}
+
+EvtBcBsStarNPi::~EvtBcBsStarNPi() {
+
+}
+
+std::string EvtBcBsStarNPi::getName() {
+
+  return "BC_BSSTAR_NPI";
+
+}
+
+EvtDecayBase* EvtBcBsStarNPi::clone() {
+
+  return new EvtBcBsStarNPi;
+
+}
+
+void EvtBcBsStarNPi::init() {
+
+  checkNArg(0);
+
+  // check spins
+  checkSpinParent(EvtSpinType::SCALAR);
+  checkSpinDaughter(0,EvtSpinType::VECTOR);
+  // the others are scalar
+  for (int i=1; i<=(getNDaug()-1);i++) {
+    checkSpinDaughter(i,EvtSpinType::SCALAR);
+  }
+
+}
+
+void EvtBcBsStarNPi::initProbMax() {
+
+  if ( getNDaug() == 2 ) {
+    setProbMax(100.);
+  } else if( getNDaug() == 3 ) {
+    setProbMax(40000.);
+  } else if( getNDaug() == 4 ) {
+    setProbMax(620.);  // checked, 30k events
+  }
+
+}
diff --git a/TEvtGen/EvtGenModels/EvtBcBsStarNPi.hh b/TEvtGen/EvtGenModels/EvtBcBsStarNPi.hh
new file mode 100644 (file)
index 0000000..e5d8aa5
--- /dev/null
@@ -0,0 +1,43 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcBsStarNPi.hh
+//
+// Description: Decay model for Bc -> Bs* + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  April 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EvtBcBsStarNpi_HH
+#define EvtBcBsStarNpi_HH
+
+#include "EvtGenModels/EvtBcToNPi.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+
+#include <string>
+
+class EvtBcBsStarNPi : public EvtBcToNPi {
+public:
+
+  EvtBcBsStarNPi();
+
+  virtual ~EvtBcBsStarNPi();
+
+  virtual void init();
+  
+  virtual void initProbMax();
+       
+  virtual std::string getName();
+  virtual EvtDecayBase* clone();
+
+};
+
+#endif
diff --git a/TEvtGen/EvtGenModels/EvtBcPsiNPi.cpp b/TEvtGen/EvtGenModels/EvtBcPsiNPi.cpp
new file mode 100644 (file)
index 0000000..1d389cb
--- /dev/null
@@ -0,0 +1,76 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcBsNPi.hh
+//
+// Description: Decay model for Bc -> J/psi + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  April 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenModels/EvtBcPsiNPi.hh"
+#include "EvtGenBase/EvtSpinType.hh"
+
+EvtBcPsiNPi::EvtBcPsiNPi() {
+
+  _beta=-0.108; _mRho=0.775; _gammaRho=0.149;
+  _mRhopr=1.364; _gammaRhopr=0.400; _mA1=1.23; _gammaA1=0.4;
+
+  FA0_N=5.9; FA0_c1= 0.049; FA0_c2= 0.0015;
+  FAm_N=0.0; FAm_c1=0.0; FAm_c2=0.0;
+  FAp_N=-0.074; FAp_c1= 0.049; FAp_c2= 0.0015;
+  FV_N=0.11; FV_c1= 0.049; FV_c2= 0.0015; 
+
+}
+
+EvtBcPsiNPi::~EvtBcPsiNPi() {
+
+}
+
+std::string EvtBcPsiNPi::getName() {
+
+  return "BC_PSI_NPI";
+
+}
+
+EvtDecayBase* EvtBcPsiNPi::clone() {
+
+  return new EvtBcPsiNPi;
+
+}
+
+void EvtBcPsiNPi::init() {
+
+  checkNArg(0);
+
+  // check spins
+  checkSpinParent(EvtSpinType::SCALAR);
+  checkSpinDaughter(0,EvtSpinType::VECTOR);
+  // the others are scalar
+  for (int i=1; i<=(getNDaug()-1);i++) {
+    checkSpinDaughter(i,EvtSpinType::SCALAR);
+  }
+
+}
+
+void EvtBcPsiNPi::initProbMax() {
+
+  setProbMax(100.);
+  if( getNDaug() == 2 ) {
+    setProbMax(330.);
+  } else if( getNDaug() == 3 ) {
+    setProbMax(11000.); // checked with 30k events
+  } else if( getNDaug() == 4 ) {
+    setProbMax(36000.);
+  }
+
+}
diff --git a/TEvtGen/EvtGenModels/EvtBcPsiNPi.hh b/TEvtGen/EvtGenModels/EvtBcPsiNPi.hh
new file mode 100644 (file)
index 0000000..85bb01b
--- /dev/null
@@ -0,0 +1,43 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcBsNPi.hh
+//
+// Description: Decay model for Bc -> J/psi + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  April 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EvtBcPsiNpi_HH
+#define EvtBcPsiNpi_HH
+
+#include "EvtGenModels/EvtBcToNPi.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+
+#include <string>
+
+class EvtBcPsiNPi : public EvtBcToNPi {
+
+public:
+
+  EvtBcPsiNPi();
+
+  virtual ~EvtBcPsiNPi();
+
+  virtual void init();
+  virtual void initProbMax();
+       
+  virtual std::string getName();
+  virtual EvtDecayBase* clone();
+
+};
+
+#endif
diff --git a/TEvtGen/EvtGenModels/EvtBcToNPi.cpp b/TEvtGen/EvtGenModels/EvtBcToNPi.cpp
new file mode 100644 (file)
index 0000000..027b30f
--- /dev/null
@@ -0,0 +1,339 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcToNPi.hh
+//
+// Description: General decay model for Bc -> V + npi and Bc -> P + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  April 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+#include "EvtGenBase/EvtIdSet.hh"
+#include "EvtGenBase/EvtSpinType.hh"
+#include "EvtGenBase/EvtScalarParticle.hh"
+
+#include "EvtGenModels/EvtBcToNPi.hh"
+
+#include <iostream>
+using std::endl;
+
+EvtBcToNPi::EvtBcToNPi(bool printAuthorInfo) {
+  nCall=0; maxAmp2=0;
+  if (printAuthorInfo == true) {this->printAuthorInfo();}
+}
+
+EvtBcToNPi::~EvtBcToNPi() { 
+}
+
+std::string EvtBcToNPi::getName(){
+
+  return "EvtBcToNPi";     
+
+}
+
+EvtDecayBase* EvtBcToNPi::clone(){
+
+  return new EvtBcToNPi;
+
+}
+
+
+void EvtBcToNPi::init(){
+
+       // check spins
+       checkSpinParent(EvtSpinType::SCALAR);
+
+
+       // the others are scalar
+       for (int i=1; i<=(getNDaug()-1);i++) {
+               checkSpinDaughter(i,EvtSpinType::SCALAR);
+       };
+
+       _beta=-0.108; _mRho=0.775; _gammaRho=0.149;
+       _mRhopr=1.364; _gammaRhopr=0.400; _mA1=1.23; _gammaA1=0.4;
+
+       // read arguments
+       if( EvtPDL::getSpinType(getDaug(0)) == EvtSpinType::VECTOR) {
+               checkNArg(10);
+               int n=0;
+               _maxProb=getArg(n++);
+               FA0_N=getArg(n++);
+               FA0_c1=getArg(n++);
+               FA0_c2=getArg(n++);
+               FAp_N=getArg(n++);
+               FAp_c1=getArg(n++);
+               FAp_c2=getArg(n++);
+               FV_N=getArg(n++);
+               FV_c1=getArg(n++);
+               FV_c2=getArg(n++);
+               FAm_N=0;
+               FAm_c1=0;
+               FAm_c2=0;
+       }
+       else if( EvtPDL::getSpinType(getDaug(0)) == EvtSpinType::SCALAR) {
+               checkNArg(4);
+               int n=0;
+               _maxProb=getArg(n++);
+               Fp_N=getArg(n++);
+               Fp_c1=getArg(n++);
+               Fp_c2=getArg(n++);
+               Fm_N=0;
+               Fm_c1=0;
+               Fm_c2=0;
+       }
+       else {
+               report(ERROR,"EvtGen") << "Have not yet implemented this final state in BCPSINPI model" << endl;
+               report(ERROR,"EvtGen") << "Ndaug="<<getNDaug() << endl;
+               for ( int id=0; id<(getNDaug()-1); id++ ) 
+                       report(ERROR,"EvtGen") << "Daug " << id << " "<<EvtPDL::name(getDaug(id)).c_str() << endl;
+               return;
+
+       };
+
+       if(getNDaug()<2 || getNDaug()>4) {
+               report(ERROR,"EvtGen") << "Have not yet implemented this final state in BCPSINPI model" << endl;
+               report(ERROR,"EvtGen") << "Ndaug="<<getNDaug() << endl;
+               for ( int id=0; id<(getNDaug()-1); id++ ) 
+                       report(ERROR,"EvtGen") << "Daug " << id << " "<<EvtPDL::name(getDaug(id)).c_str() << endl;
+               return;
+       }
+
+}
+
+double EvtBcToNPi::_ee(double M, double m1, double m2) {
+        return (M*M+m1*m1-m2*m2)/(2*M);
+};
+
+double EvtBcToNPi::_pp(double M, double m1, double m2) {
+        double __ee=_ee(M,m1,m2);
+        return sqrt(__ee*__ee-m1*m1);
+};
+
+
+void EvtBcToNPi::initProbMax(){
+       if(_maxProb>0.) setProbMax(_maxProb);
+       else {
+                EvtId id=getParentId();
+                EvtScalarParticle *p=new EvtScalarParticle();
+                p->init(id, EvtPDL::getMass(id),0., 0., 0.);
+                p->setDiagonalSpinDensity();
+                // add daughters
+                p->makeDaughters(getNDaug(), getDaugs() );
+
+                // fill the momenta
+                if(getNDaug()==2) {
+                        double M=EvtPDL::getMass(id), m1=EvtPDL::getMass(getDaug(0)), m2=EvtPDL::getMass(getDaug(1));
+                        double __pp=_pp(M,m1,m2);
+                        p->getDaug(0)->setP4( EvtVector4R( _ee(M,m1,m2), 0., 0., __pp) );
+                        p->getDaug(1)->setP4( EvtVector4R( _ee(M,m2,m1), 0., 0., -__pp) );
+                }
+                else if( getNDaug()==3) {
+                        double M=EvtPDL::getMass(id), 
+                                m1=EvtPDL::getMass(getDaug(0)), 
+                                m2=EvtPDL::getMass(getDaug(1)),
+                                m3=EvtPDL::getMass(getDaug(2));
+                        double __ppRho=_pp(M,m1,_mRho), __ppPi=_pp(_mRho,m2,m3);
+                        p->getDaug(0)->setP4( EvtVector4R( _ee(M,m1,_mRho), 0., 0., __ppRho) );
+                        EvtVector4R _pRho( _ee(M,_mRho,m1), 0., 0., -__ppRho);
+                        EvtVector4R _p2( _ee(_mRho, m2, m3), 0., 0., __ppPi); _p2.applyBoostTo(_pRho);
+                        EvtVector4R _p3( _ee(_mRho, m2, m3), 0., 0., -__ppPi); _p3.applyBoostTo(_pRho);
+                        p->getDaug(1)->setP4(_p2);
+                        p->getDaug(2)->setP4(_p3);
+
+                }
+                else if( getNDaug()==4) {
+                        double M=EvtPDL::getMass(id), 
+                                m1=EvtPDL::getMass(getDaug(0)), 
+                                m2=EvtPDL::getMass(getDaug(1)),
+                                m3=EvtPDL::getMass(getDaug(2)),
+                                m4=EvtPDL::getMass(getDaug(3));
+                        if(M<m1+_mA1) return;
+                        double   __ppA1=_pp(M,m1,_mA1),
+                                 __ppRho=_pp(_mA1,_mRho,m4),
+                                 __ppPi=_pp(_mRho, m2, m3);
+                        p->getDaug(0)->setP4( EvtVector4R( _ee(M,m1,_mRho), 0., 0., __ppA1) );
+                        EvtVector4R _pA1( _ee(M,_mA1,m1), 0., 0., -__ppA1);
+                        EvtVector4R _pRho(_ee(_mA1, _mRho, m4), 0, 0, __ppRho);
+                        _pRho.applyBoostTo(_pA1);
+                        EvtVector4R _p4( _ee(_mA1, m4, _mRho), 0, 0, -__ppRho); _p4.applyBoostTo(_pA1);
+                        p->getDaug(3)->setP4(_p4);
+                        EvtVector4R _p2( _ee(_mRho, m2, m3), 0, 0, __ppPi); _p2.applyBoostTo(_pRho);
+                        p->getDaug(1)->setP4(_p2);
+                        EvtVector4R _p3( _ee(_mRho, m2, m3), 0, 0, -__ppPi); _p2.applyBoostTo(_pRho);
+                        p->getDaug(2)->setP4(_p3);
+                };
+
+
+                _amp2.init(p->getId(),getNDaug(),getDaugs());
+
+               decay(p);       
+
+                EvtSpinDensity rho=_amp2.getSpinDensity();
+
+                double prob=p->getSpinDensityForward().normalizedProb(rho);
+
+                if(prob>0) setProbMax(0.9*prob);
+
+
+       };
+}
+
+void EvtBcToNPi::decay( EvtParticle *root_particle ){
+       ++nCall;
+
+       EvtIdSet thePis("pi+","pi-","pi0");
+       EvtComplex I=EvtComplex(0.0, 1.0);
+
+
+       root_particle->initializePhaseSpace(getNDaug(),getDaugs());
+
+       EvtVector4R
+               p(root_particle->mass(), 0., 0., 0.),                  // Bc momentum
+               k=root_particle->getDaug(0)->getP4(),                      // J/psi momenta
+               Q=p-k;
+       
+       double Q2=Q.mass2();
+
+
+// check pi-mesons and calculate hadronic current
+       EvtVector4C hardCur;
+       bool foundHadCurr=false;
+
+       if ( getNDaug() == 2 ) // Bc -> psi pi+
+       {
+               hardCur=Q;
+               foundHadCurr=true;
+       }
+       else if ( getNDaug() == 3 ) // Bc -> psi pi+ pi0
+       {
+               EvtVector4R p1,p2;
+               p1=root_particle->getDaug(1)->getP4(),     // pi+ momenta
+               p2=root_particle->getDaug(2)->getP4(),    // pi0 momentum
+               hardCur=Fpi(p1,p2)*(p1-p2);
+               foundHadCurr=true;
+       }
+       else if( getNDaug()==4 ) // Bc -> psi pi+ pi pi
+       {
+               int diffPi(0),samePi1(0),samePi2(0);
+               if ( getDaug( 1) == getDaug( 2) ) {diffPi= 3; samePi1= 1; samePi2= 2;}
+               if ( getDaug( 1) == getDaug( 3) ) {diffPi= 2; samePi1= 1; samePi2= 3;}
+               if ( getDaug( 2) == getDaug( 3) ) {diffPi= 1; samePi1= 2; samePi2= 3;}
+
+               EvtVector4R p1=root_particle->getDaug(samePi1)->getP4();
+               EvtVector4R p2=root_particle->getDaug(samePi2)->getP4();
+               EvtVector4R p3=root_particle->getDaug(diffPi)->getP4();
+               
+               EvtComplex BA1;
+               double GA1=_gammaA1*pi3G(Q2,samePi1)/pi3G(_mA1*_mA1,samePi1);
+               EvtComplex denBA1(_mA1*_mA1 - Q.mass2(),-1.*_mA1*GA1);
+               BA1 = _mA1*_mA1 / denBA1;
+
+               hardCur = BA1*( (p1-p3) - (Q*(Q*(p1-p3))/Q2)*Fpi(p2,p3) +
+                               (p2-p3) - (Q*(Q*(p2-p3))/Q2)*Fpi(p1,p3) ); 
+               foundHadCurr=true;
+       }
+
+       if ( !foundHadCurr ) {
+               report(ERROR,"EvtGen") << "Have not yet implemented this final state in BCNPI model" << endl;
+               report(ERROR,"EvtGen") << "Ndaug="<<getNDaug() << endl;
+               int id;
+               for ( id=0; id<(getNDaug()-1); id++ ) 
+               report(ERROR,"EvtGen") << "Daug " << id << " "<<EvtPDL::name(getDaug(id)).c_str() << endl;
+               ::abort();
+       };
+
+       EvtTensor4C H;
+       double amp2=0.;
+       if( root_particle->getDaug(0)->getSpinType() == EvtSpinType::VECTOR) {
+               double FA0=FA0_N*exp(FA0_c1*Q2 + FA0_c2*Q2*Q2);
+               double FAp=FAp_N*exp(FAp_c1*Q2 + FAp_c2*Q2*Q2);
+               double FAm=FAm_N*exp(FAm_c1*Q2 + FAm_c2*Q2*Q2);
+               double FV= FV_N* exp( FV_c1*Q2 + FV_c2*Q2*Q2 );
+               H=-FA0*EvtTensor4C::g()
+                       -FAp*EvtGenFunctions::directProd(p,p+k)
+                       +FAm*EvtGenFunctions::directProd(p,p-k)
+                       +2*I*FV*dual(EvtGenFunctions::directProd(p,k));
+               EvtVector4C  Heps=H.cont2(hardCur);
+
+               for(int i=0; i<4; i++) {
+                       EvtVector4C  eps=root_particle->getDaug(0)->epsParent(i).conj(); // psi-meson polarization vector
+                       EvtComplex amp=eps*Heps;
+                       vertex(i,amp);
+                       amp2+=pow( abs(amp),2);
+               }
+       }
+       else if( root_particle->getDaug(0)->getSpinType() == EvtSpinType::SCALAR) {
+               double Fp=Fp_N*exp(Fp_c1*Q2 + Fp_c2*Q2*Q2);
+               double Fm=Fm_N*exp(Fm_c1*Q2 + Fm_c2*Q2*Q2);
+               EvtVector4C H=Fp*(p+k)+Fm*(p-k);
+               EvtComplex amp=H*hardCur;
+               vertex(amp);
+               amp2+=pow( abs(amp),2);
+       };
+       if(amp2>maxAmp2) maxAmp2=amp2;
+
+  return ;
+}
+
+EvtComplex EvtBcToNPi::Fpi( EvtVector4R q1, EvtVector4R q2) {
+       double m1=q1.mass();
+       double m2=q2.mass();
+       
+       EvtVector4R Q = q1 + q2;
+       double mQ2= Q*Q;
+       
+       // momenta in the rho->pipi decay
+       double dRho= _mRho*_mRho - m1*m1 - m2*m2;
+       double pPiRho = (1.0/_mRho)*sqrt((dRho*dRho)/4.0 - m1*m1*m2*m2);
+       
+       double dRhopr= _mRhopr*_mRhopr - m1*m1 - m2*m2;
+       double pPiRhopr = (1.0/_mRhopr)*sqrt((dRhopr*dRhopr)/4.0 - m1*m1*m2*m2);
+       
+       double dQ= mQ2 - m1*m1 - m2*m2;
+       double pPiQ = (1.0/sqrt(mQ2))*sqrt((dQ*dQ)/4.0 - m1*m1*m2*m2);
+       
+       
+       double gammaRho = _gammaRho*_mRho/sqrt(mQ2)*pow((pPiQ/pPiRho),3);
+       EvtComplex BRhoDem(_mRho*_mRho - mQ2,-1.0*_mRho*gammaRho);
+       EvtComplex BRho= _mRho*_mRho / BRhoDem;
+       
+       double gammaRhopr = _gammaRhopr*_mRhopr/sqrt(mQ2)*pow((pPiQ/pPiRhopr),3);
+       EvtComplex BRhoprDem(_mRhopr*_mRhopr - mQ2,-1.0*_mRho*gammaRhopr);
+       EvtComplex BRhopr= _mRhopr*_mRhopr / BRhoprDem;
+       
+       return (BRho + _beta*BRhopr)/(1+_beta);
+}
+
+double EvtBcToNPi::pi3G(double m2,int dupD) {
+       double mPi= EvtPDL::getMeanMass(getDaug(dupD));
+       if ( m2 > (_mRho+mPi) ) {
+       return m2*(1.623 + 10.38/m2 - 9.32/(m2*m2) + 0.65/(m2*m2*m2));
+       }
+       else {
+       double t1=m2-9.0*mPi*mPi;
+       return 4.1*pow(t1,3.0)*(1.0 - 3.3*t1+5.8*t1*t1);
+       }
+}
+
+void EvtBcToNPi::printAuthorInfo() {
+  
+  report(INFO,"EvtGen")<<"Defining EvtBcToNPi model: Bc -> V + npi and Bc -> P + npi decays\n"
+                      <<"from A.V. Berezhnoy, A.K. Likhoded, A.V. Luchinsky: "
+                      <<"Phys.Rev.D 82, 014012 (2010) and arXiV:1104.0808."<<endl;
+
+}
+
diff --git a/TEvtGen/EvtGenModels/EvtBcToNPi.hh b/TEvtGen/EvtGenModels/EvtBcToNPi.hh
new file mode 100644 (file)
index 0000000..9d0a1ad
--- /dev/null
@@ -0,0 +1,83 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Module: EvtGenModels/EvtBcToNPi.hh
+//
+// Description: General decay model for Bc -> V + npi and Bc -> P + npi
+//
+// Modification history:
+//
+//    A.Berezhnoy, A.Likhoded, A.Luchinsky  April 2011   Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EvtBcToNPi_HH
+#define EvtBcToNPi_HH
+
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtDecayBase.hh"
+#include "EvtGenBase/EvtComplex.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+
+#include <string>
+
+class EvtBcToNPi: public EvtDecayAmp {
+
+public:
+  
+  EvtBcToNPi(bool printAuthorInfo = false);
+  virtual ~EvtBcToNPi();
+
+  std::string getName();
+
+  EvtDecayBase* clone();
+
+  void initProbMax();
+
+  void init();
+
+  void decay(EvtParticle *p); 
+
+protected:
+  
+  int nCall;
+  double maxAmp2;
+
+  // Bc form factors
+  double _maxProb;
+  double FA0_N, FA0_c1, FA0_c2;
+  double FAm_N, FAm_c1, FAm_c2;
+  double FAp_N, FAp_c1, FAp_c2;
+  double FV_N, FV_c1, FV_c2;
+  
+  double Fp_N, Fp_c1, Fp_c2;
+  double Fm_N, Fm_c1, Fm_c2;
+  
+  // W -> pi... form factors
+  double _beta;
+  double  _mRho;
+  double  _gammaRho;
+  double  _mRhopr;
+  double  _gammaRhopr;
+  double _mA1;
+  double _gammaA1;
+
+  double _ee(double M, double m1, double m2);
+  double _pp(double M, double m1, double m2);
+  EvtComplex Fpi( EvtVector4R q1, EvtVector4R q2);
+  double pi3G(double m2,int dupD);
+
+private:
+
+  void printAuthorInfo();
+
+};
+
+#endif
+
diff --git a/TEvtGen/EvtGenModels/EvtBcVMuNu.cpp b/TEvtGen/EvtGenModels/EvtBcVMuNu.cpp
new file mode 100755 (executable)
index 0000000..c26edf9
--- /dev/null
@@ -0,0 +1,97 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtBcVMuNu.cc
+//
+// Description: Routine to implement semileptonic B->psi lnu decays 
+//
+// Modification history:
+//
+//    AVL     July 6, 2012        Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
+#include <string>
+#include <iostream>
+
+#include "EvtGenModels/EvtBcVMuNu.hh"
+#include "EvtGenModels/EvtBCVFF.hh"
+
+using namespace std;
+
+EvtBcVMuNu::~EvtBcVMuNu() {
+//   cout<<"EvtBcVMuNu::destructor getProbMax(-1) = "<<getProbMax(-1)<<endl;
+}
+
+std::string EvtBcVMuNu::getName(){
+  return "BC_VMN";     
+}
+
+
+EvtDecayBase* EvtBcVMuNu::clone(){
+//   cout<<" === EvtBcVMuNu::clone() ============"<<endl;
+  return new EvtBcVMuNu;
+
+}
+
+void EvtBcVMuNu::decay( EvtParticle *p ){
+//  cout<<" === EvtBcVMuNu::decay() ============"<<endl;
+
+  p->initializePhaseSpace(getNDaug(),getDaugs());
+  calcamp->CalcAmp(p,_amp2,ffmodel);
+//  cout<<"EvtBcVMuNu::decay() getProbMax(-1) = "<<getProbMax(-1)<<endl;
+}
+
+
+void EvtBcVMuNu::init(){
+//   cout<<" === EvtBcVMuNu::init() ============"<<endl;
+  
+  checkNArg(1);
+  checkNDaug(3);
+
+  //We expect the parent to be a scalar 
+  //and the daughters to be X lepton neutrino
+
+  checkSpinParent(EvtSpinType::SCALAR);
+
+  checkSpinDaughter(0,EvtSpinType::VECTOR);
+  checkSpinDaughter(1,EvtSpinType::DIRAC);
+  checkSpinDaughter(2,EvtSpinType::NEUTRINO);
+
+    idVector = getDaug(0).getId();
+    whichfit = int(getArg(0)+0.1);
+    cout<<"EvtBcVMuNu: whichfit ="<<whichfit<<"  idVector="<<idVector<<endl;
+    ffmodel = new EvtBCVFF(idVector,whichfit);
+
+  calcamp = new EvtSemiLeptonicVectorAmp; 
+}
+
+void EvtBcVMuNu::initProbMax() {
+//  cout<<" === EvtBcVMuNu::initProbMax() ============"<<endl;
+          if(whichfit==0) setProbMax(1700.);
+         else if(idVector == EvtPDL::getId("J/psi").getId() && whichfit == 1) setProbMax(40000.);
+         else if(idVector == EvtPDL::getId("J/psi").getId() && whichfit == 2) setProbMax(15000.);
+         else if(idVector == EvtPDL::getId("psi(2S)").getId() && whichfit == 1) setProbMax(700.);
+         else if(idVector == EvtPDL::getId("psi(2S)").getId() && whichfit == 2) setProbMax(300.);
+         else {
+           cout<<"EvtBcVMuNu: Not realized yet"<<endl;
+           ::abort();
+         };
+};
+
diff --git a/TEvtGen/EvtGenModels/EvtBcVMuNu.hh b/TEvtGen/EvtGenModels/EvtBcVMuNu.hh
new file mode 100755 (executable)
index 0000000..8dd18eb
--- /dev/null
@@ -0,0 +1,57 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtBcVMuNu.hh
+//
+// Description:Implementation of the model for semileptonic Bc decays
+//
+// Modification history:
+//
+//    DJL     April 20, 1998         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTBcVMuNu_HH
+#define EVTBcVMuNu_HH
+
+#include <fstream>
+#include <stdio.h>
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
+
+class EvtParticle;
+
+class EvtBcVMuNu: public EvtDecayAmp {
+
+public:
+
+  EvtBcVMuNu() {}
+  virtual ~EvtBcVMuNu();
+
+  std::string getName();
+  EvtDecayBase* clone();
+
+  void decay(EvtParticle *p);
+  void init();
+
+  virtual void initProbMax();
+
+
+private:
+  EvtSemiLeptonicFF *ffmodel;
+  EvtSemiLeptonicAmp *calcamp;
+  int whichfit;
+  int idVector;
+};
+
+#endif
+
diff --git a/TEvtGen/EvtGenModels/EvtBcVNpi.cpp b/TEvtGen/EvtGenModels/EvtBcVNpi.cpp
new file mode 100644 (file)
index 0000000..c79ed3d
--- /dev/null
@@ -0,0 +1,183 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtBcVNpi.cc
+//
+// Description: Module to implement Bc -> psi + (n pi) decays
+//
+// Modification history:
+//
+//    AVL     July 6, 2012        Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenModels/EvtTauHadnu.hh"
+#include "EvtGenBase/EvtDiracSpinor.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+#include "EvtGenBase/EvtIdSet.hh"
+#include "EvtGenBase/EvtParser.hh"
+
+#include "EvtGenModels/EvtBcVNpi.hh"
+#include "EvtGenModels/EvtWnPi.hh"
+
+
+
+EvtBcVNpi::~EvtBcVNpi() {
+//   cout<<"BcVNpi::destructor : nCall = "<<nCall<<" getProbMax(-1) = "<<getProbMax(-1)<<endl;
+  
+}
+
+std::string EvtBcVNpi::getName(){ return "BC_VNPI";}
+
+EvtDecayBase* EvtBcVNpi::clone() {  return new EvtBcVNpi;}
+
+//======================================================
+void EvtBcVNpi::init(){
+    //cout<<"BcVNpi::init()"<<endl;
+    
+    checkNArg(1);
+    checkSpinParent(EvtSpinType::SCALAR);
+    checkSpinDaughter(0,EvtSpinType::VECTOR);
+    for (int i=1; i<=(getNDaug()-1);i++) {
+      checkSpinDaughter(i,EvtSpinType::SCALAR);
+    };
+
+    if(getNDaug()<2 || getNDaug()>6) {
+      report(ERROR,"EvtGen") << "Have not yet implemented this final state in BcVNpi model" << endl;
+      report(ERROR,"EvtGen") << "Ndaug="<<getNDaug() << endl;
+      for ( int id=0; id<(getNDaug()-1); id++ ) 
+       report(ERROR,"EvtGen") << "Daug " << id << " "<<EvtPDL::name(getDaug(id)).c_str() << endl;
+      return;
+    }
+
+  
+//     for(int i=0; i<getNDaug(); i++)
+//       cout<<"BcVNpi::init \t\t daughter "<<i<<" : "<<getDaug(i).getId()<<"   "<<EvtPDL::name(getDaug(i)).c_str()<<endl;
+
+   idVector = getDaug(0).getId();
+    whichfit = int(getArg(0)+0.1);
+//     cout<<"BcVNpi: whichfit ="<<whichfit<<"  idVector="<<idVector<<endl;
+    ffmodel = new EvtBCVFF(idVector,whichfit);
+    
+    wcurr = new EvtWnPi();
+    
+    nCall = 0;
+}
+
+//======================================================
+void EvtBcVNpi::initProbMax() {
+//     cout<<"BcVNpi::initProbMax()"<<endl;
+    if(idVector == EvtPDL::getId("J/psi").getId() && whichfit == 1 && getNDaug()==6) setProbMax(720000.);
+    else if(idVector == EvtPDL::getId("J/psi").getId() && whichfit == 2 && getNDaug()==6) setProbMax(471817.);
+    else if(idVector == EvtPDL::getId("J/psi").getId() && whichfit == 1 && getNDaug()==4) setProbMax(42000.);
+    else if(idVector == EvtPDL::getId("J/psi").getId() && whichfit == 2 && getNDaug()==4) setProbMax(16000.);
+    
+    else if(idVector == EvtPDL::getId("psi(2S)").getId() && whichfit == 1 && getNDaug()==4) setProbMax(1200.);
+    else if(idVector == EvtPDL::getId("psi(2S)").getId() && whichfit == 2 && getNDaug()==4) setProbMax(2600.);
+    else if(idVector == EvtPDL::getId("psi(2S)").getId() && whichfit == 1 && getNDaug()==6) setProbMax(40000.);
+    else if(idVector == EvtPDL::getId("psi(2S)").getId() && whichfit == 2 && getNDaug()==6) setProbMax(30000.);
+}
+
+//======================================================
+void EvtBcVNpi::decay( EvtParticle *root_particle ) {
+   ++nCall;
+//     cout<<"BcVNpi::decay()"<<endl;
+    root_particle->initializePhaseSpace(getNDaug(),getDaugs());
+
+    EvtVector4R
+           p4b(root_particle->mass(), 0., 0., 0.),                  // Bc momentum
+           p4meson=root_particle->getDaug(0)->getP4(),                    // J/psi momenta
+           Q=p4b-p4meson;
+    double Q2=Q.mass2();
+
+
+// check pi-mesons and calculate hadronic current
+    EvtVector4C hardCur;
+//     bool foundHadCurr=false;
+    if( getNDaug() == 2) {
+      hardCur = wcurr->WCurrent( root_particle->getDaug(1)->getP4() );
+//       foundHadCurr=true;
+    }
+    else if( getNDaug() == 3) {
+      hardCur = wcurr->WCurrent( root_particle->getDaug(1)->getP4() , 
+                                root_particle->getDaug(2)->getP4() 
+                              );
+//       foundHadCurr=true;   
+    }
+    else if( getNDaug() == 4) {
+      hardCur = wcurr->WCurrent( root_particle->getDaug(1)->getP4() , 
+                                root_particle->getDaug(2)->getP4(), 
+                                root_particle->getDaug(3)->getP4() 
+                              );
+//       foundHadCurr=true;         
+    }
+    else if( getNDaug() == 6) // Bc -> psi pi+ pi+ pi- pi- pi+ from [Kuhn, Was, hep-ph/0602162
+    {
+
+               hardCur = wcurr->WCurrent(root_particle->getDaug(1)->getP4(),
+                                         root_particle->getDaug(2)->getP4(),
+                                         root_particle->getDaug(3)->getP4(),
+                                         root_particle->getDaug(4)->getP4(),
+                                         root_particle->getDaug(5)->getP4()
+                                );
+//             foundHadCurr=true;
+    }  
+    else {
+           report(ERROR,"EvtGen") << "Have not yet implemented this final state in BCNPI model" << endl;
+           report(ERROR,"EvtGen") << "Ndaug="<<getNDaug() << endl;
+           int id;
+           for ( id=0; id<(getNDaug()-1); id++ ) 
+           report(ERROR,"EvtGen") << "Daug " << id << " "<<EvtPDL::name(getDaug(id)).c_str() << endl;
+           ::abort();
+    };  
+
+// calculate Bc -> V W form-factors
+       double a1f, a2f, vf, a0f;
+       double m_meson = root_particle->getDaug(0)->mass();
+       double m_b = root_particle->mass();
+       ffmodel->getvectorff(root_particle->getId(),
+                               root_particle->getDaug(0)->getId(),
+                               Q2,
+                               m_meson,
+                               &a1f, 
+                               &a2f, 
+                               &vf, 
+                               &a0f);
+       double a3f = ((m_b+m_meson)/(2.0*m_meson))*a1f -
+             ((m_b-m_meson)/(2.0*m_meson))*a2f;
+
+// calculate Bc -> V W current
+       EvtTensor4C H;
+       H = a1f*(m_b+m_meson)*EvtTensor4C::g();
+       H.addDirProd((-a2f/(m_b+m_meson))*p4b,p4b+p4meson);
+       H+=EvtComplex(0.0,vf/(m_b+m_meson))*dual(EvtGenFunctions::directProd(p4meson+p4b,p4b-p4meson));
+       H.addDirProd((a0f-a3f)*2.0*(m_meson/Q2)*p4b,p4b-p4meson);
+       EvtVector4C  Heps=H.cont2(hardCur);
+       
+       for(int i=0; i<4; i++) {
+               EvtVector4C  eps=root_particle->getDaug(0)->epsParent(i).conj(); // psi-meson polarization vector
+               EvtComplex amp=eps*Heps;
+               vertex(i,amp);
+       };
+
+}
+
diff --git a/TEvtGen/EvtGenModels/EvtBcVNpi.hh b/TEvtGen/EvtGenModels/EvtBcVNpi.hh
new file mode 100644 (file)
index 0000000..2611a48
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef EvtBcVNpi_HH
+#define EvtBcVNpi_HH
+
+#include <iostream>
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtScalarParticle.hh"
+#include "EvtGenModels/EvtBCVFF.hh"
+
+#include "EvtGenModels/EvtWnPi.hh"
+
+
+using std::endl;
+using std::fstream;
+using std::ifstream;
+using std::cout;
+using std::string;
+
+class EvtBcVNpi:public  EvtDecayAmp  {
+public:
+    EvtBcVNpi() {  };
+    virtual ~EvtBcVNpi();
+    std::string getName();
+    EvtDecayBase* clone();
+    void initProbMax();
+    void init();
+    void decay(EvtParticle *p); 
+protected:
+  int nCall;
+  int whichfit, idVector;
+  EvtBCVFF *ffmodel;
+  EvtWnPi *wcurr;
+
+  EvtComplex Fpi( EvtVector4R q1, EvtVector4R q2);
+  EvtComplex BWa( EvtVector4R q);
+  EvtComplex BWf( EvtVector4R q);
+  EvtComplex BWr( EvtVector4R q);
+  EvtVector4C JB(EvtVector4R q1, EvtVector4R q2, EvtVector4R q3, EvtVector4R q4, EvtVector4R q5); 
+
+};
+#endif
+
similarity index 82%
rename from TEvtGen/EvtGenModels/EvtBto2piCPiso.cxx
rename to TEvtGen/EvtGenModels/EvtBto2piCPiso.cpp
index ca35e12ee7d472ec39c20a44ef0dc92de0615e00..04bac32812b50d99f6922beb80877d183afc1647 100644 (file)
@@ -48,9 +48,9 @@ EvtDecayBase* EvtBto2piCPiso::clone(){
 
 void EvtBto2piCPiso::init(){
 
-  // check that there are 11 arguments
+  // check that there are 10 arguments
 
-  checkNArg(11);
+  checkNArg(10);
   checkNDaug(2);
 
   checkSpinParent(EvtSpinType::SCALAR);
@@ -108,13 +108,13 @@ void EvtBto2piCPiso::decay( EvtParticle *p ){
   double tag = EvtRandom::Flat(0.0,1.0);
   if (tag < 0.5) {
 
-   EvtCPUtil::OtherB(p,t,other_b,1.0);
-   other_b = B0;
+    EvtCPUtil::getInstance()->OtherB(p,t,other_b,1.0);
+    other_b = B0;
   }
   else {
    
-   EvtCPUtil::OtherB(p,t,other_b,0.0);
-   other_b = B0B;
+    EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.0);
+    other_b = B0B;
   }
 
   EvtComplex amp;
@@ -187,3 +187,52 @@ void EvtBto2piCPiso::decay( EvtParticle *p ){
   return ;
 }
 
+std::string EvtBto2piCPiso::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "weakPhase";
+  case 1:
+    return "deltaM";
+  case 2:
+    return "A2";
+  case 3:
+    return "A2Phase";
+  case 4:
+    return "A2bar";
+  case 5:
+    return "A2barPhase";
+  case 6:
+    return "A0";
+  case 7:
+    return "A0Phase";
+  case 8:
+    return "A0bar";
+  case 9:
+    return "A0barPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtBto2piCPiso::getParamDefault(int i) {
+  switch(i) {
+  case 2:
+    return "1.0";
+  case 3:
+    return "0.0";
+  case 4:
+    return "1.0";
+  case 5:
+    return "0.0";
+  case 6:
+    return "1.0";
+  case 7:
+    return "0.0";
+  case 8:
+    return "1.0";
+  case 9:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 85babe9a57c065e44ef3616faeddde20e120f9fc..150a388dfd77c38d2ca512942c48d911ea8a4728 100644 (file)
@@ -39,6 +39,8 @@ public:
 
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 94%
rename from TEvtGen/EvtGenModels/EvtBtoKD3P.cxx
rename to TEvtGen/EvtGenModels/EvtBtoKD3P.cpp
index b822e037186ca73378d4f1b8f9ed7cc52259ed08..b44626329dcc210e57560632dfcf42e60b52f90e 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtBtoKD3P.cc,v 1.7 2009/02/19 03:23:29 ryd Exp $
+//      $Id: EvtBtoKD3P.cpp,v 1.2 2009-04-02 15:22:28 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
@@ -39,7 +39,8 @@ EvtBtoKD3P::EvtBtoKD3P() :
 }
 
 //------------------------------------------------------------------
-EvtBtoKD3P::EvtBtoKD3P(const EvtBtoKD3P & other){
+EvtBtoKD3P::EvtBtoKD3P(const EvtBtoKD3P & other) : 
+    EvtDecayAmp( other ){
 }
 
 //------------------------------------------------------------------
@@ -100,11 +101,11 @@ void EvtBtoKD3P::decay(EvtParticle *p){
   // Get the D daughter particle and the decay models of the allowed
   // and suppressed D modes:
   EvtParticle * theD = p->getDaug(D1IND); 
-  EvtPto3P * model1 = (EvtPto3P*)(EvtDecayTable::getDecayFunc(theD));
+  EvtPto3P * model1 = (EvtPto3P*)(EvtDecayTable::getInstance()->getDecayFunc(theD));
 
   // for the suppressed mode, re-initialize theD as the suppressed D alias:
   theD->init(getDaug(D2IND), theD->getP4());
-  EvtPto3P * model2 = (EvtPto3P*)(EvtDecayTable::getDecayFunc(theD));
+  EvtPto3P * model2 = (EvtPto3P*)(EvtDecayTable::getInstance()->getDecayFunc(theD));
 
   // on the first call: 
   if (false == _decayedOnce) {
@@ -200,7 +201,8 @@ void EvtBtoKD3P::decay(EvtParticle *p){
   vertex (amp/comp);
   
   // Make the daughters of theD:
-  theD->generateMassTree();
+  bool massTreeOK = theD->generateMassTree();
+  if (massTreeOK == false) {return;}
 
   // Now generate the p4's of the daughters of theD:
   std::vector<EvtVector4R> v = model2->initDaughters(x);  
index 98f5f68601c24e2d1aa185c698fa5fe5d1087385..a34a0b703056abaaadddbc38db14f853f5a63876 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtBtoKD3P.hh,v 1.4 2006/10/02 01:07:45 lange Exp $
+//      $Id: EvtBtoKD3P.hh,v 1.1 2009-03-16 16:49:00 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtBtoXsllUtil.cxx
rename to TEvtGen/EvtGenModels/EvtBtoXsllUtil.cpp
index ec2c0dd2516aba6b2254a4f97a4efbad8c3d6140..8cf5aa1fc6d003c94357acb1215fd0f76b3dc1a1 100644 (file)
@@ -140,27 +140,16 @@ EvtComplex EvtBtoXsllUtil::GetC7Eff1(double sh, double mbeff, bool nnlo)
 }
 
 
-EvtComplex EvtBtoXsllUtil::GetC9Eff0(double sh, double mbeff,
+EvtComplex EvtBtoXsllUtil::GetC9Eff0(double sh, double /* mbeff */,
                                      bool nnlo, bool btod) 
 {
   // This function returns the zeroth-order alpha_s part of C9
 
   if (!nnlo) return 4.344;
-  double logsh;
-  logsh = log(sh);
   double mch = 0.29;
 
-  
-  double muscale;
-  muscale = 2.5;
-  double alphas;
-  alphas = 0.267;
-  double A8;
-  A8 = -0.164;
   double A9;
   A9 = 4.287 + (-0.218);
-  double A10;
-  A10 = -4.592 + 0.379;
   double C1;
   C1 = -0.697;
   double C2;
@@ -171,10 +160,6 @@ EvtComplex EvtBtoXsllUtil::GetC9Eff0(double sh, double mbeff,
   U9 = 0.045 + 0.023;
   double W9;
   W9 = 0.044 + 0.016;
-  
-  double Lmu;
-  Lmu = log(muscale/mbeff);
-
 
   EvtComplex uniti(0.0,1.0);
 
@@ -236,16 +221,12 @@ EvtComplex EvtBtoXsllUtil::GetC9Eff0(double sh, double mbeff,
   }
 
   // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
-  muscale = 5.0;
-  alphas = 0.215;
   A9 = 4.174 + (-0.035);
   C1 = -0.487;
   C2 = 1.024;
-  A8 = -0.148;
   T9 = 0.374 + 0.252;
   U9 = 0.033 + 0.015;
   W9 = 0.032 + 0.012;
-  Lmu = log(muscale/mbeff);
 
   Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
 
diff --git a/TEvtGen/EvtGenModels/EvtD0gammaDalitz.cpp b/TEvtGen/EvtGenModels/EvtD0gammaDalitz.cpp
new file mode 100644 (file)
index 0000000..8520a72
--- /dev/null
@@ -0,0 +1,322 @@
+//--------------------------------------------------------------------------
+//
+// Module: EvtD0gammaDalitz.cc
+//
+// Modification history:
+//
+//    JGT     February 13, 2012         Module created
+//
+//------------------------------------------------------------------------
+
+#include <cstdlib>
+#include <string>
+#include <cmath>
+
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtResonance.hh"
+#include "EvtGenBase/EvtResonance2.hh"
+#include "EvtGenModels/EvtD0gammaDalitz.hh"
+#include "EvtGenBase/EvtConst.hh"
+#include "EvtGenBase/EvtFlatte.hh"
+#include "EvtGenBase/EvtDecayTable.hh"
+
+
+// Initialize the static variables.
+const EvtSpinType::spintype& EvtD0gammaDalitz::_SCALAR = EvtSpinType::SCALAR;
+const EvtSpinType::spintype& EvtD0gammaDalitz::_VECTOR = EvtSpinType::VECTOR;
+const EvtSpinType::spintype& EvtD0gammaDalitz::_TENSOR = EvtSpinType::TENSOR;
+
+const EvtDalitzReso::CouplingType& EvtD0gammaDalitz::_EtaPic   = EvtDalitzReso::EtaPic;
+const EvtDalitzReso::CouplingType& EvtD0gammaDalitz::_PicPicKK = EvtDalitzReso::PicPicKK;
+
+const EvtDalitzReso::NumType& EvtD0gammaDalitz::_RBW   = EvtDalitzReso::RBW_CLEO_ZEMACH;
+const EvtDalitzReso::NumType& EvtD0gammaDalitz::_GS    = EvtDalitzReso::GS_CLEO_ZEMACH;
+const EvtDalitzReso::NumType& EvtD0gammaDalitz::_KMAT  = EvtDalitzReso::K_MATRIX;
+
+const EvtCyclic3::Pair& EvtD0gammaDalitz::_AB = EvtCyclic3::AB;
+const EvtCyclic3::Pair& EvtD0gammaDalitz::_AC = EvtCyclic3::AC;
+const EvtCyclic3::Pair& EvtD0gammaDalitz::_BC = EvtCyclic3::BC;
+
+
+EvtD0gammaDalitz::EvtD0gammaDalitz()
+{
+  /* Empty constructor. */
+}
+
+
+EvtD0gammaDalitz::~EvtD0gammaDalitz()
+{
+  /* Empty destructor. */
+}
+
+
+std::string EvtD0gammaDalitz::getName()
+{
+  return "D0GAMMADALITZ";
+}
+
+
+EvtDecayBase* EvtD0gammaDalitz::clone()
+{
+  return new EvtD0gammaDalitz;
+}
+
+
+void EvtD0gammaDalitz::init()
+{
+  // check that there are 0 arguments
+  checkNArg(0);
+
+  // Check that this model is valid for the specified decay.
+  checkNDaug( 3 );
+  checkSpinParent  (    _SCALAR );
+  checkSpinDaughter( 0, _SCALAR );
+  checkSpinDaughter( 1, _SCALAR );
+  checkSpinDaughter( 2, _SCALAR );
+
+  // Get the values of the EvtId objects from the data files.
+  readPDGValues();
+
+  // Get the EvtId of the D0 and its 3 daughters.
+  getParentId();
+
+  EvtId dau[ 3 ];
+  for ( int index = 0; index < 3; index++ )
+  {
+    dau[ index ] = getDaug( index );
+  }
+
+  // Look for K0bar h+ h-. The order will be K[0SL] h+ h-
+  for ( int index = 0; index < 3; index++ )
+  {
+    if      ( ( dau[ index ] == _K0B ) || ( dau[ index ] == _KS ) || ( dau[ index ] == _KL ) )
+    {
+      _d1 = index;
+    }
+    else if ( ( dau[ index ] == _PIP ) || ( dau[ index ] == _KP ) )
+    {
+      _d2 = index;
+    }
+    else if ( ( dau[ index ] == _PIM ) || ( dau[ index ] == _KM ) )
+    {
+      _d3 = index;
+    }
+    else
+    {
+      reportInvalidAndExit();
+    }
+  }
+
+  // Check if we're dealing with Ks pi pi or with Ks K K.
+  _isKsPiPi = false;
+  if ( dau[ _d2 ] == _PIP || dau[ _d2 ] == _PIM )
+  {
+    _isKsPiPi = true;
+  }
+
+}
+
+
+void EvtD0gammaDalitz::initProbMax()
+{
+  setProbMax( 5200. );
+}
+
+
+void EvtD0gammaDalitz::decay( EvtParticle* part )
+{
+  // Check if the D is from a B+- -> D0 K+- decay with the appropriate model.
+  EvtParticle* parent = part->getParent(); // If there are no mistakes, should be B+ or B-.
+  if (parent != 0 && EvtDecayTable::getInstance()->getDecayFunc( parent )->getName() == "BTODDALITZCPK" )
+  {
+    EvtId parId = parent->getId();
+    if ( ( parId == _BP ) || ( parId == _BM ) ||
+         ( parId == _B0 ) || ( parId == _B0B) )
+    {
+      _bFlavor = parId;
+    }
+    else
+    {
+      reportInvalidAndExit();
+    }
+  }
+  else
+  {
+    reportInvalidAndExit();
+  }
+
+  // Read the D decay parameters from the B decay model.
+  // Gamma angle in rad.
+  double gamma = EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg( 0 );
+  // Strong phase in rad.
+  double delta = EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg( 1 );
+  // Ratio between B->D0K and B->D0barK
+  double rB    = EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg( 2 );
+
+  // Same structure for all of these decays.
+  part->initializePhaseSpace( getNDaug(), getDaugs() );
+  EvtVector4R pA = part->getDaug( _d1 )->getP4();
+  EvtVector4R pB = part->getDaug( _d2 )->getP4();
+  EvtVector4R pC = part->getDaug( _d3 )->getP4();
+
+  // Squared invariant masses.
+  double mSqAB = ( pA + pB ).mass2();
+  double mSqAC = ( pA + pC ).mass2();
+  double mSqBC = ( pB + pC ).mass2();
+
+  EvtComplex amp( 1.0, 0.0 );
+
+  // Direct and conjugated amplitudes.
+  EvtComplex ampDir;
+  EvtComplex ampCnj;
+
+  if ( _isKsPiPi )
+  {
+    // Direct and conjugated Dalitz points.
+    EvtDalitzPoint pointDir( _mKs, _mPi, _mPi, mSqAB, mSqBC, mSqAC );
+    EvtDalitzPoint pointCnj( _mKs, _mPi, _mPi, mSqAC, mSqBC, mSqAB );
+
+    // Direct and conjugated amplitudes.
+    ampDir = dalitzKsPiPi( pointDir );
+    ampCnj = dalitzKsPiPi( pointCnj );
+  }
+  else
+  {
+    // Direct and conjugated Dalitz points.
+    EvtDalitzPoint pointDir( _mKs, _mK, _mK, mSqAB, mSqBC, mSqAC );
+    EvtDalitzPoint pointCnj( _mKs, _mK, _mK, mSqAC, mSqBC, mSqAB );
+
+    // Direct and conjugated amplitudes.
+    ampDir = dalitzKsKK( pointDir );
+    ampCnj = dalitzKsKK( pointCnj );
+  }
+
+  if ( _bFlavor == _BP || _bFlavor == _B0 )
+  {
+    amp = ampCnj + rB * exp( EvtComplex( 0., delta + gamma ) ) * ampDir;
+  }
+  else
+  {
+    amp = ampDir + rB * exp( EvtComplex( 0., delta - gamma ) ) * ampCnj;
+  }
+
+  vertex( amp );
+
+  return;
+
+}
+
+
+EvtComplex EvtD0gammaDalitz::dalitzKsPiPi( const EvtDalitzPoint& point ) const
+{
+  static const EvtDalitzPlot plot( _mKs, _mPi, _mPi, _mD0 );
+
+  EvtComplex amp = 0.;
+
+  // This corresponds to relativistic Breit-Wigner distributions. Not K-matrix.
+  // Defining resonances.
+  static EvtDalitzReso KStarm      ( plot, _BC, _AC, _VECTOR, 0.893606, 0.0463407, _RBW );
+  static EvtDalitzReso KStarp      ( plot, _BC, _AB, _VECTOR, 0.893606, 0.0463407, _RBW );
+  static EvtDalitzReso rho0        ( plot, _AC, _BC, _VECTOR, 0.7758  , 0.1464   , _GS  );
+  static EvtDalitzReso omega       ( plot, _AC, _BC, _VECTOR, 0.78259 , 0.00849  , _RBW );
+  static EvtDalitzReso f0_980      ( plot, _AC, _BC, _SCALAR, 0.975   , 0.044    , _RBW );
+  static EvtDalitzReso f0_1370     ( plot, _AC, _BC, _SCALAR, 1.434   , 0.173    , _RBW );
+  static EvtDalitzReso f2_1270     ( plot, _AC, _BC, _TENSOR, 1.2754  , 0.1851   , _RBW );
+  static EvtDalitzReso K0Starm_1430( plot, _BC, _AC, _SCALAR, 1.459   , 0.175    , _RBW );
+  static EvtDalitzReso K0Starp_1430( plot, _BC, _AB, _SCALAR, 1.459   , 0.175    , _RBW );
+  static EvtDalitzReso K2Starm_1430( plot, _BC, _AC, _TENSOR, 1.4256  , 0.0985   , _RBW );
+  static EvtDalitzReso K2Starp_1430( plot, _BC, _AB, _TENSOR, 1.4256  , 0.0985   , _RBW );
+  static EvtDalitzReso sigma       ( plot, _AC, _BC, _SCALAR, 0.527699, 0.511861 , _RBW );
+  static EvtDalitzReso sigma2      ( plot, _AC, _BC, _SCALAR, 1.03327 , 0.0987890, _RBW );
+  static EvtDalitzReso KStarm_1680 ( plot, _BC, _AC, _VECTOR, 1.677   , 0.205    , _RBW );
+
+  // Adding terms to the amplitude with their corresponding amplitude and phase terms.
+  amp += EvtComplex(   .848984 ,   .893618  );
+  amp += EvtComplex( -1.16356  ,  1.19933   ) * KStarm      .evaluate( point );
+  amp += EvtComplex(   .106051 , - .118513  ) * KStarp      .evaluate( point );
+  amp += EvtComplex(  1.0      ,  0.0       ) * rho0        .evaluate( point );
+  amp += EvtComplex( - .0249569,   .0388072 ) * omega       .evaluate( point );
+  amp += EvtComplex( - .423586 , - .236099  ) * f0_980      .evaluate( point );
+  amp += EvtComplex( -2.16486  ,  3.62385   ) * f0_1370     .evaluate( point );
+  amp += EvtComplex(   .217748 , - .133327  ) * f2_1270     .evaluate( point );
+  amp += EvtComplex(  1.62128  ,  1.06816   ) * K0Starm_1430.evaluate( point );
+  amp += EvtComplex(   .148802 ,   .0897144 ) * K0Starp_1430.evaluate( point );
+  amp += EvtComplex(  1.15489  , - .773363  ) * K2Starm_1430.evaluate( point );
+  amp += EvtComplex(   .140865 , - .165378  ) * K2Starp_1430.evaluate( point );
+  amp += EvtComplex( -1.55556  , - .931685  ) * sigma       .evaluate( point );
+  amp += EvtComplex( - .273791 , - .0535596 ) * sigma2      .evaluate( point );
+  amp += EvtComplex( -1.69720  ,   .128038  ) * KStarm_1680 .evaluate( point );
+
+  return amp;
+}
+
+
+EvtComplex EvtD0gammaDalitz::dalitzKsKK( const EvtDalitzPoint& point ) const
+{
+  static const EvtDalitzPlot plot( _mKs, _mK, _mK, _mD0 );
+
+  // Defining resonances.
+  static EvtDalitzReso a00_980 ( plot, _AC, _BC, _SCALAR, 0.999  , _RBW, .550173, .324, _EtaPic   );
+  static EvtDalitzReso phi     ( plot, _AC, _BC, _VECTOR, 1.01943,       .00459319    , _RBW      );
+  static EvtDalitzReso a0p_980 ( plot, _AC, _AB, _SCALAR, 0.999  , _RBW, .550173, .324, _EtaPic   );
+  static EvtDalitzReso f0_1370 ( plot, _AC, _BC, _SCALAR, 1.350  ,       .265         , _RBW      );
+  static EvtDalitzReso a0m_980 ( plot, _AB, _AC, _SCALAR, 0.999  , _RBW, .550173, .324, _EtaPic   );
+  static EvtDalitzReso f0_980  ( plot, _AC, _BC, _SCALAR, 0.965  , _RBW, .695   , .165, _PicPicKK );
+  static EvtDalitzReso f2_1270 ( plot, _AC, _BC, _TENSOR, 1.2754 ,       .1851        , _RBW      );
+  static EvtDalitzReso a00_1450( plot, _AC, _BC, _SCALAR, 1.474  ,       .265         , _RBW      );
+  static EvtDalitzReso a0p_1450( plot, _AC, _AB, _SCALAR, 1.474  ,       .265         , _RBW      );
+  static EvtDalitzReso a0m_1450( plot, _AB, _AC, _SCALAR, 1.474  ,       .265         , _RBW      );
+
+  // Adding terms to the amplitude with their corresponding amplitude and phase terms.
+  EvtComplex amp( 0., 0. ); // Phase space amplitude.
+  amp += EvtComplex( 1.0          , 0.0        ) * a00_980 .evaluate( point );
+  amp += EvtComplex( -.126314     ,  .188701   ) * phi     .evaluate( point );
+  amp += EvtComplex( -.561428     ,  .0135338  ) * a0p_980 .evaluate( point );
+  amp += EvtComplex(  .035        , -.00110488 ) * f0_1370 .evaluate( point );
+  amp += EvtComplex( -.0872735    ,  .0791190  ) * a0m_980 .evaluate( point );
+  amp += EvtComplex( 0.           , 0.         ) * f0_980  .evaluate( point );
+  amp += EvtComplex(  .257341     , -.0408343  ) * f2_1270 .evaluate( point );
+  amp += EvtComplex( -.0614342    , -.649930   ) * a00_1450.evaluate( point );
+  amp += EvtComplex( -.104629     ,  .830120   ) * a0p_1450.evaluate( point );
+  amp += EvtComplex( 0.           , 0.         ) * a0m_1450.evaluate( point );
+
+  return 2.8 * amp; // Multiply by 2.8 in order to reuse the same probmax as Ks pi pi.
+}
+
+
+void EvtD0gammaDalitz::readPDGValues()
+{
+  // Define the EvtIds.
+  _BP  = EvtPDL::getId( "B+"      );
+  _BM  = EvtPDL::getId( "B-"      );
+  _B0  = EvtPDL::getId( "B0"      );
+  _B0B = EvtPDL::getId( "anti-B0" );
+  _D0  = EvtPDL::getId( "D0"      );
+  _D0B = EvtPDL::getId( "anti-D0" );
+  _KM  = EvtPDL::getId( "K-"      );
+  _KP  = EvtPDL::getId( "K+"      );
+  _K0  = EvtPDL::getId( "K0"      );
+  _K0B = EvtPDL::getId( "anti-K0" );
+  _KL  = EvtPDL::getId( "K_L0"    );
+  _KS  = EvtPDL::getId( "K_S0"    );
+  _PIM = EvtPDL::getId( "pi-"     );
+  _PIP = EvtPDL::getId( "pi+"     );
+
+  // Read the relevant masses.
+  _mD0 = EvtPDL::getMass( _D0  );
+  _mKs = EvtPDL::getMass( _KS  );
+  _mPi = EvtPDL::getMass( _PIP );
+  _mK  = EvtPDL::getMass( _KP  );
+}
+
+
+void EvtD0gammaDalitz::reportInvalidAndExit() const
+{
+  report( ERROR, "EvtD0gammaDalitz" ) << "EvtD0gammaDalitz: Invalid mode." << std::endl;
+  exit( 1 );
+}
diff --git a/TEvtGen/EvtGenModels/EvtD0gammaDalitz.hh b/TEvtGen/EvtGenModels/EvtD0gammaDalitz.hh
new file mode 100644 (file)
index 0000000..f890404
--- /dev/null
@@ -0,0 +1,96 @@
+//--------------------------------------------------------------------------
+//
+// Module: EvtGen/EvtD0gammaDalitz.hh
+//
+// Modification history:
+//
+//    JGT     February 13, 2012         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef __EVTD0GAMMADALITZ_HH__
+#define __EVTD0GAMMADALITZ_HH__
+
+#include <vector>
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtFlatte.hh"
+
+#include "EvtGenBase/EvtSpinType.hh"
+#include "EvtGenBase/EvtDalitzReso.hh"
+#include "EvtGenBase/EvtCyclic3.hh"
+
+class EvtParticle;
+
+class EvtD0gammaDalitz : public EvtDecayAmp
+{
+private:
+  int _d1;
+  int _d2;
+  int _d3;
+  int _flag;
+
+  bool _isKsPiPi;
+
+  // Useful constants.
+  static const EvtSpinType::spintype& _SCALAR;
+  static const EvtSpinType::spintype& _VECTOR;
+  static const EvtSpinType::spintype& _TENSOR;
+
+  static const EvtDalitzReso::CouplingType& _EtaPic;
+  static const EvtDalitzReso::CouplingType& _PicPicKK;
+
+  static const EvtDalitzReso::NumType& _RBW;
+  static const EvtDalitzReso::NumType& _GS;
+  static const EvtDalitzReso::NumType& _KMAT;
+
+  static const EvtCyclic3::Pair& _AB;
+  static const EvtCyclic3::Pair& _AC;
+  static const EvtCyclic3::Pair& _BC;
+
+  // Values to be read or computed based on values in the evt.pdl file.
+  // IDs of the relevant particles.
+  EvtId _BP;
+  EvtId _BM;
+  EvtId _B0;
+  EvtId _B0B;
+  EvtId _D0;
+  EvtId _D0B;
+  EvtId _KM;
+  EvtId _KP;
+  EvtId _K0;
+  EvtId _K0B;
+  EvtId _KL;
+  EvtId _KS;
+  EvtId _PIM;
+  EvtId _PIP;
+
+  // Flavor of the B mother.
+  EvtId _bFlavor;
+
+  // Masses of the relevant particles.
+  double _mD0;
+  double _mKs;
+  double _mPi;
+  double _mK;
+
+  void readPDGValues();
+  void reportInvalidAndExit() const;
+
+  EvtComplex dalitzKsPiPi( const EvtDalitzPoint& point ) const;
+  EvtComplex dalitzKsKK  ( const EvtDalitzPoint& point ) const;
+
+public:
+  EvtD0gammaDalitz();
+  virtual ~EvtD0gammaDalitz();
+
+  std::string getName();
+  EvtDecayBase* clone();
+
+  void init();
+  void initProbMax();
+
+  void decay( EvtParticle* p );
+};
+
+#endif
similarity index 94%
rename from TEvtGen/EvtGenModels/EvtD0mixDalitz.cxx
rename to TEvtGen/EvtGenModels/EvtD0mixDalitz.cpp
index a6ad3183c475679377cf163e8772ad1f6f2cd93a..82fcc8889b220e2dfe681426d239229c2ea6a5c0 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenModels
- *    File: $Id: EvtD0mixDalitz.cc,v 1.9 2008/11/27 16:37:24 jordix Exp $
+ *    File: $Id: EvtD0mixDalitz.cpp,v 1.2 2009-10-19 15:47:44 robbep Exp $
  *
  * Description:
  *   The D0mixDalitz model, with many resonances and mixing implemented.
@@ -42,32 +42,26 @@ void EvtD0mixDalitz::init()
   // check that there are 0 arguments
   checkNDaug( 3 );
 
-  if ( getNArg() )
-    if ( getNArg() == 2 )
-      {
-       _x = getArg( 0 );
-       _y = getArg( 1 );
-      }
-    else if ( getNArg() == 4 )
-      {
-       _x = getArg( 0 );
-       _y = getArg( 1 );
-       _qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
-      }
-    else if ( getNArg() == 5 )
-      {
-       _x = getArg( 0 );
-       _y = getArg( 1 );
-       _qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
-       _isRBWmodel = ! getArg( 4 ); // RBW by default. If arg4 is set, do K-matrix.
-      }
-    else
-      {
-       report( ERROR, "EvtD0mixDalitz" ) << "Number of arguments for this model must be 0, 2, 4 or 5:" << std::endl
-                                         << "[ x y ][ qp.re qp.im ][ doK-matrix ]" << std::endl
-                                         << "Check your dec file." << std::endl;
-       exit( 1 );
-      }
+  if ( getNArg() ) {
+    if ( getNArg() == 2 ) {
+      _x = getArg( 0 );
+      _y = getArg( 1 );
+    } else if ( getNArg() == 4 ) {
+      _x = getArg( 0 );
+      _y = getArg( 1 );
+      _qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
+    } else if ( getNArg() == 5 ) {
+      _x = getArg( 0 );
+      _y = getArg( 1 );
+      _qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
+      _isRBWmodel = ! getArg( 4 ); // RBW by default. If arg4 is set, do K-matrix.
+    } else {
+      report( ERROR, "EvtD0mixDalitz" ) << "Number of arguments for this model must be 0, 2, 4 or 5:" << std::endl
+                                        << "[ x y ][ qp.re qp.im ][ doK-matrix ]" << std::endl
+                                        << "Check your dec file." << std::endl;
+      exit( 1 );
+    }
+  }
 
   checkSpinParent  (    _SCALAR );
   checkSpinDaughter( 0, _SCALAR );
index d490c6e001354c9a53eb96a6d8552a666e017313..7273e8161c69e49b6e76f3e3452f193fa895fe4d 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * Project: BaBar detector at the SLAC PEP-II B-factory
  * Package: EvtGenModels
- *    File: $Id: EvtD0mixDalitz.hh,v 1.6 2008/11/14 12:22:06 jordix Exp $
+ *    File: $Id: EvtD0mixDalitz.hh,v 1.1 2009-03-16 16:49:00 robbep Exp $
  *
  * Description:
  *   The D0mixDalitz model, with many resonances and mixing implemented.
similarity index 53%
rename from TEvtGen/EvtGenModels/EvtDDalitz.cxx
rename to TEvtGen/EvtGenModels/EvtDDalitz.cpp
index b275a6ee87fd6537c3f2d239892ca39741f6c38f..a6e85778ed5182af1e526b90e28da0d88331470e 100644 (file)
@@ -85,6 +85,7 @@ void EvtDDalitz::init(){
   EvtId d1=getDaug(0);
   EvtId d2=getDaug(1);
   EvtId d3=getDaug(2);
+    
   _flag=0;
   if ( parnum == D0 ) {
     //look for either a K- pi+ pi0 or K0bar pi+ pi-
@@ -115,28 +116,34 @@ void EvtDDalitz::init(){
     if ( d2==KS && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
     if ( d3==KS && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
     if ( d3==KS && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
-
-    
-    if ( d1==KS && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
-    if ( d1==KS && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
-    if ( d2==KS && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
-    if ( d2==KS && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
-    if ( d3==KS && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
-    if ( d3==KS && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
-    
-    if ( d1==KL && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
-    if ( d1==KL && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
-    if ( d2==KL && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
-    if ( d2==KL && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
-    if ( d3==KL && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
-    if ( d3==KL && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}    
     
-    if ( d1==K0 && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
-    if ( d1==K0 && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
-    if ( d2==K0 && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
-    if ( d2==K0 && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
-    if ( d3==K0 && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
-    if ( d3==K0 && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}   
+    if ( d1==KS && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
+    if ( d1==KS && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
+    if ( d2==KS && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
+    if ( d2==KS && d3==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
+    if ( d3==KS && d1==KP && d2==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
+    if ( d3==KS && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}   
+
+    if ( d1==KL && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
+    if ( d1==KL && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
+    if ( d2==KL && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
+    if ( d2==KL && d3==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
+    if ( d3==KL && d1==KP && d2==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
+    if ( d3==KL && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}   
+
+    if ( d1==KB && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
+    if ( d1==KB && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
+    if ( d2==KB && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
+    if ( d2==KB && d3==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
+    if ( d3==KB && d1==KP && d2==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
+    if ( d3==KB && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}   
+
+    if ( d1==PIM && d2==PIP && d3==PI0 ) { _flag=12;_d1=0;_d2=1;_d3=2;}
+    if ( d1==PIM && d3==PIP && d2==PI0 ) { _flag=12;_d1=0;_d2=2;_d3=1;}
+    if ( d2==PIM && d1==PIP && d3==PI0 ) { _flag=12;_d1=1;_d2=0;_d3=2;}
+    if ( d2==PIM && d3==PIP && d1==PI0 ) { _flag=12;_d1=2;_d2=0;_d3=1;}
+    if ( d3==PIM && d1==PIP && d2==PI0 ) { _flag=12;_d1=1;_d2=2;_d3=0;}
+    if ( d3==PIM && d2==PIP && d1==PI0 ) { _flag=12;_d1=2;_d2=1;_d3=0;}
   }
   if ( parnum == D0B ) {
     //look for either a K+ pi- pi0 or K0 pi+ pi-
@@ -168,27 +175,34 @@ void EvtDDalitz::init(){
     if ( d3==KS && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
     if ( d3==KS && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
 
-    if ( d1==KS && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
-    if ( d1==KS && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
-    if ( d2==KS && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
-    if ( d2==KS && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
-    if ( d3==KS && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
-    if ( d3==KS && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
-    
-    if ( d1==KL && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
-    if ( d1==KL && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
-    if ( d2==KL && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
-    if ( d2==KL && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
-    if ( d3==KL && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
-    if ( d3==KL && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}    
-    
-    if ( d1==K0 && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
-    if ( d1==K0 && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
-    if ( d2==K0 && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
-    if ( d2==K0 && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
-    if ( d3==K0 && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
-    if ( d3==K0 && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
-    
+    if ( d1==KS && d2==KM && d3==KP ) {_flag=5;_d1=0;_d2=1;_d3=2;}
+    if ( d1==KS && d3==KM && d2==KP ) {_flag=5;_d1=0;_d2=2;_d3=1;}
+    if ( d2==KS && d1==KM && d3==KP ) {_flag=5;_d1=1;_d2=0;_d3=2;}
+    if ( d2==KS && d3==KM && d1==KP ) {_flag=5;_d1=2;_d2=0;_d3=1;}
+    if ( d3==KS && d1==KM && d2==KP ) {_flag=5;_d1=1;_d2=2;_d3=0;}
+    if ( d3==KS && d2==KM && d1==KP ) {_flag=5;_d1=2;_d2=1;_d3=0;}
+
+    if ( d1==KL && d2==KM && d3==KP ) {_flag=5;_d1=0;_d2=1;_d3=2;}
+    if ( d1==KL && d3==KM && d2==KP ) {_flag=5;_d1=0;_d2=2;_d3=1;}
+    if ( d2==KL && d1==KM && d3==KP ) {_flag=5;_d1=1;_d2=0;_d3=2;}
+    if ( d2==KL && d3==KM && d1==KP ) {_flag=5;_d1=2;_d2=0;_d3=1;}
+    if ( d3==KL && d1==KM && d2==KP ) {_flag=5;_d1=1;_d2=2;_d3=0;}
+    if ( d3==KL && d2==KM && d1==KP ) {_flag=5;_d1=2;_d2=1;_d3=0;}
+
+    if ( d1==K0 && d2==KM && d3==KP ) {_flag=5;_d1=0;_d2=1;_d3=2;}
+    if ( d1==K0 && d3==KM && d2==KP ) {_flag=5;_d1=0;_d2=2;_d3=1;}
+    if ( d2==K0 && d1==KM && d3==KP ) {_flag=5;_d1=1;_d2=0;_d3=2;}
+    if ( d2==K0 && d3==KM && d1==KP ) {_flag=5;_d1=2;_d2=0;_d3=1;}
+    if ( d3==K0 && d1==KM && d2==KP ) {_flag=5;_d1=1;_d2=2;_d3=0;}
+    if ( d3==K0 && d2==KM && d1==KP ) {_flag=5;_d1=2;_d2=1;_d3=0;}
+
+    if ( d1==PIP && d2==PIM && d3==PI0 ) { _flag=12;_d1=0;_d2=1;_d3=2;}
+    if ( d1==PIP && d3==PIM && d2==PI0 ) { _flag=12;_d1=0;_d2=2;_d3=1;}
+    if ( d2==PIP && d1==PIM && d3==PI0 ) { _flag=12;_d1=1;_d2=0;_d3=2;}
+    if ( d2==PIP && d3==PIM && d1==PI0 ) { _flag=12;_d1=2;_d2=0;_d3=1;}
+    if ( d3==PIP && d1==PIM && d2==PI0 ) { _flag=12;_d1=1;_d2=2;_d3=0;}
+    if ( d3==PIP && d2==PIM && d1==PI0 ) { _flag=12;_d1=2;_d2=1;_d3=0;}
+
   }
 
   if ( parnum == DP ) {
@@ -254,6 +268,20 @@ void EvtDDalitz::init(){
      if ( d2==KM && d3==KP && d1==PIP ) { _flag=6; _d1=1; _d2=2; _d3=0; }
      if ( d3==KM && d1==KP && d2==PIP ) { _flag=6; _d1=2; _d2=0; _d3=1; }
      if ( d3==KM && d2==KP && d1==PIP ) { _flag=6; _d1=2; _d2=1; _d3=0; }
+
+     if ( d1==PIM && d2==PIP && d3==KP ) { _flag=9; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIM && d3==PIP && d2==KP ) { _flag=9; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIM && d1==PIP && d3==KP ) { _flag=9; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIM && d3==PIP && d1==KP ) { _flag=9; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIM && d1==PIP && d2==KP ) { _flag=9; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIM && d2==PIP && d1==KP ) { _flag=9; _d1=2; _d2=1; _d3=0; }
+
+     if ( d1==PIM && d2==PIP && d3==PIP ) { _flag=11; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIM && d3==PIP && d2==PIP ) { _flag=11; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIM && d1==PIP && d3==PIP ) { _flag=11; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIM && d3==PIP && d1==PIP ) { _flag=11; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIM && d1==PIP && d2==PIP ) { _flag=11; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIM && d2==PIP && d1==PIP ) { _flag=11; _d1=2; _d2=1; _d3=0; }
   }
 
   if ( parnum == DSM ) {
@@ -263,6 +291,66 @@ void EvtDDalitz::init(){
      if ( d2==KP && d3==KM && d1==PIM ) { _flag=6; _d1=1; _d2=2; _d3=0; }
      if ( d3==KP && d1==KM && d2==PIM ) { _flag=6; _d1=2; _d2=0; _d3=1; }
      if ( d3==KP && d2==KM && d1==PIM ) { _flag=6; _d1=2; _d2=1; _d3=0; }
+
+     if ( d1==PIP && d2==PIM && d3==KM ) { _flag=9; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIP && d3==PIM && d2==KM ) { _flag=9; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIP && d1==PIM && d3==KM ) { _flag=9; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIP && d3==PIM && d1==KM ) { _flag=9; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIP && d1==PIM && d2==KM ) { _flag=9; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIP && d2==PIM && d1==KM ) { _flag=9; _d1=2; _d2=1; _d3=0; }
+     
+     if ( d1==PIP && d2==PIM && d3==PIM ) { _flag=11; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIP && d3==PIM && d2==PIM ) { _flag=11; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIP && d1==PIM && d3==PIM ) { _flag=11; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIP && d3==PIM && d1==PIM ) { _flag=11; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIP && d1==PIM && d2==PIM ) { _flag=11; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIP && d2==PIM && d1==PIM ) { _flag=11; _d1=2; _d2=1; _d3=0; }
+     
+  }
+  if ( parnum == DP ) {
+     if ( d1==KM && d2==KP && d3==PIP ) { _flag=7; _d1=0; _d2=1; _d3=2; }
+     if ( d1==KM && d3==KP && d2==PIP ) { _flag=7; _d1=0; _d2=2; _d3=1; }
+     if ( d2==KM && d1==KP && d3==PIP ) { _flag=7; _d1=1; _d2=0; _d3=2; }
+     if ( d2==KM && d3==KP && d1==PIP ) { _flag=7; _d1=2; _d2=0; _d3=1; }
+     if ( d3==KM && d1==KP && d2==PIP ) { _flag=7; _d1=1; _d2=2; _d3=0; }
+     if ( d3==KM && d2==KP && d1==PIP ) { _flag=7; _d1=2; _d2=1; _d3=0; }
+
+     if ( d1==PIM && d2==PIP && d3==KP ) { _flag=8; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIM && d3==PIP && d2==KP ) { _flag=8; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIM && d1==PIP && d3==KP ) { _flag=8; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIM && d3==PIP && d1==KP ) { _flag=8; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIM && d1==PIP && d2==KP ) { _flag=8; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIM && d2==PIP && d1==KP ) { _flag=8; _d1=2; _d2=1; _d3=0; }
+
+     if ( d1==PIM && d2==PIP && d3==PIP ) { _flag=10; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIM && d3==PIP && d2==PIP ) { _flag=10; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIM && d1==PIP && d3==PIP ) { _flag=10; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIM && d3==PIP && d1==PIP ) { _flag=10; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIM && d1==PIP && d2==PIP ) { _flag=10; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIM && d2==PIP && d1==PIP ) { _flag=10; _d1=2; _d2=1; _d3=0; }
+
+  }
+  if ( parnum == DM ) {
+     if ( d1==KP && d2==KM && d3==PIM ) { _flag=7; _d1=0; _d2=1; _d3=2; }
+     if ( d1==KP && d3==KM && d2==PIM ) { _flag=7; _d1=0; _d2=2; _d3=1; }
+     if ( d2==KP && d1==KM && d3==PIM ) { _flag=7; _d1=1; _d2=0; _d3=2; }
+     if ( d2==KP && d3==KM && d1==PIM ) { _flag=7; _d1=2; _d2=0; _d3=1; }
+     if ( d3==KP && d1==KM && d2==PIM ) { _flag=7; _d1=1; _d2=2; _d3=0; }
+     if ( d3==KP && d2==KM && d1==PIM ) { _flag=7; _d1=2; _d2=1; _d3=0; } 
+    
+     if ( d1==PIP && d2==PIM && d3==KM ) { _flag=8; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIP && d3==PIM && d2==KM ) { _flag=8; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIP && d1==PIM && d3==KM ) { _flag=8; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIP && d3==PIM && d1==KM ) { _flag=8; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIP && d1==PIM && d2==KM ) { _flag=8; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIP && d2==PIM && d1==KM ) { _flag=8; _d1=2; _d2=1; _d3=0; }
+
+     if ( d1==PIP && d2==PIM && d3==PIM ) { _flag=10; _d1=0; _d2=1; _d3=2; }
+     if ( d1==PIP && d3==PIM && d2==PIM ) { _flag=10; _d1=0; _d2=2; _d3=1; }
+     if ( d2==PIP && d1==PIM && d3==PIM ) { _flag=10; _d1=1; _d2=0; _d3=2; }
+     if ( d2==PIP && d3==PIM && d1==PIM ) { _flag=10; _d1=1; _d2=2; _d3=0; }
+     if ( d3==PIP && d1==PIM && d2==PIM ) { _flag=10; _d1=2; _d2=0; _d3=1; }
+     if ( d3==PIP && d2==PIM && d1==PIM ) { _flag=10; _d1=2; _d2=1; _d3=0; }
   }
 
   if ( _flag==6) {
@@ -278,14 +366,20 @@ void EvtDDalitz::init(){
 
 void EvtDDalitz::initProbMax() {
 
-//probmax different for different modes!  
-
-  if ( _flag==1 ) {setProbMax(9.6);}
-  if ( _flag==2 ) {setProbMax(147.9);}
-  if ( _flag==3 ) {setProbMax(5000.0);}
-  if ( _flag==4 ) {setProbMax(3000.0);}
-  if ( _flag==5 ) {setProbMax(10000000.0);}
-  if ( _flag==6 ) {setProbMax(50000.0);}
+  // probmax different for different modes!  
+
+  if ( _flag==1 ) {setProbMax(2500.0);}
+  if ( _flag==2 ) {setProbMax(150.0);}
+  if ( _flag==3 ) {setProbMax(3000.0);}
+  if ( _flag==4 ) {setProbMax(600.0);}
+  if ( _flag==5 ) {setProbMax(2500000.0);}
+  if ( _flag==6 ) {setProbMax(45000.0);}
+  if ( _flag==7 ) {setProbMax(35000.0);}
+  if ( _flag==8 ) {setProbMax(2500.0);}
+  if ( _flag==9 ) {setProbMax(1700.0);}
+  if ( _flag==10 ) {setProbMax(1300.0);}
+  if ( _flag==11 ) {setProbMax(2200.0);}
+  if ( _flag==12 ) {setProbMax(1000.0);}
 
 }
 
@@ -295,17 +389,8 @@ void EvtDDalitz::decay( EvtParticle *p){
   static EvtId BM = EvtPDL::getId("B-");                                       
   static EvtId B0 = EvtPDL::getId("B0");                                       
   static EvtId B0B = EvtPDL::getId("anti-B0");         
-  static EvtId DM=EvtPDL::getId("D-");
-  static EvtId DP=EvtPDL::getId("D+");
+
   static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PI0=EvtPDL::getId("pi0");
 
   double oneby2 = 0.707106782;
 
@@ -314,7 +399,7 @@ void EvtDDalitz::decay( EvtParticle *p){
     EvtId parId = p -> getParent()->getId ();                              
     if ( ( BP == parId ) || ( BM == parId ) || ( B0 == parId ) ||              
                       ( B0B == parId ) )
-      if (EvtDecayTable::getDecayFunc(p->getParent())->getName() == "BTODDALITZCPK") isBToDK=true;   
+      if (EvtDecayTable::getInstance()->getDecayFunc(p->getParent())->getName() == "BTODDALITZCPK") isBToDK=true;   
   }                                                                            
   
 
@@ -339,18 +424,35 @@ void EvtDDalitz::decay( EvtParticle *p){
 
   if ( _flag==1) {
 
-//have a D+ -> K- pi+ pi+ decay, or charge conjugate
-//Anjos etal e691 - Phys Rev D48, 56 (1993) 
-    EvtResonance DplusRes11(p4_p,moms1,moms2,0.78,-60.0,0.0498,0.89610,1);
-    EvtResonance DplusRes12(p4_p,moms3,moms1,0.78,-60.0,0.0498,0.89610,1);//K*(892)
+   //  //have a D+ -> K- pi+ pi+ decay, or charge conjugate
+//     //Anjos etal e691 - Phys Rev D48, 56 (1993) 
+    // EvtResonance DplusRes11(p4_p,moms1,moms2,0.78,-60.0,0.0498,0.89610,1);
+//     EvtResonance DplusRes12(p4_p,moms3,moms1,0.78,-60.0,0.0498,0.89610,1);//K*(892)
     
-    EvtResonance DplusRes21(p4_p,moms1,moms2,0.53,132.0,0.287,1.429,0);
-    EvtResonance DplusRes22(p4_p,moms3,moms1,0.53,132.0,0.287,1.429,0);//K*(1430)
+//     EvtResonance DplusRes21(p4_p,moms1,moms2,0.53,132.0,0.287,1.429,0);
+//     EvtResonance DplusRes22(p4_p,moms3,moms1,0.53,132.0,0.287,1.429,0);//K*(1430)
     
-    EvtResonance DplusRes31(p4_p,moms1,moms2,0.47,-51.0,0.323,1.714,1);
-    EvtResonance DplusRes32(p4_p,moms3,moms1,0.47,-51.0,0.323,1.714,1);//K*(1680)
+//     EvtResonance DplusRes31(p4_p,moms1,moms2,0.47,-51.0,0.323,1.714,1);
+//     EvtResonance DplusRes32(p4_p,moms3,moms1,0.47,-51.0,0.323,1.714,1);//K*(1680)
     
-    amp = amp + oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) + oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) + oneby2*(-DplusRes31.resAmpl()+ DplusRes32.resAmpl());
+//     amp = amp + oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) + oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) + oneby2*(-DplusRes31.resAmpl()+ DplusRes32.resAmpl());
+
+//    EvtResonance DplusRes11(p4_p,moms1,moms2,amp,phase,width,mass,L);
+    //CLEO-c p15,arxiv:0802.4214v2 
+    EvtResonance2 DplusRes11(p4_p,moms1,moms2,1.0, 0.0, 0.0503, 0.896, 1, true);
+    EvtResonance2 DplusRes12(p4_p,moms3,moms1,1.0, 0.0, 0.0503, 0.896, 1, true);//K*(892)
+    EvtResonance2 DplusRes21(p4_p,moms1,moms2,3.0, 49.7-180.0, 0.164, 1.463, 0);
+    EvtResonance2 DplusRes22(p4_p,moms3,moms1,3.0, 49.7-180.0, 0.164, 1.463, 0);//K*(1430)
+    EvtResonance2 DplusRes31(p4_p, moms1, moms2, 0.96, -29.9+180.0, 0.109, 1.4324, 2, true);     
+    EvtResonance2 DplusRes32(p4_p, moms3, moms1, 0.96, -29.9+180.0, 0.109, 1.4324, 2, true);// K*_2(1430)
+    EvtResonance2 DplusRes41(p4_p,moms1,moms2, 6.5, 29.0, 0.323, 1.717, 1, true);
+    EvtResonance2 DplusRes42(p4_p,moms3,moms1, 6.5, 29.0, 0.323, 1.717, 1, true);//K*(1680)
+    EvtResonance2 DplusRes51(p4_p,moms1,moms2, 5.01, -163.7+180.0, 0.470, 0.809, 0);
+    EvtResonance2 DplusRes52(p4_p,moms3,moms1, 5.01, -163.7+180.0, 0.470, 0.809, 0);//kappa(800)
+    double pi180inv = 1.0/EvtConst::radToDegrees;  
+    amp = EvtComplex(7.4*cos((-18.4+180.0)*pi180inv),7.4*sin((-18.4+180.0)*pi180inv))+ oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) + oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) + oneby2*(DplusRes31.resAmpl()+ DplusRes32.resAmpl()) + oneby2*(-DplusRes41.resAmpl()+ DplusRes42.resAmpl()) + oneby2*(DplusRes51.resAmpl()+ DplusRes52.resAmpl());
+    //amp = amp+oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl());
     
  }
   
@@ -380,13 +482,13 @@ void EvtDDalitz::decay( EvtParticle *p){
 
     if ( isBToDK ) {
       // Gamma angle in rad.                                                                       
-      double gamma = EvtDecayTable::getDecayFunc( p->getParent() )
+      double gamma = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
         -> getArg( 0 )  ;
       // Strong phase in rad.                                                                      
-      double delta =  EvtDecayTable::getDecayFunc( p->getParent() )
+      double delta =  EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
         -> getArg( 1 )  ;
       // Ratio between B->D0K and B->D0barK                                                        
-      double A     =  EvtDecayTable::getDecayFunc( p->getParent() )
+      double A     =  EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
         -> getArg( 2 )  ;
 
       EvtComplex Factor( fabs( A ) * cos ( delta ) ,
@@ -463,13 +565,13 @@ void EvtDDalitz::decay( EvtParticle *p){
 
     if ( isBToDK ){
       // Gamma angle in rad.                                                                       
-      double gamma = EvtDecayTable::getDecayFunc( p->getParent() )
+      double gamma = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
         -> getArg( 0 )  ;
       // Strong phase in rad.                                                                      
-      double delta =  EvtDecayTable::getDecayFunc( p->getParent() )
+      double delta =  EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
         -> getArg( 1 )  ;
       // Ratio between B->D0K and B->D0barK                                                        
-      double A     =  EvtDecayTable::getDecayFunc( p->getParent() )
+      double A     =  EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
         -> getArg( 2 )  ;
 
       EvtComplex Factor( fabs( A ) * cos ( delta ) ,
@@ -517,6 +619,7 @@ void EvtDDalitz::decay( EvtParticle *p){
 
 
   // Ds -> K K pi
+  //Babar, arxiv:1011.4190
   if(_flag==6) {
      EvtResonance2 DsKKpiRes1(p4_p, moms3, moms1, 1.0, 0.0, 0.0455, 0.8944, 1, true); // K*(892)
      EvtResonance2 DsKKpiRes2(p4_p, moms3, moms1, 1.48, 138., 0.290, 1.414, 0); // K*_0(1430)
@@ -529,7 +632,132 @@ void EvtDDalitz::decay( EvtParticle *p){
 
   }
 
+  //D+ -> K K pi
+  //CLEO PRD 78, 072003 (2008) Fit A
+  if(_flag==7) {
+    EvtResonance2 DpKKpiRes1(p4_p, moms3, moms1, 1.0, 0.0, 0.0503, 0.8960, 1, true); // K*(892)
+    EvtResonance2 DpKKpiRes2(p4_p, moms3, moms1, 3.7, 73.0, 0.290, 1.414, 0); // K*_0(1430)
+    EvtResonance2 DpKKpiRes3(p4_p, moms1, moms2, 1.189, -179.0+180.0, 0.00426, 1.019455, 1, true); // phi(1020)
+    EvtResonance2 DpKKpiRes4(p4_p, moms1, moms2, 1.72, 123., 0.265, 1.474, 0); // a_0(1450)
+    EvtResonance2 DpKKpiRes5(p4_p, moms1, moms2, 1.9, -52.0+180.0, 0.15, 1.68, 1, true); // phi(1680)
+    EvtResonance2 DpKKpiRes6(p4_p, moms3, moms1, 6.4, 150., 0.109, 1.4324, 2, true); // K*_2(1430)    
+    double pi180inv = 1.0/EvtConst::radToDegrees;    
+    amp = EvtComplex(5.1*cos((53.0)*pi180inv),5.1*sin((53.0)*pi180inv)) +
+      DpKKpiRes1.resAmpl() + DpKKpiRes2.resAmpl() + DpKKpiRes3.resAmpl()
+      + DpKKpiRes4.resAmpl() + DpKKpiRes5.resAmpl() + DpKKpiRes6.resAmpl();
+  }
+  
+//D+ -> K pi pi WS (DCS)
+  //FOCUS PLB 601 10 (2004) ; amplitudes there are individually normalized (although not explicit in the paper)
+  // thus the magnitudes appearing below come from dividing the ones appearing in the paper by the sqrt of the
+  // integral over the DP of the corresponding squared amplitude. Writing as pi- pi+ K+ so pipi resonances are (12)
+  // and Kpi resonances are (31); masses and widths corresponds to PDG 2010
+  if(_flag==8) {
+    EvtResonance2 DpKpipiDCSRes1(p4_p, moms1, moms2, 1.0, 0.0, 0.149, 0.775, 1, true); // rho(770)
+    EvtResonance2 DpKpipiDCSRes2(p4_p, moms3, moms1, 1.0971, -167.1, 0.0487, 0.896, 1, true); // K*(890)
+    EvtResonance2 DpKpipiDCSRes3(p4_p, moms1, moms2, 0.4738, -134.5, 0.059, 0.972, 0); // f0(980) as simple BW
+    EvtResonance2 DpKpipiDCSRes4(p4_p, moms3, moms1, 2.2688, 54.4, 0.109, 1.432, 2, true); // K*2(1430)
+    amp = DpKpipiDCSRes1.resAmpl() + DpKpipiDCSRes2.resAmpl() + DpKpipiDCSRes3.resAmpl()
+      + DpKpipiDCSRes4.resAmpl();
+  }
 
+  //Ds+ -> K pi pi WS (CS)
+  //FOCUS PLB 601 10 (2004) ; amplitudes there are individually normalized (although not explicit in the paper)
+  // thus the magnitudes appearing below come from dividing the ones appearing in the paper by the sqrt of the
+  // integral over the DP of the corresponding squared amplitude. Writing as pi- pi+ K+ so pipi resonances are (12)
+  // and Kpi resonances are (31); masses and widths corresponds to PDG 2010
+  // PROBLEM: by simply doing the procedure for D+, the resulting DP and projections do not resemble what is
+  // in the paper; the best model is by adding 180 to the vector Kpi resonances
+  if(_flag==9) {
+    EvtResonance2 DsKpipiCSRes1(p4_p, moms1, moms2, 1.0, 0.0, 0.149, 0.775, 1, true); // rho(770)
+    EvtResonance2 DsKpipiCSRes2(p4_p, moms3, moms1, 0.7236, -18.3, 0.0487, 0.896, 1, true); // K*(890)
+    EvtResonance2 DsKpipiCSRes3(p4_p, moms3, moms1, 2.711, 145.2, 0.232, 1.414, 1, true); // K*(1410)
+    EvtResonance2 DsKpipiCSRes4(p4_p, moms3, moms1, 1.7549, 59.3, 0.270, 1.425, 0); // K*0(1430)
+    EvtResonance2 DsKpipiCSRes5(p4_p, moms1, moms2, 7.0589, -151.7, 0.400, 1.465, 1, true); // rho(1450)
+    double pi180inv = 1.0/EvtConst::radToDegrees; 
+    amp = EvtComplex(3.98*cos(43.1*pi180inv),3.98*sin(43.1*pi180inv)) + DsKpipiCSRes1.resAmpl()
+         + DsKpipiCSRes2.resAmpl() + DsKpipiCSRes3.resAmpl() + DsKpipiCSRes4.resAmpl()
+         + DsKpipiCSRes5.resAmpl();
+  }
+  // D+ -> pi- pi+ pi+  from E791  [PRL 86 770 (2001)]
+  // masses and widths below correspond to what they used; there, the amplitudes were individually normalized
+  // (although not explicit) so magnitudes here are obtained after correcting for that
+  // Breit-Wigner has a factor of (-1) there which changes the relative phase of the NR wrt to the resonances
+  // thus the NR magnitude is set as negative
+  if(_flag==10) {
+    EvtResonance2 DppipipiRes11(p4_p, moms1, moms2, 1.0, 0.0, 0.150, 0.769, 1, true); // rho(770)
+    EvtResonance2 DppipipiRes12(p4_p, moms3, moms1, 1.0, 0.0, 0.150, 0.769, 1, true); // rho(770)
+    EvtResonance2 DppipipiRes21(p4_p, moms1, moms2, 2.2811,  205.7, 0.324, 0.478, 0); // sigma(500)
+    EvtResonance2 DppipipiRes22(p4_p, moms3, moms1, 2.2811,  205.7, 0.324, 0.478, 0); // sigma(500)
+    EvtResonance2 DppipipiRes31(p4_p, moms1, moms2, 0.4265,  165.0, 0.044, 0.977, 0); // f0(980) simple BW
+    EvtResonance2 DppipipiRes32(p4_p, moms3, moms1, 0.4265,  165.0, 0.044, 0.977, 0); // f0(980) simple BW
+    EvtResonance2 DppipipiRes41(p4_p, moms1, moms2, 2.0321,   57.3, 0.185, 1.275, 2, true); // f2(1270)
+    EvtResonance2 DppipipiRes42(p4_p, moms3, moms1, 2.0321,   57.3, 0.185, 1.275, 2, true); // f2(1270)
+    EvtResonance2 DppipipiRes51(p4_p, moms1, moms2, 0.7888,  105.4, 0.173, 1.434, 0); // f0(1370)
+    EvtResonance2 DppipipiRes52(p4_p, moms3, moms1, 0.7888,  105.4, 0.173, 1.434, 0); // f0(1370)
+    EvtResonance2 DppipipiRes61(p4_p, moms1, moms2, 0.7363,  319.1, 0.310, 1.465, 1, true); // rho(1450)
+    EvtResonance2 DppipipiRes62(p4_p, moms3, moms1, 0.7363,  319.1, 0.310, 1.465, 1, true); // rho(1450)
+    double pi180inv = 1.0/EvtConst::radToDegrees;  
+    amp = EvtComplex(-3.98*cos(57.3*pi180inv),-3.98*sin(57.3*pi180inv))
+        +  (DppipipiRes11.resAmpl() - DppipipiRes12.resAmpl())  //spin1
+        +  (DppipipiRes21.resAmpl() + DppipipiRes22.resAmpl()) + (DppipipiRes31.resAmpl() + DppipipiRes32.resAmpl())
+        +  (DppipipiRes41.resAmpl() + DppipipiRes42.resAmpl()) + (DppipipiRes51.resAmpl() + DppipipiRes52.resAmpl())
+        +  (DppipipiRes61.resAmpl() - DppipipiRes62.resAmpl());  //spin1
+  }
+  // Ds+ -> pi- pi+ pi+  from E791  [PRL 86 765 (2001)]
+  // masses and widths below correspond to what they used; there, the amplitudes were individually normalized
+  // (although not explicit) so magnitudes here are obtained after correcting for that
+  // Breit-Wigner has a factor of (-1) there which changes the relative phase of the NR wrt to the resonances
+  // thus the NR magnitude is set as negative
+  if(_flag==11) {
+    EvtResonance2 DspipipiRes11(p4_p, moms1, moms2, 0.288, 109., 0.150, 0.769, 1, true); // rho(770)
+    EvtResonance2 DspipipiRes12(p4_p, moms3, moms1, 0.288, 109., 0.150, 0.769, 1, true); // rho(770)
+    EvtResonance2 DspipipiRes21(p4_p, moms1, moms2, 1.0, 0.0, 0.044, 0.977, 0); // f0(980) simple BW
+    EvtResonance2 DspipipiRes22(p4_p, moms3, moms1, 1.0, 0.0, 0.044, 0.977, 0); // f0(980) simple BW
+    EvtResonance2 DspipipiRes31(p4_p, moms1, moms2, 1.075, 133., 0.185, 1.275, 2, true); // f2(1270)
+    EvtResonance2 DspipipiRes32(p4_p, moms3, moms1, 1.075, 133., 0.185, 1.275, 2, true); // f2(1270)
+    EvtResonance2 DspipipiRes41(p4_p, moms1, moms2, 2.225, 198., 0.173, 1.434, 0); // f0(1370)
+    EvtResonance2 DspipipiRes42(p4_p, moms3, moms1, 2.225, 198., 0.173, 1.434, 0); // f0(1370)
+    EvtResonance2 DspipipiRes51(p4_p, moms1, moms2, 1.107, 162., 0.310, 1.465, 1, true); // rho(1450)
+    EvtResonance2 DspipipiRes52(p4_p, moms3, moms1, 1.107, 162., 0.310, 1.465, 1, true); // rho(1450)
+    double pi180inv = 1.0/EvtConst::radToDegrees;  
+    amp = EvtComplex(-0.723*cos(181.*pi180inv),-0.723*sin(181.*pi180inv))
+        +  (DspipipiRes11.resAmpl() - DspipipiRes12.resAmpl())  //spin1
+        +  (DspipipiRes21.resAmpl() + DspipipiRes22.resAmpl()) + (DspipipiRes31.resAmpl() + DspipipiRes32.resAmpl())
+        +  (DspipipiRes41.resAmpl() + DspipipiRes42.resAmpl())
+        +  (DspipipiRes51.resAmpl() - DspipipiRes52.resAmpl());  //spin1
+  } 
+  
+  //D0 -> pi+pi-pi0
+  //PRL 99, 251801 (2007)
+  //arXiv:hep-ex/0703037
+  if(_flag==12) {
+    EvtResonance2 DpipipiRes1p(p4_p, moms2, moms3, 1.0, 0.0, 0.149, 0.775, 1, true);//rho+(770)
+    EvtResonance2 DpipipiRes1(p4_p, moms1, moms2, 0.588, 16.2, 0.149, 0.775, 1, true);//rho0(770)
+    EvtResonance2 DpipipiRes1m(p4_p, moms3, moms1, 0.714, -2.0, 0.149, 0.775, 1, true);//rho-(770)
+    EvtResonance2 DpipipiRes2p(p4_p, moms2, moms3, 0.21, -146.0, 0.400, 1.465, 1, true);//rho+(1450)
+    EvtResonance2 DpipipiRes2(p4_p, moms1, moms2, 0.33, 10.0, 0.400, 1.465, 1, true);//rho0(1450)
+    EvtResonance2 DpipipiRes2m(p4_p, moms3, moms1, 0.82, 16.0, 0.400, 1.465, 1, true);//rho-(1450)
+    EvtResonance2 DpipipiRes3p(p4_p, moms2, moms3, 2.25, -17.0, 0.250, 1.720, 1, true);//rho+(1700)
+    EvtResonance2 DpipipiRes3(p4_p, moms1, moms2, 2.51, -17.0, 0.250, 1.720, 1, true);//rho0(1700)
+    EvtResonance2 DpipipiRes3m(p4_p, moms3, moms1, 2.00, -50.0, 0.250, 1.720, 1, true);//rho-(1700)
+    EvtResonance2 DpipipiRes4(p4_p, moms1, moms2, 0.015, -59.0, 0.07, 0.980, 0);//f0(980)
+    EvtResonance2 DpipipiRes5(p4_p, moms1, moms2, 0.063, 156.0, 0.350, 1.370, 0);//f0(1370)
+    EvtResonance2 DpipipiRes6(p4_p, moms1, moms2, 0.058, 12.0, 0.109, 1.505, 0);//f0(1500)
+    EvtResonance2 DpipipiRes7(p4_p, moms1, moms2, 0.112, 51.0, 0.135, 1.720, 0);//f0(1720)
+    EvtResonance2 DpipipiRes8(p4_p, moms1, moms2, 1.04, -171.0, 0.185, 1.275, 2, true);//f2(1270)
+    EvtResonance2 DpipipiRes9(p4_p, moms1, moms2, 0.069, 8.0, 0.600, 0.400, 0);//sigma(400)
+    
+    double pi180inv = 1.0/EvtConst::radToDegrees;  
+    amp = EvtComplex(0.57*cos(-11.0*pi180inv),0.57*sin(-11.0*pi180inv))
+      + DpipipiRes1p.resAmpl() + DpipipiRes1.resAmpl() + DpipipiRes1m.resAmpl()
+      + DpipipiRes2p.resAmpl() + DpipipiRes2.resAmpl() + DpipipiRes2m.resAmpl()
+      + DpipipiRes3p.resAmpl() + DpipipiRes3.resAmpl() + DpipipiRes3m.resAmpl()
+      + DpipipiRes4.resAmpl() + DpipipiRes5.resAmpl() + DpipipiRes6.resAmpl()
+      + DpipipiRes7.resAmpl() + DpipipiRes8.resAmpl() + DpipipiRes9.resAmpl();
+    
+  } 
+  
   vertex(amp);
 
   return ;
diff --git a/TEvtGen/EvtGenModels/EvtDalitzDecayInfo.hh b/TEvtGen/EvtGenModels/EvtDalitzDecayInfo.hh
new file mode 100644 (file)
index 0000000..2ce1b91
--- /dev/null
@@ -0,0 +1,55 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtGenericDalitz.hh
+//
+// Description: Model to describe a generic dalitz decay
+//
+// Modification history:
+//
+//    DCC     16 December, 2011         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTDALITZDECAYINFO_HH
+#define EVTDALITZDECAYINFO_HH
+
+#include "EvtGenBase/EvtComplex.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtDalitzReso.hh"
+#include <vector>
+
+class EvtDalitzDecayInfo {
+public:
+
+  EvtDalitzDecayInfo(EvtId d1, EvtId d2, EvtId d3)
+    : _d1(d1), _d2(d2), _d3(d3), _probMax(0.) {}
+  ~EvtDalitzDecayInfo() {}
+
+  void addResonance(EvtComplex amp, EvtDalitzReso res) {_resonances.push_back(std::pair<EvtComplex, EvtDalitzReso>(amp,res));}
+  void addResonance(std::pair<EvtComplex,EvtDalitzReso> res) {_resonances.push_back(res);}
+  void setProbMax(double probMax) {_probMax = probMax;}
+
+  const std::vector< std::pair<EvtComplex, EvtDalitzReso> >& getResonances() const {return _resonances;}
+  double getProbMax() const {return _probMax;}
+
+  inline const EvtId& daughter1() const {return _d1;}
+  inline const EvtId& daughter2() const {return _d2;}
+  inline const EvtId& daughter3() const {return _d3;}
+
+private:
+
+  EvtId _d1, _d2, _d3;
+  std::vector<std::pair<EvtComplex, EvtDalitzReso> > _resonances;
+  double _probMax;
+
+};
+
+#endif
diff --git a/TEvtGen/EvtGenModels/EvtDalitzTable.cpp b/TEvtGen/EvtGenModels/EvtDalitzTable.cpp
new file mode 100644 (file)
index 0000000..aacbc33
--- /dev/null
@@ -0,0 +1,563 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtGenericDalitz.hh
+//
+// Description: Model to describe a generic dalitz decay
+//
+// Modification history:
+//
+//    DCC     16 December, 2011         Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenModels/EvtDalitzTable.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtParserXml.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtSpinType.hh"
+#include "EvtGenBase/EvtDalitzPlot.hh"
+#include "EvtGenBase/EvtCyclic3.hh"
+
+#include <stdlib.h>
+#include <sstream>
+
+using std::endl;
+using std::fstream;
+using std::ifstream;
+
+EvtDalitzTable::EvtDalitzTable() {
+  _dalitztable.clear();
+  _readFiles.clear();
+}
+
+EvtDalitzTable::~EvtDalitzTable() {
+  _dalitztable.clear();
+  _readFiles.clear();
+}
+
+EvtDalitzTable* EvtDalitzTable::getInstance(const std::string dec_name, bool verbose) { 
+
+  static EvtDalitzTable* theDalitzTable = 0;
+
+  if(theDalitzTable == 0) {
+    theDalitzTable = new EvtDalitzTable();
+  }
+
+  if(!theDalitzTable->fileHasBeenRead(dec_name)) {
+    theDalitzTable->readXMLDecayFile(dec_name,verbose);
+  }
+
+  return theDalitzTable;
+
+}
+
+bool EvtDalitzTable::fileHasBeenRead(const std::string dec_name) {
+  std::vector<std::string>::iterator i = _readFiles.begin();
+  for( ; i!=_readFiles.end(); i++) {
+    if((*i).compare(dec_name) == 0) {
+      return true;
+    }
+  }
+  return false;
+}
+
+void EvtDalitzTable::readXMLDecayFile(const std::string dec_name, bool verbose){
+
+  if (verbose) {
+    report(INFO,"EvtGen")<<"EvtDalitzTable: Reading in xml parameter file "<<dec_name<<endl;
+  }
+
+  _readFiles.push_back(dec_name);
+
+  EvtDalitzDecayInfo* dalitzDecay = 0;
+  double probMax = 0;
+  EvtId ipar;
+  std::string decayParent = "";
+  std::string daugStr = "";
+  EvtId daughter[3];
+
+  EvtDalitzPlot dp;
+  EvtComplex cAmp;
+  std::vector< std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> > angAndResPairs;
+  std::string shape("");
+  EvtSpinType::spintype spinType(EvtSpinType::SCALAR);
+  double mass(0.), width(0.), FFp(0.), FFr(0.);
+  std::vector<EvtFlatteParam> flatteParams;
+  //Nonres parameters
+  double alpha(0.);
+  //LASS parameters
+  double aLass(0.), rLass(0.), BLass(0.), phiBLass(0.), RLass(0.), phiRLass(0.), cutoffLass(-1.);
+
+  EvtParserXml parser;
+  parser.open(dec_name);
+
+  bool endReached = false;
+
+  while(parser.readNextTag()) {
+    //TAGS FOUND UNDER DATA
+    if(parser.getParentTagTitle() == "data") {
+      if(parser.getTagTitle() == "dalitzDecay") {
+        int nDaughters = 0;
+
+        decayParent = parser.readAttribute("particle");
+        daugStr = parser.readAttribute("daughters");
+        probMax = parser.readAttributeDouble("probMax",-1);
+
+        checkParticle(decayParent);
+        ipar=EvtPDL::getId(decayParent);
+
+        std::istringstream daugStream(daugStr);
+
+        std::string daugh;
+        while(std::getline(daugStream, daugh, ' ')) {
+          checkParticle(daugh);
+          daughter[nDaughters++] = EvtPDL::getId(daugh);
+        }
+
+        if(nDaughters!=3) {
+          report(ERROR,"EvtGen") <<
+                "Expected to find three daughters for dalitzDecay of "<<decayParent<<" near line "
+                <<parser.getLineNumber()<<", "<<"found "<<nDaughters<<endl;
+              report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+              ::abort();
+        }
+
+        double m_d1 = EvtPDL::getMass(daughter[0]), m_d2 = EvtPDL::getMass(daughter[1]), m_d3 = EvtPDL::getMass(daughter[2]), M = EvtPDL::getMass(ipar);
+
+        dp = EvtDalitzPlot( m_d1, m_d2, m_d3, M );
+
+        dalitzDecay = new EvtDalitzDecayInfo(daughter[0],daughter[1],daughter[2]);
+
+      } else if(parser.getTagTitle() == "copyDalitz") {
+        int nDaughters = 0;
+        EvtId daughter[3];
+        int nCopyDaughters = 0;
+        EvtId copyDaughter[3];
+
+        decayParent = parser.readAttribute("particle");
+        daugStr = parser.readAttribute("daughters");
+
+        std::string copyParent = parser.readAttribute("copy");
+        std::string copyDaugStr = parser.readAttribute("copyDaughters");
+
+        checkParticle(decayParent);
+        ipar=EvtPDL::getId(decayParent);
+
+        checkParticle(copyParent);
+        EvtId copypar=EvtPDL::getId(copyParent);
+
+        std::istringstream daugStream(daugStr);
+        std::istringstream copyDaugStream(copyDaugStr);
+
+        std::string daugh;
+        while(std::getline(daugStream, daugh, ' ')) {
+          checkParticle(daugh);
+          daughter[nDaughters++] = EvtPDL::getId(daugh);
+        }
+        while(std::getline(copyDaugStream, daugh, ' ')) {
+          checkParticle(daugh);
+          copyDaughter[nCopyDaughters++] = EvtPDL::getId(daugh);
+        }
+
+        if(nDaughters!=3 || nCopyDaughters!=3) {
+          report(ERROR,"EvtGen") <<
+                "Expected to find three daughters for copyDecay of "<<decayParent<<
+                " from "<<copyParent<<" near line "<<parser.getLineNumber()<<
+                ", "<<"found "<<nDaughters<<" and "<<nCopyDaughters<<endl;
+          report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
+              ::abort();
+        }
+
+        copyDecay(ipar, daughter, copypar, copyDaughter);
+
+      } else if(parser.getTagTitle() == "/data") { //end of data
+        endReached = true;
+        parser.close();
+        break;
+      }
+    //TAGS FOUND UNDER DALITZDECAY
+    } else if(parser.getParentTagTitle() == "dalitzDecay") {
+      if(parser.getTagTitle() == "resonance") {
+
+        flatteParams.clear();
+
+        //Amplitude
+        EvtComplex ampFactor(parser.readAttributeDouble("ampFactorReal",1.),
+                             parser.readAttributeDouble("ampFactorImag",0.));
+        double mag = parser.readAttributeDouble("mag",-999.);
+        double phase = parser.readAttributeDouble("phase",-999.);
+        double real = parser.readAttributeDouble("real",-999.);
+        double imag = parser.readAttributeDouble("imag",-999.);
+
+        if((real!=-999. || imag!=-999.) && mag==-999. && phase==-999.) {
+          if(real==-999.) { real = 0; }
+          if(imag==-999.) { imag = 0; }
+          mag = sqrt(real*real + imag*imag);
+          phase = atan2(imag,real) * EvtConst::radToDegrees;
+        }
+        if( mag==-999. ) {
+          mag = 1.;
+        }
+        if( phase==-999. ) {
+          phase = 0.;
+        }
+
+        cAmp = ampFactor*EvtComplex(cos(phase*1.0/EvtConst::radToDegrees),sin(phase*1.0/EvtConst::radToDegrees))*mag;
+
+        //Resonance particle properties
+        mass = 0.;
+        width = 0.;
+        spinType = EvtSpinType::SCALAR;
+
+        std::string particle = parser.readAttribute("particle");
+        if(particle != "") {
+          EvtId resId = EvtPDL::getId(particle);
+          if(resId == EvtId(-1,-1)) {
+            report(ERROR,"EvtGen") <<"Unknown particle name:"<<particle.c_str()<<endl;
+            report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+            ::abort();
+          } else {
+            mass = EvtPDL::getMeanMass(resId);
+            width = EvtPDL::getWidth(resId);
+            spinType = EvtPDL::getSpinType(resId);
+          }
+        }
+
+        width = parser.readAttributeDouble("width",width);
+        mass = parser.readAttributeDouble("mass",mass);
+        switch(parser.readAttributeInt("spin",-1)) {
+        case -1://not set here
+          break;
+        case 0:
+          spinType = EvtSpinType::SCALAR;
+          break;
+        case 1:
+          spinType = EvtSpinType::VECTOR;
+          break;
+        case 2:
+          spinType = EvtSpinType::TENSOR;
+          break;
+        default:
+          report(ERROR,"EvtGen") << "Unsupported spin near line "<<parser.getLineNumber()<<" of XML file."<<endl;
+          ::abort();
+        }
+
+        //Shape and form factors
+        shape = parser.readAttribute("shape");
+        FFp = parser.readAttributeDouble("BlattWeisskopfFactorParent",0.0);
+        FFr = parser.readAttributeDouble("BlattWeisskopfFactorResonance",1.5);
+
+        //Shape specific attributes
+        if(shape=="NonRes_Exp") {
+          alpha = parser.readAttributeDouble("alpha",0.0);
+        }
+        if(shape=="LASS") {
+          aLass = parser.readAttributeDouble("a",2.07);
+          rLass = parser.readAttributeDouble("r",3.32);
+          BLass = parser.readAttributeDouble("B",1.0);
+          phiBLass = parser.readAttributeDouble("phiB",0.0);
+          RLass = parser.readAttributeDouble("R",1.0);
+          phiRLass = parser.readAttributeDouble("phiR",0.0);
+          cutoffLass = parser.readAttributeDouble("cutoff",-1.0);
+        }
+
+        //Daughter pairs for resonance
+        angAndResPairs.clear();
+
+        std::string resDaugStr = parser.readAttribute("resDaughters");
+        if(resDaugStr != "") {
+          std::istringstream resDaugStream(resDaugStr);
+          std::string resDaug;
+          int nResDaug(0);
+          EvtId resDaughter[2];
+          while(std::getline(resDaugStream, resDaug, ' ')) {
+            checkParticle(resDaug);
+            resDaughter[nResDaug++] = EvtPDL::getId(resDaug);
+          }
+          if(nResDaug != 2) {
+            report(ERROR,"EvtGen") << "Resonance must have exactly 2 daughters near line "<<parser.getLineNumber()<<" of XML file."<<endl;
+            ::abort();
+          }
+          int nRes = getDaughterPairs(resDaughter, daughter, angAndResPairs);
+          if(nRes==0) {
+            report(ERROR,"EvtGen") << "Resonance daughters must match decay daughters near line "<<parser.getLineNumber()<<" of XML file."<<endl;
+            ::abort();
+          }
+          if(parser.readAttributeBool("normalise",true)) cAmp /= sqrt(nRes);
+        }
+        if(angAndResPairs.empty()) {
+          switch(parser.readAttributeInt("daughterPair")) {
+          case 1:
+            angAndResPairs.push_back(std::make_pair(EvtCyclic3::BC,EvtCyclic3::AB));
+            break;
+          case 2:
+            angAndResPairs.push_back(std::make_pair(EvtCyclic3::CA,EvtCyclic3::BC));
+            break;
+          case 3:
+            angAndResPairs.push_back(std::make_pair(EvtCyclic3::AB,EvtCyclic3::CA));
+            break;
+          default:
+            if(shape == "NonRes") { //We don't expect a pair for non-resonant terms but add dummy values for convenience
+              angAndResPairs.push_back(std::make_pair(EvtCyclic3::AB,EvtCyclic3::AB));
+              break;
+            }
+            report(ERROR,"EvtGen") << "Daughter pair must be 1, 2 or 3 near line "<<parser.getLineNumber()<<" of XML file."<<endl;
+            ::abort();
+          }
+        }
+
+        if(parser.isTagInline()) {
+          std::vector< std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> >::iterator it = angAndResPairs.begin();
+          for( ; it != angAndResPairs.end(); it++) {
+            std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> pairs = *it;
+            EvtDalitzReso resonance = getResonance(shape, dp, pairs.first, pairs.second, spinType, mass, width, FFp, FFr, alpha, aLass, rLass, BLass, phiBLass, RLass, phiRLass, cutoffLass);
+            dalitzDecay->addResonance(cAmp,resonance);
+          }
+        }
+      } else if(parser.getTagTitle() == "/dalitzDecay") {
+        if(probMax < 0) {
+          report(INFO,"EvtGen") << "probMax is not defined for " << decayParent << " -> " << daugStr << endl;
+          report(INFO,"EvtGen") << "Will now estimate probMax. This may take a while. Once probMax is calculated, update the XML file to skip this step in future." << endl;
+          probMax = calcProbMax(dp,dalitzDecay);
+        }
+        dalitzDecay->setProbMax(probMax);
+        addDecay(ipar, *dalitzDecay);
+        delete dalitzDecay;
+        dalitzDecay = 0;
+      } else if(verbose) {
+        report(INFO,"EvtGen") << "Unexpected tag "<<parser.getTagTitle()
+                              <<" found in XML decay file near line "
+                              <<parser.getLineNumber()<<". Tag will be ignored."<<endl;
+      }
+    //TAGS FOUND UNDER RESONANCE
+    } else if(parser.getParentTagTitle() == "resonance"){
+      if(parser.getTagTitle() == "flatteParam") {
+        EvtFlatteParam param(parser.readAttributeDouble("mass1"),
+                             parser.readAttributeDouble("mass2"),
+                             parser.readAttributeDouble("g"));
+        flatteParams.push_back(param);
+      } else if(parser.getTagTitle() == "/resonance") {
+        std::vector< std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> >::iterator it = angAndResPairs.begin();
+        for( ; it != angAndResPairs.end(); it++) {
+          std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> pairs = *it;
+          EvtDalitzReso resonance = getResonance(shape, dp, pairs.first, pairs.second, spinType, mass, width, FFp, FFr, alpha, aLass, rLass, BLass, phiBLass, RLass, phiRLass, cutoffLass);
+
+          std::vector<EvtFlatteParam>::iterator flatteIt = flatteParams.begin();
+          for( ; flatteIt != flatteParams.end(); flatteIt++) {
+            resonance.addFlatteParam((*flatteIt));
+          }
+
+          dalitzDecay->addResonance(cAmp,resonance);
+        }
+      }
+    }
+  }
+
+  if(!endReached) {
+    report(ERROR,"EvtGen") << "Either the decay file ended prematurely or the file is badly formed.\n"
+                          <<"Error occured near line"<<parser.getLineNumber()<<endl;
+    ::abort();
+  }
+}
+
+void EvtDalitzTable::checkParticle(std::string particle) {
+  if (EvtPDL::getId(particle)==EvtId(-1,-1)) {
+    report(ERROR,"EvtGen") <<"Unknown particle name:"<<particle.c_str()<<endl;
+    report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
+    ::abort();
+  }
+}
+
+void EvtDalitzTable::addDecay(EvtId parent, const EvtDalitzDecayInfo& dec) {
+  if(_dalitztable.find(parent)!=_dalitztable.end()) {
+    _dalitztable[parent].push_back(dec);
+  } else {
+    _dalitztable[parent].push_back(dec);
+  }
+}
+
+void EvtDalitzTable::copyDecay(EvtId parent, EvtId* daughters,
+                               EvtId copy, EvtId* copyd) {
+  EvtDalitzDecayInfo decay(daughters[0],daughters[1],daughters[2]);
+  std::vector<EvtDalitzDecayInfo> copyTable = getDalitzTable(copy);
+  std::vector<EvtDalitzDecayInfo>::iterator i = copyTable.begin();
+  for( ; i != copyTable.end(); i++) {
+    EvtId daughter1 = (*i).daughter1();
+    EvtId daughter2 = (*i).daughter2();
+    EvtId daughter3 = (*i).daughter3();
+
+    if((copyd[0] == daughter1 && copyd[1] == daughter2 && copyd[2] == daughter3) ||
+       (copyd[0] == daughter1 && copyd[1] == daughter3 && copyd[2] == daughter2) ||
+       (copyd[0] == daughter2 && copyd[1] == daughter1 && copyd[2] == daughter3) ||
+       (copyd[0] == daughter2 && copyd[1] == daughter3 && copyd[2] == daughter1) ||
+       (copyd[0] == daughter3 && copyd[1] == daughter1 && copyd[2] == daughter2) ||
+       (copyd[0] == daughter3 && copyd[1] == daughter2 && copyd[2] == daughter1)) {
+      decay.setProbMax((*i).getProbMax());
+      std::vector<std::pair<EvtComplex, EvtDalitzReso> >::const_iterator j = (*i).getResonances().begin();
+      for( ; j != (*i).getResonances().end(); j++) {
+        decay.addResonance((*j));
+      }
+      addDecay(parent,decay);
+      return;
+    }
+  }
+  //if we get here then there was no match
+  report(ERROR,"EvtGen") << "Did not find dalitz decays for particle:"
+         <<copy<<"\n";
+}
+
+std::vector<EvtDalitzDecayInfo> EvtDalitzTable::getDalitzTable(const EvtId& parent) {
+  std::vector<EvtDalitzDecayInfo> table;
+  if ( _dalitztable.find(parent)!=_dalitztable.end() ) {
+    table=_dalitztable[parent];
+  }
+
+  if (table.empty()){
+    report(ERROR,"EvtGen") << "Did not find dalitz decays for particle:"
+         <<parent<<"\n";
+  }
+
+  return table;
+}
+
+
+EvtDalitzReso EvtDalitzTable::getResonance(std::string shape, EvtDalitzPlot dp, EvtCyclic3::Pair angPair, EvtCyclic3::Pair resPair,
+                                           EvtSpinType::spintype spinType, double mass, double width, double FFp, double FFr, double alpha,
+                                           double aLass, double rLass, double BLass, double phiBLass, double RLass, double phiRLass, double cutoffLass) {
+  if( shape=="RBW" || shape=="RBW_CLEO") {
+    return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::RBW_CLEO, FFp, FFr );
+  } else if( shape=="RBW_CLEO_ZEMACH" ) {
+    return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::RBW_CLEO_ZEMACH, FFp, FFr );
+  } else if( shape=="GS" || shape=="GS_CLEO" ) {
+    return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::GS_CLEO, FFp, FFr );
+  } else if( shape=="GS_CLEO_ZEMACH" ) {
+    return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::GS_CLEO_ZEMACH, FFp, FFr );
+  } else if( shape=="GAUSS" || shape=="GAUSS_CLEO" ) {
+    return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::GAUSS_CLEO, FFp, FFr );
+  } else if( shape=="GAUSS_CLEO_ZEMACH" ) {
+    return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::GAUSS_CLEO_ZEMACH, FFp, FFr );
+  } else if( shape=="Flatte" ) {
+    return EvtDalitzReso( dp, resPair, mass );
+  } else if( shape=="LASS" ) {
+    return EvtDalitzReso( dp, resPair, mass, width, aLass, rLass, BLass, phiBLass, RLass, phiRLass, cutoffLass, true );
+  } else if( shape=="NonRes" ) {
+    return EvtDalitzReso( );
+  } else if( shape=="NonRes_Linear" ) {
+    return EvtDalitzReso( dp, resPair, EvtDalitzReso::NON_RES_LIN );
+  } else if( shape=="NonRes_Exp" ) {
+    return EvtDalitzReso( dp, resPair, EvtDalitzReso::NON_RES_EXP, alpha );
+  } else { //NBW
+    if( shape!="NBW") report(WARNING,"EvtGen")<<"EvtDalitzTable: shape "<<shape<<" is unknown. Defaulting to NBW."<<endl;
+    return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::NBW, FFp, FFr );
+  }
+}
+
+int EvtDalitzTable::getDaughterPairs(EvtId* resDaughter, EvtId* daughter, std::vector< std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> >& angAndResPairs) {
+  int n(0);
+  if(resDaughter[0]==daughter[0] && resDaughter[1]==daughter[1]) {
+    angAndResPairs.push_back(std::make_pair(EvtCyclic3::BC,EvtCyclic3::AB)); n++;
+  } else if(resDaughter[0]==daughter[1] && resDaughter[1]==daughter[0]) {
+    angAndResPairs.push_back(std::make_pair(EvtCyclic3::CA,EvtCyclic3::AB)); n++;
+  }
+  
+  if(resDaughter[0]==daughter[1] && resDaughter[1]==daughter[2]) {
+    angAndResPairs.push_back(std::make_pair(EvtCyclic3::CA,EvtCyclic3::BC)); n++;
+  } else if(resDaughter[0]==daughter[2] && resDaughter[1]==daughter[1]) {
+    angAndResPairs.push_back(std::make_pair(EvtCyclic3::AB,EvtCyclic3::BC)); n++;
+  }
+
+  if(resDaughter[0]==daughter[2] && resDaughter[1]==daughter[0]) {
+    angAndResPairs.push_back(std::make_pair(EvtCyclic3::AB,EvtCyclic3::CA)); n++;
+  } else if(resDaughter[0]==daughter[0] && resDaughter[1]==daughter[2]) {
+    angAndResPairs.push_back(std::make_pair(EvtCyclic3::BC,EvtCyclic3::CA)); n++;
+  }
+
+  return n;
+}
+
+double EvtDalitzTable::calcProbMax(EvtDalitzPlot dp, EvtDalitzDecayInfo* model) {
+
+  double factor = 1.2; //factor to increase our final answer by
+  int nStep(1000);      //number of steps - total points will be 3*nStep*nStep
+
+  double maxProb(0);
+  double min(0), max(0), step(0), min2(0), max2(0), step2(0);
+
+  //first do AB, BC
+  min = dp.qAbsMin(EvtCyclic3::AB);
+  max = dp.qAbsMax(EvtCyclic3::AB);
+  step = (max-min)/nStep;
+  for(int i=0; i<nStep; ++i) {
+    double qAB = min + i*step;
+    min2 = dp.qMin(EvtCyclic3::BC,EvtCyclic3::AB,qAB);
+    max2 = dp.qMax(EvtCyclic3::BC,EvtCyclic3::AB,qAB);
+    step2 = (max2-min2)/nStep;
+    for(int j=0; j<nStep; ++j) {
+      double qBC = min2+ j*step2;
+      EvtDalitzCoord coord(EvtCyclic3::AB,qAB,EvtCyclic3::BC,qBC);
+      EvtDalitzPoint point(dp,coord);
+      double prob = calcProb(point,model);
+      if(prob > maxProb) maxProb = prob;
+    }
+  }
+
+  //next do BC, CA
+  min = dp.qAbsMin(EvtCyclic3::BC);
+  max = dp.qAbsMax(EvtCyclic3::BC);
+  step = (max-min)/nStep;
+  for(int i=0; i<nStep; ++i) {
+    double qBC = min + i*step;
+    min2 = dp.qMin(EvtCyclic3::CA,EvtCyclic3::BC,qBC);
+    max2 = dp.qMax(EvtCyclic3::CA,EvtCyclic3::BC,qBC);
+    step2 = (max2-min2)/nStep;
+    for(int j=0; j<nStep; ++j) {
+      double qCA = min2+ j*step2;
+      EvtDalitzCoord coord(EvtCyclic3::BC,qBC,EvtCyclic3::CA,qCA);
+      EvtDalitzPoint point(dp,coord);
+      double prob = calcProb(point,model);
+      if(prob > maxProb) maxProb = prob;
+    }
+  }
+
+  //finally do CA, AB
+  min = dp.qAbsMin(EvtCyclic3::CA);
+  max = dp.qAbsMax(EvtCyclic3::CA);
+  step = (max-min)/nStep;
+  for(int i=0; i<nStep; ++i) {
+    double qCA = min + i*step;
+    min2 = dp.qMin(EvtCyclic3::AB,EvtCyclic3::CA,qCA);
+    max2 = dp.qMax(EvtCyclic3::AB,EvtCyclic3::CA,qCA);
+    step2 = (max2-min2)/nStep;
+    for(int j=0; j<nStep; ++j) {
+      double qAB = min2+ j*step2;
+      EvtDalitzCoord coord(EvtCyclic3::CA,qCA,EvtCyclic3::AB,qAB);
+      EvtDalitzPoint point(dp,coord);
+      double prob = calcProb(point,model);
+      if(prob > maxProb) maxProb = prob;
+    }
+  }
+  report(INFO,"EvtGen") << "Largest probability found was " << maxProb << endl;
+  report(INFO,"EvtGen") << "Setting probMax to " << factor*maxProb << endl;
+  return factor*maxProb;
+}
+
+double EvtDalitzTable::calcProb(EvtDalitzPoint point, EvtDalitzDecayInfo* model) {
+
+  std::vector<std::pair<EvtComplex,EvtDalitzReso> > resonances = model->getResonances();
+
+  EvtComplex amp(0,0);
+  std::vector<std::pair<EvtComplex,EvtDalitzReso> >::iterator i = resonances.begin();
+  for( ; i!= resonances.end(); i++) {
+    std::pair<EvtComplex,EvtDalitzReso> res = (*i);
+    amp += res.first * res.second.evaluate( point );
+  }
+  return abs2(amp);
+}
diff --git a/TEvtGen/EvtGenModels/EvtDalitzTable.hh b/TEvtGen/EvtGenModels/EvtDalitzTable.hh
new file mode 100644 (file)
index 0000000..b186dac
--- /dev/null
@@ -0,0 +1,73 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtGenericDalitz.hh
+//
+// Description: Model to describe a generic dalitz decay
+//
+// Modification history:
+//
+//    DCC     16 December, 2011         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTDALITZTABLE_HPP
+#define EVTDALITZTABLE_HPP
+
+#include "EvtGenModels/EvtDalitzDecayInfo.hh"
+#include "EvtGenBase/EvtId.hh"
+
+#include "EvtGenBase/EvtDalitzReso.hh"
+#include "EvtGenBase/EvtDalitzPlot.hh"
+#include "EvtGenBase/EvtCyclic3.hh"
+#include "EvtGenBase/EvtSpinType.hh"
+
+#include <map>
+#include <string>
+#include <vector>
+
+class EvtDalitzTable {
+public:
+
+  static EvtDalitzTable* getInstance(const std::string dec_name="", bool verbose=true);
+
+  bool fileHasBeenRead(const std::string dec_name);
+  void readXMLDecayFile(const std::string dec_name, bool verbose=true);
+  void checkParticle(std::string particle);
+
+  void addDecay(EvtId parent, const EvtDalitzDecayInfo& dec);
+  void copyDecay(EvtId parent, EvtId* daughters, EvtId copy, EvtId* copyd);
+
+  std::vector<EvtDalitzDecayInfo> getDalitzTable(const EvtId& parent);
+
+protected:
+
+  EvtDalitzTable();
+  ~EvtDalitzTable();
+
+private:
+
+  EvtDalitzReso getResonance(std::string shape, EvtDalitzPlot dp, EvtCyclic3::Pair angPair, EvtCyclic3::Pair resPair,
+                             EvtSpinType::spintype spinType, double mass, double width, double FFp, double FFr, double alpha,
+                             double aLass, double rLass, double BLass, double phiBLass, double RLass, double phiRLass, double cutoffLass);
+  int getDaughterPairs(EvtId* resDaughter, EvtId* daughter, std::vector< std::pair<EvtCyclic3::Pair,EvtCyclic3::Pair> >& angAndResPairs);
+
+  std::map<EvtId, std::vector<EvtDalitzDecayInfo> > _dalitztable;
+  std::vector<std::string> _readFiles;
+
+  EvtDalitzTable(const EvtDalitzTable&);
+  EvtDalitzTable& operator=(const EvtDalitzTable&);
+
+  //to calculate probMax
+  double calcProbMax(EvtDalitzPlot dp, EvtDalitzDecayInfo* model);
+  double calcProb(EvtDalitzPoint point, EvtDalitzDecayInfo* model);
+};
+
+#endif
diff --git a/TEvtGen/EvtGenModels/EvtEta2MuMuGamma.cpp b/TEvtGen/EvtGenModels/EvtEta2MuMuGamma.cpp
new file mode 100644 (file)
index 0000000..8343e8b
--- /dev/null
@@ -0,0 +1,117 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtPi0Dalitz.cc
+//
+// Description: pi0 -> e+ e- gamma 
+//
+// Modification history:
+//
+//    DJL/RYD    June 30, 1998          Module created
+//
+//------------------------------------------------------------------------
+//
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include <fstream>
+#include <stdio.h>
+#include <string>
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenModels/EvtEta2MuMuGamma.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtDiracSpinor.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+using std::fstream;
+
+EvtEta2MuMuGamma::~EvtEta2MuMuGamma() {}
+
+std::string EvtEta2MuMuGamma::getName(){
+
+    return "ETA2MUMUGAMMA";
+
+}
+
+EvtDecayBase* EvtEta2MuMuGamma::clone(){
+
+  return new EvtEta2MuMuGamma;
+
+}
+
+
+void EvtEta2MuMuGamma::initProbMax(){
+
+  setProbMax(3.5);
+
+}
+
+
+void EvtEta2MuMuGamma::init(){
+
+  // check that there are 0 arguments
+  checkNArg(0);
+  checkNDaug(3);
+
+    
+  checkSpinParent(EvtSpinType::SCALAR);
+
+  checkSpinDaughter(0,EvtSpinType::DIRAC);
+  checkSpinDaughter(1,EvtSpinType::DIRAC);
+  checkSpinDaughter(2,EvtSpinType::PHOTON);
+
+}
+
+
+void EvtEta2MuMuGamma::decay( EvtParticle *p){
+
+  EvtParticle *ep, *em, *gamma;
+  setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),false,
+                                   0.00000002,0,1));
+
+  ep=p->getDaug(0);
+  em=p->getDaug(1);
+  gamma=p->getDaug(2);
+
+  // the next four lines generates events with a weight such that
+  // the efficiency for selecting them is good. The parameter below of
+  // 0.1 is the size of the peak at low q^2 (in arbitrary units).
+  // The value of 0.1 is appropriate for muons. 
+  // when you use this remember to remove the cut on q^2!
+   
+
+  //ep em invariant mass^2
+  double m2=(ep->getP4()+em->getP4()).mass2();
+  EvtVector4R q=ep->getP4()+em->getP4();
+  //Just use the prob summed over spins...
+
+  EvtTensor4C w,v;
+
+  v=2.0*(gamma->getP4()*q)*EvtGenFunctions::directProd(q,gamma->getP4()) 
+    - (gamma->getP4()*q)*(gamma->getP4()*q)*EvtTensor4C::g()
+    -m2*EvtGenFunctions::directProd(gamma->getP4(),gamma->getP4());
+  w=4.0*( EvtGenFunctions::directProd(ep->getP4(),em->getP4()) + 
+          EvtGenFunctions::directProd(em->getP4(),ep->getP4())
+          -EvtTensor4C::g()*(ep->getP4()*em->getP4()-ep->getP4().mass2()));
+
+  double prob=(real(cont(v,w)))/(m2*m2);
+  prob *=(1.0/( (0.768*0.768-m2)*(0.768*0.768-m2)
+           +0.768*0.768*0.151*0.151));
+
+  //  report(INFO,"EvtGen") << "prob is "<<prob<<endl;
+  setProb(prob);
+
+  return;
+}
+
+
similarity index 73%
rename from TEvtGen/EvtGenModels/EvtJscont.hh
rename to TEvtGen/EvtGenModels/EvtEta2MuMuGamma.hh
index 782cac6d03a2de224d50cc162cc605a7bde511c6..d1601f55e82811cb360a28c84da1e375a3186a08 100644 (file)
@@ -8,7 +8,7 @@
 // Copyright Information: See EvtGen/COPYRIGHT
 //      Copyright (C) 1998      Caltech, UCSB
 //
-// Module: EvtGen/EvtJscont.hh
+// Module: EvtGen/EvtPi0Dalitz.hh
 //
 // Description:
 //
 //
 //------------------------------------------------------------------------
 
-#ifndef EVTJSCONT_HH
-#define EVTJSCONT_HH
+#ifndef EVTETA2MUMUGAMMA_HH
+#define EVTETA2MUMUGAMMA_HH
 
-#include "EvtGenBase/EvtDecayIncoherent.hh"
+#include "EvtGenBase/EvtDecayProb.hh"
 
 class EvtParticle;
 
-class EvtJscont:public  EvtDecayIncoherent  {
+class EvtEta2MuMuGamma:public  EvtDecayProb  {
 
 public:
 
-  EvtJscont() {}
-  virtual ~EvtJscont();
+  EvtEta2MuMuGamma() {}
+  virtual ~EvtEta2MuMuGamma();
 
   std::string getName();
   EvtDecayBase* clone();
@@ -38,8 +38,7 @@ public:
   void init();
   void initProbMax();
 
-  void decay(EvtParticle *p); 
-
+  void decay(EvtParticle *p);
 };
 
 #endif
diff --git a/TEvtGen/EvtGenModels/EvtGenModelsLinkDef.h b/TEvtGen/EvtGenModels/EvtGenModelsLinkDef.h
deleted file mode 100644 (file)
index cec501d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifdef __CINT__
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#endif
diff --git a/TEvtGen/EvtGenModels/EvtGenModelsLinkDefOLD.h b/TEvtGen/EvtGenModels/EvtGenModelsLinkDefOLD.h
deleted file mode 100644 (file)
index ef4ade1..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-#ifdef __CINT__
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-#pragma link C++ class EvtBBScalar+;
-#pragma link C++ class EvtBHadronic+;
-#pragma link C++ class EvtBTo3piCP+;
-#pragma link C++ class EvtBTo4piCP+;
-#pragma link C++ class EvtBToKpipiCP+;
-#pragma link C++ class EvtBToPlnuBK+;
-#pragma link C++ class EvtBToPlnuBKFF+;
-#pragma link C++ class EvtBToVlnuBall+;
-#pragma link C++ class EvtBToVlnuBallFF+;
-#pragma link C++ class EvtBsquark+;
-#pragma link C++ class EvtBto2piCPiso+;
-#pragma link C++ class EvtBtoKD3P+;
-#pragma link C++ class EvtBtoKpiCPiso+;
-#pragma link C++ class EvtBtoXsEtap+;
-#pragma link C++ class EvtBtoXsgamma+;
-#pragma link C++ class EvtBtoXsgammaAbsModel+;
-#pragma link C++ class EvtBtoXsgammaAliGreub+;
-#pragma link C++ class EvtBtoXsgammaFermiUtil+;
-#pragma link C++ class EvtBtoXsgammaFixedMass+;
-#pragma link C++ class EvtBtoXsgammaFlatEnergy+;
-#pragma link C++ class EvtBtoXsgammaKagan+;
-#pragma link C++ class EvtBtoXsgammaRootFinder+;
-#pragma link C++ class EvtBtoXsll+;
-#pragma link C++ class EvtBtoXsllUtil+;
-#pragma link C++ class EvtCBTo3piMPP+;
-#pragma link C++ class EvtCBTo3piP00+;
-#pragma link C++ class EvtD0mixDalitz+;
-#pragma link C++ class EvtDDalitz+;
-#pragma link C++ class EvtDMix+;
-#pragma link C++ class EvtEtaDalitz+;
-#pragma link C++ class EvtFlatQ2+;
-#pragma link C++ class EvtGoityRoberts+;
-#pragma link C++ class EvtHQET+;
-#pragma link C++ class EvtHQET2+;
-#pragma link C++ class EvtHQET2FF+;
-#pragma link C++ class EvtHQETFF+;
-#pragma link C++ class EvtHelAmp+;
-#pragma link C++ class EvtHypNonLepton+;
-#pragma link C++ class EvtISGW+;
-#pragma link C++ class EvtISGW2+;
-#pragma link C++ class EvtISGW2FF+;
-#pragma link C++ class EvtISGWFF+;
-#pragma link C++ class EvtItgAbsFunction+;
-#pragma link C++ class EvtItgAbsIntegrator+;
-#pragma link C++ class EvtItgFourCoeffFcn+;
-#pragma link C++ class EvtItgFunction+;
-#pragma link C++ class EvtItgPtrFunction+;
-#pragma link C++ class EvtItgSimpsonIntegrator+;
-#pragma link C++ class EvtItgThreeCoeffFcn+;
-#pragma link C++ class EvtItgTwoCoeffFcn+;
-#pragma link C++ class EvtJetSet+;
-#pragma link C++ class EvtJetSetCDF+;
-#pragma link C++ class EvtJscont+;
-#pragma link C++ class EvtJscontCDF+;
-#pragma link C++ class EvtKKLambdaC+;
-#pragma link C++ class EvtKKLambdaCFF+;
-#pragma link C++ class EvtKstarnunu+;
-#pragma link C++ class EvtKstarstargamma+;
-#pragma link C++ class EvtLNuGamma+;
-#pragma link C++ class EvtLambdaP_BarGamma+;
-#pragma link C++ class EvtLb2Lll+;
-#pragma link C++ class EvtMelikhov+;
-#pragma link C++ class EvtMelikhovFF+;
-#pragma link C++ class EvtModelReg+;
-#pragma link C++ class EvtMultibody+;
-#pragma link C++ class EvtOmegaDalitz+;
-#pragma link C++ class EvtPFermi+;
-#pragma link C++ class EvtPHOTOS+;
-#pragma link C++ class EvtPartWave+;
-#pragma link C++ class EvtPhiDalitz+;
-#pragma link C++ class EvtPhsp+;
-#pragma link C++ class EvtPi0Dalitz+;
-#pragma link C++ class EvtPropSLPole+;
-#pragma link C++ class EvtPto3P+;
-#pragma link C++ class EvtPyGaGa+;
-#pragma link C++ class EvtPycont+;
-#pragma link C++ class EvtPythia+;
-#pragma link C++ class EvtSLBKPole+;
-#pragma link C++ class EvtSLBKPoleFF+;
-#pragma link C++ class EvtSLN+;
-#pragma link C++ class EvtSLPole+;
-#pragma link C++ class EvtSLPoleFF+;
-#pragma link C++ class EvtSSDCP+;
-#pragma link C++ class EvtSSSCP+;
-#pragma link C++ class EvtSSSCPT+;
-#pragma link C++ class EvtSSSCPpng+;
-#pragma link C++ class EvtSTS+;
-#pragma link C++ class EvtSTSCP+;
-#pragma link C++ class EvtSVPCP+;
-#pragma link C++ class EvtSVPHelAmp+;
-#pragma link C++ class EvtSVS+;
-#pragma link C++ class EvtSVSCP+;
-#pragma link C++ class EvtSVSCPLH+;
-#pragma link C++ class EvtSVSCPiso+;
-#pragma link C++ class EvtSVSNONCPEIGEN+;
-#pragma link C++ class EvtSVVCP+;
-#pragma link C++ class EvtSVVCPLH+;
-#pragma link C++ class EvtSVVHelAmp+;
-#pragma link C++ class EvtSVVHelCPMix+;
-#pragma link C++ class EvtSVVNONCPEIGEN+;
-#pragma link C++ class EvtSingleParticle+;
-#pragma link C++ class EvtSll+;
-#pragma link C++ class EvtTSS+;
-#pragma link C++ class EvtTVSPwave+;
-#pragma link C++ class EvtTauHadnu+;
-#pragma link C++ class EvtTauScalarnu+;
-#pragma link C++ class EvtTauVectornu+;
-#pragma link C++ class EvtTaulnunu+;
-#pragma link C++ class EvtVPHOtoV+;
-#pragma link C++ class EvtVPHOtoVISR+;
-#pragma link C++ class EvtVPHOtoVISRHi+;
-#pragma link C++ class EvtVSPPwave+;
-#pragma link C++ class EvtVSS+;
-#pragma link C++ class EvtVSSBMixCPT+;
-#pragma link C++ class EvtVSSMix+;
-#pragma link C++ class EvtVVP+;
-#pragma link C++ class EvtVVPIPI_WEIGHTED+;
-#pragma link C++ class EvtVVSPwave+;
-#pragma link C++ class EvtVVpipi+;
-#pragma link C++ class EvtVectorIsr+;
-#pragma link C++ class EvtVll+;
-#pragma link C++ class EvtVtoSll+;
-#pragma link C++ class EvtVub+;
-#pragma link C++ class EvtVubAC+;
-#pragma link C++ class EvtVubBLNP+;
-#pragma link C++ class EvtVubBLNPHybrid+;
-#pragma link C++ class EvtVubHybrid+;
-#pragma link C++ class EvtVubNLO+;
-#pragma link C++ class EvtVubdGamma+;
-#pragma link C++ class EvtWilsonCoeficients+;
-#pragma link C++ class EvtY3SToY1SpipiMoxhay+;
-#pragma link C++ class EvtYmSToYnSpipiCLEO+;
-#pragma link C++ class EvtbTosllAli+;
-#pragma link C++ class EvtbTosllAliFF+;
-#pragma link C++ class EvtbTosllAmp+;
-#pragma link C++ class EvtbTosllBall+;
-#pragma link C++ class EvtbTosllBallFF+;
-#pragma link C++ class EvtbTosllScalarAmp+;
-#pragma link C++ class EvtbTosllVectorAmp+;
-//#pragma link C++ class rly+;
-#endif
diff --git a/TEvtGen/EvtGenModels/EvtGenericDalitz.cpp b/TEvtGen/EvtGenModels/EvtGenericDalitz.cpp
new file mode 100644 (file)
index 0000000..49ee6f7
--- /dev/null
@@ -0,0 +1,122 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtGenericDalitz.hh
+//
+// Description: Model to describe a generic dalitz decay
+//
+// Modification history:
+//
+//    DCC     16 December, 2011         Module created
+//
+//------------------------------------------------------------------------
+
+#include "EvtGenModels/EvtGenericDalitz.hh"
+#include "EvtGenModels/EvtDalitzTable.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtDalitzPoint.hh"
+#include "EvtGenBase/EvtPDL.hh"
+
+std::string EvtGenericDalitz::getName() {
+  return "GENERIC_DALITZ";
+}
+
+EvtDecayBase* EvtGenericDalitz::clone() {
+  return new EvtGenericDalitz();
+}
+
+void EvtGenericDalitz::init() {
+
+  checkNArg(1);
+
+  EvtId parnum=getParentId();
+  EvtId d1=getDaug(0);
+  EvtId d2=getDaug(1);
+  EvtId d3=getDaug(2);
+
+  std::vector<EvtDalitzDecayInfo> decays = EvtDalitzTable::getInstance(getArgStr(0))->getDalitzTable(parnum);
+
+  std::vector<EvtDalitzDecayInfo>::iterator i = decays.begin();
+  for( ; i != decays.end(); i++) {
+    EvtId daughter1 = (*i).daughter1();
+    EvtId daughter2 = (*i).daughter2();
+    EvtId daughter3 = (*i).daughter3();
+
+    if(d1 == daughter1 && d2 == daughter2 && d3 == daughter3) {
+      _d1 = 0;
+      _d2 = 1;
+      _d3 = 2;
+    } else if(d1 == daughter1 && d2 == daughter3 && d3 == daughter2) {
+      _d1 = 0;
+      _d2 = 2;
+      _d3 = 1;
+    } else if(d1 == daughter2 && d2 == daughter1 && d3 == daughter3) {
+      _d1 = 1;
+      _d2 = 0;
+      _d3 = 2;
+    } else if(d1 == daughter2 && d2 == daughter3 && d3 == daughter1) {
+      _d1 = 1;
+      _d2 = 2;
+      _d3 = 0;
+    } else if(d1 == daughter3 && d2 == daughter1 && d3 == daughter2) {
+      _d1 = 2;
+      _d2 = 0;
+      _d3 = 1;
+    } else if(d1 == daughter3 && d2 == daughter2 && d3 == daughter1) {
+      _d1 = 2;
+      _d2 = 1;
+      _d3 = 0;
+    } else {
+      continue;
+    }
+
+    _resonances = (*i).getResonances();
+    setProbMax((*i).getProbMax());
+    return;
+  }
+}
+
+void EvtGenericDalitz::decay(EvtParticle *p) {
+
+  p->initializePhaseSpace(getNDaug(),getDaugs());
+
+  EvtVector4R p4_d1 = p->getDaug(_d1)->getP4();
+  EvtVector4R p4_d2 = p->getDaug(_d2)->getP4();
+  EvtVector4R p4_d3 = p->getDaug(_d3)->getP4();
+
+  double mA = p->getDaug(_d1)->mass();
+  double mB = p->getDaug(_d2)->mass();
+  double mC = p->getDaug(_d3)->mass();
+
+  double m2AB = ( p4_d1 + p4_d2 ).mass2();
+  double m2CA = ( p4_d1 + p4_d3 ).mass2();
+  double m2BC = ( p4_d2 + p4_d3 ).mass2();
+
+  EvtDalitzPoint point( mA, mB, mC, m2AB, m2BC, m2CA );
+
+  EvtComplex amp(0,0);
+  std::vector<std::pair<EvtComplex,EvtDalitzReso> >::iterator i = _resonances.begin();
+  for( ; i!= _resonances.end(); i++) {
+    std::pair<EvtComplex,EvtDalitzReso> res = (*i);
+    amp += res.first * res.second.evaluate( point );
+  }
+
+  vertex(amp);
+  return;
+}
+
+std::string EvtGenericDalitz::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "xmlFile";
+  default:
+    return "";
+  }
+}
diff --git a/TEvtGen/EvtGenModels/EvtGenericDalitz.hh b/TEvtGen/EvtGenModels/EvtGenericDalitz.hh
new file mode 100644 (file)
index 0000000..25cd1b0
--- /dev/null
@@ -0,0 +1,55 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtGenericDalitz.hh
+//
+// Description: Model to describe a generic dalitz decay
+//
+// Modification history:
+//
+//    DCC     16 December, 2011         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTGENERICDALITZ_HH
+#define EVTGENERICDALITZ_HH
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtFlatte.hh"
+#include "EvtGenBase/EvtDalitzReso.hh"
+#include <string>
+#include <vector>
+
+class EvtParticle;
+
+class EvtGenericDalitz:public  EvtDecayAmp  {
+
+public:
+
+  EvtGenericDalitz() {}
+  virtual ~EvtGenericDalitz() {}
+
+  std::string getName();
+  EvtDecayBase* clone();
+
+  void init();
+  void initProbMax() {};//prob max will be set in init
+
+  void decay(EvtParticle *p); 
+
+  std::string getParamName(int i);
+
+private:
+
+  int _d1,_d2,_d3;
+  std::vector<std::pair<EvtComplex,EvtDalitzReso> > _resonances;
+};
+
+#endif
similarity index 87%
rename from TEvtGen/EvtGenModels/EvtGoityRoberts.cxx
rename to TEvtGen/EvtGenModels/EvtGoityRoberts.cpp
index b020575fad232f913e9cdd066d8320ddce600a19..743f5c1cf2408bc3e45499e8cc21b94de5b1205d 100644 (file)
@@ -95,7 +95,7 @@ void EvtGoityRoberts::decay( EvtParticle *p){
 }
 
 void EvtGoityRoberts::DecayBDstarpilnuGR(EvtParticle *pb,EvtId ndstar,
-                                        EvtId nlep, EvtId nnu)
+                                        EvtId nlep, EvtId /*nnu*/)
 {
 
   pb->initializePhaseSpace(getNDaug(),getDaugs());
@@ -254,32 +254,32 @@ void EvtGoityRoberts::DecayBDstarpilnuGR(EvtParticle *pb,EvtId ndstar,
   g_metric.setdiag(1.0,-1.0,-1.0,-1.0);
 
   if (nlep==EM||nlep==MUM){ 
-    omega=EvtComplex(0.0,0.5)*dual(h1*mb*md*directProd(v,vp)+
-                             h2*mb*directProd(v,p4_pi)+
-                             h3*md*directProd(vp,p4_pi))+
-        f1*mb*directProd(v,p4_pi)+f2*md*directProd(vp,p4_pi)+
-                       f3*directProd(p4_pi,p4_pi)+f4*mb*mb*directProd(v,v)+
-        f5*mb*md*directProd(vp,v)+f6*mb*directProd(p4_pi,v)+k*g_metric+
-        EvtComplex(0.0,0.5)*directProd(dual(directProd(vp,p4_pi)).cont2(v),
+    omega=EvtComplex(0.0,0.5)*dual(h1*mb*md*EvtGenFunctions::directProd(v,vp)+
+                             h2*mb*EvtGenFunctions::directProd(v,p4_pi)+
+                             h3*md*EvtGenFunctions::directProd(vp,p4_pi))+
+        f1*mb*EvtGenFunctions::directProd(v,p4_pi)+f2*md*EvtGenFunctions::directProd(vp,p4_pi)+
+                       f3*EvtGenFunctions::directProd(p4_pi,p4_pi)+f4*mb*mb*EvtGenFunctions::directProd(v,v)+
+        f5*mb*md*EvtGenFunctions::directProd(vp,v)+f6*mb*EvtGenFunctions::directProd(p4_pi,v)+k*g_metric+
+        EvtComplex(0.0,0.5)*EvtGenFunctions::directProd(dual(EvtGenFunctions::directProd(vp,p4_pi)).cont2(v),
                               (g1*p4_pi+g2*mb*v))+
-        EvtComplex(0.0,0.5)*directProd((g3*mb*v+g4*md*vp+g5*p4_pi),
-                             dual(directProd(vp,p4_pi)).cont2(v));
+        EvtComplex(0.0,0.5)*EvtGenFunctions::directProd((g3*mb*v+g4*md*vp+g5*p4_pi),
+                             dual(EvtGenFunctions::directProd(vp,p4_pi)).cont2(v));
 
    l1=EvtLeptonVACurrent(lepton->spParent(0),neutrino->spParentNeutrino());
    l2=EvtLeptonVACurrent(lepton->spParent(1),neutrino->spParentNeutrino());
   }
   else{
     if (nlep==EP||nlep==MUP){ 
-      omega=EvtComplex(0.0,-0.5)*dual(h1*mb*md*directProd(v,vp)+
-                             h2*mb*directProd(v,p4_pi)+
-                                      h3*md*directProd(vp,p4_pi))+
-        f1*mb*directProd(v,p4_pi)+f2*md*directProd(vp,p4_pi)+
-                       f3*directProd(p4_pi,p4_pi)+f4*mb*mb*directProd(v,v)+
-        f5*mb*md*directProd(vp,v)+f6*mb*directProd(p4_pi,v)+k*g_metric+
-        EvtComplex(0.0,-0.5)*directProd(dual(directProd(vp,p4_pi)).cont2(v),
+      omega=EvtComplex(0.0,-0.5)*dual(h1*mb*md*EvtGenFunctions::directProd(v,vp)+
+                             h2*mb*EvtGenFunctions::directProd(v,p4_pi)+
+                                      h3*md*EvtGenFunctions::directProd(vp,p4_pi))+
+        f1*mb*EvtGenFunctions::directProd(v,p4_pi)+f2*md*EvtGenFunctions::directProd(vp,p4_pi)+
+                       f3*EvtGenFunctions::directProd(p4_pi,p4_pi)+f4*mb*mb*EvtGenFunctions::directProd(v,v)+
+        f5*mb*md*EvtGenFunctions::directProd(vp,v)+f6*mb*EvtGenFunctions::directProd(p4_pi,v)+k*g_metric+
+        EvtComplex(0.0,-0.5)*EvtGenFunctions::directProd(dual(EvtGenFunctions::directProd(vp,p4_pi)).cont2(v),
                               (g1*p4_pi+g2*mb*v))+
-        EvtComplex(0.0,-0.5)*directProd((g3*mb*v+g4*md*vp+g5*p4_pi),
-                             dual(directProd(vp,p4_pi)).cont2(v));
+        EvtComplex(0.0,-0.5)*EvtGenFunctions::directProd((g3*mb*v+g4*md*vp+g5*p4_pi),
+                             dual(EvtGenFunctions::directProd(vp,p4_pi)).cont2(v));
 
    l1=EvtLeptonVACurrent(neutrino->spParentNeutrino(),lepton->spParent(0));
    l2=EvtLeptonVACurrent(neutrino->spParentNeutrino(),lepton->spParent(1));
@@ -307,7 +307,7 @@ void EvtGoityRoberts::DecayBDstarpilnuGR(EvtParticle *pb,EvtId ndstar,
 }
 
 void EvtGoityRoberts::DecayBDpilnuGR(EvtParticle *pb,EvtId nd,
-                EvtId nlep, EvtId nnu)
+                                    EvtId nlep, EvtId /*nnu*/)
 
 {
   //added by Lange Jan4,2000
@@ -401,7 +401,7 @@ void EvtGoityRoberts::DecayBDpilnuGR(EvtParticle *pb,EvtId nd,
   EvtVector4C omega;
 
   if ( nlep==EM|| nlep==MUM ) {
-    omega=EvtComplex(0.0,-1.0)*h*mb*md*dual(directProd(vp,p4_pi)).cont2(v)+
+    omega=EvtComplex(0.0,-1.0)*h*mb*md*dual(EvtGenFunctions::directProd(vp,p4_pi)).cont2(v)+
                  a1*p4_pi+a2*mb*v+a3*md*vp;
     l1=EvtLeptonVACurrent(
              lepton->spParent(0),neutrino->spParentNeutrino());
@@ -410,7 +410,7 @@ void EvtGoityRoberts::DecayBDpilnuGR(EvtParticle *pb,EvtId nd,
   }
   else{
     if ( nlep==EP|| nlep==MUP ) {
-     omega=EvtComplex(0.0,1.0)*h*mb*md*dual(directProd(vp,p4_pi)).cont2(v)+
+     omega=EvtComplex(0.0,1.0)*h*mb*md*dual(EvtGenFunctions::directProd(vp,p4_pi)).cont2(v)+
                  a1*p4_pi+a2*mb*v+a3*md*vp;
      l1=EvtLeptonVACurrent(
               neutrino->spParentNeutrino(),lepton->spParent(0));
similarity index 86%
rename from TEvtGen/EvtGenModels/EvtHQET2FF.cxx
rename to TEvtGen/EvtGenModels/EvtHQET2FF.cpp
index 2811acc7114c60978261bc75e5d4cf02b223778a..08072beabf712d326ad86d68dd25820132c210d7 100644 (file)
@@ -110,3 +110,19 @@ void EvtHQET2FF::getbaryonff(EvtId, EvtId, double, double, double*,
   ::abort();
 
 }
+
+void EvtHQET2FF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                           double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtHQET2FF.\n";
+  ::abort();
+
+}
+
+void EvtHQET2FF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                            double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtHQET2FF.\n";
+  ::abort();
+
+}
index a17e9b62864aca53da7eb45f22cf6c18324c33df..a42b04bd333e903c333e8ce3cc477947bfa373c3 100644 (file)
@@ -35,6 +35,11 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
 
 private:
   double r1_1;
similarity index 84%
rename from TEvtGen/EvtGenModels/EvtHQETFF.cxx
rename to TEvtGen/EvtGenModels/EvtHQETFF.cpp
index b9240500b35e2b32b56b0ffa493bab0fc2abebf9..5f59c87232acbef311b3f64ff9f57c7eb6efc3d2 100644 (file)
@@ -108,3 +108,19 @@ void EvtHQETFF::getbaryonff(EvtId, EvtId, double, double, double*,
 
 }
 
+
+void EvtHQETFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                          double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtHQETFF.\n";
+  ::abort();
+
+}
+
+void EvtHQETFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                           double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtHQETFF.\n";
+  ::abort();
+
+}
index 7ca4ea5c8157b8388b070e08523e04017fcbad60..f7d89cfd0f4b180396734bd3f0180a6f73607b2f 100644 (file)
@@ -43,6 +43,11 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
 
 private:
   double r1;
similarity index 99%
rename from TEvtGen/EvtGenModels/EvtHypNonLepton.cxx
rename to TEvtGen/EvtGenModels/EvtHypNonLepton.cpp
index dedfc17ea0dced940abb8f7768fd7fbba1ab467a..2c422b7de88e66ef404c1bed788971ce46029cab 100644 (file)
@@ -130,7 +130,7 @@ void EvtHypNonLepton::calcAmp(EvtAmp *amp,EvtParticle *parent){
 
   static long noTries=0;
   int i;
-  EvtComplex Matrix[2][2],B_to_A;
+  EvtComplex Matrix[2][2];
 
   //G_F  = 1.16637e-5;
   //M_pi = 0.13957;
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtISGW2.cxx
rename to TEvtGen/EvtGenModels/EvtISGW2.cpp
index 07d5c953370cf67db3984b15993fb2b350e5c550..b436d2fc4ff48dc4fd0e9073aaa4f0ab7a376556 100644 (file)
@@ -202,11 +202,6 @@ void EvtISGW2::initProbMax() {
   static EvtId K2ST0=EvtPDL::getId("K_2*0");
   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
 
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
   static EvtId PHI=EvtPDL::getId("phi");
   static EvtId DSP=EvtPDL::getId("D_s+");
   static EvtId DSM=EvtPDL::getId("D_s-");
diff --git a/TEvtGen/EvtGenModels/EvtISGW2FF.cpp b/TEvtGen/EvtGenModels/EvtISGW2FF.cpp
new file mode 100644 (file)
index 0000000..2256c0f
--- /dev/null
@@ -0,0 +1,1811 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtISGW2FF.cc
+//
+// Description: Routine to implement semileptonic form factors
+//              according to the model ISGW2
+//
+// Modification history:
+//
+//    DJL     April 17, 1998        Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenModels/EvtISGW2FF.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtId.hh"
+#include "EvtGenBase/EvtIdSet.hh"
+#include "EvtGenBase/EvtConst.hh"
+#include <string>
+#include <math.h>
+#include <stdlib.h>
+using std::endl;
+
+void EvtISGW2FF::getscalarff(EvtId parent,EvtId daught,
+                       double t, double mass, double *fpf,
+                           double *f0f ) {
+
+  //added by Lange Jan4,2000
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D3P0P=EvtPDL::getId("D_0*+");
+  static EvtId D3P0N=EvtPDL::getId("D_0*-");
+  static EvtId D3P00=EvtPDL::getId("D_0*0");
+  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
+
+  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
+  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
+  static EvtId D21S00=EvtPDL::getId("D(2S)0");
+  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
+
+  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
+
+  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
+  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
+  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
+
+  static EvtId PIP=EvtPDL::getId("pi+");
+  static EvtId PIM=EvtPDL::getId("pi-");
+  static EvtId PI0=EvtPDL::getId("pi0");
+
+
+  static EvtId A0P=EvtPDL::getId("a_0+");
+  static EvtId A0M=EvtPDL::getId("a_0-");
+  static EvtId A00=EvtPDL::getId("a_00");
+
+  static EvtId F0=EvtPDL::getId("f_0");
+  static EvtId F0PR=EvtPDL::getId("f'_0");
+
+  static EvtId ETA=EvtPDL::getId("eta");
+  static EvtId ETAPR=EvtPDL::getId("eta'");
+
+  static EvtId KP=EvtPDL::getId("K+");
+  static EvtId KM=EvtPDL::getId("K-");
+  static EvtId K0=EvtPDL::getId("K0");
+  static EvtId KB=EvtPDL::getId("anti-K0");
+  static EvtId K0S=EvtPDL::getId("K_S0");
+  static EvtId K0L=EvtPDL::getId("K_L0");
+
+  static EvtId K0STP=EvtPDL::getId("K_0*+");
+  static EvtId K0STM=EvtPDL::getId("K_0*-");
+  static EvtId K0ST0=EvtPDL::getId("K_0*0");
+  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
+
+  static EvtId DSP=EvtPDL::getId("D_s+");
+  static EvtId DSM=EvtPDL::getId("D_s-");
+
+  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
+  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
+
+  double fmf;
+  double mb=EvtPDL::getMeanMass(parent);
+
+  if (daught==PI0||daught==PIP||daught==PIM||daught==ETA||
+      daught==ETAPR||daught==D0||daught==D0B||daught==DP||
+      daught==DM||daught==KP||daught==KM||daught==K0||daught==K0S||
+      daught==K0L||daught==KB||daught==DSP||daught==DSM) {
+
+      EvtISGW2FF1S0(parent,daught,t,mass,fpf,&fmf);
+  }
+      
+  if (daught==PI2S0||daught==PI2SP||daught==PI2SM||daught==ETA2S||
+      daught==D21S0P||daught==D21S0B||daught==D21S0N||daught==D21S00){
+      EvtISGW2FF21S0(parent,daught,t,mass,fpf,&fmf);
+  }
+  
+  if (daught==A00||daught==A0P||daught==A0M||daught==F0||
+      daught==F0PR||daught==D3P0P||daught==D3P00||daught==D3P0B||
+      daught==D3P0N||daught==K0STM||daught==K0STB||daught==K0STP||
+      daught==D3P0SP||daught==D3P0SN||
+      daught==K0ST0) {
+    EvtISGW2FF3P0(parent,daught,t,mass,fpf,&fmf);
+  }
+
+  *f0f = (fmf/((mb*mb-mass*mass)/t))+(*fpf);
+
+  return ;
+}
+
+ void EvtISGW2FF::gettensorff(EvtId parent,EvtId daught,
+                       double t, double mass, double *hf,
+                            double *kf, double *bpf, double *bmf ){
+
+  //added by Lange Jan4,2000
+    EvtISGW2FF3P2(parent,daught,t,mass,hf,kf,bpf,bmf);
+
+    return;
+
+ }
+
+
+ void EvtISGW2FF::getvectorff(EvtId parent,EvtId daught,
+                       double t, double mass, double *a1f,
+                            double *a2f, double *vf, double *a0f ){
+   double ff,gf,apf,amf;
+
+  //added by Lange Jan4,2000
+
+  static EvtId DST0=EvtPDL::getId("D*0");
+  static EvtId DSTB=EvtPDL::getId("anti-D*0");
+  static EvtId DSTP=EvtPDL::getId("D*+");
+  static EvtId DSTM=EvtPDL::getId("D*-");
+
+
+  static EvtId D1P1P=EvtPDL::getId("D_1+");
+  static EvtId D1P1N=EvtPDL::getId("D_1-");
+  static EvtId D1P10=EvtPDL::getId("D_10");
+  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
+
+  static EvtId D3P1P=EvtPDL::getId("D'_1+");
+  static EvtId D3P1N=EvtPDL::getId("D'_1-");
+  static EvtId D3P10=EvtPDL::getId("D'_10");
+  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
+
+  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
+  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
+  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
+  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
+
+  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
+  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
+  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
+  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
+
+  static EvtId RHOP=EvtPDL::getId("rho+");
+  static EvtId RHOM=EvtPDL::getId("rho-");
+  static EvtId RHO0=EvtPDL::getId("rho0");
+
+  static EvtId A1P=EvtPDL::getId("a_1+");
+  static EvtId A1M=EvtPDL::getId("a_1-");
+  static EvtId A10=EvtPDL::getId("a_10");
+
+  static EvtId B1P=EvtPDL::getId("b_1+");
+  static EvtId B1M=EvtPDL::getId("b_1-");
+  static EvtId B10=EvtPDL::getId("b_10");
+
+  static EvtId H1=EvtPDL::getId("h_1");
+  static EvtId H1PR=EvtPDL::getId("h'_1");
+
+  static EvtId F1=EvtPDL::getId("f_1");
+  static EvtId F1PR=EvtPDL::getId("f'_1");
+
+  static EvtId OMEG=EvtPDL::getId("omega");
+  static EvtId KSTP=EvtPDL::getId("K*+");
+  static EvtId KSTM=EvtPDL::getId("K*-");
+  static EvtId KST0=EvtPDL::getId("K*0");
+  static EvtId KSTB=EvtPDL::getId("anti-K*0");
+
+  static EvtId K1P=EvtPDL::getId("K_1+");
+  static EvtId K1M=EvtPDL::getId("K_1-");
+  static EvtId K10=EvtPDL::getId("K_10");
+  static EvtId K1B=EvtPDL::getId("anti-K_10");
+
+  static EvtId K1STP=EvtPDL::getId("K'_1+");
+  static EvtId K1STM=EvtPDL::getId("K'_1-");
+  static EvtId K1ST0=EvtPDL::getId("K'_10");
+  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
+
+  static EvtId PHI=EvtPDL::getId("phi");
+
+  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
+  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
+
+  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
+  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
+
+  static EvtId DSSTP=EvtPDL::getId("D_s*+");
+  static EvtId DSSTM=EvtPDL::getId("D_s*-");
+
+   if (daught==DST0||daught==DSTP||daught==DSTM||daught==DSTB||
+       daught==OMEG||daught==RHO0||daught==RHOM||daught==RHOP||
+       daught==KSTP||daught==KSTM||daught==KST0||daught==KSTB||
+       daught==PHI||daught==DSSTP||daught==DSSTM) {
+     EvtISGW2FF3S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+   if (daught==B10||daught==B1P||daught==B1M||daught==H1||
+       daught==H1PR||daught==D1P1P||daught==D1P10||daught==D1P1B||
+       daught==D1P1SP||daught==D1P1SN||
+       daught==D1P1N||daught==K10||daught==K1B||daught==K1P||
+       daught==K1M) {
+     EvtISGW2FF1P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+   if (daught==RHO2S0||daught==RHO2SP||daught==RHO2SM||daught==OMEG2S||
+       daught==D23S1P||daught==D23S1B||daught==D23S1N||daught==D23S10){
+     EvtISGW2FF23S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+   if (daught==A10||daught==A1P||daught==A1M||daught==F1||
+                  daught==F1PR||daught==D3P1P||daught==D3P10||daught==D3P1B||
+       daught==D3P1N||daught==K1STM||daught==K1STB||daught==K1STP||
+       daught==D3P1SP||daught==D3P1SN||
+       daught==K1ST0) {
+     EvtISGW2FF3P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+
+   // Need to stuff in some factors to make these the ffs that
+   // is used elsewhere...
+
+   double mb=EvtPDL::getMeanMass(parent);
+  
+
+   *vf = (gf)*(mb+mass);
+   *a1f = (ff)/(mb+mass);
+   *a2f = -1.0*(apf)*(mb+mass);
+
+   double a3f = ((mb+mass)/(2.0*mass))*(*a1f) -
+        ((mb-mass)/(2.0*mass))*(*a2f);
+
+   *a0f = a3f + ( (t*amf)/(2.0*mass));
+
+   return;
+ }
+
+
+
+void EvtISGW2FF::EvtISGW2FF1S0 (EvtId parent,EvtId daugt,
+                         double t, double mass, double *fpf, double *fmf ) {
+
+  double mtb, mbb(0.0);
+  double msd(0.0), mx,mb,nf(0.0),nfp(0.0); 
+  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
+  double zji,cji,gammaji,chiji,betaji_fppfm;
+  double rfppfm,rfpmfm,f3fppfm,f3fpmfm,fppfm,fpmfm,ai,f3; 
+  double mqm,msb(0.0),bb2(0.0),mup,bbx2,tm,r2,betaji_fpmfm;
+
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+
+  //added by Lange Jan4,2000
+  static EvtIdSet theB("B+","B-","B0","anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId PIP=EvtPDL::getId("pi+");
+  static EvtId PIM=EvtPDL::getId("pi-");
+  static EvtId PI0=EvtPDL::getId("pi0");
+
+  static EvtId ETA=EvtPDL::getId("eta");
+  static EvtId ETAPR=EvtPDL::getId("eta'");
+
+  static EvtId KP=EvtPDL::getId("K+");
+  static EvtId KM=EvtPDL::getId("K-");
+  static EvtId K0=EvtPDL::getId("K0");
+  static EvtId KB=EvtPDL::getId("anti-K0");
+  static EvtId K0S=EvtPDL::getId("K_S0");
+  static EvtId K0L=EvtPDL::getId("K_L0");
+
+  static EvtId DSP=EvtPDL::getId("D_s+");
+  static EvtId DSM=EvtPDL::getId("D_s-");
+
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+  static EvtId BS0=EvtPDL::getId("B_s0");
+
+  if (theB.contains(prnt)) {
+    
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=5.31;
+    nf = 4.0;
+   
+    if (dgt==PI0||dgt==PIP||dgt==PIM||dgt==ETA||dgt==ETAPR) {
+
+      msq=0.33;
+      bx2=0.406*0.406;
+      mbx=0.75*0.770+0.25*0.14;
+      nfp = 0.0;
+    }
+    else{
+      if (dgt==D0||dgt==D0B||dgt==DP||dgt==DM) {
+       msq=1.82;
+       bx2=0.45*0.45;
+       mbx=0.75*2.01+0.25*1.87;
+       nfp = 3.0;
+      }
+      else{
+      report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+      nf = 3.0;
+
+      if (dgt==PIP||dgt==PIM||dgt==PI0||dgt==ETA||dgt==ETAPR) {
+       msq=0.33;
+       bx2=0.406*0.406;
+       mbx=0.75*0.770+0.25*0.14;
+       nfp = 0.0;
+      }
+      else{
+       if (dgt==K0||dgt==K0S||dgt==K0L||dgt==KB||dgt==KP||dgt==KM) {
+         msq=0.55;
+         bx2=0.44*0.44;
+         mbx=0.75*0.892+0.25*0.49767;
+         nfp = 2.0;
+       }
+       else{
+      report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+       }
+      }
+    }
+    else{
+      if (prnt==DSP||prnt==DSM){
+       msb=1.82;
+       msd=0.55;
+       bb2=0.56*0.56;
+       mbb=1.968;
+       nf = 3.0;
+    
+       if  (dgt==K0||dgt==K0S||dgt==K0L||dgt==KB) {
+      
+         msq=0.33;
+         bx2=0.44*0.44;
+         mbx=0.75*0.770+0.25*0.14;
+         nfp = 0.0;
+       }
+       else{
+         if  (dgt==PI0||dgt==ETA||dgt==ETAPR) {
+           msq=0.33;
+           bx2=0.53*0.53;
+           mbx=0.75*0.892+0.25*0.49767;
+           nfp = 0.0;
+         }
+         else{
+
+           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+         }
+       }
+      }
+    else{
+      //BS -> cs constants added by djl on Jan. 21,1998
+      if (prnt==BS0||prnt==BSB){
+
+       msb=5.2;
+       msd=0.55;
+       bb2=0.54*0.54;
+       mbb=5.38;
+       nf = 4.0;
+    
+       if  (dgt==DSP||dgt==DSM) {
+      
+         msq=1.82;
+         bx2=0.56*0.56;
+         mbx=0.75*2.11+0.25*1.97;
+         nfp = 3.0;
+       }
+       else if  (dgt==KP||dgt==KM) {
+      
+         msq=0.55;
+         bx2=0.44*0.44;
+         mbx=0.75*0.892+0.25*0.49767;
+         nfp = 2.0;
+       }
+       else{
+           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+         }
+       }
+    
+      else{
+       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1S0.\n";
+       report(ERROR,"EvtGen") << "Parent:"<<parent.getId()<<endl;
+      }
+    }
+    }
+  }
+
+  mtb = msb + msd;
+  mtx = msq + msd;
+  mb=EvtPDL::getMeanMass(parent);
+  mx=mass;
+  
+  mup=1.0/(1.0/msq+1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if ( t>tm ) t=0.99*tm;
+  
+  mqm = 0.1;
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
+    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+    log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
+  
+  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,1.5) /
+    ((1.0+r2*(tm-t)/12.0)*(1.0+r2*(tm-t)/12.0));
+  
+//  for w use wt def with physical masses.
+//  report(ERROR,"EvtGen") << "before w\n";
+  
+  ai = -1.0* ( 6.0/( 33.0 - 2.0*nf));  
+  cji = pow(( EvtGetas( msb,msb ) / EvtGetas( msq,msq ) ),ai);
+  
+  zji = msq / msb;
+  
+  gammaji = EvtGetGammaji( zji );
+  chiji = -1.0 - ( gammaji / ( 1- zji ));
+  betaji_fppfm = gammaji - (2.0/3.0)*chiji;
+  betaji_fpmfm = gammaji + (2.0/3.0)*chiji;
+  rfppfm = cji *(1.0 + betaji_fppfm*EvtGetas( msq,sqrt(msb*msq) )/EvtConst::pi);
+  rfpmfm = cji *(1.0 + betaji_fpmfm*EvtGetas( msq,sqrt(msb*msq) )/EvtConst::pi);
+  f3fppfm = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
+  f3fpmfm = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
+  fppfm = f3fppfm* rfppfm * ( 2.0 - ( ( mtx/msq)*(1- ( (msd*msq*bb2)
+                                                      /(2.0*mup*mtx*bbx2)))));
+  fpmfm = f3fpmfm* rfpmfm * ( mtb/msq) * ( 1 - ( ( msd*msq*bb2)/
+                                                ( 2.0*mup*mtx*bbx2)));
+  
+  *fpf = (fppfm + fpmfm)/2.0;
+  *fmf = (fppfm - fpmfm)/2.0;
+  
+  return;  
+} //get_ff_isgw_1s0
+
+
+
+
+
+void  EvtISGW2FF::EvtISGW2FF3S1(EvtId parent,EvtId daugt,double t,double mass,
+      double *f,double *g,double *ap,double *am){
+
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId DST0=EvtPDL::getId("D*0");
+  static EvtId DSTB=EvtPDL::getId("anti-D*0");
+  static EvtId DSTP=EvtPDL::getId("D*+");
+  static EvtId DSTM=EvtPDL::getId("D*-");
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId RHOP=EvtPDL::getId("rho+");
+  static EvtId RHOM=EvtPDL::getId("rho-");
+  static EvtId RHO0=EvtPDL::getId("rho0");
+  static EvtId OMEG=EvtPDL::getId("omega");
+
+  static EvtId KSTP=EvtPDL::getId("K*+");
+  static EvtId KSTM=EvtPDL::getId("K*-");
+  static EvtId KST0=EvtPDL::getId("K*0");
+  static EvtId KSTB=EvtPDL::getId("anti-K*0");
+
+  static EvtId PHI=EvtPDL::getId("phi");
+  static EvtId DSP=EvtPDL::getId("D_s+");
+  static EvtId DSM=EvtPDL::getId("D_s-");
+
+  static EvtId DSSTP=EvtPDL::getId("D_s*+");
+  static EvtId DSSTM=EvtPDL::getId("D_s*-");
+
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+  static EvtId BS0=EvtPDL::getId("B_s0");
+
+  double cf(0.0),mtb,wt,msd(0.0),mup,f3f,msq(0.0),bb2(0.0),mum,mtx,bbx2,f3g;
+  double cji,bx2(0.0),f3appam,msb(0.0),tm,mbb(0.0),mbx(0.0);
+  double f3apmam,appam,apmam,mb,mx,f3;
+  double r_f,r_g,r_apmam, betaji_f,betaji_g;
+  double betaji_appam, betaji_apmam;
+  double mqm,r2,chiji,zji,ai,nf(0.0),nfp(0.0),gammaji;
+
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+
+  if (parent==B0||parent==B0B||parent==BP||parent==BM) {
+
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=5.31;
+    nf = 4.0;
+    
+    if (dgt==DST0||dgt==DSTP||dgt==DSTM||dgt==DSTB) {
+
+      cf=0.989;
+      msq=1.82;
+      bx2=0.38*0.38;
+      mbx=0.75*2.01+0.25*1.87;
+      nfp = 3.0;
+    }  
+    else{
+      if (dgt==OMEG||dgt==RHO0||dgt==RHOM||dgt==RHOP) {
+       
+       cf=0.905;
+       msq=0.33;
+       bx2=0.299*0.299;
+       mbx=0.75*0.770+0.25*0.14;
+       nfp = 0.0;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
+      
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+      nf = 3.0;
+
+      if (dgt==KSTP||dgt==KSTM||dgt==KST0||dgt==KSTB) {
+       
+       cf=0.928;
+       msq=0.55;
+       bx2=0.33*0.33;
+       mbx=0.75*0.892+0.25*0.494;
+       nfp = 2.0;
+      }
+      else{
+       if (dgt==RHO0||dgt==OMEG||dgt==RHOM||dgt==RHOP) {
+         cf=0.889;
+         msq=0.33;
+         bx2=0.299*0.299;
+         mbx=0.75*0.770+0.25*0.14;
+         nfp = 0.0;
+       }
+       else{
+         report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
+       }
+      }
+    }
+    else{
+      if (prnt==DSP||prnt==DSM){
+    
+       msb=1.82;
+       msd=0.55;
+       bb2=0.56*0.56;
+       mbb=1.968;
+       nf = 3.0;
+       
+       if  (dgt==KSTB||dgt==KST0) {
+
+         cf=0.8731;
+         msq=0.55;
+         bx2=0.33*0.33;
+         mbx=0.87;
+         nfp = 2.0;
+       }
+       else{
+         if(dgt==PHI){
+           cf=0.911;
+           msq=0.55;
+           bx2=0.37*0.37;
+           mbx=0.97;
+           nfp = 2.0;
+         }
+         else{
+       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
+         }
+       }
+      }
+    else{
+      //BS -> cs constants added by djl on Jan. 21,1998
+      if (prnt==BS0||prnt==BSB){
+
+       msb=5.2;
+       msd=0.55;
+       bb2=0.54*0.54;
+       mbb=5.38;
+       nf = 4.0;
+    
+       if  (dgt==DSSTP||dgt==DSSTM) {
+      
+          cf=0.984;
+         msq=1.82;
+         bx2=0.49*0.49;
+         mbx=0.75*2.11+0.25*1.97;
+         nfp = 3.0;
+       }
+       else if (dgt==KSTP||dgt==KSTM||dgt==KST0||dgt==KSTB) {
+       
+         cf=0.928;
+         msq=0.55;
+         bx2=0.33*0.33;
+         mbx=0.75*0.892+0.25*0.494;
+         nfp = 2.0;
+       }
+       else{
+           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+         }
+       }
+      
+      else{
+       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw2_ff_3S1.\n";
+      }
+    }
+    }
+  }
+
+
+  mtb=msb+msd;
+  mtx=msq+msd;
+  
+  mup=1.0/(1.0/msq+1.0/msb);
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  mb=EvtPDL::getMeanMass(parent);
+  mx=mass;
+  tm=(mb-mx)*(mb-mx);
+  if ( t > tm ) t = 0.99*tm;
+
+  wt=1.0+(tm-t)/(2.0*mbb*mbx);
+  mqm = 0.1;
+  
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
+    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+    log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
+  ai = -1.0* ( 6.0/( 33.0 - 2.0*nf));  
+  
+  cji = pow(( EvtGetas( msb,msb ) / EvtGetas( msq,msq ) ),ai);
+  zji = msq / msb;
+
+  gammaji = EvtGetGammaji( zji );
+
+  chiji = -1.0 - ( gammaji / ( 1- zji ));
+  
+  betaji_g = (2.0/3.0)+gammaji;
+  betaji_f = (-2.0/3.0)+gammaji;
+  betaji_appam = -1.0-chiji+(4.0/(3.0*(1.0-zji)))+
+                 (2.0*(1+zji)*gammaji/(3.0*(1.0-zji)*(1.0-zji)));
+  
+  betaji_apmam = (1.0/3.0)-chiji-(4.0/(3.0*(1.0-zji)))-
+                 (2.0*(1+zji)*gammaji/(3.0*(1.0-zji)*(1.0-zji)))+
+                 gammaji;
+
+  r_g = cji*(1+(betaji_g*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
+  r_f = cji*(1+(betaji_f*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
+  r_apmam = cji*(1+(betaji_apmam*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
+
+  
+  f3=sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,1.5)/
+    ((1.0+r2*(tm-t)/12.0)*(1.0+r2*(tm-t)/12.0));
+  
+  f3f=sqrt(mbx*mbb/(mtx*mtb))*f3;
+  f3g=sqrt(mtx*mtb/(mbx*mbb))*f3;
+  f3appam=sqrt(mtb*mtb*mtb*mbx/(mbb*mbb*mbb*mtx))*f3;
+  f3apmam=sqrt(mtx*mtb/(mbx*mbb))*f3;
+  *f=cf*mtb*(1+wt+msd*(wt-1)/(2*mup))*f3f*r_f;
+  *g=0.5*(1/msq-msd*bb2/(2*mum*mtx*bbx2))*f3g*r_g;
+  
+  appam=cji*(msd*bx2*(1-msd*bx2/(2*mtb*bbx2))/ 
+            ((1+wt)*msq*msb*bbx2)-
+            betaji_appam*EvtGetas( msq,sqrt(msq*mb) )/
+            (mtb*EvtConst::pi))*f3appam;
+  
+  apmam=-1.0*(mtb/msb-msd*bx2/(2*mup*bbx2)+wt*msd*mtb*bx2*
+             (1-msd*bx2/(2*mtb*bbx2))/((wt+1)*msq*msb*bbx2))*
+    f3apmam*r_apmam/mtx;
+  
+  *ap=0.5*(appam+apmam);
+  *am=0.5*(appam-apmam);
+  return;
+}
+
+
+void EvtISGW2FF::EvtISGW2FF21S0 (EvtId parent,EvtId daugt,
+       double t, double mass, double *fppf, double *fpmf ) {
+
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
+  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
+  static EvtId D21S00=EvtPDL::getId("D(2S)0");
+  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
+  
+  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
+
+  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
+  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
+  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
+
+  double mtb, mbb(0.0);
+  double msd(0.0), mx,mb,nfp(0.0); 
+  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
+  double f3fppfm,f3fpmfm,fppfm,fpmfm,f3;
+  double mqm,msb(0.0);
+  double r2,wt,tm,bb2(0.0),bbx2;
+  double tau,udef,vdef;
+
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+
+  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
+    
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=0.75*5.325+0.25*5.279;
+
+    if (dgt==PI2S0||dgt==PI2SP||dgt==PI2SM||dgt==ETA2S) {
+
+      msq=0.33;
+      bx2=0.406*0.406;
+      mbx=0.75*1.45+0.25*1.300;
+      nfp = 0.0;
+    }
+    else{
+      if (dgt==D21S0P||dgt==D21S0B||dgt==D21S0N||dgt==D21S00) {
+       msq=1.82;
+       bx2=0.45*0.45;
+       mbx=0.75*2.64+0.25*2.58;
+       nfp=3.0;
+      }
+      else{
+
+      report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+      if (dgt==PI2SP||dgt==PI2SM||dgt==PI2S0||dgt==ETA2S) {
+       msq=0.33;
+       bx2=0.406*0.406;
+       mbx=0.75*1.45+0.25*1.300;
+       nfp = 0.0;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
+      }
+    }
+    else{
+      report(ERROR,"EvtGen") << "Not implemented parent in get_EvtISGW2_ff_21S0.\n";
+    }
+  }
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  wt=1.0+(tm-t)/(2.0*mbb*mbx);
+  
+  mqm = 0.1;
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
+    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+    log(EvtGetas(mqm)/EvtGetas(msq));
+  
+  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0) /
+    (pow((1.0+r2*(tm-t)/24.0),4.0));
+  
+  f3fppfm = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
+  f3fpmfm = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
+  
+  tau = msd*msd*bx2*(wt-1)/(bb2*bbx2);
+  udef = (( bb2-bx2)/(2.0*bbx2)) + ((bb2*tau)/(3.0*bbx2));
+  vdef = (bb2*(1.0+(msq/msb))/(6.0*bbx2))*(7.0 - ((bb2/bbx2)*(5+tau)));
+
+  fppfm = f3fppfm*sqrt(1.5)*((1.0-(msd/msq))*udef-(msd*vdef/msq));
+  fpmfm = f3fpmfm*sqrt(1.5)*(mtb/msq)*(udef+(msd*vdef/mtx));
+
+  *fppf = (fppfm + fpmfm) /2.0;
+  *fpmf = (fppfm - fpmfm) /2.0;
+  return;
+
+} //get_ff_isgw_21s0
+
+
+void EvtISGW2FF::EvtISGW2FF23S1 (EvtId parent,EvtId daugt,
+       double t, double mass, double *fpf, double *gpf, 
+       double *appf, double *apmf ) {
+
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
+  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
+  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
+  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
+
+  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
+  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
+  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
+  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
+
+  double mtb,  mbb(0.0);
+  double msd(0.0), mx,mb,nfp(0.0); 
+  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
+  double f3appam,f3apmam,f3,appam,apmam,f3fp,f3gp;
+  double udef,tau,mum,bb2(0.0),bbx2,tm,wt,mqm,r2,msb(0.0);
+  double cfp(0.0);
+
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+
+  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
+
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=0.75*5.325+0.25*5.279;
+
+    if (dgt==RHO2S0||dgt==RHO2SP||dgt==RHO2SM||dgt==OMEG2S) {
+      
+      cfp=0.776;
+      msq=0.33;
+      bx2=0.299*0.299;
+      mbx=0.75*1.45+0.25*1.300;
+      nfp = 0.0;
+
+    }
+    else{
+      if (dgt==D23S1N||dgt==D23S1P||dgt==D23S1B||dgt==D23S10) {
+       cfp=0.929;
+       msq=1.82;
+       bx2=0.38*0.38;
+       mbx=0.75*2.64+0.25*2.58;
+       nfp=3.0;
+      }
+      else{
+      report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+
+      if (dgt==RHO2S0||dgt==RHO2SP||dgt==RHO2SM||dgt==OMEG2S) {
+       cfp=0.74;
+       msq=0.33;
+       bx2=0.299*0.299;
+       mbx=0.75*1.45+0.25*1.300;
+       nfp = 0.0;
+      }
+      else{      
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
+      }
+    }
+    else{
+      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_23P1.\n";
+    }
+  }
+
+  mtb = msb + msd;
+  mtx = msq + msd;
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+
+  if (t>tm) t = 0.99*tm;
+  wt=1.0+(tm-t)/(2.0*mbb*mbx);
+  
+  mqm = 0.1;
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
+     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+     log(EvtGetas(mqm)/EvtGetas(msq));
+
+  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0) /
+       (pow((1.0+r2*(tm-t)/24.0),4.0));
+  
+  f3fp = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
+  f3gp = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
+  f3appam = f3*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
+  f3apmam = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
+
+  tau = msd*msd*bx2*(wt-1.0)/(bb2*bbx2);
+  udef = (( bb2-bx2)/(2.0*bbx2));
+  udef = udef + ((bb2*tau)/(3.0*bbx2));
+
+  *fpf = cfp*sqrt(1.5)*mtb*(1.0+wt)*udef*f3fp;
+
+  *gpf = sqrt(3.0/8.0)*f3gp*(((1.0/msq)-((msd*bb2)/(2.0*mum*mtx*bbx2)))*
+        udef + ( (msd*bb2*bx2)/(3.0*mum*mtx*bbx2*bbx2)));
+       
+  appam = f3appam*sqrt(2.0/3.0)*(bb2/(msq*msb*bbx2))*((-7.0*msd*msd*bx2*
+          bx2*(1.0+(tau/7.0))/(8.0*mtb*bbx2*bbx2))+(5.0*msd*bx2*(1.0+
+          (tau/5.0))/(4.0*bbx2))+(3.0*msd*msd*bx2*bx2/(8.0*mtb*bb2*bbx2))-
+          (3.0*msd*bx2/(4.0*bb2)));
+         
+  apmam = f3apmam*sqrt(3.0/2.0)*(mtb/(msb*mtx))*(1.0-(bb2*(1.0+(tau/7.0))/
+          bbx2)-(msd*bx2*(1.0-(5.0*bb2*(1.0+(tau/5.0))/(3.0*bbx2)))
+          /(2.0*mtb*bbx2))-(7.0*msd*msd*bb2*bx2/(12.0*msq*mtb*bbx2*bbx2))*
+          (1.0-(bx2/bbx2)+(bb2*tau/(7.0*bbx2))));
+
+  *appf = (appam + apmam) /2.0;
+  *apmf = (appam - apmam) /2.0;
+  return;
+} //get_ff_isgw_23s1
+
+void EvtISGW2FF::EvtISGW2FF1P1 (EvtId parent,EvtId daugt,
+       double t, double mass, double *rf, double *vf, 
+       double *spf, double *smf ) {
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D1P1P=EvtPDL::getId("D_1+");
+  static EvtId D1P1N=EvtPDL::getId("D_1-");
+  static EvtId D1P10=EvtPDL::getId("D_10");
+  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
+
+  static EvtId B1P=EvtPDL::getId("b_1+");
+  static EvtId B1M=EvtPDL::getId("b_1-");
+  static EvtId B10=EvtPDL::getId("b_10");
+
+  static EvtId H1=EvtPDL::getId("h_1");
+  static EvtId H1PR=EvtPDL::getId("h'_1");
+
+  static EvtId K1P=EvtPDL::getId("K_1+");
+  static EvtId K1M=EvtPDL::getId("K_1-");
+  static EvtId K10=EvtPDL::getId("K_10");
+  static EvtId K1B=EvtPDL::getId("anti-K_10");
+
+  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
+  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
+
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+  static EvtId BS0=EvtPDL::getId("B_s0");
+
+  double mtb, mbb(0.0);
+  double msd(0.0), mx,mb,nfp(0.0); 
+  double msq(0.0),bx2(0.0),mbx(0.0),mtx,f5;
+  double f5sppsm,f5spmsm;
+  double f5v,f5r,mup,mum,vv,rr,spmsm,sppsm;
+  double mqm,msb(0.0),bb2(0.0),bbx2,tm,wt,r2;
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=5.31;
+    if (dgt==B10||dgt==B1P||dgt==B1M||dgt==H1||dgt==H1PR) {
+      msq=0.33;
+      bx2=0.275*0.275;
+      mbx=(3.0*1.123+0.98+5.0*1.32+3.0*1.26)/12.0;
+      nfp = 0.0;
+    }
+    else{
+      if (dgt==D1P1P||dgt==D1P10||dgt==D1P1B||dgt==D1P1N) {
+       msq=1.82;
+       bx2=0.33*0.33;
+       mbx=(5.0*2.46+3.0*2.42)/8.0;
+       nfp = 3.0;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1P1.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==DM||prnt==DP||prnt==D0B||prnt==D0) {
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+      if (dgt==B10||dgt==B1P||dgt==B1M||dgt==H1||dgt==H1PR) {
+       msq=0.33;
+       bx2=0.275*0.275;
+       mbx=(3.0*1.123+0.98+5.0*1.32+3.0*1.26)/12.0;
+       nfp = 0.0;
+      }
+      else{
+       if (dgt==K10||dgt==K1B||dgt==K1P||dgt==K1M) {
+         msq=0.55;
+         bx2=0.30*0.30;
+         mbx=(3.0*1.27+1.43+5.0*1.43+3.0*1.4)/12.0;
+         nfp = 2.0;
+       }
+       else{
+         report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1P1.\n";
+       }
+      }
+    }
+    else{
+      //BS -> cs constants added by djl on Jan. 21,1998
+      if (prnt==BS0||prnt==BSB){
+
+       msb=5.2;
+       msd=0.55;
+       bb2=0.54*0.54;
+       mbb=5.38;
+    
+       if  (dgt==D1P1SP||dgt==D1P1SN) {
+      
+         msq=1.82;
+         bx2=0.41*0.41;
+         mbx=(5.0*2.61+3.0*2.54)/8.0;
+         nfp = 3.0;
+       }
+       else if (dgt==K10||dgt==K1B||dgt==K1P||dgt==K1M) {
+         msq=0.55;
+         bx2=0.30*0.30;
+         mbx=(3.0*1.27+1.43+5.0*1.43+3.0*1.4)/12.0;
+         nfp = 2.0;
+       }
+       else{
+           report(ERROR,"EvtGen") << "Not implemented daugt:"
+                         <<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+       }
+      }
+    
+    else{
+      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1P1.\n";
+    }
+    }
+  }
+
+
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  
+  mup=1.0/(1.0/msq+1.0/msb);
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  wt=1.0+(tm-t)/(2.0*mbb*mbx);
+  
+  mqm = 0.1;
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2)+
+    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+    log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
+  
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
+    (pow((1.0+r2*(tm-t)/18.0),3.0));
+  
+  f5v = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
+  f5r = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
+  f5sppsm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
+  f5spmsm = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
+  
+  if (msq == msd) { 
+    vv = f5v*(((mtb*sqrt(bb2))/(4.0*sqrt(2.0)*msb*msq*mtx)) +
+              (((wt-1)*msd)/(6.0*sqrt(2.0*bb2)*mtx)));
+    
+    rr = f5r*mtb*sqrt(bb2/2)*((1.0/mup)+((msd*mtx*(wt-1)*(wt-1))/
+                                (3.0*msq*bb2)));
+    
+    sppsm = msd*f5sppsm/(sqrt(2.0*bb2)*mtb)*(1.0-(msd/msq)+((msd*bb2)/
+                                   (2.0*mup*bbx2)));
+    
+    spmsm = msd*f5spmsm/(sqrt(2.0*bb2)*msq)*(((4-wt)/3.0)- ( (msd*msq*bb2)/
+                                    (2.0*mtx*mup*bbx2)));
+    
+  } else {
+    vv = -1.0*msd*f5v/(2.0*sqrt(3.0*bb2)*mtx)*
+      ((wt+1)/2.0+bb2*mtb/(2.0*msd*msq*msb));
+    
+    rr = -2.0*mtb*sqrt(bb2/3.0)*f5r*(1.0/msq + mtx*msd*(wt-1)/(2.0*bb2)*
+                    ((wt+1)/(2.0*msq)-msd*bb2/(2.0*mum*mtx*bbx2)));
+    
+    sppsm = -1.0*sqrt(3.0)*msd*f5sppsm/(2.0*sqrt(bb2)*mtb)*(1 - msd/(3.0*msq) -
+                           msd*bb2/(3.0*bbx2)*(1.0/(2.0*mum)-1.0/mup));
+    
+    spmsm = -1.0*msd*f5spmsm/(2.0*sqrt(3.0*bb2)*mtx)*((2-wt)*mtx/msq +
+                          msd*bb2/bbx2*(1.0/(2.0*mum)-1.0/mup));        
+
+  }
+
+  //smooth out the mass(meson) dependence a little
+  double parMass=EvtPDL::getMeanMass(prnt);
+  double q2max = parMass*parMass + mass*mass - 2.0*parMass*mass;
+  double massNom= EvtPDL::getMeanMass(dgt);
+  double q2maxNom = parMass*parMass + massNom*massNom - 2.0*parMass*massNom;
+  double q2maxin=sqrt(q2maxNom/q2max);
+  if ( q2maxin > 1000. ) q2maxin=1000.;
+
+  vv*=q2maxin;
+  rr*=q2maxin;
+  sppsm*=q2maxin;
+  spmsm*=q2maxin;
+
+  *vf = vv;
+  *rf = rr;
+  *spf = (sppsm + spmsm)/2.0;
+  *smf = (sppsm - spmsm)/2.0;
+  return;
+} //get_ff_isgw_1p1
+
+
+void EvtISGW2FF::EvtISGW2FF3P1 (EvtId parent,EvtId daugt, 
+       double t, double mass, double *lf, double *qf, 
+       double *cpf, double *cmf ) {
+
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D3P1P=EvtPDL::getId("D'_1+");
+  static EvtId D3P1N=EvtPDL::getId("D'_1-");
+  static EvtId D3P10=EvtPDL::getId("D'_10");
+  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
+
+  static EvtId A1P=EvtPDL::getId("a_1+");
+  static EvtId A1M=EvtPDL::getId("a_1-");
+  static EvtId A10=EvtPDL::getId("a_10");
+
+  static EvtId F1=EvtPDL::getId("f_1");
+  static EvtId F1PR=EvtPDL::getId("f'_1");
+
+  static EvtId K1STP=EvtPDL::getId("K'_1+");
+  static EvtId K1STM=EvtPDL::getId("K'_1-");
+  static EvtId K1ST0=EvtPDL::getId("K'_10");
+  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
+
+  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
+  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
+
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+  static EvtId BS0=EvtPDL::getId("B_s0");
+
+  double mtb,  mbb(0.0);
+  double msd(0.0), mx,mb,nfp(0.0); 
+  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
+  double f5cppcm,f5cpmcm,f5,ql,ll,cppcm,cpmcm,f5q,f5l;
+  double mqm,msb(0.0),bb2(0.0),mum,bbx2,tm,wt,r2;
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+
+  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
+
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=5.31;
+
+    if (dgt==A10||dgt==A1P||dgt==A1M||dgt==F1||dgt==F1PR) {
+
+      msq=0.33;
+      bx2=0.275*0.275;
+      mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
+      nfp = 0.0;
+    }
+    else{
+      if (dgt==D3P1P||dgt==D3P1N||dgt==D3P10||dgt==D3P1B) {
+       msq=1.82;
+       bx2=0.33*0.33;
+       mbx=(3.0*2.49+2.40)/4.0;
+       nfp = 3.0;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3P1.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
+    
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+
+      if (dgt==F1||dgt==F1PR||dgt==A10||dgt==A1P||dgt==A1M) {
+
+       msq=0.33;
+       bx2=0.275*0.275;
+       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
+       nfp = 0.0;
+      }
+      else{
+       if (dgt==K1STM||dgt==K1STB||dgt==K1STP||dgt==K1ST0) {
+         msq=0.55;
+         bx2=0.30*0.30;
+         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
+         nfp = 2.0;
+       }
+       else{
+         report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3P1.\n";
+       }
+      }
+    }
+    else{
+      //BS -> cs constants added by djl on Jan. 21,1998
+      if (prnt==BS0||prnt==BSB){
+
+       msb=5.2;
+       msd=0.55;
+       bb2=0.54*0.54;
+       mbb=5.38;
+    
+       if  (dgt==D3P1SP||dgt==D3P1SN) {
+      
+         msq=1.82;
+         bx2=0.41*0.41;
+         mbx=(3.0*2.54+2.46)/4.0;
+         nfp = 3.0;
+       }
+       else if (dgt==K1STM||dgt==K1STB||dgt==K1STP||dgt==K1ST0) {
+         msq=0.55;
+         bx2=0.30*0.30;
+         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
+         nfp = 2.0;
+       }
+       else{
+           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+         }
+       }
+    
+    else{
+      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
+    }
+    }
+  }
+
+
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  wt=1.0+(tm-t)/(2.0*mbb*mbx);
+  
+  mqm = 0.1;
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
+    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+    log(EvtGetas(mqm)/EvtGetas(msq));
+  
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
+    (pow((1.0+r2*(tm-t)/18.0),3.0));
+
+  f5q = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
+  f5l = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
+  f5cppcm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
+  f5cpmcm = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
+  
+  if (msq == msd) { 
+    
+    ql = -1.0*(msd*(5.0+wt)*f5q/(2.0*mtx*sqrt(bb2)*6.0));
+  
+    ll = -1.0*mtb*sqrt(bb2)*f5l*(1/mum+ ( (msd*mtx*(wt-1)/bb2)*
+         ( (5.0+wt)/(6.0*msq)-(msd*bb2)/(2.0*mum*mtx*bbx2))));
+    
+    cppcm = (-1.0*(msd*mtx*f5cppcm/(2.0*msq*mtb*sqrt(bb2)))*
+            (1-(msd*msq*bb2)/(2.0*mtx*mum*bbx2)));
+    
+    cpmcm = 1.0*(msd*mtx*f5cpmcm/(2.0*msq*mtb*sqrt(bb2)))*
+            (((wt+2.0)/3.0)-(msd*msq*bb2)/(2.0*mtx*mum*bbx2))
+            *(mtb/mtx);
+  } else {
+
+    ql = f5q*sqrt(1.0/6.0)*msd/(sqrt(bb2)*mtx)*
+        (1.0-bb2*mtb/(4.0*msd*msq*msb));
+    ll = f5l*sqrt(2.0/3.0)*mtb*sqrt(bb2)*(1.0/(2.0*msq) - 3.0/(2.0*msb) +
+         msd*mtx*(wt-1)/bb2*(1.0/msq-msd*bb2/(2.0*mum*mtx*bbx2)));  
+    cppcm = msd*msd*bx2*f5cppcm/(sqrt(6.0)*mtb*msq*sqrt(bb2)*bbx2);
+    cpmcm = -sqrt(2.0/3.0)*msd*f5cpmcm/(sqrt(bb2)*mtx)*
+      (1+msd*bx2/(2.0*msq*bbx2));
+  }
+
+  //smooth out the mass(meson) dependence a little
+  double parMass=EvtPDL::getMeanMass(prnt);
+  double q2max = parMass*parMass + mass*mass - 2.0*parMass*mass;
+  double massNom= EvtPDL::getMeanMass(dgt);
+  double q2maxNom = parMass*parMass + massNom*massNom - 2.0*parMass*massNom;
+  double q2maxin=sqrt(q2maxNom/q2max);
+  if ( q2maxin > 1000. ) q2maxin=1000.;
+  ql*=q2maxin;
+  ll*=q2maxin;
+  cppcm*=q2maxin;
+  cpmcm*=q2maxin;
+
+  *qf = ql;
+  *lf = ll;
+  *cpf = (cppcm + cpmcm)/2.0;
+  *cmf = (cppcm - cpmcm)/2.0;
+  return;
+} //get_ff_isgw_3p1
+
+
+void EvtISGW2FF::EvtISGW2FF3P0 (EvtId parent,EvtId daugt,
+       double t, double mass, double *upf, double *umf ) {
+
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D3P0P=EvtPDL::getId("D_0*+");
+  static EvtId D3P0N=EvtPDL::getId("D_0*-");
+  static EvtId D3P00=EvtPDL::getId("D_0*0");
+  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
+
+  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
+  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
+
+  static EvtId A0P=EvtPDL::getId("a_0+");
+  static EvtId A0M=EvtPDL::getId("a_0-");
+  static EvtId A00=EvtPDL::getId("a_00");
+
+  static EvtId F0=EvtPDL::getId("f_0");
+  static EvtId F0PR=EvtPDL::getId("f'_0");
+
+  static EvtId K0STP=EvtPDL::getId("K_0*+");
+  static EvtId K0STM=EvtPDL::getId("K_0*-");
+  static EvtId K0ST0=EvtPDL::getId("K_0*0");
+  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
+
+  static EvtId DSP=EvtPDL::getId("D_s+");
+  static EvtId DSM=EvtPDL::getId("D_s-");
+
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+  static EvtId BS0=EvtPDL::getId("B_s0");
+
+  double mtb, mbb(0.0);
+  double msd(0.0), mx,mb,nfp(0.0); 
+  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
+  double f5uppum,f5upmum,uppum,upmum,f5;
+  double mqm,r2,bb2(0.0),bbx2,msb(0.0),tm;
+
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+
+  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
+      
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=5.31;
+    if (dgt==A00||dgt==A0P||dgt==A0M||dgt==F0||dgt==F0PR) {
+
+      msq=0.33;
+      bx2=0.275*0.275;
+      mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
+      nfp = 0.0;
+    }
+    else{
+      if (dgt==D3P0P||dgt==D3P0N||dgt==D3P00||dgt==D3P0B) {
+       msq=1.82;
+       bx2=0.33*0.33;
+       mbx=(3.0*2.49+2.40)/4.0;
+       nfp = 3.0;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
+
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+      if (dgt==F0||dgt==F0PR||dgt==A00||dgt==A0P||dgt==A0M) {
+       msq=0.33;
+       bx2=0.275*0.275;
+       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
+       nfp = 0.0;
+      }
+      else{
+       if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
+         msq=0.55;
+         bx2=0.30*0.30;
+         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
+         nfp = 2.0;
+       }
+       else{
+         report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
+       }
+      }
+    }
+    else{
+      if (prnt==DSP||prnt==DSM){
+       msb=1.82;
+       msd=0.55;
+       bb2=0.56*0.56;
+       mbb=1.968;
+       
+       if (dgt==F0||dgt==F0PR||dgt==A00||dgt==A0P||dgt==A0M) {
+         msq=0.55;
+         bx2=0.33*0.33;
+         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
+         nfp = 2.0;
+       }
+       else{
+         if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
+           msq=0.33;
+           bx2=0.30*0.30;
+           mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
+           nfp = 0.0;
+         }
+         else{
+           report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
+         }
+       }
+      }
+      else{
+       //BS -> cs constants added by djl on Jan. 21,1998
+       if (prnt==BS0||prnt==BSB){
+
+         msb=5.2;
+         msd=0.55;
+         bb2=0.54*0.54;
+         mbb=5.38;
+         
+         if  (dgt==D3P0SP||dgt==D3P0SN) {
+           
+           msq=1.82;
+           bx2=0.41*0.41;
+           mbx=(3.0*2.54+2.46)/4.0;
+           nfp = 3.0;
+         }
+         else if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
+           msq=0.55;
+           bx2=0.30*0.30;
+           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
+           nfp = 2.0;
+         }
+         else{
+           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+         }
+       }
+       else{
+         report(ERROR,"EvtGen") << "Not implemented parent in get_EvtISGW2_ff_3P0.\n";
+       }
+      }
+    }
+  }
+  
+
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  
+  mqm = 0.1;
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
+     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+     log(EvtGetas(mqm)/EvtGetas(msq));
+
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
+       (pow((1.0+r2*(tm-t)/18.0),3.0));
+
+  f5uppum = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
+  f5upmum = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
+
+  uppum = -1.0*f5uppum*sqrt(2.0/(3.0*bb2))*msd;
+  upmum = 1.0*f5upmum*sqrt(2.0/(3.0*bb2))*msd*mtb/mtx;
+
+  *upf = (uppum + upmum)/2.0;
+  *umf = (uppum - upmum)/2.0;
+
+  return;
+
+}
+
+
+void EvtISGW2FF::EvtISGW2FF3P2 (EvtId parent,EvtId daugt,
+       double t, double mass, double *hf, double *kf, 
+       double *bpf, double *bmf ) {
+  
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D3P2P=EvtPDL::getId("D_2*+");
+  static EvtId D3P2N=EvtPDL::getId("D_2*-");
+  static EvtId D3P20=EvtPDL::getId("D_2*0");
+  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
+
+  static EvtId A2P=EvtPDL::getId("a_2+");
+  static EvtId A2M=EvtPDL::getId("a_2-");
+  static EvtId A20=EvtPDL::getId("a_20");
+
+  static EvtId F2=EvtPDL::getId("f_2");
+  static EvtId F2PR=EvtPDL::getId("f'_2");
+
+  static EvtId K2STP=EvtPDL::getId("K_2*+");
+  static EvtId K2STM=EvtPDL::getId("K_2*-");
+  static EvtId K2ST0=EvtPDL::getId("K_2*0");
+  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
+
+  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
+  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
+
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+  static EvtId BS0=EvtPDL::getId("B_s0");
+
+
+  double mtb, mbb(0.0);
+  double msd(0.0), mx,mb,nfp(0.0); 
+  double msq(0.0),bx2(0.0),mbx(0.0),mtx,f5;
+  double f5h,f5k,f5bppbm,f5bpmbm,bppbm,bpmbm;
+  double mqm,mum,mup,tm,wt,r2,bb2(0.0),bbx2;
+  double msb(0.0);
+  EvtId prnt=parent;
+  EvtId dgt=daugt;
+
+  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
+    
+    msb=5.2;
+    msd=0.33;
+    bb2=0.431*0.431;
+    mbb=5.31;
+
+    if (dgt==A20||dgt==A2P||dgt==A2M||dgt==F2||dgt==F2PR) {
+
+      msq=0.33;
+      bx2=0.275*0.275;
+      mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
+      nfp = 0.0;
+
+    }
+
+    else{
+      if (dgt==D3P2P||dgt==D3P2N||dgt==D3P20||dgt==D3P2B) {
+
+       msq=1.82;
+       bx2=0.33*0.33;
+       mbx=(5.0*2.46+3.0*2.42)/8.0;
+       nfp = 3.0;
+      }
+      else{
+
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P2.\n";
+      }
+    }
+  }
+  else{
+    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
+      
+      msb=1.82;
+      msd=0.33;
+      bb2=0.45*0.45;
+      mbb=1.963;
+      if (dgt==F2||dgt==F2PR||dgt==A20||dgt==A2P||dgt==A2M) {
+       msq=0.33;
+       bx2=0.275*0.275;
+       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
+       nfp = 0.0;
+      }
+      else{
+       if (dgt==K2STM||dgt==K2STB||dgt==K2STP||dgt==K2ST0) {
+         msq=0.55;
+         bx2=0.30*0.30;
+         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
+         nfp = 2.0;
+       }
+       else{
+         report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P2.\n";
+       }
+      }
+    }
+    else{
+      //BS -> cs constants added by djl on Jan. 21,1998
+      if (prnt==BS0||prnt==BSB){
+
+       msb=5.2;
+       msd=0.55;
+       bb2=0.54*0.54;
+       mbb=5.38;
+    
+       if  (dgt==D3P2SP||dgt==D3P2SN) {
+      
+         msq=1.82;
+         bx2=0.41*0.41;
+         mbx=(5.0*2.61+3.0*2.54)/8.0;
+         nfp = 3.0;
+       }
+       else if (dgt==K2STM||dgt==K2STB||dgt==K2STP||dgt==K2ST0) {
+         msq=0.55;
+         bx2=0.30*0.30;
+         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
+         nfp = 2.0;
+       }
+       else{
+           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
+         }
+      }
+    
+    else{
+      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P2.\n";
+    }
+    }
+  }
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  mup=1.0/(1.0/msq+1.0/msb);
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  wt=1.0+(tm-t)/(2.0*mbb*mbx);
+  
+  mqm = 0.1;
+  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2)+
+    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
+    log(EvtGetas(mqm)/EvtGetas(msq));
+
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
+       (pow((1.0+r2*(tm-t)/18.0),3.0));
+  
+  f5h = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),-0.5);
+  f5k = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
+  f5bppbm = f5*pow(( mbb / mtb ),-2.5)*pow((mbx/mtx),0.5);
+  f5bpmbm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),-0.5);
+  
+  *hf = f5h*(msd/(sqrt(8.0*bb2)*mtb))*((1.0/msq)-(msd*bb2/(2.0*mum*
+        mtx*bbx2)));
+  
+  *kf = f5k*(msd/(sqrt(2.0*bb2)))*(1.0+wt);
+  
+  bppbm = ((msd*msd*f5bppbm*bx2)/(sqrt(32.0*bb2)*msq*msb*mtb*bbx2))*
+          (1.0-(msd*bx2/(2.0*mtb*bbx2)));
+
+  bpmbm = -1.0*(msd*f5bpmbm/(sqrt(2.0*bb2)*msb*mtx))*(1.0-
+          ((msd*msb*bx2)/(2.0*mup*mtb*bbx2))+((msd*bx2*(1.0-
+          ((msd*bx2)/(2.0*mtb*bbx2))))/(4.0*msq*bbx2)));
+
+  *bpf = (bppbm + bpmbm)/2.0;
+  *bmf = (bppbm - bpmbm)/2.0;
+  return;
+} //get_ff_isgw_1p1
+
+
+double EvtISGW2FF::EvtGetGammaji ( double z )
+
+{
+double temp;
+
+   temp = 2+((2.0*z)/(1-z))*log(z);
+   temp = -1.0*temp;
+
+   return temp;
+
+} //EvtGetGammaji
+
+
+
+double EvtISGW2FF::EvtGetas ( double massq, double massx )
+{
+  double lqcd2 = 0.04;
+  double nflav = 4;
+  double temp = 0.6;
+  
+  if ( massx > 0.6 ) {
+    if ( massq < 1.85 ) {
+      nflav = 3.0;}
+    
+    temp = 12.0*EvtConst::pi / ( 33.0 - 2.0*nflav) /
+      log( massx*massx/lqcd2);
+  }
+  return temp;
+  
+} //EvtGetas
+
+double EvtISGW2FF::EvtGetas ( double mass )
+     
+{
+  double lqcd2 = 0.04;
+  double nflav = 4;
+  double temp = 0.6;
+  
+  if ( mass > 0.6 ) {
+    if ( mass < 1.85 ) {
+      nflav = 3.0;}
+    
+    temp = 12.0*EvtConst::pi / ( 33.0 - 2.0*nflav) /
+      log( mass*mass/lqcd2);
+  }
+  return temp;
+  
+} //EvtGetas
+
+
+void EvtISGW2FF::getbaryonff(EvtId, EvtId, double, double, double*, 
+                            double*, double*, double*){
+  
+  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtISGW2FF.\n";  
+
+  ::abort();
+
+}
+
+void EvtISGW2FF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                           double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtISGW2FF.\n";
+  ::abort();
+
+}
+
+void EvtISGW2FF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                            double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtISGW2FF.\n";
+  ::abort();
+
+}
diff --git a/TEvtGen/EvtGenModels/EvtISGW2FF.cxx b/TEvtGen/EvtGenModels/EvtISGW2FF.cxx
deleted file mode 100644 (file)
index 462f373..0000000
+++ /dev/null
@@ -1,3145 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtISGW2FF.cc
-//
-// Description: Routine to implement semileptonic form factors
-//              according to the model ISGW2
-//
-// Modification history:
-//
-//    DJL     April 17, 1998        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenModels/EvtISGW2FF.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtId.hh"
-#include "EvtGenBase/EvtIdSet.hh"
-#include "EvtGenBase/EvtConst.hh"
-#include <string>
-#include <math.h>
-#include <stdlib.h>
-using std::endl;
-
-void EvtISGW2FF::getscalarff(EvtId parent,EvtId daught,
-                       double t, double mass, double *fpf,
-                           double *f0f ) {
-
-  //added by Lange Jan4,2000
-
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double fmf;
-  double mb=EvtPDL::getMeanMass(parent);
-
-  if (daught==PI0||daught==PIP||daught==PIM||daught==ETA||
-      daught==ETAPR||daught==D0||daught==D0B||daught==DP||
-      daught==DM||daught==KP||daught==KM||daught==K0||daught==K0S||
-      daught==K0L||daught==KB||daught==DSP||daught==DSM) {
-
-      EvtISGW2FF1S0(parent,daught,t,mass,fpf,&fmf);
-  }
-      
-  if (daught==PI2S0||daught==PI2SP||daught==PI2SM||daught==ETA2S||
-      daught==D21S0P||daught==D21S0B||daught==D21S0N||daught==D21S00){
-      EvtISGW2FF21S0(parent,daught,t,mass,fpf,&fmf);
-  }
-  
-  if (daught==A00||daught==A0P||daught==A0M||daught==F0||
-      daught==F0PR||daught==D3P0P||daught==D3P00||daught==D3P0B||
-      daught==D3P0N||daught==K0STM||daught==K0STB||daught==K0STP||
-      daught==D3P0SP||daught==D3P0SN||
-      daught==K0ST0) {
-    EvtISGW2FF3P0(parent,daught,t,mass,fpf,&fmf);
-  }
-
-  *f0f = (fmf/((mb*mb-mass*mass)/t))+(*fpf);
-
-  return ;
-}
-
- void EvtISGW2FF::gettensorff(EvtId parent,EvtId daught,
-                       double t, double mass, double *hf,
-                            double *kf, double *bpf, double *bmf ){
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-    EvtISGW2FF3P2(parent,daught,t,mass,hf,kf,bpf,bmf);
-
-    return;
-
- }
-
-
- void EvtISGW2FF::getvectorff(EvtId parent,EvtId daught,
-                       double t, double mass, double *a1f,
-                            double *a2f, double *vf, double *a0f ){
-   double ff,gf,apf,amf;
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-   if (daught==DST0||daught==DSTP||daught==DSTM||daught==DSTB||
-       daught==OMEG||daught==RHO0||daught==RHOM||daught==RHOP||
-       daught==KSTP||daught==KSTM||daught==KST0||daught==KSTB||
-       daught==PHI||daught==DSSTP||daught==DSSTM) {
-     EvtISGW2FF3S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-   if (daught==B10||daught==B1P||daught==B1M||daught==H1||
-       daught==H1PR||daught==D1P1P||daught==D1P10||daught==D1P1B||
-       daught==D1P1SP||daught==D1P1SN||
-       daught==D1P1N||daught==K10||daught==K1B||daught==K1P||
-       daught==K1M) {
-     EvtISGW2FF1P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-   if (daught==RHO2S0||daught==RHO2SP||daught==RHO2SM||daught==OMEG2S||
-       daught==D23S1P||daught==D23S1B||daught==D23S1N||daught==D23S10){
-     EvtISGW2FF23S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-   if (daught==A10||daught==A1P||daught==A1M||daught==F1||
-                  daught==F1PR||daught==D3P1P||daught==D3P10||daught==D3P1B||
-       daught==D3P1N||daught==K1STM||daught==K1STB||daught==K1STP||
-       daught==D3P1SP||daught==D3P1SN||
-       daught==K1ST0) {
-     EvtISGW2FF3P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-
-   // Need to stuff in some factors to make these the ffs that
-   // is used elsewhere...
-
-   double mb=EvtPDL::getMeanMass(parent);
-  
-
-   *vf = (gf)*(mb+mass);
-   *a1f = (ff)/(mb+mass);
-   *a2f = -1.0*(apf)*(mb+mass);
-
-   double a3f = ((mb+mass)/(2.0*mass))*(*a1f) -
-        ((mb-mass)/(2.0*mass))*(*a2f);
-
-   *a0f = a3f + ( (t*amf)/(2.0*mass));
-
-   return;
- }
-
-
-
-void EvtISGW2FF::EvtISGW2FF1S0 (EvtId parent,EvtId daugt,
-                         double t, double mass, double *fpf, double *fmf ) {
-
-  double mtb, mbb(0.0);
-  double msd(0.0), mx,mb,nf(0.0),nfp(0.0); 
-  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
-  double zji,cji,w,gammaji,chiji,betaji_fppfm;
-  double rfppfm,rfpmfm,f3fppfm,f3fpmfm,fppfm,fpmfm,al,ai,rcji,f3; 
-  double mqm,msb(0.0),bb2(0.0),mup,mum,bbx2,tm,wt,r2,betaji_fpmfm;
-
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtIdSet theB("B+","B-","B0","anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  if (theB.contains(prnt)) {
-    
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=5.31;
-    nf = 4.0;
-   
-    if (dgt==PI0||dgt==PIP||dgt==PIM||dgt==ETA||dgt==ETAPR) {
-
-      msq=0.33;
-      bx2=0.406*0.406;
-      mbx=0.75*0.770+0.25*0.14;
-      nfp = 0.0;
-    }
-    else{
-      if (dgt==D0||dgt==D0B||dgt==DP||dgt==DM) {
-       msq=1.82;
-       bx2=0.45*0.45;
-       mbx=0.75*2.01+0.25*1.87;
-       nfp = 3.0;
-      }
-      else{
-      report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-
-      if (dgt==PIP||dgt==PIM||dgt==PI0||dgt==ETA||dgt==ETAPR) {
-       msq=0.33;
-       bx2=0.406*0.406;
-       mbx=0.75*0.770+0.25*0.14;
-       nfp = 0.0;
-      }
-      else{
-       if (dgt==K0||dgt==K0S||dgt==K0L||dgt==KB||dgt==KP||dgt==KM) {
-         msq=0.55;
-         bx2=0.44*0.44;
-         mbx=0.75*0.892+0.25*0.49767;
-         nfp = 2.0;
-       }
-       else{
-      report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-       }
-      }
-    }
-    else{
-      if (prnt==DSP||prnt==DSM){
-       msb=1.82;
-       msd=0.55;
-       bb2=0.56*0.56;
-       mbb=1.968;
-       nf = 3.0;
-    
-       if  (dgt==K0||dgt==K0S||dgt==K0L||dgt==KB) {
-      
-         msq=0.33;
-         bx2=0.44*0.44;
-         mbx=0.75*0.770+0.25*0.14;
-         nfp = 0.0;
-       }
-       else{
-         if  (dgt==PI0||dgt==ETA||dgt==ETAPR) {
-           msq=0.33;
-           bx2=0.53*0.53;
-           mbx=0.75*0.892+0.25*0.49767;
-           nfp = 0.0;
-         }
-         else{
-
-           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-         }
-       }
-      }
-    else{
-      //BS -> cs constants added by djl on Jan. 21,1998
-      if (prnt==BS0||prnt==BSB){
-
-       msb=5.2;
-       msd=0.55;
-       bb2=0.54*0.54;
-       mbb=5.38;
-       nf = 4.0;
-    
-       if  (dgt==DSP||dgt==DSM) {
-      
-         msq=1.82;
-         bx2=0.56*0.56;
-         mbx=0.75*2.11+0.25*1.97;
-         nfp = 3.0;
-       }
-       else if  (dgt==KP||dgt==KM) {
-      
-         msq=0.55;
-         bx2=0.44*0.44;
-         mbx=0.75*0.892+0.25*0.49767;
-         nfp = 2.0;
-       }
-       else{
-           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-         }
-       }
-    
-      else{
-       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1S0.\n";
-       report(ERROR,"EvtGen") << "Parent:"<<parent.getId()<<endl;
-      }
-    }
-    }
-  }
-
-  mtb = msb + msd;
-  mtx = msq + msd;
-  mb=EvtPDL::getMeanMass(parent);
-  mx=mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if ( t>tm ) t=0.99*tm;
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  
-  mqm = 0.1;
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
-    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-    log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
-  
-  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,1.5) /
-    ((1.0+r2*(tm-t)/12.0)*(1.0+r2*(tm-t)/12.0));
-  
-//  for w use wt def with physical masses.
-//  report(ERROR,"EvtGen") << "before w\n";
-  
-  w = 1.0 + (( tm - t ) / ( 2.0* mb * mx ));
-  rcji = ( 1/sqrt(w*w -1 ))*log( w + sqrt( w*w -1 ));
-  al = (8.0 / ( 33.0 - 2.0*nfp ))*(w*rcji -1.0 );
-  ai = -1.0* ( 6.0/( 33.0 - 2.0*nf));  
-  cji = pow(( EvtGetas( msb,msb ) / EvtGetas( msq,msq ) ),ai);
-  
-  zji = msq / msb;
-  
-  gammaji = EvtGetGammaji( zji );
-  chiji = -1.0 - ( gammaji / ( 1- zji ));
-  betaji_fppfm = gammaji - (2.0/3.0)*chiji;
-  betaji_fpmfm = gammaji + (2.0/3.0)*chiji;
-  rfppfm = cji *(1.0 + betaji_fppfm*EvtGetas( msq,sqrt(msb*msq) )/EvtConst::pi);
-  rfpmfm = cji *(1.0 + betaji_fpmfm*EvtGetas( msq,sqrt(msb*msq) )/EvtConst::pi);
-  f3fppfm = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
-  f3fpmfm = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
-  fppfm = f3fppfm* rfppfm * ( 2.0 - ( ( mtx/msq)*(1- ( (msd*msq*bb2)
-                                                      /(2.0*mup*mtx*bbx2)))));
-  fpmfm = f3fpmfm* rfpmfm * ( mtb/msq) * ( 1 - ( ( msd*msq*bb2)/
-                                                ( 2.0*mup*mtx*bbx2)));
-  
-  *fpf = (fppfm + fpmfm)/2.0;
-  *fmf = (fppfm - fpmfm)/2.0;
-  
-  return;  
-} //get_ff_isgw_1s0
-
-
-
-
-
-void  EvtISGW2FF::EvtISGW2FF3S1(EvtId parent,EvtId daugt,double t,double mass,
-      double *f,double *g,double *ap,double *am){
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-  
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double cf(0.0),mtb,wt,msd(0.0),mup,f3f,msq(0.0),bb2(0.0),mum,mtx,bbx2,f3g;
-  double cji,bx2(0.0),f3appam,msb(0.0),tm,mbb(0.0),mbx(0.0);
-  double f3apmam,appam,apmam,mb,mx,f3;
-  double r_f,r_g,r_appam,r_apmam, betaji_f,betaji_g;
-  double betaji_appam, betaji_apmam;
-  double w,mqm,r2,chiji,zji,ai,al,rcji,nf(0.0),nfp(0.0),gammaji;
-
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-
-  if (parent==B0||parent==B0B||parent==BP||parent==BM) {
-
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=5.31;
-    nf = 4.0;
-    
-    if (dgt==DST0||dgt==DSTP||dgt==DSTM||dgt==DSTB) {
-
-      cf=0.989;
-      msq=1.82;
-      bx2=0.38*0.38;
-      mbx=0.75*2.01+0.25*1.87;
-      nfp = 3.0;
-    }  
-    else{
-      if (dgt==OMEG||dgt==RHO0||dgt==RHOM||dgt==RHOP) {
-       
-       cf=0.905;
-       msq=0.33;
-       bx2=0.299*0.299;
-       mbx=0.75*0.770+0.25*0.14;
-       nfp = 0.0;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
-      
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-
-      if (dgt==KSTP||dgt==KSTM||dgt==KST0||dgt==KSTB) {
-       
-       cf=0.928;
-       msq=0.55;
-       bx2=0.33*0.33;
-       mbx=0.75*0.892+0.25*0.494;
-       nfp = 2.0;
-      }
-      else{
-       if (dgt==RHO0||dgt==OMEG||dgt==RHOM||dgt==RHOP) {
-         cf=0.889;
-         msq=0.33;
-         bx2=0.299*0.299;
-         mbx=0.75*0.770+0.25*0.14;
-         nfp = 0.0;
-       }
-       else{
-         report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
-       }
-      }
-    }
-    else{
-      if (prnt==DSP||prnt==DSM){
-    
-       msb=1.82;
-       msd=0.55;
-       bb2=0.56*0.56;
-       mbb=1.968;
-       nf = 3.0;
-       
-       if  (dgt==KSTB||dgt==KST0) {
-
-         cf=0.8731;
-         msq=0.55;
-         bx2=0.33*0.33;
-         mbx=0.87;
-         nfp = 2.0;
-       }
-       else{
-         if(dgt==PHI){
-           cf=0.911;
-           msq=0.55;
-           bx2=0.37*0.37;
-           mbx=0.97;
-           nfp = 2.0;
-         }
-         else{
-       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
-         }
-       }
-      }
-    else{
-      //BS -> cs constants added by djl on Jan. 21,1998
-      if (prnt==BS0||prnt==BSB){
-
-       msb=5.2;
-       msd=0.55;
-       bb2=0.54*0.54;
-       mbb=5.38;
-       nf = 4.0;
-    
-       if  (dgt==DSSTP||dgt==DSSTM) {
-      
-          cf=0.984;
-         msq=1.82;
-         bx2=0.49*0.49;
-         mbx=0.75*2.11+0.25*1.97;
-         nfp = 3.0;
-       }
-       else if (dgt==KSTP||dgt==KSTM||dgt==KST0||dgt==KSTB) {
-       
-         cf=0.928;
-         msq=0.55;
-         bx2=0.33*0.33;
-         mbx=0.75*0.892+0.25*0.494;
-         nfp = 2.0;
-       }
-       else{
-           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-         }
-       }
-      
-      else{
-       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw2_ff_3S1.\n";
-      }
-    }
-    }
-  }
-
-
-  mtb=msb+msd;
-  mtx=msq+msd;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  mb=EvtPDL::getMeanMass(parent);
-  mx=mass;
-  tm=(mb-mx)*(mb-mx);
-  if ( t > tm ) t = 0.99*tm;
-
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  mqm = 0.1;
-  
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
-    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-    log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
-
-  w = 1.0 + (( tm - t ) / ( 2.0* mb * mx ));
-
-  rcji = ( 1/sqrt(w*w -1 ))*log( w + sqrt( w*w -1 ));
-  
-  al = (8.0 / ( 33.0 - 2.0*nfp ))*(w*rcji -1.0 );
-
-  ai = -1.0* ( 6.0/( 33.0 - 2.0*nf));  
-  
-  cji = pow(( EvtGetas( msb,msb ) / EvtGetas( msq,msq ) ),ai);
-  zji = msq / msb;
-
-  gammaji = EvtGetGammaji( zji );
-
-  chiji = -1.0 - ( gammaji / ( 1- zji ));
-  
-  betaji_g = (2.0/3.0)+gammaji;
-  betaji_f = (-2.0/3.0)+gammaji;
-  betaji_appam = -1.0-chiji+(4.0/(3.0*(1.0-zji)))+
-                 (2.0*(1+zji)*gammaji/(3.0*(1.0-zji)*(1.0-zji)));
-  
-  betaji_apmam = (1.0/3.0)-chiji-(4.0/(3.0*(1.0-zji)))-
-                 (2.0*(1+zji)*gammaji/(3.0*(1.0-zji)*(1.0-zji)))+
-                 gammaji;
-
-  r_g = cji*(1+(betaji_g*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
-  r_f = cji*(1+(betaji_f*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
-  r_appam = cji*(1+(betaji_appam*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
-  r_apmam = cji*(1+(betaji_apmam*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
-
-  
-  f3=sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,1.5)/
-    ((1.0+r2*(tm-t)/12.0)*(1.0+r2*(tm-t)/12.0));
-  
-  f3f=sqrt(mbx*mbb/(mtx*mtb))*f3;
-  f3g=sqrt(mtx*mtb/(mbx*mbb))*f3;
-  f3appam=sqrt(mtb*mtb*mtb*mbx/(mbb*mbb*mbb*mtx))*f3;
-  f3apmam=sqrt(mtx*mtb/(mbx*mbb))*f3;
-  *f=cf*mtb*(1+wt+msd*(wt-1)/(2*mup))*f3f*r_f;
-  *g=0.5*(1/msq-msd*bb2/(2*mum*mtx*bbx2))*f3g*r_g;
-  
-  appam=cji*(msd*bx2*(1-msd*bx2/(2*mtb*bbx2))/ 
-            ((1+wt)*msq*msb*bbx2)-
-            betaji_appam*EvtGetas( msq,sqrt(msq*mb) )/
-            (mtb*EvtConst::pi))*f3appam;
-  
-  apmam=-1.0*(mtb/msb-msd*bx2/(2*mup*bbx2)+wt*msd*mtb*bx2*
-             (1-msd*bx2/(2*mtb*bbx2))/((wt+1)*msq*msb*bbx2))*
-    f3apmam*r_apmam/mtx;
-  
-  *ap=0.5*(appam+apmam);
-  *am=0.5*(appam-apmam);
-  return;
-}
-
-
-void EvtISGW2FF::EvtISGW2FF21S0 (EvtId parent,EvtId daugt,
-       double t, double mass, double *fppf, double *fpmf ) {
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb, mbb(0.0);
-  double msd(0.0), mx,mb,nf,nfp(0.0); 
-  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
-  double f3fppfm,f3fpmfm,fppfm,fpmfm,f3;
-  double mqm,msb(0.0);
-  double mum,mup,r2,wt,tm,bb2(0.0),bbx2;
-  double tau,udef,vdef;
-
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-
-  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
-    
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=0.75*5.325+0.25*5.279;
-    nf = 4.0;
-
-    if (dgt==PI2S0||dgt==PI2SP||dgt==PI2SM||dgt==ETA2S) {
-
-      msq=0.33;
-      bx2=0.406*0.406;
-      mbx=0.75*1.45+0.25*1.300;
-      nfp = 0.0;
-    }
-    else{
-      if (dgt==D21S0P||dgt==D21S0B||dgt==D21S0N||dgt==D21S00) {
-       msq=1.82;
-       bx2=0.45*0.45;
-       mbx=0.75*2.64+0.25*2.58;
-       nfp=3.0;
-      }
-      else{
-
-      report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-      if (dgt==PI2SP||dgt==PI2SM||dgt==PI2S0||dgt==ETA2S) {
-       msq=0.33;
-       bx2=0.406*0.406;
-       mbx=0.75*1.45+0.25*1.300;
-       nfp = 0.0;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
-      }
-    }
-    else{
-      report(ERROR,"EvtGen") << "Not implemented parent in get_EvtISGW2_ff_21S0.\n";
-    }
-  }
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  
-  mqm = 0.1;
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
-    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-    log(EvtGetas(mqm)/EvtGetas(msq));
-  
-  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0) /
-    (pow((1.0+r2*(tm-t)/24.0),4.0));
-  
-  f3fppfm = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
-  f3fpmfm = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
-  
-  tau = msd*msd*bx2*(wt-1)/(bb2*bbx2);
-  udef = (( bb2-bx2)/(2.0*bbx2)) + ((bb2*tau)/(3.0*bbx2));
-  vdef = (bb2*(1.0+(msq/msb))/(6.0*bbx2))*(7.0 - ((bb2/bbx2)*(5+tau)));
-
-  fppfm = f3fppfm*sqrt(1.5)*((1.0-(msd/msq))*udef-(msd*vdef/msq));
-  fpmfm = f3fpmfm*sqrt(1.5)*(mtb/msq)*(udef+(msd*vdef/mtx));
-
-  *fppf = (fppfm + fpmfm) /2.0;
-  *fpmf = (fppfm - fpmfm) /2.0;
-  return;
-
-} //get_ff_isgw_21s0
-
-
-void EvtISGW2FF::EvtISGW2FF23S1 (EvtId parent,EvtId daugt,
-       double t, double mass, double *fpf, double *gpf, 
-       double *appf, double *apmf ) {
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb,  mbb(0.0);
-  double msd(0.0), mx,mb,nf,nfp(0.0); 
-  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
-  double f3appam,f3apmam,f3,appam,apmam,f3fp,f3gp;
-  double udef,tau,mum,mup,bb2(0.0),bbx2,tm,wt,mqm,r2,msb(0.0);
-  double cfp(0.0);
-
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-
-  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
-
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=0.75*5.325+0.25*5.279;
-    nf = 4.0;
-
-    if (dgt==RHO2S0||dgt==RHO2SP||dgt==RHO2SM||dgt==OMEG2S) {
-      
-      cfp=0.776;
-      msq=0.33;
-      bx2=0.299*0.299;
-      mbx=0.75*1.45+0.25*1.300;
-      nfp = 0.0;
-
-    }
-    else{
-      if (dgt==D23S1N||dgt==D23S1P||dgt==D23S1B||dgt==D23S10) {
-       cfp=0.929;
-       msq=1.82;
-       bx2=0.38*0.38;
-       mbx=0.75*2.64+0.25*2.58;
-       nfp=3.0;
-      }
-      else{
-      report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-
-      if (dgt==RHO2S0||dgt==RHO2SP||dgt==RHO2SM||dgt==OMEG2S) {
-       cfp=0.74;
-       msq=0.33;
-       bx2=0.299*0.299;
-       mbx=0.75*1.45+0.25*1.300;
-       nfp = 0.0;
-      }
-      else{      
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
-      }
-    }
-    else{
-      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_23P1.\n";
-    }
-  }
-
-  mtb = msb + msd;
-  mtx = msq + msd;
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-
-  if (t>tm) t = 0.99*tm;
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  
-  mqm = 0.1;
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
-     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-     log(EvtGetas(mqm)/EvtGetas(msq));
-
-  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0) /
-       (pow((1.0+r2*(tm-t)/24.0),4.0));
-  
-  f3fp = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
-  f3gp = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
-  f3appam = f3*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
-  f3apmam = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
-
-  tau = msd*msd*bx2*(wt-1.0)/(bb2*bbx2);
-  udef = (( bb2-bx2)/(2.0*bbx2));
-  udef = udef + ((bb2*tau)/(3.0*bbx2));
-
-  *fpf = cfp*sqrt(1.5)*mtb*(1.0+wt)*udef*f3fp;
-
-  *gpf = sqrt(3.0/8.0)*f3gp*(((1.0/msq)-((msd*bb2)/(2.0*mum*mtx*bbx2)))*
-        udef + ( (msd*bb2*bx2)/(3.0*mum*mtx*bbx2*bbx2)));
-       
-  appam = f3appam*sqrt(2.0/3.0)*(bb2/(msq*msb*bbx2))*((-7.0*msd*msd*bx2*
-          bx2*(1.0+(tau/7.0))/(8.0*mtb*bbx2*bbx2))+(5.0*msd*bx2*(1.0+
-          (tau/5.0))/(4.0*bbx2))+(3.0*msd*msd*bx2*bx2/(8.0*mtb*bb2*bbx2))-
-          (3.0*msd*bx2/(4.0*bb2)));
-         
-  apmam = f3apmam*sqrt(3.0/2.0)*(mtb/(msb*mtx))*(1.0-(bb2*(1.0+(tau/7.0))/
-          bbx2)-(msd*bx2*(1.0-(5.0*bb2*(1.0+(tau/5.0))/(3.0*bbx2)))
-          /(2.0*mtb*bbx2))-(7.0*msd*msd*bb2*bx2/(12.0*msq*mtb*bbx2*bbx2))*
-          (1.0-(bx2/bbx2)+(bb2*tau/(7.0*bbx2))));
-
-  *appf = (appam + apmam) /2.0;
-  *apmf = (appam - apmam) /2.0;
-  return;
-} //get_ff_isgw_23s1
-
-void EvtISGW2FF::EvtISGW2FF1P1 (EvtId parent,EvtId daugt,
-       double t, double mass, double *rf, double *vf, 
-       double *spf, double *smf ) {
-  
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb, mbb(0.0);
-  double msd(0.0), mx,mb,nf,nfp(0.0); 
-  double msq(0.0),bx2(0.0),mbx(0.0),mtx,f5;
-  double f5sppsm,f5spmsm;
-  double f5v,f5r,mup,mum,vv,rr,spmsm,sppsm;
-  double mqm,msb(0.0),bb2(0.0),bbx2,tm,wt,r2;
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=5.31;
-    nf = 4.0;
-    if (dgt==B10||dgt==B1P||dgt==B1M||dgt==H1||dgt==H1PR) {
-      msq=0.33;
-      bx2=0.275*0.275;
-      mbx=(3.0*1.123+0.98+5.0*1.32+3.0*1.26)/12.0;
-      nfp = 0.0;
-    }
-    else{
-      if (dgt==D1P1P||dgt==D1P10||dgt==D1P1B||dgt==D1P1N) {
-       msq=1.82;
-       bx2=0.33*0.33;
-       mbx=(5.0*2.46+3.0*2.42)/8.0;
-       nfp = 3.0;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1P1.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==DM||prnt==DP||prnt==D0B||prnt==D0) {
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-      if (dgt==B10||dgt==B1P||dgt==B1M||dgt==H1||dgt==H1PR) {
-       msq=0.33;
-       bx2=0.275*0.275;
-       mbx=(3.0*1.123+0.98+5.0*1.32+3.0*1.26)/12.0;
-       nfp = 0.0;
-      }
-      else{
-       if (dgt==K10||dgt==K1B||dgt==K1P||dgt==K1M) {
-         msq=0.55;
-         bx2=0.30*0.30;
-         mbx=(3.0*1.27+1.43+5.0*1.43+3.0*1.4)/12.0;
-         nfp = 2.0;
-       }
-       else{
-         report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1P1.\n";
-       }
-      }
-    }
-    else{
-      //BS -> cs constants added by djl on Jan. 21,1998
-      if (prnt==BS0||prnt==BSB){
-
-       msb=5.2;
-       msd=0.55;
-       bb2=0.54*0.54;
-       mbb=5.38;
-       nf = 4.0;
-    
-       if  (dgt==D1P1SP||dgt==D1P1SN) {
-      
-         msq=1.82;
-         bx2=0.41*0.41;
-         mbx=(5.0*2.61+3.0*2.54)/8.0;
-         nfp = 3.0;
-       }
-       else if (dgt==K10||dgt==K1B||dgt==K1P||dgt==K1M) {
-         msq=0.55;
-         bx2=0.30*0.30;
-         mbx=(3.0*1.27+1.43+5.0*1.43+3.0*1.4)/12.0;
-         nfp = 2.0;
-       }
-       else{
-           report(ERROR,"EvtGen") << "Not implemented daugt:"
-                         <<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-       }
-      }
-    
-    else{
-      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1P1.\n";
-    }
-    }
-  }
-
-
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  
-  mqm = 0.1;
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2)+
-    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-    log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
-  
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
-    (pow((1.0+r2*(tm-t)/18.0),3.0));
-  
-  f5v = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
-  f5r = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
-  f5sppsm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
-  f5spmsm = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
-  
-  if (msq == msd) { 
-    vv = f5v*(((mtb*sqrt(bb2))/(4.0*sqrt(2.0)*msb*msq*mtx)) +
-              (((wt-1)*msd)/(6.0*sqrt(2.0*bb2)*mtx)));
-    
-    rr = f5r*mtb*sqrt(bb2/2)*((1.0/mup)+((msd*mtx*(wt-1)*(wt-1))/
-                                (3.0*msq*bb2)));
-    
-    sppsm = msd*f5sppsm/(sqrt(2.0*bb2)*mtb)*(1.0-(msd/msq)+((msd*bb2)/
-                                   (2.0*mup*bbx2)));
-    
-    spmsm = msd*f5spmsm/(sqrt(2.0*bb2)*msq)*(((4-wt)/3.0)- ( (msd*msq*bb2)/
-                                    (2.0*mtx*mup*bbx2)));
-    
-  } else {
-    vv = -1.0*msd*f5v/(2.0*sqrt(3.0*bb2)*mtx)*
-      ((wt+1)/2.0+bb2*mtb/(2.0*msd*msq*msb));
-    
-    rr = -2.0*mtb*sqrt(bb2/3.0)*f5r*(1.0/msq + mtx*msd*(wt-1)/(2.0*bb2)*
-                    ((wt+1)/(2.0*msq)-msd*bb2/(2.0*mum*mtx*bbx2)));
-    
-    sppsm = -1.0*sqrt(3.0)*msd*f5sppsm/(2.0*sqrt(bb2)*mtb)*(1 - msd/(3.0*msq) -
-                           msd*bb2/(3.0*bbx2)*(1.0/(2.0*mum)-1.0/mup));
-    
-    spmsm = -1.0*msd*f5spmsm/(2.0*sqrt(3.0*bb2)*mtx)*((2-wt)*mtx/msq +
-                          msd*bb2/bbx2*(1.0/(2.0*mum)-1.0/mup));        
-
-  }
-
-  //smooth out the mass(meson) dependence a little
-  double parMass=EvtPDL::getMeanMass(prnt);
-  double q2max = parMass*parMass + mass*mass - 2.0*parMass*mass;
-  double massNom= EvtPDL::getMeanMass(dgt);
-  double q2maxNom = parMass*parMass + massNom*massNom - 2.0*parMass*massNom;
-  double q2maxin=sqrt(q2maxNom/q2max);
-  if ( q2maxin > 1000. ) q2maxin=1000.;
-
-  vv*=q2maxin;
-  rr*=q2maxin;
-  sppsm*=q2maxin;
-  spmsm*=q2maxin;
-
-  *vf = vv;
-  *rf = rr;
-  *spf = (sppsm + spmsm)/2.0;
-  *smf = (sppsm - spmsm)/2.0;
-  return;
-} //get_ff_isgw_1p1
-
-
-void EvtISGW2FF::EvtISGW2FF3P1 (EvtId parent,EvtId daugt, 
-       double t, double mass, double *lf, double *qf, 
-       double *cpf, double *cmf ) {
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb,  mbb(0.0);
-  double msd(0.0), mx,mb,nf,nfp(0.0); 
-  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
-  double f5cppcm,f5cpmcm,f5,ql,ll,cppcm,cpmcm,f5q,f5l;
-  double mqm,msb(0.0),bb2(0.0),mup,mum,bbx2,tm,wt,r2;
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-
-  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
-
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=5.31;
-    nf = 4.0;
-
-    if (dgt==A10||dgt==A1P||dgt==A1M||dgt==F1||dgt==F1PR) {
-
-      msq=0.33;
-      bx2=0.275*0.275;
-      mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
-      nfp = 0.0;
-    }
-    else{
-      if (dgt==D3P1P||dgt==D3P1N||dgt==D3P10||dgt==D3P1B) {
-       msq=1.82;
-       bx2=0.33*0.33;
-       mbx=(3.0*2.49+2.40)/4.0;
-       nfp = 3.0;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3P1.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
-    
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-
-      if (dgt==F1||dgt==F1PR||dgt==A10||dgt==A1P||dgt==A1M) {
-
-       msq=0.33;
-       bx2=0.275*0.275;
-       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
-       nfp = 0.0;
-      }
-      else{
-       if (dgt==K1STM||dgt==K1STB||dgt==K1STP||dgt==K1ST0) {
-         msq=0.55;
-         bx2=0.30*0.30;
-         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
-         nfp = 2.0;
-       }
-       else{
-         report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3P1.\n";
-       }
-      }
-    }
-    else{
-      //BS -> cs constants added by djl on Jan. 21,1998
-      if (prnt==BS0||prnt==BSB){
-
-       msb=5.2;
-       msd=0.55;
-       bb2=0.54*0.54;
-       mbb=5.38;
-       nf = 4.0;
-    
-       if  (dgt==D3P1SP||dgt==D3P1SN) {
-      
-         msq=1.82;
-         bx2=0.41*0.41;
-         mbx=(3.0*2.54+2.46)/4.0;
-         nfp = 3.0;
-       }
-       else if (dgt==K1STM||dgt==K1STB||dgt==K1STP||dgt==K1ST0) {
-         msq=0.55;
-         bx2=0.30*0.30;
-         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
-         nfp = 2.0;
-       }
-       else{
-           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-         }
-       }
-    
-    else{
-      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
-    }
-    }
-  }
-
-
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  
-  mqm = 0.1;
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
-    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-    log(EvtGetas(mqm)/EvtGetas(msq));
-  
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
-    (pow((1.0+r2*(tm-t)/18.0),3.0));
-
-  f5q = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
-  f5l = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
-  f5cppcm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
-  f5cpmcm = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
-  
-  if (msq == msd) { 
-    
-    ql = -1.0*(msd*(5.0+wt)*f5q/(2.0*mtx*sqrt(bb2)*6.0));
-  
-    ll = -1.0*mtb*sqrt(bb2)*f5l*(1/mum+ ( (msd*mtx*(wt-1)/bb2)*
-         ( (5.0+wt)/(6.0*msq)-(msd*bb2)/(2.0*mum*mtx*bbx2))));
-    
-    cppcm = (-1.0*(msd*mtx*f5cppcm/(2.0*msq*mtb*sqrt(bb2)))*
-            (1-(msd*msq*bb2)/(2.0*mtx*mum*bbx2)));
-    
-    cpmcm = 1.0*(msd*mtx*f5cpmcm/(2.0*msq*mtb*sqrt(bb2)))*
-            (((wt+2.0)/3.0)-(msd*msq*bb2)/(2.0*mtx*mum*bbx2))
-            *(mtb/mtx);
-  } else {
-
-    ql = f5q*sqrt(1.0/6.0)*msd/(sqrt(bb2)*mtx)*
-        (1.0-bb2*mtb/(4.0*msd*msq*msb));
-    ll = f5l*sqrt(2.0/3.0)*mtb*sqrt(bb2)*(1.0/(2.0*msq) - 3.0/(2.0*msb) +
-         msd*mtx*(wt-1)/bb2*(1.0/msq-msd*bb2/(2.0*mum*mtx*bbx2)));  
-    cppcm = msd*msd*bx2*f5cppcm/(sqrt(6.0)*mtb*msq*sqrt(bb2)*bbx2);
-    cpmcm = -sqrt(2.0/3.0)*msd*f5cpmcm/(sqrt(bb2)*mtx)*
-      (1+msd*bx2/(2.0*msq*bbx2));
-  }
-
-  //smooth out the mass(meson) dependence a little
-  double parMass=EvtPDL::getMeanMass(prnt);
-  double q2max = parMass*parMass + mass*mass - 2.0*parMass*mass;
-  double massNom= EvtPDL::getMeanMass(dgt);
-  double q2maxNom = parMass*parMass + massNom*massNom - 2.0*parMass*massNom;
-  double q2maxin=sqrt(q2maxNom/q2max);
-  if ( q2maxin > 1000. ) q2maxin=1000.;
-  ql*=q2maxin;
-  ll*=q2maxin;
-  cppcm*=q2maxin;
-  cpmcm*=q2maxin;
-
-  *qf = ql;
-  *lf = ll;
-  *cpf = (cppcm + cpmcm)/2.0;
-  *cmf = (cppcm - cpmcm)/2.0;
-  return;
-} //get_ff_isgw_3p1
-
-
-void EvtISGW2FF::EvtISGW2FF3P0 (EvtId parent,EvtId daugt,
-       double t, double mass, double *upf, double *umf ) {
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb, mbb(0.0);
-  double msd(0.0), mx,mb,nf,nfp(0.0); 
-  double msq(0.0),bx2(0.0),mbx(0.0),mtx;
-  double f5uppum,f5upmum,uppum,upmum,f5;
-  double mqm,mum,mup,wt,r2,bb2(0.0),bbx2,msb(0.0),tm;
-
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-
-  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
-      
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=5.31;
-    nf = 4.0;
-    if (dgt==A00||dgt==A0P||dgt==A0M||dgt==F0||dgt==F0PR) {
-
-      msq=0.33;
-      bx2=0.275*0.275;
-      mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
-      nfp = 0.0;
-    }
-    else{
-      if (dgt==D3P0P||dgt==D3P0N||dgt==D3P00||dgt==D3P0B) {
-       msq=1.82;
-       bx2=0.33*0.33;
-       mbx=(3.0*2.49+2.40)/4.0;
-       nfp = 3.0;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
-
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-      if (dgt==F0||dgt==F0PR||dgt==A00||dgt==A0P||dgt==A0M) {
-       msq=0.33;
-       bx2=0.275*0.275;
-       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
-       nfp = 0.0;
-      }
-      else{
-       if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
-         msq=0.55;
-         bx2=0.30*0.30;
-         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
-         nfp = 2.0;
-       }
-       else{
-         report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
-       }
-      }
-    }
-    else{
-      if (prnt==DSP||prnt==DSM){
-       msb=1.82;
-       msd=0.55;
-       bb2=0.56*0.56;
-       mbb=1.968;
-       nf = 3.0;
-       
-       if (dgt==F0||dgt==F0PR||dgt==A00||dgt==A0P||dgt==A0M) {
-         msq=0.55;
-         bx2=0.33*0.33;
-         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
-         nfp = 2.0;
-       }
-       else{
-         if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
-           msq=0.33;
-           bx2=0.30*0.30;
-           mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
-           nfp = 0.0;
-         }
-         else{
-           report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
-         }
-       }
-      }
-      else{
-       //BS -> cs constants added by djl on Jan. 21,1998
-       if (prnt==BS0||prnt==BSB){
-
-         msb=5.2;
-         msd=0.55;
-         bb2=0.54*0.54;
-         mbb=5.38;
-         nf = 4.0;
-         
-         if  (dgt==D3P0SP||dgt==D3P0SN) {
-           
-           msq=1.82;
-           bx2=0.41*0.41;
-           mbx=(3.0*2.54+2.46)/4.0;
-           nfp = 3.0;
-         }
-         else if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
-           msq=0.55;
-           bx2=0.30*0.30;
-           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
-           nfp = 2.0;
-         }
-         else{
-           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-         }
-       }
-       else{
-         report(ERROR,"EvtGen") << "Not implemented parent in get_EvtISGW2_ff_3P0.\n";
-       }
-      }
-    }
-  }
-  
-
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  
-  mqm = 0.1;
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
-     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-     log(EvtGetas(mqm)/EvtGetas(msq));
-
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
-       (pow((1.0+r2*(tm-t)/18.0),3.0));
-
-  f5uppum = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
-  f5upmum = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
-
-  uppum = -1.0*f5uppum*sqrt(2.0/(3.0*bb2))*msd;
-  upmum = 1.0*f5upmum*sqrt(2.0/(3.0*bb2))*msd*mtb/mtx;
-
-  *upf = (uppum + upmum)/2.0;
-  *umf = (uppum - upmum)/2.0;
-
-  return;
-
-}
-
-
-void EvtISGW2FF::EvtISGW2FF3P2 (EvtId parent,EvtId daugt,
-       double t, double mass, double *hf, double *kf, 
-       double *bpf, double *bmf ) {
-  
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("D(2S)+");
-  static EvtId D21S0N=EvtPDL::getId("D(2S)-");
-  static EvtId D21S00=EvtPDL::getId("D(2S)0");
-  static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
-
-  static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
-  static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
-  static EvtId D23S10=EvtPDL::getId("D*(2S)0");
-  static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
-
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-
-  double mtb, mbb(0.0);
-  double msd(0.0), mx,mb,nf,nfp(0.0); 
-  double msq(0.0),bx2(0.0),mbx(0.0),mtx,f5;
-  double f5h,f5k,f5bppbm,f5bpmbm,bppbm,bpmbm;
-  double mqm,mum,mup,tm,wt,r2,bb2(0.0),bbx2;
-  double msb(0.0);
-  EvtId prnt=parent;
-  EvtId dgt=daugt;
-
-  if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
-    
-    msb=5.2;
-    msd=0.33;
-    bb2=0.431*0.431;
-    mbb=5.31;
-    nf = 4.0;
-
-    if (dgt==A20||dgt==A2P||dgt==A2M||dgt==F2||dgt==F2PR) {
-
-      msq=0.33;
-      bx2=0.275*0.275;
-      mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
-      nfp = 0.0;
-
-    }
-
-    else{
-      if (dgt==D3P2P||dgt==D3P2N||dgt==D3P20||dgt==D3P2B) {
-
-       msq=1.82;
-       bx2=0.33*0.33;
-       mbx=(5.0*2.46+3.0*2.42)/8.0;
-       nfp = 3.0;
-      }
-      else{
-
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P2.\n";
-      }
-    }
-  }
-  else{
-    if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
-      
-      msb=1.82;
-      msd=0.33;
-      bb2=0.45*0.45;
-      mbb=1.963;
-      nf = 3.0;
-      if (dgt==F2||dgt==F2PR||dgt==A20||dgt==A2P||dgt==A2M) {
-       msq=0.33;
-       bx2=0.275*0.275;
-       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
-       nfp = 0.0;
-      }
-      else{
-       if (dgt==K2STM||dgt==K2STB||dgt==K2STP||dgt==K2ST0) {
-         msq=0.55;
-         bx2=0.30*0.30;
-         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
-         nfp = 2.0;
-       }
-       else{
-         report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P2.\n";
-       }
-      }
-    }
-    else{
-      //BS -> cs constants added by djl on Jan. 21,1998
-      if (prnt==BS0||prnt==BSB){
-
-       msb=5.2;
-       msd=0.55;
-       bb2=0.54*0.54;
-       mbb=5.38;
-       nf = 4.0;
-    
-       if  (dgt==D3P2SP||dgt==D3P2SN) {
-      
-         msq=1.82;
-         bx2=0.41*0.41;
-         mbx=(5.0*2.61+3.0*2.54)/8.0;
-         nfp = 3.0;
-       }
-       else if (dgt==K2STM||dgt==K2STB||dgt==K2STP||dgt==K2ST0) {
-         msq=0.55;
-         bx2=0.30*0.30;
-         mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
-         nfp = 2.0;
-       }
-       else{
-           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
-         }
-      }
-    
-    else{
-      report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P2.\n";
-    }
-    }
-  }
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  wt=1.0+(tm-t)/(2.0*mbb*mbx);
-  
-  mqm = 0.1;
-  r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2)+
-    (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
-    log(EvtGetas(mqm)/EvtGetas(msq));
-
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
-       (pow((1.0+r2*(tm-t)/18.0),3.0));
-  
-  f5h = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),-0.5);
-  f5k = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
-  f5bppbm = f5*pow(( mbb / mtb ),-2.5)*pow((mbx/mtx),0.5);
-  f5bpmbm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),-0.5);
-  
-  *hf = f5h*(msd/(sqrt(8.0*bb2)*mtb))*((1.0/msq)-(msd*bb2/(2.0*mum*
-        mtx*bbx2)));
-  
-  *kf = f5k*(msd/(sqrt(2.0*bb2)))*(1.0+wt);
-  
-  bppbm = ((msd*msd*f5bppbm*bx2)/(sqrt(32.0*bb2)*msq*msb*mtb*bbx2))*
-          (1.0-(msd*bx2/(2.0*mtb*bbx2)));
-
-  bpmbm = -1.0*(msd*f5bpmbm/(sqrt(2.0*bb2)*msb*mtx))*(1.0-
-          ((msd*msb*bx2)/(2.0*mup*mtb*bbx2))+((msd*bx2*(1.0-
-          ((msd*bx2)/(2.0*mtb*bbx2))))/(4.0*msq*bbx2)));
-
-  *bpf = (bppbm + bpmbm)/2.0;
-  *bmf = (bppbm - bpmbm)/2.0;
-  return;
-} //get_ff_isgw_1p1
-
-
-double EvtISGW2FF::EvtGetGammaji ( double z )
-
-{
-double temp;
-
-   temp = 2+((2.0*z)/(1-z))*log(z);
-   temp = -1.0*temp;
-
-   return temp;
-
-} //EvtGetGammaji
-
-
-
-double EvtISGW2FF::EvtGetas ( double massq, double massx )
-{
-  double lqcd2 = 0.04;
-  double nflav = 4;
-  double temp = 0.6;
-  
-  if ( massx > 0.6 ) {
-    if ( massq < 1.85 ) {
-      nflav = 3.0;}
-    
-    temp = 12.0*EvtConst::pi / ( 33.0 - 2.0*nflav) /
-      log( massx*massx/lqcd2);
-  }
-  return temp;
-  
-} //EvtGetas
-
-double EvtISGW2FF::EvtGetas ( double mass )
-     
-{
-  double lqcd2 = 0.04;
-  double nflav = 4;
-  double temp = 0.6;
-  
-  if ( mass > 0.6 ) {
-    if ( mass < 1.85 ) {
-      nflav = 3.0;}
-    
-    temp = 12.0*EvtConst::pi / ( 33.0 - 2.0*nflav) /
-      log( mass*mass/lqcd2);
-  }
-  return temp;
-  
-} //EvtGetas
-
-
-void EvtISGW2FF::getbaryonff(EvtId, EvtId, double, double, double*, 
-                            double*, double*, double*){
-  
-  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtISGW2FF.\n";  
-
-  ::abort();
-
-}
-
index e83ddc48b6821a08f0dea0609feda0932c47e3ef..a862b673646516da191be7d27ae9599d46927638 100644 (file)
@@ -42,6 +42,11 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
 
 private:
 
diff --git a/TEvtGen/EvtGenModels/EvtISGWFF.cpp b/TEvtGen/EvtGenModels/EvtISGWFF.cpp
new file mode 100644 (file)
index 0000000..d471fba
--- /dev/null
@@ -0,0 +1,881 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtISGWFF.cc
+//
+// Description: Routine to implement semileptonic form factors
+//              according to the model ISGW
+//
+// Modification history:
+//
+//    DJL     April 17, 1998        Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenModels/EvtISGWFF.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtId.hh"
+#include <string>
+#include <math.h>
+#include <stdlib.h>
+using std::endl;
+
+void EvtISGWFF::getscalarff(EvtId parent,EvtId daught,
+                       double t, double mass, double *fpf,
+                           double *f0f ) {
+
+  //added by Lange Jan4,2000
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId D3P0P=EvtPDL::getId("D_0*+");
+  static EvtId D3P0N=EvtPDL::getId("D_0*-");
+  static EvtId D3P00=EvtPDL::getId("D_0*0");
+  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
+
+  static EvtId D21S0P=EvtPDL::getId("hi");
+  static EvtId D21S0N=EvtPDL::getId("hi");
+  static EvtId D21S00=EvtPDL::getId("hi");
+  static EvtId D21S0B=EvtPDL::getId("hi");
+
+  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
+
+  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
+  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
+  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
+
+  static EvtId PIP=EvtPDL::getId("pi+");
+  static EvtId PIM=EvtPDL::getId("pi-");
+  static EvtId PI0=EvtPDL::getId("pi0");
+
+  static EvtId A0P=EvtPDL::getId("a_0+");
+  static EvtId A0M=EvtPDL::getId("a_0-");
+  static EvtId A00=EvtPDL::getId("a_00"); 
+
+  static EvtId F0=EvtPDL::getId("f_0");
+  static EvtId F0PR=EvtPDL::getId("f'_0");
+
+  static EvtId ETA=EvtPDL::getId("eta");
+  static EvtId ETAPR=EvtPDL::getId("eta'");
+
+  static EvtId KP=EvtPDL::getId("K+");
+  static EvtId KM=EvtPDL::getId("K-");
+  static EvtId K0=EvtPDL::getId("K0");
+  static EvtId KB=EvtPDL::getId("anti-K0");
+  static EvtId K0S=EvtPDL::getId("K_S0");
+  static EvtId K0L=EvtPDL::getId("K_L0");
+
+  static EvtId K0STP=EvtPDL::getId("K_0*+");
+  static EvtId K0STM=EvtPDL::getId("K_0*-");
+  static EvtId K0ST0=EvtPDL::getId("K_0*0");
+  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
+
+  static EvtId DSP=EvtPDL::getId("D_s+");
+  static EvtId DSM=EvtPDL::getId("D_s-");
+
+  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
+  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
+
+  double fmf;
+  double mb=EvtPDL::getMeanMass(parent);
+
+  if (daught==PI0||daught==PIP||daught==PIM||daught==ETA||
+      daught==ETAPR||daught==D0||daught==D0B||daught==DP||
+      daught==DM||daught==KP||daught==KM||daught==K0||daught==K0L||
+      daught==KB||daught==DSP||daught==DSM||daught==K0S) {
+
+      EvtISGW1FF1S0(parent,daught,t,mass,fpf,&fmf);
+  }
+      
+  if (daught==PI2S0||daught==PI2SP||daught==PI2SM||daught==ETA2S||
+      daught==D21S0P||daught==D21S0B||daught==D21S0N||daught==D21S00){
+      EvtISGW1FF21S0(parent,daught,t,mass,fpf,&fmf);
+  }
+  
+  if (daught==A00||daught==A0P||daught==A0M||daught==F0||
+      daught==F0PR||daught==D3P0P||daught==D3P00||daught==D3P0B||
+      daught==D3P0N||daught==K0STM||daught==K0STB||daught==K0STP||
+      daught==D3P0SP||daught==D3P0SN||
+      daught==K0ST0) {
+    EvtISGW1FF3P0(parent,daught,t,mass,fpf,&fmf);
+  }
+
+  *f0f = (fmf/((mb*mb-mass*mass)/t))+(*fpf);
+
+  return ;
+}
+
+ void EvtISGWFF::gettensorff(EvtId parent,EvtId daught,
+                       double t, double mass, double *hf,
+                            double *kf, double *bpf, double *bmf ){
+
+  //added by Lange Jan4,2000
+   EvtISGW1FF3P2(parent,daught,t,mass,hf,kf,bpf,bmf);
+   
+   return;
+
+ }
+
+
+ void EvtISGWFF::getvectorff(EvtId parent,EvtId daught,
+                       double t, double mass, double *a1f,
+                            double *a2f, double *vf, double *a0f ){
+  //added by Lange Jan4,2000
+  static EvtId DST0=EvtPDL::getId("D*0");
+  static EvtId DSTB=EvtPDL::getId("anti-D*0");
+  static EvtId DSTP=EvtPDL::getId("D*+");
+  static EvtId DSTM=EvtPDL::getId("D*-");
+
+  static EvtId D1P1P=EvtPDL::getId("D_1+");
+  static EvtId D1P1N=EvtPDL::getId("D_1-");
+  static EvtId D1P10=EvtPDL::getId("D_10");
+  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
+
+  static EvtId D3P1P=EvtPDL::getId("D'_1+");
+  static EvtId D3P1N=EvtPDL::getId("D'_1-");
+  static EvtId D3P10=EvtPDL::getId("D'_10");
+  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
+
+  static EvtId D23S1P=EvtPDL::getId("hi");
+  static EvtId D23S1N=EvtPDL::getId("hi");
+  static EvtId D23S10=EvtPDL::getId("hi");
+  static EvtId D23S1B=EvtPDL::getId("hi");
+
+  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
+  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
+  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
+  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
+
+  static EvtId RHOP=EvtPDL::getId("rho+");
+  static EvtId RHOM=EvtPDL::getId("rho-");
+  static EvtId RHO0=EvtPDL::getId("rho0");
+
+  static EvtId A1P=EvtPDL::getId("a_1+");
+  static EvtId A1M=EvtPDL::getId("a_1-");
+  static EvtId A10=EvtPDL::getId("a_10");
+
+  static EvtId B1P=EvtPDL::getId("b_1+");
+  static EvtId B1M=EvtPDL::getId("b_1-");
+  static EvtId B10=EvtPDL::getId("b_10");
+
+  static EvtId H1=EvtPDL::getId("h_1");
+  static EvtId H1PR=EvtPDL::getId("h'_1");
+
+  static EvtId F1=EvtPDL::getId("f_1");
+  static EvtId F1PR=EvtPDL::getId("f'_1");
+
+  static EvtId OMEG=EvtPDL::getId("omega");
+
+  static EvtId KSTP=EvtPDL::getId("K*+");
+  static EvtId KSTM=EvtPDL::getId("K*-");
+  static EvtId KST0=EvtPDL::getId("K*0");
+  static EvtId KSTB=EvtPDL::getId("anti-K*0");
+
+  static EvtId K1P=EvtPDL::getId("K_1+");
+  static EvtId K1M=EvtPDL::getId("K_1-");
+  static EvtId K10=EvtPDL::getId("K_10");
+  static EvtId K1B=EvtPDL::getId("anti-K_10");
+
+  static EvtId K1STP=EvtPDL::getId("K'_1+");
+  static EvtId K1STM=EvtPDL::getId("K'_1-");
+  static EvtId K1ST0=EvtPDL::getId("K'_10");
+  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
+
+  static EvtId PHI=EvtPDL::getId("phi");
+
+  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
+  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
+
+  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
+  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
+
+  static EvtId DSSTP=EvtPDL::getId("D_s*+");
+  static EvtId DSSTM=EvtPDL::getId("D_s*-");
+
+   double ff,gf,apf,amf;
+
+   if (daught==DST0||daught==DSTP||daught==DSTM||daught==DSTB||
+       daught==OMEG||daught==RHO0||daught==RHOM||daught==RHOP||
+       daught==KSTP||daught==KSTM||daught==KST0||daught==KSTB||
+       daught==PHI||daught==DSSTP||daught==DSSTM) {
+     EvtISGW1FF3S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+   if (daught==B10||daught==B1P||daught==B1M||daught==H1||
+       daught==H1PR||daught==D1P1P||daught==D1P10||daught==D1P1B||
+       daught==D1P1SP||daught==D1P1SN||
+       daught==D1P1N||daught==K10||daught==K1B||daught==K1P||
+       daught==K1M) {
+     EvtISGW1FF1P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+   if (daught==RHO2S0||daught==RHO2SP||daught==RHO2SM||daught==OMEG2S||
+       daught==D23S1P||daught==D23S1B||daught==D23S1N||daught==D23S10){
+     EvtISGW1FF23S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+   if (daught==A10||daught==A1P||daught==A1M||daught==F1||
+                  daught==F1PR||daught==D3P1P||daught==D3P10||daught==D3P1B||
+       daught==D3P1N||daught==K1STM||daught==K1STB||daught==K1STP||
+       daught==D3P1SP||daught==D3P1SN||
+       daught==K1ST0) {
+     EvtISGW1FF3P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
+   }
+
+   // Need to stuff in some factors to make these the ffs that
+   // is used elsewhere...
+
+   double mb=EvtPDL::getMeanMass(parent);
+  
+
+   *vf = (gf)*(mb+mass);
+   *a1f = (ff)/(mb+mass);
+   *a2f = -1.0*(apf)*(mb+mass);
+   double a3f = ((mb+mass)/(2.0*mass))*(*a1f) -
+        ((mb-mass)/(2.0*mass))*(*a2f);
+   
+   *a0f = a3f - ( (t*amf)/(2.0*mass));
+
+   return;
+ }
+
+void EvtISGWFF::EvtISGW1FF3P2 (EvtId parent,EvtId daugt,
+       double t, double mass,
+       double *hf, double *kf, double *bpf, double *bmf ) {
+
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D3P2P=EvtPDL::getId("D_2*+");
+  static EvtId D3P2N=EvtPDL::getId("D_2*-");
+  static EvtId D3P20=EvtPDL::getId("D_2*0");
+  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
+
+  static EvtId A2P=EvtPDL::getId("a_2+");
+  static EvtId A2M=EvtPDL::getId("a_2-");
+  static EvtId A20=EvtPDL::getId("a_20");
+
+  static EvtId F2=EvtPDL::getId("f_2");
+  static EvtId F2PR=EvtPDL::getId("f'_2");
+
+  double mtb;
+  double msd(0.0), mx(0.0), mb(0.0); 
+  double msq(0.0), bx2(0.0),mtx,f5;
+  double mum,mup,tm,bb2(0.0),bbx2;
+  double msb(0.0), kap;
+
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) { 
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==A20||daugt==A2P||daugt==A2M||daugt==F2||daugt==F2PR) {
+      msq=0.33;
+      bx2=0.27*0.27;
+    }
+    else{
+      if (daugt==D3P2P||daugt==D3P2N||daugt==D3P2B||daugt==D3P20) {
+       msq=1.82;
+       bx2=0.34*0.34;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
+  }
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+
+  mup=1.0/(1.0/msq+1.0/msb);
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  kap = 0.7*0.7;
+
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
+       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+
+  *hf = f5*(msd/(sqrt(8.0*bb2)*mtb))*((1.0/msq)-(msd*bb2/(2.0*mum*
+        mtx*bbx2)));
+  
+  *kf = f5*msd*sqrt(2.0/bb2);
+
+  *bpf = (-1.0*f5*msd/(sqrt(8.0*bb2)*msb*mtx))*(1.0-(msd*msb*bx2/(
+         2.0*mup*mtb*bbx2))+(msd*msb*bx2*(1.0-(msd*bx2/(2.0*mtb*bbx2)))/
+         (4.0*mtb*mum*bbx2)));
+  *bmf = 0.0;
+  return;
+} //get_ff_isgw_1p1
+
+void EvtISGWFF::EvtISGW1FF1S0 ( EvtId parent, EvtId daugt,
+       double t, double mass, double *fpf, double *fmf ) {
+  
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D0=EvtPDL::getId("D0");
+  static EvtId D0B=EvtPDL::getId("anti-D0");
+  static EvtId DP=EvtPDL::getId("D+");
+  static EvtId DM=EvtPDL::getId("D-");
+
+  static EvtId PIP=EvtPDL::getId("pi+");
+  static EvtId PIM=EvtPDL::getId("pi-");
+  static EvtId PI0=EvtPDL::getId("pi0");
+
+  static EvtId ETA=EvtPDL::getId("eta");
+  static EvtId ETAPR=EvtPDL::getId("eta'");
+
+  double mtb;
+  double msd(0.0), mx(0.0), mb(0.0); 
+  double msq(0.0), bx2(0.0),mtx;
+  double f3,kap; 
+  double msb(0.0),bb2(0.0),mup,mum,bbx2,tm;
+
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==PIP||daugt==PIM||daugt==PI0||daugt==ETA||daugt==ETAPR) {
+      msq=0.33;
+      bx2=0.31*0.31;
+    }
+    else{
+      if (daugt==D0||daugt==DP||daugt==DM||daugt==D0B) {      
+       msq=1.82;
+       bx2=0.39*0.39;
+      }      
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1S0.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1S0.\n";
+    report(ERROR,"EvtGen") << "Parent:"<<parent.getId()<<endl;
+  }
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  mup=1.0/(1.0/msq+1.0/msb);
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if ( t>tm ) t=0.99*tm;
+  
+  kap = 0.7*0.7;
+  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
+    exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+
+  *fpf = f3*(1+(msb/(2.0*mum))-(msb*msq*msd*bb2/(4.0*mup*mum*mtx*bbx2)));
+  *fmf = f3*(1.0-(mtb+mtx)*(0.5/msq-(msd*bb2/(4.0*mup*mtx*bbx2))));
+
+  return;
+} //get_ff_isgw_1s0
+
+
+
+void  EvtISGWFF::EvtISGW1FF3S1(EvtId parent,EvtId daugt,double t,
+      double mass, double *f,double *g,double *ap,double *am){
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId DST0=EvtPDL::getId("D*0");
+  static EvtId DSTB=EvtPDL::getId("anti-D*0");
+  static EvtId DSTP=EvtPDL::getId("D*+");
+  static EvtId DSTM=EvtPDL::getId("D*-");
+
+  static EvtId RHOP=EvtPDL::getId("rho+");
+  static EvtId RHOM=EvtPDL::getId("rho-");
+  static EvtId RHO0=EvtPDL::getId("rho0");
+
+  static EvtId OMEG=EvtPDL::getId("omega");
+  double msd(0.0),msq(0.0),bb2(0.0),mum,mtx,bbx2;
+  double bx2(0.0),msb(0.0),tm;
+  double mb,mx,f3, kap;
+
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) { 
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==DSTP||daugt==DSTM||daugt==DSTB||daugt==DST0) {
+      msq=1.82;
+      bx2=0.39*0.39;
+    }
+    else{
+      if (daugt==RHOP||daugt==RHOM||daugt==RHO0||daugt==OMEG) {
+       msq=0.33;
+       bx2=0.31*0.31;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3S1.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3S1.\n";
+  }
+  
+  double mtb;
+
+  mtb=msb+msd;
+  mtx=msq+msd;
+  
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  mb=EvtPDL::getMeanMass(parent);
+  mx=mass;
+  tm=(mb-mx)*(mb-mx);
+  if ( t > tm ) t = 0.99*tm;
+
+  kap = 0.7*0.7;
+  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
+       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+  
+  *f=2.0*mtb*f3;
+  *g=0.5*f3*((1/msq)-(msd*bb2/(2.0*mum*mtx*bbx2)));
+  *ap=(-1.0*f3/(2.0*mtx))*(1.0+(msd*(bb2-bx2)/(msb
+      *(bb2+bx2)))-(msd*msd*bx2*bx2/(4.0*mum*mtb*bbx2*bbx2)));
+  *am=0.0;
+
+}
+
+void EvtISGWFF::EvtISGW1FF23S1 (EvtId parent,EvtId daugt,
+       double t, double mass, double *fpf, double *gpf, 
+       double *appf, double *apmf ) {
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D23S1P=EvtPDL::getId("hi");
+  static EvtId D23S1N=EvtPDL::getId("hi");
+  static EvtId D23S10=EvtPDL::getId("hi");
+  static EvtId D23S1B=EvtPDL::getId("hi");
+
+  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
+  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
+  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
+  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
+
+  double mtb;
+  double msd(0.0), mx(0.0), mb(0.0); 
+  double msq(0.0), bx2(0.0),mtx;
+  double f3,f5,tt;
+  double mum,bb2(0.0),bbx2,tm,msb(0.0);
+    
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==RHO2SP||daugt==RHO2SM||daugt==RHO2S0||daugt==OMEG2S) {
+      msq=0.33;
+      bx2=0.31*0.31;
+    }
+    else{
+      if (daugt==D23S1N||daugt==D23S10||daugt==D23S1P||daugt==D23S1B) {
+      msq=1.82;
+      bx2=0.39*0.39;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_23P1.\n";
+  }
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  
+  double kap = 0.7*0.7;
+  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
+    exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+  
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
+    exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+  
+  *fpf = sqrt(6.0)*f3*mtb*( ((bb2-bx2)/(bb2+bx2)) + ((msd*msd*bx2*
+         (tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2)));
+       
+  *gpf = sqrt(3.0/8.0)*f3*( ((((bb2-bx2)/(bb2+bx2)) + ((msd*msd*bx2*
+         (tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2)))*
+         ((1.0/msq)-((msd*bb2)/(2.0*mum*mtx*bbx2)))) +
+         ((msd*bb2*bx2)/(3.0*mum*mtx*bbx2*bbx2)));
+
+  tt = (msd*msd*bx2*(tm-t))/(mtx*mtb*bb2*kap*bbx2);
+
+  *appf = (f5/(sqrt(6.0)*mtx))* ( ((3.0*mtb*bbx2/(2.0*msb*sqrt(bb2*bx2)))*
+          (1.0 - ( (msd*msd*msb*bx2*bx2)/(4.0*mtb*mtb*mum*bbx2*bbx2)))) -
+          ( (3.0*msd*sqrt(bx2/bb2))/(2.0*msb)) + 
+          ( (5.0*msd*sqrt(bx2*bb2)*(1.0 + 0.1*tt))/(2.0*msb*bbx2)) -
+          ( (3.0*mtb*sqrt(bb2/bx2)*(1.0 + (tt/6.0)))/(2.0*msb)) +
+          ( (7.0*msd*msd*sqrt(bb2/bx2)*bx2*bx2*(1.0 + (tt/14.0))) /
+            (8.0*mtb*mum*bbx2*bbx2))); 
+
+  *apmf = 0.0;
+  return;
+} //get_ff_isgw_23s1
+
+
+void EvtISGWFF::EvtISGW1FF3P1 (EvtId parent,EvtId daugt,
+       double t, double mass,
+       double *lf, double *qf, double *cpf, double *cmf ) {
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D3P1P=EvtPDL::getId("D'_1+");
+  static EvtId D3P1N=EvtPDL::getId("D'_1-");
+  static EvtId D3P10=EvtPDL::getId("D'_10");
+  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
+
+  static EvtId A1P=EvtPDL::getId("a_1+");
+  static EvtId A1M=EvtPDL::getId("a_1-");
+  static EvtId A10=EvtPDL::getId("a_10");
+
+  static EvtId F1=EvtPDL::getId("f_1");
+  static EvtId F1PR=EvtPDL::getId("f'_1");
+
+  double mtb;
+  double msd(0.0), mx(0.0), mb(0.0); 
+  double msq(0.0), bx2(0.0),mtx,f5;
+  double msb(0.0),bb2(0.0),mum,bbx2,tm;
+  double kap;
+
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) {  
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==A10||daugt==A1P||daugt==A1M||daugt==F1||daugt==F1PR) {
+      msq=0.33;
+      bx2=0.27*0.27;
+    }
+    else{
+      if (daugt==D3P1P||daugt==D3P1N||daugt==D3P1B||daugt==D3P10) {
+      msq=1.82;
+      bx2=0.34*0.34;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
+  }
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  
+  kap = 0.7*0.7;
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
+       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+
+  *qf = (f5*msd)/(2.0*mtx*sqrt(bb2));
+  
+  *lf = -1.0*mtb*sqrt(bb2)*f5*(1/mum+(msd*(tm-t)/(2.0*mtb*
+        kap*bb2))*((1.0/msq)-(1.0*msd*bb2/(2.0*mum*mtx*bbx2)))); 
+
+  *cpf = (f5*msd*msb/(4.0*mtb*sqrt(bb2)*mum))*(1.0-(msd*msq*bb2/(
+         2.0*mtx*mum*bbx2)));
+  *cmf = 0.0;
+  return;
+} //get_ff_isgw_3p1
+
+
+
+void EvtISGWFF::EvtISGW1FF3P0 (EvtId parent,EvtId daugt,
+       double t, double mass, double *upf, double *umf ) {
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D3P0P=EvtPDL::getId("D_0*+");
+  static EvtId D3P0N=EvtPDL::getId("D_0*-");
+  static EvtId D3P00=EvtPDL::getId("D_0*0");
+  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
+
+  static EvtId A0P=EvtPDL::getId("a_0+");
+  static EvtId A0M=EvtPDL::getId("a_0-");
+  static EvtId A00=EvtPDL::getId("a_00");
+
+  static EvtId F0=EvtPDL::getId("f_0");
+  static EvtId F0PR=EvtPDL::getId("f'_0");
+
+  double mtb;
+  double msd(0.0), mx(0.0), mb(0.0); 
+  double msq(0.0), bx2(0.0),mtx;
+  double f5;
+  double mum,bb2(0.0),bbx2,msb(0.0),tm;
+
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) {    
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==A00||daugt==A0P||daugt==A0M||daugt==F0||daugt==F0PR) {
+      msq=0.33;
+      bx2=0.27*0.27;
+    }
+    else{
+      if (daugt==D3P0P||daugt==D3P0N||daugt==D3P0B||daugt==D3P00) {
+       msq=1.82;
+       bx2=0.34*0.34;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P0.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P0.\n";
+  }
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+  
+  double kap = 0.7*0.7;
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
+       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+
+  *upf = f5*msd*msq*msb/(sqrt(6.0*bb2)*mtx*mum);
+  *umf = 0.0;
+  return;
+} //get_ff_isgw_3p0
+
+
+
+void EvtISGWFF::EvtISGW1FF1P1 (EvtId parent,EvtId daugt,
+       double t, double mass,
+       double *vf, double *rf, double *spf, double *smf ) {
+    //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D1P1P=EvtPDL::getId("D_1+");
+  static EvtId D1P1N=EvtPDL::getId("D_1-");
+  static EvtId D1P10=EvtPDL::getId("D_10");
+  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
+
+  static EvtId B1P=EvtPDL::getId("b_1+");
+  static EvtId B1M=EvtPDL::getId("b_1-");
+  static EvtId B10=EvtPDL::getId("b_10");
+
+  static EvtId H1=EvtPDL::getId("h_1");
+  static EvtId H1PR=EvtPDL::getId("h'_1");
+
+  double mtb;
+  double msd(0.0), mx(0.0), mb(0.0); 
+  double msq(0.0), bx2(0.0),mtx,f5;
+  double mup,mum,kap;
+  double msb(0.0),bb2(0.0),bbx2,tm;
+
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
+
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==H1||daugt==H1PR||daugt==B10||daugt==B1P||daugt==B1M) {
+      msq=0.33;
+      bx2=0.27*0.27;
+    }
+    else{
+      if (daugt==D1P1P||daugt==D1P1N||daugt==D1P10||daugt==D1P1B) {
+       msq=1.82;
+       bx2=0.34*0.34;
+      }
+      else{
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
+  }
+  
+  mtb = msb + msd;
+  mtx = msq + msd;
+
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+
+  mup=1.0/(1.0/msq+1.0/msb);
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+
+  kap = 0.7*0.7;
+  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
+       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+
+  *vf = f5*(((mtb*sqrt(bb2))/(4.0*sqrt(2.0)*msb*msq*mtx))); 
+  *rf = f5*mtb*sqrt(bb2/2)*((1.0/mup));
+
+  *spf = (f5*msd/(sqrt(2.0*bb2)*mtb))*(1.0+(msb/(2.0*mum))-
+         (msb*msq*msd*bb2/(4.0*mup*mum*mtx*bbx2)));
+  *smf = 0.0;
+
+  return;
+//get_ff_isgw_1p1
+
+}
+
+void EvtISGWFF::EvtISGW1FF21S0 (EvtId parent,EvtId daugt,
+       double t, double mass, double *fppf, double *fpmf ) {
+  //added by Lange Jan4,2000
+  static EvtId BP=EvtPDL::getId("B+");
+  static EvtId BM=EvtPDL::getId("B-");
+  static EvtId B0=EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  static EvtId D21S0P=EvtPDL::getId("hi");
+  static EvtId D21S0N=EvtPDL::getId("hi");
+  static EvtId D21S00=EvtPDL::getId("hi");
+  static EvtId D21S0B=EvtPDL::getId("hi");
+
+  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
+
+  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
+  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
+  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
+
+  double mtb;
+  double msd(0.0), mx(0.0), mb(0.0); 
+  double msq(0.0), bx2(0.0),mtx;
+  double f3;
+  double msb(0.0);
+  double mum,mup,tm,bb2(0.0),bbx2;
+  
+  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
+    msb=5.2;
+    msd=0.33;
+    bb2=0.41*0.41;
+    if (daugt==PI2S0||daugt==PI2SP||daugt==PI2SM||daugt==ETA2S){
+      msq=0.33;
+      bx2=0.31*0.31;
+    }
+    else{
+      if (daugt==D21S00||daugt==D21S0P||daugt==D21S0N||daugt==D21S0B) {
+       msq=1.82;
+       bx2=0.39*0.39;
+      }
+      else{  
+       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw1_ff_21S0.\n";
+      }
+    }
+  }
+  else{
+    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw1_ff_21S0.\n";
+  }
+
+  mtb = msb + msd;
+  mtx = msq + msd;
+  
+  mb = EvtPDL::getMeanMass( parent );
+  mx = mass;
+  
+  mup=1.0/(1.0/msq+1.0/msb);
+  mum=1.0/(1.0/msq-1.0/msb);
+  bbx2=0.5*(bb2+bx2);
+  tm=(mb-mx)*(mb-mx);
+  if (t>tm) t = 0.99*tm;
+
+  double kap = 0.7*0.7;
+  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
+       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
+  
+  *fppf = f3*sqrt(3.0/8.0)*(msb/mup)*( ((bb2-bx2)/(bb2+bx2)) +
+          (((msq*msd*bb2)/(3.0*mum*mtx*bbx2))*((7.0*bx2-3.0*bb2)/
+          (4.0*bbx2))) + 
+          (((msd*msd*bx2*(tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2))*
+          (1.0 - ((msq*msd*bb2)/(2.0*mum*mtx*bbx2)))));
+
+  *fpmf = 0.0;
+  return;
+} //get_ff_isgw_21s0
+
+
+void EvtISGWFF::getbaryonff(EvtId, EvtId, double, double, double*, 
+                              double*, double*, double*){
+  
+  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtISGWFF.\n";  
+  ::abort();
+
+}
+
+void EvtISGWFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                          double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtISGWFF.\n";
+  ::abort();
+
+}
+
+void EvtISGWFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                           double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtISGWFF.\n";
+  ::abort();
+
+}
diff --git a/TEvtGen/EvtGenModels/EvtISGWFF.cxx b/TEvtGen/EvtGenModels/EvtISGWFF.cxx
deleted file mode 100644 (file)
index 3f900a3..0000000
+++ /dev/null
@@ -1,2300 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtISGWFF.cc
-//
-// Description: Routine to implement semileptonic form factors
-//              according to the model ISGW
-//
-// Modification history:
-//
-//    DJL     April 17, 1998        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenModels/EvtISGWFF.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtId.hh"
-#include <string>
-#include <math.h>
-#include <stdlib.h>
-using std::endl;
-
-void EvtISGWFF::getscalarff(EvtId parent,EvtId daught,
-                       double t, double mass, double *fpf,
-                           double *f0f ) {
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-  double fmf;
-  double mb=EvtPDL::getMeanMass(parent);
-
-  if (daught==PI0||daught==PIP||daught==PIM||daught==ETA||
-      daught==ETAPR||daught==D0||daught==D0B||daught==DP||
-      daught==DM||daught==KP||daught==KM||daught==K0||daught==K0L||
-      daught==KB||daught==DSP||daught==DSM||daught==K0S) {
-
-      EvtISGW1FF1S0(parent,daught,t,mass,fpf,&fmf);
-  }
-      
-  if (daught==PI2S0||daught==PI2SP||daught==PI2SM||daught==ETA2S||
-      daught==D21S0P||daught==D21S0B||daught==D21S0N||daught==D21S00){
-      EvtISGW1FF21S0(parent,daught,t,mass,fpf,&fmf);
-  }
-  
-  if (daught==A00||daught==A0P||daught==A0M||daught==F0||
-      daught==F0PR||daught==D3P0P||daught==D3P00||daught==D3P0B||
-      daught==D3P0N||daught==K0STM||daught==K0STB||daught==K0STP||
-      daught==D3P0SP||daught==D3P0SN||
-      daught==K0ST0) {
-    EvtISGW1FF3P0(parent,daught,t,mass,fpf,&fmf);
-  }
-
-  *f0f = (fmf/((mb*mb-mass*mass)/t))+(*fpf);
-
-  return ;
-}
-
- void EvtISGWFF::gettensorff(EvtId parent,EvtId daught,
-                       double t, double mass, double *hf,
-                            double *kf, double *bpf, double *bmf ){
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-    EvtISGW1FF3P2(parent,daught,t,mass,hf,kf,bpf,bmf);
-
-    return;
-
- }
-
-
- void EvtISGWFF::getvectorff(EvtId parent,EvtId daught,
-                       double t, double mass, double *a1f,
-                            double *a2f, double *vf, double *a0f ){
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-   double ff,gf,apf,amf;
-
-   if (daught==DST0||daught==DSTP||daught==DSTM||daught==DSTB||
-       daught==OMEG||daught==RHO0||daught==RHOM||daught==RHOP||
-       daught==KSTP||daught==KSTM||daught==KST0||daught==KSTB||
-       daught==PHI||daught==DSSTP||daught==DSSTM) {
-     EvtISGW1FF3S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-   if (daught==B10||daught==B1P||daught==B1M||daught==H1||
-       daught==H1PR||daught==D1P1P||daught==D1P10||daught==D1P1B||
-       daught==D1P1SP||daught==D1P1SN||
-       daught==D1P1N||daught==K10||daught==K1B||daught==K1P||
-       daught==K1M) {
-     EvtISGW1FF1P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-   if (daught==RHO2S0||daught==RHO2SP||daught==RHO2SM||daught==OMEG2S||
-       daught==D23S1P||daught==D23S1B||daught==D23S1N||daught==D23S10){
-     EvtISGW1FF23S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-   if (daught==A10||daught==A1P||daught==A1M||daught==F1||
-                  daught==F1PR||daught==D3P1P||daught==D3P10||daught==D3P1B||
-       daught==D3P1N||daught==K1STM||daught==K1STB||daught==K1STP||
-       daught==D3P1SP||daught==D3P1SN||
-       daught==K1ST0) {
-     EvtISGW1FF3P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
-   }
-
-   // Need to stuff in some factors to make these the ffs that
-   // is used elsewhere...
-
-   double mb=EvtPDL::getMeanMass(parent);
-  
-
-   *vf = (gf)*(mb+mass);
-   *a1f = (ff)/(mb+mass);
-   *a2f = -1.0*(apf)*(mb+mass);
-   double a3f = ((mb+mass)/(2.0*mass))*(*a1f) -
-        ((mb-mass)/(2.0*mass))*(*a2f);
-   
-   *a0f = a3f - ( (t*amf)/(2.0*mass));
-
-
-
-   return;
- }
-
-
-
-void EvtISGWFF::EvtISGW1FF3P2 (EvtId parent,EvtId daugt,
-       double t, double mass,
-       double *hf, double *kf, double *bpf, double *bmf ) {
-
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb;
-  double msd(0.0), mx(0.0), mb(0.0); 
-  double msq(0.0), bx2(0.0),mtx,f5;
-  double mum,mup,tm,bb2(0.0),bbx2;
-  double msb(0.0), kap;
-
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) { 
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==A20||daugt==A2P||daugt==A2M||daugt==F2||daugt==F2PR) {
-      msq=0.33;
-      bx2=0.27*0.27;
-    }
-    else{
-      if (daugt==D3P2P||daugt==D3P2N||daugt==D3P2B||daugt==D3P20) {
-       msq=1.82;
-       bx2=0.34*0.34;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
-  }
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  kap = 0.7*0.7;
-
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
-       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-
-  *hf = f5*(msd/(sqrt(8.0*bb2)*mtb))*((1.0/msq)-(msd*bb2/(2.0*mum*
-        mtx*bbx2)));
-  
-  *kf = f5*msd*sqrt(2.0/bb2);
-
-  *bpf = (-1.0*f5*msd/(sqrt(8.0*bb2)*msb*mtx))*(1.0-(msd*msb*bx2/(
-         2.0*mup*mtb*bbx2))+(msd*msb*bx2*(1.0-(msd*bx2/(2.0*mtb*bbx2)))/
-         (4.0*mtb*mum*bbx2)));
-  *bmf = 0.0;
-  return;
-} //get_ff_isgw_1p1
-
-void EvtISGWFF::EvtISGW1FF1S0 ( EvtId parent, EvtId daugt,
-       double t, double mass, double *fpf, double *fmf ) {
-  
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb;
-  double msd(0.0), mx(0.0), mb(0.0); 
-  double msq(0.0), bx2(0.0),mtx;
-  double f3,kap; 
-  double msb(0.0),bb2(0.0),mup,mum,bbx2,tm;
-
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==PIP||daugt==PIM||daugt==PI0||daugt==ETA||daugt==ETAPR) {
-      msq=0.33;
-      bx2=0.31*0.31;
-    }
-    else{
-      if (daugt==D0||daugt==DP||daugt==DM||daugt==D0B) {      
-       msq=1.82;
-       bx2=0.39*0.39;
-      }      
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1S0.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1S0.\n";
-    report(ERROR,"EvtGen") << "Parent:"<<parent.getId()<<endl;
-  }
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if ( t>tm ) t=0.99*tm;
-  
-  kap = 0.7*0.7;
-  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
-    exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-
-  *fpf = f3*(1+(msb/(2.0*mum))-(msb*msq*msd*bb2/(4.0*mup*mum*mtx*bbx2)));
-  *fmf = f3*(1.0-(mtb+mtx)*(0.5/msq-(msd*bb2/(4.0*mup*mtx*bbx2))));
-
-  return;
-} //get_ff_isgw_1s0
-
-
-
-void  EvtISGWFF::EvtISGW1FF3S1(EvtId parent,EvtId daugt,double t,
-      double mass, double *f,double *g,double *ap,double *am){
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-  double msd(0.0),mup,msq(0.0),bb2(0.0),mum,mtx,bbx2;
-  double bx2(0.0),msb(0.0),tm;
-  double mb,mx,f3, kap;
-
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) { 
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==DSTP||daugt==DSTM||daugt==DSTB||daugt==DST0) {
-      msq=1.82;
-      bx2=0.39*0.39;
-    }
-    else{
-      if (daugt==RHOP||daugt==RHOM||daugt==RHO0||daugt==OMEG) {
-       msq=0.33;
-       bx2=0.31*0.31;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3S1.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3S1.\n";
-  }
-  
-  double mtb;
-
-  mtb=msb+msd;
-  mtx=msq+msd;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  mb=EvtPDL::getMeanMass(parent);
-  mx=mass;
-  tm=(mb-mx)*(mb-mx);
-  if ( t > tm ) t = 0.99*tm;
-
-  kap = 0.7*0.7;
-  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
-       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-  
-  *f=2.0*mtb*f3;
-  *g=0.5*f3*((1/msq)-(msd*bb2/(2.0*mum*mtx*bbx2)));
-  *ap=(-1.0*f3/(2.0*mtx))*(1.0+(msd*(bb2-bx2)/(msb
-      *(bb2+bx2)))-(msd*msd*bx2*bx2/(4.0*mum*mtb*bbx2*bbx2)));
-  *am=0.0;
-
-}
-
-void EvtISGWFF::EvtISGW1FF23S1 (EvtId parent,EvtId daugt,
-       double t, double mass, double *fpf, double *gpf, 
-       double *appf, double *apmf ) {
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb;
-  double msd(0.0), mx(0.0), mb(0.0); 
-  double msq(0.0), bx2(0.0),mtx;
-  double f3,f5,tt;
-  double mum,mup,bb2(0.0),bbx2,tm,msb(0.0);
-    
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==RHO2SP||daugt==RHO2SM||daugt==RHO2S0||daugt==OMEG2S) {
-      msq=0.33;
-      bx2=0.31*0.31;
-    }
-    else{
-      if (daugt==D23S1N||daugt==D23S10||daugt==D23S1P||daugt==D23S1B) {
-      msq=1.82;
-      bx2=0.39*0.39;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_23P1.\n";
-  }
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  
-  double kap = 0.7*0.7;
-  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
-    exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-  
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
-    exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-  
-  *fpf = sqrt(6.0)*f3*mtb*( ((bb2-bx2)/(bb2+bx2)) + ((msd*msd*bx2*
-         (tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2)));
-       
-  *gpf = sqrt(3.0/8.0)*f3*( ((((bb2-bx2)/(bb2+bx2)) + ((msd*msd*bx2*
-         (tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2)))*
-         ((1.0/msq)-((msd*bb2)/(2.0*mum*mtx*bbx2)))) +
-         ((msd*bb2*bx2)/(3.0*mum*mtx*bbx2*bbx2)));
-
-  tt = (msd*msd*bx2*(tm-t))/(mtx*mtb*bb2*kap*bbx2);
-
-  *appf = (f5/(sqrt(6.0)*mtx))* ( ((3.0*mtb*bbx2/(2.0*msb*sqrt(bb2*bx2)))*
-          (1.0 - ( (msd*msd*msb*bx2*bx2)/(4.0*mtb*mtb*mum*bbx2*bbx2)))) -
-          ( (3.0*msd*sqrt(bx2/bb2))/(2.0*msb)) + 
-          ( (5.0*msd*sqrt(bx2*bb2)*(1.0 + 0.1*tt))/(2.0*msb*bbx2)) -
-          ( (3.0*mtb*sqrt(bb2/bx2)*(1.0 + (tt/6.0)))/(2.0*msb)) +
-          ( (7.0*msd*msd*sqrt(bb2/bx2)*bx2*bx2*(1.0 + (tt/14.0))) /
-            (8.0*mtb*mum*bbx2*bbx2))); 
-
-  *apmf = 0.0;
-  return;
-} //get_ff_isgw_23s1
-
-
-void EvtISGWFF::EvtISGW1FF3P1 (EvtId parent,EvtId daugt,
-       double t, double mass,
-       double *lf, double *qf, double *cpf, double *cmf ) {
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb;
-  double msd(0.0), mx(0.0), mb(0.0); 
-  double msq(0.0), bx2(0.0),mtx,f5;
-  double msb(0.0),bb2(0.0),mup,mum,bbx2,tm;
-  double kap;
-
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) {  
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==A10||daugt==A1P||daugt==A1M||daugt==F1||daugt==F1PR) {
-      msq=0.33;
-      bx2=0.27*0.27;
-    }
-    else{
-      if (daugt==D3P1P||daugt==D3P1N||daugt==D3P1B||daugt==D3P10) {
-      msq=1.82;
-      bx2=0.34*0.34;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
-  }
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  
-  kap = 0.7*0.7;
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
-       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-
-  *qf = (f5*msd)/(2.0*mtx*sqrt(bb2));
-  
-  *lf = -1.0*mtb*sqrt(bb2)*f5*(1/mum+(msd*(tm-t)/(2.0*mtb*
-        kap*bb2))*((1.0/msq)-(1.0*msd*bb2/(2.0*mum*mtx*bbx2)))); 
-
-  *cpf = (f5*msd*msb/(4.0*mtb*sqrt(bb2)*mum))*(1.0-(msd*msq*bb2/(
-         2.0*mtx*mum*bbx2)));
-  *cmf = 0.0;
-  return;
-} //get_ff_isgw_3p1
-
-
-
-void EvtISGWFF::EvtISGW1FF3P0 (EvtId parent,EvtId daugt,
-       double t, double mass, double *upf, double *umf ) {
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb;
-  double msd(0.0), mx(0.0), mb(0.0); 
-  double msq(0.0), bx2(0.0),mtx;
-  double f5;
-  double mum,mup,bb2(0.0),bbx2,msb(0.0),tm;
-
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) {    
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==A00||daugt==A0P||daugt==A0M||daugt==F0||daugt==F0PR) {
-      msq=0.33;
-      bx2=0.27*0.27;
-    }
-    else{
-      if (daugt==D3P0P||daugt==D3P0N||daugt==D3P0B||daugt==D3P00) {
-       msq=1.82;
-       bx2=0.34*0.34;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P0.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P0.\n";
-  }
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-  
-  double kap = 0.7*0.7;
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
-       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-
-  *upf = f5*msd*msq*msb/(sqrt(6.0*bb2)*mtx*mum);
-  *umf = 0.0;
-  return;
-} //get_ff_isgw_3p0
-
-
-
-void EvtISGWFF::EvtISGW1FF1P1 (EvtId parent,EvtId daugt,
-       double t, double mass,
-       double *vf, double *rf, double *spf, double *smf ) {
-    //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb;
-  double msd(0.0), mx(0.0), mb(0.0); 
-  double msq(0.0), bx2(0.0),mtx,f5;
-  double mup,mum,kap;
-  double msb(0.0),bb2(0.0),bbx2,tm;
-
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
-
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==H1||daugt==H1PR||daugt==B10||daugt==B1P||daugt==B1M) {
-      msq=0.33;
-      bx2=0.27*0.27;
-    }
-    else{
-      if (daugt==D1P1P||daugt==D1P1N||daugt==D1P10||daugt==D1P1B) {
-       msq=1.82;
-       bx2=0.34*0.34;
-      }
-      else{
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
-  }
-  
-  mtb = msb + msd;
-  mtx = msq + msd;
-
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-
-  kap = 0.7*0.7;
-  f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
-       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-
-  *vf = f5*(((mtb*sqrt(bb2))/(4.0*sqrt(2.0)*msb*msq*mtx))); 
-  *rf = f5*mtb*sqrt(bb2/2)*((1.0/mup));
-
-  *spf = (f5*msd/(sqrt(2.0*bb2)*mtb))*(1.0+(msb/(2.0*mum))-
-         (msb*msq*msd*bb2/(4.0*mup*mum*mtx*bbx2)));
-  *smf = 0.0;
-
-  return;
-//get_ff_isgw_1p1
-
-}
-
-void EvtISGWFF::EvtISGW1FF21S0 (EvtId parent,EvtId daugt,
-       double t, double mass, double *fppf, double *fpmf ) {
-  //added by Lange Jan4,2000
-  static EvtId EM=EvtPDL::getId("e-");
-  static EvtId EP=EvtPDL::getId("e+");
-  static EvtId MUM=EvtPDL::getId("mu-");
-  static EvtId MUP=EvtPDL::getId("mu+");
-  static EvtId TAUM=EvtPDL::getId("tau-");
-  static EvtId TAUP=EvtPDL::getId("tau+");
-
-  static EvtId BP=EvtPDL::getId("B+");
-  static EvtId BM=EvtPDL::getId("B-");
-  static EvtId B0=EvtPDL::getId("B0");
-  static EvtId B0B=EvtPDL::getId("anti-B0");
-
-  static EvtId DST0=EvtPDL::getId("D*0");
-  static EvtId DSTB=EvtPDL::getId("anti-D*0");
-  static EvtId DSTP=EvtPDL::getId("D*+");
-  static EvtId DSTM=EvtPDL::getId("D*-");
-  static EvtId D0=EvtPDL::getId("D0");
-  static EvtId D0B=EvtPDL::getId("anti-D0");
-  static EvtId DP=EvtPDL::getId("D+");
-  static EvtId DM=EvtPDL::getId("D-");
-
-  static EvtId D1P1P=EvtPDL::getId("D_1+");
-  static EvtId D1P1N=EvtPDL::getId("D_1-");
-  static EvtId D1P10=EvtPDL::getId("D_10");
-  static EvtId D1P1B=EvtPDL::getId("anti-D_10");
-
-  static EvtId D3P2P=EvtPDL::getId("D_2*+");
-  static EvtId D3P2N=EvtPDL::getId("D_2*-");
-  static EvtId D3P20=EvtPDL::getId("D_2*0");
-  static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
-
-  static EvtId D3P1P=EvtPDL::getId("D'_1+");
-  static EvtId D3P1N=EvtPDL::getId("D'_1-");
-  static EvtId D3P10=EvtPDL::getId("D'_10");
-  static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
-
-  static EvtId D3P0P=EvtPDL::getId("D_0*+");
-  static EvtId D3P0N=EvtPDL::getId("D_0*-");
-  static EvtId D3P00=EvtPDL::getId("D_0*0");
-  static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
-
-  static EvtId D21S0P=EvtPDL::getId("hi");
-  static EvtId D21S0N=EvtPDL::getId("hi");
-  static EvtId D21S00=EvtPDL::getId("hi");
-  static EvtId D21S0B=EvtPDL::getId("hi");
-
-  static EvtId D23S1P=EvtPDL::getId("hi");
-  static EvtId D23S1N=EvtPDL::getId("hi");
-  static EvtId D23S10=EvtPDL::getId("hi");
-  static EvtId D23S1B=EvtPDL::getId("hi");
-
-  static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
-  static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
-  static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
-  static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
-  static EvtId ETA2S=EvtPDL::getId("eta(2S)");
-
-  static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
-  static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
-  static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
-
-  static EvtId PIP=EvtPDL::getId("pi+");
-  static EvtId PIM=EvtPDL::getId("pi-");
-  static EvtId PI0=EvtPDL::getId("pi0");
-
-  static EvtId RHOP=EvtPDL::getId("rho+");
-  static EvtId RHOM=EvtPDL::getId("rho-");
-  static EvtId RHO0=EvtPDL::getId("rho0");
-
-  static EvtId A2P=EvtPDL::getId("a_2+");
-  static EvtId A2M=EvtPDL::getId("a_2-");
-  static EvtId A20=EvtPDL::getId("a_20");
-
-  static EvtId A1P=EvtPDL::getId("a_1+");
-  static EvtId A1M=EvtPDL::getId("a_1-");
-  static EvtId A10=EvtPDL::getId("a_10");
-
-  static EvtId A0P=EvtPDL::getId("a_0+");
-  static EvtId A0M=EvtPDL::getId("a_0-");
-  static EvtId A00=EvtPDL::getId("a_00");
-
-  static EvtId B1P=EvtPDL::getId("b_1+");
-  static EvtId B1M=EvtPDL::getId("b_1-");
-  static EvtId B10=EvtPDL::getId("b_10");
-
-  static EvtId H1=EvtPDL::getId("h_1");
-  static EvtId H1PR=EvtPDL::getId("h'_1");
-
-  static EvtId F1=EvtPDL::getId("f_1");
-  static EvtId F1PR=EvtPDL::getId("f'_1");
-  static EvtId F0=EvtPDL::getId("f_0");
-  static EvtId F0PR=EvtPDL::getId("f'_0");
-  static EvtId F2=EvtPDL::getId("f_2");
-  static EvtId F2PR=EvtPDL::getId("f'_2");
-
-  static EvtId ETA=EvtPDL::getId("eta");
-  static EvtId ETAPR=EvtPDL::getId("eta'");
-  static EvtId OMEG=EvtPDL::getId("omega");
-
-  static EvtId KP=EvtPDL::getId("K+");
-  static EvtId KM=EvtPDL::getId("K-");
-  static EvtId K0=EvtPDL::getId("K0");
-  static EvtId KB=EvtPDL::getId("anti-K0");
-  static EvtId K0S=EvtPDL::getId("K_S0");
-  static EvtId K0L=EvtPDL::getId("K_L0");
-
-  static EvtId KSTP=EvtPDL::getId("K*+");
-  static EvtId KSTM=EvtPDL::getId("K*-");
-  static EvtId KST0=EvtPDL::getId("K*0");
-  static EvtId KSTB=EvtPDL::getId("anti-K*0");
-
-  static EvtId K1P=EvtPDL::getId("K_1+");
-  static EvtId K1M=EvtPDL::getId("K_1-");
-  static EvtId K10=EvtPDL::getId("K_10");
-  static EvtId K1B=EvtPDL::getId("anti-K_10");
-
-  static EvtId K1STP=EvtPDL::getId("K'_1+");
-  static EvtId K1STM=EvtPDL::getId("K'_1-");
-  static EvtId K1ST0=EvtPDL::getId("K'_10");
-  static EvtId K1STB=EvtPDL::getId("anti-K'_10");
-
-  static EvtId K2STP=EvtPDL::getId("K_2*+");
-  static EvtId K2STM=EvtPDL::getId("K_2*-");
-  static EvtId K2ST0=EvtPDL::getId("K_2*0");
-  static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
-
-  static EvtId K0STP=EvtPDL::getId("K_0*+");
-  static EvtId K0STM=EvtPDL::getId("K_0*-");
-  static EvtId K0ST0=EvtPDL::getId("K_0*0");
-  static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
-
-  static EvtId PHI=EvtPDL::getId("phi");
-  static EvtId DSP=EvtPDL::getId("D_s+");
-  static EvtId DSM=EvtPDL::getId("D_s-");
-
-  static EvtId D1P1SP=EvtPDL::getId("D_s1+");
-  static EvtId D1P1SN=EvtPDL::getId("D_s1-");
-
-  static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
-  static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
-
-  static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
-  static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
-
-  static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
-  static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
-
-  static EvtId DSSTP=EvtPDL::getId("D_s*+");
-  static EvtId DSSTM=EvtPDL::getId("D_s*-");
-
-  static EvtId BSB=EvtPDL::getId("anti-B_s0");
-  static EvtId BS0=EvtPDL::getId("B_s0");
-
-  double mtb;
-  double msd(0.0), mx(0.0), mb(0.0); 
-  double msq(0.0), bx2(0.0),mtx;
-  double f3;
-  double msb(0.0);
-  double mum,mup,tm,bb2(0.0),bbx2;
-  
-  if (parent==BM||parent==BP||parent==B0||parent==B0B) {
-    msb=5.2;
-    msd=0.33;
-    bb2=0.41*0.41;
-    if (daugt==PI2S0||daugt==PI2SP||daugt==PI2SM||daugt==ETA2S){
-      msq=0.33;
-      bx2=0.31*0.31;
-    }
-    else{
-      if (daugt==D21S00||daugt==D21S0P||daugt==D21S0N||daugt==D21S0B) {
-       msq=1.82;
-       bx2=0.39*0.39;
-      }
-      else{  
-       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw1_ff_21S0.\n";
-      }
-    }
-  }
-  else{
-    report(ERROR,"EvtGen") << "Not implemented parent in get_isgw1_ff_21S0.\n";
-  }
-
-  mtb = msb + msd;
-  mtx = msq + msd;
-  
-  mb = EvtPDL::getMeanMass( parent );
-  mx = mass;
-  
-  mup=1.0/(1.0/msq+1.0/msb);
-  mum=1.0/(1.0/msq-1.0/msb);
-  bbx2=0.5*(bb2+bx2);
-  tm=(mb-mx)*(mb-mx);
-  if (t>tm) t = 0.99*tm;
-
-  double kap = 0.7*0.7;
-  f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
-       exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
-  
-  *fppf = f3*sqrt(3.0/8.0)*(msb/mup)*( ((bb2-bx2)/(bb2+bx2)) +
-          (((msq*msd*bb2)/(3.0*mum*mtx*bbx2))*((7.0*bx2-3.0*bb2)/
-          (4.0*bbx2))) + 
-          (((msd*msd*bx2*(tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2))*
-          (1.0 - ((msq*msd*bb2)/(2.0*mum*mtx*bbx2)))));
-
-  *fpmf = 0.0;
-  return;
-} //get_ff_isgw_21s0
-
-
-void EvtISGWFF::getbaryonff(EvtId, EvtId, double, double, double*, 
-                              double*, double*, double*){
-  
-  report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtISGWFF.\n";  
-  ::abort();
-
-}
-
index b272758b8ce7be36d4b7260ef56a589daba9caca..f7c457a59610db0920ea354e959e41531951194b 100644 (file)
@@ -41,6 +41,11 @@ class EvtISGWFF : public EvtSemiLeptonicFF {
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
 
     // getscalarff, getvectorff, and gettensorff call the
     // correct isgw form factor routine which computes 
index 6a919f4f5ca3e5fcafce4b586d7d77f5bc746f8f..8a0bace577b04c4a9616d4f275b110279f1252bd 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtIntervalDecayAmp.hh,v 1.12 2009/02/15 18:21:51 ryd Exp $
+//      $Id: EvtIntervalDecayAmp.hh,v 1.4 2009-03-16 16:39:16 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
@@ -109,10 +109,8 @@ public:
   {
     // Set things up in most general way
     
-    //static EvtId B0=EvtPDL::getId("B0");
-    //static EvtId B0B=EvtPDL::getId("anti-B0");
-    EvtId B0=EvtPDL::getId("B0");
-    EvtId B0B=EvtPDL::getId("anti-B0");
+    static EvtId B0=EvtPDL::getId("B0");
+    static EvtId B0B=EvtPDL::getId("anti-B0");
     double t;
     EvtId other_b;  
     EvtComplex ampl(0.,0.);
@@ -130,7 +128,7 @@ public:
       EvtComplex A    = _fact->getAmp()->evaluate(_x);
       EvtComplex Abar = _fact->getAmpConj()->evaluate(_x);
 
-      EvtCPUtil::OtherB(p,t,other_b);
+      EvtCPUtil::getInstance()->OtherB(p,t,other_b);
 
       double dm = _fact->dm();
       double mixAmpli = _fact->mixAmpli();
similarity index 94%
rename from TEvtGen/EvtGenModels/EvtItgFunction.cxx
rename to TEvtGen/EvtGenModels/EvtItgFunction.cpp
index 8a43441fb06fa3690b5139ab163e6e3c68f1a76f..55d0c77f389a89637ab32c9824ba1bfe6a6d9524 100644 (file)
@@ -1,6 +1,6 @@
 //--------------------------------------------------------------------------
 // File and Version Information:
-//     $Id: EvtItgFunction.cc,v 1.3 2004/12/21 22:16:02 ryd Exp $
+//     $Id: EvtItgFunction.cpp,v 1.4 2009-03-16 15:47:39 robbep Exp $
 //
 // Description:
 //     Class EvtItgFunction
index 845fc559ed0ed0938bde486aa5abda51b7969b7d..9c41f62557c45d92193a18e200bf290a85354767 100644 (file)
@@ -25,7 +25,7 @@
  *
  *  @see EvtItgFunctionEvtItgFunction
  *
- *  @version $Id: EvtItgFunction.hh,v 1.1 2002/04/19 20:07:47 lange Exp $ 
+ *  @version $Id: EvtItgFunction.hh,v 1.2 2009-03-16 16:34:00 robbep Exp $ 
  *
  *  @author Phil Strother       Originator
  */
diff --git a/TEvtGen/EvtGenModels/EvtJetSet.cxx b/TEvtGen/EvtGenModels/EvtJetSet.cxx
deleted file mode 100644 (file)
index 991a60a..0000000
+++ /dev/null
@@ -1,840 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtJetSet.cc
-//
-// Description: Routine to use JetSet for decaying particles.
-//
-// Modification history:
-//
-//    RYD     July 24, 1997        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtStringParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtJetSet.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include <string>
-#include "EvtGenBase/EvtId.hh"
-#include <iostream>
-#include <iomanip>
-#include <fstream>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-using std::endl;
-using std::fstream;
-using std::ios;
-using std::ofstream;
-using std::resetiosflags;
-using std::setiosflags;
-using std::setw;
-
-
-int EvtJetSet::njetsetdecays=0;
-  EvtDecayBasePtr* EvtJetSet::jetsetdecays=0; 
-int EvtJetSet::ntable=0;
-
-int EvtJetSet::ncommand=0;
-int EvtJetSet::lcommand=0;
-std::string* EvtJetSet::commands=0;
-
-extern "C" {
-  extern void evtjetsetinit_(char* fname, int len);
-}
-
-
-extern "C" {
-  extern void jetset1_(int *,double *,int *,int *,int *,
-                      double *,double *,double *,double *);
-}
-
-extern "C" {
-  extern void lugive_(const char *cnfgstr,int length);
-}
-
-extern "C" {
-  extern int lucomp_(int* kf);
-}
-
-
-EvtJetSet::EvtJetSet(){}
-
-EvtJetSet::~EvtJetSet(){
-
-
-  int i;
-
-
-  //the deletion of commands is really uggly!
-
-  if (njetsetdecays==0) {
-    delete [] commands;
-    commands=0;
-    return;
-  }
-
-  for(i=0;i<njetsetdecays;i++){
-    if (jetsetdecays[i]==this){
-      jetsetdecays[i]=jetsetdecays[njetsetdecays-1];
-      njetsetdecays--;
-      if (njetsetdecays==0) {
-       delete [] commands;
-       commands=0;
-      }
-      return;
-    }
-  }
-
-  report(ERROR,"EvtGen") << "Error in destroying JetSet model!"<<endl;
-}
-
-
-std::string EvtJetSet::getName(){
-
-  return "JETSET";     
-
-}
-
-EvtDecayBase* EvtJetSet::clone(){
-
-  return new EvtJetSet;
-
-}
-
-
-void EvtJetSet::initProbMax(){
-
-  noProbMax();
-
-}
-
-
-void EvtJetSet::init(){
-
-  checkNArg(1);
-
-
-  if (getParentId().isAlias()){
-
-    report(ERROR,"EvtGen") << "EvtJetSet finds that you are decaying the"<<endl
-                           << " aliased particle "
-                          << EvtPDL::name(getParentId()).c_str()
-                          << " with the JetSet model"<<endl
-                          << " this does not work, please modify decay table."
-                          << endl;
-    report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
-    ::abort();
-
-  }
-
-  store(this);
-
-}
-
-
-std::string EvtJetSet::commandName(){
-
-  return std::string("JetSetPar");
-  
-}
-
-
-void EvtJetSet::command(std::string cmd){
-
-  if (ncommand==lcommand){
-
-    lcommand=10+2*lcommand;
-
-    std::string* newcommands=new std::string[lcommand];
-    
-    int i;
-
-    for(i=0;i<ncommand;i++){
-      newcommands[i]=commands[i];
-    }
-    
-    delete [] commands;
-
-    commands=newcommands;
-
-  }
-
-  commands[ncommand]=cmd;
-
-  ncommand++;
-
-}
-
-
-
-void EvtJetSet::decay( EvtParticle *p){
-
-
-  //added by Lange Jan4,2000
-  static EvtId STRNG=EvtPDL::getId("string");
-
-  int istdheppar=EvtPDL::getStdHep(p->getId());
-
-  if (lucomp_(&istdheppar)==0){
-    report(ERROR,"EvtGen") << "Jetset can not decay:"
-      <<EvtPDL::name(p->getId()).c_str()<<endl;
-    return;
-  }
-
-  double mp=p->mass();
-
-  EvtVector4R p4[20];
-  
-  int i,more;
-  int ip=EvtPDL::getStdHep(p->getId());
-  int ndaugjs;
-  int kf[100];
-  EvtId evtnumstable[100],evtnumparton[100];
-  int stableindex[100],partonindex[100];
-  int numstable;
-  int numparton;
-  int km[100];
-  EvtId type[MAX_DAUG];
-
-  jetSetInit();
-
-  double px[100],py[100],pz[100],e[100];
-
-  if ( p->getNDaug() != 0 ) { p->deleteDaughters(true);}
-
-  int count=0;
-
-  do{
-    //report(INFO,"EvtGen") << "calling jetset " << ip<< " " << mp <<endl;
-    jetset1_(&ip,&mp,&ndaugjs,kf,km,px,py,pz,e);
-    
-
-    numstable=0;
-    numparton=0;
-    //report(INFO,"EvtGen") << "found some daughters " << ndaugjs << endl;
-    for(i=0;i<ndaugjs;i++){
-
-      if (EvtPDL::evtIdFromStdHep(kf[i])==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") << "JetSet returned particle:"<<kf[i]<<endl;
-       report(ERROR,"EvtGen") << "This can not be translated to evt number"<<endl;
-       report(ERROR,"EvtGen") << "and the decay will be rejected!"<<endl;
-       report(ERROR,"EvtGen") << "The decay was of particle:"<<ip<<endl;
-
-      }
-
-      //sort out the partons
-      if (abs(kf[i])<=6||kf[i]==21){
-       partonindex[numparton]=i;
-       evtnumparton[numparton]=EvtPDL::evtIdFromStdHep(kf[i]);
-       numparton++;
-      }
-      else{
-       stableindex[numstable]=i;
-       evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(kf[i]); 
-       numstable++;
-      }
-
-
-      // have to protect against negative mass^2 for massless particles
-      // i.e. neutrinos and photons.
-      // this is uggly but I need to fix it right now....
-
-      if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){
-
-        e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
-
-      }
-
-      p4[i].set(e[i],px[i],py[i],pz[i]);
-
-
-    }
-
-    int channel=EvtDecayTable::inChannelList(p->getId(),numstable,evtnumstable);
-
-
-   more=(channel!=-1);
-
-   
-
-
-  count++;
-
-  }while( more && (count<10000) );
-
-  if (count>9999) {
-    report(INFO,"EvtGen") << "Too many loops in EvtJetSet!!!"<<endl;
-    report(INFO,"EvtGen") << "Parent:"<<EvtPDL::name(getParentId()).c_str()<<endl;
-    for(i=0;i<numstable;i++){
-      report(INFO,"EvtGen") << "Daug("<<i<<")"<<EvtPDL::name(evtnumstable[i]).c_str()<<endl;
-    }
-
-  }
-
-
-
-  if (numparton==0){
-
-    p->makeDaughters(numstable,evtnumstable);
-    int ndaugFound=0;
-    for(i=0;i<numstable;i++){
-      p->getDaug(i)->init(evtnumstable[i],p4[stableindex[i]]);
-      ndaugFound++;
-    }
-    if ( ndaugFound == 0 ) {
-      report(ERROR,"EvtGen") << "Jetset has failed to do a decay ";
-      report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass()<<endl;
-      assert(0);
-    }
-
-    fixPolarizations(p);
-
-    return ;
-   
-  }
-  else{
-
-    //have partons in JETSET
-
-    EvtVector4R p4string(0.0,0.0,0.0,0.0);
-
-    for(i=0;i<numparton;i++){
-      p4string+=p4[partonindex[i]];
-    }
-
-    int nprimary=1;
-    type[0]=STRNG;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]==0){
-       type[nprimary++]=evtnumstable[i];
-      }
-    }
-
-    p->makeDaughters(nprimary,type);
-
-    p->getDaug(0)->init(STRNG,p4string);
-
-    EvtVector4R p4partons[10];
-
-    for(i=0;i<numparton;i++){
-      p4partons[i]=p4[partonindex[i]];
-    }
-
-    ((EvtStringParticle*)p->getDaug(0))->initPartons(numparton,p4partons,evtnumparton);
-
-
-
-    nprimary=1;
-
-    for(i=0;i<numstable;i++){
-
-      if (km[stableindex[i]]==0){
-       p->getDaug(nprimary++)->init(evtnumstable[i],p4[stableindex[i]]);
-      }
-    }
-
-
-    int nsecond=0;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]!=0){
-       type[nsecond++]=evtnumstable[i];
-      }
-    }
-
-
-    p->getDaug(0)->makeDaughters(nsecond,type);
-
-    EvtVector4R p4stringboost(p4string.get(0),-p4string.get(1),
-                             -p4string.get(2),-p4string.get(3));
-
-    nsecond=0;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]!=0){
-       p4[stableindex[i]]=boostTo(p4[stableindex[i]],p4stringboost);
-       p->getDaug(0)->getDaug(nsecond)->init(evtnumstable[i],p4[stableindex[i]]);
-       p->getDaug(0)->getDaug(nsecond)->setDiagonalSpinDensity();
-       p->getDaug(0)->getDaug(nsecond)->decay();
-       nsecond++;
-      }
-    }
-
-    if ( nsecond == 0 ) {
-      report(ERROR,"EvtGen") << "Jetset has failed to do a decay ";
-      report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass() <<endl;
-      assert(0);
-    }
-
-    fixPolarizations(p);
-
-    return ;
-
-  }
-
-}
-
-void EvtJetSet::fixPolarizations(EvtParticle *p){
-
-  //special case for now to handle the J/psi polarization
-
-  int ndaug=p->getNDaug();
-  
-  int i;
-
-  static EvtId Jpsi=EvtPDL::getId("J/psi");
-
-  for(i=0;i<ndaug;i++){
-    if(p->getDaug(i)->getId()==Jpsi){
-  
-      EvtSpinDensity rho;
-      
-      rho.setDim(3);
-      rho.set(0,0,0.5);
-      rho.set(0,1,0.0);
-      rho.set(0,2,0.0);
-
-      rho.set(1,0,0.0);
-      rho.set(1,1,1.0);
-      rho.set(1,2,0.0);
-
-      rho.set(2,0,0.0);
-      rho.set(2,1,0.0);
-      rho.set(2,2,0.5);
-
-      EvtVector4R p4Psi=p->getDaug(i)->getP4();
-
-      double alpha=atan2(p4Psi.get(2),p4Psi.get(1));
-      double beta=acos(p4Psi.get(3)/p4Psi.d3mag());
-
-
-      p->getDaug(i)->setSpinDensityForwardHelicityBasis(rho,alpha,beta,0.0);
-      setDaughterSpinDensity(i);
-
-    }
-  }
-
-}
-
-void EvtJetSet::store(EvtDecayBase* jsdecay){
-
-  if (njetsetdecays==ntable){
-
-    EvtDecayBasePtr* newjetsetdecays=new EvtDecayBasePtr[2*ntable+10];
-    int i;
-    for(i=0;i<ntable;i++){
-      newjetsetdecays[i]=jetsetdecays[i];
-    }
-    ntable=2*ntable+10;
-    delete [] jetsetdecays;
-    jetsetdecays=newjetsetdecays;
-  }
-
-  jetsetdecays[njetsetdecays++]=jsdecay;
-
-
-
-}
-
-
-void EvtJetSet::WriteJetSetEntryHeader(ofstream &outdec, int lundkc,
-                              EvtId evtnum,std::string name,
-                              int chg, int cchg, int spin2,double mass,
-                              double width, double maxwidth,double ctau,
-                              int stable,double rawbrfrsum){
-
-
-  char sname[100];
-
-  int namelength=8;
-
-  int i,j;
-  int temp;
-  temp = spin2;
-
-  if (ctau>1000000.0) ctau=0.0;
-
-  strcpy(sname,name.c_str());
-
-  i=0;
-
-  while (sname[i]!=0){
-    i++;
-  }
-
-  // strip up to two + or -
-  if(evtnum.getId()>=0) {
-    if (sname[i-1]=='+'||sname[i-1]=='-'){ 
-      sname[i-1]=0;
-      i--;
-    }
-    if (sname[i-1]=='+'||sname[i-1]=='-'){ 
-      sname[i-1]=0;
-      i--;
-    }
-    // strip 0 except for _0 and chi...0
-    if (sname[i-1]=='0' && sname[i-2]!='_' && !(sname[0]=='c' && sname[1]=='h')){
-      sname[i-1]=0;
-      i--;
-    }
-  }
-
-  if (i>namelength) {
-    for(j=1;j<namelength;j++){
-      sname[j]=sname[j+i-namelength];
-    }
-    sname[namelength]=0;
-  }
-
-  cchg=0;
-
-  if(evtnum.getId()>=0) {
-    if (abs(EvtPDL::getStdHep(evtnum))==21) cchg=2;
-    if (abs(EvtPDL::getStdHep(evtnum))==90) cchg=-1;
-    if ((abs(EvtPDL::getStdHep(evtnum))<=8)&&
-       (abs(EvtPDL::getStdHep(evtnum))!=0)) cchg=1;
-
-  }
-
-  outdec << setw(5) << lundkc << "  ";
-  outdec.width(namelength);
-  outdec << setiosflags(ios::left) << sname << resetiosflags(ios::left);
-  outdec << setw(3) << chg;
-  outdec << setw(3) << cchg;
-  outdec.width(3);
-  if (evtnum.getId()>=0) {
-    if (EvtPDL::chargeConj(evtnum)==evtnum) {
-      outdec << 0;
-    }
-    else{
-      outdec << 1;
-    }
-  }
-  else{
-    outdec << 0;
-  }
-  outdec.setf(ios::fixed);
-  outdec.precision(5);
-  outdec << setw(12) << mass;
-  outdec << setw(12) << width;
-  outdec.width(12);
-  if (fabs(width)<0.0000000001) {
-    outdec << 0.0 ;
-  }
-  else{
-    outdec << maxwidth;
-  }
-  outdec << setw(14) << ctau;
-  outdec.width(3);
-  if (evtnum.getId()>=0) {
-    if (ctau>1.0 || rawbrfrsum<0.000001) {  
-      stable=0;
-    }
-  }
-  outdec << stable;
-  outdec << endl;
-  outdec.width(0);
-
-}
-
-void EvtJetSet::WriteJetSetParticle(ofstream &outdec,EvtId ipar,
-                                   EvtId iparname,int &first){
-
-  int ijetset;
-
-  double br_sum=0.0;
-
-  for(ijetset=0;ijetset<njetsetdecays;ijetset++){
-   
-    if (jetsetdecays[ijetset]->getParentId()==ipar){
-      br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
-    }
-    if (jetsetdecays[ijetset]->getParentId()!=
-       EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())&&
-       EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())==ipar){
-      br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
-    }
-
-
-  }
-
-  double br_sum_true=br_sum;
-
-  if (br_sum<0.000001) br_sum=1.0;
-
-  for(ijetset=0;ijetset<njetsetdecays;ijetset++){
-    if (jetsetdecays[ijetset]->getParentId()==ipar){
-
-      double br=jetsetdecays[ijetset]->getBranchingFraction();
-    
-      int i,daugs[5];
-      EvtId cdaugs[5];
-    
-      for(i=0;i<5;i++){
-      
-       if(i<jetsetdecays[ijetset]->getNDaug()){
-         daugs[i]=EvtPDL::getStdHep(
-                        jetsetdecays[ijetset]->getDaugs()[i]);
-         cdaugs[i]=EvtPDL::chargeConj(jetsetdecays[ijetset]->getDaugs()[i]);
-       }
-       else{
-         daugs[i]=0;
-       }
-      }
-
-      int channel;
-
-      channel=EvtDecayTable::findChannel(EvtPDL::chargeConj(ipar),
-                            jetsetdecays[ijetset]->getModelName(),
-                            jetsetdecays[ijetset]->getNDaug(),
-                            cdaugs,
-                            jetsetdecays[ijetset]->getNArg(),
-                            jetsetdecays[ijetset]->getArgsStr());     
-
-      if (jetsetdecays[ijetset]->getModelName()=="JETSET"){
-       
-       if (first) {
-         first=0;      
-         WriteJetSetEntryHeader(outdec,
-                                EvtPDL::getLundKC(iparname),
-                                iparname,
-                                EvtPDL::name(iparname), 
-                                EvtPDL::chg3(iparname),
-                                0,0,EvtPDL::getMeanMass(ipar),
-                                EvtPDL::getWidth(ipar),
-                                EvtPDL::getMeanMass(ipar)-EvtPDL::getMinMass(ipar),
-                                EvtPDL::getctau(ipar),1,br_sum_true);
-       }
-       
-       int dflag=2;
-
-       if (EvtPDL::getStdHep(ipar)<0) {
-         dflag=3;
-         for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-           daugs[i]=EvtPDL::getStdHep(cdaugs[i]);
-         }
-
-       }
-
-       //now lets check to make sure that jetset, lucomp, knows
-        //about all particles!
-       int unknown=0;
-       for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-         if (lucomp_(&daugs[i])==0) {
-           unknown=1;
-           report(ERROR,"EvtGen") << "JetSet (lucomp) does not "
-                                 << "know the particle:"<<
-             EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i]).c_str()<<endl;
-         }
-       }
-
-       int istdheppar=EvtPDL::getStdHep(ipar);
-
-       if (lucomp_(&istdheppar)==0){
-         unknown=1;
-         report(ERROR,"EvtGen") << "JetSet (lucomp) does not "
-                 << "know the particle:"<<
-             EvtPDL::name(ipar).c_str()<<endl;
-       }
-
-
-
-       if (unknown){
-         report(ERROR,"EvtGen") << "Therfore the decay:"<<endl;
-         report(ERROR,"EvtGen") << EvtPDL::name(jetsetdecays[ijetset]->getParentId()).c_str()<<" -> ";
-         for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-           report(ERROR,"") << EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i]).c_str()<<" ";
-         }
-         report(ERROR,"")<<endl;
-         report(ERROR,"EvtGen")<<"Will not be generated."<<endl;
-         return;
-       }
-
-
-       if (EvtPDL::chargeConj(ipar)==ipar) {
-         dflag=1;
-         //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because C(ipar)=ipar!"<<endl;
-       }
-
-
-       //if (channel>=0) {
-       //  dflag=1;
-         //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because channel>=0"<<endl;
-       //}
-       //      if (!(EvtPDL::getStdHep(ipar)<0&&channel>=0)){
-       if (1){
-
-         outdec.width(10);
-         outdec <<dflag;
-         outdec.width(5);
-         outdec <<(int)jetsetdecays[ijetset]->getArgs()[0];
-         outdec.width(12);
-         if (fabs(br)<0.000000001) {
-           outdec <<"0.00000";
-         }
-         else{
-           outdec <<br/br_sum;
-         }
-         outdec.width(8);
-         outdec <<daugs[0];
-         outdec.width(8);
-         outdec <<daugs[1];
-         outdec.width(8);
-         outdec <<daugs[2];
-         outdec.width(8);
-         outdec <<daugs[3];
-         outdec.width(8);
-         outdec <<daugs[4];
-         outdec<<endl;
-         outdec.width(0);
-       }
-      }
-    }
-  }
-}
-
-
-void EvtJetSet::MakeJetSetFile(char* fname){
-  
-  EvtId ipar;
-  int lundkc;
-  
-  //int part_list[MAX_PART];
-  
-  ofstream outdec;
-  outdec.open(fname);
-  
-  //outdec << ";"<<endl;
-  //outdec << ";This decayfile has been automatically created by"<<endl;
-  //outdec << ";EvtGen from the DECAY.DEC file"<<endl;
-  //outdec << ";"<<endl;
-
-  int nokcentry;
-
-  for(lundkc=1;lundkc<=500;lundkc++){
-
-    nokcentry=1;
-
-    int iipar;
-
-    for(iipar=0;iipar< static_cast<int>( EvtPDL::entries()) ;iipar++){
-
-      ipar=EvtId(iipar,iipar);
-      //no aliased particles!
-      std::string tempStr = EvtPDL::name(ipar);
-      EvtId realId = EvtPDL::getId(tempStr);
-      if ( realId.isAlias() != 0 ) continue;
-      if (lundkc==EvtPDL::getLundKC(ipar)){
-        
-        nokcentry=0;
-
-       int first=1;
-    
-       WriteJetSetParticle(outdec,ipar,ipar,first);
-
-       
-       EvtId ipar2=EvtPDL::chargeConj(ipar);
-
-
-        if (ipar2!=ipar){
-         WriteJetSetParticle(outdec,ipar2,ipar,first);
-       }
-
-        if (first){
-         WriteJetSetEntryHeader(outdec, 
-                                   EvtPDL::getLundKC(ipar),
-                                   ipar,
-                                   EvtPDL::name(ipar),
-                                   EvtPDL::chg3(ipar),
-                                   0,0,EvtPDL::getMeanMass(ipar),
-                                   EvtPDL::getWidth(ipar),
-                                   EvtPDL::getMeanMass(ipar)-EvtPDL::getMinMass(ipar),
-                                   EvtPDL::getctau(ipar),0,0.0);
-
-       }
-      }
-    }
-    if (nokcentry){
-
-      WriteJetSetEntryHeader(outdec, 
-                               lundkc,EvtId(-1,-1),"  ",
-                               0,0,0,EvtPDL::getMeanMass(ipar),0.0,0.0,
-                               EvtPDL::getctau(ipar),0,0.0);
-
-    }
-  }
-    outdec.close();
-}
-
-void EvtJetSet::jetSetInit(){
-
-  static int first=1;
-
-  if (first){
-
-    first=0;
-
-    report(INFO,"EvtGen") << "Will initialize JetSet."<<endl;
-
-    char fname[200];
-
-    char hostBuffer[100];
-    
-    if ( gethostname( hostBuffer, 100 ) != 0 ){
-      report(ERROR,"EvtGen") << " couldn't get hostname." << endl;
-      strncpy( hostBuffer, "hostnameNotFound", 100 );
-    }
-
-    char pid[100];
-
-    int thePid=getpid();
-
-    if ( sprintf( pid, "%d", thePid ) == 0 ){
-      report(ERROR,"EvtGen") << " couldn't get process ID." << endl;
-      strncpy( pid, "666", 100 );
-    }
-
-    strcpy(fname,"jet.d-");
-    strcat(fname,hostBuffer);
-    strcat(fname,"-");
-    strcat(fname,pid);
-    
-    MakeJetSetFile(fname);
-    evtjetsetinit_(fname,strlen(fname));
-
-    if (0==getenv("EVTSAVEJETD")){
-      char delcmd[300];
-      strcpy(delcmd,"rm -f ");
-      strcat(delcmd,fname);
-      system(delcmd);
-    }
-
-    int i;
-
-    for(i=0;i<ncommand;i++){
-      lugive_(commands[i].c_str(),strlen(commands[i].c_str()));
-
-    }
-
-    report(INFO,"EvtGen") << "Done initializing JetSet."<<endl;
-
-
-  }
-
-}
diff --git a/TEvtGen/EvtGenModels/EvtJetSet.hh b/TEvtGen/EvtGenModels/EvtJetSet.hh
deleted file mode 100644 (file)
index 3d6c81f..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtGen/EvtJetSet.hh
-//
-// Description:
-//
-// Modification history:
-//
-//    DJL/RYD     August 11, 1998         Module created
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTJETSET_HH
-#define EVTJETSET_HH
-
-#include "EvtGenBase/EvtDecayIncoherent.hh"
-
-class EvtParticle;
-
-typedef EvtDecayBase* EvtDecayBasePtr;
-
-#include <iosfwd>
-
-class EvtJetSet:public  EvtDecayIncoherent  {
-
-public:
-
-  EvtJetSet();
-  virtual ~EvtJetSet();
-
-  std::string getName();
-  EvtDecayBase* clone();
-  void decay(EvtParticle *p); 
-
-  std::string commandName();
-  void command(std::string cmd);
-
-  void init();
-
-  void initProbMax();
-
-  //initialize jetset; sets up decay table and
-  //paramters. Static so it can be invoked from
-  //from EvtJscont.
-  static void jetSetInit();
-
-private:
-
-  void store(EvtDecayBase* jsdecay);
-  void fixPolarizations(EvtParticle* p);
-  static void MakeJetSetFile(char* fname);
-  static void WriteJetSetParticle(std::ofstream &outdec,EvtId ipar,EvtId iparname,int &first);
-  static void WriteJetSetEntryHeader(std::ofstream &outdec, int lundkc,
-                              EvtId evtnum,std::string name,
-                              int chg, int cchg, int spin2,double mass,
-                              double width, double maxwidth,double ctau,
-                              int stable,double rawbrfrsum);
-
-  static int njetsetdecays;
-  static EvtDecayBasePtr* jetsetdecays;
-  static int ntable;
-
-  static int ncommand;
-  static int lcommand;
-  static std::string* commands;
-
-};
-
-#endif
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/EvtJetSetCDF.cxx b/TEvtGen/EvtGenModels/EvtJetSetCDF.cxx
deleted file mode 100644 (file)
index b69d835..0000000
+++ /dev/null
@@ -1,841 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtJetSet.cc
-//
-// Description: Routine to use JetSet for decaying particles.
-//
-// Modification history:
-//
-//    RYD     July 24, 1997        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtStringParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtJetSetCDF.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include <string>
-#include "EvtGenBase/EvtId.hh"
-#include <iostream>
-#include <iomanip>
-#include <fstream>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-using std::endl;
-using std::fstream;
-using std::ios;
-using std::ofstream;
-using std::resetiosflags;
-using std::setiosflags;
-using std::setw;
-
-
-int EvtJetSetCDF::njetsetdecays=0;
-  EvtDecayBasePtr* EvtJetSetCDF::jetsetdecays=0; 
-int EvtJetSetCDF::ntable=0;
-
-int EvtJetSetCDF::ncommand=0;
-int EvtJetSetCDF::lcommand=0;
-std::string* EvtJetSetCDF::commands=0;
-
-extern "C" {
-  extern void evtjetsetcdfinit_(char* fname, int len);
-}
-
-
-extern "C" {
-  extern void jetsetcdf_(int *,double *,int *,int *,int *,
-                      double *,double *,double *,double *);
-}
-
-extern "C" {
-  extern void lygive_(const char *cnfgstr,int length);
-}
-
-extern "C" {
-  extern int lycomp_(int* kf);
-}
-
-
-EvtJetSetCDF::EvtJetSetCDF(){}
-
-EvtJetSetCDF::~EvtJetSetCDF(){
-
-
-  int i;
-
-
-  //the deletion of commands is really uggly!
-
-  if (njetsetdecays==0) {
-    delete [] commands;
-    commands=0;
-    return;
-  }
-
-  for(i=0;i<njetsetdecays;i++){
-    if (jetsetdecays[i]==this){
-      jetsetdecays[i]=jetsetdecays[njetsetdecays-1];
-      njetsetdecays--;
-      if (njetsetdecays==0) {
-       delete [] commands;
-       commands=0;
-      }
-      return;
-    }
-  }
-
-  report(ERROR,"EvtGen") << "Error in destroying JetSet model!"<<endl;
-}
-
-
-std::string EvtJetSetCDF::getName(){
-
-  return "JETSETCDF";     
-
-}
-
-EvtDecayBase* EvtJetSetCDF::clone(){
-
-  return new EvtJetSetCDF;
-
-}
-
-
-void EvtJetSetCDF::initProbMax(){
-
-  noProbMax();
-
-}
-
-
-void EvtJetSetCDF::init(){
-
-  checkNArg(1);
-
-
-  if (getParentId().isAlias()){
-
-    report(ERROR,"EvtGen") << "EvtJetSetCDF finds that you are decaying the"<<endl
-                           << " aliased particle "
-                          << EvtPDL::name(getParentId()).c_str()
-                          << " with the JetSet model"<<endl
-                          << " this does not work, please modify decay table."
-                          << endl;
-    report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
-    ::abort();
-
-  }
-
-  store(this);
-
-}
-
-
-std::string EvtJetSetCDF::commandName(){
-
-  return std::string("JetSetCDFPar");
-  
-}
-
-
-void EvtJetSetCDF::command(std::string cmd){
-
-  if (ncommand==lcommand){
-
-    lcommand=10+2*lcommand;
-
-    std::string* newcommands=new std::string[lcommand];
-    
-    int i;
-
-    for(i=0;i<ncommand;i++){
-      newcommands[i]=commands[i];
-    }
-    
-    delete [] commands;
-
-    commands=newcommands;
-
-  }
-
-  commands[ncommand]=cmd;
-
-  ncommand++;
-
-}
-
-
-
-void EvtJetSetCDF::decay( EvtParticle *p){
-
-
-  //added by Lange Jan4,2000
-  static EvtId STRNG=EvtPDL::getId("string");
-
-  int istdheppar=EvtPDL::getStdHep(p->getId());
-
-  if (lycomp_(&istdheppar)==0){
-    report(ERROR,"EvtGen") << "Jetset can not decay:"
-      <<EvtPDL::name(p->getId()).c_str()<<endl;
-    return;
-  }
-
-  double mp=p->mass();
-
-  EvtVector4R p4[20];
-  
-  int i,more;
-  int ip=EvtPDL::getStdHep(p->getId());
-  int ndaugjs;
-  int kf[100];
-  EvtId evtnumstable[100],evtnumparton[100];
-  int stableindex[100],partonindex[100];
-  int numstable;
-  int numparton;
-  int km[100];
-  EvtId type[MAX_DAUG];
-
-  jetSetInit();
-
-  double px[100],py[100],pz[100],e[100];
-
-  if ( p->getNDaug() != 0 ) { p->deleteDaughters(true);}
-
-  int count=0;
-
-  do{
-    //report(INFO,"EvtGen") << "calling jetset " << ip<< " " << mp <<endl;
-    jetsetcdf_(&ip,&mp,&ndaugjs,kf,km,px,py,pz,e);
-    
-
-    numstable=0;
-    numparton=0;
-    //report(INFO,"EvtGen") << "found some daughters " << ndaugjs << endl;
-    for(i=0;i<ndaugjs;i++){
-
-      if (EvtPDL::evtIdFromStdHep(kf[i])==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") << "JetSet returned particle:"<<kf[i]<<endl;
-       report(ERROR,"EvtGen") << "This can not be translated to evt number"<<endl;
-       report(ERROR,"EvtGen") << "and the decay will be rejected!"<<endl;
-       report(ERROR,"EvtGen") << "The decay was of particle:"<<ip<<endl;
-
-      }
-
-      //sort out the partons
-      if (abs(kf[i])<=6||kf[i]==21){
-       partonindex[numparton]=i;
-       evtnumparton[numparton]=EvtPDL::evtIdFromStdHep(kf[i]);
-       numparton++;
-      }
-      else{
-       stableindex[numstable]=i;
-       evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(kf[i]); 
-       numstable++;
-      }
-
-
-      // have to protect against negative mass^2 for massless particles
-      // i.e. neutrinos and photons.
-      // this is uggly but I need to fix it right now....
-
-      if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){
-
-        e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
-
-      }
-
-      p4[i].set(e[i],px[i],py[i],pz[i]);
-
-
-    }
-
-    int channel=EvtDecayTable::inChannelList(p->getId(),numstable,evtnumstable);
-
-
-   more=(channel!=-1);
-
-   
-
-
-  count++;
-
-  }while( more && (count<10000) );
-
-  if (count>9999) {
-    report(INFO,"EvtGen") << "Too many loops in EvtJetSetCDF!!!"<<endl;
-    report(INFO,"EvtGen") << "Parent:"<<EvtPDL::name(getParentId()).c_str()<<endl;
-    for(i=0;i<numstable;i++){
-      report(INFO,"EvtGen") << "Daug("<<i<<")"<<EvtPDL::name(evtnumstable[i]).c_str()<<endl;
-    }
-
-  }
-
-
-
-  if (numparton==0){
-
-    p->makeDaughters(numstable,evtnumstable);
-    int ndaugFound=0;
-    for(i=0;i<numstable;i++){
-      p->getDaug(i)->init(evtnumstable[i],p4[stableindex[i]]);
-      ndaugFound++;
-    }
-    if ( ndaugFound == 0 ) {
-      report(ERROR,"EvtGen") << "Jetset has failed to do a decay ";
-      report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass()<<endl;
-      assert(0);
-    }
-
-    fixPolarizations(p);
-
-    return ;
-   
-  }
-  else{
-
-    //have partons in JETSET
-
-    EvtVector4R p4string(0.0,0.0,0.0,0.0);
-
-    for(i=0;i<numparton;i++){
-      p4string+=p4[partonindex[i]];
-    }
-
-    int nprimary=1;
-    type[0]=STRNG;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]==0){
-       type[nprimary++]=evtnumstable[i];
-      }
-    }
-
-    p->makeDaughters(nprimary,type);
-
-    p->getDaug(0)->init(STRNG,p4string);
-
-    EvtVector4R p4partons[10];
-
-    for(i=0;i<numparton;i++){
-      p4partons[i]=p4[partonindex[i]];
-    }
-
-    ((EvtStringParticle*)p->getDaug(0))->initPartons(numparton,p4partons,evtnumparton);
-
-
-
-    nprimary=1;
-
-    for(i=0;i<numstable;i++){
-
-      if (km[stableindex[i]]==0){
-       p->getDaug(nprimary++)->init(evtnumstable[i],p4[stableindex[i]]);
-      }
-    }
-
-
-    int nsecond=0;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]!=0){
-       type[nsecond++]=evtnumstable[i];
-      }
-    }
-
-
-    p->getDaug(0)->makeDaughters(nsecond,type);
-
-    EvtVector4R p4stringboost(p4string.get(0),-p4string.get(1),
-                             -p4string.get(2),-p4string.get(3));
-
-    nsecond=0;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]!=0){
-       p4[stableindex[i]]=boostTo(p4[stableindex[i]],p4stringboost);
-       p->getDaug(0)->getDaug(nsecond)->init(evtnumstable[i],p4[stableindex[i]]);
-       p->getDaug(0)->getDaug(nsecond)->setDiagonalSpinDensity();
-       p->getDaug(0)->getDaug(nsecond)->decay();
-       nsecond++;
-      }
-    }
-
-    if ( nsecond == 0 ) {
-      report(ERROR,"EvtGen") << "Jetset has failed to do a decay ";
-      report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass() <<endl;
-      assert(0);
-    }
-
-    fixPolarizations(p);
-
-    return ;
-
-  }
-
-}
-
-void EvtJetSetCDF::fixPolarizations(EvtParticle *p){
-
-  //special case for now to handle the J/psi polarization
-
-  int ndaug=p->getNDaug();
-  
-  int i;
-
-  static EvtId Jpsi=EvtPDL::getId("J/psi");
-
-  for(i=0;i<ndaug;i++){
-    if(p->getDaug(i)->getId()==Jpsi){
-  
-      EvtSpinDensity rho;
-      
-      rho.setDim(3);
-      rho.set(0,0,0.5);
-      rho.set(0,1,0.0);
-      rho.set(0,2,0.0);
-
-      rho.set(1,0,0.0);
-      rho.set(1,1,1.0);
-      rho.set(1,2,0.0);
-
-      rho.set(2,0,0.0);
-      rho.set(2,1,0.0);
-      rho.set(2,2,0.5);
-
-      EvtVector4R p4Psi=p->getDaug(i)->getP4();
-
-      double alpha=atan2(p4Psi.get(2),p4Psi.get(1));
-      double beta=acos(p4Psi.get(3)/p4Psi.d3mag());
-
-
-      p->getDaug(i)->setSpinDensityForwardHelicityBasis(rho,alpha,beta,0.0);
-      setDaughterSpinDensity(i);
-
-    }
-  }
-
-}
-
-void EvtJetSetCDF::store(EvtDecayBase* jsdecay){
-
-  if (njetsetdecays==ntable){
-
-    EvtDecayBasePtr* newjetsetdecays=new EvtDecayBasePtr[2*ntable+10];
-    int i;
-    for(i=0;i<ntable;i++){
-      newjetsetdecays[i]=jetsetdecays[i];
-    }
-    ntable=2*ntable+10;
-    delete [] jetsetdecays;
-    jetsetdecays=newjetsetdecays;
-  }
-
-  jetsetdecays[njetsetdecays++]=jsdecay;
-
-
-
-}
-
-
-void EvtJetSetCDF::WriteJetSetEntryHeader(ofstream &outdec, int lundkc,
-                              EvtId evtnum,std::string name,
-                              int chg, int cchg, int spin2,double mass,
-                              double width, double maxwidth,double ctau,
-                              int stable,double rawbrfrsum){
-
-
-  char sname[100];
-
-  int namelength=8;
-
-  int i,j;
-  int temp;
-  temp = spin2;
-
-  if (ctau>1000000.0) ctau=0.0;
-
-  strcpy(sname,name.c_str());
-
-  i=0;
-
-  while (sname[i]!=0){
-    i++;
-  }
-
-  // strip up to two + or -
-  if(evtnum.getId()>=0) {
-    if (sname[i-1]=='+'||sname[i-1]=='-'){ 
-      sname[i-1]=0;
-      i--;
-    }
-    if (sname[i-1]=='+'||sname[i-1]=='-'){ 
-      sname[i-1]=0;
-      i--;
-    }
-    // strip 0 except for _0 and chi...0
-    if (sname[i-1]=='0' && sname[i-2]!='_' && !(sname[0]=='c' && sname[1]=='h')){
-      sname[i-1]=0;
-      i--;
-    }
-  }
-
-  if (i>namelength) {
-    for(j=1;j<namelength;j++){
-      sname[j]=sname[j+i-namelength];
-    }
-    sname[namelength]=0;
-  }
-
-  cchg=0;
-
-  if(evtnum.getId()>=0) {
-    if (abs(EvtPDL::getStdHep(evtnum))==21) cchg=2;
-    if (abs(EvtPDL::getStdHep(evtnum))==90) cchg=-1;
-    if ((abs(EvtPDL::getStdHep(evtnum))<=8)&&
-       (abs(EvtPDL::getStdHep(evtnum))!=0)) cchg=1;
-
-  }
-
-  outdec << setw(5) << lundkc << "  ";
-  outdec.width(namelength);
-  outdec << setiosflags(ios::left) << sname << resetiosflags(ios::left);
-  outdec << setw(3) << chg;
-  outdec << setw(3) << cchg;
-  outdec.width(3);
-  if (evtnum.getId()>=0) {
-    if (EvtPDL::chargeConj(evtnum)==evtnum) {
-      outdec << 0;
-    }
-    else{
-      outdec << 1;
-    }
-  }
-  else{
-    outdec << 0;
-  }
-  outdec.setf(ios::fixed);
-  outdec.precision(5);
-  outdec << setw(12) << mass;
-  outdec << setw(12) << width;
-  outdec.width(12);
-  if (fabs(width)<0.0000000001) {
-    outdec << 0.0 ;
-  }
-  else{
-    outdec << maxwidth;
-  }
-  outdec << setw(14) << ctau;
-  outdec.width(3);
-  if (evtnum.getId()>=0) {
-    if (ctau>1.0 || rawbrfrsum<0.000001) {  
-      stable=0;
-    }
-  }
-  outdec << stable;
-  outdec << endl;
-  outdec.width(0);
-
-}
-
-void EvtJetSetCDF::WriteJetSetParticle(ofstream &outdec,EvtId ipar,
-                                   EvtId iparname,int &first){
-
-  int ijetset;
-
-  double br_sum=0.0;
-
-  for(ijetset=0;ijetset<njetsetdecays;ijetset++){
-   
-    if (jetsetdecays[ijetset]->getParentId()==ipar){
-      br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
-    }
-    if (jetsetdecays[ijetset]->getParentId()!=
-       EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())&&
-       EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())==ipar){
-      br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
-    }
-
-
-  }
-
-  double br_sum_true=br_sum;
-
-  if (br_sum<0.000001) br_sum=1.0;
-
-  for(ijetset=0;ijetset<njetsetdecays;ijetset++){
-    if (jetsetdecays[ijetset]->getParentId()==ipar){
-
-      double br=jetsetdecays[ijetset]->getBranchingFraction();
-    
-      int i,daugs[5];
-      EvtId cdaugs[5];
-    
-      for(i=0;i<5;i++){
-      
-       if(i<jetsetdecays[ijetset]->getNDaug()){
-         daugs[i]=EvtPDL::getStdHep(
-                        jetsetdecays[ijetset]->getDaugs()[i]);
-         cdaugs[i]=EvtPDL::chargeConj(jetsetdecays[ijetset]->getDaugs()[i]);
-       }
-       else{
-         daugs[i]=0;
-       }
-      }
-
-      int channel;
-
-      channel=EvtDecayTable::findChannel(EvtPDL::chargeConj(ipar),
-                            jetsetdecays[ijetset]->getModelName(),
-                            jetsetdecays[ijetset]->getNDaug(),
-                            cdaugs,
-                            jetsetdecays[ijetset]->getNArg(),
-                            jetsetdecays[ijetset]->getArgsStr());     
-
-      if (jetsetdecays[ijetset]->getModelName()=="JETSET"){
-       
-       if (first) {
-         first=0;      
-         WriteJetSetEntryHeader(outdec,
-                                EvtPDL::getLundKC(iparname),
-                                iparname,
-                                EvtPDL::name(iparname), 
-                                EvtPDL::chg3(iparname),
-                                0,0,EvtPDL::getMeanMass(ipar),
-                                EvtPDL::getWidth(ipar),
-                                EvtPDL::getMeanMass(ipar)-EvtPDL::getMinMass(ipar),
-                                EvtPDL::getctau(ipar),1,br_sum_true);
-       }
-       
-       int dflag=2;
-
-       if (EvtPDL::getStdHep(ipar)<0) {
-         dflag=3;
-         for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-           daugs[i]=EvtPDL::getStdHep(cdaugs[i]);
-         }
-
-       }
-
-       //now lets check to make sure that jetset, lycomp, knows
-        //about all particles!
-       int unknown=0;
-       for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-         if (lycomp_(&daugs[i])==0) {
-           unknown=1;
-           report(ERROR,"EvtGen") << "JetSet (lycomp) does not "
-                                 << "know the particle:"<<
-             EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i]).c_str()<<endl;
-         }
-       }
-
-       int istdheppar=EvtPDL::getStdHep(ipar);
-
-       if (lycomp_(&istdheppar)==0){
-         unknown=1;
-         report(ERROR,"EvtGen") << "JetSet (lycomp) does not "
-                 << "know the particle:"<<
-             EvtPDL::name(ipar).c_str()<<endl;
-       }
-
-
-
-       if (unknown){
-         report(ERROR,"EvtGen") << "Therfore the decay:"<<endl;
-         report(ERROR,"EvtGen") << EvtPDL::name(jetsetdecays[ijetset]->getParentId()).c_str()<<" -> ";
-         for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-           report(ERROR,"") << EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i]).c_str()<<" ";
-         }
-         report(ERROR,"")<<endl;
-         report(ERROR,"EvtGen")<<"Will not be generated."<<endl;
-         return;
-       }
-
-
-       if (EvtPDL::chargeConj(ipar)==ipar) {
-         dflag=1;
-         //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because C(ipar)=ipar!"<<endl;
-       }
-
-
-       //if (channel>=0) {
-       //  dflag=1;
-         //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because channel>=0"<<endl;
-       //}
-       //      if (!(EvtPDL::getStdHep(ipar)<0&&channel>=0)){
-       if (1){
-
-         outdec.width(10);
-         outdec <<dflag;
-         outdec.width(5);
-         outdec <<(int)jetsetdecays[ijetset]->getArgs()[0];
-         outdec.width(12);
-         if (fabs(br)<0.000000001) {
-           outdec <<"0.00000";
-         }
-         else{
-           outdec <<br/br_sum;
-         }
-         outdec.width(8);
-         outdec <<daugs[0];
-         outdec.width(8);
-         outdec <<daugs[1];
-         outdec.width(8);
-         outdec <<daugs[2];
-         outdec.width(8);
-         outdec <<daugs[3];
-         outdec.width(8);
-         outdec <<daugs[4];
-         outdec<<endl;
-         outdec.width(0);
-       }
-      }
-    }
-  }
-}
-
-
-void EvtJetSetCDF::MakeJetSetFile(char* fname){
-  
-  EvtId ipar;
-  int lundkc;
-  
-  //int part_list[MAX_PART];
-  
-  ofstream outdec;
-  outdec.open(fname);
-  
-  //outdec << ";"<<endl;
-  //outdec << ";This decayfile has been automatically created by"<<endl;
-  //outdec << ";EvtGen from the DECAY.DEC file"<<endl;
-  //outdec << ";"<<endl;
-
-  int nokcentry;
-
-  for(lundkc=1;lundkc<=500;lundkc++){
-
-    nokcentry=1;
-
-    for(size_t iipar=0;iipar<EvtPDL::entries();iipar++){
-
-      ipar=EvtId(iipar,iipar);
-      //no aliased particles!
-      std::string tempStr = EvtPDL::name(ipar);
-      EvtId realId = EvtPDL::getId(tempStr);
-      if ( realId.isAlias() != 0 ) continue;
-      if (lundkc==EvtPDL::getLundKC(ipar)){
-        
-        nokcentry=0;
-
-       int first=1;
-    
-       WriteJetSetParticle(outdec,ipar,ipar,first);
-
-       
-       EvtId ipar2=EvtPDL::chargeConj(ipar);
-
-
-        if (ipar2!=ipar){
-         WriteJetSetParticle(outdec,ipar2,ipar,first);
-       }
-
-        if (first){
-         WriteJetSetEntryHeader(outdec, 
-                                   EvtPDL::getLundKC(ipar),
-                                   ipar,
-                                   EvtPDL::name(ipar),
-                                   EvtPDL::chg3(ipar),
-                                   0,0,EvtPDL::getMeanMass(ipar),
-                                   EvtPDL::getWidth(ipar),
-                                   EvtPDL::getMeanMass(ipar)-EvtPDL::getMinMass(ipar),
-                                   EvtPDL::getctau(ipar),0,0.0);
-
-       }
-      }
-    }
-    if (nokcentry){
-
-      WriteJetSetEntryHeader(outdec, 
-                               lundkc,EvtId(-1,-1),"  ",
-                               0,0,0,EvtPDL::getMeanMass(ipar),0.0,0.0,
-                               EvtPDL::getctau(ipar),0,0.0);
-
-    }
-  }
-    outdec.close();
-}
-
-void EvtJetSetCDF::jetSetInit(){
-
-  static int first=1;
-
-  if (first){
-
-    first=0;
-
-    report(INFO,"EvtGen") << "Will initialize JetSet."<<endl;
-
-    char fname[200];
-
-    char hostBuffer[100];
-    
-    if ( gethostname( hostBuffer, 100 ) != 0 ){
-      report(ERROR,"EvtGen") << " couldn't get hostname." << endl;
-      strncpy( hostBuffer, "hostnameNotFound", 100 );
-    }
-
-    char pid[100];
-
-    int thePid=getpid();
-
-    if ( sprintf( pid, "%d", thePid ) == 0 ){
-      report(ERROR,"EvtGen") << " couldn't get process ID." << endl;
-      strncpy( pid, "666", 100 );
-    }
-
-    strcpy(fname,"jet.d-");
-    strcat(fname,hostBuffer);
-    strcat(fname,"-");
-    strcat(fname,pid);
-    
-    MakeJetSetFile(fname);
-    evtjetsetcdfinit_(fname,strlen(fname));
-
-    if (0==getenv("EVTSAVEJETD")){
-      char delcmd[300];
-      strcpy(delcmd,"rm -f ");
-      strcat(delcmd,fname);
-      system(delcmd);
-    }
-
-    int i;
-
-    for(i=0;i<ncommand;i++){
-      lygive_(commands[i].c_str(),strlen(commands[i].c_str()));
-
-    }
-
-    report(INFO,"EvtGen") << "Done initializing JetSet."<<endl;
-
-    //int itest = 5122;
-    //report(ERROR,"EvtGen TEST:") << lycomp_(&itest) << endl;
-
-
-  }
-
-}
diff --git a/TEvtGen/EvtGenModels/EvtJetSetCDF.hh b/TEvtGen/EvtGenModels/EvtJetSetCDF.hh
deleted file mode 100644 (file)
index 17724e4..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtGen/EvtJetSet.hh
-//
-// Description:
-//
-// Modification history:
-//
-//    DJL/RYD     August 11, 1998         Module created
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTJETSETCDF_HH
-#define EVTJETSETCDF_HH
-
-#include "EvtGenBase/EvtDecayIncoherent.hh"
-
-class EvtParticle;
-
-typedef EvtDecayBase* EvtDecayBasePtr;
-
-#include <iosfwd>
-
-class EvtJetSetCDF:public  EvtDecayIncoherent  {
-
-public:
-
-  EvtJetSetCDF();
-  virtual ~EvtJetSetCDF();
-
-  std::string getName();
-  EvtDecayBase* clone();
-  void decay(EvtParticle *p); 
-
-  std::string commandName();
-  void command(std::string cmd);
-
-  void init();
-
-  void initProbMax();
-
-  //initialize jetset; sets up decay table and
-  //paramters. Static so it can be invoked from
-  //from EvtJscont.
-  static void jetSetInit();
-
-private:
-
-  void store(EvtDecayBase* jsdecay);
-  void fixPolarizations(EvtParticle* p);
-  static void MakeJetSetFile(char* fname);
-  static void WriteJetSetParticle(std::ofstream &outdec,EvtId ipar,EvtId iparname,int &first);
-  static void WriteJetSetEntryHeader(std::ofstream &outdec, int lundkc,
-                              EvtId evtnum,std::string name,
-                              int chg, int cchg, int spin2,double mass,
-                              double width, double maxwidth,double ctau,
-                              int stable,double rawbrfrsum);
-
-  static int njetsetdecays;
-  static EvtDecayBasePtr* jetsetdecays;
-  static int ntable;
-
-  static int ncommand;
-  static int lcommand;
-  static std::string* commands;
-
-};
-
-#endif
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/EvtJetSetCDFInit.F b/TEvtGen/EvtGenModels/EvtJetSetCDFInit.F
deleted file mode 100644 (file)
index 4c66891..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: EvtJetSetInit.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine evtjetsetcdfinit(fname)
-
-      implicit none
-
-      external lydata
-
-      character*(*) fname
-
-
-      open(54,STATUS='OLD',FILE=fname)
-
-      call LYUPDA(2,54)
-
-      close(54)      
-
-
-C      call LYLIST(12)
-      
-
-      end
-
-
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/EvtJetSetInit.F b/TEvtGen/EvtGenModels/EvtJetSetInit.F
deleted file mode 100644 (file)
index b2cc522..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: EvtJetSetInit.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine evtjetsetinit(fname)
-
-      implicit none
-
-      external ludata
-
-      character*(*) fname
-
-
-      open(54,STATUS='OLD',FILE=fname)
-
-      call LUUPDA(2,54)
-
-      close(54)      
-
-
-      
-
-      end
-
-
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/EvtJscont.cxx b/TEvtGen/EvtGenModels/EvtJscont.cxx
deleted file mode 100644 (file)
index 6034ce8..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtJscont.cc
-//
-// Description: Routine to generate e+e- --> q\barq  via Jetset
-//
-// Modification history:
-//
-//    PCK     August 4, 1997        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtJscont.hh"
-#include "EvtGenModels/EvtJetSet.hh"
-#include "EvtGenBase/EvtId.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include <string>
-
-
-extern "C" {
-  extern void continuum_(double *,int *,int *,int *,
-                      double *,double *,double *,double *);
-}
-
-extern "C" {
-  extern void lugive_(const char *cnfgstr,int length);
-}
-
-
-EvtJscont::~EvtJscont() {}
-
-std::string EvtJscont::getName(){
-
-  return "JSCONT";     
-
-}
-
-EvtDecayBase* EvtJscont::clone(){
-
-  return new EvtJscont;
-
-}
-
-void EvtJscont::init(){
-
-  // check that there is 1 argument
-
-  checkNArg(1,2);
-
-}
-
-
-void EvtJscont::initProbMax(){
-
-  noProbMax();
-
-}
-
-
-void EvtJscont::decay( EvtParticle *p){
-
-  EvtJetSet::jetSetInit();
-  static int first=1;
-
-  if (first){
-    first=0;
-
-    float val=0.6;
-    if ( getNArg()>1) {
-      val=getArg(1);
-    }
-    char vak[20];
-    sprintf(vak,"PARJ(13)=%f",val);
-    std::string temp(vak);
-    lugive_(temp.c_str(),strlen(temp.c_str()));
-  }
-  EvtVector4R p4[100];
-  
-  double energy=p->mass();
-
-  int flavor;
-
-  int i,more;
-  int ndaugjs;
-  int kf[100];
-  EvtId id[100];
-  int type[MAX_DAUG]; 
-
-  flavor=(int)getArg(0);
-
-  double px[100],py[100],pz[100],e[100];
-
-  if ( p->getNDaug() != 0 ) { return;}
-  do{
-
-    continuum_(&energy,&flavor,&ndaugjs,kf,px,py,pz,e);
-
-    for(i=0;i<ndaugjs;i++){
-
-      id[i]=EvtPDL::evtIdFromStdHep(kf[i]);
-
-      type[i]=EvtPDL::getSpinType(id[i]);
-
-      // have to protect against negative mass^2 for massless particles
-      // i.e. neutrinos and photons.
-      // this is uggly but I need to fix it right now....
-
-      if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){
-
-        e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
-
-      }
-
-      p4[i].set(e[i],px[i],py[i],pz[i]);
-
-    }
-
-    int channel=EvtDecayTable::inChannelList(p->getId(),ndaugjs,id);
-
-    more=((channel!=-1)&&(channel!=p->getChannel()));
-
-
-  }while(more);
-
-  p->makeDaughters(ndaugjs,id);
-
-  for(i=0;i<ndaugjs;i++){
-    p->getDaug(i)->init( id[i], p4[i] );
-  }
-  return ;
-}
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/EvtJscontCDF.cxx b/TEvtGen/EvtGenModels/EvtJscontCDF.cxx
deleted file mode 100644 (file)
index 0f6dcac..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtJscontCDF.cc
-//
-// Description: Routine to generate e+e- --> q\barq  via Jetset
-//
-// Modification history:
-//
-//    PCK     August 4, 1997        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include <stdlib.h>
-#include <stdio.h>
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtJscontCDF.hh"
-#include "EvtGenModels/EvtJetSetCDF.hh"
-#include "EvtGenBase/EvtId.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include <string>
-using namespace std;
-
-extern "C" {
-  extern void continuumcdf_(double *,int *,int *,int *,
-                      double *,double *,double *,double *);
-}
-
-extern "C" {
-  extern void lygive_(const char *cnfgstr,int length);
-}
-
-
-EvtJscontCDF::~EvtJscontCDF() {}
-
-std::string EvtJscontCDF::getName(){
-
-  return "JSCONTCDF";     
-
-}
-
-EvtDecayBase* EvtJscontCDF::clone(){
-
-  return new EvtJscontCDF;
-
-}
-
-void EvtJscontCDF::init(){
-
-  // check that there are 1 argument
-
-  checkNArg(1,2);
-
-}
-
-
-void EvtJscontCDF::initProbMax(){
-
-  noProbMax();
-
-}
-
-
-void EvtJscontCDF::decay( EvtParticle *p){
-
-  EvtJetSetCDF::jetSetInit();
-  static int first=1;
-
-  if (first){
-    first=0;
-
-    float val=0.6;
-    if ( getNArg()>1) {
-      val=getArg(1);
-    }
-    char vak[20];
-    sprintf(vak,"PARJ(13)=%f",val);
-    std::string temp(vak);
-    lygive_(temp.c_str(),strlen(temp.c_str()));
-  }
-  EvtVector4R p4[100];
-  
-  double energy=p->mass();
-
-  int flavor;
-
-  int i,more;
-  int ndaugjs;
-  int kf[100];
-  EvtId id[100];
-  int type[MAX_DAUG]; 
-
-  flavor=(int)getArg(0);
-
-  double px[100],py[100],pz[100],e[100];
-
-  if ( p->getNDaug() != 0 ) { return;}
-  do{
-
-    continuumcdf_(&energy,&flavor,&ndaugjs,kf,px,py,pz,e);
-
-    for(i=0;i<ndaugjs;i++){
-
-      id[i]=EvtPDL::evtIdFromStdHep(kf[i]);
-
-      type[i]=EvtPDL::getSpinType(id[i]);
-
-      // have to protect against negative mass^2 for massless particles
-      // i.e. neutrinos and photons.
-      // this is uggly but I need to fix it right now....
-
-      if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){
-
-        e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
-
-      }
-
-      p4[i].set(e[i],px[i],py[i],pz[i]);
-
-    }
-
-    int channel=EvtDecayTable::inChannelList(p->getId(),ndaugjs,id);
-
-    more=((channel!=-1)&&(channel!=p->getChannel()));
-
-
-  }while(more);
-
-  p->makeDaughters(ndaugjs,id);
-
-  for(i=0;i<ndaugjs;i++){
-    p->getDaug(i)->init( id[i], p4[i] );
-  }
-  return ;
-}
-
-
-
-
similarity index 76%
rename from TEvtGen/EvtGenModels/EvtKKLambdaCFF.cxx
rename to TEvtGen/EvtGenModels/EvtKKLambdaCFF.cpp
index 3875daaf5fded12536bebf01edd67e3e561581c7..95135b1a81f8eed83a49ab86882985d005178425 100644 (file)
@@ -36,8 +36,8 @@ EvtKKLambdaCFF::EvtKKLambdaCFF(int numarg, double *arglist) {
    return;
 }
 
-void EvtKKLambdaCFF::getbaryonff(EvtId parent,EvtId daught,
-                double t, double mass, double *f1v,
+void EvtKKLambdaCFF::getbaryonff(EvtId /*parent*/,EvtId /*daught*/,
+                double t, double /*mass*/, double *f1v,
                 double *f1a, double *f2v, double *f2a ) {
   
   *f1v=(_args[0])/(1.0-(t/(_args[1]*_args[1])));
@@ -74,3 +74,19 @@ void EvtKKLambdaCFF::gettensorff(EvtId, EvtId, double, double, double*,
   ::abort();
 
 }
+
+void EvtKKLambdaCFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                               double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtKKLambdaCFF.\n";
+  ::abort();
+
+}
+
+void EvtKKLambdaCFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                                double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtKKLambdaCFF.\n";
+  ::abort();
+
+}
index 030d34ed52dfd40223d1dcd994220974e9c1e39e..7ffa43e45d03680a8fb0b5d78144d8a821d9f405 100644 (file)
@@ -43,6 +43,12 @@ public:
                   double t, double mass, double *f1v,
                   double *f1a, double *f2v, double *f2a );
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
+
 private:
    int _nargs;
    double _args[2];
similarity index 93%
rename from TEvtGen/EvtGenModels/EvtKstarnunu.cxx
rename to TEvtGen/EvtGenModels/EvtKstarnunu.cpp
index 04c0cce45ad9a5b5a23b645dcd437e9f1163de04..f1ba95cdd96271e03e450e2aaff2ae4174627256 100644 (file)
@@ -96,14 +96,12 @@ void EvtKstarnunu::decay(EvtParticle *p){
   EvtVector4R momnu2 = neutrino2->getP4();
   EvtVector4R momkstar = meson->getP4();
   
-  double v0_0, a0_0, a1_0, a2_0;
-  double m2v0, m2a0, a1_b, a2_b;
+  double v0_0, a1_0, a2_0;
+  double m2v0, a1_b, a2_b;
   v0_0 = 0.47;
-  a0_0 = 0.30;
   a1_0 = 0.37;
   a2_0 = 0.40;
   m2v0 = 5.*5.;
-  m2a0 = 4.8*4.8;
   a1_b = -0.023;
   a2_b = 0.034;
 
@@ -119,10 +117,10 @@ void EvtKstarnunu::decay(EvtParticle *p){
   
   double m_k = meson->mass();
 
-  EvtTensor4C tds=(-2*v0/(m_b+m_k))*dual(directProd(p4b,momkstar))
+  EvtTensor4C tds=(-2*v0/(m_b+m_k))*dual(EvtGenFunctions::directProd(p4b,momkstar))
     - EvtComplex(0.0,1.0)*
     ( (m_b+m_k)*a1*EvtTensor4C::g()
-      - (a2/(m_b+m_k))*directProd(p4b-momkstar,p4b+momkstar)); 
+      - (a2/(m_b+m_k))*EvtGenFunctions::directProd(p4b-momkstar,p4b+momkstar)); 
   
   EvtVector4C l;
 
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtKstarstargamma.cxx
rename to TEvtGen/EvtGenModels/EvtKstarstargamma.cpp
index 41e53ee7cb6f595afc019a2de7741b02c6a8a1ae..309192a4e0a1fae882cdb0707935aafe180c2192 100644 (file)
@@ -72,7 +72,7 @@ void EvtKstarstargamma::initProbMax() {
 
 }      
 
-void EvtKstarstargamma::decay( EvtParticle *p){
+void EvtKstarstargamma::decay( EvtParticle * /*p*/){
 
 /*
 
similarity index 95%
rename from TEvtGen/EvtGenModels/EvtLNuGamma.cxx
rename to TEvtGen/EvtGenModels/EvtLNuGamma.cpp
index 8ca530b8e8c1d00716473e2d6760333e60ff2386..869da320e219ac12f6d81e4367a539224de14d74 100644 (file)
@@ -134,8 +134,8 @@ void EvtLNuGamma::decay(EvtParticle *p){
     fa = fv;
   }
 
-  EvtVector4C temp1a = dual(directProd(parVelocity,photp)).cont2(photone1);
-  EvtVector4C temp2a = dual(directProd(parVelocity,photp)).cont2(photone2);
+  EvtVector4C temp1a = dual(EvtGenFunctions::directProd(parVelocity,photp)).cont2(photone1);
+  EvtVector4C temp2a = dual(EvtGenFunctions::directProd(parVelocity,photp)).cont2(photone2);
 
   EvtVector4C temp1b = (photone1)*(parVelocity*photp);
   EvtVector4C temp1c = (photp)*(photone1*parVelocity);
diff --git a/TEvtGen/EvtGenModels/EvtLambdaB2LambdaV.cpp b/TEvtGen/EvtGenModels/EvtLambdaB2LambdaV.cpp
new file mode 100644 (file)
index 0000000..a3390d3
--- /dev/null
@@ -0,0 +1,1227 @@
+#include "EvtGenModels/EvtLambdaB2LambdaV.hh"
+#include "EvtGenBase/EvtRandom.hh"
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include <fstream>
+#include <stdio.h>
+#include <string>
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+
+using std::fstream ;
+//************************************************************************
+//*                                                                      *
+//*                      Class EvtLambdaB2LambdaV                        *
+//*                                                                      *
+//************************************************************************
+//DECLARE_ALGORITHM_FACTORY( EvtLambdaB2LambdaV );
+
+EvtLambdaB2LambdaV::EvtLambdaB2LambdaV()
+{
+  //set facility name
+  fname="EvtGen.EvtLambdaB2LambdaV";  
+}
+
+
+//------------------------------------------------------------------------
+// Destructor
+//------------------------------------------------------------------------
+EvtLambdaB2LambdaV::~EvtLambdaB2LambdaV()
+{}
+
+
+//------------------------------------------------------------------------
+// Method 'getName'
+//------------------------------------------------------------------------
+std::string EvtLambdaB2LambdaV::getName()
+{
+  return  "LAMBDAB2LAMBDAV";
+}
+
+
+//------------------------------------------------------------------------
+// Method 'clone'
+//------------------------------------------------------------------------
+EvtDecayBase* EvtLambdaB2LambdaV::clone()
+{
+  return new EvtLambdaB2LambdaV;
+
+}
+
+
+//------------------------------------------------------------------------
+// Method 'initProbMax'
+//------------------------------------------------------------------------
+void EvtLambdaB2LambdaV::initProbMax()
+{
+  //maximum (case where C=0)
+  double Max = 1+fabs(A*B);
+  report(DEBUG,fname.c_str())<<" PDF max value : "<<Max<<std::endl;
+  setProbMax(Max);
+}
+
+
+//------------------------------------------------------------------------
+// Method 'init'
+//------------------------------------------------------------------------
+void EvtLambdaB2LambdaV::init()
+{
+  bool antiparticle=false;
+  
+  //introduction
+  report(DEBUG,fname.c_str())<< "*************************************************"<<std::endl;
+  report(DEBUG,fname.c_str())<< "*    Event Model Class : EvtLambdaB2LambdaV     *"<<std::endl;
+  report(DEBUG,fname.c_str())<< "*************************************************"<<std::endl; 
+
+  //check the number of arguments
+  checkNArg(2);
+  
+  //check the number of daughters
+  checkNDaug(2);
+
+  const EvtId Id_mother = getParentId();
+  const EvtId Id_daug1  = getDaug(0);
+  const EvtId Id_daug2  = getDaug(1);
+  
+
+  //lambdab identification 
+  if (Id_mother==EvtPDL::getId("Lambda_b0")) 
+  {
+    antiparticle=false;
+  }
+  else if (Id_mother==EvtPDL::getId("anti-Lambda_b0"))
+  {
+    antiparticle=true;    
+  }
+  else
+  {    
+    report(ERROR,fname.c_str())<<" Mother is not a Lambda_b0 or an anti-Lambda_b0, but a "
+                          <<EvtPDL::name(Id_mother)<<std::endl;
+    abort();
+  }
+
+  //lambda
+  if ( !(Id_daug1==EvtPDL::getId("Lambda0") && !antiparticle ) && !(Id_daug1==EvtPDL::getId("anti-Lambda0") && antiparticle) ) 
+  {    
+    if (!antiparticle)
+    {
+      report(ERROR,fname.c_str()) << " Daughter1 is not a Lambda0, but a "
+                                                << EvtPDL::name(Id_daug1)<<std::endl;
+    }
+    else
+    { report(ERROR,fname.c_str()) << " Daughter1 is not an anti-Lambda0, but a "
+                                                << EvtPDL::name(Id_daug1)<<std::endl;
+    }
+    abort();
+  }
+
+
+  //identification meson V
+  if (getArg(1)==1) Vtype=VID::JPSI;
+  else if (getArg(1)==2) Vtype=VID::RHO;
+  else if (getArg(1)==3) Vtype=VID::OMEGA;
+  else if (getArg(1)==4) Vtype=VID::RHO_OMEGA_MIXING;
+  else 
+  {
+    report(ERROR,fname.c_str()) << " Vtype " <<getArg(1)<<" is unknown"<<std::endl;
+    abort();
+  }
+  
+
+  //check vector meson V
+  if (Id_daug2==EvtPDL::getId("J/psi") && Vtype==VID::JPSI) 
+  {
+    if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda_b0 -> Lambda J/psi"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda J/psi"<<std::endl;
+  }
+  else if (Id_daug2==EvtPDL::getId("rho0") && Vtype==VID::RHO ) 
+  {
+    if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda_b0 -> Lambda rho0"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda rho0"<<std::endl;
+  }
+  else if (Id_daug2==EvtPDL::getId("omega") && Vtype==VID::OMEGA) 
+  {
+    if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda_b0 -> Lambda omega"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda omega"<<std::endl;
+  }
+  else if ((Id_daug2==EvtPDL::getId("omega") ||  Id_daug2==EvtPDL::getId("rho0") )&& Vtype==VID::RHO_OMEGA_MIXING) 
+  {
+     if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : "
+                                                   <<"Lambda_b0 -> Lambda rho-omega-mixing"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : "
+                                    <<"anti-Lambda_b0 -> anti-Lambda rho-omega-mixing"<<std::endl;   
+  }
+  
+  else
+  {
+    report(ERROR,fname.c_str())<<" Daughter2 is not a J/psi, phi or rho0 but a "
+                          <<EvtPDL::name(Id_daug2)<<std::endl;
+    abort();    
+  }
+
+  //fix dynamics parameters
+  B = (double) getArg(0);
+  C = EvtComplex((sqrt(2.)/2.),(sqrt(2.)/2.));
+  switch(Vtype)
+  {
+    case VID::JPSI :             A = 0.490; break;
+    case VID::RHO :
+    case VID::OMEGA :
+    case VID::RHO_OMEGA_MIXING : A = 0.194; break;
+    default :                    A = 0;     break;
+  }
+  report(DEBUG,fname.c_str())<<" LambdaB decay parameters : "<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - lambda asymmetry A = "<<A<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - lambdab polarisation B = "<<B<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - lambdab density matrix rho+- C = "<<C<<std::endl;
+  
+
+
+}
+
+
+//------------------------------------------------------------------------
+// Method 'decay'
+//------------------------------------------------------------------------
+void EvtLambdaB2LambdaV::decay( EvtParticle *lambdab)
+{
+  lambdab->makeDaughters(getNDaug(),getDaugs());
+
+  //get lambda and V particles
+  EvtParticle * lambda = lambdab->getDaug(0);
+  EvtParticle * V      = lambdab->getDaug(1);
+
+  //get resonance masses
+  // - LAMBDAB          -> mass given by the preceding class
+  // - LAMBDA           -> nominal mass
+  // - V                -> getVmass method               
+  double MASS_LAMBDAB   = lambdab->mass();
+  double MASS_LAMBDA    = EvtPDL::getMeanMass(EvtPDL::getId("Lambda0"));
+  double MASS_V         = getVMass(MASS_LAMBDAB,MASS_LAMBDA);
+  
+  //generate random angles
+  double phi   = EvtRandom::Flat(0,2*EvtConst::pi);
+  double theta = acos( EvtRandom::Flat(-1,+1));
+  report(DEBUG,fname.c_str())<<" Angular angles  : theta = "<<theta
+                                           <<" ; phi = "<<phi<<std::endl;
+  //computate resonance quadrivectors
+  double E_lambda = (MASS_LAMBDAB*MASS_LAMBDAB + MASS_LAMBDA*MASS_LAMBDA - MASS_V*MASS_V)
+                    /(2*MASS_LAMBDAB);
+  double E_V      = (MASS_LAMBDAB*MASS_LAMBDAB + MASS_V*MASS_V - MASS_LAMBDA*MASS_LAMBDA)
+                    /(2*MASS_LAMBDAB);
+  double P = sqrt(E_lambda*E_lambda-lambda->mass()*lambda->mass());
+
+
+
+  EvtVector4R P_lambdab=lambdab->getP4();
+
+    double px = P_lambdab.get(1);
+    double py = P_lambdab.get(2);
+    double pz = P_lambdab.get(3);
+    double E  = P_lambdab.get(0);
+    report(INFO,fname.c_str())<<"E of lambdab:  "<< P_lambdab.get(0)<<std::endl;
+    report(INFO,fname.c_str())<<"E of lambdab:  "<< E<<std::endl;
+  
+
+    EvtVector4R q_lambdab2 (E,
+                            ((1/(sqrt(pow(px,2)+pow(py,2))))*((px*(px))+(py*(py)))),
+                            ((1/(sqrt(pow(px,2)+pow(py,2))))*(-((py)*(px))+(px*(py)))),
+                            (pz));
+
+    EvtVector4R q_lambdab3 (E,
+                            q_lambdab2.get(3),
+                            q_lambdab2.get(1),
+                            q_lambdab2.get(2));
+
+    
+    EvtVector4R q_lambda0 (E_lambda,
+                           P*sin(theta)*cos(phi),
+                           P*sin(theta)*sin(phi),
+                           P*cos(theta) );
+
+    EvtVector4R q_V0      (E_V,
+                           -P*sin(theta)*cos(phi),
+                           -P*sin(theta)*sin(phi),
+                           -P*cos(theta) );
+
+    
+    EvtVector4R q_lambda1 (E_lambda,
+                           q_lambda0.get(2),
+                           q_lambda0.get(3),
+                           q_lambda0.get(1) );
+
+    EvtVector4R q_V1      (E_V,
+                           q_V0.get(2),
+                           q_V0.get(3),
+                           q_V0.get(1) );
+   
+     EvtVector4R q_lambda (E_lambda,
+                          ((1/(sqrt(pow(px,2)+pow(py,2))))*((px*(q_lambda1.get(1))) - (py*(q_lambda1.get(2))))),
+                          ((1/(sqrt(pow(px,2)+pow(py,2))))*((py*(q_lambda1.get(1))) + (px*(q_lambda1.get(2))))),
+                          (q_lambda1.get(3)));
+    
+    
+    EvtVector4R q_V     (E_V,
+                          ((1/(sqrt(pow(px,2)+pow(py,2))))*((px*(q_V1.get(1))) - (py*(q_V1.get(2))))),
+                          ((1/(sqrt(pow(px,2)+pow(py,2))))*((py*(q_V1.get(1))) + (px*(q_V1.get(2))))),
+                          (q_V1.get(3)));
+  
+
+
+  
+
+   lambda->getP4();
+   V->getP4();
+   report(INFO,fname.c_str())<<" LambdaB  px: "<<px<<std::endl;
+   report(INFO,fname.c_str())<<" LambdaB  py: "<<py<<std::endl;
+   report(INFO,fname.c_str())<<" LambdaB  pz: "<<pz<<std::endl;
+   report(INFO,fname.c_str())<<" LambdaB  E: "<<E<<std::endl;
+  
+   report(INFO,fname.c_str())<<" Lambdab3  E:  "<<q_lambdab3.get(0)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 0 px:  "<<q_lambda0.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 0 py:  "<<q_lambda0.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 0 pz:  "<<q_lambda0.get(3)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 0 E:  "<<q_lambda0.get(0)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 1 px:  "<<q_lambda1.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 1 py:  "<<q_lambda1.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 1 pz:  "<<q_lambda1.get(3)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda 1 E:  "<<q_lambda1.get(0)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda  px:  "<<q_lambda.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda  py:  "<<q_lambda.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda  pz:  "<<q_lambda.get(3)<<std::endl;
+   report(INFO,fname.c_str())<<" Lambda  E:  "<<q_lambda0.get(3)<<std::endl;
+   report(INFO,fname.c_str())<<" V 0 px:  "<<q_V0.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" V 0 py:  "<<q_V0.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<" V 0 pz:  "<<q_V0.get(3)<<std::endl;
+   report(INFO,fname.c_str())<<" V 0 E:  "<<q_V0.get(0)<<std::endl;
+   report(INFO,fname.c_str())<<" V 1 px:  "<<q_V1.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" V 1 py:  "<<q_V1.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<" V 1 pz:  "<<q_V1.get(3)<<std::endl;
+   report(INFO,fname.c_str())<<" V 1 E:  "<<q_V1.get(0)<<std::endl;
+   report(INFO,fname.c_str())<<" V  px:  "<<q_V.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" V  py:  "<<q_V.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<" V  pz:  "<<q_V.get(3)<<std::endl;
+   report(INFO,fname.c_str())<<" V  E:  "<<q_V0.get(3)<<std::endl;
+  //set quadrivectors to particles
+  lambda ->init(getDaugs()[0],q_lambda);
+  V      ->init(getDaugs()[1],q_V     );
+   
+  //computate pdf
+  double pdf = 1 + A*B*cos(theta) + 2*A*real(C*EvtComplex(cos(phi),sin(phi)))*sin(theta);
+  report(DEBUG,fname.c_str())<<" LambdaB decay pdf value : "<<pdf<<std::endl;
+  //set probability
+  setProb(pdf);
+  
+  return;
+}
+
+
+//------------------------------------------------------------------------
+// Method 'BreitWignerRelPDF'
+//------------------------------------------------------------------------
+double EvtLambdaB2LambdaV::BreitWignerRelPDF(double m,double _m0, double _g0)
+{
+  double a = (_m0 * _g0) * (_m0 * _g0);
+  double b = (m*m - _m0*_m0)*(m*m - _m0*_m0);
+  return a/(b+a);
+}
+
+
+//------------------------------------------------------------------------
+// Method 'RhoOmegaMixingPDF'
+//------------------------------------------------------------------------
+double EvtLambdaB2LambdaV::RhoOmegaMixingPDF(double m, double _mr, double _gr, double _mo, double _go)
+{
+  double a     = m*m - _mr*_mr;
+  double b     = m*m - _mo*_mo;
+  double c     = _gr*_mr;
+  double d     = _go*_mo;
+  double re_pi = -3500e-6; //GeV^2
+  double im_pi = -300e-6;  //GeV^2
+  double va_pi = re_pi+im_pi;
+
+  //computate pdf value
+  double f =  1/(a*a+c*c) * ( 1+
+             (va_pi*va_pi+2*b*re_pi+2*d*im_pi)/(b*b+d*d));
+
+  //computate pdf max value
+  a = 0;
+  b = _mr*_mr - _mo*_mo;
+  
+  double maxi = 1/(a*a+c*c) * ( 1+
+             (va_pi*va_pi+2*b*re_pi+2*d*im_pi)/(b*b+d*d));
+
+  return f/maxi;
+}
+
+
+//------------------------------------------------------------------------
+// Method 'getVMass'
+//------------------------------------------------------------------------
+double EvtLambdaB2LambdaV::getVMass(double MASS_LAMBDAB, double MASS_LAMBDA)
+{
+  //JPSI case
+  if (Vtype==VID::JPSI)
+  {
+    return EvtPDL::getMass(EvtPDL::getId("J/psi"));
+  }
+
+  //RHO,OMEGA,MIXING case
+  else
+  {
+    //parameters
+    double MASS_RHO     = EvtPDL::getMeanMass(EvtPDL::getId("rho0"));
+    double MASS_OMEGA   = EvtPDL::getMeanMass(EvtPDL::getId("omega"));
+    double WIDTH_RHO    = EvtPDL::getWidth(EvtPDL::getId("rho0"));
+    double WIDTH_OMEGA  = EvtPDL::getWidth(EvtPDL::getId("omega"));
+    double MASS_PION    = EvtPDL::getMeanMass(EvtPDL::getId("pi-"));
+    double _max         = MASS_LAMBDAB - MASS_LAMBDA;
+    double _min         = 2*MASS_PION;
+
+    double mass=0; bool test=false; int ntimes=10000;    
+    do
+    {  
+      double y   = EvtRandom::Flat(0,1);
+      
+      //generate mass
+      mass = (_max-_min) * EvtRandom::Flat(0,1) + _min;
+
+      //pdf calculate
+      double f=0;
+      switch(Vtype)
+      {
+        case VID::RHO :              f = BreitWignerRelPDF(mass,MASS_RHO,WIDTH_RHO);     break;
+        case VID::OMEGA :            f = BreitWignerRelPDF(mass,MASS_OMEGA,WIDTH_OMEGA); break;
+        case VID::RHO_OMEGA_MIXING : f = RhoOmegaMixingPDF(mass,MASS_RHO,WIDTH_RHO,
+                                                                MASS_OMEGA,WIDTH_OMEGA); break;
+        default :                    f = 1;                                              break;  
+      }
+
+      ntimes--;
+      if (y<f) test=true;
+    }while(ntimes && !test);
+
+  //looping 10000 times
+  if (ntimes==0)
+  {
+      report(INFO,fname.c_str()) << "Tried accept/reject:10000"
+                          <<" times, and rejected all the times!"<<std::endl;
+      report(INFO,fname.c_str()) << "Is therefore accepting the last event!"<<std::endl;
+  }
+
+  //return V particle mass
+  return mass;
+  }  
+}
+
+
+
+
+
+//************************************************************************
+//*                                                                      *
+//*                Class EvtLambda2PPiForLambdaB2LambdaV                 *
+//*                                                                      *
+//************************************************************************
+
+
+//------------------------------------------------------------------------
+// Constructor
+//------------------------------------------------------------------------
+EvtLambda2PPiForLambdaB2LambdaV::EvtLambda2PPiForLambdaB2LambdaV()
+{ 
+  //set facility name
+  fname="EvtGen.EvtLambda2PPiForLambdaB2LambdaV";  
+}
+
+
+//------------------------------------------------------------------------
+// Destructor
+//------------------------------------------------------------------------
+EvtLambda2PPiForLambdaB2LambdaV::~EvtLambda2PPiForLambdaB2LambdaV()
+{
+}
+
+
+//------------------------------------------------------------------------
+// Method 'getName'
+//------------------------------------------------------------------------
+std::string EvtLambda2PPiForLambdaB2LambdaV::getName()
+{
+  return "LAMBDA2PPIFORLAMBDAB2LAMBDAV";
+}
+
+
+//------------------------------------------------------------------------
+// Method 'clone'
+//------------------------------------------------------------------------
+EvtDecayBase* EvtLambda2PPiForLambdaB2LambdaV::clone()
+{
+  return new EvtLambda2PPiForLambdaB2LambdaV;
+}
+
+
+//------------------------------------------------------------------------
+// Method 'initProbMax'
+//------------------------------------------------------------------------
+void EvtLambda2PPiForLambdaB2LambdaV::initProbMax()
+{
+  //maximum (case where D is real)
+  double Max=0;
+  if (A==0) Max=1;
+  else if (C==0 || real(D)==0) Max=1+fabs(A*B);
+  else if (B==0) Max=1+ EvtConst::pi/2.0*fabs(C*A*real(D));
+  else
+    {
+      double theta_max = atan(- EvtConst::pi/2.0*C*real(D)/B); 
+      double max1 = 1 + fabs(A*B*cos(theta_max)
+                      - EvtConst::pi/2.0*C*A*real(D)*sin(theta_max));
+      double max2 = 1 + fabs(A*B);
+      if (max1>max2) Max=max1; else Max=max2;      
+    }
+  report(DEBUG,fname.c_str())<<" PDF max value : "<<Max<<std::endl;
+  setProbMax(Max);
+}
+
+
+//------------------------------------------------------------------------
+// Method 'init'
+//------------------------------------------------------------------------
+void EvtLambda2PPiForLambdaB2LambdaV::init()
+{
+  bool antiparticle=false;
+  
+  //introduction
+  report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
+  report(DEBUG,fname.c_str())<<" *   Event Model Class : EvtLambda2PPiForLambdaB2LambdaV   *"<<std::endl;
+  report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
+
+  //check the number of arguments
+  checkNArg(2);
+  
+  //check the number of daughters
+  checkNDaug(2);
+
+  const EvtId Id_mother = getParentId();
+  const EvtId Id_daug1  = getDaug(0);
+  const EvtId Id_daug2  = getDaug(1);
+
+  //lambda  identification 
+  if (Id_mother==EvtPDL::getId("Lambda0")) 
+  {
+    antiparticle=false;
+  }
+  else if (Id_mother==EvtPDL::getId("anti-Lambda0"))
+  {
+    antiparticle=true;    
+  }
+  else
+  {    
+    report(ERROR,fname.c_str())<<" Mother is not a Lambda0 or an anti-Lambda0, but a "
+                          <<EvtPDL::name(Id_mother)<<std::endl;
+    abort();
+  }
+
+  //proton identification
+  if ( !(Id_daug1==EvtPDL::getId("p+") && !antiparticle ) && !(Id_daug1==EvtPDL::getId("anti-p-") && antiparticle) ) 
+  {    
+    if (!antiparticle)
+    {
+      report(ERROR,fname.c_str()) << " Daughter1 is not a p+, but a "
+                                                << EvtPDL::name(Id_daug1)<<std::endl;
+    }
+    else
+    { report(ERROR,fname.c_str()) << " Daughter1 is not an anti-p-, but a "
+                                                << EvtPDL::name(Id_daug1)<<std::endl;
+    }
+    abort();
+  }
+
+  //pion identification
+  if ( !(Id_daug2==EvtPDL::getId("pi-") && !antiparticle ) && !(Id_daug2==EvtPDL::getId("pi+") && antiparticle) ) 
+  {    
+    if (!antiparticle)
+    {
+      report(ERROR,fname.c_str()) << " Daughter2 is not a p-, but a "
+                                                << EvtPDL::name(Id_daug1)<<std::endl;
+    }
+    else
+    { report(ERROR,fname.c_str()) << " Daughter2 is not an p+, but a "
+                                                << EvtPDL::name(Id_daug1)<<std::endl;
+    }
+    abort();
+  }
+  if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda0 -> p+ pi-"<<std::endl;
+  else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Anti-Lambda0 -> anti-p- pi+"<<std::endl;
+
+  //identification meson V
+  if (getArg(1)==1)
+  {
+    Vtype=VID::JPSI;
+    if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda J/psi"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda J/psi"<<std::endl;
+  }
+  else if (getArg(1)==2)
+  {
+    Vtype=VID::RHO;
+    if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda rho0"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda rho0"<<std::endl;
+  }
+  else if (getArg(1)==3)
+  { 
+    Vtype=VID::OMEGA;
+    if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda omega"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda omega"<<std::endl;
+  }
+  else if (getArg(1)==4) 
+  {
+    Vtype=VID::RHO_OMEGA_MIXING;
+  }
+  else 
+  {
+    report(ERROR,fname.c_str()) << " Vtype " <<getArg(1)<<" is unknown"<<std::endl;
+    if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda rho-omega-mixing"<<std::endl;
+    else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda rho-omega-mixing"<<std::endl;    abort();
+  }
+
+  //constants
+  A = 0.642;
+  C = (double) getArg(0);
+  switch(Vtype)
+  {
+    case VID::JPSI :             B = -0.167; D = EvtComplex(0.25,0.0); break;
+    case VID::RHO :
+    case VID::OMEGA :
+    case VID::RHO_OMEGA_MIXING : B = -0.21;  D = EvtComplex(0.31,0.0); break;
+    default :                    B = 0;      D = EvtComplex(0,0);      break;
+  }
+
+  report(DEBUG,fname.c_str())<<" Lambda decay parameters : "<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - proton asymmetry A = "<<A<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - lambda polarisation B = "<<B<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - lambdaB polarisation C = "<<C<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - lambda density matrix rho+- D = "<<D<<std::endl;
+}
+
+
+//------------------------------------------------------------------------
+// Method 'decay'
+//------------------------------------------------------------------------
+void EvtLambda2PPiForLambdaB2LambdaV::decay( EvtParticle *lambda )
+{
+  lambda->makeDaughters(getNDaug(),getDaugs());
+  //get proton and pion particles
+  EvtParticle * proton = lambda->getDaug(0);
+  EvtParticle * pion = lambda->getDaug(1);
+
+  //get resonance masses
+  // - LAMBDA        -> mass given by EvtLambdaB2LambdaV class
+  // - PROTON & PION -> nominal mass
+  double MASS_LAMBDA    = lambda->mass();
+  double MASS_PROTON    = EvtPDL::getMeanMass(EvtPDL::getId("p+"));
+  double MASS_PION      = EvtPDL::getMeanMass(EvtPDL::getId("pi-"));
+
+  //generate random angles
+  double phi   = EvtRandom::Flat(0,2*EvtConst::pi);
+  double theta = acos( EvtRandom::Flat(-1,+1));
+  report(DEBUG,fname.c_str())<<" Angular angles  : theta = "<<theta<<" ; phi = "<<phi<<std::endl;
+
+  //computate resonance quadrivectors
+  double E_proton = (MASS_LAMBDA*MASS_LAMBDA + MASS_PROTON*MASS_PROTON - MASS_PION*MASS_PION)
+                    /(2*MASS_LAMBDA);
+  double E_pion   = (MASS_LAMBDA*MASS_LAMBDA + MASS_PION*MASS_PION - MASS_PROTON*MASS_PROTON)
+                    /(2*MASS_LAMBDA);           
+  double P = sqrt(E_proton*E_proton-proton->mass()*proton->mass());
+  
+  EvtVector4R P_lambda=lambda->getP4();
+  EvtParticle *Mother_lambda=lambda->getParent();
+  EvtVector4R lambdab=Mother_lambda->getP4();
+
+   
+  double E_lambda =P_lambda.get(0);
+  double px_M     =lambdab.get(1);
+  double py_M     =lambdab.get(2);
+  double pz_M     =lambdab.get(3);
+  double E_M     =lambdab.get(0);
+  EvtVector4R q_lambdab2 (E_M,
+                            ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(px_M))+(py_M*(py_M)))),
+                            ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-((py_M)*(px_M))+(px_M*(py_M)))),
+                            (pz_M));
+
+  EvtVector4R q_lambdab3 (E_M,
+                            q_lambdab2.get(3),
+                            q_lambdab2.get(1),
+                            q_lambdab2.get(2));
+
+  
+
+  EvtVector4R q_lambda1 (E_lambda,
+                         ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(P_lambda.get(1))) + (py_M*(P_lambda.get(2))))),
+                         ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-(py_M*(P_lambda.get(1))) + (px_M*(P_lambda.get(2))))),
+                         P_lambda.get(3));
+
+  EvtVector4R q_lambda2 (E_lambda,
+                         q_lambda1.get(3),
+                         q_lambda1.get(1),
+                         q_lambda1.get(2));
+
+  
+
+
+   double px=q_lambda2.get(1);
+  double py=q_lambda2.get(2);
+  double pz=q_lambda2.get(3);
+   
+
+   
+   
+    EvtVector4R q_lambda4 (q_lambda2.get(0),
+                          ((1/(sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2) + pow(q_lambda2.get(3),2))))* (1/(sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2))))*((q_lambda2.get(1))*(q_lambda2.get(1))*(q_lambda2.get(3))+((q_lambda2.get(2))*(q_lambda2.get(2))*(q_lambda2.get(3))) - ((q_lambda2.get(3))*(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2))))),
+                          ((((q_lambda2.get(2))*(q_lambda2.get(1)))-((q_lambda2.get(1))*(q_lambda2.get(2))))/(sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2)))),
+                          (((1/sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2) + pow(q_lambda2.get(3),2)))*( ((q_lambda2.get(1))*(q_lambda2.get(1))) +((q_lambda2.get(2))*(q_lambda2.get(2))) +   ((q_lambda2.get(3))*(q_lambda2.get(3)))))) );
+
+
+
+
+   EvtVector4R q_proton1 (E_proton,
+                        P*sin(theta)*cos(phi),
+                        P*sin(theta)*sin(phi),
+                        P*cos(theta));
+   EvtVector4R q_pion1   (E_pion,
+                        -P*sin(theta)*cos(phi),
+                        -P*sin(theta)*sin(phi),
+                        -P*cos(theta));
+             
+
+   EvtVector4R q_proton3     (E_proton,
+                       ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_proton1.get(1))*(px)*(pz) - ((q_proton1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_proton1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
+                       (((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))* (1/(sqrt(pow(px,2) + pow(py,2))))*(((q_proton1.get(1)))*(py)*(pz) + ((q_proton1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_proton1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
+                        (((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))*((-(q_proton1.get(1)))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_proton1.get(3))*(pz)))));
+
+ EvtVector4R q_pion3     (E_pion,
+                         ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_pion1.get(1))*(px)*(pz) - ((q_pion1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_pion1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
+                         (((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_pion1.get(1))*(py)*(pz) + ((q_pion1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_pion1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
+                         ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))*((-(q_pion1.get(1)))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_pion1.get(3))*(pz)))));
+
+ EvtVector4R q_proton5 (q_proton3.get(0),
+                        (q_proton3.get(2)),
+                        (q_proton3.get(3)),
+                        (q_proton3.get(1)));
+ EvtVector4R q_pion5      (q_pion3.get(0),
+                           (q_pion3.get(2)),
+                           (q_pion3.get(3)),
+                           (q_pion3.get(1)));
+ EvtVector4R q_proton          (q_proton5.get(0),
+                                ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_proton5.get(1)))-(py_M*(q_proton5.get(2))))),
+                                ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_proton5.get(1)))+(px_M*(q_proton5.get(2))))),
+                                (q_proton5.get(3)));
+ EvtVector4R q_pion      (q_pion5.get(0),
+                          ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_pion5.get(1)))-(py_M*(q_pion5.get(2))))),
+                          ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_pion5.get(1)))+(px_M*(q_pion5.get(2))))),
+                          (q_pion5.get(3)));
+
+report(INFO,fname.c_str())<<" Lambdab  px: "<<px_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab  py: "<<py_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab  pz: "<<pz_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab  E: "<<E_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  px:  "<<q_lambdab2.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  py:  "<<q_lambdab2.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  pz:  "<<q_lambdab2.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  E:   "<<q_lambdab2.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  px:  "<<q_lambdab3.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  py:  "<<q_lambdab3.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  pz:  "<<q_lambdab3.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  E:   "<<q_lambdab3.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 0  px:  "<<P_lambda.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 0  py:  "<<P_lambda.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 0  pz:  "<<P_lambda.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 0  E:   "<<P_lambda.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 1  px:  "<<q_lambda1.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 1  py:  "<<q_lambda1.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 1  pz:  "<<q_lambda1.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 1  E:   "<<q_lambda1.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 2  px:  "<<q_lambda2.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 2  py:  "<<q_lambda2.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 2  pz:  "<<q_lambda2.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Lambda 2  E:   "<<q_lambda2.get(0)<<std::endl;
+
+report(INFO,fname.c_str())<<" Lambda  px: "<<px<<std::endl;
+report(INFO,fname.c_str())<<" Lambda  py: "<<py<<std::endl;
+report(INFO,fname.c_str())<<" Lambda  pz: "<<pz<<std::endl;
+
+ report(INFO,fname.c_str())<<" pion 1 px:  "<<q_pion1.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" pion 1 py:  "<<q_pion1.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" pion 1 pz:  "<<q_pion1.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" pion 1 E:   "<<q_pion1.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" pion 3 px:  "<<q_pion3.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" pion 3 px:  "<<q_pion3.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" pion 3 py:  "<<q_pion3.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" pion 3 pz:  "<<q_pion3.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" pion 3 E:   "<<q_pion3.get(0)<<std::endl;
+
+report(INFO,fname.c_str())<<" pion 5 px:  "<<q_pion5.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" pion 5 py:  "<<q_pion5.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" pion 5 pz:  "<<q_pion5.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" pion 5 E:   "<<q_pion5.get(0)<<std::endl;
+
+
+
+ report(INFO,fname.c_str())<<" proton 1  px:  "<<q_proton1.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 1  py:  "<<q_proton1.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 1  pz:  "<<q_proton1.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 1  E:   "<<q_proton1.get(0)<<std::endl;
+
+report(INFO,fname.c_str())<<" proton 3  px:  "<<q_proton3.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 3  py:  "<<q_proton3.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 3  pz:  "<<q_proton3.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 3  E:   "<<q_proton3.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" proton 5  px:  "<<q_proton5.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 5  py:  "<<q_proton5.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 5  pz:  "<<q_proton5.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" proton 5  E:   "<<q_proton5.get(0)<<std::endl;
+
+
+report(INFO,fname.c_str())<<" proton  px:  "<<q_proton.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" proton  py:  "<<q_proton.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<"proton  pz:  "<<q_proton.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" pion px:  "<<q_pion.get(1)<<std::endl;
+   report(INFO,fname.c_str())<<" pion py:  "<<q_pion.get(2)<<std::endl;
+   report(INFO,fname.c_str())<<" pion pz:  "<<q_pion.get(3)<<std::endl;
+   
+
+   
+  
+   
+  ;
+
+
+
+
+
+
+ ///////////*******NEW********//////////////////////
+
+  //set quadrivectors to particles
+  proton->init(getDaugs()[0],q_proton);
+  pion  ->init(getDaugs()[1],q_pion  );
+  //computate pdf
+  //double pdf = 1 + A*B*cos(theta) - EvtConst::pi/2.0*C*A*real(D*EvtComplex(cos(phi),sin(phi)))*sin(theta);
+  double pdf = 1 + A*B*cos(theta) + 2*A*real(D*EvtComplex(cos(phi),sin(phi)))*sin(theta);
+  report(DEBUG,fname.c_str())<<" Lambda decay pdf value : "<<pdf<<std::endl;
+  //set probability
+  setProb(pdf);
+
+  return;
+}
+
+
+
+
+//************************************************************************
+//*                                                                      *
+//*                Class EvtLambda2PPiForLambdaB2LambdaV                 *
+//*                                                                      *
+//************************************************************************
+
+
+//------------------------------------------------------------------------
+// Constructor
+//------------------------------------------------------------------------
+EvtV2VpVmForLambdaB2LambdaV::EvtV2VpVmForLambdaB2LambdaV()
+{
+  //set facility name
+  fname="EvtGen.EvtV2VpVmForLambdaB2LambdaV";  
+}
+
+
+//------------------------------------------------------------------------
+// Destructor
+//------------------------------------------------------------------------
+EvtV2VpVmForLambdaB2LambdaV::~EvtV2VpVmForLambdaB2LambdaV()
+{}
+
+
+//------------------------------------------------------------------------
+// Method 'getName'
+//------------------------------------------------------------------------
+std::string EvtV2VpVmForLambdaB2LambdaV::getName()
+{
+  return "V2VPVMFORLAMBDAB2LAMBDAV";
+}
+
+//------------------------------------------------------------------------
+// Method 'clone'
+//------------------------------------------------------------------------
+EvtDecayBase* EvtV2VpVmForLambdaB2LambdaV::clone()
+{
+  return new EvtV2VpVmForLambdaB2LambdaV;
+}
+
+
+//------------------------------------------------------------------------
+// Method 'initProbMax'
+//------------------------------------------------------------------------
+void EvtV2VpVmForLambdaB2LambdaV::initProbMax()
+{
+  //maximum
+  double Max = 0;
+  if (Vtype==VID::JPSI)
+  {
+    if ((1-3*A)>0) Max=2*(1-A);
+    else Max=1+A;
+  }
+  else
+  {
+    if ((3*A-1)>=0) Max=2*A;
+    else Max=1-A;
+  }
+   
+  report(DEBUG,fname.c_str())<<" PDF max value : "<<Max<<std::endl;
+  setProbMax(Max);
+}
+
+
+//------------------------------------------------------------------------
+// Method 'init'
+//------------------------------------------------------------------------
+void EvtV2VpVmForLambdaB2LambdaV::init()
+{
+  //introduction
+  report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
+  report(DEBUG,fname.c_str())<<" *     Event Model Class : EvtV2VpVmForLambdaB2LambdaV     *"<<std::endl;
+  report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
+
+  //check the number of arguments
+  checkNArg(2);
+  
+  //check the number of daughters
+  checkNDaug(2);
+
+  const EvtId Id_mother = getParentId();
+  const EvtId Id_daug1  = getDaug(0);
+  const EvtId Id_daug2  = getDaug(1);
+
+  //identification meson V
+  if (getArg(1)==1) Vtype=VID::JPSI;
+  else if (getArg(1)==2) Vtype=VID::RHO;
+  else if (getArg(1)==3) Vtype=VID::OMEGA;
+  else if (getArg(1)==4) Vtype=VID::RHO_OMEGA_MIXING;
+  else 
+  {
+    report(ERROR,fname.c_str()) << " Vtype " <<getArg(1)<<" is unknown"<<std::endl;
+    abort();
+  }
+
+  //vector meson V
+  if (Id_mother==EvtPDL::getId("J/psi") && Vtype==VID::JPSI) 
+  {
+  }
+  else if (Id_mother==EvtPDL::getId("omega") &&  Vtype==VID::OMEGA) 
+  {
+  }
+  else if (Id_mother==EvtPDL::getId("rho0") &&  Vtype==VID::RHO) 
+  {
+  }
+  else if ((Id_mother==EvtPDL::getId("rho0") || Id_mother==EvtPDL::getId("omega")) && Vtype==VID::RHO_OMEGA_MIXING) 
+  {
+  }
+  else
+  {
+    report(ERROR,fname.c_str())<<" Mother is not a J/psi, phi or rho0 but a "
+                          <<EvtPDL::name(Id_mother)<<std::endl;
+    abort();    
+  }
+
+  //daughters for each V possibility
+  switch(Vtype)
+    {
+    case VID::JPSI :
+      if (Id_daug1!=EvtPDL::getId("mu+")) 
+      {
+        report(ERROR,fname.c_str()) << " Daughter1 is not a mu+, but a "
+                                                           << EvtPDL::name(Id_daug1)<<std::endl;
+        abort();
+      }
+      if (Id_daug2!=EvtPDL::getId("mu-")) 
+      {
+        report(ERROR,fname.c_str()) << " Daughter2 is not a mu-, but a "
+                                                           << EvtPDL::name(Id_daug2)<<std::endl;
+        abort();
+      }
+      report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : J/psi -> mu+ mu-"<<std::endl;
+      break;
+
+    case VID::RHO :
+    case VID::OMEGA :
+    case VID::RHO_OMEGA_MIXING :
+      if (Id_daug1!=EvtPDL::getId("pi+")) 
+      {
+        report(ERROR,fname.c_str()) << " Daughter1 is not a pi+, but a "
+                                                           << EvtPDL::name(Id_daug1)<<std::endl;
+        abort();
+      }
+      if (Id_daug2!=EvtPDL::getId("pi-")) 
+      {
+        report(ERROR,fname.c_str()) << " Daughter2 is not a pi-, but a "
+                                                           << EvtPDL::name(Id_daug2)<<std::endl;
+        abort();
+      }
+      if (Vtype==VID::RHO) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : rho0 -> pi+ pi-"<<std::endl;
+      if (Vtype==VID::OMEGA) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : omega -> pi+ pi-"<<std::endl;
+      if (Vtype==VID::RHO_OMEGA_MIXING) 
+              report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : rho-omega mixing -> pi+ pi-"<<std::endl; break;
+
+    default :
+      report(ERROR,fname.c_str()) << "No decay mode chosen ! "<<std::endl;
+      abort();
+      break;
+    }
+
+  //fix dynamics parameters
+  switch(Vtype)
+  {
+  case VID::JPSI :             A = 0.66; break;
+  case VID::RHO :
+  case VID::OMEGA :
+  case VID::RHO_OMEGA_MIXING : A = 0.79; break;
+  default :                    A = 0;    break;
+  }
+
+  report(DEBUG,fname.c_str())<<" V decay parameters : "<<std::endl;
+  report(DEBUG,fname.c_str())<<"   - V density matrix rho00 A = "<<A<<std::endl;
+  
+
+}
+
+//------------------------------------------------------------------------
+// Method 'decay'
+//------------------------------------------------------------------------
+void EvtV2VpVmForLambdaB2LambdaV::decay( EvtParticle *V )
+{
+  V->makeDaughters(getNDaug(),getDaugs());
+
+  //get Vp and Vm particles
+  EvtParticle * Vp = V->getDaug(0);
+  EvtParticle * Vm = V->getDaug(1);
+
+  //get resonance masses
+  // - V         -> mass given by EvtLambdaB2LambdaV class
+  // - Vp & Vm   -> nominal mass               
+  double MASS_V   = V->mass();
+  double MASS_VM  = 0;
+  switch(Vtype)
+  {
+  case VID::JPSI :             MASS_VM=EvtPDL::getMeanMass(EvtPDL::getId("mu-")); break;
+  case VID::RHO :              
+  case VID::OMEGA :
+  case VID::RHO_OMEGA_MIXING : MASS_VM=EvtPDL::getMeanMass(EvtPDL::getId("pi-")); break;
+  default :                    MASS_VM=0;                                         break;
+  }
+  double MASS_VP  = MASS_VM;
+
+  //generate random angles  
+  double phi   = EvtRandom::Flat(0,2*EvtConst::pi);
+  double theta = acos( EvtRandom::Flat(-1,+1));
+  report(DEBUG,fname.c_str())<<" Angular angles  : theta = "<<theta<<" ; phi = "<<phi<<std::endl;
+
+  //computate resonance quadrivectors  
+  double E_Vp = (MASS_V*MASS_V + MASS_VP*MASS_VP - MASS_VM*MASS_VM)
+                 /(2*MASS_V);
+  double E_Vm = (MASS_V*MASS_V + MASS_VM*MASS_VM - MASS_VP*MASS_VP)
+                 /(2*MASS_V);
+  double P = sqrt(E_Vp*E_Vp-Vp->mass()*Vp->mass());
+  EvtVector4R P_V=V->getP4();
+  EvtParticle *Mother_V=V->getParent();
+  EvtVector4R lambdab=Mother_V->getP4();
+
+  
+  double E_V=(P_V.get(0));
+   double px_M=lambdab.get(1);
+   double py_M=lambdab.get(2);
+   double pz_M=lambdab.get(3);
+   double E_M=lambdab.get(0);
+
+   EvtVector4R q_lambdab2 (E_M,
+                            ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(px_M))+(py_M*(py_M)))),
+                            ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-((py_M)*(px_M))+(px_M*(py_M)))),
+                            (pz_M));
+
+  EvtVector4R q_lambdab3 (E_M,
+                            q_lambdab2.get(3),
+                            q_lambdab2.get(1),
+                            q_lambdab2.get(2));
+   
+
+ EvtVector4R q_V1 (E_V,
+                         ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(P_V.get(1))) + (py_M*(P_V.get(2))))),
+                         ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-(py_M*(P_V.get(1))) + (px_M*(P_V.get(2))))),
+                         P_V.get(3));
+
+  EvtVector4R q_V2 (E_V,
+                         q_V1.get(3),
+                         q_V1.get(1),
+                         q_V1.get(2));
+
+  
+
+     double px= -(q_V2.get(1));
+  double py=-(q_V2.get(2));
+  double pz=-(q_V2.get(3));
+   
+
+
+
+  EvtVector4R q_V4 (q_V2.get(0),
+                          ((1/(sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2) + pow(q_V2.get(3),2))))* (1/(sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2))))*((q_V2.get(1))*(q_V2.get(1))*(q_V2.get(3))+((q_V2.get(2))*(q_V2.get(2))*(q_V2.get(3))) - ((q_V2.get(3))*(pow(q_V2.get(1),2) + pow(q_V2.get(2),2))))),
+                          ((((q_V2.get(2))*(q_V2.get(1)))-((q_V2.get(1))*(q_V2.get(2))))/(sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2)))),
+                          (((1/sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2) + pow(q_V2.get(3),2)))*( ((q_V2.get(1))*(q_V2.get(1))) +((q_V2.get(2))*(q_V2.get(2))) +   ((q_V2.get(3))*(q_V2.get(3)))))) );
+
+
+   EvtVector4R q_Vp1     (E_Vp,
+                        P*sin(theta)*cos(phi),
+                        P*sin(theta)*sin(phi),
+                        P*cos(theta));
+   EvtVector4R q_Vm1     (E_Vm,
+                        -P*sin(theta)*cos(phi),
+                        -P*sin(theta)*sin(phi),
+                        -P*cos(theta));
+  
+    EvtVector4R q_Vp3     (q_Vp1.get(0),
+                       ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_Vp1.get(1))*(px)*(pz)+((q_Vp1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vp1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
+                       ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*(((q_Vp1.get(1)))*(py)*(pz) - ((q_Vp1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vp1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
+                        ((-(1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))*((q_Vp1.get(1))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_Vp1.get(3))*(pz)))));
+   
+   EvtVector4R q_Vm3     (q_Vm1.get(0),
+                          ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_Vm1.get(1))*(px)*(pz)+((q_Vm1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vm1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
+                          ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*(((q_Vm1.get(1)))*(py)*(pz) - ((q_Vm1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vm1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
+                          ((-(1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))*((q_Vm1.get(1))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_Vm1.get(3))*(pz)))));
+
+
+
+
+
+ EvtVector4R q_Vp5 (q_Vp3.get(0),
+                        (q_Vp3.get(2)),
+                        (q_Vp3.get(3)),
+                        (q_Vp3.get(1)));
+   EvtVector4R q_Vm5      (q_Vm3.get(0),
+                           (q_Vm3.get(2)),
+                           (q_Vm3.get(3)),
+                           (q_Vm3.get(1)));
+ EvtVector4R q_Vp          (q_Vp5.get(0),
+                                ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_Vp5.get(1)))-(py_M*(q_Vp5.get(2))))),
+                                ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_Vp5.get(1)))+(px_M*(q_Vp5.get(2))))),
+                                (q_Vp5.get(3)));
+ EvtVector4R q_Vm      (q_Vm5.get(0),
+                          ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_Vm5.get(1)))-(py_M*(q_Vm5.get(2))))),
+                          ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_Vm5.get(1)))+(px_M*(q_Vm5.get(2))))),
+                          (q_Vm5.get(3)));
+
+  report(INFO,fname.c_str())<<" Lambdab  px: "<<px_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab  py: "<<py_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab  pz: "<<pz_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab  E: "<<E_M<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  px:  "<<q_lambdab2.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  py:  "<<q_lambdab2.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  pz:  "<<q_lambdab2.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab2  E:   "<<q_lambdab2.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  px:  "<<q_lambdab3.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  py:  "<<q_lambdab3.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  pz:  "<<q_lambdab3.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Lambdab3  E:   "<<q_lambdab3.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" V 0  px:  "<<P_V.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" V 0  py:  "<<P_V.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" V 0  pz:  "<<P_V.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" V 0  E:   "<<P_V.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" V 1  px:  "<<q_V1.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" V 1  py:  "<<q_V1.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" V 1  pz:  "<<q_V1.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" V 1  E:   "<<q_V1.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" V 2  px:  "<<q_V2.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" V 2  py:  "<<q_V2.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" V 2  pz:  "<<q_V2.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" V 2  E:   "<<q_V2.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" V  px: "<<px<<std::endl;
+report(INFO,fname.c_str())<<" V  py: "<<py<<std::endl;
+report(INFO,fname.c_str())<<" V  pz: "<<pz<<std::endl;
+ report(INFO,fname.c_str())<<" Vm 1 px:  "<<q_Vm1.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm 1 py:  "<<q_Vm1.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm 1 pz:  "<<q_Vm1.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm 1 E:   "<<q_Vm1.get(0)<<std::endl; 
+report(INFO,fname.c_str())<<" Vm 3 px:  "<<q_Vm3.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Vm 3 px:  "<<q_Vm3.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Vm 3 py:  "<<q_Vm3.get(2)<<std::endl;
+report(INFO,fname.c_str())<<" Vm 3 pz:  "<<q_Vm3.get(3)<<std::endl;
+report(INFO,fname.c_str())<<" Vm 3 E:   "<<q_Vm3.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" Vm 5 px:  "<<q_Vm5.get(1)<<std::endl;
+report(INFO,fname.c_str())<<" Vm 5 py:  "<<q_Vm5.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm 5 pz:  "<<q_Vm5.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm 5 E:   "<<q_Vm5.get(0)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 1  px:  "<<q_Vp1.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 1  py:  "<<q_Vp1.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 1  pz:  "<<q_Vp1.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 1  E:   "<<q_Vp1.get(0)<<std::endl;
+report(INFO,fname.c_str())<<" Vp 3  px:  "<<q_Vp3.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 3  py:  "<<q_Vp3.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 3  pz:  "<<q_Vp3.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 3  E:   "<<q_Vp3.get(0)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 5  px:  "<<q_Vp5.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 5  py:  "<<q_Vp5.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 5  pz:  "<<q_Vp5.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp 5  E:   "<<q_Vp5.get(0)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp  px:  "<<q_Vp.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" Vp  py:  "<<q_Vp.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<"Vp  pz:  "<<q_Vp.get(3)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm px:  "<<q_Vm.get(1)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm py:  "<<q_Vm.get(2)<<std::endl;
+ report(INFO,fname.c_str())<<" Vm pz:  "<<q_Vm.get(3)<<std::endl;
+
+  //set quadrivectors to particles
+  Vp->init(getDaugs()[0],q_Vp);
+  Vm->init(getDaugs()[1],q_Vm);
+
+  //computate pdf
+  double pdf = 0; 
+  if (Vtype==VID::JPSI)
+  {
+    //leptonic case
+     pdf = (1-3*A)*cos(theta)*cos(theta) + (1+A);
+  }
+  else
+  {
+    //hadronic case
+    pdf = (3*A-1)*cos(theta)*cos(theta) + (1-A);
+   
+  }
+  report(DEBUG,fname.c_str())<<" V decay pdf value : "<<pdf<<std::endl;
+
+  //set probability
+  setProb(pdf);
+  return;
+}
diff --git a/TEvtGen/EvtGenModels/EvtLambdaB2LambdaV.hh b/TEvtGen/EvtGenModels/EvtLambdaB2LambdaV.hh
new file mode 100644 (file)
index 0000000..3b4b23d
--- /dev/null
@@ -0,0 +1,197 @@
+//------------------------------------------------------------------------
+//
+// Module: EvtGen/EvtLambdaB2LambdaV.hh
+//
+// Description:
+//   Class to generate LambdaB -> Lambda(p pi) V(Vp Vm) decays
+//   with V a vector meson such as J/psi (mu+mu-)
+//                                 Rho (pi+pi-)
+//                                 Omega (pi+pi-)
+//                                 Rho-omega mixing (pi+pi-)
+//
+// Author : Eric Conte (LPC Clermont-Ferrand)
+//          econte@clermont.in2p3.fr / ziad@clermont.in2p3.fr
+//
+// Modification history:
+//
+//    E. Conte        April 13, 2006         Module created
+//    E. Conte        February 5, 2006       First draft
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTLAMBDAB2LAMBDAV_HH
+#define EVTLAMBDAB2LAMBDAV_HH
+
+#include <stdlib.h>
+#include <string>
+#include "EvtGenBase/EvtDecayProb.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+
+namespace VID
+{
+  enum VectorMesonType{JPSI, OMEGA, RHO, RHO_OMEGA_MIXING};
+}
+
+//*******************************************************************
+//*                                                                 *
+//*                   Class EvtLambdaB2LambdaV                      *
+//*                                                                 *
+//*******************************************************************
+//
+// DECAY : LambdaB -> Lambda + vector meson
+//
+// d(Sigma)
+// -------- = 1 + A*B*cos(theta) + 2*A*Re(C*exp(i*phi))*sin(theta)
+// d(Omega)
+//
+// with A (real)    : lambdaB  helicity asymmetry parameter
+//      B (real)    : lambdaB polarisation
+//      C (complex) : lambdaB density matrix element rho+-
+//
+// cf : O. Leitner, Z.J Ajaltouni, E. Conte, 
+//      PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
+class EvtLambdaB2LambdaV:public  EvtDecayProb
+{
+
+public:
+
+  EvtLambdaB2LambdaV();
+  virtual ~EvtLambdaB2LambdaV();
+  EvtDecayBase* clone();
+
+  virtual std::string getName();
+  void init();
+  void initProbMax();
+  void decay(EvtParticle *lambdab);
+private:
+
+  //class name for report method
+  std::string fname;
+
+  //meson vector identity 
+  VID::VectorMesonType Vtype;
+
+  //decay dynamics parameters 
+  double A;
+  double B;
+  EvtComplex C;
+
+  //V mass generator method
+  double getVMass(double MASS_LAMBDAB, double MASS_LAMBDA);
+  
+  //PDF generator method
+  double BreitWignerRelPDF(double m,double _m0, double _g0);
+  double RhoOmegaMixingPDF(double m, double _mr, double _gr, double _mo, double _go);
+};
+
+
+
+
+
+//*******************************************************************
+//*                                                                 *
+//*             Class EvtLambda2PPiForLambdaB2LambdaV               *
+//*                                                                 *
+//*******************************************************************
+//
+// DECAY : Lambda -> p + pi-
+//
+// d(Sigma)
+// -------- = 1 + A*B*cos(theta) + 2*A*Re(D*exp(i*phi))*sin(theta)
+// d(Omega)
+//
+// with A (real)    : lambda asymmetry parameter
+//      B (real)    : lambda polarisation
+//      C (real)    : lambdaB polarisation
+//      D (complex) : lambda density matrix element rho+-
+//
+// cf : O. Leitner, Z.J Ajaltouni, E. Conte
+//      PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
+
+class EvtLambda2PPiForLambdaB2LambdaV:public  EvtDecayProb
+{
+
+public:
+
+  EvtLambda2PPiForLambdaB2LambdaV();
+  virtual ~EvtLambda2PPiForLambdaB2LambdaV();
+  EvtDecayBase* clone();
+
+  virtual std::string getName();
+  void init();
+  void initProbMax();
+  void decay(EvtParticle *lambda);  
+
+private :
+
+  //class name for report method
+  std::string fname;
+
+  //meson vector identity 
+  VID::VectorMesonType Vtype;
+
+  //decay dynamics parameters
+  double A;
+  double B;
+  double C;
+  EvtComplex D;
+};
+
+
+
+
+
+//*******************************************************************
+//*                                                                 *
+//*               Class EvtV2VpVmForLambdaB2LambdaV                 *
+//*                                                                 *
+//*******************************************************************
+//
+// DECAY : vector meson V -> Vp + Vm
+//
+// d(Sigma)
+// -------- = (1-3A)*cos(theta)^2 + (1+A)   //leptonic decays
+// d(Omega)
+//
+// d(Sigma)
+// -------- = (3A-1)*cos(theta)^2 + (1-A)   //hadronic decays
+// d(Omega)
+//
+// with A (real)    : V density matrix element indicating the
+//                    probability to be longitudinally polarized
+//
+// cf : O. Leitner, Z.J Ajaltouni, E. Conte
+//      PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
+
+class EvtV2VpVmForLambdaB2LambdaV:public  EvtDecayProb
+{
+
+public:
+
+  EvtV2VpVmForLambdaB2LambdaV();
+  virtual ~EvtV2VpVmForLambdaB2LambdaV();
+  EvtDecayBase* clone();
+
+  virtual std::string getName();
+  void init();
+  void initProbMax();
+  void decay(EvtParticle *V);
+  
+private:
+
+  //class name for report method
+  std::string fname;
+
+  //meson vector identity 
+  VID::VectorMesonType Vtype;
+  //decay dynamics parameters 
+  double A;
+};
+
+
+#endif
similarity index 87%
rename from TEvtGen/EvtGenModels/EvtLambdaP_BarGamma.cxx
rename to TEvtGen/EvtGenModels/EvtLambdaP_BarGamma.cpp
index 3e3bb6722e6cf1200462523df1a305b750eeb148..83c72a71aa20fe92f41876f55638c837ec8066fa 100644 (file)
@@ -97,10 +97,13 @@ void EvtLambdaP_BarGamma::decay(EvtParticle* p) {
              photonGamma += EvtGammaMatrix::sigmaLower(mu, nu) * photonPol.get(mu) * photonMomentum.get(nu);
          
          EvtComplex amp = 
-           -I*_gLambdab * lambdaPol.adjoint() * ((constA()*EvtGammaMatrix::id() + constB()*EvtGammaMatrix::g5())
-                                                  * photonGamma * (slash(lambdaMomentum) + slash(photonMomentum) + _mLambdab*EvtGammaMatrix::id())
-                                                  / ((lambdaMomentum + photonMomentum)*(lambdaMomentum + photonMomentum) - _mLambdab*_mLambdab)
-                                                  * EvtGammaMatrix::g5() * antiP_Pol);
+           -I*_gLambdab * lambdaPol.adjoint() * 
+      ((constA()*EvtGammaMatrix::id() + constB()*EvtGammaMatrix::g5())
+       * photonGamma * (EvtGenFunctions::slash(lambdaMomentum) + 
+                        EvtGenFunctions::slash(photonMomentum) + 
+                        _mLambdab*EvtGammaMatrix::id())
+       / ((lambdaMomentum + photonMomentum)*(lambdaMomentum + photonMomentum) - _mLambdab*_mLambdab)
+       * EvtGammaMatrix::g5() * antiP_Pol);
          // use of parentheses so I do not have to define EvtDiracSpinor*EvtGammaMatrix, which shouldn't be defined to prevent errors in indexing
 
          vertex(i, j, k, amp);
@@ -116,21 +119,20 @@ void EvtLambdaP_BarGamma::initProbMax()
 }
 
 // form factors at 0
-double EvtLambdaP_BarGamma::f0(double fqm, int n){
+double EvtLambdaP_BarGamma::f0(double fqm, int n) const {
     return fqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mV * _mV), n);
 }
 
-double EvtLambdaP_BarGamma::g0(double gqm, int n){
+double EvtLambdaP_BarGamma::g0(double gqm, int n) const {
     return gqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mA * _mA), n);
 }
 
-
-double EvtLambdaP_BarGamma::constA(){
+double EvtLambdaP_BarGamma::constA() const {
     return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
         * (f0(_f1) - f0(_f2));
 }
 
-double EvtLambdaP_BarGamma::constB(){
+double EvtLambdaP_BarGamma::constB() const {
     return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
         * (g0(_g1) - (_mLambdab - _mLambda0) / (_mLambdab + _mLambda0) * g0(_g2));
 }
index 67b99b196956dae4d382c8c3bc8782b2d23d893d..5a147e1d29f8378cae8f969c0406d7723f8cc77e 100644 (file)
@@ -61,15 +61,15 @@ private:
 
   // user never needs to call this -> private
   // baryonic form factors f(p), g(p), at p=0
-  double f0(double f_qm, int n=1); // calculate f(0) with f(q_max)
-  double g0(double f_qm, int n=1); // calculate g(0) with g(q_max)
+  double f0(const double f_qm, int n=1) const ; // calculate f(0) with f(q_max)
+  double g0(const double f_qm, int n=1) const ; // calculate g(0) with g(q_max)
   
   // shorthand for constants a and b in the formula
-  double constA();
-  double constB();
+  double constA() const;
+  double constB() const;
 
   // initialize phasespace and calculate the amplitude for one (i=0,1) state of the photon
-  EvtComplex calcAmplitude(const EvtParticle* p, unsigned int polState);
+  EvtComplex calcAmpliude(const EvtParticle* p, const unsigned int polState);
   
 };
 
similarity index 96%
rename from TEvtGen/EvtGenModels/EvtLb2Lll.cxx
rename to TEvtGen/EvtGenModels/EvtLb2Lll.cpp
index 9565db82a5fd665db6c768ee507c318b69408078..bd4a596c8c3ea6d403be4dc725f422bd8fc36c91 100644 (file)
@@ -8,11 +8,16 @@
 //
 // Modification history:
 //
+//  10/07/2012  MK   Fix calculation of N1, N2; based on hep-ph/021144
 //  09/02/2009  PR   Commented check for (anti-)Lambda0 names
 //  15/09/2004  PR   Module created according to PHSP model
 //  20/02/2005  PR   Added parameters, created matrix element (without polarization)
 //  04/03/2005  PR   LD contrib., corrected WC eff. according to Chen. Geng.
 //
+// Todo list:
+//
+//   - Properly handle antiparticles, needs change of u, ubar to v, vbar in
+//     hadronic current, or other way of putting that in
 //----------------------------------------------------------------------------------
 
 #ifdef WIN32
@@ -193,9 +198,9 @@ void EvtLb2Lll::init(){
   report(INFO,"EvtGen") << " EvtLb2Lll maximum probability was set to " << m_maxProbability << std::endl;
   m_poleSize=0;
 
-  // Initialize Wilson coeficients by Buras and Munz
+  // Initialize Wilson coefficients by Buras and Munz
   // TODO: should have common W.C. source for all decays in EvtGen
-  m_WC.CalculateAllCoeficients();
+  m_WC.CalculateAllCoefficients();
 
 }
 
@@ -298,10 +303,10 @@ void EvtLb2Lll::calcAmp(EvtAmp *amp,EvtParticle *parent){
   int i,j,spins[4];
   char ch;
 
-  double r,M_L,M_Lb,M_s,M_c,M_b,q2,alpha,alpha_s,eta,M_W,M_t;
+  double r,M_L,M_Lb,M_s,M_c,M_b,q2,alpha,M_W,M_t;
   double M_psi[2]={0,0},Gamma_psi[2]={0,0},k_psi[2]={0,0};
   double F0_1,F0_2,a_F1,a_F2,b_F1,b_F2,F1,F2;
-  double f_1,f_2,f_3,g_1,g_2,g_3,f_1T,f_2T,f_3T,g_1T,g_2T,g_3T,f_TV,f_TS,g_TV,g_TS,f_T,g_T;
+  double f_1,f_2,f_3,g_1,g_2,g_3,f_1T,f_2T,f_3T,g_1T,g_2T,g_3T,f_TV,f_TS,g_TV(0.0),g_TS,f_T,g_T;
   EvtComplex A1,A2,A3,B1,B2,B3,D1,D2,D3,E1,E2,E3,N1,N2,H1,H2;
   EvtComplex C_SL,C_BR,C_LLtot,C_LRtot,C_LL,C_LR,C_RL,C_RR,C_LRLR,C_RLLR,C_LRRL,C_RLRL,C_T,C_TE;
   EvtComplex Yld,C_7eff,C_9eff;
@@ -320,8 +325,6 @@ void EvtLb2Lll::calcAmp(EvtAmp *amp,EvtParticle *parent){
   M_c     = 1.35;
   M_b     = 4.8;
   alpha   = 1./137.036;
-  alpha_s = 0.217484;
-  eta     = 0.556289;
   M_W     = 80.425;
   M_t     = 174.3;
   M_psi[0] = 3.096916;
@@ -481,12 +484,13 @@ void EvtLb2Lll::calcAmp(EvtAmp *amp,EvtParticle *parent){
   E2 = 0.5*(C_RR-C_RL)*(f_2-g_2) + 0.5*(C_LRtot-C_LLtot)*(f_2+g_2);
   E3 = 0.5*(C_RR-C_RL)*(f_3-g_3) + 0.5*(C_LRtot-C_LLtot)*(f_3+g_3);
 
-  N1 = (f_1*(M_Lb+M_L)+f_3*q2)/M_b*(C_LRLR+C_RLLR+C_LRRL+C_RLRL);
-  N2 = (f_1*(M_Lb+M_L)+f_3*q2)/M_b*(C_LRLR+C_RLLR-C_LRRL-C_RLRL);
+  N1 = (f_1*(M_Lb-M_L)+f_3*q2)/M_b*(C_LRLR+C_RLLR+C_LRRL+C_RLRL);  // Should be mLb - mL
+  N2 = (f_1*(M_Lb-M_L)+f_3*q2)/M_b*(C_LRLR+C_RLLR-C_LRRL-C_RLRL);
 
   H1 = (g_1*(M_Lb+M_L)-g_3*q2)/M_b*(C_LRLR-C_RLLR+C_LRRL-C_RLRL);
   H2 = (g_1*(M_Lb+M_L)-g_3*q2)/M_b*(C_LRLR-C_RLLR-C_LRRL+C_RLRL);
 
+
   for(i=0;i<4;i++){
     lbar_Gmu_l   [i/2][i%2] = EvtLeptonVCurrent(parent->getDaug(1)->spParent(i/2),parent->getDaug(2)->spParent(i%2));
     lbar_GmuG5_l [i/2][i%2] = EvtLeptonACurrent(parent->getDaug(1)->spParent(i/2),parent->getDaug(2)->spParent(i%2));
@@ -549,15 +553,18 @@ void EvtLb2Lll::calcAmp(EvtAmp *amp,EvtParticle *parent){
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
     Matrix[j/2][j%2][i/2][i%2] += cont(lbar_Smunu_l[i/2][i%2]  , 4*C_T*f_T*hbar_Smunu_h[j/2][j%2]);
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
-    Matrix[j/2][j%2][i/2][i%2] += cont(lbar_Smunu_l[i/2][i%2]  , -4*C_T*f_TV*i1*(directProd(q_mu,hbar_Gmu_h[j/2][j%2])-directProd(hbar_Gmu_h[j/2][j%2],q_mu)));
+    Matrix[j/2][j%2][i/2][i%2] += 
+      cont(lbar_Smunu_l[i/2][i%2]  , 
+           -4*C_T*f_TV*i1*(EvtGenFunctions::directProd(q_mu,hbar_Gmu_h[j/2][j%2])-
+                           EvtGenFunctions::directProd(hbar_Gmu_h[j/2][j%2],q_mu)));
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
-    Matrix[j/2][j%2][i/2][i%2] += cont(lbar_Smunu_l[i/2][i%2]  , -4*C_T*f_TS*i1*(directProd(P_mu,q_mu)-directProd(q_mu,P_mu))*hbar_h[j/2][j%2]);
+    Matrix[j/2][j%2][i/2][i%2] += cont(lbar_Smunu_l[i/2][i%2]  , -4*C_T*f_TS*i1*(EvtGenFunctions::directProd(P_mu,q_mu)-EvtGenFunctions::directProd(q_mu,P_mu))*hbar_h[j/2][j%2]);
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
     Matrix[j/2][j%2][i/2][i%2] += cont(lbar_ESmunu_l[i/2][i%2] , 4*C_TE*f_T*i1*hbar_Smunu_h[j/2][j%2]);
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
-    Matrix[j/2][j%2][i/2][i%2] += cont(lbar_ESmunu_l[i/2][i%2] , 4*C_TE*f_TV*(directProd(q_mu,hbar_Gmu_h[j/2][j%2])-directProd(hbar_Gmu_h[j/2][j%2],q_mu)));
+    Matrix[j/2][j%2][i/2][i%2] += cont(lbar_ESmunu_l[i/2][i%2] , 4*C_TE*f_TV*(EvtGenFunctions::directProd(q_mu,hbar_Gmu_h[j/2][j%2])-EvtGenFunctions::directProd(hbar_Gmu_h[j/2][j%2],q_mu)));
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
-    Matrix[j/2][j%2][i/2][i%2] += cont(lbar_ESmunu_l[i/2][i%2] , 4*C_TE*f_TS*(directProd(P_mu,q_mu)-directProd(q_mu,P_mu))*hbar_h[j/2][j%2]);
+    Matrix[j/2][j%2][i/2][i%2] += cont(lbar_ESmunu_l[i/2][i%2] , 4*C_TE*f_TS*(EvtGenFunctions::directProd(P_mu,q_mu)-EvtGenFunctions::directProd(q_mu,P_mu))*hbar_h[j/2][j%2]);
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
     //Matrix[j/2][j%2][i/2][i%2] *= G_F*alpha/4/sqrt(2)/EvtConst::pi*V_tb*conj(V_ts);
     //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
index 5178a862a04eb275f549eaeec9bbf8463ee7c9c0..30e6b79d4b05e110672fa0060b291f238523f083 100644 (file)
@@ -20,7 +20,7 @@
 #include "EvtGenBase/EvtDecayAmp.hh"
 #include "EvtGenBase/EvtTensor4C.hh"
 #include "EvtGenBase/EvtDiracSpinor.hh"
-#include "EvtGenModels/EvtWilsonCoeficients.hh"
+#include "EvtGenModels/EvtWilsonCoefficients.hh"
 
 class EvtLb2Lll:public EvtDecayAmp {
 
@@ -53,7 +53,7 @@ private:
   std::string m_FFtype;
   std::string m_effectContribution;
   
-  EvtWilsonCoeficients m_WC;
+  EvtWilsonCoefficients m_WC;
 
 };
 
similarity index 86%
rename from TEvtGen/EvtGenModels/EvtMelikhovFF.cxx
rename to TEvtGen/EvtGenModels/EvtMelikhovFF.cpp
index 9182b36f74daed92ced0fe4c1e02ca73ebe69997..666a6ae562303c247be001ea6788b8a37d105e84 100644 (file)
@@ -132,3 +132,19 @@ void EvtMelikhovFF::getbaryonff(EvtId, EvtId, double, double, double*,
 
 }
 
+void EvtMelikhovFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                              double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtMelikhovFF.\n";
+  ::abort();
+
+}
+
+void EvtMelikhovFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                               double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtMelikhovFF.\n";
+  ::abort();
+
+}
+
index d28348afd4f1eebdd815b627034184a1f66c6e00..a62ac622169590869e39f887f786f0f4861bb356 100644 (file)
@@ -42,6 +42,11 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
 
 private:
   int whichfit;
similarity index 84%
rename from TEvtGen/EvtGenModels/EvtModelReg.cxx
rename to TEvtGen/EvtGenModels/EvtModelReg.cpp
index 58fd8bea274f20e42ea4ba4008a6cb47ccf774f0..40ca7fd26ee438a195b7c7f6dbbeb30df946af33 100644 (file)
 #include "EvtGenModels/EvtHypNonLepton.hh"
 
 #include "EvtGenModels/EvtbTosllAli.hh"
-//#include "EvtGenModels/EvtBToDDalitzCPK.hh"
-//#include "EvtGenModels/EvtPVVCPLH.hh"
-//#include "EvtGenModels/EvtLambdaB2LambdaV.hh"
-//#include "EvtGenModels/EvtSSD_DirectCP.hh"
+#include "EvtGenModels/EvtBToDDalitzCPK.hh"
+#include "EvtGenModels/EvtPVVCPLH.hh"
+#include "EvtGenModels/EvtLambdaB2LambdaV.hh"
+#include "EvtGenModels/EvtSSD_DirectCP.hh"
 
 #include "EvtGenModels/EvtHQET.hh"
 #include "EvtGenModels/EvtHQET2.hh"
 #include "EvtGenModels/EvtLNuGamma.hh"
 
 #include "EvtGenModels/EvtVub.hh"
-//#include "EvtGenModels/EvtVubAFR.hh"
 #include "EvtGenModels/EvtVubHybrid.hh"
 #include "EvtGenModels/EvtVubNLO.hh"
 #include "EvtGenModels/EvtVubBLNP.hh"
 #include "EvtGenModels/EvtKKLambdaC.hh"
 #include "EvtGenModels/EvtMultibody.hh"
 
-//#include "EvtGenModels/EvtJetSetCDF.hh"
-//#include "EvtGenModels/EvtJscontCDF.hh"
-
-
-//#ifndef EVTSTANDALONE
-//#include "EvtGenModels/EvtJetSet.hh"
-//#include "EvtGenModels/EvtJscont.hh"
-//#else
- #include "EvtGenModels/EvtPythia.hh"
- #include "EvtGenModels/EvtPyGaGa.hh"
- #include "EvtGenModels/EvtPycont.hh"
-//#endif
+#include "EvtGenModels/EvtBaryonPCR.hh"
 
 #include "EvtGenModels/EvtDMix.hh"
 #include "EvtGenModels/EvtD0mixDalitz.hh"
+#include "EvtGenModels/EvtD0gammaDalitz.hh"
+#include "EvtGenModels/EvtEta2MuMuGamma.hh"
+
+#include "EvtGenModels/EvtBcToNPi.hh"
+#include "EvtGenModels/EvtBcPsiNPi.hh"
+#include "EvtGenModels/EvtBcBsNPi.hh"
+#include "EvtGenModels/EvtBcBsStarNPi.hh"
+
+#include "EvtGenModels/EvtBcVMuNu.hh"
+#include "EvtGenModels/EvtBcVNpi.hh"
+#include "EvtGenModels/EvtSVP.hh"
+#include "EvtGenModels/EvtTVP.hh"
+#include "EvtGenModels/EvtXPsiGamma.hh"
+
+#include "EvtGenModels/EvtGenericDalitz.hh"
 
 #include "EvtGenModels/EvtModelReg.hh"
 using std::fstream;
@@ -251,7 +254,6 @@ EvtModelReg::EvtModelReg(const std::list<EvtDecayBase*>* extraModels)
     modelist.registerModel(new EvtKstarstargamma);
 
     modelist.registerModel(new EvtVub); 
-    //modelist.registerModel(new EvtVubAFR);
 
     modelist.registerModel(new EvtVubHybrid);
     modelist.registerModel(new EvtVubNLO);
@@ -264,37 +266,30 @@ EvtModelReg::EvtModelReg(const std::list<EvtDecayBase*>* extraModels)
     modelist.registerModel(new EvtMultibody);
     modelist.registerModel(new EvtDMix);
     modelist.registerModel(new EvtD0mixDalitz);
-
-    //modelist.registerModel(new EvtJetSetCDF);
-    //modelist.registerModel(new EvtJscontCDF);
+    modelist.registerModel(new EvtD0gammaDalitz);
+    modelist.registerModel(new EvtEta2MuMuGamma);
 
     modelist.registerModel(new EvtbTosllAli);
-    //    modelist.registerModel(new EvtBToDDalitzCPK);
-    //    modelist.registerModel(new EvtLambdaB2LambdaV);
-    //    modelist.registerModel(new EvtLambda2PPiForLambdaB2LambdaV);
-    //    modelist.registerModel(new EvtV2VpVmForLambdaB2LambdaV);
-    //    modelist.registerModel(new EvtPVVCPLH);
-    //   modelist.registerModel(new EvtSSD_DirectCP);
-
-
-//#ifndef EVTSTANDALONE
-//    cout << "Will registerModel EvtJetSet"<<endl;
-//    modelist.registerModel(new EvtJetSet);
-//    modelist.registerModel(new EvtJscont);
-//#else
-    modelist.registerModel(new EvtPycont);
-    cout << "Will register EvtPythia"<<endl;
-    modelist.registerModel(new EvtPythia);
-    modelist.registerModel(new EvtPyGaGa);
-//#endif
-
-    
-
-}
-
-
+    modelist.registerModel(new EvtBaryonPCR);
 
+    modelist.registerModel(new EvtBToDDalitzCPK);
+    modelist.registerModel(new EvtLambdaB2LambdaV);
+    modelist.registerModel(new EvtLambda2PPiForLambdaB2LambdaV);
+    modelist.registerModel(new EvtV2VpVmForLambdaB2LambdaV);
+    modelist.registerModel(new EvtPVVCPLH);
+    modelist.registerModel(new EvtSSD_DirectCP);
 
+    modelist.registerModel(new EvtBcToNPi(true)); // true = print author info
+    modelist.registerModel(new EvtBcPsiNPi);
+    modelist.registerModel(new EvtBcBsNPi);
+    modelist.registerModel(new EvtBcBsStarNPi);
 
+    modelist.registerModel(new EvtBcVMuNu);
+    modelist.registerModel(new EvtBcVNpi);
+    modelist.registerModel(new EvtSVP);
+    modelist.registerModel(new EvtTVP);
+    modelist.registerModel(new EvtXPsiGamma);
 
+    modelist.registerModel(new EvtGenericDalitz());
 
+}
index 1cd9e3500621fed79988d66c75a9669f0a137021..5c0228d4cb98b6063b527851bdf7e54bc4938cd4 100644 (file)
@@ -23,6 +23,8 @@
 
 #include <list>
 
+class EvtDecayBase ;
+
 class EvtModelReg{
 
 public:
diff --git a/TEvtGen/EvtGenModels/EvtNoRadCorr.hh b/TEvtGen/EvtGenModels/EvtNoRadCorr.hh
new file mode 100644 (file)
index 0000000..9add671
--- /dev/null
@@ -0,0 +1,45 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2012      University of Warwick, UK
+//
+// Module: EvtNoRadCorr
+//
+// Description: Create an empty radiative correction engine which does nothing.
+// This is required since the EvtGen constructor still needs at least one 
+// concrete implementation of EvtAbsRadCorr for the case when Photos is not used.
+//
+// Modification history:
+//
+//    John Back       Sept 2012           Module created
+//
+//------------------------------------------------------------------------------
+//
+
+#ifndef EVTNORADCORR_HH
+#define EVTNORADCORR_HH
+
+#include "EvtGenBase/EvtAbsRadCorr.hh"
+#include <string>
+
+class EvtParticle;
+
+class EvtNoRadCorr : public EvtAbsRadCorr {
+
+public:
+    
+  EvtNoRadCorr() {;}
+  virtual ~EvtNoRadCorr() {;}
+
+  virtual void doRadCorr(EvtParticle *p) {;}
+
+private:
+
+};
+
+#endif
+
diff --git a/TEvtGen/EvtGenModels/EvtPHOTOS.cxx b/TEvtGen/EvtGenModels/EvtPHOTOS.cxx
deleted file mode 100644 (file)
index bf9b1a4..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtPHOTOS.cc
-//
-// Description: This routine takes the particle *p and applies
-//              the PHOTOS package to generate final state radiation
-//              on the produced mesons.
-//
-// Modification history:
-//
-//    RYD     October 1, 1997        Module created
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtIdSet.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtPhotonParticle.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtPHOTOS.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "TRandom.h"
-#include <stdlib.h>
-
-extern "C" void begevtgenstorex_(int *,int *,int *,int *,
-                                int *,int *,int *,int *,
-                                double *,double *,double *, 
-                                double *,double *,double *, 
-                                double *,double *,double *);
-
-extern "C" void begevtgengetx_(int *,int *,int *,int *,
-                             int *,int *,int *,int *,
-                             double *,double *,double *, 
-                             double *,double *,double *, 
-                             double *,double *,double *);
-
-extern "C" void heplst_(int *);
-
-extern "C" void photos_(int *);
-
-extern "C" void phoini_(int *, int *);
-
-
-EvtPHOTOS::EvtPHOTOS(std::string photontype){
-
-    _photontype=photontype;
-  
-}
-
-void EvtPHOTOS::doRadCorr( EvtParticle *p){
-
-  static int first=1;
-
-  //added by Lange Jan4,2000
-  //allow to set photon tupe
-  static EvtId GAMM=EvtPDL::getId(_photontype);
-
-  if (GAMM==EvtId(-1,-1)) {
-    report(ERROR,"EvtGen") << "In EvtPHOTOS::doRadCorr():Particle:"<<
-      _photontype<<" is not in EvtPDL"<<std::endl;
-     ::abort();
-  }
-
-  if (first) {
-    first=0;
-    int iseed1=(int)gRandom->Integer(31327);
-    int iseed2=(int)gRandom->Integer(30080);
-    phoini_(&iseed1,&iseed2);
-  }
-
-  double mpho=EvtPDL::getMeanMass(GAMM);
-
-  int entry,eventnum,numparticle,istat,partnum,mother;
-  int daugfirst,dauglast;
-
-  int numparticlephotos;
-
-  double px,py,pz,e,m,x,y,z,t;
-
-  static EvtId dq=EvtPDL::getId("d");
-  static EvtId adq=EvtPDL::getId("anti-d");
-  static EvtId uq=EvtPDL::getId("u");
-  static EvtId auq=EvtPDL::getId("anti-u");
-  static EvtId sq=EvtPDL::getId("s");
-  static EvtId asq=EvtPDL::getId("anti-s");
-  static EvtId cq=EvtPDL::getId("c");
-  static EvtId acq=EvtPDL::getId("anti-c");
-  static EvtId bq=EvtPDL::getId("b");
-  static EvtId abq=EvtPDL::getId("anti-b");
-  static EvtId tq=EvtPDL::getId("t");
-  static EvtId atq=EvtPDL::getId("anti-t");
-  static EvtId vpho=EvtPDL::getId("vpho");
-
-  static EvtIdSet quarks(dq,adq,uq,auq,sq,asq,cq,acq,bq,abq,tq,atq);
-
-  if ( p->getId() == vpho ) return;
-  if ( p->getNDaug() > 10 ) return;
-
-  px=0.0;
-  py=0.0;
-  pz=0.0;
-  e=p->mass();
-  m=p->mass();
-  x=0.0;
-  y=0.0;
-  z=0.0;
-  t=0.0;
-  
-  entry=1;
-  eventnum=1;
-  numparticle=1;
-  istat=2;
-  partnum=EvtPDL::getStdHep(p->getId());
-  mother=0;
-  daugfirst=2;
-  dauglast=1+p->getNDaug();
-
-  begevtgenstorex_(&entry,&eventnum,&numparticle,&istat,&partnum,
-                  &mother,&daugfirst,&dauglast,
-                 &px,&py,&pz,&e,&m,&x,&y,&z,&t);
-
-  //  std::cout << EvtPDL::name(p->getId()) <<" " ;
-  for(size_t i=0;i<p->getNDaug();i++){
-
-    //No quarks to photos
-    if (quarks.contains(p->getDaug(i)->getId())==1) continue;
-
-    px=p->getDaug(i)->getP4().get(1);
-    py=p->getDaug(i)->getP4().get(2);
-    pz=p->getDaug(i)->getP4().get(3);
-    e=p->getDaug(i)->getP4().get(0);
-    m=p->getDaug(i)->mass();
-    x=0.0;
-    y=0.0;
-    z=0.0;
-    t=0.0;
-
-    //    std::cout << EvtPDL::name(p->getDaug(i)->getId()) << " " ;
-    entry+=1;
-    eventnum=1;
-    numparticle+=1;
-    istat=1;
-    partnum=EvtPDL::getStdHep(p->getDaug(i)->getId());
-    mother=1;
-    daugfirst=0;
-    dauglast=0;    
-
-    begevtgenstorex_(&entry,&eventnum,&numparticle,&istat,&partnum,
-                   &mother,&daugfirst,&dauglast,
-                   &px,&py,&pz,&e,&m,&x,&y,&z,&t);
-    
-
-  }
-  //  std::cout << std::endl;
-  //can't use heplst since the common block used by the BaBar
-  //implementation of PHOTOS  is renamed due to real*4 vs real*8
-  //problems.
-
-  //int mlst=1;
-
-  //heplst_(&mlst);
-
-  entry=1;
-
-  //  report(INFO,"EvtGen") << "Doing photos " << EvtPDL::name(p->getId()) << endl;
-  photos_(&entry);
-  //  report(INFO,"EvtGen") << "done\n";
-  begevtgengetx_(&entry,&eventnum,&numparticlephotos,&istat,&partnum,
-                   &mother,&daugfirst,&dauglast,
-                   &px,&py,&pz,&e,&m,&x,&y,&z,&t);
-    
-
-  //report(INFO,"EvtGen") << "numparticlephotos:"<<numparticlephotos<<endl;
-  
-  if (numparticle==numparticlephotos) return;
-
-  EvtVector4R new4mom;
-
-  int np;
-
-  for(size_t i=0;i<p->getNDaug();i++){
-
-    entry=i+2;
-
-    begevtgengetx_(&entry,&eventnum,&np,&istat,&partnum,
-                   &mother,&daugfirst,&dauglast,
-                   &px,&py,&pz,&e,&m,&x,&y,&z,&t);
-
-    //this is needed to ensure that photos does not
-    //change the masses. But it will violate energy conservation!
-    double mp=p->getDaug(i)->mass();
-    e=sqrt(mp*mp+px*px+py*py+pz*pz);
-        
-    new4mom.set(e,px,py,pz);
-
-    p->getDaug(i)->setP4WithFSR(new4mom);
-
-    
-
-  }
-
-  for(entry=numparticle+1;entry<=numparticlephotos;entry++){
-
-    begevtgengetx_(&entry,&eventnum,&np,&istat,&partnum,
-                   &mother,&daugfirst,&dauglast,
-                   &px,&py,&pz,&e,&m,&x,&y,&z,&t);
-        
-    //Hack here to give the photon the mass of the generated particle
-    e=sqrt(mpho*mpho+px*px+py*py+pz*pz);
-    new4mom.set(e,px,py,pz);
-
-    //new4mom.dump();
-
-    EvtPhotonParticle* gamma;
-    gamma=new EvtPhotonParticle;
-    gamma->init(GAMM,new4mom);
-    gamma->setFSRP4toZero();
-    //    report(INFO,"EvtGen") << gamma << " " << p << " "<< px << " " << py << " " << pz << " " << p->getNDaug() << " " << EvtPDL::name(p->getId())<<" " << entry << " " <<numparticlephotos<<endl;
-    gamma->addDaug(p);
-
-//    p->getDaug(i)->set_type(EvtSpinType::PHOTON);
-
-  }
-  return ;
-}
-
diff --git a/TEvtGen/EvtGenModels/EvtPVVCPLH.cpp b/TEvtGen/EvtGenModels/EvtPVVCPLH.cpp
new file mode 100644 (file)
index 0000000..ebd2f53
--- /dev/null
@@ -0,0 +1,186 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1999      Caltech, UCSB
+//
+// Module: EvtPVVCPLH.cc
+//
+// Description: The decay of a scalar to two vector particles are 
+//              performed with CP violation and different widths for
+//              the CP-even and CP-odd states. E.g. Bs->J/psi phi.
+//
+// Modification history:
+//
+//    RYD       November 5, 1999       Module EvtSVVCPLH created
+//
+//    DUPREE    October 10, 2006       Large modification: EvtSVVCPLH->EvtPVVCPLH
+//                                     Time-dependence correctly
+//
+//    COWAN    June 10, 2009          Modified to use the new EvtCPUtils class.
+//                                    EvtIncoherentMixing removed.
+//
+//------------------------------------------------------------------------
+//
+#include <stdlib.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtCPUtil.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenModels/EvtSVVHelAmp.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenModels/EvtPVVCPLH.hh"
+#include "EvtGenBase/EvtId.hh"
+#include <string>
+#include "EvtGenBase/EvtConst.hh"
+#include "EvtGenBase/EvtRandom.hh"
+
+EvtPVVCPLH::~EvtPVVCPLH() {}
+
+std::string EvtPVVCPLH::getName() {
+  return "PVV_CPLH";     
+}
+
+
+EvtDecayBase* EvtPVVCPLH::clone(){
+
+  return new EvtPVVCPLH;
+
+}
+
+void EvtPVVCPLH::init(){
+
+  // check that there are 8 arguments (deltaMs no argument anymore)
+  checkNArg(8);
+  checkNDaug(2);
+
+  checkSpinParent(EvtSpinType::SCALAR);
+
+  checkSpinDaughter(0,EvtSpinType::VECTOR);
+  checkSpinDaughter(1,EvtSpinType::VECTOR);
+
+}
+
+void EvtPVVCPLH::initProbMax(){
+
+  //This is probably not quite right, but it should do as a start...
+  //Anders
+
+  setProbMax(2*(getArg(2)*getArg(2)+getArg(4)*getArg(4)+getArg(6)*getArg(6)));
+
+}
+
+void EvtPVVCPLH::decay( EvtParticle *p){
+
+  //added by Lange Jan4,2000
+  static EvtId BS0=EvtPDL::getId("B_s0");
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+
+  //This is only to get tag-ID
+  //Mixing is not relevant
+  //Lifetime is made correctly later
+  //Tristan
+  EvtId other_b;
+  double t;
+
+// To generate integrated CP asymmetry, EvtGen uses the "flipping".
+// CP-asymmetry in this channel very small, since:
+// deltaMs large ..and..
+// CPV-phase small
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b);
+
+  //Here we're gonna generate and set the "envelope" lifetime
+  //So we take the longest living component (for positive deltaGamma: tauH)
+  //The double exponent will be taken care of later, by the amplitudes
+  //Tristan
+  
+  static double Gamma = EvtConst::c/(EvtPDL::getctau(BS0));
+  static double deltaGamma = EvtCPUtil::getInstance()->getDeltaGamma(BS0);
+  static double ctauLong = EvtConst::c/(Gamma-fabs(deltaGamma)/2);
+  // if dG>0: tauLong=tauH(CP-odd) is then largest
+
+  //This overrules the lifetimes made in OtherB
+  t=-log(EvtRandom::Flat())*(ctauLong);//ctauLong has same dimensions as t
+  if(isBsMixed(p)){
+    p->getParent()->setLifetime(t);
+  }else{
+    p->setLifetime(t);
+  }
+
+  //These should be filled with the transversity amplitudes at t=0 //Tristan
+  EvtComplex G0P,G1P,G1M;  
+  G1P=EvtComplex(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3)));
+  G0P=EvtComplex(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5)));
+  G1M=EvtComplex(getArg(6)*cos(getArg(7)),getArg(6)*sin(getArg(7)));
+
+  EvtComplex lambda_km=EvtComplex(cos(2*getArg(0)),sin(2*getArg(0)));//was een min in oude versie
+
+  //deltaMs is no argument anymore
+  //Tristan
+  
+  static double deltaMs = EvtCPUtil::getInstance()->getDeltaM(BS0);
+
+  EvtComplex cG0P,cG1P,cG1M;
+
+  double mt = exp(-std::max(0.,deltaGamma)*t/(2*EvtConst::c));
+  double pt = exp(+std::min(0.,deltaGamma)*t/(2*EvtConst::c));
+
+  EvtComplex gplus  = ( mt*EvtComplex(cos(deltaMs*t/(2*EvtConst::c)),sin( deltaMs*t/(2*EvtConst::c)))
+                     +pt*EvtComplex(cos(deltaMs*t/(2*EvtConst::c)),sin(-deltaMs*t/(2*EvtConst::c))) )/2;
+  EvtComplex gminus = ( mt*EvtComplex(cos(deltaMs*t/(2*EvtConst::c)),sin( deltaMs*t/(2*EvtConst::c)))
+                     -pt*EvtComplex(cos(deltaMs*t/(2*EvtConst::c)),sin(-deltaMs*t/(2*EvtConst::c))) )/2;;
+
+  if (other_b==BSB){
+    //These are the right equations for the transversity formalism
+    //cGOP is de 0-component, CP-even, so lives shorter: mainly lifetime tauL
+    //cG1P is the //-component, also CP-even, also mainly smaller exponent
+    //cG1M is the transverse component, CP-odd, so has mainly longer lifetime tauH
+    //Tristan
+    cG0P = G0P*( gplus + lambda_km*gminus );
+    cG1P = G1P*( gplus + lambda_km*gminus );
+    cG1M = G1M*( gplus - lambda_km*gminus );
+  } else if (other_b==BS0){
+    //The equations for BsBar
+    //Note the minus-sign difference
+    //Tristan
+    cG0P = G0P*( gplus + (1.0/lambda_km)*gminus );
+    cG1P = G1P*( gplus + (1.0/lambda_km)*gminus );
+    cG1M =-G1M*( gplus - (1.0/lambda_km)*gminus );
+
+  } else{
+    report(ERROR,"EvtGen") << "other_b was not BSB or BS0!"<<std::endl;
+    ::abort();
+  }
+
+  EvtComplex A0,AP,AM;
+  //Converting the transversity amplitudes
+  //to helicity amplitudes
+  //(to plug them into SVVHelAmp)
+  A0=cG0P;
+  AP=(cG1P+cG1M)/sqrt(2.0);
+  AM=(cG1P-cG1M)/sqrt(2.0);
+  
+  EvtSVVHelAmp::SVVHel(p,_amp2,getDaug(0),getDaug(1),AP,A0,AM);
+
+  return ;
+}
+
+bool EvtPVVCPLH::isBsMixed ( EvtParticle * p ) {
+  if ( ! ( p->getParent() ) ) return false ;
+
+  static EvtId BS0=EvtPDL::getId("B_s0");
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+
+  if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) ) return false ;
+
+  if ( ( p->getParent()->getId() == BS0 ) ||
+       ( p->getParent()->getId() == BSB ) ) return true ;
+
+  return false ;
+}
+
+
similarity index 56%
rename from TEvtGen/EvtGenModels/EvtPyGaGa.hh
rename to TEvtGen/EvtGenModels/EvtPVVCPLH.hh
index 79d7d8da867cc66756b85315d042007108756adf..ef0a3beb77cd4e3691f24a6c42e29bed581b0f87 100644 (file)
@@ -6,39 +6,46 @@
 //      of it, please give an appropriate acknowledgement.
 //
 // Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
+//      Copyright (C) 1999      Caltech, UCSB
 //
-// Module: BelEvtGen/EvtJscont.hh
+// Module: EvtGen/EvtPVVCPLH.hh
 //
 // Description:
 //
 // Modification history:
 //
-//    DJL/RYD     August 11, 1998         Module created
-//    RS          October 28, 2002        copied from JETSET module
+//    RYD       November 5, 1999         Module created
+//
+//    TDP       October 10, 2006         Modified
 //
 //------------------------------------------------------------------------
 
-#ifndef EVTPYGAGA_HH
-#define EVTPYGAGA_HH
+#ifndef EVTPVVCPLH_HH
+#define EVTPVVCPLH_HH
+
+#include "EvtGenBase/EvtDecayAmp.hh"
 
-#include "EvtGenBase/EvtDecayIncoherent.hh"
-#include "EvtGenBase/EvtParticle.hh"
+class EvtParticle;
 
-class EvtPyGaGa:public  EvtDecayIncoherent  {
+class EvtPVVCPLH:public  EvtDecayAmp  {
 
 public:
-  
-  EvtPyGaGa() {}
-  virtual ~EvtPyGaGa();
-  
-  std::string getName();
+
+  EvtPVVCPLH() {}
+  virtual ~EvtPVVCPLH();
+
+  virtual std::string getName();
   EvtDecayBase* clone();
-  
-  void init();
+
   void initProbMax();
-  
+  void init();
+
   void decay(EvtParticle *p); 
+  
+private:
+  bool isBsMixed ( EvtParticle * p ) ;
+
+
 };
 
 #endif
similarity index 90%
rename from TEvtGen/EvtGenModels/EvtPi0Dalitz.cxx
rename to TEvtGen/EvtGenModels/EvtPi0Dalitz.cpp
index 1e546ecb6f0f266c03c88ba56a649ee987821ac1..aa476201dc2e552c63f22d2de96bbb2546db7e8a 100644 (file)
@@ -96,11 +96,12 @@ void EvtPi0Dalitz::decay( EvtParticle *p){
 
   EvtTensor4C w,v;
 
-  v=2.0*(gamma->getP4()*q)*directProd(q,gamma->getP4()) 
+  v=2.0*(gamma->getP4()*q)*EvtGenFunctions::directProd(q,gamma->getP4()) 
     - (gamma->getP4()*q)*(gamma->getP4()*q)*EvtTensor4C::g()
-    -m2*directProd(gamma->getP4(),gamma->getP4());
+    -m2*EvtGenFunctions::directProd(gamma->getP4(),gamma->getP4());
  
-  w=4.0*( directProd(ep->getP4(),em->getP4()) + directProd(em->getP4(),ep->getP4())
+  w=4.0*( EvtGenFunctions::directProd(ep->getP4(),em->getP4()) + 
+          EvtGenFunctions::directProd(em->getP4(),ep->getP4())
           -EvtTensor4C::g()*(ep->getP4()*em->getP4()-ep->getP4().mass2()));
 
   double prob=(real(cont(v,w)))/(m2*m2);
similarity index 99%
rename from TEvtGen/EvtGenModels/EvtPropSLPole.cxx
rename to TEvtGen/EvtGenModels/EvtPropSLPole.cpp
index 82d9a7d4216e6e6aed6a81d312e369b421f48ad1..86b3b665706d528cf2767010df20127062c05eb0 100644 (file)
@@ -384,7 +384,7 @@ double EvtPropSLPole::calcMaxProb( EvtId parent, EvtId meson,
   trino=root_part->getDaug(2);
 
   EvtDecayBase *decayer;
-  decayer = EvtDecayTable::getDecayFunc(daughter);
+  decayer = EvtDecayTable::getInstance()->getDecayFunc(daughter);
   if ( decayer ) {
     daughter->makeDaughters(decayer->nRealDaughters(),decayer->getDaugs());
     for(int ii=0; ii<decayer->nRealDaughters(); ii++){
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtPto3P.cxx
rename to TEvtGen/EvtGenModels/EvtPto3P.cpp
index 257f09ee563477eb77496f53ba6f3646d238c364..36449f43174311ed6c004ecbd30585c7a389b334 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtPto3P.cc,v 1.13 2004/12/21 22:16:05 ryd Exp $
+//      $Id: EvtPto3P.cpp,v 1.4 2009-03-16 15:46:31 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
index d7ec74b0c5dd5b91a915eee1e9557842f47d7988..857ed906b5c1a8a5340176090697d2a85cfd3592 100644 (file)
@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------
 // File and Version Information: 
-//      $Id: EvtPto3P.hh,v 1.7 2006/10/02 01:07:49 lange Exp $
+//      $Id: EvtPto3P.hh,v 1.2 2009-03-16 16:31:05 robbep Exp $
 // 
 // Environment:
 //      This software is part of the EvtGen package developed jointly
diff --git a/TEvtGen/EvtGenModels/EvtPyGaGa.cxx b/TEvtGen/EvtGenModels/EvtPyGaGa.cxx
deleted file mode 100644 (file)
index 4d0ccbd..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtPycont.cc
-//
-// Description: Routine to generate e+e- --> q\barq  via Jetset
-//
-// Modification history:
-//
-//    PCK     August 4, 1997        Module created
-//    RS      October 28, 2002      copied from EvtJscont.cc
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include <stdlib.h>
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtDecayBase.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtPyGaGa.hh"
-#include "EvtGenModels/EvtPythia.hh"
-#include "EvtGenBase/EvtId.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include <string.h>
-#include <iostream>
-
-extern "C" {
-  extern void pystat_(int &);
-  extern struct
-  {
-    int dc[18];
-  } decaych_;
-}
-
-
-EvtPyGaGa::~EvtPyGaGa()
-{
-  int i=1;
-  pystat_(i);
-}
-
-std::string EvtPyGaGa::getName()
-{
-  return "PYGAGA";  
-}
-
-EvtDecayBase* EvtPyGaGa::clone()
-{
-  return new EvtPyGaGa;
-}
-
-void EvtPyGaGa::init()
-{
-  // check that there are 1 argument
-  checkNArg(0);
-  for( int i=0; i<18; i++)
-    decaych_.dc[i]=0;
-}
-
-void EvtPyGaGa::initProbMax()
-{
-  noProbMax();
-}
-
-void EvtPyGaGa::decay( EvtParticle *p)
-{
-  EvtPythia::pythiaInit(1);
-  EvtVector4R p4[100];
-  
-  double energy=p->mass();
-  
-  int i,more;
-  int ndaugjs;
-  int kf[100];
-  EvtId id[100];
-  int type[MAX_DAUG];
-  
-  double px[100],py[100],pz[100],e[100];
-  
-  if ( p->getNDaug() != 0 ) { return;}
-  do{
-    EvtPythia::pythiacont(&energy,&ndaugjs,kf,px,py,pz,e);
-    
-    for(i=0;i<ndaugjs;i++)
-      {
-       
-       id[i]=EvtPDL::evtIdFromStdHep(kf[i]);
-       
-       type[i]=EvtPDL::getSpinType(id[i]);
-       
-       // have to protect against negative mass^2 for massless particles
-       // i.e. neutrinos and photons.
-       // this is uggly but I need to fix it right now....
-       
-       if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i])
-         e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
-       
-       p4[i].set(e[i],px[i],py[i],pz[i]);
-       
-      }
-    
-    int channel=EvtDecayTable::inChannelList(p->getId(),ndaugjs,id);
-    
-    more=((channel!=-1)&&(channel!=p->getChannel()));
-    
-  }while(more);
-  
-  p->makeDaughters(ndaugjs,id);
-  
-  for(i=0;i<ndaugjs;i++)
-    p->getDaug(i)->init( id[i], p4[i] );
-  
-  return ;
-}
-
diff --git a/TEvtGen/EvtGenModels/EvtPycont.cxx b/TEvtGen/EvtGenModels/EvtPycont.cxx
deleted file mode 100644 (file)
index 3a94c00..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtPycont.cc
-//
-// Description: Routine to generate e+e- --> q\barq  via Jetset
-//
-// Modification history:
-//
-//    PCK     August 4, 1997        Module created
-//    RS      October 28, 2002      copied from EvtJscont.cc
-//
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include <stdlib.h>
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtPycont.hh"
-#include "EvtGenModels/EvtPythia.hh"
-#include "EvtGenBase/EvtId.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include <string>
-#include <iostream>
-using std::endl;
-
-extern "C" {
-  extern void pystat_(int &);
-  extern struct
-  {
-    int dc[18];
-  } decaych_;
-}
-
-
-
-EvtPycont::~EvtPycont() {
-  //  int i=1;
-  //  pystat_(i);
-}
-
-std::string EvtPycont::getName()
-{
-  return "PYCONT";  
-}
-
-EvtDecayBase* EvtPycont::clone()
-{
-  return new EvtPycont;
-}
-
-void EvtPycont::init()
-{
-  // check that there are 1 argument
-  if ( getNArg() != 12 && getNArg() != 0 ) {
-    report(ERROR,"EvtGen") << "EvtPYCONT expects "
-                          << " 12 arguments (d u s c b t e nu_e mu nu_mu tau nu_tau) but found: "
-                          << getNArg() <<endl;
-
-  }
-  checkNArg(0,12);
-
-   for( int i=0; i<18; i++)
-     decaych_.dc[i]=0;
-   if ( getNArg() == 12 ) {
-     decaych_.dc[0]=(int)getArg(0);
-     decaych_.dc[1]=(int)getArg(1);
-     decaych_.dc[2]=(int)getArg(2);
-     decaych_.dc[3]=(int)getArg(3);
-     decaych_.dc[4]=(int)getArg(4);
-     decaych_.dc[5]=(int)getArg(5);
-     decaych_.dc[10]=(int)getArg(6);
-     decaych_.dc[11]=(int)getArg(7);
-     decaych_.dc[12]=(int)getArg(8);
-     decaych_.dc[13]=(int)getArg(9);
-     decaych_.dc[14]=(int)getArg(10);
-     decaych_.dc[15]=(int)getArg(11);
-   }
-   else{
-     decaych_.dc[0]=1;
-     decaych_.dc[1]=1;
-     decaych_.dc[2]=1;
-     decaych_.dc[3]=1;
-   }
-
-}
-
-void EvtPycont::initProbMax()
-{
-  noProbMax();
-}
-
-void EvtPycont::decay( EvtParticle *p)
-{
-  EvtPythia::pythiaInit(0);
-  EvtVector4R p4[100];
-  
-  double energy=p->mass();
-  
-  int i,more;
-  int ndaugjs;
-  int kf[100];
-  EvtId id[100];
-  int type[MAX_DAUG]; 
-  
-  double px[100],py[100],pz[100],e[100];
-  
-  if ( p->getNDaug() != 0 ) { return;}
-  do{
-    EvtPythia::pythiacont(&energy,&ndaugjs,kf,px,py,pz,e);
-    
-    for(i=0;i<ndaugjs;i++)
-      {
-       
-       id[i]=EvtPDL::evtIdFromStdHep(kf[i]);
-       
-       type[i]=EvtPDL::getSpinType(id[i]);
-       
-       // have to protect against negative mass^2 for massless particles
-       // i.e. neutrinos and photons.
-       // this is uggly but I need to fix it right now....
-       
-       if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i])
-         e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
-       
-       p4[i].set(e[i],px[i],py[i],pz[i]);
-       
-      }
-    
-    int channel=EvtDecayTable::inChannelList(p->getId(),ndaugjs,id);
-    
-    more=((channel!=-1)&&(channel!=p->getChannel()));
-    
-  }while(more);
-  
-  p->makeDaughters(ndaugjs,id);
-  
-  for(i=0;i<ndaugjs;i++)
-    p->getDaug(i)->init( id[i], p4[i] );
-  
-  return ;
-}
-
diff --git a/TEvtGen/EvtGenModels/EvtPycont.hh b/TEvtGen/EvtGenModels/EvtPycont.hh
deleted file mode 100644 (file)
index 95b8fc0..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See BelEvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: BelEvtGen/EvtJscont.hh
-//
-// Description:
-//
-// Modification history:
-//
-//    DJL/RYD     August 11, 1998         Module created
-//    RS          October 28, 2002        copied from JETSET module
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTPYCONT_HH
-#define EVTPYCONT_HH
-
-#include "EvtGenBase/EvtDecayIncoherent.hh"
-#include "EvtGenBase/EvtParticle.hh"
-
-class EvtPycont:public  EvtDecayIncoherent  {
-
-public:
-  
-  EvtPycont() {}
-  virtual ~EvtPycont();
-  
-  std::string getName();
-  EvtDecayBase* clone();
-  
-  void init();
-  void initProbMax();
-  
-  void decay(EvtParticle *p); 
-};
-
-#endif
diff --git a/TEvtGen/EvtGenModels/EvtPythia.cxx b/TEvtGen/EvtGenModels/EvtPythia.cxx
deleted file mode 100644 (file)
index 1d0cdbb..0000000
+++ /dev/null
@@ -1,1095 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See BelEvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: EvtJetSet.cc
-//
-// Description: Routine to use JetSet for decaying particles.
-//
-// Modification history:
-//
-//    RYD     July 24, 1997        Module created
-//    RS      October 28, 2002        copied from JETSET module
-//------------------------------------------------------------------------
-// 
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtStringParticle.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenModels/EvtPythia.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenBase/EvtId.hh"
-#include <iostream>
-#include <iomanip>
-#include <fstream>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-using std::endl;
-using std::fstream;
-using std::ios;
-using std::ofstream;
-using std::resetiosflags;
-using std::setiosflags;
-using std::setw;
-
-using std::string;
-
-int EvtPythia::njetsetdecays=0;
-  EvtDecayBasePtr* EvtPythia::jetsetdecays=0; 
-int EvtPythia::ntable=0;
-
-int EvtPythia::ncommand=0;
-int EvtPythia::lcommand=0;
-std::string* EvtPythia::commands=0;
-
-
-extern "C" {
-  extern void pycontinuum_(double *,int *, int *, 
-                            double *,double *,double *,double *);
-}
-
-extern "C" {
-  extern void evtpythiainit_(const char* fname, int len);
-}
-
-extern "C" {
-  extern void init_cont_();
-}
-
-extern "C" {
-  extern void pythiadec_(int *,double *,int *,int *,int *,
-                         double *,double *,double *,double *);
-}
-
-extern "C" {
-  extern void initpythia_(int *);
-}
-
-extern "C" {
-  extern void pygive_(const char *cnfgstr,int length);
-}
-
-extern "C" {
-  extern int pycomp_(int* kf);
-}
-
-extern "C" {
-  extern void pylist_(int &);
-}
-
-
-EvtPythia::EvtPythia(){}
-
-EvtPythia::~EvtPythia(){
-
-
-  int i;
-
-
-  //the deletion of commands is really uggly!
-
-  if (njetsetdecays==0) {
-    delete [] commands;
-    commands=0;
-    return;
-  }
-
-  for(i=0;i<njetsetdecays;i++){
-    if (jetsetdecays[i]==this){
-      jetsetdecays[i]=jetsetdecays[njetsetdecays-1];
-      njetsetdecays--;
-      if (njetsetdecays==0) {
-       delete [] commands;
-       commands=0;
-      }
-      return;
-    }
-  }
-
-  report(ERROR,"EvtGen") << "Error in destroying Pythia model!"<<endl;
-}
-
-
-std::string EvtPythia::getName(){
-
-  return "PYTHIA";     
-
-}
-
-EvtDecayBase* EvtPythia::clone(){
-
-  return new EvtPythia;
-
-}
-
-
-void EvtPythia::initProbMax(){
-
-  noProbMax();
-
-}
-
-
-void EvtPythia::init(){
-
-  checkNArg(1);
-
-
-  if (getParentId().isAlias()){
-
-    report(ERROR,"EvtGen") << "EvtPythia finds that you are decaying the"<<endl
-                           << " aliased particle "
-                          << EvtPDL::name(getParentId()).c_str()
-                          << " with the Pythia model"<<endl
-                          << " this does not work, please modify decay table."
-                          << endl;
-    report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
-    ::abort();
-
-  }
-
-  store(this);
-
-}
-
-
-std::string EvtPythia::commandName(){
-
-  return std::string("JetSetPar");
-  
-}
-
-
-void EvtPythia::command(std::string cmd){
-
-  if (ncommand==lcommand){
-
-    lcommand=10+2*lcommand;
-
-    std::string* newcommands=new std::string[lcommand];
-    
-    int i;
-
-    for(i=0;i<ncommand;i++){
-      newcommands[i]=commands[i];
-    }
-    
-    delete [] commands;
-
-    commands=newcommands;
-
-  }
-
-  commands[ncommand]=cmd;
-
-  ncommand++;
-
-}
-
-void EvtPythia::pythiacont(double *energy, int *ndaugjs, int *kf,
-                          double *px, double *py, double *pz, double *e)
-{
-  pycontinuum_(energy,ndaugjs,kf,px,py,pz,e);
-}
-
-
-
-void EvtPythia::decay( EvtParticle *p){
-  
-  
-  //added by Lange Jan4,2000
-  static EvtId STRNG=EvtPDL::getId("string");
-  
-  int istdheppar=EvtPDL::getStdHep(p->getId());
-  
-  if (pycomp_(&istdheppar)==0){
-    report(ERROR,"EvtGen") << "Pythia can not decay:"
-      <<EvtPDL::name(p->getId()).c_str()<<endl;
-    return;
-  }
-  
-  double mp=p->mass();
-  
-  EvtVector4R p4[20];
-  
-  int i,more;
-  int ip=EvtPDL::getStdHep(p->getId());
-  int ndaugjs;
-  int kf[100];
-  EvtId evtnumstable[100],evtnumparton[100];
-  int stableindex[100],partonindex[100];
-  int numstable;
-  int numparton;
-  int km[100];
-  EvtId type[MAX_DAUG];
-  
-  pythiaInit(0);
-  
-  double px[100],py[100],pz[100],e[100];
-  if ( p->getNDaug() != 0 ) { p->deleteDaughters(true);}
-  
-  int count=0;
-  
-  do{
-    
-    pythiadec_(&ip,&mp,&ndaugjs,kf,km,px,py,pz,e);
-    
-    
-    numstable=0;
-    numparton=0;
-    
-    for(i=0;i<ndaugjs;i++){
-      
-      if (EvtPDL::evtIdFromStdHep(kf[i])==EvtId(-1,-1)) {
-       report(ERROR,"EvtGen") << "Pythia returned particle:"<<kf[i]<<endl;
-       report(ERROR,"EvtGen") << "This can not be translated to evt number"<<endl;
-       report(ERROR,"EvtGen") << "and the decay will be rejected!"<<endl;
-       report(ERROR,"EvtGen") << "The decay was of particle:"<<ip<<endl;
-       int i=1;
-       pylist_(i);
-      }
-
-      //sort out the partons
-      if (abs(kf[i])<=6||kf[i]==21){
-       partonindex[numparton]=i;
-       evtnumparton[numparton]=EvtPDL::evtIdFromStdHep(kf[i]);
-       numparton++;
-      }
-      else{
-       stableindex[numstable]=i;
-       evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(kf[i]); 
-       numstable++;
-      }
-      
-      
-      // have to protect against negative mass^2 for massless particles
-      // i.e. neutrinos and photons.
-      // this is uggly but I need to fix it right now....
-      
-      if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){
-       
-        e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
-       
-      }
-      
-      p4[i].set(e[i],px[i],py[i],pz[i]);
-      
-      
-    }
-    
-    int channel=EvtDecayTable::inChannelList(p->getId(),numstable,evtnumstable);
-    
-    
-   more=(channel!=-1);
-   
-   
-   
-   
-   count++;
-   
-  }while( more && (count<10000) );
-  
-  if (count>9999) {
-    report(INFO,"EvtGen") << "Too many loops in EvtPythia!!!"<<endl;
-    report(INFO,"EvtGen") << "Parent:"<<EvtPDL::name(getParentId()).c_str()<<endl;
-    for(i=0;i<numstable;i++){
-      report(INFO,"EvtGen") << "Daug("<<i<<")"<<EvtPDL::name(evtnumstable[i]).c_str()<<endl;
-    }
-    
-  }
-  
-  
-  
-  if (numparton==0){
-    
-    p->makeDaughters(numstable,evtnumstable);
-    
-    for(i=0;i<numstable;i++){
-      p->getDaug(i)->init(evtnumstable[i],p4[stableindex[i]]);
-    }
-    
-    fixPolarizations(p);
-    
-    return ;
-   
-  }
-  else{
-    
-    //have partons in JETSET
-    
-    EvtVector4R p4string(0.0,0.0,0.0,0.0);
-    
-    for(i=0;i<numparton;i++){
-      p4string+=p4[partonindex[i]];
-    }
-    
-    int nprimary=1;
-    type[0]=STRNG;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]==0){
-       type[nprimary++]=evtnumstable[i];
-      }
-    }
-    
-    p->makeDaughters(nprimary,type);
-    
-    p->getDaug(0)->init(STRNG,p4string);
-    
-    EvtVector4R p4partons[10];
-    
-    for(i=0;i<numparton;i++){
-      p4partons[i]=p4[partonindex[i]];
-    }
-    
-    ((EvtStringParticle*)p->getDaug(0))->initPartons(numparton,p4partons,evtnumparton);
-    
-    
-    
-    nprimary=1;
-    
-    for(i=0;i<numstable;i++){
-      
-      if (km[stableindex[i]]==0){
-       p->getDaug(nprimary++)->init(evtnumstable[i],p4[stableindex[i]]);
-      }
-    }
-    
-    
-    int nsecond=0;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]!=0){
-       type[nsecond++]=evtnumstable[i];
-      }
-    }
-    
-    
-    p->getDaug(0)->makeDaughters(nsecond,type);
-    
-    nsecond=0;
-    for(i=0;i<numstable;i++){
-      if (km[stableindex[i]]!=0){
-       p4[stableindex[i]]=boostTo(p4[stableindex[i]],p4string);
-       p->getDaug(0)->getDaug(nsecond)->init(evtnumstable[i],p4[stableindex[i]]);
-       p->getDaug(0)->getDaug(nsecond)->setDiagonalSpinDensity();
-       p->getDaug(0)->getDaug(nsecond)->decay();
-       nsecond++;
-      }
-    }
-    
-    fixPolarizations(p);
-    
-    return ;
-    
-  }
-
-}
-
-void EvtPythia::fixPolarizations(EvtParticle *p){
-
-  //special case for now to handle the J/psi polarization
-
-  int ndaug=p->getNDaug();
-  
-  int i;
-
-  static EvtId Jpsi=EvtPDL::getId("J/psi");
-
-  for(i=0;i<ndaug;i++){
-    if(p->getDaug(i)->getId()==Jpsi){
-  
-      EvtSpinDensity rho;
-      
-      rho.setDim(3);
-      rho.set(0,0,0.5);
-      rho.set(0,1,0.0);
-      rho.set(0,2,0.0);
-
-      rho.set(1,0,0.0);
-      rho.set(1,1,1.0);
-      rho.set(1,2,0.0);
-
-      rho.set(2,0,0.0);
-      rho.set(2,1,0.0);
-      rho.set(2,2,0.5);
-
-      EvtVector4R p4Psi=p->getDaug(i)->getP4();
-
-      double alpha=atan2(p4Psi.get(2),p4Psi.get(1));
-      double beta=acos(p4Psi.get(3)/p4Psi.d3mag());
-
-
-      p->getDaug(i)->setSpinDensityForwardHelicityBasis(rho,alpha,beta,0.0);
-      setDaughterSpinDensity(i);
-
-    }
-  }
-
-}
-
-void EvtPythia::store(EvtDecayBase* jsdecay){
-
-  if (njetsetdecays==ntable){
-
-    EvtDecayBasePtr* newjetsetdecays=new EvtDecayBasePtr[2*ntable+10];
-    int i;
-    for(i=0;i<ntable;i++){
-      newjetsetdecays[i]=jetsetdecays[i];
-    }
-    ntable=2*ntable+10;
-    delete [] jetsetdecays;
-    jetsetdecays=newjetsetdecays;
-  }
-
-  jetsetdecays[njetsetdecays++]=jsdecay;
-
-
-
-}
-
-
-void EvtPythia::WritePythiaEntryHeader(ofstream &outdec, int lundkc,
-                              EvtId evtnum,std::string name,
-                              int chg, int cchg, int spin2,double mass,
-                              double width, double maxwidth,double ctau,
-                              int stable,double rawbrfrsum){
-
-  char sname[100];
-  char ccsname[100];
-  
-  // RS changed to 16, new PYTHIA standard
-  int namelength=16;
-  
-  int i,j;
-  int temp;
-  temp = spin2;
-
-  if (ctau>1000000.0) ctau=0.0;
-  
-  strcpy(sname,name.c_str());
-  
-  i=0;
-
-  while (sname[i]!=0){
-    i++;
-  }
-
-  // strip up to two + or -
-  if(evtnum.getId()>=0) {
-    if (sname[i-1]=='+'||sname[i-1]=='-'){ 
-      sname[i-1]=0;
-      i--;
-    }
-    if (sname[i-1]=='+'||sname[i-1]=='-'){ 
-      sname[i-1]=0;
-      i--;
-    }
-    // strip 0 except for _0 and chi...0
-    if (sname[i-1]=='0' && sname[i-2]!='_' && !(sname[0]=='c' && sname[1]=='h')){
-      sname[i-1]=0;
-      i--;
-    }
-  }
-  
-  if (i>namelength) {
-    for(j=1;j<namelength;j++){
-      sname[j]=sname[j+i-namelength];
-    }
-    sname[namelength]=0;
-  }
-  
-  // RS: copy name for cc particle
-  for(j=0;j<=namelength;j++)
-    ccsname[j]=sname[j];
-  i=0;
-  while (ccsname[i]!=' '){
-    i++;
-    if(ccsname[i]==0) break;
-  }
-  if(i<namelength)
-    {
-      ccsname[i]='b';
-      ccsname[i+1]=0;
-    }
-  
-  //cchg=0;
-  
-  if(evtnum.getId()>=0) {
-    if (abs(EvtPDL::getStdHep(evtnum))==21) cchg=2;
-    if (abs(EvtPDL::getStdHep(evtnum))==90) cchg=-1;
-    if ((abs(EvtPDL::getStdHep(evtnum))<=8)&&
-       (abs(EvtPDL::getStdHep(evtnum))!=0)) cchg=1;
-
-  }
-  
-  // RS output format changed to new PYTHIA style
-  outdec << " " << setw(9) << lundkc;
-  outdec << "  ";
-  outdec.width(namelength);
-  outdec << setiosflags(ios::left)
-        << sname;
-  // RS: name for cc paricle
-  if ((evtnum.getId()>=0) && (EvtPDL::chargeConj(evtnum)!=evtnum))
-    {
-      outdec << "  ";
-      outdec.width(namelength);
-      outdec << ccsname;
-    }else{
-      // 2+16 spaces
-      outdec << "                  ";
-    }
-  
-  outdec << resetiosflags(ios::left);
-  outdec << setw(3) << chg;
-  outdec << setw(3) << cchg;
-  outdec.width(3);
-  if (evtnum.getId()>=0) {
-    if (EvtPDL::chargeConj(evtnum)==evtnum) {
-      outdec << 0;
-    }
-    else{
-      outdec << 1;
-    }
-  }
-  else{
-    outdec << 0;
-  }
-  outdec.setf(ios::fixed,ios::floatfield);
-  outdec.precision(5);
-  outdec << setw(12) << mass;
-  outdec.setf(ios::fixed,ios::floatfield);
-  outdec << setw(12) << width;
-  outdec.setf(ios::fixed,ios::floatfield);
-  outdec.width(12);
-  if (fabs(width)<0.0000000001) {
-    outdec << 0.0 ;
-  }
-  else{
-    outdec << maxwidth;
-  }
-  // scientific notation ...  outdec << setw(14) << ctau;
-  outdec.setf(ios::scientific,ios::floatfield);
-  outdec << "  ";
-  outdec << ctau;
-  outdec.width(3);
-  if (evtnum.getId()>=0) {
-    if (ctau>1.0 || rawbrfrsum<0.000001) {  
-      stable=0;
-    }
-  }
-  //resonance width treatment
-  outdec.width(3);
-  outdec << 0;
-  outdec.width(3);
-  outdec << stable;
-  outdec << endl;
-  outdec.width(0);
-  //outdec.setf(0,0);
-
-}
-
-void EvtPythia::WritePythiaParticle(ofstream &outdec,EvtId ipar,
-                                   EvtId iparname,int &first){
-
-  int ijetset;
-
-  double br_sum=0.0;
-
-  for(ijetset=0;ijetset<njetsetdecays;ijetset++){
-   
-    if (jetsetdecays[ijetset]->getParentId()==ipar){
-      br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
-    }
-    if (jetsetdecays[ijetset]->getParentId()!=
-       EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())&&
-       EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())==ipar){
-      br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
-    }
-
-
-  }
-
-  double br_sum_true=br_sum;
-
-  if (br_sum<0.000001) br_sum=1.0;
-  
-  for(ijetset=0;ijetset<njetsetdecays;ijetset++){
-    if (jetsetdecays[ijetset]->getParentId()==ipar){
-      
-      double br=jetsetdecays[ijetset]->getBranchingFraction();
-      
-      int i,daugs[5];
-      EvtId cdaugs[5];
-      
-      for(i=0;i<5;i++){
-       
-       if(i<jetsetdecays[ijetset]->getNDaug()){
-         daugs[i]=EvtPDL::getStdHep(
-                        jetsetdecays[ijetset]->getDaugs()[i]);
-         cdaugs[i]=EvtPDL::chargeConj(jetsetdecays[ijetset]->getDaugs()[i]);
-       }
-       else{
-         daugs[i]=0;
-       }
-      }
-      
-      int channel;
-      
-      channel=EvtDecayTable::findChannel(EvtPDL::chargeConj(ipar),
-                            jetsetdecays[ijetset]->getModelName(),
-                            jetsetdecays[ijetset]->getNDaug(),
-                            cdaugs,
-                            jetsetdecays[ijetset]->getNArg(),
-                            jetsetdecays[ijetset]->getArgsStr());     
-      
-      if (jetsetdecays[ijetset]->getModelName()=="PYTHIA"){
-       
-       if (first) {
-         first=0;      
-         WritePythiaEntryHeader(outdec,
-                                //EvtPDL::getLundKC(iparname),
-                                EvtPDL::getStdHep(iparname),
-                                iparname,
-                                EvtPDL::name(iparname), 
-                                EvtPDL::chg3(iparname),
-                                0,0,EvtPDL::getMeanMass(ipar),
-                                EvtPDL::getWidth(ipar),
-                                EvtPDL::getMeanMass(ipar)-EvtPDL::getMinMass(ipar),
-                                EvtPDL::getctau(ipar),1,br_sum_true);
-       }
-       
-       int dflag=2;
-       
-       if (EvtPDL::getStdHep(ipar)<0) {
-         dflag=3;
-         for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-           daugs[i]=EvtPDL::getStdHep(cdaugs[i]);
-         }
-         
-       }
-       
-       /* RS
-         PYTHIA allows to introduce new particles via a call to PYUPDA
-         so no need for this check any more
-         
-         //now lets check to make sure that jetset, lucomp, knows
-         //about all particles!
-         int unknown=0;
-         for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-         if (pycomp_(&daugs[i])==0) {
-         unknown=1;
-         report(ERROR,"EvtGen") << "Pythia (pycomp) does not "
-         << "know the particle:"<<
-         EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i])<<endl;
-         }
-         }
-         
-         int istdheppar=EvtPDL::getStdHep(ipar);
-         
-         if (pycomp_(&istdheppar)==0){
-         unknown=1;
-         report(ERROR,"EvtGen") << "Pythia (pycomp) does not "
-         << "know the particle:"<<
-         EvtPDL::name(ipar)<<endl;
-         }
-         
-         
-         
-         if (unknown){
-         report(ERROR,"EvtGen") << "Therfore the decay:"<<endl;
-         report(ERROR,"EvtGen") << EvtPDL::name(jetsetdecays[ijetset]->getParentId())<<" -> ";
-         for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
-         report(ERROR,"") << EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i])<<" ";
-         }
-         report(ERROR,"")<<endl;
-         report(ERROR,"EvtGen")<<"Will not be generated."<<endl;
-         return;
-         }
-         */
-       
-       if (EvtPDL::chargeConj(ipar)==ipar) {
-         dflag=1;
-         //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because C(ipar)=ipar!"<<endl;
-       }
-       
-       
-       //if (channel>=0) {
-       //  dflag=1;
-       //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because channel>=0"<<endl;
-       //}
-       
-       //      if (!(EvtPDL::getStdHep(ipar)<0&&channel>=0)){
-       if (1){
-         
-         // RS changed format to new PYTHIA one
-         outdec << "          ";
-         outdec.width(5);
-         outdec <<dflag;
-         outdec.width(5);
-         outdec <<(int)jetsetdecays[ijetset]->getArgs()[0];
-         outdec.width(12);
-         if (fabs(br)<0.000000001) {
-           outdec <<"0.00000";
-         }
-         else{
-           outdec <<br/br_sum;
-         }
-         outdec.width(10);
-         outdec <<daugs[0];
-         outdec.width(10);
-         outdec <<daugs[1];
-         outdec.width(10);
-         outdec <<daugs[2];
-         outdec.width(10);
-         outdec <<daugs[3];
-         outdec.width(10);
-         outdec <<daugs[4];
-         outdec<<endl;
-         outdec.width(0);
-       }
-      }
-    }
-  }
-}
-
-bool
-EvtPythia::diquark(int ID)
-{
-  switch(ID)
-    {
-    case 1103:
-    case 2101:
-    case 2103:
-    case 2203:
-    case 3101:
-    case 3103:
-    case 3201:
-    case 3203:
-    case 3303:
-    case 4101:
-    case 4103:
-    case 4201:
-    case 4203:
-    case 4301:
-    case 4303:
-    case 4403:
-    case 5101:
-    case 5103:
-    case 5201:
-    case 5203:
-    case 5301:
-    case 5303:
-    case 5401:
-    case 5403:
-    case 5503:
-      return true;
-      break;
-    default:
-      return false;
-      break;
-    }
-}
-
-double
-EvtPythia::NominalMass(int ID)
-{
-  // return default mass in PYTHIA
-  switch(ID)
-    {
-    case 1103:
-      return 0.77133;
-    case 2101:
-      return 0.57933;
-    case 2103:
-      return 0.77133;
-    case 2203:
-      return 0.77133;
-    case 3101:
-      return 0.80473;
-    case 3103:
-      return 0.92953;
-    case 3201:
-      return 0.80473;
-    case 3203:
-      return 0.92953;
-    case 3303:
-      return 1.09361;
-    case 4101:
-      return 1.96908;
-    case 4103:
-      return 2.00808;
-    case 4201:
-      return 1.96908;
-    case 4203:
-      return 2.00808;
-    case 4301:
-      return 2.15432;
-    case 4303:
-      return 2.17967;
-    case 4403:
-      return 3.27531;
-    case 5101:
-      return 5.38897;
-    case 5103:
-      return 5.40145;
-    case 5201:
-      return 5.38897;
-    case 5203:
-      return 5.40145;
-    case 5301:
-      return 5.56725;
-    case 5303:
-      return 5.57536;
-    case 5401:
-      return 6.67143;
-    case 5403:
-      return 6.67397;
-    case 5503:
-      return 10.07354;
-      break;
-    default:
-      return 0.0;
-      break;
-    }
-}
-
-int
-NominalCharge(int ID)
-{
-  // return default mass in PYTHIA
-  switch(ID)
-    {
-    case 1103:
-      return -2;
-    case 2101:
-      return  1;
-    case 2103:
-      return  1;
-    case 2203:
-      return  4;
-    case 3101:
-      return -2;
-    case 3103:
-      return -2;
-    case 3201:
-      return  1;
-    case 3203:
-      return  1;
-    case 3303:
-      return -2;
-    case 4101:
-      return  1;
-    case 4103:
-      return  1;
-    case 4201:
-      return  4;
-    case 4203:
-      return  4;
-    case 4301:
-      return  1;
-    case 4303:
-      return  1;
-    case 4403:
-      return  4;
-    case 5101:
-      return -2;
-    case 5103:
-      return -2;
-    case 5201:
-      return  1;
-    case 5203:
-      return  1;
-    case 5301:
-      return -2;
-    case 5303:
-      return -2;
-    case 5401:
-      return  1;
-    case 5403:
-      return  1;
-    case 5503:
-      return -2;
-      break;
-    default:
-      return 0;
-      break;
-    }
-}
-
-void EvtPythia::MakePythiaFile(char* fname){
-  
-  EvtId ipar;
-  int lundkc;
-  
-  //int part_list[MAX_PART];
-  
-  ofstream outdec;
-  
-  outdec.open(fname);
-  
-  //outdec << "ERROR;"<<endl;
-  //outdec << ";"<<endl;
-  //outdec << ";This decayfile has been automatically created by"<<endl;
-  //outdec << ";EvtGen from the DECAY.DEC file"<<endl;
-  //outdec << ";"<<endl;
-  
-  int nokcentry;
-  
-  for(lundkc=1;lundkc<500;lundkc++){
-    
-    nokcentry=1;
-    
-    for(size_t iipar=0;iipar<EvtPDL::entries();iipar++){
-      
-      ipar=EvtId(iipar,iipar);
-      //no aliased particles!
-      std::string tempStr = EvtPDL::name(ipar);
-      EvtId realId = EvtPDL::getId(tempStr);
-      if ( realId.isAlias() != 0 ) continue;
-      
-      if(!(
-              EvtPDL::getStdHep(ipar)==21 ||
-              EvtPDL::getStdHep(ipar)==22 ||
-              EvtPDL::getStdHep(ipar)==23))
-       {
-         
-         if (lundkc==EvtPDL::getLundKC(ipar)){
-           
-           nokcentry=0;
-           
-           int first=1;
-           
-           WritePythiaParticle(outdec,ipar,ipar,first);
-           
-           
-           EvtId ipar2=EvtPDL::chargeConj(ipar);
-           
-           
-           if (ipar2!=ipar){
-             WritePythiaParticle(outdec,ipar2,ipar,first);
-           }
-           
-           if (first){
-             WritePythiaEntryHeader(outdec, 
-                                    //EvtPDL::getLundKC(ipar),
-                                    EvtPDL::getStdHep(ipar),
-                                    ipar,
-                                    EvtPDL::name(ipar),
-                                    EvtPDL::chg3(ipar),
-                                    0,0,EvtPDL::getMeanMass(ipar),
-                                    EvtPDL::getWidth(ipar),
-                                    EvtPDL::getMeanMass(ipar)-EvtPDL::getMinMass(ipar),
-                                    EvtPDL::getctau(ipar),0,0.0);
-             
-           }
-         }
-       }
-    }
-    if (lundkc==99999) // Write out diquarks after quarks, but only once
-      for(size_t iipar=0;iipar<EvtPDL::entries();iipar++){
-       
-       ipar=EvtId(iipar,iipar);
-       
-       if (diquark(EvtPDL::getStdHep(ipar))){
-         
-         nokcentry=0;
-         
-         int first=1;
-         
-         WritePythiaParticle(outdec,ipar,ipar,first);
-         
-         
-         EvtId ipar2=EvtPDL::chargeConj(ipar);
-         
-         
-         if (ipar2!=ipar){
-           WritePythiaParticle(outdec,ipar2,ipar,first);
-         }
-         
-         if (first){
-           WritePythiaEntryHeader(outdec, 
-                                  EvtPDL::getStdHep(ipar),
-                                  ipar,
-                                  EvtPDL::name(ipar),
-                                  NominalCharge(EvtPDL::getStdHep(ipar)),
-                                  -1,0,
-                                  NominalMass(EvtPDL::getStdHep(ipar)),
-                                  0, 0, 0, 0,0.0);
-           
-         }
-       }
-      }
-    /* if (nokcentry){
-       
-       WritePythiaEntryHeader(outdec, 
-       lundkc,EvtId(-1,-1),"  ",
-       0,0,0,EvtPDL::getNominalMass(ipar),0.0,0.0,
-       EvtPDL::getctau(ipar),0,0.0);
-       
-       } */
-  }
-  outdec.close();
-}
-
-void EvtPythia::pythiaInit(int dummy){
-  
-  //static int first=1; 
-  static int first=0; //if first=0 Pythia is not reinitialize   
-  if (first){
-    
-    first=0;
-    
-    report(INFO,"EvtGen") << "Will initialize Pythia."<<endl;
-    for(int i=0;i<ncommand;i++)
-      pygive_(commands[i].c_str(),strlen(commands[i].c_str()));
-    
-    char fname[200];
-    
-    char hostBuffer[100];
-    
-    if ( gethostname( hostBuffer, 100 ) != 0 ){
-      report(ERROR,"EvtGen") << " couldn't get hostname." << endl;
-      strncpy( hostBuffer, "hostnameNotFound", 100 );
-    }
-    
-    char pid[100];
-    
-    int thePid=getpid();
-    
-    if ( sprintf( pid, "%d", thePid ) == 0 ){
-      report(ERROR,"EvtGen") << " couldn't get process ID." << endl;
-      strncpy( pid, "666", 100 );
-    }
-    
-    strcpy(fname,"jet.d-");
-    strcat(fname,hostBuffer);
-    strcat(fname,"-");
-    strcat(fname,pid);
-    
-    MakePythiaFile(fname);
-    evtpythiainit_(fname,strlen(fname));
-    initpythia_(&dummy);
-    
-    if (0==getenv("EVTSAVEJETD")){
-      char delcmd[300];
-      strcpy(delcmd,"rm -f ");
-      strcat(delcmd,fname);
-      system(delcmd);
-    }
-    
-    report(INFO,"EvtGen") << "Done initializing Pythia."<<endl;
-    
-  }
-
-}
diff --git a/TEvtGen/EvtGenModels/EvtPythia.hh b/TEvtGen/EvtGenModels/EvtPythia.hh
deleted file mode 100644 (file)
index 1dc8cd6..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-//      This software is part of the EvtGen package developed jointly
-//      for the BaBar and CLEO collaborations.  If you use all or part
-//      of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See BelEvtGen/COPYRIGHT
-//      Copyright (C) 1998      Caltech, UCSB
-//
-// Module: BelEvtGen/EvtJetSet.hh
-//
-// Description:
-//
-// Modification history:
-//
-//    DJL/RYD     August 11, 1998         Module created
-//    RS          October 28, 2002        copied from JETSET module
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTPYTHIA_HH
-#define EVTPYTHIA_HH
-
-#include "EvtGenBase/EvtDecayIncoherent.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include <string>
-
-#include <iosfwd>
-
-typedef EvtDecayBase* EvtDecayBasePtr;
-
-class EvtPythia:public  EvtDecayIncoherent  {
-
-public:
-
-  EvtPythia();
-  virtual ~EvtPythia();
-  
-  std::string getName();
-  EvtDecayBase* clone();
-  void decay(EvtParticle *p); 
-  
-  std::string commandName();
-  void command(std::string cmd);
-  
-  void init();
-  
-  void initProbMax();
-  
-  //initialize jetset; sets up decay table and
-  //paramters. Static so it can be invoked from
-  //from EvtJscont.
-  static void pythiaInit(int f);
-  static void pythiacont(double *,int *, int *,
-                        double *,double *,double *,double *);
-  
-private:
-  
-  void store(EvtDecayBase* jsdecay);
-  void fixPolarizations(EvtParticle* p);
-  static void MakePythiaFile(char* fname);
-  static void WritePythiaParticle(std::ofstream &outdec,EvtId ipar,EvtId iparname,int &first);
-  static void WritePythiaEntryHeader(std::ofstream &outdec, int lundkc,
-                                    EvtId evtnum,std::string name,
-                                    int chg, int cchg, int spin2,double mass,
-                                    double width, double maxwidth,double ctau,
-                                    int stable,double rawbrfrsum);
-  static bool diquark(int);
-  static double NominalMass(int);
-  static int njetsetdecays;
-  static EvtDecayBasePtr* jetsetdecays;
-  static int ntable;
-  
-  static int ncommand;
-  static int lcommand;
-  static std::string* commands;
-};
-
-#endif
-
-
-
-
similarity index 88%
rename from TEvtGen/EvtGenModels/EvtSLBKPoleFF.cxx
rename to TEvtGen/EvtGenModels/EvtSLBKPoleFF.cpp
index f63e5f5cc30280c70244377250a0979ca69e29b8..fb490fe3678edaabdbb8f20f0eab8d5406be8437 100644 (file)
@@ -37,7 +37,7 @@ EvtSLBKPoleFF::EvtSLBKPoleFF(int numarg, double *arglist) {//modified
 
 
 void EvtSLBKPoleFF::getscalarff(EvtId parent,EvtId daught,
-                       double t, double mass, double *fpf,
+                       double t, double /*mass*/, double *fpf,
                            double *f0f ) {
 
 // Form factors have a general form, with parameters passed in
@@ -74,8 +74,8 @@ void EvtSLBKPoleFF::getscalarff(EvtId parent,EvtId daught,
   return;
 }
 
-void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId daught,
-                       double t, double mass, double *a1f,
+void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId /*daught*/,
+                       double t, double /*mass*/, double *a1f,
                             double *a2f, double *vf, double *a0f ){
 
    if ( numSLBKPoleargs !=8 ) {//modified
@@ -114,8 +114,8 @@ void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId daught,
   static EvtId DPMS=EvtPDL::getId("D*+");
   static EvtId DSPMS=EvtPDL::getId("D_s*+");
 
-  double mass_star;
-  double mass_star2;
+  double mass_star=0.0;
+  double mass_star2=0.0;
   if(parent==B0||parent==B0B){
      mass_star=EvtPDL::getMeanMass(B0S);
      mass_star2=mass_star*mass_star;
@@ -176,8 +176,8 @@ void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId daught,
 
 
 
-void EvtSLBKPoleFF::gettensorff(EvtId parent,EvtId daught,
-                       double t, double mass, double *hf,
+void EvtSLBKPoleFF::gettensorff(EvtId parent,EvtId /*daught*/,
+                       double t, double /*mass*/, double *hf,
                             double *kf, double *bpf, double *bmf ){
 
   if ( numSLBKPoleargs !=16 ) {
@@ -229,4 +229,20 @@ void EvtSLBKPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
 
 }
 
+void EvtSLBKPoleFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                              double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtSLBKPoleFF.\n";
+  ::abort();
+
+}
+
+void EvtSLBKPoleFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                               double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtSLBKPoleFF.\n";
+  ::abort();
+
+}
+
 
index ee5d7369654db75337f6d1d5f86e04e68fe80ad3..818a33fddc044d2ab47194209aff728e9936e216 100644 (file)
@@ -42,6 +42,11 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
 
 private:
    int numSLBKPoleargs;//modified
similarity index 90%
rename from TEvtGen/EvtGenModels/EvtSLPoleFF.cxx
rename to TEvtGen/EvtGenModels/EvtSLPoleFF.cpp
index 4a9d957875bcfc0c2e67695b33a276a5cc88224b..613a1476dd6126c8e5bfda1d6605282899071af0 100644 (file)
@@ -168,3 +168,19 @@ void EvtSLPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
 
 }
 
+void EvtSLPoleFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
+                            double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtSLPoleFF.\n";
+  ::abort();
+
+}
+
+void EvtSLPoleFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                             double*, double*, double*, double*, double*, double*) {
+  
+  report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtSLPoleFF.\n";
+  ::abort();
+
+}
+
index 8b408f1a9bd3bde4b8d993d98e1c259c57423db9..88b50875751af1c9181f5aec2eaf5ea9c8a722fd 100644 (file)
@@ -41,6 +41,12 @@ public:
   void getbaryonff(EvtId, EvtId, double, double, double*, 
                   double*, double*, double*);
 
+  void getdiracff(EvtId, EvtId, double, double, double*, double*,
+                  double*, double*, double*, double*);
+
+  void getraritaff(EvtId, EvtId, double, double, double*, double*, 
+                  double*, double*, double*, double*, double*, double*);
+
 private:
    int numSLPoleargs;
    double SLPoleargs[16];
similarity index 87%
rename from TEvtGen/EvtGenModels/EvtSSDCP.cxx
rename to TEvtGen/EvtGenModels/EvtSSDCP.cpp
index f2300281529fab92e1b2e05a04ffcf6c0a5ceb69..f7e2afa5db607de1f002eb6bcda5eb890bcf2764 100644 (file)
@@ -29,6 +29,7 @@
 #include "EvtGenBase/EvtVector4C.hh"
 #include "EvtGenBase/EvtTensor4C.hh"
 #include "EvtGenModels/EvtSSDCP.hh"
+#include "EvtGenBase/EvtIncoherentMixing.hh"
 #include <string>
 #include "EvtGenBase/EvtConst.hh"
 using std::endl;
@@ -205,13 +206,14 @@ void EvtSSDCP::decay( EvtParticle *p){
   EvtComplex amp;
 
 
-  EvtCPUtil::OtherB(p,t,other_b,0.5); // t is c*Dt (mm)
-
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5); // t is c*Dt (mm)
+//  EvtIncoherentMixing::OtherB( p , t , other_b , 0.5 ) ;
+  
   //if (flip) t=-t;
 
   //FS We assume DGamma=GammaLow-GammaHeavy and Dm=mHeavy-mLow
-  EvtComplex expL=exp(-EvtComplex(-0.25*_dgamma*t,0.5*_dm*t));
-  EvtComplex expH=exp(EvtComplex(-0.25*_dgamma*t,0.5*_dm*t));
+  EvtComplex expH=exp(-EvtComplex(-0.25*_dgamma*t,0.5*_dm*t));
+  EvtComplex expL=exp(EvtComplex(-0.25*_dgamma*t,0.5*_dm*t));
   //FS Definition of gp and gm
   EvtComplex gp=0.5*(expL+expH);
   EvtComplex gm=0.5*(expL-expH);
@@ -233,22 +235,22 @@ void EvtSSDCP::decay( EvtParticle *p){
     if (other_b==B0B||other_b==B0Bs){
       //at t=0 we have a B0
       //report(INFO,"EvtGen") << "B0B"<<endl;
-      amp=BB*_A_f+BbarB*_Abar_f;
+      amp=BB*_A_f+barBB*_Abar_f;
       //std::cout << "noflip B0B tag:"<<amp<<std::endl;
       //amp=0.0;
     }
     if (other_b==B0||other_b==B0s){
       //report(INFO,"EvtGen") << "B0"<<endl;
-      amp=barBB*_A_f+barBbarB*_Abar_f;
+      amp=BbarB*_A_f+barBbarB*_Abar_f;
     }
   }else{
     if (other_b==B0||other_b==B0s){
-      amp=barBB*_A_fbar+barBbarB*_Abar_fbar;
+      amp=BbarB*_A_fbar+barBbarB*_Abar_fbar;
       //std::cout << "flip B0 tag:"<<amp<<std::endl;
       //amp=0.0;
     }
     if (other_b==B0B||other_b==B0Bs){
-      amp=BB*_A_fbar+BbarB*_Abar_fbar;
+      amp=BB*_A_fbar+barBB*_Abar_fbar;
     }
   }
 
@@ -311,3 +313,54 @@ void EvtSSDCP::decay( EvtParticle *p){
   return ;
 }
 
+std::string EvtSSDCP::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "deltaM";
+  case 1:
+    return "deltaGammaOverGamma";
+  case 2:
+    return "qOverP";
+  case 3:
+    return "qOverPPhase";
+  case 4:
+    return "Af";
+  case 5:
+    return "AfPhase";
+  case 6:
+    return "Abarf";
+  case 7:
+    return "AbarfPhase";
+  case 8:
+    return "Afbar";
+  case 9:
+    return "AfbarPhase";
+  case 10:
+    return "Abarfbar";
+  case 11:
+    return "AbarfbarPhase";
+  case 12:
+    return "Z";
+  case 13:
+    return "ZPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtSSDCP::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "0.0";
+  case 4:
+    return "1.0";
+  case 5:
+    return "0.0";
+  case 6:
+    return "1.0";
+  case 7:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 72a2da3a70e33769b5e80754c9b91a3c2e0a1d94..842a2427c9bf5496a7bad063ed0628616a74f21e 100644 (file)
@@ -41,6 +41,9 @@ public:
   void init();
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
+
 private:
 
   //Arguments
diff --git a/TEvtGen/EvtGenModels/EvtSSD_DirectCP.cpp b/TEvtGen/EvtGenModels/EvtSSD_DirectCP.cpp
new file mode 100644 (file)
index 0000000..29f6162
--- /dev/null
@@ -0,0 +1,194 @@
+// $Id: EvtSSD_DirectCP.cpp,v 1.2 2009-03-16 16:24:05 robbep Exp $
+// Generation of direct CP violation in hadronic environment
+// Patrick Robbe, LHCb,  08 Nov 2006
+// 
+#include <stdlib.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtRandom.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtCPUtil.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+#include "EvtGenModels/EvtSSD_DirectCP.hh"
+#include <string>
+#include "EvtGenBase/EvtConst.hh"
+
+EvtSSD_DirectCP::~EvtSSD_DirectCP() {}
+
+std::string EvtSSD_DirectCP::getName( ){
+
+  return "SSD_DirectCP" ;
+
+}
+
+
+EvtDecayBase* EvtSSD_DirectCP::clone(){
+
+  return new EvtSSD_DirectCP;
+
+}
+
+void EvtSSD_DirectCP::init(){
+
+  // check that there is 1 argument and 2-body decay
+
+  checkNArg(1);
+  checkNDaug(2);
+
+  EvtSpinType::spintype d1type=EvtPDL::getSpinType(getDaug(0));
+  EvtSpinType::spintype d2type=EvtPDL::getSpinType(getDaug(1));
+  
+  if ( (!(d1type == EvtSpinType::SCALAR || d2type == EvtSpinType::SCALAR))||
+       (!((d2type==EvtSpinType::SCALAR)||(d2type==EvtSpinType::VECTOR)||
+          (d2type==EvtSpinType::TENSOR)))||
+       (!((d1type==EvtSpinType::SCALAR)||(d1type==EvtSpinType::VECTOR)||
+          (d1type==EvtSpinType::TENSOR)))
+       ) {
+    report(ERROR,"EvtGen") << "EvtSSD_DirectCP generator expected "
+                           << "one of the daugters to be a scalar, "
+                           << "the other either scalar, vector, or tensor, "
+                           << "found:"
+                           << EvtPDL::name(getDaug(0)).c_str()
+                           <<" and "
+                           <<EvtPDL::name(getDaug(1)).c_str()<<std::endl;
+    report(ERROR,"EvtGen") << "Will terminate execution!"<<std::endl;
+    ::abort();
+  }
+  
+  _acp = getArg( 0 ) ; // A_CP defined as A_CP = (BR(fbar)-BR(f))/(BR(fbar)+BR(f))
+
+}
+
+void EvtSSD_DirectCP::initProbMax() {
+  double theProbMax = 1. ;
+
+  EvtSpinType::spintype d2type=EvtPDL::getSpinType(getDaug(1));
+  EvtSpinType::spintype d1type=EvtPDL::getSpinType(getDaug(0));
+  if (d1type==EvtSpinType::TENSOR||d2type==EvtSpinType::TENSOR) theProbMax*=10;
+
+  setProbMax(theProbMax);
+}
+
+void EvtSSD_DirectCP::decay( EvtParticle *p) {
+
+  bool flip = false ;
+  EvtId daugs[2];
+  
+  // decide it is B or Bbar:
+  if ( EvtRandom::Flat(0.,1.) < ( ( 1. - _acp ) / 2. ) ) {
+    // it is a B
+    if ( EvtPDL::getStdHep( getParentId() ) < 0 ) flip = true ;
+  } else {
+    // it is a Bbar
+    if ( EvtPDL::getStdHep( getParentId() ) > 0 ) flip = true ;
+  }
+  
+  if ( flip ) {
+    if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
+      p->getParent()
+        ->setId( EvtPDL::chargeConj( p->getParent()->getId() ) ) ;
+      p->setId( EvtPDL::chargeConj( p->getId() ) ) ;
+    }
+    else {
+      p->setId( EvtPDL::chargeConj( p->getId() ) ) ;
+    }
+  }  
+
+  if (!flip) {
+    daugs[0]=getDaug(0);
+    daugs[1]=getDaug(1);
+  }
+  else{
+    daugs[0]=EvtPDL::chargeConj(getDaug(0));
+    daugs[1]=EvtPDL::chargeConj(getDaug(1));
+  }
+
+  EvtParticle *d;
+  p->initializePhaseSpace(2, daugs);
+
+  EvtVector4R p4_parent=p->getP4Restframe();
+  double m_parent=p4_parent.mass();
+
+  EvtSpinType::spintype d2type=EvtPDL::getSpinType(getDaug(1));
+
+  EvtVector4R momv;
+  EvtVector4R moms;
+
+  if (d2type==EvtSpinType::SCALAR){
+    d2type=EvtPDL::getSpinType(getDaug(0));
+    d= p->getDaug(0);
+    momv = d->getP4();
+    moms = p->getDaug(1)->getP4();
+  }
+  else{
+    d= p->getDaug(1);
+    momv = d->getP4();
+    moms = p->getDaug(0)->getP4();
+  }
+
+  if (d2type==EvtSpinType::SCALAR) {
+    vertex(1.);
+  }
+  
+  if (d2type==EvtSpinType::VECTOR) {
+    
+    double norm=momv.mass()/(momv.d3mag()*p->mass());
+    
+    vertex(0,norm*p4_parent*(d->epsParent(0)));
+    vertex(1,norm*p4_parent*(d->epsParent(1)));
+    vertex(2,norm*p4_parent*(d->epsParent(2)));
+  
+  }
+
+  if (d2type==EvtSpinType::TENSOR) {
+
+    double norm=
+      d->mass()*d->mass()/(m_parent*d->getP4().d3mag()*d->getP4().d3mag());
+   
+   vertex(0,norm*d->epsTensorParent(0).cont1(p4_parent)*p4_parent);
+   vertex(1,norm*d->epsTensorParent(1).cont1(p4_parent)*p4_parent);
+   vertex(2,norm*d->epsTensorParent(2).cont1(p4_parent)*p4_parent);
+   vertex(3,norm*d->epsTensorParent(3).cont1(p4_parent)*p4_parent);
+   vertex(4,norm*d->epsTensorParent(4).cont1(p4_parent)*p4_parent);  
+  }
+}
+
+bool EvtSSD_DirectCP::isB0Mixed ( EvtParticle * p ) {
+  if ( ! ( p->getParent() ) ) return false ;
+
+  static EvtId B0 =EvtPDL::getId("B0");
+  static EvtId B0B=EvtPDL::getId("anti-B0");
+
+  if ( ( p->getId() != B0 ) && ( p->getId() != B0B ) ) return false ;
+
+  if ( ( p->getParent()->getId() == B0 ) ||
+       ( p->getParent()->getId() == B0B ) ) return true ;
+
+  return false ;
+}
+
+bool EvtSSD_DirectCP::isBsMixed ( EvtParticle * p ) {
+  if ( ! ( p->getParent() ) ) return false ;
+
+  static EvtId BS0=EvtPDL::getId("B_s0");
+  static EvtId BSB=EvtPDL::getId("anti-B_s0");
+
+  if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) ) return false ;
+
+  if ( ( p->getParent()->getId() == BS0 ) ||
+       ( p->getParent()->getId() == BSB ) ) return true ;
+
+  return false ;
+}
+
+std::string EvtSSD_DirectCP::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "ACP";
+  default:
+    return "";
+  }
+}
diff --git a/TEvtGen/EvtGenModels/EvtSSD_DirectCP.hh b/TEvtGen/EvtGenModels/EvtSSD_DirectCP.hh
new file mode 100644 (file)
index 0000000..a4233e2
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: EvtSSD_DirectCP.hh,v 1.2 2009-03-16 16:31:53 robbep Exp $
+// Generation of direct CP violation in hadronic environment
+// Patrick Robbe, LHCb,  08 Nov 2006
+// 
+
+#ifndef EVTSSD_DirectCP_HH
+#define EVTSSD_DirectCP_HH
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+
+class EvtParticle;
+
+class EvtSSD_DirectCP : public  EvtDecayAmp  {
+
+public:
+
+  EvtSSD_DirectCP() {}
+  virtual ~EvtSSD_DirectCP();
+  
+  virtual std::string getName();
+  EvtDecayBase* clone();
+
+  void initProbMax();
+  void init();
+  void decay(EvtParticle *p); 
+
+  std::string getParamName(int i);
+
+private:
+  bool isB0Mixed( EvtParticle * p ) ;
+  bool isBsMixed( EvtParticle * p ) ;
+
+  //Arguments
+
+  double _acp;
+};
+
+#endif
similarity index 80%
rename from TEvtGen/EvtGenModels/EvtSSSCP.cxx
rename to TEvtGen/EvtGenModels/EvtSSSCP.cpp
index d4faa8c5e6374e8c4cdf5979ea54a95e74377fc8..1e34b5e7aefc99cf56e4b61faa4d865e9a750560 100644 (file)
@@ -74,7 +74,7 @@ void EvtSSSCP::decay( EvtParticle *p ){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   p->initializePhaseSpace(getNDaug(),getDaugs());
 
@@ -102,3 +102,38 @@ void EvtSSSCP::decay( EvtParticle *p ){
   return ;
 }
 
+std::string EvtSSSCP::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "weakPhase";
+  case 1:
+    return "deltaM";
+  case 2:
+    return "finalStateCP";
+  case 3:
+    return "Af";
+  case 4:
+    return "AfPhase";
+  case 5:
+    return "Abarf";
+  case 6:
+    return "AbarfPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtSSSCP::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "1.0";
+  case 4:
+    return "0.0";
+  case 5:
+    return "1.0";
+  case 6:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 977e9869dfb567494391e79df89d3a1396f9926d..3b4d7fdccbca310566325862f304c1726622e138 100644 (file)
@@ -41,6 +41,8 @@ public:
 
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 97%
rename from TEvtGen/EvtGenModels/EvtSSSCPT.cxx
rename to TEvtGen/EvtGenModels/EvtSSSCPT.cpp
index df78ba08369eb5dcbd56d249e65e6ce583e48978..51249eee907a4e458c40f37aa5593d6e8a51e04d 100644 (file)
@@ -64,7 +64,7 @@ void EvtSSSCPT::decay( EvtParticle *p){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   p->initializePhaseSpace(getNDaug(),getDaugs());
 
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtSSSCPpng.cxx
rename to TEvtGen/EvtGenModels/EvtSSSCPpng.cpp
index 951f97d1b5b6ac89c605c6013994cf2ba27d8eae..acf57f0c5b6be847dec1af4479342fb6f6fc98ba 100644 (file)
@@ -120,7 +120,7 @@ void EvtSSSCPpng::decay( EvtParticle *p ){
   //fraction of B0 _tags_
   double fract =(Abar2*(1+ rbarf2 + (1 - rbarf2)*ratio))/(Abar2*(1+ rbarf2 + (1 - rbarf2)*ratio) + A2*(1+ rf2 + (1 - rf2)*ratio)); 
   
-  EvtCPUtil::OtherB(p,t,other_b,fract);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,fract);
 
 //this method works just as well -- NK
 //randomly generate the tag (B0 or B0B) 
similarity index 84%
rename from TEvtGen/EvtGenModels/EvtSTSCP.cxx
rename to TEvtGen/EvtGenModels/EvtSTSCP.cpp
index 731086c85b44fad6500128d9b8c04fc73174e8cb..12ac721a6b50a7b68c9143e55ea8a32b302b10e9 100644 (file)
@@ -86,7 +86,7 @@ void EvtSTSCP::decay( EvtParticle *p){
   EvtVector4R moms = p->getDaug(1)->getP4();
   double masst = t1->mass();
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   double m_parent = p->mass();
 
@@ -124,3 +124,38 @@ void EvtSTSCP::decay( EvtParticle *p){
   return ;
 }
 
+std::string EvtSTSCP::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "weakPhase";
+  case 1:
+    return "deltaM";
+  case 2:
+    return "finalStateCP";
+  case 3:
+    return "Af";
+  case 4:
+    return "AfPhase";
+  case 5:
+    return "Abarf";
+  case 6:
+    return "AbarfPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtSTSCP::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "1.0";
+  case 4:
+    return "0.0";
+  case 5:
+    return "1.0";
+  case 6:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index a4f588d7ee9b32bf82008c8c28f07faf0a25c17d..ceb8a05297f4935597f91228e3ea47b52f0926c8 100644 (file)
@@ -39,6 +39,8 @@ public:
   void initProbMax();
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
diff --git a/TEvtGen/EvtGenModels/EvtSVP.cpp b/TEvtGen/EvtGenModels/EvtSVP.cpp
new file mode 100644 (file)
index 0000000..97bf6fe
--- /dev/null
@@ -0,0 +1,104 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtSVP.cc
+//
+// Description: Routine to implement radiative decay chi_c0 -> psi gamma
+//
+//
+// Modification history:
+//     AVL     Jul 6, 2012     modle created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtTensorParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+
+
+#include "EvtGenModels/EvtSVP.hh"
+
+
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+
+
+EvtSVP::~EvtSVP() {
+  //    cout<<"(* AVL EvtSVP::destructor getProbMax(-1) = "<<getProbMax(-1)<<" *)"<<endl;
+  //    cout<<"(* AVL EvtSVP::destructor "<<ncall<<" calls *)"<<endl;
+
+}
+
+std::string EvtSVP::getName(){
+  return "SVP";     
+}
+
+
+EvtDecayBase* EvtSVP::clone(){
+  //  cout<<" (* AVL: === EvtSVP::clone() ============ *)"<<endl;
+  return new EvtSVP;
+
+}
+
+void EvtSVP::decay( EvtParticle *root ){
+  //  cout<<"(* AVL EvtSVP::decay getProbMax(-1) = "<<getProbMax(-1)<<" *)"<<endl;
+  ncall++;
+  //  cout<<" (* AVL  EvtSVP::decay() ============ *)"<<endl;
+  root ->initializePhaseSpace(getNDaug(),getDaugs());
+  
+  EvtVector4R p = root->getDaug(1)->getP4(), // J/psi momentum
+    k = root->getDaug(0)->getP4();           // Photon momentum
+  for(int iPsi = 0; iPsi < 4; iPsi++) {
+    for(int iGamma = 0; iGamma < 1; iGamma++) {
+      EvtVector4C epsPsi = root->getDaug(1)->epsParent(iPsi).conj();
+      EvtVector4C epsGamma = root->getDaug(0)->epsParentPhoton(iGamma).conj();
+
+      //      EvtComplex amp = epsPsi*epsGamma - (epsPsi*k)/(epsGamma*p)/(k*p);
+      EvtComplex amp = (epsPsi*epsGamma) - (epsPsi*k)*(epsGamma*p)/(k*p);
+      
+      //      cout<<"EvtSVP::decay():  (k*p) = "<<(k*p)<<endl;
+      //cout<<"EvtSVP::decay():  amp = "<<amp<<endl;
+      
+      vertex(iGamma, iPsi, amp);
+      };
+    };
+  
+}
+
+
+void EvtSVP::init(){
+  //  cout<<" (* AVL: ==== EvtSVP::init() ============ *)"<<endl;
+
+    ncall = 0;
+  
+  checkNArg(0);
+  checkNDaug(2);
+
+
+  checkSpinParent(EvtSpinType::SCALAR);
+
+  checkSpinDaughter(0,EvtSpinType::PHOTON);
+  checkSpinDaughter(1,EvtSpinType::VECTOR);
+
+}
+
+void EvtSVP::initProbMax() {
+    setProbMax(1.2);
+};
+
diff --git a/TEvtGen/EvtGenModels/EvtSVP.hh b/TEvtGen/EvtGenModels/EvtSVP.hh
new file mode 100644 (file)
index 0000000..64e0a18
--- /dev/null
@@ -0,0 +1,55 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtSVP.hh
+//
+// Description:Implementation of the Melikhov semileptonic model
+//
+// Modification history:
+//
+//    DJL     April 20, 1998         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EvtSVP_HH
+#define EvtSVP_HH
+
+#include <fstream>
+#include <stdio.h>
+
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
+
+class EvtParticle;
+
+class EvtSVP:public  EvtDecayAmp  {
+
+public:
+
+  EvtSVP() {}
+  virtual ~EvtSVP();
+
+  std::string getName();
+  EvtDecayBase* clone();
+
+  void decay(EvtParticle *p);
+  void init();
+
+  virtual void initProbMax();
+
+
+private:
+  int ncall;
+};
+
+#endif
+
similarity index 84%
rename from TEvtGen/EvtGenModels/EvtSVPCP.cxx
rename to TEvtGen/EvtGenModels/EvtSVPCP.cpp
index 82f46ec2733540ffbc01ae3ec4f75ff902b26461..021f7a88dc25e6cc454a64cf25c2076f09cecf6e 100644 (file)
@@ -78,7 +78,7 @@ void EvtSVPCP::decay( EvtParticle *p ){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   EvtComplex G1P,G1M, G1_T_even, G1_T_odd;
 
@@ -133,8 +133,8 @@ void EvtSVPCP::decay( EvtParticle *p ){
   vp=(momv1+momph)/(momv1+momph).mass();   
 
   d=((1.0/sqrt(3.0))*(h0-(hp+hm))*(-1.0/sqrt(3.0)))*g+
-    ((1.0/sqrt(2.0))*(hp-hm)*EvtComplex(0.0,1.0)*(sqrt(1.0/2.0)))*dual(directProd(v,vp))+
-    (sqrt(2.0/3.0)*(h0+0.5*(hp+hm))*sqrt(3.0/2.0))*(directProd(v,v)+(1.0/3.0)*g);
+    ((1.0/sqrt(2.0))*(hp-hm)*EvtComplex(0.0,1.0)*(sqrt(1.0/2.0)))*dual(EvtGenFunctions::directProd(v,vp))+
+    (sqrt(2.0/3.0)*(h0+0.5*(hp+hm))*sqrt(3.0/2.0))*(EvtGenFunctions::directProd(v,v)+(1.0/3.0)*g);
 
   EvtVector4C ep0,ep1,ep2;  
   
@@ -161,3 +161,38 @@ void EvtSVPCP::decay( EvtParticle *p ){
 
 }
 
+std::string EvtSVPCP::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "weakPhase";
+  case 1:
+    return "deltaM";
+  case 2:
+    return "finalStateCP";
+  case 3:
+    return "Af";
+  case 4:
+    return "AfPhase";
+  case 5:
+    return "Abarf";
+  case 6:
+    return "AbarfPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtSVPCP::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "1.0";
+  case 4:
+    return "0.0";
+  case 5:
+    return "1.0";
+  case 6:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index a0ac146537fd3c13220a9837fc5e11630ceb20d0..202f98774427c42e2b275b2e615756e185e69296 100644 (file)
@@ -49,6 +49,8 @@ public:
   static void SVPHel(EvtParticle *parent,EvtAmp& amp,EvtId n_v1,EvtId n_v2,
              const EvtComplex& hp,const EvtComplex& hm);
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 95%
rename from TEvtGen/EvtGenModels/EvtSVPHelAmp.cxx
rename to TEvtGen/EvtGenModels/EvtSVPHelAmp.cpp
index 937411cea99a9218d657534ab5200b3e67d59d63..00844c2742c8ca47460d705e506b84cf0099bf2c 100644 (file)
@@ -100,8 +100,8 @@ void EvtSVPHelAmp::decay( EvtParticle *p ){
   vp=(momv1+momph)/(momv1+momph).mass();   
 
   d=((1.0/sqrt(3.0))*(h0-(hp+hm))*(-1.0/sqrt(3.0)))*g+
-    ((1.0/sqrt(2.0))*(hp-hm)*EvtComplex(0.0,1.0)*(sqrt(1.0/2.0)))*dual(directProd(v,vp))+
-    (sqrt(2.0/3.0)*(h0+0.5*(hp+hm))*sqrt(3.0/2.0))*(directProd(v,v)+(1.0/3.0)*g);
+    ((1.0/sqrt(2.0))*(hp-hm)*EvtComplex(0.0,1.0)*(sqrt(1.0/2.0)))*dual(EvtGenFunctions::directProd(v,vp))+
+    (sqrt(2.0/3.0)*(h0+0.5*(hp+hm))*sqrt(3.0/2.0))*(EvtGenFunctions::directProd(v,v)+(1.0/3.0)*g);
 
   EvtVector4C ep0,ep1,ep2;  
   
similarity index 83%
rename from TEvtGen/EvtGenModels/EvtSVSCP.cxx
rename to TEvtGen/EvtGenModels/EvtSVSCP.cpp
index 3e1010c791ce4de8fa9a5dffff6f17a1875e567d..5f7ba41dc91e62884be345ab8595efd8c130cb13 100644 (file)
@@ -86,7 +86,7 @@ void EvtSVSCP::decay( EvtParticle *p ){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   EvtComplex amp;
 
@@ -119,3 +119,38 @@ void EvtSVSCP::decay( EvtParticle *p ){
   return ;
 }
 
+std::string EvtSVSCP::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "weakPhase";
+  case 1:
+    return "deltaM";
+  case 2:
+    return "finalStateCP";
+  case 3:
+    return "Af";
+  case 4:
+    return "AfPhase";
+  case 5:
+    return "Abarf";
+  case 6:
+    return "AbarfPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtSVSCP::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "1.0";
+  case 4:
+    return "0.0";
+  case 5:
+    return "1.0";
+  case 6:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 479acdb2b244922c753e09085918c6ec1c8b9dc9..f7d35bda72e2542bcb670a460a20332c91e69227 100644 (file)
@@ -39,6 +39,8 @@ public:
   void init();
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtSVSCPLH.cxx
rename to TEvtGen/EvtGenModels/EvtSVSCPLH.cpp
index c4814db35642511476767d9b97ebc7abf62d55bb..bfdf52eefbf80e37ddc917218cb56a06f8fcd80c 100644 (file)
@@ -103,7 +103,7 @@ void EvtSVSCPLH::decay( EvtParticle *p){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b,0.5);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   //convert time from mm to seconds
   t/=EvtConst::c;
similarity index 96%
rename from TEvtGen/EvtGenModels/EvtSVSCPiso.cxx
rename to TEvtGen/EvtGenModels/EvtSVSCPiso.cpp
index 94517abb854ef2fd90a18824e00628a01177f8e6..e6d5ecfed667e4ffb33c3852240dbd79e9ac2edf 100644 (file)
@@ -52,8 +52,8 @@ EvtDecayBase* EvtSVSCPiso::clone(){
 
 void EvtSVSCPiso::init(){
 
-  // check that there are 26 arguments
-  checkNArg(26);
+  // check that there are 27 arguments
+  checkNArg(27);
   checkNDaug(2);
 
   checkSpinParent(EvtSpinType::SCALAR);
@@ -126,19 +126,19 @@ void EvtSVSCPiso::decay( EvtParticle *p){
    double tag = EvtRandom::Flat(0.0,1.0);
    if (tag < 0.5) {
  
-    EvtCPUtil::OtherB(p,t,other_b,1.0);
-    other_b = B0;
+     EvtCPUtil::getInstance()->OtherB(p,t,other_b,1.0);
+     other_b = B0;
    }
    else {
     
-    EvtCPUtil::OtherB(p,t,other_b,0.0);
-    other_b = B0B;
+     EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.0);
+     other_b = B0B;
    }
 
   if (p->getNDaug()==0) first_time=1;
 
   if (first_time){
-    if (EvtRandom::Flat(0.0,1.0)<getArg(3)) flip=1;
+    if (EvtRandom::Flat(0.0,1.0)<getArg(2)) flip=1;
   }
   else{
     if (getDaug(0)!=p->getDaug(0)->getId()) flip=1;
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtSVSNONCPEIGEN.cxx
rename to TEvtGen/EvtGenModels/EvtSVSNONCPEIGEN.cpp
index 62ea69717d057cfabd75641759ef9fff6b637c2d..c68ffc6a4e91c126dc7bbc8c6c895612839df253 100644 (file)
@@ -97,7 +97,7 @@ void EvtSVSNONCPEIGEN::decay( EvtParticle *p){
   daugs[1]=getDaug(1);
   p->initializePhaseSpace(2, daugs);
 
-  EvtCPUtil::OtherB(p,t,other_b,0.5);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   EvtComplex amp;
   double dmt2 = (_dm * t) / (2 * EvtConst::c);
similarity index 80%
rename from TEvtGen/EvtGenModels/EvtSVVCP.cxx
rename to TEvtGen/EvtGenModels/EvtSVVCP.cpp
index 9e4853c5883625ff307ee7310beb9402028a2261..6d2ebf787fa4a39ad4cf018da6eeefb0494f6f19 100644 (file)
@@ -78,7 +78,7 @@ void EvtSVVCP::decay( EvtParticle *p){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
    EvtComplex G0P,G1P,G1M;
 
@@ -116,3 +116,46 @@ void EvtSVVCP::decay( EvtParticle *p){
   return ;
 }
 
+std::string EvtSVVCP::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "weakPhase";
+  case 1:
+    return "deltaM";
+  case 2:
+    return "eta";
+  case 3:
+    return "G1Plus";
+  case 4:
+    return "G1PlusPhase";
+  case 5:
+    return "G0Plus";
+  case 6:
+    return "G0PlusPhase";
+  case 7:
+    return "G1Minus";
+  case 8:
+    return "G1MinusPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtSVVCP::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "1.0";
+  case 4:
+    return "0.0";
+  case 5:
+    return "1.0";
+  case 6:
+    return "0.0";
+  case 7:
+    return "1.0";
+  case 8:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 67ef2b5542296e8d6985629b3597c1b3d31465d0..a07db95153aba7c371e813af5c4ea3b0f799e5b6 100644 (file)
@@ -40,6 +40,8 @@ public:
 
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtSVVCPLH.cxx
rename to TEvtGen/EvtGenModels/EvtSVVCPLH.cpp
index e92d2230993e6700caed7e7671b7c7b252f2cb58..e2cfbbd95926fc452842188ccde85d289504e607 100644 (file)
@@ -80,7 +80,7 @@ void EvtSVVCPLH::decay( EvtParticle *p){
   double t;
   EvtId other_b;
 
-  EvtCPUtil::OtherB(p,t,other_b);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b);
 
   EvtComplex G0P,G1P,G1M;
   
similarity index 83%
rename from TEvtGen/EvtGenModels/EvtSVVHelAmp.cxx
rename to TEvtGen/EvtGenModels/EvtSVVHelAmp.cpp
index 50768baca4567882e861d9595ccbd35fc50cda15..6970cedfbcb4d4e42d202c335567ec14a672a527 100644 (file)
@@ -112,8 +112,8 @@ void EvtSVVHelAmp::SVVHel(EvtParticle *parent,EvtAmp& amp,EvtId n_v1,EvtId n_v2,
   EvtComplex c=h0+0.5*(hp+hm);
 
   EvtTensor3C M=a*EvtTensor3C::id()+
-                b*eps(v1dir)+
-                c*directProd(v1dir,v1dir);
+    b*EvtGenFunctions::eps(v1dir)+
+    c*EvtGenFunctions::directProd(v1dir,v1dir);
 
   EvtVector3C t0=M.cont1(v1->eps(0).vec().conj());
   EvtVector3C t1=M.cont1(v1->eps(1).vec().conj());
@@ -139,4 +139,40 @@ void EvtSVVHelAmp::SVVHel(EvtParticle *parent,EvtAmp& amp,EvtId n_v1,EvtId n_v2,
 
 }
 
+std::string EvtSVVHelAmp::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "plusHelAmp";
+  case 1:
+    return "plusHelAmpPhase";
+  case 2:
+    return "zeroHelAmp";
+  case 3:
+    return "zeroHelAmpPhase";
+  case 4:
+    return "minusHelAmp";
+  case 5:
+    return "minusHelAmpPhase";
+  default:
+    return "";
+  }
+}
 
+std::string EvtSVVHelAmp::getParamDefault(int i) {
+  switch(i) {
+  case 0:
+    return "1.0";
+  case 1:
+    return "0.0";
+  case 2:
+    return "1.0";
+  case 3:
+    return "0.0";
+  case 4:
+    return "1.0";
+  case 5:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index beb5cca3ae703340311cc68429430adc02bb6e21..6af724134588ef4cef9d4241bfa63bd5acce99e5 100644 (file)
@@ -51,6 +51,8 @@ public:
                     const EvtComplex& hp, const EvtComplex& h0,
                     const EvtComplex& hm);
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 82%
rename from TEvtGen/EvtGenModels/EvtSVVHelCPMix.cxx
rename to TEvtGen/EvtGenModels/EvtSVVHelCPMix.cpp
index ca0ce13f00038d1826a9211849e0709e00c389a3..425e175d3942986b0d514ed90a70ba8727dc185e 100644 (file)
@@ -124,24 +124,23 @@ void EvtSVVHelCPMix::decay( EvtParticle *p){
   v2 = parent->getDaug(1);
 
   EvtVector4R momv1 = v1->getP4();
-  EvtVector4R momv2 = v2->getP4();
 
   EvtVector3R v1dir(momv1.get(1),momv1.get(2),momv1.get(3));
   v1dir=v1dir/v1dir.d3mag();
 
-// Definition of quantities used in construction of complex amplitudes:
+  // Definition of quantities used in construction of complex amplitudes:
 
-EvtTensor3C M;  // Tensor as defined in EvtGen manual, equ 117
-EvtComplex a,b,c; // Helicity amplitudes; EvtGen manual eqns 126-128, also see Phys Lett B 369 p144-150 eqn 15
-EvtComplex deltamu = EvtComplex(deltaM, -0.5*deltagamma); // See Phys Rev D 34 p1404
+  EvtTensor3C M;  // Tensor as defined in EvtGen manual, equ 117
+  EvtComplex a,b,c; // Helicity amplitudes; EvtGen manual eqns 126-128, also see Phys Lett B 369 p144-150 eqn 15
+  //EvtComplex deltamu = EvtComplex(deltaM, -0.5*deltagamma); // See Phys Rev D 34 p1404
 
-// conversion from times in mm/c to natural units [GeV]^-1
-double t = ((parent->getLifetime())/2.998e11)*6.58e-25; 
+  // conversion from times in mm/c to natural units [GeV]^-1
+  double t = ((parent->getLifetime())/2.998e11)*6.58e-25; 
 
-// The following two quantities defined in Phys Rev D 34 p1404
-EvtComplex fplus =  EvtComplex(cos(averageM*t),-1.*sin(averageM*t))*exp(-(gamma/2.0)*t)*
+  // The following two quantities defined in Phys Rev D 34 p1404
+  EvtComplex fplus =  EvtComplex(cos(averageM*t),-1.*sin(averageM*t))*exp(-(gamma/2.0)*t)*
     (cos(0.5*deltaM*t)*cosh(0.25*deltagamma*t)+EvtComplex(0.0,sin(0.5*deltaM*t)*sinh(0.25*deltagamma*t)));
-EvtComplex fminus = EvtComplex(cos(averageM*t), -1.*sin(averageM*t))*exp(-(gamma/2.0)*t)*EvtComplex(0.0,1.0)*
+  EvtComplex fminus = EvtComplex(cos(averageM*t), -1.*sin(averageM*t))*exp(-(gamma/2.0)*t)*EvtComplex(0.0,1.0)*
     (sin(0.5*deltaM*t)*cosh(0.25*deltagamma*t)-EvtComplex(0.0,1.0)*sinh(0.25*deltagamma*t)*cos(0.5*deltaM*t)); 
 
 // See EvtGen manual pp 106-107
@@ -151,8 +150,8 @@ EvtComplex fminus = EvtComplex(cos(averageM*t), -1.*sin(averageM*t))*exp(-(gamma
   c=(h0+0.5*(hp+hm));
   
   M=a*EvtTensor3C::id()+
-                b*eps(v1dir)+
-                c*directProd(v1dir,v1dir);
+    b*EvtGenFunctions::eps(v1dir)+
+    c*EvtGenFunctions::directProd(v1dir,v1dir);
                
   EvtVector3C t0=M.cont1(v1->eps(0).vec().conj());
   EvtVector3C t1=M.cont1(v1->eps(1).vec().conj());
@@ -231,4 +230,52 @@ EvtComplex fminus = EvtComplex(cos(averageM*t), -1.*sin(averageM*t))*exp(-(gamma
 
 }
 
+std::string EvtSVVHelCPMix::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "plusHelAmp";
+  case 1:
+    return "plusHelAmpPhase";
+  case 2:
+    return "zeroHelAmp";
+  case 3:
+    return "zeroHelAmpPhase";
+  case 4:
+    return "minusHelAmp";
+  case 5:
+    return "minusHelAmpPhase";
+  case 6:
+    return "averageM";
+  case 7:
+    return "deltaM";
+  case 8:
+    return "gamma";
+  case 9:
+    return "deltaGamma";
+  case 10:
+    return "weakMixPhase";
+  case 11:
+    return "weakDirectPhase";
+  default:
+    return "";
+  }
+}
 
+std::string EvtSVVHelCPMix::getParamDefault(int i) {
+  switch(i) {
+  case 0:
+    return "1.0";
+  case 1:
+    return "0.0";
+  case 2:
+    return "1.0";
+  case 3:
+    return "0.0";
+  case 4:
+    return "1.0";
+  case 5:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 6dda8da8cc2f6e346c7e1e7b15b9d922e7bfc9cc..2a1fd5d8ca016a1272be24a78abb48d3021d7712 100644 (file)
@@ -60,6 +60,8 @@ public:
 
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 79%
rename from TEvtGen/EvtGenModels/EvtSVVNONCPEIGEN.cxx
rename to TEvtGen/EvtGenModels/EvtSVVNONCPEIGEN.cpp
index bb58dfb171919115c90f103af2d31db56df266c6..55a90b6ff4fad9669b0d0c1a80f2e8bf195910a5 100644 (file)
@@ -144,7 +144,7 @@ void EvtSVVNONCPEIGEN::decay( EvtParticle *p){
   daugs[1]=getDaug(1);
   p->initializePhaseSpace(2,daugs);
 
-  EvtCPUtil::OtherB(p,t,other_b,0.5);
+  EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.5);
 
   EvtComplex amp[3];
 
@@ -195,3 +195,94 @@ void EvtSVVNONCPEIGEN::decay( EvtParticle *p){
   return ;
 }
 
+std::string EvtSVVNONCPEIGEN::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "deltaM";
+  case 1:
+    return "weakPhase1";
+  case 2:
+    return "weakPhase2";
+  case 3:
+    return "AfPlusHelAmp";
+  case 4:
+    return "AfPlusHelAmpPhase";
+  case 5:
+    return "AfZeroHelAmp";
+  case 6:
+    return "AfZeroHelAmpPhase";
+  case 7:
+    return "AfMinusHelAmp";
+  case 8:
+    return "AfMinusHelAmpPhase";
+  case 9:
+    return "AbarfPlusHelAmp";
+  case 10:
+    return "AbarfPlusHelAmpPhase";
+  case 11:
+    return "AbarfZeroHelAmp";
+  case 12:
+    return "AbarfZeroHelAmpPhase";
+  case 13:
+    return "AbarfMinusHelAmp";
+  case 14:
+    return "AbarfMinusHelAmpPhase";
+  case 15:
+    return "AfbarPlusHelAmp";
+  case 16:
+    return "AfbarPlusHelAmpPhase";
+  case 17:
+    return "AfbarZeroHelAmp";
+  case 18:
+    return "AfbarZeroHelAmpPhase";
+  case 19:
+    return "AfbarMinusHelAmp";
+  case 20:
+    return "AfbarMinusHelAmpPhase";
+  case 21:
+    return "AbarfbarPlusHelAmp";
+  case 22:
+    return "AbarfbarPlusHelAmpPhase";
+  case 23:
+    return "AbarfbarZeroHelAmp";
+  case 24:
+    return "AbarfbarZeroHelAmpPhase";
+  case 25:
+    return "AbarfbarMinusHelAmp";
+  case 26:
+    return "AbarfbarMinusHelAmpPhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtSVVNONCPEIGEN::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "1.0";
+  case 4:
+    return "0.0";
+  case 5:
+    return "1.0";
+  case 6:
+    return "0.0";
+  case 7:
+    return "1.0";
+  case 8:
+    return "0.0";
+  case 9:
+    return "1.0";
+  case 10:
+    return "0.0";
+  case 11:
+    return "1.0";
+  case 12:
+    return "0.0";
+  case 13:
+    return "1.0";
+  case 14:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index ce7d02dd4ef07291e8339f59cda49fdc7500f4df..793d1800c29c7a3fa70ae9218f935c680fac6c5a 100644 (file)
@@ -40,6 +40,9 @@ public:
 
   void decay(EvtParticle *p); 
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
+
 private:
 
   EvtComplex _A_f[12];
diff --git a/TEvtGen/EvtGenModels/EvtTVP.cpp b/TEvtGen/EvtGenModels/EvtTVP.cpp
new file mode 100644 (file)
index 0000000..fafa7e0
--- /dev/null
@@ -0,0 +1,116 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtTVP.cc
+//
+// Description: Routine to implement radiative decay chi_c2 -> psi gamma
+//                     matrix element from [S.P Baranov et al, PRD 85, 014034 (2012)]
+//
+// Modification history:
+//     AVL     6 July, 2012    Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtTensorParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+
+
+#include "EvtGenModels/EvtTVP.hh"
+
+
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+
+
+EvtTVP::~EvtTVP() {
+//   cout<<"(* AVL EvtTVP::destructor getProbMax(-1) = "<<getProbMax(-1)<<" *)"<<endl;
+//   cout<<"(* AVL EvtTVP::destructor "<<ncall<<" calls *)"<<endl;
+}
+
+std::string EvtTVP::getName(){
+  return "TVP";     
+}
+
+
+EvtDecayBase* EvtTVP::clone(){
+//   cout<<" (* AVL: === EvtTVP::clone() ============ *)"<<endl;
+  return new EvtTVP;
+
+}
+
+void EvtTVP::decay( EvtParticle *root ){
+  ncall++;
+//   cout<<" (* AVL  EvtTVP::decay() ============ *)"<<endl;
+  double amp2=0;
+  root ->initializePhaseSpace(getNDaug(),getDaugs());
+  
+  EvtVector4R p = root->getDaug(1)->getP4(), // J/psi momentum
+    k = root->getDaug(0)->getP4();           // Photon momentum
+/*  
+    cout<<"(* AVL *) p="<<p<<endl;
+    cout<<"(* AVL *) k="<<k<<endl;*/
+    
+  for(int iPsi = 0; iPsi < 4; iPsi++) {
+    for(int iGamma = 0; iGamma < 1; iGamma++) {
+      for(int iChi = 0; iChi<4; iChi++) {
+         EvtTensor4C epsChi = root->epsTensor(iChi);
+         EvtVector4C epsPsi = root->getDaug(1)->epsParent(iPsi).conj();
+         EvtVector4C epsGamma = root->getDaug(0)->epsParentPhoton(iGamma).conj();
+
+         // [Baranov, (11)
+         // matr = p^mu epsPsi^a epsChi_{a b} ( k_mu epsGamma_b  - k_b epsGamma_mu
+
+
+         EvtVector4C eee = epsChi.cont1(epsPsi);
+         EvtVector4C vvv = (p*k)*eee - (k*eee)*p;
+//       cout <<" (* AVL: ginv "<<(vvv*k)<<"  *) "<<endl;
+         EvtComplex amp = vvv*epsGamma;
+
+//       cout << "(* AVL *) amp="<<amp<<endl;
+         vertex(iChi, iGamma, iPsi, amp);
+         amp2 = amp2 + abs2(amp);
+      };
+    };
+  };
+//   cout <<"(* AVL: amp2 = "<<amp2<<"*)"<<endl;
+  
+}
+
+
+void EvtTVP::init(){
+//   cout<<" (* AVL: ==== EvtTVP::init() ============ *)"<<endl;
+
+    ncall = 0;
+  
+  checkNArg(0);
+  checkNDaug(2);
+
+
+  checkSpinParent(EvtSpinType::TENSOR);
+
+  checkSpinDaughter(0,EvtSpinType::PHOTON);
+  checkSpinDaughter(1,EvtSpinType::VECTOR);
+
+}
+
+void EvtTVP::initProbMax() {
+  setProbMax(1.);
+};
+
diff --git a/TEvtGen/EvtGenModels/EvtTVP.hh b/TEvtGen/EvtGenModels/EvtTVP.hh
new file mode 100644 (file)
index 0000000..48357db
--- /dev/null
@@ -0,0 +1,58 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtTVP.hh
+//
+// Description:Implementation of the Melikhov semileptonic model
+//
+// Modification history:
+//
+//    DJL     April 20, 1998         Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EvtTVP_HH
+#define EvtTVP_HH
+
+#include <fstream>
+#include <stdio.h>
+
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
+
+class EvtParticle;
+
+class EvtTVP:public  EvtDecayAmp  {
+
+public:
+
+  EvtTVP() {}
+  virtual ~EvtTVP();
+
+  std::string getName();
+  EvtDecayBase* clone();
+
+  void decay(EvtParticle *p);
+  void init();
+
+  virtual void initProbMax();
+
+
+private:
+//  EvtSemiLeptonicFF *ffmodel;
+//  EvtSemiLeptonicAmp *calcamp;
+//  int whichfit;
+  int ncall;
+};
+
+#endif
+
similarity index 83%
rename from TEvtGen/EvtGenModels/EvtTVSPwave.cxx
rename to TEvtGen/EvtGenModels/EvtTVSPwave.cpp
index aab408028024ad04f5d25e206c01272c273d137e..9ee9c7e7f71c0328639947fd92efd35a121640a6 100644 (file)
@@ -96,7 +96,7 @@ void EvtTVSPwave::decay( EvtParticle *p ){
   EvtVector4C epsdual0,epsdual1,epsdual2;
 
   double norm=massv/(m_parent*momv.get(0)*momv.d3mag()*momv.d3mag());
-  pdual=dual(directProd(norm*p_parent,momv));
+  pdual=dual(EvtGenFunctions::directProd(norm*p_parent,momv));
   
   epsdual0=pdual.cont1(v->epsParent(0).conj());
   epsdual1=pdual.cont1(v->epsParent(1).conj());
@@ -129,3 +129,40 @@ void EvtTVSPwave::decay( EvtParticle *p ){
   return ;
 }
 
+std::string EvtTVSPwave::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "PWave";
+  case 1:
+    return "PWavePhase";
+  case 2:
+    return "DWave";
+  case 3:
+    return "DWavePhase";
+  case 4:
+    return "FWave";
+  case 5:
+    return "FWavePhase";
+  default:
+    return "";
+  }
+}
+
+std::string EvtTVSPwave::getParamDefault(int i) {
+  switch(i) {
+  case 0:
+    return "0.0";
+  case 1:
+    return "0.0";
+  case 2:
+    return "1.0";
+  case 3:
+    return "0.0";
+  case 4:
+    return "0.0";
+  case 5:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 62148574e8f71e8986415d8123926570e79db053..1be570aa76a60841a74a9bf926976d6b0eb836bd 100644 (file)
@@ -44,6 +44,8 @@ public:
   void init();
   void initProbMax();
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 99%
rename from TEvtGen/EvtGenModels/EvtTauHadnu.cxx
rename to TEvtGen/EvtGenModels/EvtTauHadnu.cpp
index b73effe1ad946c5028a8051bd9604a31f8f96722..b12495648ecbfbbc612bc0f89c564eb179a5d2f8 100644 (file)
@@ -122,7 +122,7 @@ void EvtTauHadnu::decay(EvtParticle *p){
   
   EvtParticle *nut;
   nut = p->getDaug(getNDaug()-1);
-  EvtVector4R momscalar = p->getDaug(0)->getP4();
+  p->getDaug(0)->getP4();
 
   //get the leptonic current 
   EvtVector4C tau1, tau2;
similarity index 97%
rename from TEvtGen/EvtGenModels/EvtVSPPwave.cxx
rename to TEvtGen/EvtGenModels/EvtVSPPwave.cpp
index e734ee4f65000df6173ec2905e561379e3f0bf43..a439a787c9692e550f76f214dd2c526f864bd0d1 100644 (file)
@@ -82,7 +82,7 @@ void EvtVSPPwave::decay( EvtParticle *p){
 
   double norm=1/(m_p*momgamma.d3mag());
 
-  tds = dual(directProd(norm*p4_p,momgamma));
+  tds = dual(EvtGenFunctions::directProd(norm*p4_p,momgamma));
 
   vertex(0,0,(tds.cont1( p->eps(0))).cont(
         gamma->epsParentPhoton(0).conj() ) );
similarity index 92%
rename from TEvtGen/EvtGenModels/EvtVSSBMixCPT.cxx
rename to TEvtGen/EvtGenModels/EvtVSSBMixCPT.cpp
index bd37a11a610809f9022515be0bc87e0588278207..a0bf41804cf6dead819d80466a1d75aa25397ded 100644 (file)
@@ -301,9 +301,54 @@ void EvtVSSBMixCPT::decay( EvtParticle *p ){
   return ;
 }
 
+std::string EvtVSSBMixCPT::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "deltaM";
+  case 1:
+    return "deltaGammaOverGamma";
+  case 2:
+    return "qOverP";
+  case 3:
+    return "qOverPPhase";
+  case 4:
+    return "Af";
+  case 5:
+    return "AfPhase";
+  case 6:
+    return "Abarf";
+  case 7:
+    return "AbarfPhase";
+  case 8:
+    return "Afbar";
+  case 9:
+    return "AfbarPhase";
+  case 10:
+    return "Abarfbar";
+  case 11:
+    return "AbarfbarPhase";
+  case 12:
+    return "Z";
+  case 13:
+    return "ZPhase";
+  default:
+    return "";
+  }
+}
 
-
-
-
-
-
+std::string EvtVSSBMixCPT::getParamDefault(int i) {
+  switch(i) {
+  case 3:
+    return "0.0";
+  case 4:
+    return "1.0";
+  case 5:
+    return "0.0";
+  case 6:
+    return "1.0";
+  case 7:
+    return "0.0";
+  default:
+    return "";
+  }
+}
index 68955a981936aec5975fff4758655f8540403172..575d2de79a5fe596b546dc785ea753dc130eeab7 100644 (file)
@@ -56,6 +56,8 @@ private:
   EvtComplex _A_fbar;
   EvtComplex _Abar_fbar;
 
+  std::string getParamName(int i);
+  std::string getParamDefault(int i);
 };
 
 #endif
similarity index 95%
rename from TEvtGen/EvtGenModels/EvtVSSMix.cxx
rename to TEvtGen/EvtGenModels/EvtVSSMix.cpp
index 092aa623a58ca4b181840dd41e6e5be242bdf4bc..eda67ce30a39af27978a261b603cd063610f816a 100644 (file)
@@ -108,3 +108,11 @@ void EvtVSSMix::decay( EvtParticle *p ){
   return ;
 }
 
+std::string EvtVSSMix::getParamName(int i) {
+  switch(i) {
+  case 0:
+    return "deltaM";
+  default:
+    return "";
+  }
+}
index 0747a8fd4dd73ce88bd54ff774a9d29d0417154c..79ec3b630eef5d1536df2ee1e3f524580855ec71 100644 (file)
@@ -39,6 +39,7 @@ public:
   void init();
   void initProbMax();
 
+  std::string getParamName(int i);
 };
 
 #endif
similarity index 94%
rename from TEvtGen/EvtGenModels/EvtVVSPwave.cxx
rename to TEvtGen/EvtGenModels/EvtVVSPwave.cpp
index ebdeb0790be399d0281a203daa8d5adbefe32603..26bf9cb3813722a652768199995dc2c6e4c040b9 100644 (file)
@@ -80,15 +80,15 @@ void EvtVVSPwave::decay( EvtParticle *p){
     ::abort();
   }
     
-  EvtParticle *v,*s;
+  EvtParticle *v;
   v=p->getDaug(0);
-  s=p->getDaug(1);
 
   EvtTensor4C d,g;
   
   g.setdiag(1.0,-1.0,-1.0,-1.0);
 
-  d=ad*((1.0/(v->getP4().d3mag()*v->getP4().d3mag()))*directProd(v->getP4(),v->getP4())+(1/3.0)*g)+
+  d=ad*((1.0/(v->getP4().d3mag()*v->getP4().d3mag()))*
+        EvtGenFunctions::directProd(v->getP4(),v->getP4())+(1/3.0)*g)+
     as*g;
 
   EvtVector4C ep0,ep1,ep2;  
similarity index 97%
rename from TEvtGen/EvtGenModels/EvtVtoSll.cxx
rename to TEvtGen/EvtGenModels/EvtVtoSll.cpp
index 9e5c2282cdb0ff135f58fc3472dc6f4093b0da02..b1f032c4b4788243c58a4ca7f5d373ae82adcf37 100644 (file)
@@ -90,9 +90,7 @@ void EvtVtoSll::decay(EvtParticle *p){
   EvtVector4R k=l1->getP4()+l2->getP4();
   double k2=k*k;
 
-  EvtTensor4C T(dual(directProd(P,(1.0/k2)*k)));
-
-
+  EvtTensor4C T(dual(EvtGenFunctions::directProd(P,(1.0/k2)*k)));
 
   double M2=p->mass();
   M2*=M2;
similarity index 99%
rename from TEvtGen/EvtGenModels/EvtVubAC.cxx
rename to TEvtGen/EvtGenModels/EvtVubAC.cpp
index cbbc3f9eaef4b22972659810ac50f0272d8d6e2e..34e3e4e8e066c9bfa30ddcdfc5471bbb3bbfc60d 100644 (file)
@@ -413,7 +413,7 @@ int k = 0;
 int JMAX = 20;
 int KMAX = 6282;
 
- if (x1 < 0.04 | x1 > 1.0 | x2 > 0.9981306360766614) {
+ if ((x1 < 0.04) | (x1 > 1.0) | (x2 > 0.9981306360766614)) {
 
         cout<<"Input variables are not in range"<<endl;
         return 0;
index 9fa1b84cdd970c262da6922f08fd9dc1c34c77c1..b8abbd4df48564789fcd3507a4dc7625c62ad7a0 100644 (file)
@@ -11,8 +11,6 @@
 #include <vector>
 
 class EvtParticle;
-class RandGeneral;
-class EvtVubdGamma;
 
 class EvtVubAC:public  EvtDecayIncoherent  {
 
similarity index 97%
rename from TEvtGen/EvtGenModels/EvtVubBLNP.cxx
rename to TEvtGen/EvtGenModels/EvtVubBLNP.cpp
index d465926138dce46621e4208f77fd0d382cd85f24..fe29c1190bad4899ccba96ba10e56655de6ff311 100644 (file)
@@ -166,7 +166,7 @@ void EvtVubBLNP::decay(EvtParticle *Bmeson) {
   
   EvtParticle *xuhad, *lepton, *neutrino;
   EvtVector4R p4;
-  double Pp, Pm, Pl, pdf, EX, PX, sh, qsq, El, ml, mpi, ratemax;
+  double Pp, Pm, Pl, pdf, EX, sh, El, ml, mpi, ratemax;
   
   double xhigh, xlow, what;
   
@@ -206,8 +206,6 @@ void EvtVubBLNP::decay(EvtParticle *Bmeson) {
 
     sh = Pm*Pp;
     EX = 0.5*(Pm + Pp);
-    PX = 0.5*(Pm - Pp);
-    qsq = (mBB - Pp)*(mBB - Pm);
     El = 0.5*(mBB - Pl);
 
     // Need maximum rate.  Waiting for Mr. Paz to give it to me. 
@@ -399,7 +397,7 @@ double EvtVubBLNP::F1(double Pp, double Pm, double muh, double mui, double mubar
 
 }
 
-double EvtVubBLNP::F2(double Pp, double Pm, double muh, double mui, double mubar, double done3) {
+double EvtVubBLNP::F2(double Pp, double Pm, double muh, double /*mui*/, double mubar, double done3) {
   
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -421,7 +419,7 @@ double EvtVubBLNP::F2(double Pp, double Pm, double muh, double mui, double mubar
 
 }
 
-double EvtVubBLNP::F3(double Pp, double Pm, double muh, double mui, double mubar, double done2) {
+double EvtVubBLNP::F3(double Pp, double Pm, double /*muh*/, double /*mui*/, double mubar, double done2) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -441,7 +439,7 @@ double EvtVubBLNP::F3(double Pp, double Pm, double muh, double mui, double mubar
 
 }
 
-double EvtVubBLNP::DoneJS(double Pp, double Pm, double mui) {
+double EvtVubBLNP::DoneJS(double Pp, double Pm, double /*mui*/) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -460,7 +458,7 @@ double EvtVubBLNP::DoneJS(double Pp, double Pm, double mui) {
 
 }
 
-double EvtVubBLNP::Done1(double Pp, double Pm, double mui) {
+double EvtVubBLNP::Done1(double Pp, double Pm, double /*mui*/) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -479,7 +477,7 @@ double EvtVubBLNP::Done1(double Pp, double Pm, double mui) {
 
 }
 
-double EvtVubBLNP::Done2(double Pp, double Pm, double mui) {
+double EvtVubBLNP::Done2(double Pp, double Pm, double /*mui*/) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -498,7 +496,7 @@ double EvtVubBLNP::Done2(double Pp, double Pm, double mui) {
 
 }
 
-double EvtVubBLNP::Done3(double Pp, double Pm, double mui) {
+double EvtVubBLNP::Done3(double Pp, double Pm, double /*mui*/) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -704,7 +702,7 @@ double EvtVubBLNP::myfunction(double w, double Lbar, double mom2) {
 
 }
 
-double EvtVubBLNP::myfunctionBIK(double w, double Lbar, double mom2) {
+double EvtVubBLNP::myfunctionBIK(double w, double Lbar, double /*mom2*/) {
 
   double aval = 10.0;
   double normBIK = (4 - M_PI)*M_PI*M_PI/8/(2-M_PI)/aval + 1;
@@ -751,7 +749,7 @@ double EvtVubBLNP::S0(double a1, double r) {
   return answer;
 }
 
-double EvtVubBLNP::S1(double a1, double r) {
+double EvtVubBLNP::S1(double /*a1*/, double r) {
   double answer = Gamma0/(4*beta0*beta0)*(0.5*log(r)*log(r)*beta1/beta0 + (Gamma1/Gamma0 - beta1/beta0)*(1 - r + log(r)));
   return answer;
 }
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtVubBLNPHybrid.cxx
rename to TEvtGen/EvtGenModels/EvtVubBLNPHybrid.cpp
index 3e72fa1b2ab177995705454626130a0c23ad52b2..b7e1aa45cd5fdae0d3c3673a6dff73a499470ad8 100644 (file)
@@ -242,7 +242,7 @@ void EvtVubBLNPHybrid::decay(EvtParticle *Bmeson) {
   
   EvtParticle *xuhad, *lepton, *neutrino;
   EvtVector4R p4;
-  double Pp, Pm, Pl, pdf, EX, PX, sh, qsq, El, ml, mpi, ratemax;
+  double Pp, Pm, Pl, pdf, EX, sh, qsq, El, ml, mpi, ratemax;
   
   double xhigh, xlow, what;
   double mX;
@@ -287,7 +287,6 @@ void EvtVubBLNPHybrid::decay(EvtParticle *Bmeson) {
 
       sh = Pm*Pp;
       EX = 0.5*(Pm + Pp);
-      PX = 0.5*(Pm - Pp);
       qsq = (mBB - Pp)*(mBB - Pm);
       El = 0.5*(mBB - Pl);
       
@@ -493,7 +492,7 @@ double EvtVubBLNPHybrid::F1(double Pp, double Pm, double muh, double mui, double
 
 }
 
-double EvtVubBLNPHybrid::F2(double Pp, double Pm, double muh, double mui, double mubar, double done3) {
+double EvtVubBLNPHybrid::F2(double Pp, double Pm, double muh, double /* mui */, double mubar, double done3) {
   
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -515,7 +514,7 @@ double EvtVubBLNPHybrid::F2(double Pp, double Pm, double muh, double mui, double
 
 }
 
-double EvtVubBLNPHybrid::F3(double Pp, double Pm, double muh, double mui, double mubar, double done2) {
+double EvtVubBLNPHybrid::F3(double Pp, double Pm, double /*muh*/, double /* mui */, double mubar, double done2) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -535,7 +534,7 @@ double EvtVubBLNPHybrid::F3(double Pp, double Pm, double muh, double mui, double
 
 }
 
-double EvtVubBLNPHybrid::DoneJS(double Pp, double Pm, double mui) {
+double EvtVubBLNPHybrid::DoneJS(double Pp, double Pm, double /* mui */) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -554,7 +553,7 @@ double EvtVubBLNPHybrid::DoneJS(double Pp, double Pm, double mui) {
 
 }
 
-double EvtVubBLNPHybrid::Done1(double Pp, double Pm, double mui) {
+double EvtVubBLNPHybrid::Done1(double Pp, double Pm, double /* mui */) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -573,7 +572,7 @@ double EvtVubBLNPHybrid::Done1(double Pp, double Pm, double mui) {
 
 }
 
-double EvtVubBLNPHybrid::Done2(double Pp, double Pm, double mui) {
+double EvtVubBLNPHybrid::Done2(double Pp, double Pm, double /* mui */ ) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -592,7 +591,7 @@ double EvtVubBLNPHybrid::Done2(double Pp, double Pm, double mui) {
 
 }
 
-double EvtVubBLNPHybrid::Done3(double Pp, double Pm, double mui) {
+double EvtVubBLNPHybrid::Done3(double Pp, double Pm, double /* mui */) {
 
   std::vector<double> vars(12);
   vars[0] = Pp;
@@ -798,7 +797,7 @@ double EvtVubBLNPHybrid::myfunction(double w, double Lbar, double mom2) {
 
 }
 
-double EvtVubBLNPHybrid::myfunctionBIK(double w, double Lbar, double mom2) {
+double EvtVubBLNPHybrid::myfunctionBIK(double w, double Lbar, double /* mom2 */) {
 
   double aval = 10.0;
   double normBIK = (4 - M_PI)*M_PI*M_PI/8/(2-M_PI)/aval + 1;
@@ -845,7 +844,7 @@ double EvtVubBLNPHybrid::S0(double a1, double r) {
   return answer;
 }
 
-double EvtVubBLNPHybrid::S1(double a1, double r) {
+double EvtVubBLNPHybrid::S1(double /* a1 */ , double r) {
   double answer = Gamma0/(4*beta0*beta0)*(0.5*log(r)*log(r)*beta1/beta0 + (Gamma1/Gamma0 - beta1/beta0)*(1 - r + log(r)));
   return answer;
 }
similarity index 99%
rename from TEvtGen/EvtGenModels/EvtVubNLO.cxx
rename to TEvtGen/EvtGenModels/EvtVubNLO.cpp
index 6b1ba572534881d8229bf108698a810bf5a59070..0883294a923192e031dfc7f55029277238fac4d6 100644 (file)
@@ -507,7 +507,7 @@ EvtVubNLO::F3(const std::vector<double> &coeffs){
 }
 */
 
-double EvtVubNLO::SFNorm(  const std::vector<double> &coeffs){
+double EvtVubNLO::SFNorm(  const std::vector<double> &/*coeffs*/){
   
   double omega0=1.68;//normalization scale (mB-2*1.8)
   if(_idSF==1){ // exponential SF
index d0db5b634f8bd68557691c6c681a2f949d1871f0..2b5cb3e37f0203cbc41aa55a274613ec2fa65ee3 100644 (file)
@@ -115,7 +115,7 @@ private:
   double lambda_bar(double omega0);
   inline double lambda2(){return 0.12;}
   double mu_pi2(double omega0);
-  inline double lambda(double mu=0){ return _mB-_mb;}
+  inline double lambda(double){ return _mB-_mb;}
 
   // specail for gaussian SF
   static double cGaus(double b){return pow(Gamma(1+b/2.)/Gamma((1+b)/2.),2);}
@@ -134,7 +134,7 @@ private:
   // Sudakov
 
   inline double S0(double a, double r){return -gamma0()/4/a/pow(beta0(),2)*(1/r-1+log(r));}
-  inline double S1(double a, double r){return gamma0()/4./pow(beta0(),2)*(
+  inline double S1(double /*a*/, double r){return gamma0()/4./pow(beta0(),2)*(
                                                                  pow(log(r),2)*beta1()/2./beta0()+(gamma1()/gamma0()-beta1()/beta0())*(1.-r+log(r))
                                                                  );}
   inline double S2(double a, double r){return gamma0()*a/4./pow(beta0(),2)*(
similarity index 77%
rename from TEvtGen/EvtGenModels/EvtWilsonCoeficients.cxx
rename to TEvtGen/EvtGenModels/EvtWilsonCoefficients.cpp
index 301bec1e6fc933bb334897663a0da3f23e307f37..063813509909bba86f4cd07e14a4fff5658c4a63 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Wilson coeficients according to A.J.Buras and M.Munz, Phys.Rev. D52, 186. (1995)
 // Thanks to N. Nikitine for example code for Pythia
-// Coeficient C8eff and C2 correction to C7eff taken from:
+// Coefficient C8eff and C2 correction to C7eff taken from:
 //   A.J.Buras, M.Misiak, M.Munz, S.Pokorski, Nucl.Phys. B424, 374 (1994)
 //
 // Used constants come from PDG 2004
@@ -16,7 +16,7 @@
 #include "EvtGenBase/EvtPatches.hh"
 #include "EvtGenBase/EvtConst.hh"
 #include "EvtGenBase/EvtReport.hh"
-#include "EvtGenModels/EvtWilsonCoeficients.hh"
+#include "EvtGenModels/EvtWilsonCoefficients.hh"
 #include <stdlib.h>
 
 // including EvtLi2Spence.F
@@ -24,7 +24,7 @@ extern "C" {
   extern double li2spence_(double*);
 }
 
-EvtWilsonCoeficients::EvtWilsonCoeficients(){
+EvtWilsonCoefficients::EvtWilsonCoefficients(){
   int i,j;
   double tmpa[8]={14./23.,16./23.,6./23.,-12./23.,0.4086,-0.4230,-0.8994,0.1456};
   double tmph[8]={2.2996,-1.0880,-3./7.,-1./14.,-0.6494,-0.0380,-0.0186,-0.0057};
@@ -66,16 +66,16 @@ EvtWilsonCoeficients::EvtWilsonCoeficients(){
   m_ksi=0;
 }
 
-void EvtWilsonCoeficients::SetRenormalizationScheme(std::string scheme){
+void EvtWilsonCoefficients::SetRenormalizationScheme(std::string scheme){
   if(scheme=="NDR") m_ksi=0;
   else if(scheme=="HV") m_ksi=1;
   else{
-    report(ERROR,"EvtGen") << "ERROR: EvtWilsonCoeficients knows only NDR and HV schemes !" << std::endl;
+    report(ERROR,"EvtGen") << "ERROR: EvtWilsonCoefficients knows only NDR and HV schemes !" << std::endl;
     ::abort();
   }
 }
 
-double EvtWilsonCoeficients::alphaS(double mu=4.8,int n_f=5,double Lambda=0.2167){
+double EvtWilsonCoefficients::alphaS(double mu=4.8,int n_f=5,double Lambda=0.2167){
 // calculate strong coupling constant for n_f flavours and scale mu
   double beta0=11.-2./3.*n_f;
   double beta1=51.-19./3.*n_f;
@@ -86,7 +86,7 @@ double EvtWilsonCoeficients::alphaS(double mu=4.8,int n_f=5,double Lambda=0.2167
   return aS;
 }
 
-double EvtWilsonCoeficients::Lambda(double alpha=0.1187,int n_f=5,double mu=91.1876,double epsilon=0.00005,int maxstep=1000){
+double EvtWilsonCoefficients::Lambda(double alpha=0.1187,int n_f=5,double mu=91.1876,double epsilon=0.00005,int maxstep=1000){
 // calculate Lambda matching alphaS using simple iterative method
   int i;
   double difference=0;
@@ -115,47 +115,47 @@ double EvtWilsonCoeficients::Lambda(double alpha=0.1187,int n_f=5,double mu=91.1
   }
 }
 
-double EvtWilsonCoeficients::eta(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+double EvtWilsonCoefficients::eta(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   return alphaS(M_W,n_f,Lambda)/alphaS(mu,n_f,Lambda);
 }
 
 
-EvtComplex EvtWilsonCoeficients::C1(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C1(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   EvtComplex myC1(0,0);
   for(i=0;i<8;i++) myC1+=k[0][i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
   return myC1;
 }
 
-EvtComplex EvtWilsonCoeficients::C2(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C2(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   EvtComplex myC2(0,0);
   for(i=0;i<8;i++) myC2+=k[1][i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
   return myC2;
 }
 
-EvtComplex EvtWilsonCoeficients::C3(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C3(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   EvtComplex myC3(0,0);
   for(i=0;i<8;i++) myC3+=k[2][i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
   return myC3;
 }
 
-EvtComplex EvtWilsonCoeficients::C4(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C4(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   EvtComplex myC4(0,0);
   for(i=0;i<8;i++) myC4+=k[3][i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
   return myC4;
 }
 
-EvtComplex EvtWilsonCoeficients::C5(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C5(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   EvtComplex myC5(0,0);
   for(i=0;i<8;i++) myC5+=k[4][i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
   return myC5;
 }
 
-EvtComplex EvtWilsonCoeficients::C6(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C6(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   EvtComplex myC6(0,0);
   for(i=0;i<8;i++) myC6+=k[5][i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
@@ -163,15 +163,15 @@ EvtComplex EvtWilsonCoeficients::C6(double mu=4.8,int n_f=5,double Lambda=0.2167
 }
 
 
-EvtComplex EvtWilsonCoeficients::C7(double M_t=174.3,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C7(double M_t=174.3,double M_W=80.425){
   return EvtComplex(-0.5*A(M_t*M_t/M_W/M_W),0);
 }
 
-EvtComplex EvtWilsonCoeficients::C8(double M_t=174.3,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C8(double M_t=174.3,double M_W=80.425){
   return EvtComplex(-0.5*F(M_t*M_t/M_W/M_W),0);
 }
 
-EvtComplex EvtWilsonCoeficients::C7eff0(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_t=174.3,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C7eff0(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_t=174.3,double M_W=80.425){
   int i;
   EvtComplex myC7eff(0,0);
   for(i=0;i<8;i++) myC7eff+=h[i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
@@ -181,7 +181,7 @@ EvtComplex EvtWilsonCoeficients::C7eff0(double mu=4.8,int n_f=5,double Lambda=0.
   return myC7eff;
 }
 
-EvtComplex EvtWilsonCoeficients::C8eff0(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_t=174.3,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C8eff0(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_t=174.3,double M_W=80.425){
   int i;
   EvtComplex myC8eff(0,0);
   for(i=0;i<8;i++) myC8eff+=g[i]*pow(eta(mu,n_f,Lambda,M_W),a[i]);
@@ -190,57 +190,57 @@ EvtComplex EvtWilsonCoeficients::C8eff0(double mu=4.8,int n_f=5,double Lambda=0.
 }
 
 
-EvtComplex EvtWilsonCoeficients::C10tilda(double sin2W=0.23120,double M_t=174.3,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C10tilda(double sin2W=0.23120,double M_t=174.3,double M_W=80.425){
   return EvtComplex(-Y(M_t*M_t/M_W/M_W)/sin2W,0);
 }
 
-EvtComplex EvtWilsonCoeficients::C10(double sin2W=0.23120,double M_t=174.3,double M_W=80.425,double ialpha=137.036){
+EvtComplex EvtWilsonCoefficients::C10(double sin2W=0.23120,double M_t=174.3,double M_W=80.425,double ialpha=137.036){
   return ( 1./2/EvtConst::pi/ialpha*C10tilda(sin2W,M_t,M_W) );
 }
 
 
-double EvtWilsonCoeficients::A(double x){
+double EvtWilsonCoefficients::A(double x){
   return ( x*(8*x*x+5*x-7)/12/pow(x-1,3) + x*x*(2-3*x)*log(x)/2/pow(x-1,4) );
 }
 
-double EvtWilsonCoeficients::B(double x){
+double EvtWilsonCoefficients::B(double x){
   return ( x/4/(1-x) + x/4/(x-1)/(x-1)*log(x) );
 }
 
-double EvtWilsonCoeficients::C(double x){
+double EvtWilsonCoefficients::C(double x){
   return ( x*(x-6)/8/(x-1) + x*(3*x+2)/8/(x-1)/(x-1)*log(x) );
 }
 
-double EvtWilsonCoeficients::D(double x){
+double EvtWilsonCoefficients::D(double x){
   return ( (-19*x*x*x+25*x*x)/36/pow(x-1,3) + x*x*(5*x*x-2*x-6)/18/pow(x-1,4)*log(x) - 4./9*log(x) );
 }
 
-double EvtWilsonCoeficients::E(double x){
+double EvtWilsonCoefficients::E(double x){
   return ( x*(18-11*x-x*x)/12/pow(1-x,3) + x*x*(15-16*x+4*x*x)/6/pow(1-x,4)*log(x) - 2./3*log(x) );
 }
 
-double EvtWilsonCoeficients::F(double x){
+double EvtWilsonCoefficients::F(double x){
   return ( x*(x*x-5*x-2)/4/pow(x-1,3) + 3*x*x/2/pow(x-1,4)*log(x) );
 }
 
-double EvtWilsonCoeficients::Y(double x){
+double EvtWilsonCoefficients::Y(double x){
   return (C(x)-B(x));
 }
 
-double EvtWilsonCoeficients::Z(double x){
+double EvtWilsonCoefficients::Z(double x){
   return (C(x)+1./4*D(x));
 }
 
 
-EvtComplex EvtWilsonCoeficients::C9(int ksi=0,double mu=4.8,int n_f=5,double Lambda=0.2167,double sin2W=0.23120,double M_t=174.3,double M_W=80.425,double ialpha=137.036){
+EvtComplex EvtWilsonCoefficients::C9(int ksi=0,double mu=4.8,int n_f=5,double Lambda=0.2167,double sin2W=0.23120,double M_t=174.3,double M_W=80.425,double ialpha=137.036){
   return ( 1./2/EvtConst::pi/ialpha*C9tilda(ksi,mu,n_f,Lambda,sin2W,M_t,M_W) );
 }
 
-EvtComplex EvtWilsonCoeficients::C9tilda(int ksi=0,double mu=4.8,int n_f=5,double Lambda=0.2167,double sin2W=0.23120,double M_t=174.3,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C9tilda(int ksi=0,double mu=4.8,int n_f=5,double Lambda=0.2167,double sin2W=0.23120,double M_t=174.3,double M_W=80.425){
   return ( P0(ksi,mu,n_f,Lambda,M_W) + Y(M_t*M_t/M_W/M_W)/sin2W - 4*Z(M_t*M_t/M_W/M_W) + PE(mu,n_f,Lambda,M_W)*E(M_t*M_t/M_W/M_W) );
 }
 
-EvtComplex EvtWilsonCoeficients::P0(int ksi=0,double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::P0(int ksi=0,double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   EvtComplex myP0(0,0);
   for(i=0;i<8;i++) myP0+=p[i]*pow(eta(mu,n_f,Lambda,M_W),a[i]+1);
@@ -250,7 +250,7 @@ EvtComplex EvtWilsonCoeficients::P0(int ksi=0,double mu=4.8,int n_f=5,double Lam
   return myP0;
 }
 
-double EvtWilsonCoeficients::PE(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
+double EvtWilsonCoefficients::PE(double mu=4.8,int n_f=5,double Lambda=0.2167,double M_W=80.425){
   int i;
   double myPE=0.1405;
   for(i=0;i<8;i++) myPE+=q[i]*pow(eta(mu,n_f,Lambda,M_W),a[i]+1);
@@ -258,7 +258,7 @@ double EvtWilsonCoeficients::PE(double mu=4.8,int n_f=5,double Lambda=0.2167,dou
 }
 
 
-void EvtWilsonCoeficients::CalculateAllCoeficients(){
+void EvtWilsonCoefficients::CalculateAllCoefficients(){
   m_Lambda=Lambda(m_alphaMZ,m_n_f,m_M_Z);
   m_C1=C1(m_mu,m_n_f,m_Lambda,m_M_W);
   m_C2=C2(m_mu,m_n_f,m_Lambda,m_M_W);
@@ -332,7 +332,7 @@ void EvtWilsonCoeficients::CalculateAllCoeficients(){
   report(DEBUG,"EvtGen") << " +--------------------------------------" << std::endl;
 }
 
-EvtComplex EvtWilsonCoeficients::hzs(double z,double shat,double mu=4.8,double M_b=4.8){
+EvtComplex EvtWilsonCoefficients::hzs(double z,double shat,double mu=4.8,double M_b=4.8){
   EvtComplex i1(0,1);
   double x=4.*z*z/shat;
   if(x==0)     return (8./27. - 8./9.*log(M_b/mu) - 4./9.*log(shat) + 4./9.*i1*EvtConst::pi);
@@ -340,19 +340,19 @@ EvtComplex EvtWilsonCoeficients::hzs(double z,double shat,double mu=4.8,double M
   else         return (8./27. - 8./9.*log(M_b/mu) - 8./9.*log(z) + 4./9.*x - 2./9.*(2.+x)*sqrt(1.-x) * (log(fabs(sqrt(1.-x)+1)/fabs(sqrt(1.-x)-1))-i1*EvtConst::pi));
 }
 
-double EvtWilsonCoeficients::fz(double z){
+double EvtWilsonCoefficients::fz(double z){
   return (1. - 8.*z*z + 8.*pow(z,6.) - pow(z,8.) - 24.*pow(z,4.)*log(z));
 }
 
-double EvtWilsonCoeficients::kappa(double z,double alpha_S){
+double EvtWilsonCoefficients::kappa(double z,double alpha_S){
   return (1. - 2.*alpha_S/3./EvtConst::pi*((EvtConst::pi*EvtConst::pi-31./4.)*(1.-z)*(1.-z) + 1.5) );
 }
 
-double EvtWilsonCoeficients::etatilda(double shat,double alpha_S){
+double EvtWilsonCoefficients::etatilda(double shat,double alpha_S){
   return (1. + alpha_S/EvtConst::pi*omega(shat));
 }
 
-double EvtWilsonCoeficients::omega(double shat){
+double EvtWilsonCoefficients::omega(double shat){
   double o=0;
   o -= (2./9.)*EvtConst::pi*EvtConst::pi;
   o -= (4./3.)*li2spence_(&shat);
@@ -363,7 +363,7 @@ double EvtWilsonCoeficients::omega(double shat){
   return o;
 }
 
-EvtComplex EvtWilsonCoeficients::C9efftilda(double z,double shat,double alpha_S,EvtComplex c1,EvtComplex c2,EvtComplex c3,EvtComplex c4,EvtComplex c5,EvtComplex c6,EvtComplex c9tilda,int ksi=0){
+EvtComplex EvtWilsonCoefficients::C9efftilda(double z,double shat,double alpha_S,EvtComplex c1,EvtComplex c2,EvtComplex c3,EvtComplex c4,EvtComplex c5,EvtComplex c6,EvtComplex c9tilda,int ksi=0){
   EvtComplex c(0,0);
   c += (c9tilda+ksi*4./9.*(3.*c1+c2-c3-3.*c4))*etatilda(shat,alpha_S);
   c += hzs(z,shat)*(3.*c1+c2+3.*c3+c4+3.*c5+c6);
@@ -373,12 +373,12 @@ EvtComplex EvtWilsonCoeficients::C9efftilda(double z,double shat,double alpha_S,
   return c;
 }
 
-EvtComplex EvtWilsonCoeficients::C7b2sg(double alpha_S,double et,EvtComplex c2,double M_t=174.3,double M_W=80.425){
+EvtComplex EvtWilsonCoefficients::C7b2sg(double alpha_S,double et,EvtComplex c2,double M_t=174.3,double M_W=80.425){
   EvtComplex i1(0,1);
   return (i1*alpha_S*(2./9.*pow(et,14./23.)*(0.5*F(M_t*M_t/M_W/M_W)-0.1687)-0.03*c2));
 }
 
-EvtComplex EvtWilsonCoeficients::Yld(double q2,double *ki,double *Gi,double *Mi,int ni,EvtComplex c1,EvtComplex c2,EvtComplex c3,EvtComplex c4,EvtComplex c5,EvtComplex c6,double ialpha=137.036){
+EvtComplex EvtWilsonCoefficients::Yld(double q2,double *ki,double *Gi,double *Mi,int ni,EvtComplex c1,EvtComplex c2,EvtComplex c3,EvtComplex c4,EvtComplex c5,EvtComplex c6,double ialpha=137.036){
   EvtComplex i1(0,1);
   EvtComplex y(0,0);
   int i;
similarity index 96%
rename from TEvtGen/EvtGenModels/EvtWilsonCoeficients.hh
rename to TEvtGen/EvtGenModels/EvtWilsonCoefficients.hh
index e7a5ec62ad72be9ee4df370763e77e2085ca50a1..08c9bc19c333f023c7deeb25bfaeb4c611b66bbf 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Wilson coeficients according to A.J.Buras and M.Munz, Phys.Rev. D52, 186. (1995)
 // Thanks to N. Nikitine for example code for Pythia
-// Coeficient C8eff and C2 correction to C7eff taken from:
+// Coefficient C8eff and C2 correction to C7eff taken from:
 //   A.J.Buras, M.Misiak, M.Munz, S.Pokorski, Nucl.Phys. B424, 374 (1994)
 //
 // Used constants come from PDG 2004
 
 #include "EvtGenBase/EvtComplex.hh"
 
-class EvtWilsonCoeficients {
+class EvtWilsonCoefficients {
 
 public:
 
-  EvtWilsonCoeficients();
-  //~EvtWilsonCoeficients() {};
+  EvtWilsonCoefficients();
+  //~EvtWilsonCoefficients() {};
 
   // calculate strong coupling constant for n_f flavours and scale mu
   double alphaS(double mu,int n_f,double Lambda);
@@ -74,7 +74,7 @@ public:
   EvtComplex Yld(double q2,double ki[],double Gi[],double Mi[],int ni,EvtComplex c1,EvtComplex c2,EvtComplex c3,EvtComplex c4,EvtComplex c5,EvtComplex c6,double ialpha);
 
   // User function
-  void CalculateAllCoeficients();
+  void CalculateAllCoefficients();
   // Set parameters
   void SetLambda(double lambda) { m_Lambda=lambda; }
   void CalculateLambda(double epsilon,int maxstep) { m_Lambda=Lambda(m_alphaMZ,m_n_f,m_mu,epsilon,maxstep); }
diff --git a/TEvtGen/EvtGenModels/EvtWnPi.cpp b/TEvtGen/EvtGenModels/EvtWnPi.cpp
new file mode 100644 (file)
index 0000000..b5a0403
--- /dev/null
@@ -0,0 +1,137 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtTVP.cc
+//
+// Description: Routine to calculate W -> (n pi) current
+//                     according to [Kuhn, Was, Acta.Phys.Polon B39 (2008) 147]
+//
+// Modification history:
+//     AVL     6 July, 2012    Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenModels/EvtTauHadnu.hh"
+#include "EvtGenBase/EvtDiracSpinor.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+#include "EvtGenBase/EvtIdSet.hh"
+#include "EvtGenBase/EvtParser.hh"
+
+#include "EvtGenModels/EvtWnPi.hh"
+
+using namespace std;
+
+// W+ -> pi_ current
+EvtVector4C EvtWnPi::WCurrent(EvtVector4R q1) { 
+  return q1;
+}
+
+// W+ -> pi+ pi0 current
+EvtVector4C EvtWnPi::WCurrent(EvtVector4R q1, EvtVector4R q2) { 
+  return BWr(q1+q2)*(q1-q2);
+}
+
+// W+ -> pi+ pi+ pi- current
+EvtVector4C EvtWnPi::WCurrent(EvtVector4R q1, EvtVector4R q2, EvtVector4R q3) {
+ EvtVector4R Q=q1+q2+q3;
+ double Q2=Q.mass2();
+ return BWa(Q)*( (q1-q3) - (Q*(Q*(q1-q3))/Q2)*BWr(q2+q3) +
+             (q2-q3) - (Q*(Q*(q2-q3))/Q2)*BWr(q1+q3) ); 
+}
+
+// W+ -> pi+ pi+ pi- pi- pi+ current with symmetrization
+EvtVector4C EvtWnPi::WCurrent(EvtVector4R q1, EvtVector4R q2, EvtVector4R q3, EvtVector4R q4, EvtVector4R q5) {
+//  double Q2 = Qtot*Qtot;
+//  return q1-Qtot*(q1*Qtot)/Q2;
+  EvtVector4C V = JB(q1, q2, q3, q4, q5) + JB(q5, q2, q3, q4, q1) + JB(q1, q5, q3, q4, q2) +
+                 JB(q1,q2,q4,q3,q5)+JB(q5,q2,q4,q3,q1)+JB(q1,q5,q4,q3,q2); 
+//  cout<<"BC2: Qtot="<<Qtot<<", V="<<V<<endl;
+  return V;
+}
+
+
+// a1 -> pi+ pi+ pi- BW
+EvtComplex EvtWnPi::BWa(EvtVector4R q) {
+  double const _mA1=1.26, _GA1=0.4;
+  EvtComplex I(0,1);
+  double Q2 = q.mass2();
+  double GA1=_GA1*pi3G(Q2)/pi3G(_mA1*_mA1);
+  EvtComplex denBA1(_mA1*_mA1 - Q2,-1.*_mA1*GA1);
+  return _mA1*_mA1 / denBA1; 
+}
+
+
+EvtComplex EvtWnPi::BWf(EvtVector4R q) {
+  double const mf=0.8, Gf=0.6;
+  EvtComplex I(0,1);
+  double Q2 = q.mass2();
+  return mf*mf/(mf*mf-Q2-I*mf*Gf); 
+}
+
+EvtComplex EvtWnPi::BWr(EvtVector4R q) {
+       double _mRho = 0.775, _gammaRho=0.149, _mRhopr=1.364,  _gammaRhopr=0.400, _beta=-0.108;
+       double m1=EvtPDL::getMeanMass(EvtPDL::getId("pi+")), m2=EvtPDL::getMeanMass(EvtPDL::getId("pi+"));
+       double mQ2=q.mass2();
+       
+       // momenta in the rho->pipi decay
+       double dRho= _mRho*_mRho - m1*m1 - m2*m2;
+       double pPiRho = (1.0/_mRho)*sqrt((dRho*dRho)/4.0 - m1*m1*m2*m2);
+       
+       double dRhopr= _mRhopr*_mRhopr - m1*m1 - m2*m2;
+       double pPiRhopr = (1.0/_mRhopr)*sqrt((dRhopr*dRhopr)/4.0 - m1*m1*m2*m2);
+       
+       double dQ= mQ2 - m1*m1 - m2*m2;
+       double pPiQ = (1.0/sqrt(mQ2))*sqrt((dQ*dQ)/4.0 - m1*m1*m2*m2);
+       
+       
+       double gammaRho = _gammaRho*_mRho/sqrt(mQ2)*pow((pPiQ/pPiRho),3);
+       EvtComplex BRhoDem(_mRho*_mRho - mQ2,-1.0*_mRho*gammaRho);
+       EvtComplex BRho= _mRho*_mRho / BRhoDem;
+       
+       double gammaRhopr = _gammaRhopr*_mRhopr/sqrt(mQ2)*pow((pPiQ/pPiRhopr),3);
+       EvtComplex BRhoprDem(_mRhopr*_mRhopr - mQ2,-1.0*_mRho*gammaRhopr);
+       EvtComplex BRhopr= _mRhopr*_mRhopr / BRhoprDem;
+       
+       return (BRho + _beta*BRhopr)/(1+_beta);
+}
+
+double EvtWnPi::pi3G(double m2) {
+ double mPi = EvtPDL::getMeanMass(EvtPDL::getId("pi+"));
+ double _mRho = 0.775;
+  if ( m2 > (_mRho+mPi) ) {
+    return m2*(1.623 + 10.38/m2 - 9.32/(m2*m2) + 0.65/(m2*m2*m2));
+  }
+  else {
+    double t1=m2-9.0*mPi*mPi;
+    return 4.1*pow(t1,3.0)*(1.0 - 3.3*t1+5.8*t1*t1);
+  };
+}
+
+EvtVector4C EvtWnPi::JB( EvtVector4R p1, EvtVector4R p2, EvtVector4R p3, EvtVector4R p4, EvtVector4R p5) {
+  EvtVector4R Qtot = p1+p2+p3+p4+p5, Qa=p1+p2+p3;
+  EvtTensor4C T= (1/Qtot.mass2())*EvtGenFunctions::directProd(Qtot,Qtot) - EvtTensor4C::g();
+  EvtVector4R V13 = Qa*( p2*(p1-p3) )/Qa.mass2() - (p1-p3);
+  EvtVector4R V23 = Qa*( p1*(p2-p3) )/Qa.mass2() - (p2-p3);
+  return BWa(Qtot)*BWa(Qa)*BWf(p4+p5)*(
+    T.cont1(V13)*BWr(p1+p3) + T.cont1(V23)*BWr(p2+p3)
+  );
+}
diff --git a/TEvtGen/EvtGenModels/EvtWnPi.hh b/TEvtGen/EvtGenModels/EvtWnPi.hh
new file mode 100644 (file)
index 0000000..40823ff
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef EvtWNPI_HH
+#define EvtWNPI_HH
+
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+
+class EvtWnPi {
+public:
+  EvtVector4C WCurrent(EvtVector4R q1);
+  EvtVector4C WCurrent(EvtVector4R q1, EvtVector4R q2);
+  EvtVector4C WCurrent(EvtVector4R q1, EvtVector4R q2, EvtVector4R q3);
+  EvtVector4C WCurrent(EvtVector4R q1, EvtVector4R q2, EvtVector4R q3, EvtVector4R q4, EvtVector4R q5);
+protected:
+  EvtVector4C JB(EvtVector4R q1, EvtVector4R q2, EvtVector4R q3, EvtVector4R q4, EvtVector4R q5); 
+  EvtComplex BWa( EvtVector4R q);
+  EvtComplex BWf( EvtVector4R q);
+  EvtComplex BWr( EvtVector4R q);
+  double pi3G(double Q2);
+};
+
+#endif
diff --git a/TEvtGen/EvtGenModels/EvtXPsiGamma.cpp b/TEvtGen/EvtGenModels/EvtXPsiGamma.cpp
new file mode 100755 (executable)
index 0000000..8b906fa
--- /dev/null
@@ -0,0 +1,205 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtXPsiGamma.cc
+//
+// Description: Routine to implement radiative decay X3872(2-+) -> J/psi gamma 
+//      according to [F. Brazzi et al, arXiv:1103.3155
+//
+// Modification history:
+//
+//    May, 7, 2012        Module created
+//
+//------------------------------------------------------------------------
+// 
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtTensorParticle.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+#include "EvtGenBase/EvtTensor4C.hh"
+
+#include "EvtGenModels/EvtXPsiGamma.hh"
+
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+EvtXPsiGamma::~EvtXPsiGamma() {
+/*  cout<<"(* AVL EvtXPsiGamma::destructor getProbMax(-1) = "<<getProbMax(-1)<<" *)"<<endl;
+  cout<<"(* AVL EvtXPsiGamma::destructor "<<ncall<<" calls *)"<<endl;*/
+}
+
+std::string EvtXPsiGamma::getName(){
+  return "X38722-+_PSI_GAMMA";     
+}
+
+
+EvtDecayBase* EvtXPsiGamma::clone(){
+//  cout<<" (* AVL: === EvtXPsiGamma::clone() ============ *)"<<endl;
+  return new EvtXPsiGamma;
+
+}
+
+EvtComplex EvtXPsiGamma::fT2(EvtVector4R p, EvtVector4R q , EvtTensor4C epsPI, EvtVector4C epsEps, EvtVector4C epsEta) {
+// T2 term from [Bazi](10)
+  EvtTensor4C epsPQ = EvtGenFunctions::directProd(q,p); // e_{mu nu a b} p^a q^b;
+  epsPQ = dual(epsPQ);
+  
+  EvtVector4C tmp1 = epsPI.cont1(epsEps);
+  EvtVector4C tmp2=epsPQ.cont1(tmp1);
+  EvtComplex T2 = tmp2*epsEta; // epa^a pi_{a mu} e_{mu nu rho si} p_nu q_rho eta_si
+  
+  tmp1 = epsPI.cont1(epsEta);
+  tmp2=epsPQ.cont1(tmp1);
+  T2+=tmp2*epsEps;   // T2 - eta^a pi_{a mu} e_{mu nu rho si} q_nu p_rhi eps_si
+  
+  return T2;
+}
+
+EvtComplex EvtXPsiGamma::fT3(EvtVector4R p, EvtVector4R q , EvtTensor4C epsPI, EvtVector4C epsEps, EvtVector4C epsEta) {
+// T3 term from [Bazi](11)
+  EvtVector4R   Q = p-q, P = p+q;
+  EvtVector4C tmp1 = epsPI.cont1(Q); // Q_a pi_{a mu}
+  EvtTensor4C tmp3 = dual(EvtGenFunctions::directProd(P,epsEps)); // e_{mu nu rho si} P^rho eps^si
+  EvtVector4C tmp4 = tmp3.cont1(tmp1);
+  EvtComplex T3 = tmp4*epsEta; // Q_a pi_{a mu} e_{mu nu rho si} P^rho eps_si eta_nu
+  return T3;
+}
+
+
+void EvtXPsiGamma::decay( EvtParticle *root ){
+  ncall++;
+  root -> initializePhaseSpace(getNDaug(),getDaugs());
+
+  double gOmega = 1.58, gPOmega = -0.74;  // X -> omega psi couplings from table II
+  double gRho = 1.58, gPRho = -0.74;  // X -> omega psi couplings from table II
+  double fRho=0.121, mRho2 = 0.770*0.770, fOmega=0.036, mOmega2 = 0.782*0.782;
+
+  EvtComplex amp;
+  
+  if(_ID0 == EvtPDL::getId("gamma") ) {
+    for(int iPsi = 0; iPsi < 4; iPsi++) {
+      for(int iGamma = 0; iGamma < 1; iGamma++) {
+        for(int iChi = 0; iChi<4; iChi++) {
+
+          EvtComplex T2 = fT2(
+                              root->getDaug(1)->getP4(),
+                              root->getDaug(0)->getP4(),
+                              root->epsTensor(iChi),
+                              root->getDaug(1)->epsParent(iPsi).conj(),
+                              root->getDaug(0)->epsParentPhoton(iGamma).conj()
+                              );
+          EvtComplex T3 = fT3(
+                              root->getDaug(1)->getP4(),
+                              root->getDaug(0)->getP4(),
+                              root->epsTensor(iChi),
+                              root->getDaug(1)->epsParent(iPsi).conj(),
+                              root->getDaug(0)->epsParentPhoton(iGamma).conj()
+                              );
+          amp = (fOmega/mOmega2*gOmega+fRho/mRho2*gRho)*T2 
+            + (fOmega/mOmega2*gPOmega+fRho/mRho2*gPRho)*T3;
+          vertex(iChi, iGamma, iPsi, amp);
+        };};};
+  }
+  else if(_ID0 == EvtPDL::getId("omega") ) {
+    for(int iPsi = 0; iPsi < 4; iPsi++) {
+      for(int iGamma = 0; iGamma < 4; iGamma++) {
+        for(int iChi = 0; iChi<4; iChi++) {
+
+          EvtComplex T2 = fT2(
+                              root->getDaug(1)->getP4(),
+                              root->getDaug(0)->getP4(),
+                              root->epsTensor(iChi),
+                              root->getDaug(1)->epsParent(iPsi).conj(),
+                              root->getDaug(0)->epsParent(iGamma).conj()
+                              );
+          EvtComplex T3 = fT3(
+                              root->getDaug(1)->getP4(),
+                              root->getDaug(0)->getP4(),
+                              root->epsTensor(iChi),
+                              root->getDaug(1)->epsParent(iPsi).conj(),
+                              root->getDaug(0)->epsParent(iGamma).conj()
+                              );
+          //     cout << "AVL:: omega"<<endl;
+          amp = gOmega*T2 + gPOmega*T3;
+          vertex(iChi, iGamma, iPsi, amp);
+        };};}; 
+  }
+  else if(_ID0 == EvtPDL::getId("rho0") ) {
+    for(int iPsi = 0; iPsi < 4; iPsi++) {
+      for(int iGamma = 0; iGamma < 4; iGamma++) {
+        for(int iChi = 0; iChi<4; iChi++) {
+          
+          EvtComplex T2 = fT2(
+                              root->getDaug(1)->getP4(),
+                              root->getDaug(0)->getP4(),
+                              root->epsTensor(iChi),
+                              root->getDaug(1)->epsParent(iPsi).conj(),
+                              root->getDaug(0)->epsParent(iGamma).conj()
+                              );
+          EvtComplex T3 = fT3(
+                              root->getDaug(1)->getP4(),
+                              root->getDaug(0)->getP4(),
+                              root->epsTensor(iChi),
+                              root->getDaug(1)->epsParent(iPsi).conj(),
+                              root->getDaug(0)->epsParent(iGamma).conj()
+                              );
+          //     cout << "AVL:: rho"<<endl;
+          amp = gRho*T2 + gPRho*T3;
+          vertex(iChi, iGamma, iPsi, amp);
+        };};}; 
+  }
+  else {
+    cout<<"AVL:: Not realized yet"<<endl;
+  };
+  
+}
+
+
+void EvtXPsiGamma::init(){
+//  cout<<" (* AVL: ==== EvtXPsiGamma::init() ============ *)"<<endl;
+
+  ncall = 0;
+  
+  checkNArg(0);
+  checkNDaug(2);
+
+
+  checkSpinParent(EvtSpinType::TENSOR);
+
+//  checkSpinDaughter(0,EvtSpinType::PHOTON);
+  checkSpinDaughter(1,EvtSpinType::VECTOR);
+  
+  _ID0 = getDaug(0);
+/*  if(_ID0 == EvtPDL::getId("gamma") ) {
+    cout << "AVL:: gamma"<<endl;
+  }
+  else if(_ID0 == EvtPDL::getId("omega") ) {
+    cout << "AVL:: omega"<<endl;
+  }
+  else if(_ID0 == EvtPDL::getId("rho0") ) {
+    cout << "AVL:: rho"<<endl;
+  };
+*/
+  
+}
+
+void EvtXPsiGamma::initProbMax() {
+  if(_ID0 == EvtPDL::getId("gamma") )  setProbMax(2.400);
+  else if(_ID0 == EvtPDL::getId("omega") )  setProbMax(16.);
+  else if(_ID0 == EvtPDL::getId("rho0") )  setProbMax(70.);
+};
+
+
diff --git a/TEvtGen/EvtGenModels/EvtXPsiGamma.hh b/TEvtGen/EvtGenModels/EvtXPsiGamma.hh
new file mode 100755 (executable)
index 0000000..b24e619
--- /dev/null
@@ -0,0 +1,60 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtXPsiGamma.hh
+//
+// Description:Implementation of the X3872(2-+) -> J/psi gamma decay
+//
+// Modification history:
+//
+//    7 May 2012: Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTXPSIGAMMA_HH
+#define EVTXPSIGAMMA_HH
+
+#include <fstream>
+#include <stdio.h>
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
+
+class EvtParticle;
+
+class EvtXPsiGamma: public EvtDecayAmp {
+
+public:
+
+  EvtXPsiGamma() {}
+  virtual ~EvtXPsiGamma();
+
+  std::string getName();
+  EvtDecayBase* clone();
+
+  void decay(EvtParticle *p);
+  void init();
+
+  virtual void initProbMax();
+
+
+private:
+//  EvtSemiLeptonicFF *ffmodel;
+//  EvtSemiLeptonicAmp *calcamp;
+//  int whichfit;
+  EvtComplex fT2(EvtVector4R p, EvtVector4R q , EvtTensor4C epsPI, EvtVector4C epsEps, EvtVector4C epsEta); 
+  EvtComplex fT3(EvtVector4R p, EvtVector4R q , EvtTensor4C epsPI, EvtVector4C epsEps, EvtVector4C epsEta);
+  EvtId _ID0;
+  int ncall;
+};
+
+#endif
+
similarity index 95%
rename from TEvtGen/EvtGenModels/EvtbTosllAli.cxx
rename to TEvtGen/EvtGenModels/EvtbTosllAli.cpp
index 26bb9018dfd78ab6447028176a0e888c69b75701..88f78738ffb3631858b9e8e6907087c927e90109 100644 (file)
@@ -49,7 +49,8 @@ EvtDecayBase* EvtbTosllAli::clone(){
 
 void EvtbTosllAli::decay( EvtParticle *p ){
 
-  setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),_poleSize,1,2));
+  setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),false,
+                                    _poleSize,1,2));
 
   _calcamp->CalcAmp(p,_amp2,_aliffmodel);
   
similarity index 93%
rename from TEvtGen/EvtGenModels/EvtbTosllAliFF.cxx
rename to TEvtGen/EvtGenModels/EvtbTosllAliFF.cpp
index 87a8011328f8078ad811327ca06e103e09c9421d..67589c2aa67c995c8175a713eafce0ce2b34200e 100644 (file)
@@ -27,7 +27,7 @@
 EvtbTosllAliFF::EvtbTosllAliFF(){}
 
 
-void EvtbTosllAliFF::getScalarFF(EvtId parent, EvtId daught,
+void EvtbTosllAliFF::getScalarFF(EvtId parent, EvtId /*daught*/,
                                 double t, double /*mass*/, 
                                 double& fp,double& f0,double& ft){
 
@@ -45,7 +45,7 @@ void EvtbTosllAliFF::getScalarFF(EvtId parent, EvtId daught,
 }
 
 
-void EvtbTosllAliFF::getVectorFF(EvtId parent, EvtId daught,
+void EvtbTosllAliFF::getVectorFF(EvtId parent, EvtId /*daught*/,
                                 double t, double /*mass*/, 
                                 double& a1,double& a2,double& a0, double& v,
                                 double& t1, double& t2, double& t3 ){
similarity index 98%
rename from TEvtGen/EvtGenModels/EvtbTosllAmp.cxx
rename to TEvtGen/EvtGenModels/EvtbTosllAmp.cpp
index 0686dee73ef0f5bd30fcb5da4b90d0ff9089dd36..bab67bd89a0b15c0196cddea47216667bd905a8f 100644 (file)
@@ -260,20 +260,10 @@ EvtComplex EvtbTosllAmp::GetC7Eff(double q2, bool nnlo)
   A7 = -0.353 + 0.023;
   double A8;
   A8 = -0.164;
-  double A9;
-  A9 = 4.287 + (-0.218);
-  double A10;
-  A10 = -4.592 + 0.379;
   double C1;
   C1 = -0.697;
   double C2;
   C2 = 1.046;
-  double T9;
-  T9 = 0.114 + 0.280;
-  double U9;
-  U9 = 0.045 + 0.023;
-  double W9;
-  W9 = 0.044 + 0.016;
   
   double Lmu;
   Lmu = log(muscale/mbeff);
@@ -287,21 +277,13 @@ EvtComplex EvtbTosllAmp::GetC7Eff(double q2, bool nnlo)
    return c7eff;
   }
 
-
-
-
   // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
   muscale = 5.0;
   alphas = 0.215;
   A7 = -0.312 + 0.008;
   A8 = -0.148;
-  A9 = 4.174 + (-0.035);
-  A10 = -4.592 + 0.379;
   C1 = -0.487;
   C2 = 1.024;
-  T9 = 0.374 + 0.252;
-  U9 = 0.033 + 0.015;
-  W9 = 0.032 + 0.012;
   Lmu = log(muscale/mbeff);
 
   EvtComplex F71;
@@ -363,14 +345,10 @@ EvtComplex EvtbTosllAmp::GetC9Eff(double q2, bool nnlo, bool btod)
   muscale = 2.5;
   double alphas;
   alphas = 0.267;
-  double A7;
-  A7 = -0.353 + 0.023;
   double A8;
   A8 = -0.164;
   double A9;
   A9 = 4.287 + (-0.218);
-  double A10;
-  A10 = -4.592 + 0.379;
   double C1;
   C1 = -0.697;
   double C2;
index 6863a64b4553f652daf75821606ae92c79629232..3fad22b072edd07367a26f12705f93165603fac5 100644 (file)
@@ -30,6 +30,7 @@ class EvtComplex;
 class EvtbTosllAmp{
 
  public:
+  virtual ~EvtbTosllAmp() { } ;
 
   //Daughters are initialized and have been added to the parent.
   //No need to carry around the daughters seperately!
similarity index 96%
rename from TEvtGen/EvtGenModels/EvtbTosllBall.cxx
rename to TEvtGen/EvtGenModels/EvtbTosllBall.cpp
index 370046a65ef317dce381679096d5e3cb6b0ddae6..a110f6da4e41e7b2d8182c6326b76d8326bbbd39 100644 (file)
@@ -53,7 +53,8 @@ EvtDecayBase* EvtbTosllBall::clone(){
 
 void EvtbTosllBall::decay( EvtParticle *p ){
 
-  setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),_poleSize,1,2));
+  setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),false,
+                                    _poleSize,1,2));
 
   _calcamp->CalcAmp(p,_amp2,_ballffmodel);
   
similarity index 94%
rename from TEvtGen/EvtGenModels/EvtbTosllBallFF.cxx
rename to TEvtGen/EvtGenModels/EvtbTosllBallFF.cpp
index 42c66d50620577ef5f9f08aa27f4f9df2d5fa7c7..f42176b02802f80694700fdb63565d5aad6a5f5b 100644 (file)
@@ -24,7 +24,7 @@
 #include "EvtGenBase/EvtPatches.hh"
 #include "EvtGenBase/EvtPDL.hh"
 #include "EvtGenModels/EvtbTosllBallFF.hh"
-#include <math.h>
+#include <cmath>
 
 EvtbTosllBallFF::EvtbTosllBallFF(int ffmodel)
 {
@@ -210,8 +210,11 @@ void EvtbTosllBallFF::getVectorFF(EvtId parent, EvtId daught,
       daught == EvtPDL::getId(std::string("K*+")) ||
       daught == EvtPDL::getId(std::string("K*-")) ||
       daught == EvtPDL::getId(std::string("K*0")) ||
-      daught == EvtPDL::getId(std::string("anti-K*0"))
-     ) 
+      daught == EvtPDL::getId(std::string("anti-K*0")) ||
+      daught == EvtPDL::getId(std::string("K_1+")) ||
+      daught == EvtPDL::getId(std::string("K_1-"))
+
+     )
  {
   if (model == 1) {
         //this is Ali-Ball '01
@@ -287,8 +290,12 @@ void EvtbTosllBallFF::getVectorFF(EvtId parent, EvtId daught,
     t1 = (0.823 / (1. - (t/(5.32*5.32)))) + 
       (-0.491 / (1 - (t/46.31)));
     t2 = 0.333 / (1. - (t/41.41));
-    t3 = (-0.036 / (1. - (t/48.10))) + 
+    double t3tilde = (-0.036 / (1. - (t/48.10))) + 
       (0.368 / (1. - (t/48.10)) / (1. - (t/48.10)));
+    t3 = 0.0;
+    if (fabs(t) > 1e-10) {
+      t3 = (m*m - md*md)*(t3tilde - t2)/t;
+    }
   }
  }
  else if (daught == EvtPDL::getId(std::string("rho+")) ||
@@ -318,8 +325,13 @@ void EvtbTosllBallFF::getVectorFF(EvtId parent, EvtId daught,
        t1 = (0.897 / (1. - (t/(5.32*5.32)))) + 
         (-0.629 / (1 - (t/38.04)));
        t2 = 0.267 / (1. - (t/38.59));
-       t3 = (0.022 / (1. - (t/40.88))) + 
+       double t3tilde = (0.022 / (1. - (t/40.88))) + 
         (0.246 / (1. - (t/40.88)) / (1. - (t/40.88)));
+       t3 = 0.0;
+       if (fabs(t) > 1e-10) {
+        t3 = (m*m - md*md)*(t3tilde - t2)/t;
+       }
+
      }
    }
   else if (daught == EvtPDL::getId(std::string("omega"))
@@ -347,8 +359,12 @@ void EvtbTosllBallFF::getVectorFF(EvtId parent, EvtId daught,
        t1 = (0.865 / (1. - (t/(5.32*5.32)))) + 
         (-0.622 / (1 - (t/37.19)));
        t2 = 0.242 / (1. - (t/37.95));
-       t3 = (0.023 / (1. - (t/40.87))) + 
+       double t3tilde = (0.023 / (1. - (t/40.87))) + 
         (0.220 / (1. - (t/40.87)) / (1. - (t/40.87)));
+       t3 = 0.0;
+       if (fabs(t) > 1e-10) {
+        t3 = (m*m - md*md)*(t3tilde - t2)/t;
+       }
      }
     }
   else if (daught == EvtPDL::getId(std::string("phi"))
@@ -366,8 +382,12 @@ void EvtbTosllBallFF::getVectorFF(EvtId parent, EvtId daught,
        t1 = (1.303 / (1. - (t/(5.32*5.32)))) + 
         (-0.954 / (1 - (t/38.28)));
        t2 = 0.349 / (1. - (t/37.21));
-       t3 = (0.027 / (1. - (t/45.56))) + 
+       double t3tilde = (0.027 / (1. - (t/45.56))) + 
         (0.321 / (1. - (t/45.56)) / (1. - (t/45.56)));
+       t3 = 0.0;
+       if (fabs(t) > 1e-10) {
+        t3 = (m*m - md*md)*(t3tilde - t2)/t;
+       }
      }
     }
 
index 540c7ed966b8bd852e29de7b93a4ece3dc3ca5ad..a8a1a2a15b32a75dbf8060b2a12af2c3ec2f3212 100644 (file)
@@ -28,11 +28,15 @@ class EvtbTosllFF{
 
  public:
 
-  virtual void getScalarFF(EvtId parent, EvtId daught,double t, double mass, 
-                          double& fp,double& f0,double& ft) {return;}
-  virtual void getVectorFF(EvtId parent, EvtId daught,double t, double mass, 
-                          double& a1,double& a2,double& a0, double& v,
-                          double& t1, double& t2, double& t3 ) {return;}
+  virtual ~EvtbTosllFF( ) { } ;
+
+  virtual void getScalarFF(EvtId /*parent*/, EvtId /*daught*/,double /*t*/, 
+                           double /*mass*/, double& /*fp*/,double& /*f0*/,
+                          double& /*ft*/) {return;}
+  virtual void getVectorFF(EvtId /*parent*/, EvtId /*daught*/,double /*t*/, 
+                          double /*mass*/, double& /*a1*/,double& /*a2*/,
+                          double& /*a0*/, double& /*v*/,double& /*t1*/, 
+                          double& /*t2*/, double& /*t3*/ ) {return;}
 
 };
 
similarity index 89%
rename from TEvtGen/EvtGenModels/EvtbTosllVectorAmp.cxx
rename to TEvtGen/EvtGenModels/EvtbTosllVectorAmp.cpp
index c820ab65f6c8d93c8e063f902c496f99efcb75b8..42c79b64290993f8a68255c60ce40741e76f5610 100644 (file)
@@ -134,15 +134,15 @@ void EvtbTosllVectorAmp::CalcAmp( EvtParticle *parent,
 
   if (bmesons.contains(parentID)) {
 
-    T1=a*dual(directProd(pbhat,pkstarhat))
+    T1=a*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
        -b*uniti*EvtTensor4C::g()
-       +c*uniti*directProd(pbhat,phat)
-       +d*uniti*directProd(pbhat,qhat);
+       +c*uniti*EvtGenFunctions::directProd(pbhat,phat)
+       +d*uniti*EvtGenFunctions::directProd(pbhat,qhat);
     
-    T2=e*dual(directProd(pbhat,pkstarhat))
+    T2=e*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
        -f*uniti*EvtTensor4C::g()
-       +g*uniti*directProd(pbhat,phat)
-       +h*uniti*directProd(pbhat,qhat);
+       +g*uniti*EvtGenFunctions::directProd(pbhat,phat)
+       +h*uniti*EvtGenFunctions::directProd(pbhat,qhat);
     
     l11=EvtLeptonVCurrent(lepPlus->spParent(0),
                           lepMinus->spParent(0));
@@ -166,15 +166,15 @@ void EvtbTosllVectorAmp::CalcAmp( EvtParticle *parent,
     
     if (bbarmesons.contains(parentID)) {
 
-      T1=-a*dual(directProd(pbhat,pkstarhat))
+      T1=-a*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
          -b*uniti*EvtTensor4C::g()
-         +c*uniti*directProd(pbhat,phat)
-         +d*uniti*directProd(pbhat,qhat);
+         +c*uniti*EvtGenFunctions::directProd(pbhat,phat)
+         +d*uniti*EvtGenFunctions::directProd(pbhat,qhat);
       
-      T2=-e*dual(directProd(pbhat,pkstarhat))
+      T2=-e*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
          -f*uniti*EvtTensor4C::g()
-         +g*uniti*directProd(pbhat,phat)
-         +h*uniti*directProd(pbhat,qhat);
+         +g*uniti*EvtGenFunctions::directProd(pbhat,phat)
+         +h*uniti*EvtGenFunctions::directProd(pbhat,qhat);
       
       l11=EvtLeptonVCurrent(lepPlus->spParent(1),
                             lepMinus->spParent(1));
@@ -197,6 +197,7 @@ void EvtbTosllVectorAmp::CalcAmp( EvtParticle *parent,
     }
     else{
       report(ERROR,"EvtGen") << "Wrong lepton number\n";
+      T1.zero(); T2.zero(); // Set all tensor terms to zero.
     }    
   }
 
diff --git a/TEvtGen/EvtGenModels/Makefile b/TEvtGen/EvtGenModels/Makefile
deleted file mode 100644 (file)
index b4046a5..0000000
+++ /dev/null
@@ -1,15839 +0,0 @@
-
-#New EvtGen makefile October 5, 1998
-#Authors David Lange and Anders Ryd
-#include $(ROOTSYS)/test/Makefile.arch
-
-include $(ROOTSYS)/etc/vmc/Makefile.linux
-
-SRCSC= $(wildcard *.cc)
-SRCSF= $(wildcard *.F)
-
-OBJSC = $(SRCSC:%.cc=%.o)
-OBJSF = $(SRCSF:%.F=%.o)
-
-OBJS = $(OBJSC)
-OBJS += $(OBJSF)
-
-LIBOBJS=$(OBJS)
-
-include ../EvtGen/config.mk
-
-lib: depend comp ar shar
-#lib: comp ar
-
-
-comp:$(OBJS)
-
-clean:
-       rm -f *.o ../EvtGen/libEvtGenModels.a ../EvtGen/libEvtGenModels.so
-
-depend:
-       @echo "Checking makedepend in EvtGenModels"
-       @makedepend -- $(EVTDEPINC) -- $(SRCSC) $(SRCSF)
-
-
-#.cc.o:
-#      $(EVTCXX) $(EVTCXXFLAGS) -c $<
-
-#.cc.o:
-#      $(CXX) $(CXXFLAGS) $(EVTCXXFLAGS) -c $<
-
-
-CXXFLAGS = $(CXXOPTS) $(CLIBCXXOPTS) -I. -I$(ROOTSYS)/include -I$(GEANTSYS)/TGeant3 -fPIC
-
-.cc.o:
-       @$(CXX) $(CXXFLAGS) $(EVTCXXFLAGS) -c $<  
-
-#.F.o:
-#      $(EVTF77) $(EVTF77FLAGS) -c $<
-#      $(EVTF77) $(CXXFLAGS) $(EVTF77FLAGS) -c $<
-
-FFLAGS = $(FOPT) $(CLIBFOPT) -I. -I$(GEANTSYS)/minicern -fPIC
-
-.F.o:
-       @$(F77) $(FFLAGS) $(EVTF77FLAGS) -c $<
-
-ar:
-       @if (test -f ../libEvtGenModels.a ) then (rm ../libEvtGenModels.a) fi
-       @ar rv ../EvtGen/libEvtGenModels.a $(LIBOBJS) >& /dev/null
-       @echo "Done making libEvtGenModels.a"
-
-shar:
-       @$(CXX) $(CXXFLAGS) $(SOFLAGS) -o ../EvtGen/libEvtGenModels.so $(LIBOBJS) -L/home/fionda/cern/alice/v4-16-Rev-13_G3v1-10_Rv5-23-04/lib/tgt_linux/ -llhapdf -lpythia6 -lphotos -L/home/fionda/cern/root/v5-23-04/lib $(EVTSYSLIB) -lgfortran 
-       @echo "Done making libEvtGenModels.so"
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-EvtBBScalar.o: ../EvtGenBase/EvtPatches.hh ../EvtGenModels/EvtBBScalar.hh
-EvtBBScalar.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtBBScalar.o: ../EvtGenBase/EvtId.hh /usr/include/c++/3.4.6/iostream
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBBScalar.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBBScalar.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtBBScalar.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBBScalar.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBBScalar.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBBScalar.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBBScalar.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBBScalar.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBBScalar.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBBScalar.o: /usr/include/gconv.h
-EvtBBScalar.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBBScalar.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBBScalar.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBBScalar.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBBScalar.o: /usr/include/libintl.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBBScalar.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBBScalar.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBBScalar.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBBScalar.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtBBScalar.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBBScalar.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBBScalar.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBBScalar.o: /usr/include/stdint.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/exception
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/climits
-EvtBBScalar.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBBScalar.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBBScalar.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBBScalar.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/limits
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/algorithm
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBBScalar.o: /usr/include/c++/3.4.6/streambuf
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBBScalar.o: /usr/include/c++/3.4.6/locale
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBBScalar.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBBScalar.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBBScalar.o: /usr/include/c++/3.4.6/vector
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/vector.tcc ../EvtGenBase/EvtAmp.hh
-EvtBBScalar.o: ../EvtGenBase/EvtComplex.hh /usr/include/math.h
-EvtBBScalar.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBBScalar.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtConst.hh
-EvtBBScalar.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBBScalar.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBBScalar.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBBScalar.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtBBScalar.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtBBScalar.o: ../EvtGenBase/EvtScalarParticle.hh
-EvtBBScalar.o: ../EvtGenBase/EvtDiracParticle.hh
-EvtBBScalar.o: ../EvtGenBase/EvtDiracSpinor.hh ../EvtGenBase/EvtVector3R.hh
-EvtBBScalar.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtBBScalar.o: /usr/include/c++/3.4.6/bitset ../EvtGenBase/EvtGammaMatrix.hh
-EvtBBScalar.o: ../EvtGenBase/EvtTensor4C.hh /usr/include/c++/3.4.6/cmath
-EvtBBScalar.o: /usr/include/c++/3.4.6/bits/cmath.tcc
-EvtBHadronic.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBHadronic.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBHadronic.o: /usr/include/gnu/stubs.h
-EvtBHadronic.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBHadronic.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtBHadronic.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBHadronic.o: /usr/include/c++/3.4.6/iosfwd
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBHadronic.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBHadronic.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBHadronic.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBHadronic.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBHadronic.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBHadronic.o: /usr/include/gconv.h
-EvtBHadronic.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBHadronic.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBHadronic.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBHadronic.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBHadronic.o: /usr/include/libintl.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBHadronic.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBHadronic.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBHadronic.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBHadronic.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtBHadronic.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBHadronic.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBHadronic.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBHadronic.o: /usr/include/stdint.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/exception
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/climits
-EvtBHadronic.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBHadronic.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBHadronic.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBHadronic.o: /usr/include/c++/3.4.6/new
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/cassert
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/limits
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/algorithm
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBHadronic.o: /usr/include/c++/3.4.6/streambuf
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBHadronic.o: /usr/include/c++/3.4.6/locale
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBHadronic.o: /usr/include/c++/3.4.6/typeinfo
-EvtBHadronic.o: /usr/include/c++/3.4.6/istream
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBHadronic.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBHadronic.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtBHadronic.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtBHadronic.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtBHadronic.o: ../EvtGenBase/EvtReport.hh ../EvtGenModels/EvtISGW2FF.hh
-EvtBHadronic.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtBHadronic.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtBHadronic.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtBHadronic.o: /usr/include/c++/3.4.6/vector
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBHadronic.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBHadronic.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBHadronic.o: ../EvtGenBase/EvtTensor4C.hh ../EvtGenBase/EvtVector4C.hh
-EvtBHadronic.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtVector3R.hh
-EvtBHadronic.o: ../EvtGenModels/EvtBHadronic.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtBHadronic.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtBsquark.o: ../EvtGenBase/EvtPatches.hh /usr/include/c++/3.4.6/iostream
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBsquark.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBsquark.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtBsquark.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBsquark.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBsquark.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBsquark.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBsquark.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBsquark.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBsquark.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBsquark.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBsquark.o: /usr/include/gconv.h
-EvtBsquark.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBsquark.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBsquark.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBsquark.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBsquark.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBsquark.o: /usr/include/libintl.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBsquark.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtBsquark.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtBsquark.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtBsquark.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBsquark.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBsquark.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBsquark.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBsquark.o: /usr/include/bits/endian.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBsquark.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBsquark.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBsquark.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBsquark.o: /usr/include/c++/3.4.6/exception
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBsquark.o: /usr/include/c++/3.4.6/climits
-EvtBsquark.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBsquark.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBsquark.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBsquark.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBsquark.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBsquark.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBsquark.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBsquark.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBsquark.o: /usr/include/c++/3.4.6/limits
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBsquark.o: /usr/include/c++/3.4.6/algorithm
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBsquark.o: /usr/include/c++/3.4.6/streambuf
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBsquark.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBsquark.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBsquark.o: /usr/include/c++/3.4.6/locale
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBsquark.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBsquark.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtBsquark.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtBsquark.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtBsquark.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtBsquark.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtBsquark.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBsquark.o: ../EvtGenBase/EvtDiracParticle.hh
-EvtBsquark.o: ../EvtGenBase/EvtDiracSpinor.hh ../EvtGenBase/EvtVector3R.hh
-EvtBsquark.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBsquark.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBsquark.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBsquark.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBsquark.o: ../EvtGenBase/EvtIdSet.hh ../EvtGenBase/EvtGenKine.hh
-EvtBsquark.o: ../EvtGenModels/EvtBsquark.hh ../EvtGenBase/EvtDecayProb.hh
-EvtBsquark.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtGammaMatrix.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBto2piCPiso.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBto2piCPiso.o: /usr/include/gnu/stubs.h
-EvtBto2piCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBto2piCPiso.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtBto2piCPiso.o: ../EvtGenBase/EvtVector4R.hh
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/iostream
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/iosfwd
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/cstring
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBto2piCPiso.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtBto2piCPiso.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBto2piCPiso.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBto2piCPiso.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBto2piCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBto2piCPiso.o: /usr/include/bits/stdio_lim.h
-EvtBto2piCPiso.o: /usr/include/bits/sys_errlist.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBto2piCPiso.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBto2piCPiso.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBto2piCPiso.o: /usr/include/libintl.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBto2piCPiso.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBto2piCPiso.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBto2piCPiso.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBto2piCPiso.o: /usr/include/bits/pthreadtypes.h
-EvtBto2piCPiso.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBto2piCPiso.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBto2piCPiso.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBto2piCPiso.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBto2piCPiso.o: /usr/include/bits/endian.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBto2piCPiso.o: /usr/include/stdint.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/exception
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/climits
-EvtBto2piCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBto2piCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBto2piCPiso.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/new
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/cassert
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/limits
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/algorithm
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/streambuf
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/locale
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/typeinfo
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/istream
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBto2piCPiso.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBto2piCPiso.o: /usr/include/bits/mathcalls.h
-EvtBto2piCPiso.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtRandom.hh ../EvtGenBase/EvtGenKine.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtPDL.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtPartProp.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/vector
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBto2piCPiso.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBto2piCPiso.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBto2piCPiso.o: ../EvtGenModels/EvtBto2piCPiso.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtBto2piCPiso.o: ../EvtGenBase/EvtAmp.hh
-EvtBTo3piCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBTo3piCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBTo3piCP.o: /usr/include/gnu/stubs.h
-EvtBTo3piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBTo3piCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtBTo3piCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBTo3piCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBTo3piCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBTo3piCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBTo3piCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBTo3piCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBTo3piCP.o: /usr/include/gconv.h
-EvtBTo3piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBTo3piCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBTo3piCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBTo3piCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBTo3piCP.o: /usr/include/libintl.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBTo3piCP.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBTo3piCP.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBTo3piCP.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBTo3piCP.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtBTo3piCP.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBTo3piCP.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBTo3piCP.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBTo3piCP.o: /usr/include/stdint.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/exception
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/climits
-EvtBTo3piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBTo3piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBTo3piCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/new
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/cassert
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/limits
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/algorithm
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/streambuf
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/locale
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBTo3piCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBTo3piCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtBTo3piCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtBTo3piCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtBTo3piCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtCPUtil.hh
-EvtBTo3piCP.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBTo3piCP.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBTo3piCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBTo3piCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBTo3piCP.o: ../EvtGenModels/EvtBTo3piCP.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtBTo3piCP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtBTo4piCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBTo4piCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBTo4piCP.o: /usr/include/gnu/stubs.h
-EvtBTo4piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBTo4piCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtBTo4piCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBTo4piCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBTo4piCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBTo4piCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBTo4piCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBTo4piCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBTo4piCP.o: /usr/include/gconv.h
-EvtBTo4piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBTo4piCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBTo4piCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBTo4piCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBTo4piCP.o: /usr/include/libintl.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBTo4piCP.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBTo4piCP.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBTo4piCP.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBTo4piCP.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtBTo4piCP.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBTo4piCP.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBTo4piCP.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBTo4piCP.o: /usr/include/stdint.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/exception
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/climits
-EvtBTo4piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBTo4piCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBTo4piCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/new
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/cassert
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/limits
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/algorithm
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/streambuf
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/locale
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBTo4piCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBTo4piCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtBTo4piCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtBTo4piCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtBTo4piCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtBTo4piCP.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtPDL.hh
-EvtBTo4piCP.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/vector
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBTo4piCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBTo4piCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBTo4piCP.o: ../EvtGenModels/EvtBTo4piCP.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtBTo4piCP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtPatches.hh /usr/include/assert.h
-EvtBtoKD3P.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoKD3P.o: /usr/include/gnu/stubs.h ../EvtGenModels/EvtBtoKD3P.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtId.hh /usr/include/c++/3.4.6/iostream
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBtoKD3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoKD3P.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBtoKD3P.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBtoKD3P.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBtoKD3P.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBtoKD3P.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBtoKD3P.o: /usr/include/gconv.h
-EvtBtoKD3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoKD3P.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoKD3P.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoKD3P.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoKD3P.o: /usr/include/libintl.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoKD3P.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtBtoKD3P.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtBtoKD3P.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtBtoKD3P.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBtoKD3P.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBtoKD3P.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBtoKD3P.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBtoKD3P.o: /usr/include/bits/endian.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBtoKD3P.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/exception
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/climits
-EvtBtoKD3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoKD3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoKD3P.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoKD3P.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/cassert
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/limits
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/locale
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBtoKD3P.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/vector
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/vector.tcc ../EvtGenBase/EvtAmp.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtComplex.hh /usr/include/math.h
-EvtBtoKD3P.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBtoKD3P.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtConst.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtDecayTable.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtParticle.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtVector4R.hh ../EvtGenBase/EvtSpinDensity.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtRandom.hh ../EvtGenModels/EvtPto3P.hh
-EvtBtoKD3P.o: ../EvtGenModels/EvtIntervalDecayAmp.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtMacros.hh ../EvtGenBase/EvtPdf.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtValError.hh ../EvtGenBase/EvtPredGen.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtStreamInputIterator.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtStreamAdapter.hh
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/iterator
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stream_iterator.h
-EvtBtoKD3P.o: ../EvtGenBase/EvtPdfMax.hh ../EvtGenBase/EvtAmpFactory.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtAmplitudeSum.hh ../EvtGenBase/EvtAmplitude.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtPdfSum.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtMultiChannelParser.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtAmpPdf.hh ../EvtGenBase/EvtCPUtil.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtAbsLineShape.hh ../EvtGenBase/EvtStringHash.hh
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/map
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoKD3P.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoKD3P.o: ../EvtGenBase/EvtCyclic3.hh ../EvtGenBase/EvtDalitzPoint.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtDalitzCoord.hh ../EvtGenBase/EvtDalitzPlot.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtTwoBodyVertex.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtTwoBodyKine.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtBlattWeisskopf.hh
-EvtBtoKD3P.o: ../EvtGenBase/EvtDecayMode.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoKpiCPiso.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoKpiCPiso.o: /usr/include/gnu/stubs.h
-EvtBtoKpiCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtVector4R.hh
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/iostream
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/cstring
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoKpiCPiso.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtBtoKpiCPiso.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoKpiCPiso.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoKpiCPiso.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoKpiCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoKpiCPiso.o: /usr/include/bits/stdio_lim.h
-EvtBtoKpiCPiso.o: /usr/include/bits/sys_errlist.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoKpiCPiso.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoKpiCPiso.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoKpiCPiso.o: /usr/include/libintl.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoKpiCPiso.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoKpiCPiso.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoKpiCPiso.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoKpiCPiso.o: /usr/include/bits/pthreadtypes.h
-EvtBtoKpiCPiso.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBtoKpiCPiso.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBtoKpiCPiso.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBtoKpiCPiso.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBtoKpiCPiso.o: /usr/include/bits/endian.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBtoKpiCPiso.o: /usr/include/stdint.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/exception
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/climits
-EvtBtoKpiCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoKpiCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoKpiCPiso.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/new
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/cassert
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/limits
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/locale
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/istream
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBtoKpiCPiso.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBtoKpiCPiso.o: /usr/include/bits/mathcalls.h
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtPartProp.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/vector
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoKpiCPiso.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoKpiCPiso.o: ../EvtGenModels/EvtBtoKpiCPiso.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtBtoKpiCPiso.o: ../EvtGenBase/EvtAmp.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBToKpipiCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBToKpipiCP.o: /usr/include/gnu/stubs.h
-EvtBToKpipiCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBToKpipiCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtBToKpipiCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/cstring
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBToKpipiCP.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtBToKpipiCP.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBToKpipiCP.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBToKpipiCP.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBToKpipiCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBToKpipiCP.o: /usr/include/bits/stdio_lim.h
-EvtBToKpipiCP.o: /usr/include/bits/sys_errlist.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBToKpipiCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBToKpipiCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBToKpipiCP.o: /usr/include/libintl.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBToKpipiCP.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBToKpipiCP.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBToKpipiCP.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBToKpipiCP.o: /usr/include/bits/pthreadtypes.h
-EvtBToKpipiCP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBToKpipiCP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBToKpipiCP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBToKpipiCP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBToKpipiCP.o: /usr/include/bits/endian.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBToKpipiCP.o: /usr/include/stdint.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/exception
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/climits
-EvtBToKpipiCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBToKpipiCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBToKpipiCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/new
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/cassert
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/limits
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/algorithm
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/streambuf
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/locale
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/typeinfo
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/istream
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBToKpipiCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBToKpipiCP.o: /usr/include/bits/mathcalls.h
-EvtBToKpipiCP.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtCPUtil.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/vector
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBToKpipiCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBToKpipiCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBToKpipiCP.o: ../EvtGenModels/EvtBToKpipiCP.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtBToKpipiCP.o: ../EvtGenBase/EvtAmp.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBToPlnuBK.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBToPlnuBK.o: /usr/include/gnu/stubs.h
-EvtBToPlnuBK.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBToPlnuBK.o: /usr/include/assert.h ../EvtGenBase/EvtParticle.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/iosfwd
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBToPlnuBK.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBToPlnuBK.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBToPlnuBK.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBToPlnuBK.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBToPlnuBK.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBToPlnuBK.o: /usr/include/gconv.h
-EvtBToPlnuBK.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBToPlnuBK.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBToPlnuBK.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBToPlnuBK.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBToPlnuBK.o: /usr/include/libintl.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBToPlnuBK.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBToPlnuBK.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBToPlnuBK.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBToPlnuBK.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtBToPlnuBK.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBToPlnuBK.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBToPlnuBK.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBToPlnuBK.o: /usr/include/stdint.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/exception
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/climits
-EvtBToPlnuBK.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBToPlnuBK.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBToPlnuBK.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/new
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/cassert
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/limits
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/algorithm
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/streambuf
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/locale
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/typeinfo
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/istream
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBToPlnuBK.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBToPlnuBK.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/vector
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBToPlnuBK.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBToPlnuBK.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBToPlnuBK.o: ../EvtGenModels/EvtBToPlnuBK.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtBToPlnuBK.o: ../EvtGenModels/EvtBToPlnuBKFF.hh
-EvtBToPlnuBK.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtBToPlnuBKFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/iostream
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBToPlnuBKFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBToPlnuBKFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/cstring
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/cstddef
-EvtBToPlnuBKFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBToPlnuBKFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBToPlnuBKFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBToPlnuBKFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBToPlnuBKFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBToPlnuBKFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBToPlnuBKFF.o: /usr/include/gconv.h
-EvtBToPlnuBKFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBToPlnuBKFF.o: /usr/include/bits/stdio_lim.h
-EvtBToPlnuBKFF.o: /usr/include/bits/sys_errlist.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBToPlnuBKFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBToPlnuBKFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBToPlnuBKFF.o: /usr/include/libintl.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBToPlnuBKFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBToPlnuBKFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBToPlnuBKFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBToPlnuBKFF.o: /usr/include/bits/pthreadtypes.h
-EvtBToPlnuBKFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBToPlnuBKFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBToPlnuBKFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBToPlnuBKFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBToPlnuBKFF.o: /usr/include/bits/endian.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBToPlnuBKFF.o: /usr/include/stdint.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/exception
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/climits
-EvtBToPlnuBKFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBToPlnuBKFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBToPlnuBKFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBToPlnuBKFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/limits
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/algorithm
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/streambuf
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/locale
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/typeinfo
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/istream
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBToPlnuBKFF.o: ../EvtGenModels/EvtBToPlnuBKFF.hh
-EvtBToPlnuBKFF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtBToPlnuBKFF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBToPlnuBKFF.o: ../EvtGenBase/EvtSpinType.hh
-EvtBToPlnuBKFF.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/vector
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBToPlnuBKFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBToPlnuBKFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBToPlnuBKFF.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtBToPlnuBKFF.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtbTosllAli.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtbTosllAli.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtbTosllAli.o: /usr/include/gnu/stubs.h
-EvtbTosllAli.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtbTosllAli.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtbTosllAli.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtbTosllAli.o: /usr/include/c++/3.4.6/iosfwd
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtbTosllAli.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtbTosllAli.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtbTosllAli.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtbTosllAli.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtbTosllAli.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtbTosllAli.o: /usr/include/gconv.h
-EvtbTosllAli.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtbTosllAli.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtbTosllAli.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtbTosllAli.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtbTosllAli.o: /usr/include/libintl.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtbTosllAli.o: /usr/include/pthread.h /usr/include/sched.h
-EvtbTosllAli.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtbTosllAli.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtbTosllAli.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtbTosllAli.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtbTosllAli.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtbTosllAli.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtbTosllAli.o: /usr/include/stdint.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/exception
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/climits
-EvtbTosllAli.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtbTosllAli.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtbTosllAli.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtbTosllAli.o: /usr/include/c++/3.4.6/new
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/cassert
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/limits
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/algorithm
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtbTosllAli.o: /usr/include/c++/3.4.6/streambuf
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtbTosllAli.o: /usr/include/c++/3.4.6/locale
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtbTosllAli.o: /usr/include/c++/3.4.6/typeinfo
-EvtbTosllAli.o: /usr/include/c++/3.4.6/istream
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtbTosllAli.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtbTosllAli.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtbTosllAli.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtbTosllAli.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtbTosllAli.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtbTosllAli.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtbTosllAli.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtbTosllAli.o: /usr/include/c++/3.4.6/vector
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtbTosllAli.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtbTosllAli.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtbTosllAli.o: ../EvtGenModels/EvtbTosllAli.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtbTosllAli.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtbTosllAli.o: ../EvtGenModels/EvtbTosllAliFF.hh
-EvtbTosllAli.o: ../EvtGenModels/EvtbTosllFF.hh
-EvtbTosllAli.o: ../EvtGenModels/EvtbTosllAmp.hh
-EvtbTosllAli.o: ../EvtGenModels/EvtbTosllScalarAmp.hh
-EvtbTosllAli.o: ../EvtGenModels/EvtbTosllVectorAmp.hh
-EvtbTosllAliFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtPDL.hh
-EvtbTosllAliFF.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtSpinType.hh
-EvtbTosllAliFF.o: ../EvtGenBase/EvtReport.hh /usr/include/c++/3.4.6/iostream
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtbTosllAliFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtbTosllAliFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/cstring
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/cstddef
-EvtbTosllAliFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtbTosllAliFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtbTosllAliFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtbTosllAliFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtbTosllAliFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtbTosllAliFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtbTosllAliFF.o: /usr/include/gconv.h
-EvtbTosllAliFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtbTosllAliFF.o: /usr/include/bits/stdio_lim.h
-EvtbTosllAliFF.o: /usr/include/bits/sys_errlist.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtbTosllAliFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtbTosllAliFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtbTosllAliFF.o: /usr/include/libintl.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtbTosllAliFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtbTosllAliFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtbTosllAliFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtbTosllAliFF.o: /usr/include/bits/pthreadtypes.h
-EvtbTosllAliFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtbTosllAliFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtbTosllAliFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtbTosllAliFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtbTosllAliFF.o: /usr/include/bits/endian.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtbTosllAliFF.o: /usr/include/stdint.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/exception
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/climits
-EvtbTosllAliFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtbTosllAliFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtbTosllAliFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtbTosllAliFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/limits
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/algorithm
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/streambuf
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/locale
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/typeinfo
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/istream
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtbTosllAliFF.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/vector
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtbTosllAliFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtbTosllAliFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtbTosllAliFF.o: ../EvtGenModels/EvtbTosllAliFF.hh
-EvtbTosllAliFF.o: ../EvtGenModels/EvtbTosllFF.hh /usr/include/math.h
-EvtbTosllAliFF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtbTosllAliFF.o: /usr/include/bits/mathcalls.h
-EvtbTosllAmp.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtParticle.hh
-EvtbTosllAmp.o: /usr/include/assert.h /usr/include/features.h
-EvtbTosllAmp.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtbTosllAmp.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/iosfwd
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtbTosllAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtbTosllAmp.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtbTosllAmp.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtbTosllAmp.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtbTosllAmp.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtbTosllAmp.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtbTosllAmp.o: /usr/include/gconv.h
-EvtbTosllAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtbTosllAmp.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtbTosllAmp.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtbTosllAmp.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtbTosllAmp.o: /usr/include/libintl.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtbTosllAmp.o: /usr/include/pthread.h /usr/include/sched.h
-EvtbTosllAmp.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtbTosllAmp.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtbTosllAmp.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtbTosllAmp.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtbTosllAmp.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtbTosllAmp.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtbTosllAmp.o: /usr/include/stdint.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/exception
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/climits
-EvtbTosllAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtbTosllAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtbTosllAmp.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtbTosllAmp.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/cassert
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/limits
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/algorithm
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/streambuf
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/locale
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/typeinfo
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/istream
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtbTosllAmp.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtbTosllAmp.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/vector
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtbTosllAmp.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtbTosllAmp.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtbTosllAmp.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtDiracSpinor.hh
-EvtbTosllAmp.o: ../EvtGenModels/EvtbTosllAmp.hh ../EvtGenBase/EvtAmp.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtScalarParticle.hh
-EvtbTosllAmp.o: ../EvtGenBase/EvtVectorParticle.hh ../EvtGenBase/EvtDiLog.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtbTosllBall.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtbTosllBall.o: /usr/include/gnu/stubs.h
-EvtbTosllBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtbTosllBall.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtbTosllBall.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtbTosllBall.o: /usr/include/c++/3.4.6/iosfwd
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/cstring
-EvtbTosllBall.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtbTosllBall.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtbTosllBall.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtbTosllBall.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtbTosllBall.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtbTosllBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtbTosllBall.o: /usr/include/bits/stdio_lim.h
-EvtbTosllBall.o: /usr/include/bits/sys_errlist.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtbTosllBall.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtbTosllBall.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtbTosllBall.o: /usr/include/libintl.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtbTosllBall.o: /usr/include/pthread.h /usr/include/sched.h
-EvtbTosllBall.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtbTosllBall.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtbTosllBall.o: /usr/include/bits/pthreadtypes.h
-EvtbTosllBall.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtbTosllBall.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtbTosllBall.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtbTosllBall.o: /usr/include/ctype.h /usr/include/endian.h
-EvtbTosllBall.o: /usr/include/bits/endian.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtbTosllBall.o: /usr/include/stdint.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/exception
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/climits
-EvtbTosllBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtbTosllBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtbTosllBall.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtbTosllBall.o: /usr/include/c++/3.4.6/new
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/cassert
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/limits
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/algorithm
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtbTosllBall.o: /usr/include/c++/3.4.6/streambuf
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtbTosllBall.o: /usr/include/c++/3.4.6/locale
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtbTosllBall.o: /usr/include/c++/3.4.6/typeinfo
-EvtbTosllBall.o: /usr/include/c++/3.4.6/istream
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtbTosllBall.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtbTosllBall.o: /usr/include/bits/mathcalls.h
-EvtbTosllBall.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtPartProp.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtbTosllBall.o: /usr/include/c++/3.4.6/vector
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtbTosllBall.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtbTosllBall.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtbTosllBall.o: ../EvtGenModels/EvtbTosllBall.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtbTosllBall.o: ../EvtGenBase/EvtAmp.hh ../EvtGenModels/EvtbTosllBallFF.hh
-EvtbTosllBall.o: ../EvtGenModels/EvtbTosllFF.hh
-EvtbTosllBall.o: ../EvtGenModels/EvtbTosllAmp.hh
-EvtbTosllBall.o: ../EvtGenModels/EvtbTosllScalarAmp.hh
-EvtbTosllBall.o: ../EvtGenModels/EvtbTosllVectorAmp.hh
-EvtbTosllBallFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtPDL.hh
-EvtbTosllBallFF.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtSpinType.hh
-EvtbTosllBallFF.o: ../EvtGenBase/EvtReport.hh /usr/include/c++/3.4.6/iostream
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtbTosllBallFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtbTosllBallFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/cstring
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/cstddef
-EvtbTosllBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtbTosllBallFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtbTosllBallFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtbTosllBallFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtbTosllBallFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtbTosllBallFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtbTosllBallFF.o: /usr/include/gconv.h
-EvtbTosllBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtbTosllBallFF.o: /usr/include/bits/stdio_lim.h
-EvtbTosllBallFF.o: /usr/include/bits/sys_errlist.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtbTosllBallFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtbTosllBallFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtbTosllBallFF.o: /usr/include/libintl.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtbTosllBallFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtbTosllBallFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtbTosllBallFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtbTosllBallFF.o: /usr/include/bits/pthreadtypes.h
-EvtbTosllBallFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtbTosllBallFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtbTosllBallFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtbTosllBallFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtbTosllBallFF.o: /usr/include/bits/endian.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtbTosllBallFF.o: /usr/include/stdint.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/exception
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/climits
-EvtbTosllBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtbTosllBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtbTosllBallFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtbTosllBallFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/string
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/memory
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/limits
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/algorithm
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/streambuf
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/locale
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/typeinfo
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/istream
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtbTosllBallFF.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/vector
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtbTosllBallFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtbTosllBallFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtbTosllBallFF.o: ../EvtGenModels/EvtbTosllBallFF.hh
-EvtbTosllBallFF.o: ../EvtGenModels/EvtbTosllFF.hh /usr/include/math.h
-EvtbTosllBallFF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtbTosllBallFF.o: /usr/include/bits/mathcalls.h
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtConst.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtbTosllScalarAmp.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtbTosllScalarAmp.o: /usr/include/gnu/stubs.h ../EvtGenBase/EvtVector4R.hh
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/iostream
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/ostream
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/ios
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/iosfwd
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/cstring
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/cstddef
-EvtbTosllScalarAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtbTosllScalarAmp.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtbTosllScalarAmp.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtbTosllScalarAmp.o: /usr/include/bits/wordsize.h
-EvtbTosllScalarAmp.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtbTosllScalarAmp.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtbTosllScalarAmp.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtbTosllScalarAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtbTosllScalarAmp.o: /usr/include/bits/stdio_lim.h
-EvtbTosllScalarAmp.o: /usr/include/bits/sys_errlist.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtbTosllScalarAmp.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtbTosllScalarAmp.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtbTosllScalarAmp.o: /usr/include/libintl.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtbTosllScalarAmp.o: /usr/include/pthread.h /usr/include/sched.h
-EvtbTosllScalarAmp.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtbTosllScalarAmp.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtbTosllScalarAmp.o: /usr/include/bits/pthreadtypes.h
-EvtbTosllScalarAmp.o: /usr/include/bits/initspin.h
-EvtbTosllScalarAmp.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtbTosllScalarAmp.o: /usr/include/bits/posix_opt.h
-EvtbTosllScalarAmp.o: /usr/include/bits/confname.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtbTosllScalarAmp.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/cwchar
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/exception
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/climits
-EvtbTosllScalarAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtbTosllScalarAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtbTosllScalarAmp.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtbTosllScalarAmp.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/cassert
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/string
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/memory
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/limits
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/algorithm
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/streambuf
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/locale
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/typeinfo
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/istream
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtbTosllScalarAmp.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtbTosllScalarAmp.o: /usr/include/bits/mathdef.h
-EvtbTosllScalarAmp.o: /usr/include/bits/mathcalls.h
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtId.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtPartProp.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/vector
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtStringHash.hh
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/map
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtbTosllScalarAmp.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtVector4C.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtVector3C.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtVector3R.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtTensor4C.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtDiracSpinor.hh
-EvtbTosllScalarAmp.o: ../EvtGenModels/EvtbTosllScalarAmp.hh
-EvtbTosllScalarAmp.o: ../EvtGenModels/EvtbTosllAmp.hh
-EvtbTosllScalarAmp.o: ../EvtGenBase/EvtIdSet.hh ../EvtGenBase/EvtAmp.hh
-EvtbTosllScalarAmp.o: ../EvtGenModels/EvtbTosllFF.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtPatches.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtbTosllVectorAmp.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtbTosllVectorAmp.o: /usr/include/gnu/stubs.h ../EvtGenBase/EvtVector4R.hh
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/iostream
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/ostream
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/ios
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/iosfwd
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/cstring
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/cstddef
-EvtbTosllVectorAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtbTosllVectorAmp.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtbTosllVectorAmp.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtbTosllVectorAmp.o: /usr/include/bits/wordsize.h
-EvtbTosllVectorAmp.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtbTosllVectorAmp.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtbTosllVectorAmp.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtbTosllVectorAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtbTosllVectorAmp.o: /usr/include/bits/stdio_lim.h
-EvtbTosllVectorAmp.o: /usr/include/bits/sys_errlist.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtbTosllVectorAmp.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtbTosllVectorAmp.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtbTosllVectorAmp.o: /usr/include/libintl.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtbTosllVectorAmp.o: /usr/include/pthread.h /usr/include/sched.h
-EvtbTosllVectorAmp.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtbTosllVectorAmp.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtbTosllVectorAmp.o: /usr/include/bits/pthreadtypes.h
-EvtbTosllVectorAmp.o: /usr/include/bits/initspin.h
-EvtbTosllVectorAmp.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtbTosllVectorAmp.o: /usr/include/bits/posix_opt.h
-EvtbTosllVectorAmp.o: /usr/include/bits/confname.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtbTosllVectorAmp.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/cwchar
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/exception
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/climits
-EvtbTosllVectorAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtbTosllVectorAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtbTosllVectorAmp.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtbTosllVectorAmp.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/cassert
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/string
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/memory
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/limits
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/algorithm
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/streambuf
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/locale
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/typeinfo
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/istream
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtbTosllVectorAmp.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtbTosllVectorAmp.o: /usr/include/bits/mathdef.h
-EvtbTosllVectorAmp.o: /usr/include/bits/mathcalls.h
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/vector
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtStringHash.hh
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/map
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtbTosllVectorAmp.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtVector4C.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtVector3C.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtVector3R.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtTensor4C.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtDiracSpinor.hh
-EvtbTosllVectorAmp.o: ../EvtGenModels/EvtbTosllVectorAmp.hh
-EvtbTosllVectorAmp.o: ../EvtGenModels/EvtbTosllAmp.hh
-EvtbTosllVectorAmp.o: ../EvtGenBase/EvtIdSet.hh ../EvtGenBase/EvtAmp.hh
-EvtbTosllVectorAmp.o: ../EvtGenModels/EvtbTosllFF.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBToVlnuBall.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBToVlnuBall.o: /usr/include/gnu/stubs.h
-EvtBToVlnuBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBToVlnuBall.o: /usr/include/assert.h ../EvtGenBase/EvtParticle.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtVector4R.hh
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/iostream
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/iosfwd
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/cstring
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBToVlnuBall.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtBToVlnuBall.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBToVlnuBall.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBToVlnuBall.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBToVlnuBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBToVlnuBall.o: /usr/include/bits/stdio_lim.h
-EvtBToVlnuBall.o: /usr/include/bits/sys_errlist.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBToVlnuBall.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBToVlnuBall.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBToVlnuBall.o: /usr/include/libintl.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBToVlnuBall.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBToVlnuBall.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBToVlnuBall.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBToVlnuBall.o: /usr/include/bits/pthreadtypes.h
-EvtBToVlnuBall.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBToVlnuBall.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBToVlnuBall.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBToVlnuBall.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBToVlnuBall.o: /usr/include/bits/endian.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBToVlnuBall.o: /usr/include/stdint.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/exception
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/climits
-EvtBToVlnuBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBToVlnuBall.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBToVlnuBall.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/new
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/cassert
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/limits
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/algorithm
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/streambuf
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/locale
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/typeinfo
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/istream
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBToVlnuBall.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBToVlnuBall.o: /usr/include/bits/mathcalls.h
-EvtBToVlnuBall.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtPartProp.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/vector
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBToVlnuBall.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBToVlnuBall.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBToVlnuBall.o: ../EvtGenModels/EvtBToVlnuBall.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtBToVlnuBall.o: ../EvtGenModels/EvtBToVlnuBallFF.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtBToVlnuBall.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtBToVlnuBallFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/iostream
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBToVlnuBallFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBToVlnuBallFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/cstring
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/cstddef
-EvtBToVlnuBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBToVlnuBallFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBToVlnuBallFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBToVlnuBallFF.o: /usr/include/bits/wordsize.h
-EvtBToVlnuBallFF.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBToVlnuBallFF.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBToVlnuBallFF.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBToVlnuBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBToVlnuBallFF.o: /usr/include/bits/stdio_lim.h
-EvtBToVlnuBallFF.o: /usr/include/bits/sys_errlist.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBToVlnuBallFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBToVlnuBallFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBToVlnuBallFF.o: /usr/include/libintl.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBToVlnuBallFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBToVlnuBallFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBToVlnuBallFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBToVlnuBallFF.o: /usr/include/bits/pthreadtypes.h
-EvtBToVlnuBallFF.o: /usr/include/bits/initspin.h
-EvtBToVlnuBallFF.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBToVlnuBallFF.o: /usr/include/bits/posix_opt.h
-EvtBToVlnuBallFF.o: /usr/include/bits/confname.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBToVlnuBallFF.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/cwchar
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/exception
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/climits
-EvtBToVlnuBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBToVlnuBallFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBToVlnuBallFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBToVlnuBallFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/string
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/memory
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/limits
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/algorithm
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/streambuf
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/locale
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/typeinfo
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/istream
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBToVlnuBallFF.o: ../EvtGenModels/EvtBToVlnuBallFF.hh
-EvtBToVlnuBallFF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtBToVlnuBallFF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBToVlnuBallFF.o: ../EvtGenBase/EvtSpinType.hh
-EvtBToVlnuBallFF.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/vector
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBToVlnuBallFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBToVlnuBallFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBToVlnuBallFF.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtBToVlnuBallFF.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtBtoXsEtap.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsEtap.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsEtap.o: /usr/include/gnu/stubs.h
-EvtBtoXsEtap.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsEtap.o: ../EvtGenBase/EvtRandom.hh ../EvtGenBase/EvtParticle.hh
-EvtBtoXsEtap.o: /usr/include/assert.h ../EvtGenBase/EvtVector4R.hh
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBtoXsEtap.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBtoXsEtap.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBtoXsEtap.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBtoXsEtap.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBtoXsEtap.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBtoXsEtap.o: /usr/include/gconv.h
-EvtBtoXsEtap.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsEtap.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoXsEtap.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoXsEtap.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoXsEtap.o: /usr/include/libintl.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsEtap.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsEtap.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsEtap.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsEtap.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtBtoXsEtap.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBtoXsEtap.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBtoXsEtap.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBtoXsEtap.o: /usr/include/stdint.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsEtap.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsEtap.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsEtap.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/new
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBtoXsEtap.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBtoXsEtap.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtBtoXsEtap.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtBtoXsEtap.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtBtoXsEtap.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtBtoXsEtap.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBtoXsEtap.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsEtap.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoXsEtap.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoXsEtap.o: ../EvtGenModels/EvtBtoXsEtap.hh
-EvtBtoXsEtap.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtBtoXsEtap.o: ../EvtGenBase/EvtDecayBase.hh
-EvtBtoXsgammaAbsModel.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsgammaAbsModel.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgammaAbsModel.o: /usr/include/gnu/stubs.h
-EvtBtoXsgammaAbsModel.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgammaAbsModel.o: ../EvtGenModels/EvtBtoXsgammaAbsModel.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsgammaAliGreub.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgammaAliGreub.o: /usr/include/gnu/stubs.h
-EvtBtoXsgammaAliGreub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtRandom.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenModels/EvtBtoXsgammaAliGreub.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenModels/EvtBtoXsgammaAbsModel.hh
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/string
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsgammaAliGreub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsgammaAliGreub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsgammaAliGreub.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/new
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/types.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/wordsize.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsgammaAliGreub.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsgammaAliGreub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoXsgammaAliGreub.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoXsgammaAliGreub.o: /usr/include/libintl.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsgammaAliGreub.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsgammaAliGreub.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsgammaAliGreub.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/initspin.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/posix_opt.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/confname.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBtoXsgammaAliGreub.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/cwchar
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/memory
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtConst.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtParticle.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtVector4R.hh
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/ostream
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/ios
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBtoXsgammaAliGreub.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/mathdef.h
-EvtBtoXsgammaAliGreub.o: /usr/include/bits/mathcalls.h
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtId.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtSpinType.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtReport.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtPartProp.hh
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsgammaAliGreub.o: ../EvtGenBase/EvtStringHash.hh
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/map
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoXsgammaAliGreub.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoXsgamma.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsgamma.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgamma.o: /usr/include/gnu/stubs.h
-EvtBtoXsgamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgamma.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtBtoXsgamma.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoXsgamma.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtBtoXsgamma.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsgamma.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsgamma.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsgamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsgamma.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsgamma.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoXsgamma.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoXsgamma.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoXsgamma.o: /usr/include/libintl.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsgamma.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsgamma.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsgamma.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsgamma.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsgamma.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBtoXsgamma.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBtoXsgamma.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBtoXsgamma.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBtoXsgamma.o: /usr/include/bits/endian.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBtoXsgamma.o: /usr/include/stdint.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsgamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsgamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsgamma.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/new
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBtoXsgamma.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBtoXsgamma.o: /usr/include/bits/mathcalls.h
-EvtBtoXsgamma.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtBtoXsgamma.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtBtoXsgamma.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBtoXsgamma.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtBtoXsgamma.o: ../EvtGenBase/EvtPartProp.hh
-EvtBtoXsgamma.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsgamma.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoXsgamma.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoXsgamma.o: ../EvtGenModels/EvtBtoXsgamma.hh
-EvtBtoXsgamma.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtBtoXsgamma.o: ../EvtGenBase/EvtDecayBase.hh
-EvtBtoXsgamma.o: ../EvtGenModels/EvtBtoXsgammaAliGreub.hh
-EvtBtoXsgamma.o: ../EvtGenModels/EvtBtoXsgammaAbsModel.hh
-EvtBtoXsgamma.o: ../EvtGenModels/EvtBtoXsgammaKagan.hh
-EvtBtoXsgamma.o: ../EvtGenModels/EvtBtoXsgammaFixedMass.hh
-EvtBtoXsgamma.o: ../EvtGenModels/EvtBtoXsgammaFlatEnergy.hh
-EvtBtoXsgammaFermiUtil.o: ../EvtGenBase/EvtPatches.hh
-EvtBtoXsgammaFermiUtil.o: ../EvtGenModels/EvtBtoXsgammaFermiUtil.hh
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/gnu/stubs.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cstddef
-EvtBtoXsgammaFermiUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/string.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsgammaFermiUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsgammaFermiUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/limits.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsgammaFermiUtil.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/types.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/wordsize.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsgammaFermiUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/clocale
-EvtBtoXsgammaFermiUtil.o: /usr/include/locale.h /usr/include/bits/locale.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/langinfo.h /usr/include/nl_types.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/iconv.h /usr/include/libintl.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/initspin.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/posix_opt.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/confname.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cwchar
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsgammaFermiUtil.o: /usr/include/assert.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsgammaFermiUtil.o: ../EvtGenModels/EvtItgTwoCoeffFcn.hh
-EvtBtoXsgammaFermiUtil.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtBtoXsgammaFermiUtil.o: ../EvtGenModels/EvtBtoXsgammaRootFinder.hh
-EvtBtoXsgammaFermiUtil.o: ../EvtGenModels/EvtItgFunction.hh
-EvtBtoXsgammaFermiUtil.o: ../EvtGenBase/EvtConst.hh
-EvtBtoXsgammaFermiUtil.o: ../EvtGenBase/EvtReport.hh
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/ostream
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/ios
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/string
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/memory
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/cwctype
-EvtBtoXsgammaFermiUtil.o: /usr/include/wctype.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsgammaFermiUtil.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBtoXsgammaFermiUtil.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/mathdef.h
-EvtBtoXsgammaFermiUtil.o: /usr/include/bits/mathcalls.h
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsgammaFixedMass.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgammaFixedMass.o: /usr/include/gnu/stubs.h
-EvtBtoXsgammaFixedMass.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgammaFixedMass.o: ../EvtGenModels/EvtBtoXsgamma.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtDecayBase.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtId.hh
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/ostream
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/ios
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/cstddef
-EvtBtoXsgammaFixedMass.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBtoXsgammaFixedMass.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/wordsize.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsgammaFixedMass.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsgammaFixedMass.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/clocale
-EvtBtoXsgammaFixedMass.o: /usr/include/locale.h /usr/include/bits/locale.h
-EvtBtoXsgammaFixedMass.o: /usr/include/langinfo.h /usr/include/nl_types.h
-EvtBtoXsgammaFixedMass.o: /usr/include/iconv.h /usr/include/libintl.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsgammaFixedMass.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsgammaFixedMass.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsgammaFixedMass.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/initspin.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/posix_opt.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/confname.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBtoXsgammaFixedMass.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/cwchar
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsgammaFixedMass.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsgammaFixedMass.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsgammaFixedMass.o: /usr/include/limits.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/new
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsgammaFixedMass.o: /usr/include/assert.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/string
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/memory
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/cwctype
-EvtBtoXsgammaFixedMass.o: /usr/include/wctype.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtSpinType.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtReport.hh
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtParticle.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtVector4R.hh /usr/include/math.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/huge_val.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/mathdef.h
-EvtBtoXsgammaFixedMass.o: /usr/include/bits/mathcalls.h
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtComplex.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenBase/EvtConst.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenModels/EvtBtoXsgammaFixedMass.hh
-EvtBtoXsgammaFixedMass.o: ../EvtGenModels/EvtBtoXsgammaAbsModel.hh
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/fstream
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtBtoXsgammaFixedMass.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/gnu/stubs.h
-EvtBtoXsgammaFlatEnergy.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenModels/EvtBtoXsgamma.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtDecayBase.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtId.hh
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/ostream
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/ios
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cstddef
-EvtBtoXsgammaFlatEnergy.o: /usr/include/string.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/types.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/wordsize.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsgammaFlatEnergy.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/clocale
-EvtBtoXsgammaFlatEnergy.o: /usr/include/locale.h /usr/include/bits/locale.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/langinfo.h /usr/include/nl_types.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/iconv.h /usr/include/libintl.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/initspin.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/sigthread.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/unistd.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/posix_opt.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/confname.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cwchar
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsgammaFlatEnergy.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsgammaFlatEnergy.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/limits.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/new
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsgammaFlatEnergy.o: /usr/include/assert.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/string
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/memory
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/cwctype
-EvtBtoXsgammaFlatEnergy.o: /usr/include/wctype.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtSpinType.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtReport.hh
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtParticle.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtVector4R.hh /usr/include/math.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/huge_val.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/mathdef.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/bits/mathcalls.h
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtComplex.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtConst.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenModels/EvtBtoXsgammaFlatEnergy.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenModels/EvtBtoXsgammaAbsModel.hh
-EvtBtoXsgammaFlatEnergy.o: ../EvtGenBase/EvtRandom.hh
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/fstream
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtBtoXsgammaFlatEnergy.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsgammaKagan.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgammaKagan.o: /usr/include/gnu/stubs.h
-EvtBtoXsgammaKagan.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtBtoXsgamma.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtId.hh
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/ostream
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/ios
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsgammaKagan.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsgammaKagan.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoXsgammaKagan.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoXsgammaKagan.o: /usr/include/libintl.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsgammaKagan.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsgammaKagan.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsgammaKagan.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/initspin.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/posix_opt.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/confname.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBtoXsgammaKagan.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/cwchar
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsgammaKagan.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsgammaKagan.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsgammaKagan.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/new
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/string
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/memory
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtParticle.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtVector4R.hh /usr/include/math.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/huge_val.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/mathdef.h
-EvtBtoXsgammaKagan.o: /usr/include/bits/mathcalls.h
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtRandom.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtBtoXsgammaKagan.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtBtoXsgammaAbsModel.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtPartProp.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBtoXsgammaKagan.o: ../EvtGenBase/EvtStringHash.hh
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/map
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgSimpsonIntegrator.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgAbsIntegrator.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgFunction.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgPtrFunction.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgTwoCoeffFcn.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgThreeCoeffFcn.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtItgFourCoeffFcn.hh
-EvtBtoXsgammaKagan.o: ../EvtGenModels/EvtBtoXsgammaFermiUtil.hh
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/fstream
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtBtoXsgammaKagan.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtBtoXsgammaRootFinder.o: ../EvtGenBase/EvtPatches.hh
-EvtBtoXsgammaRootFinder.o: ../EvtGenModels/EvtBtoXsgammaRootFinder.hh
-EvtBtoXsgammaRootFinder.o: ../EvtGenModels/EvtItgTwoCoeffFcn.hh
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsgammaRootFinder.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsgammaRootFinder.o: /usr/include/gnu/stubs.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cstddef
-EvtBtoXsgammaRootFinder.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsgammaRootFinder.o: /usr/include/string.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsgammaRootFinder.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsgammaRootFinder.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsgammaRootFinder.o: /usr/include/limits.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsgammaRootFinder.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/types.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/wordsize.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsgammaRootFinder.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsgammaRootFinder.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/clocale
-EvtBtoXsgammaRootFinder.o: /usr/include/locale.h /usr/include/bits/locale.h
-EvtBtoXsgammaRootFinder.o: /usr/include/langinfo.h /usr/include/nl_types.h
-EvtBtoXsgammaRootFinder.o: /usr/include/iconv.h /usr/include/libintl.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsgammaRootFinder.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsgammaRootFinder.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsgammaRootFinder.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/initspin.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/sigthread.h
-EvtBtoXsgammaRootFinder.o: /usr/include/unistd.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/posix_opt.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/confname.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtBtoXsgammaRootFinder.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cwchar
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsgammaRootFinder.o: /usr/include/assert.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsgammaRootFinder.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtBtoXsgammaRootFinder.o: ../EvtGenModels/EvtItgSimpsonIntegrator.hh
-EvtBtoXsgammaRootFinder.o: ../EvtGenModels/EvtItgAbsIntegrator.hh
-EvtBtoXsgammaRootFinder.o: ../EvtGenBase/EvtReport.hh
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/ostream
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/ios
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/string
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/memory
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/cwctype
-EvtBtoXsgammaRootFinder.o: /usr/include/wctype.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsgammaRootFinder.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtBtoXsgammaRootFinder.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/mathdef.h
-EvtBtoXsgammaRootFinder.o: /usr/include/bits/mathcalls.h
-EvtBtoXsll.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsll.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsll.o: /usr/include/gnu/stubs.h
-EvtBtoXsll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsll.o: ../EvtGenBase/EvtRandom.hh ../EvtGenBase/EvtParticle.hh
-EvtBtoXsll.o: /usr/include/assert.h ../EvtGenBase/EvtVector4R.hh
-EvtBtoXsll.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBtoXsll.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtBtoXsll.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtBtoXsll.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtBtoXsll.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtBtoXsll.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtBtoXsll.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtBtoXsll.o: /usr/include/gconv.h
-EvtBtoXsll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsll.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoXsll.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoXsll.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoXsll.o: /usr/include/libintl.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsll.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtBtoXsll.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtBtoXsll.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtBtoXsll.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBtoXsll.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBtoXsll.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBtoXsll.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBtoXsll.o: /usr/include/bits/endian.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBtoXsll.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsll.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsll.o: /usr/include/c++/3.4.6/new
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsll.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsll.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsll.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBtoXsll.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBtoXsll.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtBtoXsll.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtBtoXsll.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtBtoXsll.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtBtoXsll.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtBtoXsll.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsll.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoXsll.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoXsll.o: ../EvtGenModels/EvtbTosllAmp.hh ../EvtGenModels/EvtBtoXsll.hh
-EvtBtoXsll.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtBtoXsll.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenModels/EvtBtoXsllUtil.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtBtoXsllUtil.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtBtoXsllUtil.o: /usr/include/gnu/stubs.h
-EvtBtoXsllUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtRandom.hh ../EvtGenBase/EvtParticle.hh
-EvtBtoXsllUtil.o: /usr/include/assert.h ../EvtGenBase/EvtVector4R.hh
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/iostream
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/iosfwd
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/cstring
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtBtoXsllUtil.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtBtoXsllUtil.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtBtoXsllUtil.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtBtoXsllUtil.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtBtoXsllUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtBtoXsllUtil.o: /usr/include/bits/stdio_lim.h
-EvtBtoXsllUtil.o: /usr/include/bits/sys_errlist.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtBtoXsllUtil.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtBtoXsllUtil.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtBtoXsllUtil.o: /usr/include/libintl.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtBtoXsllUtil.o: /usr/include/pthread.h /usr/include/sched.h
-EvtBtoXsllUtil.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtBtoXsllUtil.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtBtoXsllUtil.o: /usr/include/bits/pthreadtypes.h
-EvtBtoXsllUtil.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtBtoXsllUtil.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtBtoXsllUtil.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtBtoXsllUtil.o: /usr/include/ctype.h /usr/include/endian.h
-EvtBtoXsllUtil.o: /usr/include/bits/endian.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtBtoXsllUtil.o: /usr/include/stdint.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/exception
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/climits
-EvtBtoXsllUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtBtoXsllUtil.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtBtoXsllUtil.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/new
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/cassert
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/limits
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/algorithm
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/streambuf
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/locale
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/typeinfo
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/istream
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtBtoXsllUtil.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtBtoXsllUtil.o: /usr/include/bits/mathcalls.h
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtPartProp.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/vector
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtBtoXsllUtil.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtBtoXsllUtil.o: ../EvtGenModels/EvtBtoXsllUtil.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtBtoXsllUtil.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtDiLog.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtCBTo3piMPP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtCBTo3piMPP.o: /usr/include/gnu/stubs.h
-EvtCBTo3piMPP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/iosfwd
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/cstring
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtCBTo3piMPP.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtCBTo3piMPP.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtCBTo3piMPP.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtCBTo3piMPP.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtCBTo3piMPP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtCBTo3piMPP.o: /usr/include/bits/stdio_lim.h
-EvtCBTo3piMPP.o: /usr/include/bits/sys_errlist.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtCBTo3piMPP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtCBTo3piMPP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtCBTo3piMPP.o: /usr/include/libintl.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtCBTo3piMPP.o: /usr/include/pthread.h /usr/include/sched.h
-EvtCBTo3piMPP.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtCBTo3piMPP.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtCBTo3piMPP.o: /usr/include/bits/pthreadtypes.h
-EvtCBTo3piMPP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtCBTo3piMPP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtCBTo3piMPP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtCBTo3piMPP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtCBTo3piMPP.o: /usr/include/bits/endian.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtCBTo3piMPP.o: /usr/include/stdint.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/exception
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/climits
-EvtCBTo3piMPP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtCBTo3piMPP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtCBTo3piMPP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/new
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/cassert
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/limits
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/algorithm
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/streambuf
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/locale
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/typeinfo
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/istream
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtCBTo3piMPP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtCBTo3piMPP.o: /usr/include/bits/mathcalls.h
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtPartProp.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/vector
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtCBTo3piMPP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtCBTo3piMPP.o: ../EvtGenModels/EvtCBTo3piMPP.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtCBTo3piMPP.o: ../EvtGenBase/EvtAmp.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtCBTo3piP00.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtCBTo3piP00.o: /usr/include/gnu/stubs.h
-EvtCBTo3piP00.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtCBTo3piP00.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtCBTo3piP00.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/iosfwd
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/cstring
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtCBTo3piP00.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtCBTo3piP00.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtCBTo3piP00.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtCBTo3piP00.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtCBTo3piP00.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtCBTo3piP00.o: /usr/include/bits/stdio_lim.h
-EvtCBTo3piP00.o: /usr/include/bits/sys_errlist.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtCBTo3piP00.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtCBTo3piP00.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtCBTo3piP00.o: /usr/include/libintl.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtCBTo3piP00.o: /usr/include/pthread.h /usr/include/sched.h
-EvtCBTo3piP00.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtCBTo3piP00.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtCBTo3piP00.o: /usr/include/bits/pthreadtypes.h
-EvtCBTo3piP00.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtCBTo3piP00.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtCBTo3piP00.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtCBTo3piP00.o: /usr/include/ctype.h /usr/include/endian.h
-EvtCBTo3piP00.o: /usr/include/bits/endian.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtCBTo3piP00.o: /usr/include/stdint.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/exception
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/climits
-EvtCBTo3piP00.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtCBTo3piP00.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtCBTo3piP00.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/new
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/cassert
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/limits
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/algorithm
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/streambuf
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/locale
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/typeinfo
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/istream
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtCBTo3piP00.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtCBTo3piP00.o: /usr/include/bits/mathcalls.h
-EvtCBTo3piP00.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtPartProp.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/vector
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtCBTo3piP00.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtCBTo3piP00.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtCBTo3piP00.o: ../EvtGenModels/EvtCBTo3piP00.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtCBTo3piP00.o: ../EvtGenBase/EvtAmp.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtParticle.hh
-EvtD0mixDalitz.o: /usr/include/assert.h /usr/include/features.h
-EvtD0mixDalitz.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtD0mixDalitz.o: ../EvtGenBase/EvtVector4R.hh
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/iostream
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/iosfwd
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/cstring
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/cstddef
-EvtD0mixDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtD0mixDalitz.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtD0mixDalitz.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtD0mixDalitz.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtD0mixDalitz.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtD0mixDalitz.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtD0mixDalitz.o: /usr/include/gconv.h
-EvtD0mixDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtD0mixDalitz.o: /usr/include/bits/stdio_lim.h
-EvtD0mixDalitz.o: /usr/include/bits/sys_errlist.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtD0mixDalitz.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtD0mixDalitz.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtD0mixDalitz.o: /usr/include/libintl.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtD0mixDalitz.o: /usr/include/pthread.h /usr/include/sched.h
-EvtD0mixDalitz.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtD0mixDalitz.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtD0mixDalitz.o: /usr/include/bits/pthreadtypes.h
-EvtD0mixDalitz.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtD0mixDalitz.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtD0mixDalitz.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtD0mixDalitz.o: /usr/include/ctype.h /usr/include/endian.h
-EvtD0mixDalitz.o: /usr/include/bits/endian.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtD0mixDalitz.o: /usr/include/stdint.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/exception
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/climits
-EvtD0mixDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtD0mixDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtD0mixDalitz.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtD0mixDalitz.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/cassert
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/limits
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/algorithm
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/streambuf
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/locale
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/typeinfo
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/istream
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtD0mixDalitz.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtD0mixDalitz.o: /usr/include/bits/mathcalls.h
-EvtD0mixDalitz.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/vector
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtD0mixDalitz.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtD0mixDalitz.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtD0mixDalitz.o: ../EvtGenBase/EvtRandom.hh ../EvtGenBase/EvtResonance.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtDalitzPlot.hh ../EvtGenBase/EvtCyclic3.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtTwoBodyVertex.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtTwoBodyKine.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtBlattWeisskopf.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtDecayMode.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtDalitzReso.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtDalitzPoint.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtDalitzCoord.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtD0mixDalitz.o: ../EvtGenBase/EvtAmp.hh ../EvtGenModels/EvtD0mixDalitz.hh
-EvtDDalitz.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtDDalitz.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtDDalitz.o: /usr/include/gnu/stubs.h
-EvtDDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtDDalitz.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtDDalitz.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtDDalitz.o: /usr/include/c++/3.4.6/iosfwd
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtDDalitz.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtDDalitz.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtDDalitz.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtDDalitz.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtDDalitz.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtDDalitz.o: /usr/include/gconv.h
-EvtDDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtDDalitz.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtDDalitz.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtDDalitz.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtDDalitz.o: /usr/include/libintl.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtDDalitz.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtDDalitz.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtDDalitz.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtDDalitz.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtDDalitz.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtDDalitz.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtDDalitz.o: /usr/include/ctype.h /usr/include/endian.h
-EvtDDalitz.o: /usr/include/bits/endian.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtDDalitz.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/exception
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/climits
-EvtDDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtDDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtDDalitz.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtDDalitz.o: /usr/include/c++/3.4.6/new
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/cassert
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/limits
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/algorithm
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtDDalitz.o: /usr/include/c++/3.4.6/streambuf
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtDDalitz.o: /usr/include/c++/3.4.6/locale
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtDDalitz.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtDDalitz.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtDDalitz.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtDDalitz.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtDDalitz.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtDDalitz.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtDDalitz.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtDDalitz.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtDDalitz.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtDDalitz.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtDDalitz.o: ../EvtGenBase/EvtResonance.hh ../EvtGenBase/EvtResonance2.hh
-EvtDDalitz.o: ../EvtGenModels/EvtDDalitz.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtDDalitz.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtDDalitz.o: ../EvtGenBase/EvtFlatte.hh ../EvtGenBase/EvtDecayTable.hh
-EvtDDalitz.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtDDalitz.o: ../EvtGenBase/EvtParticleDecay.hh
-EvtDMix.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtDMix.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtDMix.o: /usr/include/gnu/stubs.h
-EvtDMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtDMix.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtDMix.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtDMix.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtDMix.o: /usr/include/c++/3.4.6/iosfwd
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtDMix.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtDMix.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtDMix.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtDMix.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtDMix.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtDMix.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtDMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtDMix.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtDMix.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtDMix.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtDMix.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtDMix.o: /usr/include/libintl.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtDMix.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtDMix.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtDMix.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtDMix.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtDMix.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtDMix.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtDMix.o: /usr/include/ctype.h /usr/include/endian.h
-EvtDMix.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtDMix.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtDMix.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtDMix.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtDMix.o: /usr/include/c++/3.4.6/exception
-EvtDMix.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtDMix.o: /usr/include/c++/3.4.6/climits
-EvtDMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtDMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtDMix.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtDMix.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtDMix.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtDMix.o: /usr/include/c++/3.4.6/cassert
-EvtDMix.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtDMix.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtDMix.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtDMix.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtDMix.o: /usr/include/c++/3.4.6/limits
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtDMix.o: /usr/include/c++/3.4.6/algorithm
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtDMix.o: /usr/include/c++/3.4.6/streambuf
-EvtDMix.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtDMix.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtDMix.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtDMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtDMix.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtDMix.o: /usr/include/c++/3.4.6/locale
-EvtDMix.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtDMix.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtDMix.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtDMix.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtDMix.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtDMix.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtDMix.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtDMix.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtDMix.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtDMix.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtDMix.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtDMix.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtDMix.o: ../EvtGenModels/EvtDMix.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtDMix.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtRandom.hh
-EvtEtaDalitz.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtEtaDalitz.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtEtaDalitz.o: /usr/include/gnu/stubs.h
-EvtEtaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtEtaDalitz.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtEtaDalitz.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/iosfwd
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtEtaDalitz.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtEtaDalitz.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtEtaDalitz.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtEtaDalitz.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtEtaDalitz.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtEtaDalitz.o: /usr/include/gconv.h
-EvtEtaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtEtaDalitz.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtEtaDalitz.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtEtaDalitz.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtEtaDalitz.o: /usr/include/libintl.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtEtaDalitz.o: /usr/include/pthread.h /usr/include/sched.h
-EvtEtaDalitz.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtEtaDalitz.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtEtaDalitz.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtEtaDalitz.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtEtaDalitz.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtEtaDalitz.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtEtaDalitz.o: /usr/include/stdint.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/exception
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/climits
-EvtEtaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtEtaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtEtaDalitz.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/new
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/cassert
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/limits
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/algorithm
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/streambuf
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/locale
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/typeinfo
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/istream
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtEtaDalitz.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtEtaDalitz.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtEtaDalitz.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtEtaDalitz.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtEtaDalitz.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtEtaDalitz.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtEtaDalitz.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/vector
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtEtaDalitz.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtEtaDalitz.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtEtaDalitz.o: ../EvtGenModels/EvtEtaDalitz.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtEtaDalitz.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtPatches.hh ../EvtGenModels/EvtFlatQ2.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtDecayProb.hh ../EvtGenBase/EvtDecayBase.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtId.hh /usr/include/c++/3.4.6/iostream
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtFlatQ2.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtFlatQ2.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtFlatQ2.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtFlatQ2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtFlatQ2.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtFlatQ2.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtFlatQ2.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtFlatQ2.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtFlatQ2.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtFlatQ2.o: /usr/include/gconv.h
-EvtFlatQ2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtFlatQ2.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtFlatQ2.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtFlatQ2.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtFlatQ2.o: /usr/include/libintl.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtFlatQ2.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtFlatQ2.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtFlatQ2.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtFlatQ2.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtFlatQ2.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtFlatQ2.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtFlatQ2.o: /usr/include/ctype.h /usr/include/endian.h
-EvtFlatQ2.o: /usr/include/bits/endian.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtFlatQ2.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/exception
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/climits
-EvtFlatQ2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtFlatQ2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtFlatQ2.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtFlatQ2.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/limits
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/algorithm
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtFlatQ2.o: /usr/include/c++/3.4.6/streambuf
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtFlatQ2.o: /usr/include/c++/3.4.6/locale
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtFlatQ2.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtFlatQ2.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtFlatQ2.o: /usr/include/c++/3.4.6/vector
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtFlatQ2.o: /usr/include/c++/3.4.6/fstream
-EvtFlatQ2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtFlatQ2.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtParticle.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtVector4R.hh /usr/include/math.h
-EvtFlatQ2.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtFlatQ2.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtAbsLineShape.hh ../EvtGenBase/EvtStringHash.hh
-EvtFlatQ2.o: /usr/include/c++/3.4.6/map
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtFlatQ2.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtFlatQ2.o: ../EvtGenBase/EvtDiracSpinor.hh ../EvtGenBase/EvtVector3R.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtFlatQ2.o: ../EvtGenBase/EvtTensor4C.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtGoityRoberts.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtGoityRoberts.o: /usr/include/gnu/stubs.h
-EvtGoityRoberts.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtGoityRoberts.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtGoityRoberts.o: ../EvtGenBase/EvtVector4R.hh
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/iostream
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/iosfwd
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/cstring
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtGoityRoberts.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtGoityRoberts.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtGoityRoberts.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtGoityRoberts.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtGoityRoberts.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtGoityRoberts.o: /usr/include/bits/stdio_lim.h
-EvtGoityRoberts.o: /usr/include/bits/sys_errlist.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtGoityRoberts.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtGoityRoberts.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtGoityRoberts.o: /usr/include/libintl.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtGoityRoberts.o: /usr/include/pthread.h /usr/include/sched.h
-EvtGoityRoberts.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtGoityRoberts.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtGoityRoberts.o: /usr/include/bits/pthreadtypes.h
-EvtGoityRoberts.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtGoityRoberts.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtGoityRoberts.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtGoityRoberts.o: /usr/include/ctype.h /usr/include/endian.h
-EvtGoityRoberts.o: /usr/include/bits/endian.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtGoityRoberts.o: /usr/include/stdint.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/exception
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/climits
-EvtGoityRoberts.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtGoityRoberts.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtGoityRoberts.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/new
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/cassert
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/string
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/memory
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/limits
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/algorithm
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/streambuf
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/locale
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/typeinfo
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/istream
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtGoityRoberts.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtGoityRoberts.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtGoityRoberts.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/vector
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtGoityRoberts.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtGoityRoberts.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtGoityRoberts.o: ../EvtGenModels/EvtGoityRoberts.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtTensor4C.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtDiracSpinor.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtGoityRoberts.o: ../EvtGenBase/EvtVector3C.hh
-EvtHelAmp.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtHelAmp.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtHelAmp.o: /usr/include/gnu/stubs.h
-EvtHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtHelAmp.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtHelAmp.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtHelAmp.o: /usr/include/c++/3.4.6/iosfwd
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtHelAmp.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtHelAmp.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtHelAmp.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtHelAmp.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtHelAmp.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtHelAmp.o: /usr/include/gconv.h
-EvtHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtHelAmp.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtHelAmp.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtHelAmp.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtHelAmp.o: /usr/include/libintl.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtHelAmp.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtHelAmp.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtHelAmp.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtHelAmp.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtHelAmp.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtHelAmp.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtHelAmp.o: /usr/include/ctype.h /usr/include/endian.h
-EvtHelAmp.o: /usr/include/bits/endian.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtHelAmp.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/exception
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/climits
-EvtHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtHelAmp.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtHelAmp.o: /usr/include/c++/3.4.6/new
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/cassert
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/limits
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/algorithm
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtHelAmp.o: /usr/include/c++/3.4.6/streambuf
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtHelAmp.o: /usr/include/c++/3.4.6/locale
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtHelAmp.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtHelAmp.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtHelAmp.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtHelAmp.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtHelAmp.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtHelAmp.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtHelAmp.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtHelAmp.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtHelAmp.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtHelAmp.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtHelAmp.o: ../EvtGenModels/EvtHelAmp.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtHelAmp.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtHelAmp.o: ../EvtGenBase/EvtEvalHelAmp.hh
-EvtHQET2.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtHQET2.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtHQET2.o: /usr/include/gnu/stubs.h
-EvtHQET2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtHQET2.o: /usr/include/assert.h ../EvtGenBase/EvtParticle.hh
-EvtHQET2.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtHQET2.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtHQET2.o: /usr/include/c++/3.4.6/iosfwd
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtHQET2.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtHQET2.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtHQET2.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtHQET2.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtHQET2.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtHQET2.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtHQET2.o: /usr/include/gconv.h
-EvtHQET2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtHQET2.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtHQET2.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtHQET2.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtHQET2.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtHQET2.o: /usr/include/libintl.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtHQET2.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtHQET2.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtHQET2.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtHQET2.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtHQET2.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtHQET2.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtHQET2.o: /usr/include/ctype.h /usr/include/endian.h
-EvtHQET2.o: /usr/include/bits/endian.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtHQET2.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtHQET2.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtHQET2.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtHQET2.o: /usr/include/c++/3.4.6/exception
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtHQET2.o: /usr/include/c++/3.4.6/climits
-EvtHQET2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtHQET2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtHQET2.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtHQET2.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtHQET2.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtHQET2.o: /usr/include/c++/3.4.6/cassert
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtHQET2.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtHQET2.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtHQET2.o: /usr/include/c++/3.4.6/limits
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtHQET2.o: /usr/include/c++/3.4.6/algorithm
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtHQET2.o: /usr/include/c++/3.4.6/streambuf
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtHQET2.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtHQET2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtHQET2.o: /usr/include/c++/3.4.6/locale
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtHQET2.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtHQET2.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtHQET2.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtHQET2.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtHQET2.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtHQET2.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtHQET2.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtHQET2.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtHQET2.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtHQET2.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtHQET2.o: ../EvtGenModels/EvtHQET2.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtHQET2.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtHQET2.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtHQET2.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh ../EvtGenModels/EvtHQET2FF.hh
-EvtHQET2.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtHQET2.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtHQET2FF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtHQET2FF.o: /usr/include/c++/3.4.6/iostream
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtHQET2FF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtHQET2FF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtHQET2FF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtHQET2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtHQET2FF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtHQET2FF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtHQET2FF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtHQET2FF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtHQET2FF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtHQET2FF.o: /usr/include/gconv.h
-EvtHQET2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtHQET2FF.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtHQET2FF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtHQET2FF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtHQET2FF.o: /usr/include/libintl.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtHQET2FF.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtHQET2FF.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtHQET2FF.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtHQET2FF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtHQET2FF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtHQET2FF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtHQET2FF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtHQET2FF.o: /usr/include/bits/endian.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtHQET2FF.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/exception
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/climits
-EvtHQET2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtHQET2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtHQET2FF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtHQET2FF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/limits
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/algorithm
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtHQET2FF.o: /usr/include/c++/3.4.6/streambuf
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtHQET2FF.o: /usr/include/c++/3.4.6/locale
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtHQET2FF.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtHQET2FF.o: ../EvtGenModels/EvtHQET2FF.hh
-EvtHQET2FF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtHQET2FF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtHQET2FF.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtHQET2FF.o: /usr/include/c++/3.4.6/vector
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtHQET2FF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtHQET2FF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h /usr/include/math.h
-EvtHQET2FF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtHQET2FF.o: /usr/include/bits/mathcalls.h
-EvtHQET.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtHQET.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtHQET.o: /usr/include/gnu/stubs.h
-EvtHQET.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtHQET.o: /usr/include/assert.h ../EvtGenBase/EvtParticle.hh
-EvtHQET.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtHQET.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtHQET.o: /usr/include/c++/3.4.6/iosfwd
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtHQET.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtHQET.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtHQET.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtHQET.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtHQET.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtHQET.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtHQET.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtHQET.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtHQET.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtHQET.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtHQET.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtHQET.o: /usr/include/libintl.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtHQET.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtHQET.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtHQET.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtHQET.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtHQET.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtHQET.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtHQET.o: /usr/include/ctype.h /usr/include/endian.h
-EvtHQET.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtHQET.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtHQET.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtHQET.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtHQET.o: /usr/include/c++/3.4.6/exception
-EvtHQET.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtHQET.o: /usr/include/c++/3.4.6/climits
-EvtHQET.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtHQET.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtHQET.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtHQET.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtHQET.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtHQET.o: /usr/include/c++/3.4.6/cassert
-EvtHQET.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtHQET.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtHQET.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtHQET.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtHQET.o: /usr/include/c++/3.4.6/limits
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtHQET.o: /usr/include/c++/3.4.6/algorithm
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtHQET.o: /usr/include/c++/3.4.6/streambuf
-EvtHQET.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtHQET.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtHQET.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtHQET.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtHQET.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtHQET.o: /usr/include/c++/3.4.6/locale
-EvtHQET.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtHQET.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtHQET.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtHQET.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtHQET.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtHQET.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtHQET.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtHQET.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtHQET.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtHQET.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtHQET.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtHQET.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtHQET.o: ../EvtGenModels/EvtHQET.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtHQET.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtHQET.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtHQET.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh ../EvtGenModels/EvtHQETFF.hh
-EvtHQET.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtHQET.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtHQETFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtHQETFF.o: /usr/include/c++/3.4.6/iostream
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtHQETFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtHQETFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtHQETFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtHQETFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtHQETFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtHQETFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtHQETFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtHQETFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtHQETFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtHQETFF.o: /usr/include/gconv.h
-EvtHQETFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtHQETFF.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtHQETFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtHQETFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtHQETFF.o: /usr/include/libintl.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtHQETFF.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtHQETFF.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtHQETFF.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtHQETFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtHQETFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtHQETFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtHQETFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtHQETFF.o: /usr/include/bits/endian.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtHQETFF.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/exception
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/climits
-EvtHQETFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtHQETFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtHQETFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtHQETFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/limits
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/algorithm
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtHQETFF.o: /usr/include/c++/3.4.6/streambuf
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtHQETFF.o: /usr/include/c++/3.4.6/locale
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtHQETFF.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtHQETFF.o: ../EvtGenModels/EvtHQETFF.hh ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtHQETFF.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtPDL.hh
-EvtHQETFF.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtSpinType.hh
-EvtHQETFF.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtHQETFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtHQETFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h /usr/include/math.h
-EvtHQETFF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtHQETFF.o: /usr/include/bits/mathcalls.h
-EvtHypNonLepton.o: ../EvtGenModels/EvtHypNonLepton.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtId.hh
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/iostream
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtHypNonLepton.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtHypNonLepton.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/cstring
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/cstddef
-EvtHypNonLepton.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtHypNonLepton.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtHypNonLepton.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtHypNonLepton.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtHypNonLepton.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtHypNonLepton.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtHypNonLepton.o: /usr/include/gconv.h
-EvtHypNonLepton.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtHypNonLepton.o: /usr/include/bits/stdio_lim.h
-EvtHypNonLepton.o: /usr/include/bits/sys_errlist.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtHypNonLepton.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtHypNonLepton.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtHypNonLepton.o: /usr/include/libintl.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtHypNonLepton.o: /usr/include/pthread.h /usr/include/sched.h
-EvtHypNonLepton.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtHypNonLepton.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtHypNonLepton.o: /usr/include/bits/pthreadtypes.h
-EvtHypNonLepton.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtHypNonLepton.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtHypNonLepton.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtHypNonLepton.o: /usr/include/ctype.h /usr/include/endian.h
-EvtHypNonLepton.o: /usr/include/bits/endian.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtHypNonLepton.o: /usr/include/stdint.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/exception
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/climits
-EvtHypNonLepton.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtHypNonLepton.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtHypNonLepton.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtHypNonLepton.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/string
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/memory
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/limits
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/algorithm
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/streambuf
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/locale
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/typeinfo
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/istream
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtHypNonLepton.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/vector
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtHypNonLepton.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtComplex.hh
-EvtHypNonLepton.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtHypNonLepton.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtHypNonLepton.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtParticle.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtVector4R.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtPDL.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtPartProp.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtHypNonLepton.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtHypNonLepton.o: ../EvtGenBase/EvtDiracSpinor.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtHypNonLepton.o: ../EvtGenBase/EvtGammaMatrix.hh
-EvtISGW2.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtISGW2.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtISGW2.o: /usr/include/gnu/stubs.h
-EvtISGW2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtISGW2.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtISGW2.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtISGW2.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtISGW2.o: /usr/include/c++/3.4.6/iosfwd
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtISGW2.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtISGW2.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtISGW2.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtISGW2.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtISGW2.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtISGW2.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtISGW2.o: /usr/include/gconv.h
-EvtISGW2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtISGW2.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtISGW2.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtISGW2.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtISGW2.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtISGW2.o: /usr/include/libintl.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtISGW2.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtISGW2.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtISGW2.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtISGW2.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtISGW2.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtISGW2.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtISGW2.o: /usr/include/ctype.h /usr/include/endian.h
-EvtISGW2.o: /usr/include/bits/endian.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtISGW2.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtISGW2.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtISGW2.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtISGW2.o: /usr/include/c++/3.4.6/exception
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtISGW2.o: /usr/include/c++/3.4.6/climits
-EvtISGW2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtISGW2.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtISGW2.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtISGW2.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtISGW2.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtISGW2.o: /usr/include/c++/3.4.6/cassert
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtISGW2.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtISGW2.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtISGW2.o: /usr/include/c++/3.4.6/limits
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtISGW2.o: /usr/include/c++/3.4.6/algorithm
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtISGW2.o: /usr/include/c++/3.4.6/streambuf
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtISGW2.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtISGW2.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtISGW2.o: /usr/include/c++/3.4.6/locale
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtISGW2.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtISGW2.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtISGW2.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtISGW2.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtISGW2.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtISGW2.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtISGW2.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtISGW2.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtISGW2.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtISGW2.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtISGW2.o: ../EvtGenModels/EvtISGW2.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtISGW2.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtISGW2.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtISGW2.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh ../EvtGenBase/EvtIdSet.hh
-EvtISGW2.o: ../EvtGenModels/EvtISGW2FF.hh
-EvtISGW2.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtISGW2.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtISGW2.o: ../EvtGenBase/EvtSemiLeptonicTensorAmp.hh
-EvtISGW2FF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtISGW2FF.o: /usr/include/c++/3.4.6/iostream
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtISGW2FF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtISGW2FF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtISGW2FF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtISGW2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtISGW2FF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtISGW2FF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtISGW2FF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtISGW2FF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtISGW2FF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtISGW2FF.o: /usr/include/gconv.h
-EvtISGW2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtISGW2FF.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtISGW2FF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtISGW2FF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtISGW2FF.o: /usr/include/libintl.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtISGW2FF.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtISGW2FF.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtISGW2FF.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtISGW2FF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtISGW2FF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtISGW2FF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtISGW2FF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtISGW2FF.o: /usr/include/bits/endian.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtISGW2FF.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/exception
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/climits
-EvtISGW2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtISGW2FF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtISGW2FF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtISGW2FF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/limits
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/algorithm
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtISGW2FF.o: /usr/include/c++/3.4.6/streambuf
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtISGW2FF.o: /usr/include/c++/3.4.6/locale
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtISGW2FF.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtISGW2FF.o: ../EvtGenModels/EvtISGW2FF.hh
-EvtISGW2FF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtISGW2FF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtISGW2FF.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtISGW2FF.o: /usr/include/c++/3.4.6/vector
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtISGW2FF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtISGW2FF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtISGW2FF.o: ../EvtGenBase/EvtIdSet.hh ../EvtGenBase/EvtConst.hh
-EvtISGW2FF.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtISGW2FF.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtISGW.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtISGW.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtISGW.o: /usr/include/gnu/stubs.h
-EvtISGW.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtISGW.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtISGW.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtISGW.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtISGW.o: /usr/include/c++/3.4.6/iosfwd
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtISGW.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtISGW.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtISGW.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtISGW.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtISGW.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtISGW.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtISGW.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtISGW.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtISGW.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtISGW.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtISGW.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtISGW.o: /usr/include/libintl.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtISGW.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtISGW.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtISGW.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtISGW.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtISGW.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtISGW.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtISGW.o: /usr/include/ctype.h /usr/include/endian.h
-EvtISGW.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtISGW.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtISGW.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtISGW.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtISGW.o: /usr/include/c++/3.4.6/exception
-EvtISGW.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtISGW.o: /usr/include/c++/3.4.6/climits
-EvtISGW.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtISGW.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtISGW.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtISGW.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtISGW.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtISGW.o: /usr/include/c++/3.4.6/cassert
-EvtISGW.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtISGW.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtISGW.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtISGW.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtISGW.o: /usr/include/c++/3.4.6/limits
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtISGW.o: /usr/include/c++/3.4.6/algorithm
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtISGW.o: /usr/include/c++/3.4.6/streambuf
-EvtISGW.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtISGW.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtISGW.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtISGW.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtISGW.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtISGW.o: /usr/include/c++/3.4.6/locale
-EvtISGW.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtISGW.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtISGW.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtISGW.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtISGW.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtISGW.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtISGW.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtISGW.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtISGW.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtISGW.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtISGW.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtISGW.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtISGW.o: ../EvtGenModels/EvtISGW.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtISGW.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtISGW.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtISGW.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh ../EvtGenModels/EvtISGWFF.hh
-EvtISGW.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtISGW.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtISGW.o: ../EvtGenBase/EvtSemiLeptonicTensorAmp.hh
-EvtISGWFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtISGWFF.o: /usr/include/c++/3.4.6/iostream
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtISGWFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtISGWFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtISGWFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtISGWFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtISGWFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtISGWFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtISGWFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtISGWFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtISGWFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtISGWFF.o: /usr/include/gconv.h
-EvtISGWFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtISGWFF.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtISGWFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtISGWFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtISGWFF.o: /usr/include/libintl.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtISGWFF.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtISGWFF.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtISGWFF.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtISGWFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtISGWFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtISGWFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtISGWFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtISGWFF.o: /usr/include/bits/endian.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtISGWFF.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/exception
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/climits
-EvtISGWFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtISGWFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtISGWFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtISGWFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/limits
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/algorithm
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtISGWFF.o: /usr/include/c++/3.4.6/streambuf
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtISGWFF.o: /usr/include/c++/3.4.6/locale
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtISGWFF.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtISGWFF.o: ../EvtGenModels/EvtISGWFF.hh ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtISGWFF.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtPDL.hh
-EvtISGWFF.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtSpinType.hh
-EvtISGWFF.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtISGWFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtISGWFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h /usr/include/math.h
-EvtISGWFF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtISGWFF.o: /usr/include/bits/mathcalls.h
-EvtItgAbsFunction.o: ../EvtGenBase/EvtPatches.hh
-EvtItgAbsFunction.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtItgAbsFunction.o: /usr/include/assert.h /usr/include/features.h
-EvtItgAbsFunction.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtItgAbsFunction.o: ../EvtGenBase/EvtReport.hh
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/iostream
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/ostream
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/cstring
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/cstddef
-EvtItgAbsFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtItgAbsFunction.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtItgAbsFunction.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtItgAbsFunction.o: /usr/include/bits/wordsize.h
-EvtItgAbsFunction.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtItgAbsFunction.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtItgAbsFunction.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtItgAbsFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtItgAbsFunction.o: /usr/include/bits/stdio_lim.h
-EvtItgAbsFunction.o: /usr/include/bits/sys_errlist.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtItgAbsFunction.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtItgAbsFunction.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtItgAbsFunction.o: /usr/include/libintl.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtItgAbsFunction.o: /usr/include/pthread.h /usr/include/sched.h
-EvtItgAbsFunction.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtItgAbsFunction.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtItgAbsFunction.o: /usr/include/bits/pthreadtypes.h
-EvtItgAbsFunction.o: /usr/include/bits/initspin.h
-EvtItgAbsFunction.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtItgAbsFunction.o: /usr/include/bits/posix_opt.h
-EvtItgAbsFunction.o: /usr/include/bits/confname.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtItgAbsFunction.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/cwchar
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/exception
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/climits
-EvtItgAbsFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtItgAbsFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtItgAbsFunction.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtItgAbsFunction.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/cassert
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/string
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/memory
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/limits
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/algorithm
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/streambuf
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/locale
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/typeinfo
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/istream
-EvtItgAbsFunction.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtItgAbsIntegrator.o: ../EvtGenBase/EvtPatches.hh
-EvtItgAbsIntegrator.o: ../EvtGenModels/EvtItgAbsIntegrator.hh
-EvtItgAbsIntegrator.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtItgAbsIntegrator.o: /usr/include/math.h /usr/include/features.h
-EvtItgAbsIntegrator.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtItgAbsIntegrator.o: /usr/include/bits/huge_val.h
-EvtItgAbsIntegrator.o: /usr/include/bits/mathdef.h
-EvtItgAbsIntegrator.o: /usr/include/bits/mathcalls.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/iostream
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/ostream
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/ios
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/iosfwd
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/cstring
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/cstddef
-EvtItgAbsIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtItgAbsIntegrator.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtItgAbsIntegrator.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtItgAbsIntegrator.o: /usr/include/bits/wordsize.h
-EvtItgAbsIntegrator.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtItgAbsIntegrator.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtItgAbsIntegrator.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtItgAbsIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtItgAbsIntegrator.o: /usr/include/bits/stdio_lim.h
-EvtItgAbsIntegrator.o: /usr/include/bits/sys_errlist.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtItgAbsIntegrator.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtItgAbsIntegrator.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtItgAbsIntegrator.o: /usr/include/libintl.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtItgAbsIntegrator.o: /usr/include/pthread.h /usr/include/sched.h
-EvtItgAbsIntegrator.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtItgAbsIntegrator.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtItgAbsIntegrator.o: /usr/include/bits/pthreadtypes.h
-EvtItgAbsIntegrator.o: /usr/include/bits/initspin.h
-EvtItgAbsIntegrator.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtItgAbsIntegrator.o: /usr/include/bits/posix_opt.h
-EvtItgAbsIntegrator.o: /usr/include/bits/confname.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtItgAbsIntegrator.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/cwchar
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/exception
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/climits
-EvtItgAbsIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtItgAbsIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtItgAbsIntegrator.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtItgAbsIntegrator.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/string
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/memory
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/limits
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/algorithm
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/streambuf
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/locale
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/typeinfo
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/istream
-EvtItgAbsIntegrator.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtItgAbsIntegrator.o: ../EvtGenBase/EvtReport.hh
-EvtItgFourCoeffFcn.o: ../EvtGenBase/EvtPatches.hh
-EvtItgFourCoeffFcn.o: ../EvtGenModels/EvtItgFourCoeffFcn.hh
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/vector
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtItgFourCoeffFcn.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtItgFourCoeffFcn.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/cstring
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/cstddef
-EvtItgFourCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtItgFourCoeffFcn.o: /usr/include/string.h /usr/include/c++/3.4.6/climits
-EvtItgFourCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtItgFourCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtItgFourCoeffFcn.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtItgFourCoeffFcn.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/exception
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/iosfwd
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtItgFourCoeffFcn.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtItgFourCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/stdio_lim.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/sys_errlist.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtItgFourCoeffFcn.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtItgFourCoeffFcn.o: /usr/include/libintl.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtItgFourCoeffFcn.o: /usr/include/pthread.h /usr/include/sched.h
-EvtItgFourCoeffFcn.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtItgFourCoeffFcn.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/pthreadtypes.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/initspin.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/posix_opt.h
-EvtItgFourCoeffFcn.o: /usr/include/bits/confname.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtItgFourCoeffFcn.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/cwchar
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtItgFourCoeffFcn.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtItgFourCoeffFcn.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtItgFunction.o: ../EvtGenBase/EvtPatches.hh
-EvtItgFunction.o: ../EvtGenModels/EvtItgFunction.hh
-EvtItgFunction.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtItgPtrFunction.o: ../EvtGenBase/EvtPatches.hh
-EvtItgPtrFunction.o: ../EvtGenModels/EvtItgPtrFunction.hh
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/vector
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtItgPtrFunction.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtItgPtrFunction.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/cstring
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/cstddef
-EvtItgPtrFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtItgPtrFunction.o: /usr/include/string.h /usr/include/c++/3.4.6/climits
-EvtItgPtrFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtItgPtrFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtItgPtrFunction.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtItgPtrFunction.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/exception
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/iosfwd
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtItgPtrFunction.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtItgPtrFunction.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtItgPtrFunction.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtItgPtrFunction.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtItgPtrFunction.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtItgPtrFunction.o: /usr/include/bits/stdio_lim.h
-EvtItgPtrFunction.o: /usr/include/bits/sys_errlist.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtItgPtrFunction.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtItgPtrFunction.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtItgPtrFunction.o: /usr/include/libintl.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtItgPtrFunction.o: /usr/include/pthread.h /usr/include/sched.h
-EvtItgPtrFunction.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtItgPtrFunction.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtItgPtrFunction.o: /usr/include/bits/pthreadtypes.h
-EvtItgPtrFunction.o: /usr/include/bits/initspin.h
-EvtItgPtrFunction.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtItgPtrFunction.o: /usr/include/bits/posix_opt.h
-EvtItgPtrFunction.o: /usr/include/bits/confname.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtItgPtrFunction.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/cwchar
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtItgPtrFunction.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtItgPtrFunction.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtItgSimpsonIntegrator.o: ../EvtGenBase/EvtPatches.hh
-EvtItgSimpsonIntegrator.o: ../EvtGenModels/EvtItgSimpsonIntegrator.hh
-EvtItgSimpsonIntegrator.o: ../EvtGenModels/EvtItgAbsIntegrator.hh
-EvtItgSimpsonIntegrator.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtItgSimpsonIntegrator.o: /usr/include/math.h /usr/include/features.h
-EvtItgSimpsonIntegrator.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/huge_val.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/mathdef.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/mathcalls.h
-EvtItgSimpsonIntegrator.o: ../EvtGenBase/EvtReport.hh
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/iostream
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/ostream
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/ios
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/iosfwd
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cstring
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cstddef
-EvtItgSimpsonIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtItgSimpsonIntegrator.o: /usr/include/string.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/types.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/wordsize.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtItgSimpsonIntegrator.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtItgSimpsonIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/stdio_lim.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/sys_errlist.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/clocale
-EvtItgSimpsonIntegrator.o: /usr/include/locale.h /usr/include/bits/locale.h
-EvtItgSimpsonIntegrator.o: /usr/include/langinfo.h /usr/include/nl_types.h
-EvtItgSimpsonIntegrator.o: /usr/include/iconv.h /usr/include/libintl.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtItgSimpsonIntegrator.o: /usr/include/pthread.h /usr/include/sched.h
-EvtItgSimpsonIntegrator.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtItgSimpsonIntegrator.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/pthreadtypes.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/initspin.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/sigthread.h
-EvtItgSimpsonIntegrator.o: /usr/include/unistd.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/posix_opt.h
-EvtItgSimpsonIntegrator.o: /usr/include/bits/confname.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtItgSimpsonIntegrator.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cwchar
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/exception
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/climits
-EvtItgSimpsonIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtItgSimpsonIntegrator.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtItgSimpsonIntegrator.o: /usr/include/limits.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cstdlib
-EvtItgSimpsonIntegrator.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cassert
-EvtItgSimpsonIntegrator.o: /usr/include/assert.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/string
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/memory
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/limits
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/algorithm
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/streambuf
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/cwctype
-EvtItgSimpsonIntegrator.o: /usr/include/wctype.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/locale
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/typeinfo
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/istream
-EvtItgSimpsonIntegrator.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtItgThreeCoeffFcn.o: ../EvtGenBase/EvtPatches.hh
-EvtItgThreeCoeffFcn.o: ../EvtGenModels/EvtItgThreeCoeffFcn.hh
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/vector
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtItgThreeCoeffFcn.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtItgThreeCoeffFcn.o: /usr/include/gnu/stubs.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/cstring
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/cstddef
-EvtItgThreeCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtItgThreeCoeffFcn.o: /usr/include/string.h /usr/include/c++/3.4.6/climits
-EvtItgThreeCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtItgThreeCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtItgThreeCoeffFcn.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtItgThreeCoeffFcn.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/exception
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/iosfwd
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtItgThreeCoeffFcn.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtItgThreeCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/stdio_lim.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/sys_errlist.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtItgThreeCoeffFcn.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtItgThreeCoeffFcn.o: /usr/include/libintl.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtItgThreeCoeffFcn.o: /usr/include/pthread.h /usr/include/sched.h
-EvtItgThreeCoeffFcn.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtItgThreeCoeffFcn.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/pthreadtypes.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/initspin.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/posix_opt.h
-EvtItgThreeCoeffFcn.o: /usr/include/bits/confname.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtItgThreeCoeffFcn.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/cwchar
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtItgThreeCoeffFcn.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtItgThreeCoeffFcn.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtItgTwoCoeffFcn.o: ../EvtGenBase/EvtPatches.hh
-EvtItgTwoCoeffFcn.o: ../EvtGenModels/EvtItgTwoCoeffFcn.hh
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/vector
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtItgTwoCoeffFcn.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtItgTwoCoeffFcn.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/cstring
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/cstddef
-EvtItgTwoCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtItgTwoCoeffFcn.o: /usr/include/string.h /usr/include/c++/3.4.6/climits
-EvtItgTwoCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtItgTwoCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtItgTwoCoeffFcn.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtItgTwoCoeffFcn.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/exception
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/iosfwd
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtItgTwoCoeffFcn.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtItgTwoCoeffFcn.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/stdio_lim.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/sys_errlist.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtItgTwoCoeffFcn.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtItgTwoCoeffFcn.o: /usr/include/libintl.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtItgTwoCoeffFcn.o: /usr/include/pthread.h /usr/include/sched.h
-EvtItgTwoCoeffFcn.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtItgTwoCoeffFcn.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/pthreadtypes.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/initspin.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/posix_opt.h
-EvtItgTwoCoeffFcn.o: /usr/include/bits/confname.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtItgTwoCoeffFcn.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/cwchar
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtItgTwoCoeffFcn.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtItgTwoCoeffFcn.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtJetSet.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtParticle.hh
-EvtJetSet.o: /usr/include/assert.h /usr/include/features.h
-EvtJetSet.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtJetSet.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtJetSet.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtJetSet.o: /usr/include/c++/3.4.6/iosfwd
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtJetSet.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtJetSet.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtJetSet.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtJetSet.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtJetSet.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtJetSet.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtJetSet.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtJetSet.o: /usr/include/gconv.h
-EvtJetSet.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtJetSet.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtJetSet.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtJetSet.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtJetSet.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtJetSet.o: /usr/include/libintl.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtJetSet.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtJetSet.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtJetSet.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtJetSet.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtJetSet.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtJetSet.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtJetSet.o: /usr/include/ctype.h /usr/include/endian.h
-EvtJetSet.o: /usr/include/bits/endian.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtJetSet.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtJetSet.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtJetSet.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtJetSet.o: /usr/include/c++/3.4.6/exception
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtJetSet.o: /usr/include/c++/3.4.6/climits
-EvtJetSet.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtJetSet.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtJetSet.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtJetSet.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtJetSet.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtJetSet.o: /usr/include/c++/3.4.6/cassert
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtJetSet.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtJetSet.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtJetSet.o: /usr/include/c++/3.4.6/limits
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtJetSet.o: /usr/include/c++/3.4.6/algorithm
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtJetSet.o: /usr/include/c++/3.4.6/streambuf
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtJetSet.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtJetSet.o: /usr/include/c++/3.4.6/locale
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtJetSet.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtJetSet.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtJetSet.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtJetSet.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtJetSet.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtJetSet.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtStringParticle.hh
-EvtJetSet.o: ../EvtGenBase/EvtDecayTable.hh ../EvtGenBase/EvtDecayBase.hh
-EvtJetSet.o: /usr/include/c++/3.4.6/vector
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtJetSet.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtJetSet.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtJetSet.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtJetSet.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtJetSet.o: ../EvtGenModels/EvtJetSet.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtJetSet.o: /usr/include/c++/3.4.6/iomanip /usr/include/c++/3.4.6/functional
-EvtJetSet.o: /usr/include/c++/3.4.6/fstream
-EvtJetSet.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtJetSet.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtJetSetCDF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtParticle.hh
-EvtJetSetCDF.o: /usr/include/assert.h /usr/include/features.h
-EvtJetSetCDF.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtJetSetCDF.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/iosfwd
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtJetSetCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtJetSetCDF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtJetSetCDF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtJetSetCDF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtJetSetCDF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtJetSetCDF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtJetSetCDF.o: /usr/include/gconv.h
-EvtJetSetCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtJetSetCDF.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtJetSetCDF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtJetSetCDF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtJetSetCDF.o: /usr/include/libintl.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtJetSetCDF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtJetSetCDF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtJetSetCDF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtJetSetCDF.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtJetSetCDF.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtJetSetCDF.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtJetSetCDF.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtJetSetCDF.o: /usr/include/stdint.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/exception
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/climits
-EvtJetSetCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtJetSetCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtJetSetCDF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtJetSetCDF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/cassert
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/limits
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/algorithm
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/streambuf
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/locale
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/typeinfo
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/istream
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtJetSetCDF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtJetSetCDF.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtStringParticle.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtDecayTable.hh ../EvtGenBase/EvtDecayBase.hh
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/vector
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtJetSetCDF.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtJetSetCDF.o: ../EvtGenModels/EvtJetSetCDF.hh
-EvtJetSetCDF.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/iomanip
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/functional
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/fstream
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtJetSetCDF.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtJscont.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtJscont.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtJscont.o: /usr/include/gnu/stubs.h
-EvtJscont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtJscont.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtJscont.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtJscont.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtJscont.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtJscont.o: /usr/include/gconv.h
-EvtJscont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtJscont.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtJscont.o: /usr/include/string.h ../EvtGenBase/EvtParticle.hh
-EvtJscont.o: /usr/include/assert.h ../EvtGenBase/EvtVector4R.hh
-EvtJscont.o: /usr/include/c++/3.4.6/iostream
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtJscont.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtJscont.o: /usr/include/c++/3.4.6/iosfwd
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtJscont.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtJscont.o: /usr/include/c++/3.4.6/cstdio /usr/include/c++/3.4.6/clocale
-EvtJscont.o: /usr/include/locale.h /usr/include/bits/locale.h
-EvtJscont.o: /usr/include/langinfo.h /usr/include/nl_types.h
-EvtJscont.o: /usr/include/iconv.h /usr/include/libintl.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtJscont.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtJscont.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtJscont.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtJscont.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtJscont.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtJscont.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtJscont.o: /usr/include/ctype.h /usr/include/endian.h
-EvtJscont.o: /usr/include/bits/endian.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtJscont.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtJscont.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtJscont.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtJscont.o: /usr/include/c++/3.4.6/exception
-EvtJscont.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtJscont.o: /usr/include/c++/3.4.6/climits
-EvtJscont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtJscont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtJscont.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtJscont.o: /usr/include/c++/3.4.6/new
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtJscont.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtJscont.o: /usr/include/c++/3.4.6/cassert
-EvtJscont.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtJscont.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtJscont.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtJscont.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtJscont.o: /usr/include/c++/3.4.6/limits
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtJscont.o: /usr/include/c++/3.4.6/algorithm
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtJscont.o: /usr/include/c++/3.4.6/streambuf
-EvtJscont.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtJscont.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtJscont.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtJscont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtJscont.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtJscont.o: /usr/include/c++/3.4.6/locale
-EvtJscont.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtJscont.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtJscont.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtJscont.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtJscont.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtJscont.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtJscont.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtJscont.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtDecayTable.hh
-EvtJscont.o: ../EvtGenBase/EvtDecayBase.hh /usr/include/c++/3.4.6/vector
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtJscont.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtJscont.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtJscont.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtJscont.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtJscont.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtJscont.o: ../EvtGenModels/EvtJscont.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtJscont.o: ../EvtGenModels/EvtJetSet.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtJscontCDF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtJscontCDF.o: /usr/include/gnu/stubs.h
-EvtJscontCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtJscontCDF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtJscontCDF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtJscontCDF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtJscontCDF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtJscontCDF.o: /usr/include/gconv.h
-EvtJscontCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtJscontCDF.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtJscontCDF.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtJscontCDF.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtJscontCDF.o: /usr/include/c++/3.4.6/iosfwd
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtJscontCDF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtJscontCDF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtJscontCDF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtJscontCDF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtJscontCDF.o: /usr/include/libintl.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtJscontCDF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtJscontCDF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtJscontCDF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtJscontCDF.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtJscontCDF.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtJscontCDF.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtJscontCDF.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtJscontCDF.o: /usr/include/stdint.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/exception
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/climits
-EvtJscontCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtJscontCDF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtJscontCDF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtJscontCDF.o: /usr/include/c++/3.4.6/new
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/cassert
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/limits
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/algorithm
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtJscontCDF.o: /usr/include/c++/3.4.6/streambuf
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtJscontCDF.o: /usr/include/c++/3.4.6/locale
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtJscontCDF.o: /usr/include/c++/3.4.6/typeinfo
-EvtJscontCDF.o: /usr/include/c++/3.4.6/istream
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtJscontCDF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtJscontCDF.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtDecayTable.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtDecayBase.hh /usr/include/c++/3.4.6/vector
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtJscontCDF.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtJscontCDF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtJscontCDF.o: ../EvtGenModels/EvtJscontCDF.hh
-EvtJscontCDF.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtJscontCDF.o: ../EvtGenModels/EvtJetSetCDF.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtKKLambdaC.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtKKLambdaC.o: /usr/include/gnu/stubs.h
-EvtKKLambdaC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtKKLambdaC.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtKKLambdaC.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/iosfwd
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtKKLambdaC.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtKKLambdaC.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtKKLambdaC.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtKKLambdaC.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtKKLambdaC.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtKKLambdaC.o: /usr/include/gconv.h
-EvtKKLambdaC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtKKLambdaC.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtKKLambdaC.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtKKLambdaC.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtKKLambdaC.o: /usr/include/libintl.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtKKLambdaC.o: /usr/include/pthread.h /usr/include/sched.h
-EvtKKLambdaC.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtKKLambdaC.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtKKLambdaC.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtKKLambdaC.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtKKLambdaC.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtKKLambdaC.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtKKLambdaC.o: /usr/include/stdint.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/exception
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/climits
-EvtKKLambdaC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtKKLambdaC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtKKLambdaC.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/new
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/cassert
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/limits
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/algorithm
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/streambuf
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/locale
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/typeinfo
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/istream
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtKKLambdaC.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtKKLambdaC.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/vector
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtKKLambdaC.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtKKLambdaC.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtKKLambdaC.o: ../EvtGenModels/EvtKKLambdaC.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtKKLambdaC.o: ../EvtGenModels/EvtKKLambdaCFF.hh
-EvtKKLambdaC.o: ../EvtGenBase/EvtSemiLeptonicBaryonAmp.hh
-EvtKKLambdaCFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/iostream
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtKKLambdaCFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtKKLambdaCFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/cstring
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/cstddef
-EvtKKLambdaCFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtKKLambdaCFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtKKLambdaCFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtKKLambdaCFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtKKLambdaCFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtKKLambdaCFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtKKLambdaCFF.o: /usr/include/gconv.h
-EvtKKLambdaCFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtKKLambdaCFF.o: /usr/include/bits/stdio_lim.h
-EvtKKLambdaCFF.o: /usr/include/bits/sys_errlist.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtKKLambdaCFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtKKLambdaCFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtKKLambdaCFF.o: /usr/include/libintl.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtKKLambdaCFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtKKLambdaCFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtKKLambdaCFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtKKLambdaCFF.o: /usr/include/bits/pthreadtypes.h
-EvtKKLambdaCFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtKKLambdaCFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtKKLambdaCFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtKKLambdaCFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtKKLambdaCFF.o: /usr/include/bits/endian.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtKKLambdaCFF.o: /usr/include/stdint.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/exception
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/climits
-EvtKKLambdaCFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtKKLambdaCFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtKKLambdaCFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtKKLambdaCFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/limits
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/algorithm
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/streambuf
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/locale
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/typeinfo
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/istream
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtKKLambdaCFF.o: ../EvtGenModels/EvtKKLambdaCFF.hh
-EvtKKLambdaCFF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtKKLambdaCFF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtKKLambdaCFF.o: ../EvtGenBase/EvtSpinType.hh
-EvtKKLambdaCFF.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/vector
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtKKLambdaCFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtKKLambdaCFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtKKLambdaCFF.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtKKLambdaCFF.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtKstarnunu.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtKstarnunu.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtKstarnunu.o: /usr/include/gnu/stubs.h
-EvtKstarnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/iostream
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtKstarnunu.o: /usr/include/c++/3.4.6/iosfwd
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtKstarnunu.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtKstarnunu.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtKstarnunu.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtKstarnunu.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtKstarnunu.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtKstarnunu.o: /usr/include/gconv.h
-EvtKstarnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtKstarnunu.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtKstarnunu.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtKstarnunu.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtKstarnunu.o: /usr/include/libintl.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtKstarnunu.o: /usr/include/pthread.h /usr/include/sched.h
-EvtKstarnunu.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtKstarnunu.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtKstarnunu.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtKstarnunu.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtKstarnunu.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtKstarnunu.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtKstarnunu.o: /usr/include/stdint.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/exception
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/climits
-EvtKstarnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtKstarnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtKstarnunu.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtKstarnunu.o: /usr/include/c++/3.4.6/new
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/limits
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/algorithm
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtKstarnunu.o: /usr/include/c++/3.4.6/streambuf
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtKstarnunu.o: /usr/include/c++/3.4.6/locale
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtKstarnunu.o: /usr/include/c++/3.4.6/typeinfo
-EvtKstarnunu.o: /usr/include/c++/3.4.6/istream
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtKstarnunu.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtKstarnunu.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtKstarnunu.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtKstarnunu.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtKstarnunu.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtKstarnunu.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtKstarnunu.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtKstarnunu.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtKstarnunu.o: /usr/include/c++/3.4.6/vector
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtKstarnunu.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtKstarnunu.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtKstarnunu.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtKstarnunu.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtKstarnunu.o: ../EvtGenModels/EvtKstarnunu.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtKstarnunu.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtKstarnunu.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtKstarstargamma.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtKstarstargamma.o: /usr/include/gnu/stubs.h
-EvtKstarstargamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtKstarstargamma.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtKstarstargamma.o: ../EvtGenBase/EvtVector4R.hh
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/iostream
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/ostream
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/cstring
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtKstarstargamma.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtKstarstargamma.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtKstarstargamma.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtKstarstargamma.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtKstarstargamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtKstarstargamma.o: /usr/include/bits/stdio_lim.h
-EvtKstarstargamma.o: /usr/include/bits/sys_errlist.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtKstarstargamma.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtKstarstargamma.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtKstarstargamma.o: /usr/include/libintl.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtKstarstargamma.o: /usr/include/pthread.h /usr/include/sched.h
-EvtKstarstargamma.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtKstarstargamma.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtKstarstargamma.o: /usr/include/bits/pthreadtypes.h
-EvtKstarstargamma.o: /usr/include/bits/initspin.h
-EvtKstarstargamma.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtKstarstargamma.o: /usr/include/bits/posix_opt.h
-EvtKstarstargamma.o: /usr/include/bits/confname.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtKstarstargamma.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/cwchar
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/exception
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/climits
-EvtKstarstargamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtKstarstargamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtKstarstargamma.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/new
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/cassert
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/string
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/memory
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/limits
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/algorithm
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/streambuf
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/locale
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/typeinfo
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/istream
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtKstarstargamma.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtKstarstargamma.o: /usr/include/bits/mathdef.h
-EvtKstarstargamma.o: /usr/include/bits/mathcalls.h
-EvtKstarstargamma.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtReport.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtScalarParticle.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtVectorParticle.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtVector4C.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtVector3C.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtVector3R.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtPhotonParticle.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtTensorParticle.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtTensor4C.hh ../EvtGenBase/EvtGenKine.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/vector
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtKstarstargamma.o: ../EvtGenBase/EvtStringHash.hh
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/map
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtKstarstargamma.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtKstarstargamma.o: ../EvtGenModels/EvtKstarstargamma.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtDecayAmp.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtEvalHelAmp.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtPropBreitWignerRel.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtPropagator.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtAmplitude.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtPoint1D.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtTwoBodyVertex.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtTwoBodyKine.hh
-EvtKstarstargamma.o: ../EvtGenBase/EvtBlattWeisskopf.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtPatches.hh
-EvtLambdaP_BarGamma.o: ../EvtGenModels/EvtLambdaP_BarGamma.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtDecayAmp.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtId.hh
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/iostream
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtLambdaP_BarGamma.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtLambdaP_BarGamma.o: /usr/include/gnu/stubs.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/ostream
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/ios
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/iosfwd
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/cstring
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/cstddef
-EvtLambdaP_BarGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtLambdaP_BarGamma.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtLambdaP_BarGamma.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/wordsize.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtLambdaP_BarGamma.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtLambdaP_BarGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/stdio_lim.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/sys_errlist.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtLambdaP_BarGamma.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtLambdaP_BarGamma.o: /usr/include/libintl.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtLambdaP_BarGamma.o: /usr/include/pthread.h /usr/include/sched.h
-EvtLambdaP_BarGamma.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtLambdaP_BarGamma.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/pthreadtypes.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/initspin.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/posix_opt.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/confname.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtLambdaP_BarGamma.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/cwchar
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/exception
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/climits
-EvtLambdaP_BarGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtLambdaP_BarGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtLambdaP_BarGamma.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtLambdaP_BarGamma.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/string
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/memory
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/limits
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/algorithm
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/streambuf
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/locale
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/typeinfo
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/istream
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtSpinType.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtReport.hh
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/vector
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtComplex.hh
-EvtLambdaP_BarGamma.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/mathdef.h
-EvtLambdaP_BarGamma.o: /usr/include/bits/mathcalls.h
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtPDL.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtPartProp.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtStringHash.hh
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/map
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtLambdaP_BarGamma.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtParticle.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtVector4R.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtGammaMatrix.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtDiracSpinor.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtVector3R.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtDiracParticle.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtPhotonParticle.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtVector4C.hh
-EvtLambdaP_BarGamma.o: ../EvtGenBase/EvtVector3C.hh
-EvtLb2Lll.o: ../EvtGenModels/EvtLb2Lll.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtPatches.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtId.hh /usr/include/c++/3.4.6/iostream
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtLb2Lll.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtLb2Lll.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtLb2Lll.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtLb2Lll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtLb2Lll.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtLb2Lll.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtLb2Lll.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtLb2Lll.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtLb2Lll.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtLb2Lll.o: /usr/include/gconv.h
-EvtLb2Lll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtLb2Lll.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtLb2Lll.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtLb2Lll.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtLb2Lll.o: /usr/include/libintl.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtLb2Lll.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtLb2Lll.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtLb2Lll.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtLb2Lll.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtLb2Lll.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtLb2Lll.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtLb2Lll.o: /usr/include/ctype.h /usr/include/endian.h
-EvtLb2Lll.o: /usr/include/bits/endian.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtLb2Lll.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/exception
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/climits
-EvtLb2Lll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtLb2Lll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtLb2Lll.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtLb2Lll.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/limits
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/algorithm
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtLb2Lll.o: /usr/include/c++/3.4.6/streambuf
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtLb2Lll.o: /usr/include/c++/3.4.6/locale
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtLb2Lll.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtLb2Lll.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtLb2Lll.o: /usr/include/c++/3.4.6/vector
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/vector.tcc ../EvtGenBase/EvtAmp.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtComplex.hh /usr/include/math.h
-EvtLb2Lll.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtLb2Lll.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtConst.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtTensor4C.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtVector4R.hh ../EvtGenBase/EvtVector3R.hh
-EvtLb2Lll.o: ../EvtGenModels/EvtWilsonCoeficients.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtSpinDensity.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtDiracParticle.hh ../EvtGenBase/EvtPDL.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtLb2Lll.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtLb2Lll.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtLb2Lll.o: ../EvtGenBase/EvtGammaMatrix.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtLNuGamma.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtLNuGamma.o: /usr/include/gnu/stubs.h
-EvtLNuGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/iostream
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtLNuGamma.o: /usr/include/c++/3.4.6/iosfwd
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtLNuGamma.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtLNuGamma.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtLNuGamma.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtLNuGamma.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtLNuGamma.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtLNuGamma.o: /usr/include/gconv.h
-EvtLNuGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtLNuGamma.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtLNuGamma.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtLNuGamma.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtLNuGamma.o: /usr/include/libintl.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtLNuGamma.o: /usr/include/pthread.h /usr/include/sched.h
-EvtLNuGamma.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtLNuGamma.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtLNuGamma.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtLNuGamma.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtLNuGamma.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtLNuGamma.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtLNuGamma.o: /usr/include/stdint.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/exception
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/climits
-EvtLNuGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtLNuGamma.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtLNuGamma.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtLNuGamma.o: /usr/include/c++/3.4.6/new
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/limits
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/algorithm
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtLNuGamma.o: /usr/include/c++/3.4.6/streambuf
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtLNuGamma.o: /usr/include/c++/3.4.6/locale
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtLNuGamma.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtLNuGamma.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtLNuGamma.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtLNuGamma.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtLNuGamma.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtLNuGamma.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtLNuGamma.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtLNuGamma.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenModels/EvtLNuGamma.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtLNuGamma.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtTensor4C.hh
-EvtMelikhov.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtMelikhov.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtMelikhov.o: /usr/include/gnu/stubs.h
-EvtMelikhov.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtMelikhov.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtMelikhov.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtMelikhov.o: /usr/include/c++/3.4.6/iosfwd
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtMelikhov.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtMelikhov.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtMelikhov.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtMelikhov.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtMelikhov.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtMelikhov.o: /usr/include/gconv.h
-EvtMelikhov.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtMelikhov.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtMelikhov.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtMelikhov.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtMelikhov.o: /usr/include/libintl.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtMelikhov.o: /usr/include/pthread.h /usr/include/sched.h
-EvtMelikhov.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtMelikhov.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtMelikhov.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtMelikhov.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtMelikhov.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtMelikhov.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtMelikhov.o: /usr/include/stdint.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/exception
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/climits
-EvtMelikhov.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtMelikhov.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtMelikhov.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtMelikhov.o: /usr/include/c++/3.4.6/new
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/cassert
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/limits
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/algorithm
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtMelikhov.o: /usr/include/c++/3.4.6/streambuf
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtMelikhov.o: /usr/include/c++/3.4.6/locale
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtMelikhov.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtMelikhov.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtMelikhov.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtMelikhov.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtMelikhov.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtMelikhov.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtMelikhov.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtMelikhov.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtMelikhov.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtMelikhov.o: ../EvtGenModels/EvtMelikhov.hh /usr/include/c++/3.4.6/fstream
-EvtMelikhov.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtMelikhov.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtMelikhov.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtMelikhov.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtMelikhov.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtMelikhov.o: ../EvtGenModels/EvtMelikhovFF.hh
-EvtMelikhov.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtMelikhovFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/iostream
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtMelikhovFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtMelikhovFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/cstring
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/cstddef
-EvtMelikhovFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtMelikhovFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtMelikhovFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtMelikhovFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtMelikhovFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtMelikhovFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtMelikhovFF.o: /usr/include/gconv.h
-EvtMelikhovFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtMelikhovFF.o: /usr/include/bits/stdio_lim.h
-EvtMelikhovFF.o: /usr/include/bits/sys_errlist.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtMelikhovFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtMelikhovFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtMelikhovFF.o: /usr/include/libintl.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtMelikhovFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtMelikhovFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtMelikhovFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtMelikhovFF.o: /usr/include/bits/pthreadtypes.h
-EvtMelikhovFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtMelikhovFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtMelikhovFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtMelikhovFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtMelikhovFF.o: /usr/include/bits/endian.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtMelikhovFF.o: /usr/include/stdint.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/exception
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/climits
-EvtMelikhovFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtMelikhovFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtMelikhovFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtMelikhovFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/limits
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/algorithm
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/streambuf
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/locale
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/typeinfo
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/istream
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtMelikhovFF.o: ../EvtGenModels/EvtMelikhovFF.hh
-EvtMelikhovFF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtMelikhovFF.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtMelikhovFF.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtMelikhovFF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtMelikhovFF.o: ../EvtGenBase/EvtSpinType.hh
-EvtMelikhovFF.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/vector
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtMelikhovFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtMelikhovFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtModelReg.o: ../EvtGenBase/EvtPatches.hh /usr/include/c++/3.4.6/iostream
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtModelReg.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtModelReg.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtModelReg.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtModelReg.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtModelReg.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtModelReg.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtModelReg.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtModelReg.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtModelReg.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtModelReg.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtModelReg.o: /usr/include/gconv.h
-EvtModelReg.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtModelReg.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtModelReg.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtModelReg.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtModelReg.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtModelReg.o: /usr/include/libintl.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtModelReg.o: /usr/include/pthread.h /usr/include/sched.h
-EvtModelReg.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtModelReg.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtModelReg.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtModelReg.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtModelReg.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtModelReg.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtModelReg.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtModelReg.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtModelReg.o: /usr/include/stdint.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtModelReg.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtModelReg.o: /usr/include/c++/3.4.6/exception
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtModelReg.o: /usr/include/c++/3.4.6/climits
-EvtModelReg.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtModelReg.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtModelReg.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtModelReg.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtModelReg.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtModelReg.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtModelReg.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtModelReg.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtModelReg.o: /usr/include/c++/3.4.6/limits
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtModelReg.o: /usr/include/c++/3.4.6/algorithm
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtModelReg.o: /usr/include/c++/3.4.6/streambuf
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtModelReg.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtModelReg.o: /usr/include/c++/3.4.6/locale
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtModelReg.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtModelReg.o: /usr/include/c++/3.4.6/iomanip
-EvtModelReg.o: /usr/include/c++/3.4.6/functional
-EvtModelReg.o: /usr/include/c++/3.4.6/fstream
-EvtModelReg.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtModelReg.o: ../EvtGenBase/EvtModel.hh ../EvtGenBase/EvtDecayBase.hh
-EvtModelReg.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtModelReg.o: ../EvtGenBase/EvtReport.hh /usr/include/c++/3.4.6/vector
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtModelReg.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtModelReg.o: ../EvtGenModels/EvtTauVectornu.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtModelReg.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtComplex.hh
-EvtModelReg.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtModelReg.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtModelReg.o: ../EvtGenBase/EvtConst.hh ../EvtGenModels/EvtVVP.hh
-EvtModelReg.o: ../EvtGenModels/EvtSLN.hh ../EvtGenModels/EvtISGW2.hh
-EvtModelReg.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtModelReg.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtModelReg.o: ../EvtGenModels/EvtMelikhov.hh ../EvtGenModels/EvtSLPole.hh
-EvtModelReg.o: ../EvtGenModels/EvtPropSLPole.hh ../EvtGenBase/EvtPoint1D.hh
-EvtModelReg.o: ../EvtGenModels/EvtSLBKPole.hh ../EvtGenModels/EvtISGW.hh
-EvtModelReg.o: ../EvtGenModels/EvtBHadronic.hh ../EvtGenModels/EvtVSS.hh
-EvtModelReg.o: ../EvtGenModels/EvtVSSMix.hh ../EvtGenModels/EvtVSSBMixCPT.hh
-EvtModelReg.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtModelReg.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenModels/EvtVSPPwave.hh
-EvtModelReg.o: ../EvtGenModels/EvtGoityRoberts.hh ../EvtGenModels/EvtSVS.hh
-EvtModelReg.o: ../EvtGenModels/EvtTSS.hh ../EvtGenModels/EvtTVSPwave.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVVHelAmp.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVPHelAmp.hh ../EvtGenModels/EvtSVPCP.hh
-EvtModelReg.o: ../EvtGenModels/EvtVVSPwave.hh ../EvtGenModels/EvtDDalitz.hh
-EvtModelReg.o: ../EvtGenBase/EvtFlatte.hh ../EvtGenModels/EvtOmegaDalitz.hh
-EvtModelReg.o: ../EvtGenModels/EvtPi0Dalitz.hh ../EvtGenBase/EvtDecayProb.hh
-EvtModelReg.o: ../EvtGenModels/EvtEtaDalitz.hh ../EvtGenModels/EvtPhsp.hh
-EvtModelReg.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtModelReg.o: ../EvtGenModels/EvtBtoXsgamma.hh ../EvtGenModels/EvtBtoXsll.hh
-EvtModelReg.o: ../EvtGenModels/EvtBtoXsEtap.hh ../EvtGenModels/EvtSSSCP.hh
-EvtModelReg.o: ../EvtGenModels/EvtSSSCPpng.hh ../EvtGenModels/EvtSTSCP.hh
-EvtModelReg.o: ../EvtGenModels/EvtSTS.hh ../EvtGenModels/EvtSSSCPT.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVSCP.hh ../EvtGenModels/EvtSSDCP.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVSNONCPEIGEN.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVVNONCPEIGEN.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVVCP.hh ../EvtGenModels/EvtSVVCPLH.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVSCPLH.hh ../EvtGenModels/EvtSll.hh
-EvtModelReg.o: ../EvtGenModels/EvtVll.hh ../EvtGenModels/EvtTaulnunu.hh
-EvtModelReg.o: ../EvtGenModels/EvtTauHadnu.hh
-EvtModelReg.o: ../EvtGenModels/EvtTauScalarnu.hh
-EvtModelReg.o: ../EvtGenModels/EvtKstarnunu.hh
-EvtModelReg.o: ../EvtGenModels/EvtbTosllBall.hh
-EvtModelReg.o: ../EvtGenModels/EvtSingleParticle.hh
-EvtModelReg.o: ../EvtGenModels/EvtVectorIsr.hh
-EvtModelReg.o: ../EvtGenModels/EvtBToPlnuBK.hh
-EvtModelReg.o: ../EvtGenModels/EvtBToVlnuBall.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVVHelCPMix.hh ../EvtGenModels/EvtLb2Lll.hh
-EvtModelReg.o: ../EvtGenBase/EvtTensor4C.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtModelReg.o: ../EvtGenBase/EvtVector3R.hh
-EvtModelReg.o: ../EvtGenModels/EvtWilsonCoeficients.hh
-EvtModelReg.o: ../EvtGenModels/EvtHypNonLepton.hh
-EvtModelReg.o: ../EvtGenModels/EvtbTosllAli.hh ../EvtGenModels/EvtHQET.hh
-EvtModelReg.o: ../EvtGenModels/EvtHQET2.hh ../EvtGenBase/EvtPDL.hh
-EvtModelReg.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtModelReg.o: ../EvtGenModels/EvtHelAmp.hh ../EvtGenModels/EvtPartWave.hh
-EvtModelReg.o: ../EvtGenModels/EvtBto2piCPiso.hh
-EvtModelReg.o: ../EvtGenModels/EvtBtoKpiCPiso.hh
-EvtModelReg.o: ../EvtGenModels/EvtSVSCPiso.hh ../EvtGenModels/EvtVVpipi.hh
-EvtModelReg.o: ../EvtGenModels/EvtY3SToY1SpipiMoxhay.hh
-EvtModelReg.o: ../EvtGenModels/EvtYmSToYnSpipiCLEO.hh
-EvtModelReg.o: ../EvtGenModels/EvtVVPIPI_WEIGHTED.hh
-EvtModelReg.o: ../EvtGenModels/EvtVPHOtoVISRHi.hh
-EvtModelReg.o: ../EvtGenModels/EvtBTo4piCP.hh ../EvtGenModels/EvtBTo3piCP.hh
-EvtModelReg.o: ../EvtGenModels/EvtCBTo3piP00.hh
-EvtModelReg.o: ../EvtGenModels/EvtCBTo3piMPP.hh
-EvtModelReg.o: ../EvtGenModels/EvtBToKpipiCP.hh ../EvtGenModels/EvtBsquark.hh
-EvtModelReg.o: ../EvtGenModels/EvtPhiDalitz.hh ../EvtGenModels/EvtLNuGamma.hh
-EvtModelReg.o: ../EvtGenModels/EvtVub.hh ../EvtGenModels/EvtVubHybrid.hh
-EvtModelReg.o: ../EvtGenModels/EvtVubNLO.hh ../EvtGenModels/EvtVubBLNP.hh
-EvtModelReg.o: ../EvtGenModels/EvtVubBLNPHybrid.hh
-EvtModelReg.o: ../EvtGenModels/EvtPto3P.hh
-EvtModelReg.o: ../EvtGenModels/EvtIntervalDecayAmp.hh
-EvtModelReg.o: ../EvtGenBase/EvtMacros.hh ../EvtGenBase/EvtPdf.hh
-EvtModelReg.o: ../EvtGenBase/EvtValError.hh ../EvtGenBase/EvtPredGen.hh
-EvtModelReg.o: ../EvtGenBase/EvtStreamInputIterator.hh
-EvtModelReg.o: ../EvtGenBase/EvtStreamAdapter.hh
-EvtModelReg.o: /usr/include/c++/3.4.6/iterator
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stream_iterator.h
-EvtModelReg.o: ../EvtGenBase/EvtPdfMax.hh ../EvtGenBase/EvtRandom.hh
-EvtModelReg.o: ../EvtGenBase/EvtAmpFactory.hh
-EvtModelReg.o: ../EvtGenBase/EvtAmplitudeSum.hh ../EvtGenBase/EvtAmplitude.hh
-EvtModelReg.o: ../EvtGenBase/EvtPdfSum.hh
-EvtModelReg.o: ../EvtGenBase/EvtMultiChannelParser.hh
-EvtModelReg.o: ../EvtGenBase/EvtAmpPdf.hh ../EvtGenBase/EvtCPUtil.hh
-EvtModelReg.o: ../EvtGenBase/EvtCyclic3.hh ../EvtGenBase/EvtDalitzPoint.hh
-EvtModelReg.o: ../EvtGenBase/EvtDalitzCoord.hh ../EvtGenBase/EvtDalitzPlot.hh
-EvtModelReg.o: ../EvtGenBase/EvtTwoBodyVertex.hh
-EvtModelReg.o: ../EvtGenBase/EvtTwoBodyKine.hh
-EvtModelReg.o: ../EvtGenBase/EvtBlattWeisskopf.hh
-EvtModelReg.o: ../EvtGenBase/EvtDecayMode.hh ../EvtGenModels/EvtBtoKD3P.hh
-EvtModelReg.o: ../EvtGenModels/EvtKstarstargamma.hh
-EvtModelReg.o: ../EvtGenModels/EvtFlatQ2.hh
-EvtModelReg.o: ../EvtGenModels/EvtLambdaP_BarGamma.hh
-EvtModelReg.o: ../EvtGenModels/EvtBBScalar.hh
-EvtModelReg.o: ../EvtGenBase/EvtScalarParticle.hh
-EvtModelReg.o: ../EvtGenBase/EvtDiracParticle.hh ../EvtGenBase/EvtVector4C.hh
-EvtModelReg.o: ../EvtGenBase/EvtVector3C.hh /usr/include/c++/3.4.6/bitset
-EvtModelReg.o: ../EvtGenModels/EvtKKLambdaC.hh
-EvtModelReg.o: ../EvtGenModels/EvtMultibody.hh ../EvtGenBase/EvtMTree.hh
-EvtModelReg.o: ../EvtGenBase/EvtSpinAmp.hh /usr/include/c++/3.4.6/cstdarg
-EvtModelReg.o: ../EvtGenBase/EvtMNode.hh ../EvtGenBase/EvtSymTable.hh
-EvtModelReg.o: ../EvtGenBase/EvtMParticle.hh ../EvtGenBase/EvtMRes.hh
-EvtModelReg.o: ../EvtGenModels/EvtJetSetCDF.hh
-EvtModelReg.o: ../EvtGenModels/EvtJscontCDF.hh ../EvtGenModels/EvtPythia.hh
-EvtModelReg.o: ../EvtGenModels/EvtPyGaGa.hh ../EvtGenModels/EvtPycont.hh
-EvtModelReg.o: ../EvtGenModels/EvtDMix.hh ../EvtGenModels/EvtD0mixDalitz.hh
-EvtModelReg.o: ../EvtGenBase/EvtDalitzReso.hh ../EvtGenModels/EvtModelReg.hh
-EvtModelReg.o: /usr/include/c++/3.4.6/list
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/stl_list.h
-EvtModelReg.o: /usr/include/c++/3.4.6/bits/list.tcc
-EvtMultibody.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtGenKine.hh
-EvtMultibody.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtMultibody.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtMultibody.o: /usr/include/c++/3.4.6/iostream
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtMultibody.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtMultibody.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtMultibody.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtMultibody.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtMultibody.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtMultibody.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtMultibody.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtMultibody.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtMultibody.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtMultibody.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtMultibody.o: /usr/include/gconv.h
-EvtMultibody.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtMultibody.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtMultibody.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtMultibody.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtMultibody.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtMultibody.o: /usr/include/libintl.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtMultibody.o: /usr/include/pthread.h /usr/include/sched.h
-EvtMultibody.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtMultibody.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtMultibody.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtMultibody.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtMultibody.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtMultibody.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtMultibody.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtMultibody.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtMultibody.o: /usr/include/stdint.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtMultibody.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtMultibody.o: /usr/include/c++/3.4.6/exception
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtMultibody.o: /usr/include/c++/3.4.6/climits
-EvtMultibody.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtMultibody.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtMultibody.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtMultibody.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtMultibody.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtMultibody.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtMultibody.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtMultibody.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtMultibody.o: /usr/include/c++/3.4.6/limits
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtMultibody.o: /usr/include/c++/3.4.6/algorithm
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtMultibody.o: /usr/include/c++/3.4.6/streambuf
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtMultibody.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtMultibody.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtMultibody.o: /usr/include/c++/3.4.6/locale
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtMultibody.o: /usr/include/c++/3.4.6/typeinfo
-EvtMultibody.o: /usr/include/c++/3.4.6/istream
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtMultibody.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtMultibody.o: /usr/include/c++/3.4.6/vector
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtMultibody.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtMultibody.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtMultibody.o: ../EvtGenBase/EvtResonance.hh ../EvtGenBase/EvtVector4R.hh
-EvtMultibody.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtMultibody.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtMultibody.o: ../EvtGenBase/EvtResonance2.hh
-EvtMultibody.o: ../EvtGenModels/EvtMultibody.hh ../EvtGenBase/EvtMTree.hh
-EvtMultibody.o: ../EvtGenBase/EvtSpinAmp.hh ../EvtGenBase/EvtComplex.hh
-EvtMultibody.o: ../EvtGenBase/EvtConst.hh /usr/include/c++/3.4.6/cstdarg
-EvtMultibody.o: ../EvtGenBase/EvtMNode.hh ../EvtGenBase/EvtSymTable.hh
-EvtMultibody.o: ../EvtGenBase/EvtMParticle.hh ../EvtGenBase/EvtMRes.hh
-EvtMultibody.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtMultibody.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtdFunction.hh
-EvtMultibody.o: ../EvtGenBase/EvtKine.hh ../EvtGenBase/EvtParticle.hh
-EvtMultibody.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtOmegaDalitz.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtOmegaDalitz.o: /usr/include/gnu/stubs.h
-EvtOmegaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtOmegaDalitz.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtOmegaDalitz.o: ../EvtGenBase/EvtVector4R.hh
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/iostream
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/iosfwd
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/cstring
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtOmegaDalitz.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtOmegaDalitz.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtOmegaDalitz.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtOmegaDalitz.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtOmegaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtOmegaDalitz.o: /usr/include/bits/stdio_lim.h
-EvtOmegaDalitz.o: /usr/include/bits/sys_errlist.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtOmegaDalitz.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtOmegaDalitz.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtOmegaDalitz.o: /usr/include/libintl.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtOmegaDalitz.o: /usr/include/pthread.h /usr/include/sched.h
-EvtOmegaDalitz.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtOmegaDalitz.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtOmegaDalitz.o: /usr/include/bits/pthreadtypes.h
-EvtOmegaDalitz.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtOmegaDalitz.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtOmegaDalitz.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtOmegaDalitz.o: /usr/include/ctype.h /usr/include/endian.h
-EvtOmegaDalitz.o: /usr/include/bits/endian.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtOmegaDalitz.o: /usr/include/stdint.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/exception
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/climits
-EvtOmegaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtOmegaDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtOmegaDalitz.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/new
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/cassert
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/limits
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/algorithm
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/streambuf
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/locale
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/typeinfo
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/istream
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtOmegaDalitz.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtOmegaDalitz.o: /usr/include/bits/mathcalls.h
-EvtOmegaDalitz.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtTensor4C.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtPDL.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtPartProp.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/vector
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtOmegaDalitz.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtOmegaDalitz.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtOmegaDalitz.o: ../EvtGenModels/EvtOmegaDalitz.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtOmegaDalitz.o: ../EvtGenBase/EvtAmp.hh
-EvtPartWave.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtPartWave.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPartWave.o: /usr/include/gnu/stubs.h
-EvtPartWave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPartWave.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtPartWave.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPartWave.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtPartWave.o: /usr/include/c++/3.4.6/iosfwd
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPartWave.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPartWave.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPartWave.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPartWave.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPartWave.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPartWave.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPartWave.o: /usr/include/gconv.h
-EvtPartWave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPartWave.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPartWave.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPartWave.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPartWave.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPartWave.o: /usr/include/libintl.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPartWave.o: /usr/include/pthread.h /usr/include/sched.h
-EvtPartWave.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtPartWave.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtPartWave.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtPartWave.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtPartWave.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtPartWave.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtPartWave.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPartWave.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPartWave.o: /usr/include/stdint.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPartWave.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPartWave.o: /usr/include/c++/3.4.6/exception
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPartWave.o: /usr/include/c++/3.4.6/climits
-EvtPartWave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPartWave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPartWave.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPartWave.o: /usr/include/c++/3.4.6/new
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPartWave.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPartWave.o: /usr/include/c++/3.4.6/cassert
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPartWave.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPartWave.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPartWave.o: /usr/include/c++/3.4.6/limits
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPartWave.o: /usr/include/c++/3.4.6/algorithm
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPartWave.o: /usr/include/c++/3.4.6/streambuf
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPartWave.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPartWave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPartWave.o: /usr/include/c++/3.4.6/locale
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPartWave.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtPartWave.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtPartWave.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtPartWave.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtPartWave.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtPartWave.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtPartWave.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtPartWave.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPartWave.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPartWave.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPartWave.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtPartWave.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtPartWave.o: ../EvtGenModels/EvtPartWave.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtPartWave.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtPartWave.o: ../EvtGenBase/EvtEvalHelAmp.hh ../EvtGenBase/EvtKine.hh
-EvtPartWave.o: ../EvtGenBase/EvtCGCoefSingle.hh
-EvtPFermi.o: ../EvtGenBase/EvtPatches.hh ../EvtGenModels/EvtPFermi.hh
-EvtPFermi.o: ../EvtGenBase/EvtReport.hh /usr/include/c++/3.4.6/iostream
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPFermi.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPFermi.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtPFermi.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPFermi.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPFermi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPFermi.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPFermi.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPFermi.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPFermi.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPFermi.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPFermi.o: /usr/include/gconv.h
-EvtPFermi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPFermi.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPFermi.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPFermi.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPFermi.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPFermi.o: /usr/include/libintl.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPFermi.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtPFermi.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtPFermi.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtPFermi.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPFermi.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPFermi.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPFermi.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPFermi.o: /usr/include/bits/endian.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPFermi.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPFermi.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPFermi.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPFermi.o: /usr/include/c++/3.4.6/exception
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPFermi.o: /usr/include/c++/3.4.6/climits
-EvtPFermi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPFermi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPFermi.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPFermi.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPFermi.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPFermi.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPFermi.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPFermi.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPFermi.o: /usr/include/c++/3.4.6/limits
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPFermi.o: /usr/include/c++/3.4.6/algorithm
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPFermi.o: /usr/include/c++/3.4.6/streambuf
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPFermi.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPFermi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPFermi.o: /usr/include/c++/3.4.6/locale
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPFermi.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPFermi.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtPFermi.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtPFermi.o: /usr/include/bits/mathcalls.h
-EvtPhiDalitz.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtPhiDalitz.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPhiDalitz.o: /usr/include/gnu/stubs.h
-EvtPhiDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPhiDalitz.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtPhiDalitz.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtPhiDalitz.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/iosfwd
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPhiDalitz.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPhiDalitz.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPhiDalitz.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPhiDalitz.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPhiDalitz.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPhiDalitz.o: /usr/include/gconv.h
-EvtPhiDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPhiDalitz.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPhiDalitz.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPhiDalitz.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPhiDalitz.o: /usr/include/libintl.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPhiDalitz.o: /usr/include/pthread.h /usr/include/sched.h
-EvtPhiDalitz.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtPhiDalitz.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtPhiDalitz.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtPhiDalitz.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtPhiDalitz.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtPhiDalitz.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPhiDalitz.o: /usr/include/stdint.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/exception
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/climits
-EvtPhiDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPhiDalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPhiDalitz.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/new
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/limits
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/algorithm
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/streambuf
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/locale
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/typeinfo
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/istream
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtPhiDalitz.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtSpinDensity.hh
-EvtPhiDalitz.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtPhiDalitz.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtPhiDalitz.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtPhiDalitz.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtPhiDalitz.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/vector
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPhiDalitz.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPhiDalitz.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPhiDalitz.o: ../EvtGenModels/EvtPhiDalitz.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtPhiDalitz.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtPHOTOS.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtIdSet.hh
-EvtPHOTOS.o: ../EvtGenBase/EvtId.hh /usr/include/c++/3.4.6/iostream
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPHOTOS.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPHOTOS.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtPHOTOS.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPHOTOS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPHOTOS.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPHOTOS.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPHOTOS.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPHOTOS.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPHOTOS.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPHOTOS.o: /usr/include/gconv.h
-EvtPHOTOS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPHOTOS.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPHOTOS.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPHOTOS.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPHOTOS.o: /usr/include/libintl.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPHOTOS.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtPHOTOS.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtPHOTOS.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtPHOTOS.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPHOTOS.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPHOTOS.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPHOTOS.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPHOTOS.o: /usr/include/bits/endian.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPHOTOS.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/exception
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/climits
-EvtPHOTOS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPHOTOS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPHOTOS.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPHOTOS.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/limits
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/algorithm
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPHOTOS.o: /usr/include/c++/3.4.6/streambuf
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPHOTOS.o: /usr/include/c++/3.4.6/locale
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPHOTOS.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtPHOTOS.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtPHOTOS.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtPHOTOS.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtPHOTOS.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtPHOTOS.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtSpinType.hh
-EvtPHOTOS.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtPhotonParticle.hh
-EvtPHOTOS.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtPHOTOS.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtPDL.hh
-EvtPHOTOS.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtPHOTOS.o: /usr/include/c++/3.4.6/vector
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPHOTOS.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPHOTOS.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPHOTOS.o: ../EvtGenModels/EvtPHOTOS.hh ../EvtGenBase/EvtAbsRadCorr.hh
-EvtPhsp.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtPhsp.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPhsp.o: /usr/include/gnu/stubs.h
-EvtPhsp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPhsp.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtPhsp.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPhsp.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtPhsp.o: /usr/include/c++/3.4.6/iosfwd
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPhsp.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPhsp.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPhsp.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPhsp.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPhsp.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtPhsp.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtPhsp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPhsp.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPhsp.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPhsp.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPhsp.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPhsp.o: /usr/include/libintl.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPhsp.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtPhsp.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtPhsp.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtPhsp.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPhsp.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPhsp.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPhsp.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPhsp.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPhsp.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPhsp.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPhsp.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPhsp.o: /usr/include/c++/3.4.6/exception
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPhsp.o: /usr/include/c++/3.4.6/climits
-EvtPhsp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPhsp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPhsp.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPhsp.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPhsp.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPhsp.o: /usr/include/c++/3.4.6/cassert
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPhsp.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPhsp.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPhsp.o: /usr/include/c++/3.4.6/limits
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPhsp.o: /usr/include/c++/3.4.6/algorithm
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPhsp.o: /usr/include/c++/3.4.6/streambuf
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPhsp.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPhsp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPhsp.o: /usr/include/c++/3.4.6/locale
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPhsp.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtPhsp.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtPhsp.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtPhsp.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtPhsp.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtPhsp.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtPhsp.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtPhsp.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPhsp.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPhsp.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPhsp.o: ../EvtGenModels/EvtPhsp.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtPhsp.o: ../EvtGenBase/EvtDecayBase.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtPi0Dalitz.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPi0Dalitz.o: /usr/include/gnu/stubs.h
-EvtPi0Dalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/fstream /usr/include/c++/3.4.6/istream
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPi0Dalitz.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPi0Dalitz.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPi0Dalitz.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPi0Dalitz.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPi0Dalitz.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPi0Dalitz.o: /usr/include/gconv.h
-EvtPi0Dalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPi0Dalitz.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPi0Dalitz.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPi0Dalitz.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPi0Dalitz.o: /usr/include/libintl.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPi0Dalitz.o: /usr/include/pthread.h /usr/include/sched.h
-EvtPi0Dalitz.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtPi0Dalitz.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtPi0Dalitz.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtPi0Dalitz.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtPi0Dalitz.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtPi0Dalitz.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPi0Dalitz.o: /usr/include/stdint.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/exception
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/climits
-EvtPi0Dalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPi0Dalitz.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPi0Dalitz.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/new
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/limits
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/algorithm
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/streambuf
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/locale
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/typeinfo
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/ostream
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtPi0Dalitz.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtParticle.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPi0Dalitz.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtPi0Dalitz.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtPi0Dalitz.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/vector
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPi0Dalitz.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPi0Dalitz.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPi0Dalitz.o: ../EvtGenModels/EvtPi0Dalitz.hh ../EvtGenBase/EvtDecayProb.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtVector4C.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtVector3R.hh
-EvtPi0Dalitz.o: ../EvtGenBase/EvtDiracSpinor.hh ../EvtGenBase/EvtTensor4C.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtPropSLPole.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPropSLPole.o: /usr/include/gnu/stubs.h
-EvtPropSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPropSLPole.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtPropSLPole.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtPropSLPole.o: /usr/include/c++/3.4.6/iosfwd
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/cstring
-EvtPropSLPole.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtPropSLPole.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtPropSLPole.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtPropSLPole.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtPropSLPole.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtPropSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPropSLPole.o: /usr/include/bits/stdio_lim.h
-EvtPropSLPole.o: /usr/include/bits/sys_errlist.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPropSLPole.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPropSLPole.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPropSLPole.o: /usr/include/libintl.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPropSLPole.o: /usr/include/pthread.h /usr/include/sched.h
-EvtPropSLPole.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtPropSLPole.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtPropSLPole.o: /usr/include/bits/pthreadtypes.h
-EvtPropSLPole.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPropSLPole.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPropSLPole.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPropSLPole.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPropSLPole.o: /usr/include/bits/endian.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPropSLPole.o: /usr/include/stdint.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/exception
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/climits
-EvtPropSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPropSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPropSLPole.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPropSLPole.o: /usr/include/c++/3.4.6/new
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/cassert
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/limits
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/algorithm
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPropSLPole.o: /usr/include/c++/3.4.6/streambuf
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPropSLPole.o: /usr/include/c++/3.4.6/locale
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPropSLPole.o: /usr/include/c++/3.4.6/typeinfo
-EvtPropSLPole.o: /usr/include/c++/3.4.6/istream
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtPropSLPole.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtPropSLPole.o: /usr/include/bits/mathcalls.h
-EvtPropSLPole.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtPartProp.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtPropSLPole.o: /usr/include/c++/3.4.6/vector
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPropSLPole.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPropSLPole.o: ../EvtGenModels/EvtPropSLPole.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtPoint1D.hh ../EvtGenModels/EvtSLPoleFF.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtSemiLeptonicTensorAmp.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtIntervalFlatPdf.hh ../EvtGenBase/EvtPdf.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtValError.hh ../EvtGenBase/EvtPredGen.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtStreamInputIterator.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtStreamAdapter.hh
-EvtPropSLPole.o: /usr/include/c++/3.4.6/iterator
-EvtPropSLPole.o: /usr/include/c++/3.4.6/bits/stream_iterator.h
-EvtPropSLPole.o: ../EvtGenBase/EvtPdfMax.hh ../EvtGenBase/EvtMacros.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtRandom.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtScalarParticle.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtVectorParticle.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtVector3R.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtTensorParticle.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtTensor4C.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtTwoBodyVertex.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtTwoBodyKine.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtBlattWeisskopf.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtPropBreitWignerRel.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtPropagator.hh ../EvtGenBase/EvtAmplitude.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtAmpPdf.hh ../EvtGenBase/EvtMassAmp.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtDecayTable.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtPropSLPole.o: ../EvtGenBase/EvtParticleDecay.hh
-EvtPto3P.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtPDL.hh
-EvtPto3P.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtSpinType.hh
-EvtPto3P.o: ../EvtGenBase/EvtReport.hh /usr/include/c++/3.4.6/iostream
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPto3P.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPto3P.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtPto3P.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPto3P.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPto3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPto3P.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPto3P.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPto3P.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPto3P.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPto3P.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPto3P.o: /usr/include/gconv.h
-EvtPto3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPto3P.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPto3P.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPto3P.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPto3P.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPto3P.o: /usr/include/libintl.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPto3P.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtPto3P.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtPto3P.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtPto3P.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPto3P.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPto3P.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPto3P.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPto3P.o: /usr/include/bits/endian.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPto3P.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPto3P.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPto3P.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPto3P.o: /usr/include/c++/3.4.6/exception
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPto3P.o: /usr/include/c++/3.4.6/climits
-EvtPto3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPto3P.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPto3P.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPto3P.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPto3P.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPto3P.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPto3P.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPto3P.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPto3P.o: /usr/include/c++/3.4.6/limits
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPto3P.o: /usr/include/c++/3.4.6/algorithm
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPto3P.o: /usr/include/c++/3.4.6/streambuf
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPto3P.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPto3P.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPto3P.o: /usr/include/c++/3.4.6/locale
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPto3P.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/istream.tcc ../EvtGenBase/EvtId.hh
-EvtPto3P.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPto3P.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPto3P.o: ../EvtGenModels/EvtPto3P.hh ../EvtGenBase/EvtVector4R.hh
-EvtPto3P.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtPto3P.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtPto3P.o: ../EvtGenModels/EvtIntervalDecayAmp.hh
-EvtPto3P.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtPto3P.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtComplex.hh
-EvtPto3P.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtParticle.hh
-EvtPto3P.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtMacros.hh
-EvtPto3P.o: ../EvtGenBase/EvtPdf.hh ../EvtGenBase/EvtValError.hh
-EvtPto3P.o: ../EvtGenBase/EvtPredGen.hh
-EvtPto3P.o: ../EvtGenBase/EvtStreamInputIterator.hh
-EvtPto3P.o: ../EvtGenBase/EvtStreamAdapter.hh /usr/include/c++/3.4.6/iterator
-EvtPto3P.o: /usr/include/c++/3.4.6/bits/stream_iterator.h
-EvtPto3P.o: ../EvtGenBase/EvtPdfMax.hh ../EvtGenBase/EvtRandom.hh
-EvtPto3P.o: ../EvtGenBase/EvtAmpFactory.hh ../EvtGenBase/EvtAmplitudeSum.hh
-EvtPto3P.o: ../EvtGenBase/EvtAmplitude.hh ../EvtGenBase/EvtPdfSum.hh
-EvtPto3P.o: ../EvtGenBase/EvtMultiChannelParser.hh ../EvtGenBase/EvtAmpPdf.hh
-EvtPto3P.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtCyclic3.hh
-EvtPto3P.o: ../EvtGenBase/EvtDalitzPoint.hh ../EvtGenBase/EvtDalitzCoord.hh
-EvtPto3P.o: ../EvtGenBase/EvtDalitzPlot.hh ../EvtGenBase/EvtTwoBodyVertex.hh
-EvtPto3P.o: ../EvtGenBase/EvtTwoBodyKine.hh
-EvtPto3P.o: ../EvtGenBase/EvtBlattWeisskopf.hh ../EvtGenBase/EvtDecayMode.hh
-EvtPto3P.o: ../EvtGenBase/EvtPto3PAmpFactory.hh
-EvtPycont.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtPycont.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPycont.o: /usr/include/gnu/stubs.h
-EvtPycont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPycont.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtPycont.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPycont.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtPycont.o: /usr/include/c++/3.4.6/iosfwd
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPycont.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPycont.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPycont.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPycont.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPycont.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPycont.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPycont.o: /usr/include/gconv.h
-EvtPycont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPycont.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPycont.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPycont.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPycont.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPycont.o: /usr/include/libintl.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPycont.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtPycont.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtPycont.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtPycont.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPycont.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPycont.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPycont.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPycont.o: /usr/include/bits/endian.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPycont.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPycont.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPycont.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPycont.o: /usr/include/c++/3.4.6/exception
-EvtPycont.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPycont.o: /usr/include/c++/3.4.6/climits
-EvtPycont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPycont.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPycont.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPycont.o: /usr/include/c++/3.4.6/new
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPycont.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPycont.o: /usr/include/c++/3.4.6/cassert
-EvtPycont.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPycont.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPycont.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPycont.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPycont.o: /usr/include/c++/3.4.6/limits
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPycont.o: /usr/include/c++/3.4.6/algorithm
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPycont.o: /usr/include/c++/3.4.6/streambuf
-EvtPycont.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPycont.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPycont.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPycont.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPycont.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPycont.o: /usr/include/c++/3.4.6/locale
-EvtPycont.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPycont.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPycont.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtPycont.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtPycont.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtPycont.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtPycont.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtPycont.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtDecayTable.hh
-EvtPycont.o: ../EvtGenBase/EvtDecayBase.hh /usr/include/c++/3.4.6/vector
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPycont.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtPycont.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtPycont.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtPycont.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPycont.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPycont.o: ../EvtGenModels/EvtPycont.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtPycont.o: ../EvtGenModels/EvtPythia.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtPyGaGa.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtPyGaGa.o: /usr/include/gnu/stubs.h
-EvtPyGaGa.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPyGaGa.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtPyGaGa.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtPyGaGa.o: /usr/include/c++/3.4.6/iosfwd
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPyGaGa.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPyGaGa.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPyGaGa.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPyGaGa.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPyGaGa.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPyGaGa.o: /usr/include/gconv.h
-EvtPyGaGa.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPyGaGa.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPyGaGa.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPyGaGa.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPyGaGa.o: /usr/include/libintl.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPyGaGa.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtPyGaGa.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtPyGaGa.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtPyGaGa.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPyGaGa.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPyGaGa.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPyGaGa.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPyGaGa.o: /usr/include/bits/endian.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPyGaGa.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/exception
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/climits
-EvtPyGaGa.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPyGaGa.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPyGaGa.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPyGaGa.o: /usr/include/c++/3.4.6/new
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/cassert
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/limits
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/algorithm
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPyGaGa.o: /usr/include/c++/3.4.6/streambuf
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPyGaGa.o: /usr/include/c++/3.4.6/locale
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPyGaGa.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtPyGaGa.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtPyGaGa.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtDecayTable.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtDecayBase.hh /usr/include/c++/3.4.6/vector
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPyGaGa.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtPyGaGa.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPyGaGa.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPyGaGa.o: ../EvtGenModels/EvtPyGaGa.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtPyGaGa.o: ../EvtGenModels/EvtPythia.hh
-EvtPythia.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtParticle.hh
-EvtPythia.o: /usr/include/assert.h /usr/include/features.h
-EvtPythia.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtPythia.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtPythia.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtPythia.o: /usr/include/c++/3.4.6/iosfwd
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtPythia.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtPythia.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtPythia.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtPythia.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtPythia.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtPythia.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtPythia.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtPythia.o: /usr/include/gconv.h
-EvtPythia.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtPythia.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtPythia.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtPythia.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtPythia.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtPythia.o: /usr/include/libintl.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtPythia.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtPythia.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtPythia.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtPythia.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtPythia.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtPythia.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtPythia.o: /usr/include/ctype.h /usr/include/endian.h
-EvtPythia.o: /usr/include/bits/endian.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtPythia.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtPythia.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtPythia.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtPythia.o: /usr/include/c++/3.4.6/exception
-EvtPythia.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtPythia.o: /usr/include/c++/3.4.6/climits
-EvtPythia.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtPythia.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtPythia.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtPythia.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtPythia.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtPythia.o: /usr/include/c++/3.4.6/cassert
-EvtPythia.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtPythia.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtPythia.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtPythia.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtPythia.o: /usr/include/c++/3.4.6/limits
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtPythia.o: /usr/include/c++/3.4.6/algorithm
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtPythia.o: /usr/include/c++/3.4.6/streambuf
-EvtPythia.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtPythia.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtPythia.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtPythia.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtPythia.o: /usr/include/c++/3.4.6/locale
-EvtPythia.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtPythia.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtPythia.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtPythia.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtPythia.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtPythia.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtPythia.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtPythia.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtStringParticle.hh
-EvtPythia.o: ../EvtGenBase/EvtDecayTable.hh ../EvtGenBase/EvtDecayBase.hh
-EvtPythia.o: /usr/include/c++/3.4.6/vector
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtPythia.o: ../EvtGenBase/EvtParticleDecayList.hh
-EvtPythia.o: ../EvtGenBase/EvtParticleDecay.hh ../EvtGenBase/EvtPDL.hh
-EvtPythia.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtPythia.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtPythia.o: ../EvtGenModels/EvtPythia.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtPythia.o: /usr/include/c++/3.4.6/iomanip /usr/include/c++/3.4.6/functional
-EvtPythia.o: /usr/include/c++/3.4.6/fstream
-EvtPythia.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtPythia.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtSingleParticle.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSingleParticle.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSingleParticle.o: /usr/include/gnu/stubs.h
-EvtSingleParticle.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSingleParticle.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSingleParticle.o: ../EvtGenBase/EvtVector4R.hh
-EvtSingleParticle.o: /usr/include/c++/3.4.6/iostream
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/ostream
-EvtSingleParticle.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/cstring
-EvtSingleParticle.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtSingleParticle.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtSingleParticle.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtSingleParticle.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtSingleParticle.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtSingleParticle.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSingleParticle.o: /usr/include/bits/stdio_lim.h
-EvtSingleParticle.o: /usr/include/bits/sys_errlist.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSingleParticle.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSingleParticle.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSingleParticle.o: /usr/include/libintl.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSingleParticle.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSingleParticle.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSingleParticle.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSingleParticle.o: /usr/include/bits/pthreadtypes.h
-EvtSingleParticle.o: /usr/include/bits/initspin.h
-EvtSingleParticle.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSingleParticle.o: /usr/include/bits/posix_opt.h
-EvtSingleParticle.o: /usr/include/bits/confname.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSingleParticle.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/cwchar
-EvtSingleParticle.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/exception
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/climits
-EvtSingleParticle.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSingleParticle.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSingleParticle.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSingleParticle.o: /usr/include/c++/3.4.6/new
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/cassert
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/string
-EvtSingleParticle.o: /usr/include/c++/3.4.6/memory
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/limits
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/algorithm
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSingleParticle.o: /usr/include/c++/3.4.6/streambuf
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSingleParticle.o: /usr/include/c++/3.4.6/locale
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSingleParticle.o: /usr/include/c++/3.4.6/typeinfo
-EvtSingleParticle.o: /usr/include/c++/3.4.6/istream
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSingleParticle.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtSingleParticle.o: /usr/include/bits/mathdef.h
-EvtSingleParticle.o: /usr/include/bits/mathcalls.h
-EvtSingleParticle.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtSingleParticle.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSingleParticle.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSingleParticle.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtRandom.hh
-EvtSingleParticle.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSingleParticle.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtSingleParticle.o: /usr/include/c++/3.4.6/vector
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSingleParticle.o: ../EvtGenBase/EvtStringHash.hh
-EvtSingleParticle.o: /usr/include/c++/3.4.6/map
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSingleParticle.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSingleParticle.o: ../EvtGenModels/EvtSingleParticle.hh
-EvtSingleParticle.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtSingleParticle.o: ../EvtGenBase/EvtDecayBase.hh
-EvtSLBKPole.o: /usr/include/stdlib.h /usr/include/features.h
-EvtSLBKPole.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtSLBKPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSLBKPole.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSLBKPole.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSLBKPole.o: /usr/include/c++/3.4.6/iosfwd
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSLBKPole.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSLBKPole.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSLBKPole.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSLBKPole.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSLBKPole.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSLBKPole.o: /usr/include/gconv.h
-EvtSLBKPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSLBKPole.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSLBKPole.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSLBKPole.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSLBKPole.o: /usr/include/libintl.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSLBKPole.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSLBKPole.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSLBKPole.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSLBKPole.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtSLBKPole.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSLBKPole.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSLBKPole.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSLBKPole.o: /usr/include/stdint.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/exception
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/climits
-EvtSLBKPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSLBKPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSLBKPole.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSLBKPole.o: /usr/include/c++/3.4.6/new
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/cassert
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/limits
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/algorithm
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSLBKPole.o: /usr/include/c++/3.4.6/streambuf
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSLBKPole.o: /usr/include/c++/3.4.6/locale
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSLBKPole.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSLBKPole.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSLBKPole.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSLBKPole.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSLBKPole.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSLBKPole.o: ../EvtGenModels/EvtSLBKPole.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtPatches.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtSLBKPole.o: ../EvtGenModels/EvtSLBKPoleFF.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtSLBKPole.o: ../EvtGenBase/EvtSemiLeptonicTensorAmp.hh
-EvtSLBKPoleFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/iostream
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSLBKPoleFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSLBKPoleFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/cstring
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/cstddef
-EvtSLBKPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSLBKPoleFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSLBKPoleFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSLBKPoleFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSLBKPoleFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSLBKPoleFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSLBKPoleFF.o: /usr/include/gconv.h
-EvtSLBKPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSLBKPoleFF.o: /usr/include/bits/stdio_lim.h
-EvtSLBKPoleFF.o: /usr/include/bits/sys_errlist.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSLBKPoleFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSLBKPoleFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSLBKPoleFF.o: /usr/include/libintl.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSLBKPoleFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSLBKPoleFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSLBKPoleFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSLBKPoleFF.o: /usr/include/bits/pthreadtypes.h
-EvtSLBKPoleFF.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSLBKPoleFF.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSLBKPoleFF.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSLBKPoleFF.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSLBKPoleFF.o: /usr/include/bits/endian.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSLBKPoleFF.o: /usr/include/stdint.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/exception
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/climits
-EvtSLBKPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSLBKPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSLBKPoleFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSLBKPoleFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/limits
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/algorithm
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/streambuf
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/locale
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/typeinfo
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/istream
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSLBKPoleFF.o: ../EvtGenModels/EvtSLBKPoleFF.hh
-EvtSLBKPoleFF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtSLBKPoleFF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSLBKPoleFF.o: ../EvtGenBase/EvtSpinType.hh
-EvtSLBKPoleFF.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/vector
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSLBKPoleFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSLBKPoleFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSLBKPoleFF.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtSLBKPoleFF.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtSll.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSll.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSll.o: /usr/include/gnu/stubs.h
-EvtSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSll.o: /usr/include/c++/3.4.6/iostream
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSll.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSll.o: /usr/include/c++/3.4.6/iosfwd
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSll.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSll.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSll.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSll.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSll.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtSll.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSll.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSll.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSll.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSll.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSll.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSll.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSll.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSll.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSll.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSll.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSll.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSll.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSll.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSll.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSll.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSll.o: /usr/include/c++/3.4.6/exception
-EvtSll.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSll.o: /usr/include/c++/3.4.6/climits
-EvtSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSll.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSll.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSll.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtSll.o: /usr/include/assert.h /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSll.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSll.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSll.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSll.o: /usr/include/c++/3.4.6/limits
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSll.o: /usr/include/c++/3.4.6/algorithm
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSll.o: /usr/include/c++/3.4.6/streambuf
-EvtSll.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSll.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSll.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSll.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSll.o: /usr/include/c++/3.4.6/locale
-EvtSll.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSll.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSll.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSll.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtSll.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtSll.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtSll.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtSll.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtSll.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtSll.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSll.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSll.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSll.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSll.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenModels/EvtSll.hh
-EvtSll.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtSll.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtSll.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtSll.o: ../EvtGenBase/EvtVector3C.hh
-EvtSLN.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSLN.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSLN.o: /usr/include/gnu/stubs.h
-EvtSLN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSLN.o: /usr/include/c++/3.4.6/iostream
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSLN.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSLN.o: /usr/include/c++/3.4.6/iosfwd
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSLN.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSLN.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSLN.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSLN.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSLN.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtSLN.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtSLN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSLN.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSLN.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSLN.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSLN.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSLN.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSLN.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSLN.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSLN.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSLN.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSLN.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSLN.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSLN.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSLN.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSLN.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSLN.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSLN.o: /usr/include/c++/3.4.6/exception
-EvtSLN.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSLN.o: /usr/include/c++/3.4.6/climits
-EvtSLN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSLN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSLN.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSLN.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSLN.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtSLN.o: /usr/include/assert.h /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSLN.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSLN.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSLN.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSLN.o: /usr/include/c++/3.4.6/limits
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSLN.o: /usr/include/c++/3.4.6/algorithm
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSLN.o: /usr/include/c++/3.4.6/streambuf
-EvtSLN.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSLN.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSLN.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSLN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSLN.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSLN.o: /usr/include/c++/3.4.6/locale
-EvtSLN.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSLN.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSLN.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSLN.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtSLN.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtSLN.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtSLN.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtSLN.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtSLN.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtSLN.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSLN.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSLN.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSLN.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSLN.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenModels/EvtSLN.hh
-EvtSLN.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtSLN.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtSLN.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtSLN.o: ../EvtGenBase/EvtVector3C.hh
-EvtSLPole.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSLPole.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSLPole.o: /usr/include/gnu/stubs.h
-EvtSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSLPole.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSLPole.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSLPole.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSLPole.o: /usr/include/c++/3.4.6/iosfwd
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSLPole.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSLPole.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSLPole.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSLPole.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSLPole.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSLPole.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSLPole.o: /usr/include/gconv.h
-EvtSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSLPole.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSLPole.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSLPole.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSLPole.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSLPole.o: /usr/include/libintl.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSLPole.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSLPole.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSLPole.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSLPole.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSLPole.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSLPole.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSLPole.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSLPole.o: /usr/include/bits/endian.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSLPole.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSLPole.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSLPole.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSLPole.o: /usr/include/c++/3.4.6/exception
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSLPole.o: /usr/include/c++/3.4.6/climits
-EvtSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSLPole.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSLPole.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSLPole.o: /usr/include/c++/3.4.6/new
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSLPole.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSLPole.o: /usr/include/c++/3.4.6/cassert
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSLPole.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSLPole.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSLPole.o: /usr/include/c++/3.4.6/limits
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSLPole.o: /usr/include/c++/3.4.6/algorithm
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSLPole.o: /usr/include/c++/3.4.6/streambuf
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSLPole.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSLPole.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSLPole.o: /usr/include/c++/3.4.6/locale
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSLPole.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSLPole.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSLPole.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSLPole.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSLPole.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSLPole.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSLPole.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSLPole.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSLPole.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSLPole.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSLPole.o: ../EvtGenModels/EvtSLPole.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSLPole.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSLPole.o: ../EvtGenBase/EvtSemiLeptonicFF.hh
-EvtSLPole.o: ../EvtGenBase/EvtSemiLeptonicAmp.hh
-EvtSLPole.o: ../EvtGenModels/EvtSLPoleFF.hh
-EvtSLPole.o: ../EvtGenBase/EvtSemiLeptonicScalarAmp.hh
-EvtSLPole.o: ../EvtGenBase/EvtSemiLeptonicVectorAmp.hh
-EvtSLPole.o: ../EvtGenBase/EvtSemiLeptonicTensorAmp.hh
-EvtSLPoleFF.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtReport.hh
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/iostream
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSLPoleFF.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSLPoleFF.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSLPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSLPoleFF.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSLPoleFF.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSLPoleFF.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSLPoleFF.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSLPoleFF.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSLPoleFF.o: /usr/include/gconv.h
-EvtSLPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSLPoleFF.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSLPoleFF.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSLPoleFF.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSLPoleFF.o: /usr/include/libintl.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSLPoleFF.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSLPoleFF.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSLPoleFF.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSLPoleFF.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtSLPoleFF.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSLPoleFF.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSLPoleFF.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSLPoleFF.o: /usr/include/stdint.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/exception
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/climits
-EvtSLPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSLPoleFF.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSLPoleFF.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSLPoleFF.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/limits
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/algorithm
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/streambuf
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/locale
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSLPoleFF.o: ../EvtGenModels/EvtSLPoleFF.hh
-EvtSLPoleFF.o: ../EvtGenBase/EvtSemiLeptonicFF.hh ../EvtGenBase/EvtId.hh
-EvtSLPoleFF.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSLPoleFF.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/vector
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSLPoleFF.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSLPoleFF.o: /usr/include/c++/3.4.6/bits/stl_multimap.h /usr/include/math.h
-EvtSLPoleFF.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSLPoleFF.o: /usr/include/bits/mathcalls.h
-EvtSSDCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSSDCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSSDCP.o: /usr/include/gnu/stubs.h
-EvtSSDCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSSDCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSSDCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSSDCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSSDCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSSDCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSSDCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSSDCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSSDCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSSDCP.o: /usr/include/gconv.h
-EvtSSDCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSSDCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSSDCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSSDCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSSDCP.o: /usr/include/libintl.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSSDCP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSSDCP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSSDCP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSSDCP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSSDCP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSSDCP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSSDCP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSSDCP.o: /usr/include/bits/endian.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSSDCP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/exception
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/climits
-EvtSSDCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSSDCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSSDCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSSDCP.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/cassert
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/limits
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/algorithm
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSSDCP.o: /usr/include/c++/3.4.6/streambuf
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSSDCP.o: /usr/include/c++/3.4.6/locale
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSSDCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSSDCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSSDCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSSDCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSSDCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSSDCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtRandom.hh
-EvtSSDCP.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtCPUtil.hh
-EvtSSDCP.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSSDCP.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSSDCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSSDCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSSDCP.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSSDCP.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtSSDCP.o: ../EvtGenModels/EvtSSDCP.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSSDCP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSSSCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSSSCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSSSCP.o: /usr/include/gnu/stubs.h
-EvtSSSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSSSCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSSSCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSSSCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSSSCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSSSCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSSSCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSSSCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSSSCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSSSCP.o: /usr/include/gconv.h
-EvtSSSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSSSCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSSSCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSSSCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSSSCP.o: /usr/include/libintl.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSSSCP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSSSCP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSSSCP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSSSCP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSSSCP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSSSCP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSSSCP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSSSCP.o: /usr/include/bits/endian.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSSSCP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/exception
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/climits
-EvtSSSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSSSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSSSCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSSSCP.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/cassert
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/limits
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/algorithm
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSSSCP.o: /usr/include/c++/3.4.6/streambuf
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSSSCP.o: /usr/include/c++/3.4.6/locale
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSSSCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSSSCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSSSCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSSSCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSSSCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSSSCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSSSCP.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtPDL.hh
-EvtSSSCP.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtSSSCP.o: /usr/include/c++/3.4.6/vector
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSSSCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSSSCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSSSCP.o: ../EvtGenModels/EvtSSSCP.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSSSCP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSSSCPpng.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSSSCPpng.o: /usr/include/gnu/stubs.h
-EvtSSSCPpng.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSSSCPpng.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSSSCPpng.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/iosfwd
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSSSCPpng.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSSSCPpng.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSSSCPpng.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSSSCPpng.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSSSCPpng.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSSSCPpng.o: /usr/include/gconv.h
-EvtSSSCPpng.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSSSCPpng.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSSSCPpng.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSSSCPpng.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSSSCPpng.o: /usr/include/libintl.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSSSCPpng.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSSSCPpng.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSSSCPpng.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSSSCPpng.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtSSSCPpng.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSSSCPpng.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSSSCPpng.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSSSCPpng.o: /usr/include/stdint.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/exception
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/climits
-EvtSSSCPpng.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSSSCPpng.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSSSCPpng.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/new
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/cassert
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/limits
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/algorithm
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/streambuf
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/locale
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSSSCPpng.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSSSCPpng.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtRandom.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtCPUtil.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSSSCPpng.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSSSCPpng.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSSSCPpng.o: ../EvtGenModels/EvtSSSCPpng.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSSSCPpng.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSSSCPT.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSSSCPT.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSSSCPT.o: /usr/include/gnu/stubs.h
-EvtSSSCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSSSCPT.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSSSCPT.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSSSCPT.o: /usr/include/c++/3.4.6/iosfwd
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSSSCPT.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSSSCPT.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSSSCPT.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSSSCPT.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSSSCPT.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSSSCPT.o: /usr/include/gconv.h
-EvtSSSCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSSSCPT.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSSSCPT.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSSSCPT.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSSSCPT.o: /usr/include/libintl.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSSSCPT.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSSSCPT.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSSSCPT.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSSSCPT.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSSSCPT.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSSSCPT.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSSSCPT.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSSSCPT.o: /usr/include/bits/endian.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSSSCPT.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/exception
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/climits
-EvtSSSCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSSSCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSSSCPT.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSSSCPT.o: /usr/include/c++/3.4.6/new
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/cassert
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/limits
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/algorithm
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSSSCPT.o: /usr/include/c++/3.4.6/streambuf
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSSSCPT.o: /usr/include/c++/3.4.6/locale
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSSSCPT.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSSSCPT.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSSSCPT.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSSSCPT.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSSSCPT.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSSSCPT.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSSSCPT.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtPDL.hh
-EvtSSSCPT.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtSSSCPT.o: /usr/include/c++/3.4.6/vector
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSSSCPT.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSSSCPT.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSSSCPT.o: ../EvtGenModels/EvtSSSCPT.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSSSCPT.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSTS.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSTS.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSTS.o: /usr/include/gnu/stubs.h
-EvtSTS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSTS.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSTS.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSTS.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSTS.o: /usr/include/c++/3.4.6/iosfwd
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSTS.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSTS.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSTS.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSTS.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSTS.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtSTS.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtSTS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSTS.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSTS.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSTS.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSTS.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSTS.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSTS.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSTS.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSTS.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSTS.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSTS.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSTS.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSTS.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSTS.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSTS.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSTS.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSTS.o: /usr/include/c++/3.4.6/exception
-EvtSTS.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSTS.o: /usr/include/c++/3.4.6/climits
-EvtSTS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSTS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSTS.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSTS.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSTS.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtSTS.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSTS.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSTS.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSTS.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSTS.o: /usr/include/c++/3.4.6/limits
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSTS.o: /usr/include/c++/3.4.6/algorithm
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSTS.o: /usr/include/c++/3.4.6/streambuf
-EvtSTS.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSTS.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSTS.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSTS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSTS.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSTS.o: /usr/include/c++/3.4.6/locale
-EvtSTS.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSTS.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSTS.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSTS.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSTS.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSTS.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSTS.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSTS.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSTS.o: ../EvtGenBase/EvtTensor4C.hh ../EvtGenBase/EvtVector4C.hh
-EvtSTS.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtVector3R.hh
-EvtSTS.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSTS.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSTS.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSTS.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSTS.o: ../EvtGenModels/EvtSTS.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSTS.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSTSCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSTSCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSTSCP.o: /usr/include/gnu/stubs.h
-EvtSTSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSTSCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSTSCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSTSCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSTSCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSTSCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSTSCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSTSCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSTSCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSTSCP.o: /usr/include/gconv.h
-EvtSTSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSTSCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSTSCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSTSCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSTSCP.o: /usr/include/libintl.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSTSCP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSTSCP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSTSCP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSTSCP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSTSCP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSTSCP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSTSCP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSTSCP.o: /usr/include/bits/endian.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSTSCP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/exception
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/climits
-EvtSTSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSTSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSTSCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSTSCP.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/cassert
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/limits
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/algorithm
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSTSCP.o: /usr/include/c++/3.4.6/streambuf
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSTSCP.o: /usr/include/c++/3.4.6/locale
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSTSCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSTSCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSTSCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSTSCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSTSCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSTSCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSTSCP.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtTensor4C.hh
-EvtSTSCP.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSTSCP.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtPDL.hh
-EvtSTSCP.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtSTSCP.o: /usr/include/c++/3.4.6/vector
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSTSCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSTSCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSTSCP.o: ../EvtGenModels/EvtSTSCP.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSTSCP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVPCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVPCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVPCP.o: /usr/include/gnu/stubs.h
-EvtSVPCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVPCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVPCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVPCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVPCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVPCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVPCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVPCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVPCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVPCP.o: /usr/include/gconv.h
-EvtSVPCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVPCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVPCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVPCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVPCP.o: /usr/include/libintl.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVPCP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSVPCP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSVPCP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSVPCP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSVPCP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSVPCP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSVPCP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSVPCP.o: /usr/include/bits/endian.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVPCP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/exception
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/climits
-EvtSVPCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVPCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVPCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVPCP.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/cassert
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/limits
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/algorithm
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVPCP.o: /usr/include/c++/3.4.6/streambuf
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVPCP.o: /usr/include/c++/3.4.6/locale
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVPCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVPCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVPCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVPCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVPCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVPCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVPCP.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVPCP.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVPCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVPCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVPCP.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVPCP.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtSVPCP.o: ../EvtGenBase/EvtTensor3C.hh ../EvtGenModels/EvtSVPCP.hh
-EvtSVPCP.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtSVPCP.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtCPUtil.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVPHelAmp.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVPHelAmp.o: /usr/include/gnu/stubs.h
-EvtSVPHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVPHelAmp.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVPHelAmp.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVPHelAmp.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVPHelAmp.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVPHelAmp.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVPHelAmp.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVPHelAmp.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVPHelAmp.o: /usr/include/gconv.h
-EvtSVPHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVPHelAmp.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVPHelAmp.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVPHelAmp.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVPHelAmp.o: /usr/include/libintl.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVPHelAmp.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSVPHelAmp.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSVPHelAmp.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSVPHelAmp.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtSVPHelAmp.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSVPHelAmp.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSVPHelAmp.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVPHelAmp.o: /usr/include/stdint.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/exception
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/climits
-EvtSVPHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVPHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVPHelAmp.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/new
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/cassert
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/limits
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/algorithm
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/streambuf
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/locale
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/typeinfo
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/istream
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVPHelAmp.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVPHelAmp.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/vector
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVPHelAmp.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVPHelAmp.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVPHelAmp.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtSVPHelAmp.o: ../EvtGenModels/EvtSVPHelAmp.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSVPHelAmp.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVS.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVS.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVS.o: /usr/include/gnu/stubs.h
-EvtSVS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVS.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVS.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVS.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVS.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVS.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVS.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVS.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVS.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVS.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtSVS.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtSVS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVS.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVS.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVS.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVS.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVS.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSVS.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSVS.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSVS.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSVS.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSVS.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSVS.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSVS.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVS.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVS.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVS.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVS.o: /usr/include/c++/3.4.6/exception
-EvtSVS.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVS.o: /usr/include/c++/3.4.6/climits
-EvtSVS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVS.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVS.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVS.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtSVS.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVS.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVS.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVS.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVS.o: /usr/include/c++/3.4.6/limits
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVS.o: /usr/include/c++/3.4.6/algorithm
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVS.o: /usr/include/c++/3.4.6/streambuf
-EvtSVS.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVS.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVS.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVS.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVS.o: /usr/include/c++/3.4.6/locale
-EvtSVS.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVS.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSVS.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVS.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVS.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVS.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVS.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVS.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVS.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVS.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVS.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVS.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVS.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVS.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenModels/EvtSVS.hh
-EvtSVS.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtSVS.o: ../EvtGenBase/EvtAmp.hh
-EvtSVSCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVSCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVSCP.o: /usr/include/gnu/stubs.h
-EvtSVSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVSCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVSCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVSCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVSCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVSCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVSCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVSCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVSCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVSCP.o: /usr/include/gconv.h
-EvtSVSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVSCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVSCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVSCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVSCP.o: /usr/include/libintl.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVSCP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSVSCP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSVSCP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSVSCP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSVSCP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSVSCP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSVSCP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSVSCP.o: /usr/include/bits/endian.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVSCP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/exception
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/climits
-EvtSVSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVSCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVSCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVSCP.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/cassert
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/limits
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/algorithm
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVSCP.o: /usr/include/c++/3.4.6/streambuf
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVSCP.o: /usr/include/c++/3.4.6/locale
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVSCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVSCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVSCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVSCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVSCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVSCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVSCP.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtVector4C.hh
-EvtSVSCP.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtVector3R.hh
-EvtSVSCP.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVSCP.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVSCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVSCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVSCP.o: ../EvtGenModels/EvtSVSCP.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSVSCP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVSCPiso.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVSCPiso.o: /usr/include/gnu/stubs.h
-EvtSVSCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVSCPiso.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVSCPiso.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVSCPiso.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVSCPiso.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVSCPiso.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVSCPiso.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVSCPiso.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVSCPiso.o: /usr/include/gconv.h
-EvtSVSCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVSCPiso.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVSCPiso.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVSCPiso.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVSCPiso.o: /usr/include/libintl.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVSCPiso.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSVSCPiso.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSVSCPiso.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSVSCPiso.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtSVSCPiso.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSVSCPiso.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSVSCPiso.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVSCPiso.o: /usr/include/stdint.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/exception
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/climits
-EvtSVSCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVSCPiso.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVSCPiso.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/new
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/cassert
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/limits
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/algorithm
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/streambuf
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/locale
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVSCPiso.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVSCPiso.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtRandom.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtCPUtil.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVSCPiso.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVSCPiso.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVSCPiso.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenModels/EvtSVSCPiso.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtSVSCPiso.o: ../EvtGenBase/EvtAmp.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVSCPLH.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVSCPLH.o: /usr/include/gnu/stubs.h
-EvtSVSCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVSCPLH.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVSCPLH.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVSCPLH.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVSCPLH.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVSCPLH.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVSCPLH.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVSCPLH.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVSCPLH.o: /usr/include/gconv.h
-EvtSVSCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVSCPLH.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVSCPLH.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVSCPLH.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVSCPLH.o: /usr/include/libintl.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVSCPLH.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSVSCPLH.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSVSCPLH.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSVSCPLH.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSVSCPLH.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSVSCPLH.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSVSCPLH.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSVSCPLH.o: /usr/include/bits/endian.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVSCPLH.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/exception
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/climits
-EvtSVSCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVSCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVSCPLH.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/new
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/cassert
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/limits
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/algorithm
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/streambuf
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/locale
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVSCPLH.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVSCPLH.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtPDL.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/vector
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVSCPLH.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVSCPLH.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVSCPLH.o: ../EvtGenModels/EvtSVSCPLH.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVSCPLH.o: ../EvtGenBase/EvtVector3R.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVSNONCPEIGEN.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVSNONCPEIGEN.o: /usr/include/gnu/stubs.h
-EvtSVSNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtVector4R.hh
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/iostream
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/cstring
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtSVSNONCPEIGEN.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtSVSNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/stdio_lim.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/sys_errlist.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVSNONCPEIGEN.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVSNONCPEIGEN.o: /usr/include/libintl.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVSNONCPEIGEN.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSVSNONCPEIGEN.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSVSNONCPEIGEN.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/pthreadtypes.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/initspin.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/posix_opt.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/confname.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSVSNONCPEIGEN.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/cwchar
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/exception
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/climits
-EvtSVSNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVSNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVSNONCPEIGEN.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/new
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/cassert
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/string
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/memory
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/limits
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/algorithm
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/streambuf
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/locale
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/typeinfo
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/istream
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSVSNONCPEIGEN.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtSVSNONCPEIGEN.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtRandom.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtCPUtil.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/vector
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVSNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtVector3R.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenModels/EvtSVSNONCPEIGEN.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtDecayAmp.hh
-EvtSVSNONCPEIGEN.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVVCP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVVCP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVVCP.o: /usr/include/gnu/stubs.h
-EvtSVVCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVVCP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVVCP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVVCP.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVVCP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVVCP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVVCP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVVCP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVVCP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVVCP.o: /usr/include/gconv.h
-EvtSVVCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVVCP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVVCP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVVCP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVVCP.o: /usr/include/libintl.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVVCP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSVVCP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSVVCP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSVVCP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSVVCP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSVVCP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSVVCP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSVVCP.o: /usr/include/bits/endian.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVVCP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/exception
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/climits
-EvtSVVCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVVCP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVVCP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVVCP.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/cassert
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/limits
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/algorithm
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVVCP.o: /usr/include/c++/3.4.6/streambuf
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVVCP.o: /usr/include/c++/3.4.6/locale
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVVCP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVVCP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVVCP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVVCP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVVCP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVVCP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVVCP.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtPDL.hh
-EvtSVVCP.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVVCP.o: /usr/include/c++/3.4.6/vector
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVVCP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVVCP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVVCP.o: ../EvtGenModels/EvtSVVHelAmp.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSVVCP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVVCP.o: ../EvtGenModels/EvtSVVCP.hh
-EvtSVVCPLH.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVVCPLH.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVVCPLH.o: /usr/include/gnu/stubs.h
-EvtSVVCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVVCPLH.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVVCPLH.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVVCPLH.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVVCPLH.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVVCPLH.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVVCPLH.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVVCPLH.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVVCPLH.o: /usr/include/gconv.h
-EvtSVVCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVVCPLH.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVVCPLH.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVVCPLH.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVVCPLH.o: /usr/include/libintl.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVVCPLH.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtSVVCPLH.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtSVVCPLH.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtSVVCPLH.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSVVCPLH.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSVVCPLH.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSVVCPLH.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSVVCPLH.o: /usr/include/bits/endian.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVVCPLH.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/exception
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/climits
-EvtSVVCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVVCPLH.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVVCPLH.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/new
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/cassert
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/limits
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/algorithm
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/streambuf
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/locale
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVVCPLH.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVVCPLH.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVVCPLH.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVVCPLH.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVVCPLH.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVVCPLH.o: ../EvtGenBase/EvtCPUtil.hh ../EvtGenBase/EvtPDL.hh
-EvtSVVCPLH.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/vector
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVVCPLH.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVVCPLH.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVVCPLH.o: ../EvtGenModels/EvtSVVHelAmp.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtSVVCPLH.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVVCPLH.o: ../EvtGenModels/EvtSVVCPLH.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVVHelAmp.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVVHelAmp.o: /usr/include/gnu/stubs.h
-EvtSVVHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVVHelAmp.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVVHelAmp.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtSVVHelAmp.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVVHelAmp.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVVHelAmp.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVVHelAmp.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVVHelAmp.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVVHelAmp.o: /usr/include/gconv.h
-EvtSVVHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVVHelAmp.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVVHelAmp.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVVHelAmp.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVVHelAmp.o: /usr/include/libintl.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVVHelAmp.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSVVHelAmp.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSVVHelAmp.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSVVHelAmp.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtSVVHelAmp.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSVVHelAmp.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSVVHelAmp.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVVHelAmp.o: /usr/include/stdint.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/exception
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/climits
-EvtSVVHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVVHelAmp.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVVHelAmp.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/new
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/cassert
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/limits
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/algorithm
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/streambuf
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/locale
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/typeinfo
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/istream
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtSVVHelAmp.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtSVVHelAmp.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/vector
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVVHelAmp.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVVHelAmp.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVVHelAmp.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtTensor3C.hh ../EvtGenModels/EvtSVVHelAmp.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtSVVHelAmp.o: ../EvtGenBase/EvtAmp.hh
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/iostream
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVVHelCPMix.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVVHelCPMix.o: /usr/include/gnu/stubs.h /usr/include/c++/3.4.6/ostream
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/ios /usr/include/c++/3.4.6/iosfwd
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/cstring
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/cstddef
-EvtSVVHelCPMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVVHelCPMix.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtSVVHelCPMix.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtSVVHelCPMix.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtSVVHelCPMix.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtSVVHelCPMix.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtSVVHelCPMix.o: /usr/include/gconv.h
-EvtSVVHelCPMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVVHelCPMix.o: /usr/include/bits/stdio_lim.h
-EvtSVVHelCPMix.o: /usr/include/bits/sys_errlist.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVVHelCPMix.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVVHelCPMix.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVVHelCPMix.o: /usr/include/libintl.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVVHelCPMix.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSVVHelCPMix.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSVVHelCPMix.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSVVHelCPMix.o: /usr/include/bits/pthreadtypes.h
-EvtSVVHelCPMix.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtSVVHelCPMix.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtSVVHelCPMix.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtSVVHelCPMix.o: /usr/include/ctype.h /usr/include/endian.h
-EvtSVVHelCPMix.o: /usr/include/bits/endian.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtSVVHelCPMix.o: /usr/include/stdint.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/exception
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/climits
-EvtSVVHelCPMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVVHelCPMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVVHelCPMix.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVVHelCPMix.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/limits
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/algorithm
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/streambuf
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/locale
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/typeinfo
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/istream
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/fstream
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtSVVHelCPMix.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtSVVHelCPMix.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtPartProp.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/vector
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVVHelCPMix.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtTensor3C.hh
-EvtSVVHelCPMix.o: ../EvtGenModels/EvtSVVHelCPMix.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtSVVHelCPMix.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtAmp.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtSVVNONCPEIGEN.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtSVVNONCPEIGEN.o: /usr/include/gnu/stubs.h
-EvtSVVNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtVector4R.hh
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/iostream
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/iosfwd
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/cstring
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtSVVNONCPEIGEN.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtSVVNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/stdio_lim.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/sys_errlist.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtSVVNONCPEIGEN.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtSVVNONCPEIGEN.o: /usr/include/libintl.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtSVVNONCPEIGEN.o: /usr/include/pthread.h /usr/include/sched.h
-EvtSVVNONCPEIGEN.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtSVVNONCPEIGEN.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/pthreadtypes.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/initspin.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/posix_opt.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/confname.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtSVVNONCPEIGEN.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/cwchar
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/exception
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/climits
-EvtSVVNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtSVVNONCPEIGEN.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtSVVNONCPEIGEN.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/new
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/cassert
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/string
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/memory
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/limits
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/algorithm
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/streambuf
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/locale
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/typeinfo
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/istream
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtSVVNONCPEIGEN.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtSVVNONCPEIGEN.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtRandom.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtCPUtil.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/vector
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtSVVNONCPEIGEN.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtVector3R.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenModels/EvtSVVNONCPEIGEN.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtDecayAmp.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtSVVNONCPEIGEN.o: ../EvtGenModels/EvtSVVHelAmp.hh
-EvtTauHadnu.o: /usr/include/stdlib.h /usr/include/features.h
-EvtTauHadnu.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtTauHadnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/iostream
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtTauHadnu.o: /usr/include/c++/3.4.6/iosfwd
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtTauHadnu.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtTauHadnu.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtTauHadnu.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtTauHadnu.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtTauHadnu.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtTauHadnu.o: /usr/include/gconv.h
-EvtTauHadnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtTauHadnu.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtTauHadnu.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtTauHadnu.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtTauHadnu.o: /usr/include/libintl.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtTauHadnu.o: /usr/include/pthread.h /usr/include/sched.h
-EvtTauHadnu.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtTauHadnu.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtTauHadnu.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtTauHadnu.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtTauHadnu.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtTauHadnu.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtTauHadnu.o: /usr/include/stdint.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/exception
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/climits
-EvtTauHadnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtTauHadnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtTauHadnu.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtTauHadnu.o: /usr/include/c++/3.4.6/new
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/limits
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/algorithm
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtTauHadnu.o: /usr/include/c++/3.4.6/streambuf
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtTauHadnu.o: /usr/include/c++/3.4.6/locale
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtTauHadnu.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtTauHadnu.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtTauHadnu.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtTauHadnu.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtTauHadnu.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtTauHadnu.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtTauHadnu.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtTauHadnu.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenModels/EvtTauHadnu.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtAmp.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtDiracSpinor.hh ../EvtGenBase/EvtVector3R.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtTauHadnu.o: ../EvtGenBase/EvtIdSet.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtTaulnunu.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtTaulnunu.o: /usr/include/gnu/stubs.h
-EvtTaulnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/iostream
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtTaulnunu.o: /usr/include/c++/3.4.6/iosfwd
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtTaulnunu.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtTaulnunu.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtTaulnunu.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtTaulnunu.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtTaulnunu.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtTaulnunu.o: /usr/include/gconv.h
-EvtTaulnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtTaulnunu.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtTaulnunu.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtTaulnunu.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtTaulnunu.o: /usr/include/libintl.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtTaulnunu.o: /usr/include/pthread.h /usr/include/sched.h
-EvtTaulnunu.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtTaulnunu.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtTaulnunu.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtTaulnunu.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtTaulnunu.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtTaulnunu.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtTaulnunu.o: /usr/include/stdint.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/exception
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/climits
-EvtTaulnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtTaulnunu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtTaulnunu.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtTaulnunu.o: /usr/include/c++/3.4.6/new
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/limits
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/algorithm
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtTaulnunu.o: /usr/include/c++/3.4.6/streambuf
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtTaulnunu.o: /usr/include/c++/3.4.6/locale
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtTaulnunu.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtTaulnunu.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtTaulnunu.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtTaulnunu.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtTaulnunu.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtTaulnunu.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtTaulnunu.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtTaulnunu.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenModels/EvtTaulnunu.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtTaulnunu.o: ../EvtGenBase/EvtVector3C.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtTauScalarnu.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtTauScalarnu.o: /usr/include/gnu/stubs.h
-EvtTauScalarnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/iostream
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/iosfwd
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/cstring
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtTauScalarnu.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtTauScalarnu.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtTauScalarnu.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtTauScalarnu.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtTauScalarnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtTauScalarnu.o: /usr/include/bits/stdio_lim.h
-EvtTauScalarnu.o: /usr/include/bits/sys_errlist.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtTauScalarnu.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtTauScalarnu.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtTauScalarnu.o: /usr/include/libintl.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtTauScalarnu.o: /usr/include/pthread.h /usr/include/sched.h
-EvtTauScalarnu.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtTauScalarnu.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtTauScalarnu.o: /usr/include/bits/pthreadtypes.h
-EvtTauScalarnu.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtTauScalarnu.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtTauScalarnu.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtTauScalarnu.o: /usr/include/ctype.h /usr/include/endian.h
-EvtTauScalarnu.o: /usr/include/bits/endian.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtTauScalarnu.o: /usr/include/stdint.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/exception
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/climits
-EvtTauScalarnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtTauScalarnu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtTauScalarnu.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/new
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/limits
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/algorithm
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/streambuf
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/locale
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/typeinfo
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/istream
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtTauScalarnu.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtTauScalarnu.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtTauScalarnu.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtTauScalarnu.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/vector
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtTauScalarnu.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtTauScalarnu.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtTauScalarnu.o: ../EvtGenBase/EvtGenKine.hh
-EvtTauScalarnu.o: ../EvtGenModels/EvtTauScalarnu.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtTauScalarnu.o: ../EvtGenBase/EvtVector3C.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtTauVectornu.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtTauVectornu.o: /usr/include/gnu/stubs.h
-EvtTauVectornu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/iostream
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtTauVectornu.o: /usr/include/c++/3.4.6/iosfwd
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/cstring
-EvtTauVectornu.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtTauVectornu.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtTauVectornu.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtTauVectornu.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtTauVectornu.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtTauVectornu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtTauVectornu.o: /usr/include/bits/stdio_lim.h
-EvtTauVectornu.o: /usr/include/bits/sys_errlist.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtTauVectornu.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtTauVectornu.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtTauVectornu.o: /usr/include/libintl.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtTauVectornu.o: /usr/include/pthread.h /usr/include/sched.h
-EvtTauVectornu.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtTauVectornu.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtTauVectornu.o: /usr/include/bits/pthreadtypes.h
-EvtTauVectornu.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtTauVectornu.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtTauVectornu.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtTauVectornu.o: /usr/include/ctype.h /usr/include/endian.h
-EvtTauVectornu.o: /usr/include/bits/endian.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtTauVectornu.o: /usr/include/stdint.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/exception
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/climits
-EvtTauVectornu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtTauVectornu.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtTauVectornu.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtTauVectornu.o: /usr/include/c++/3.4.6/new
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/limits
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/algorithm
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtTauVectornu.o: /usr/include/c++/3.4.6/streambuf
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtTauVectornu.o: /usr/include/c++/3.4.6/locale
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtTauVectornu.o: /usr/include/c++/3.4.6/typeinfo
-EvtTauVectornu.o: /usr/include/c++/3.4.6/istream
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtTauVectornu.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtTauVectornu.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtTauVectornu.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtTauVectornu.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtTauVectornu.o: /usr/include/c++/3.4.6/vector
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtTauVectornu.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtTauVectornu.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtTauVectornu.o: ../EvtGenBase/EvtGenKine.hh
-EvtTauVectornu.o: ../EvtGenModels/EvtTauVectornu.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtTauVectornu.o: ../EvtGenBase/EvtVector3C.hh
-EvtTSS.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtTSS.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtTSS.o: /usr/include/gnu/stubs.h
-EvtTSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtTSS.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtComplex.hh
-EvtTSS.o: /usr/include/c++/3.4.6/iostream
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtTSS.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtTSS.o: /usr/include/c++/3.4.6/iosfwd
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtTSS.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtTSS.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtTSS.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtTSS.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtTSS.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtTSS.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtTSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtTSS.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtTSS.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtTSS.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtTSS.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtTSS.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtTSS.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtTSS.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtTSS.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtTSS.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtTSS.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtTSS.o: /usr/include/ctype.h /usr/include/endian.h
-EvtTSS.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtTSS.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtTSS.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtTSS.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtTSS.o: /usr/include/c++/3.4.6/exception
-EvtTSS.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtTSS.o: /usr/include/c++/3.4.6/climits
-EvtTSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtTSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtTSS.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtTSS.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtTSS.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtTSS.o: /usr/include/assert.h /usr/include/c++/3.4.6/bits/localefwd.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtTSS.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtTSS.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtTSS.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtTSS.o: /usr/include/c++/3.4.6/limits
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtTSS.o: /usr/include/c++/3.4.6/algorithm
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtTSS.o: /usr/include/c++/3.4.6/streambuf
-EvtTSS.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtTSS.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtTSS.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtTSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtTSS.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtTSS.o: /usr/include/c++/3.4.6/locale
-EvtTSS.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtTSS.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtTSS.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtTSS.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtTSS.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtConst.hh
-EvtTSS.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtVector3R.hh
-EvtTSS.o: ../EvtGenBase/EvtVector4R.hh ../EvtGenBase/EvtParticle.hh
-EvtTSS.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtId.hh
-EvtTSS.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtTSS.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtTSS.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtTSS.o: /usr/include/c++/3.4.6/vector
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtTSS.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtTSS.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtTSS.o: ../EvtGenBase/EvtTensor4C.hh ../EvtGenModels/EvtTSS.hh
-EvtTSS.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtTSS.o: ../EvtGenBase/EvtAmp.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtTVSPwave.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtTVSPwave.o: /usr/include/gnu/stubs.h
-EvtTVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtTVSPwave.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtTVSPwave.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtTVSPwave.o: /usr/include/c++/3.4.6/iosfwd
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtTVSPwave.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtTVSPwave.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtTVSPwave.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtTVSPwave.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtTVSPwave.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtTVSPwave.o: /usr/include/gconv.h
-EvtTVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtTVSPwave.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtTVSPwave.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtTVSPwave.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtTVSPwave.o: /usr/include/libintl.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtTVSPwave.o: /usr/include/pthread.h /usr/include/sched.h
-EvtTVSPwave.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtTVSPwave.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtTVSPwave.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtTVSPwave.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtTVSPwave.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtTVSPwave.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtTVSPwave.o: /usr/include/stdint.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/exception
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/climits
-EvtTVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtTVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtTVSPwave.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtTVSPwave.o: /usr/include/c++/3.4.6/new
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/cassert
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/limits
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/algorithm
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtTVSPwave.o: /usr/include/c++/3.4.6/streambuf
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtTVSPwave.o: /usr/include/c++/3.4.6/locale
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtTVSPwave.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtTVSPwave.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtTVSPwave.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtTVSPwave.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtTVSPwave.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtTVSPwave.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtTVSPwave.o: ../EvtGenModels/EvtTVSPwave.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtTVSPwave.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVectorIsr.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVectorIsr.o: /usr/include/gnu/stubs.h
-EvtVectorIsr.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVectorIsr.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtVectorIsr.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/iostream
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVectorIsr.o: /usr/include/c++/3.4.6/iosfwd
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVectorIsr.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVectorIsr.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVectorIsr.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVectorIsr.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVectorIsr.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVectorIsr.o: /usr/include/gconv.h
-EvtVectorIsr.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVectorIsr.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVectorIsr.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVectorIsr.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVectorIsr.o: /usr/include/libintl.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVectorIsr.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVectorIsr.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVectorIsr.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVectorIsr.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtVectorIsr.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtVectorIsr.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtVectorIsr.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVectorIsr.o: /usr/include/stdint.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/exception
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/climits
-EvtVectorIsr.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVectorIsr.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVectorIsr.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVectorIsr.o: /usr/include/c++/3.4.6/new
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/limits
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/algorithm
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVectorIsr.o: /usr/include/c++/3.4.6/streambuf
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVectorIsr.o: /usr/include/c++/3.4.6/locale
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVectorIsr.o: /usr/include/c++/3.4.6/typeinfo
-EvtVectorIsr.o: /usr/include/c++/3.4.6/istream
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtVectorIsr.o: /usr/include/c++/3.4.6/iomanip
-EvtVectorIsr.o: /usr/include/c++/3.4.6/functional
-EvtVectorIsr.o: /usr/include/c++/3.4.6/sstream
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/sstream.tcc
-EvtVectorIsr.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtPhotonParticle.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtRandom.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtVectorIsr.o: /usr/include/c++/3.4.6/vector
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVectorIsr.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVectorIsr.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVectorIsr.o: ../EvtGenModels/EvtVectorIsr.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtVectorIsr.o: ../EvtGenBase/EvtDecayBase.hh
-EvtVll.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVll.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVll.o: /usr/include/gnu/stubs.h
-EvtVll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVll.o: /usr/include/c++/3.4.6/iostream
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVll.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVll.o: /usr/include/c++/3.4.6/iosfwd
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVll.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVll.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVll.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVll.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVll.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtVll.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVll.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVll.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVll.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVll.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVll.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVll.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVll.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVll.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVll.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVll.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVll.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVll.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVll.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVll.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVll.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVll.o: /usr/include/c++/3.4.6/exception
-EvtVll.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVll.o: /usr/include/c++/3.4.6/climits
-EvtVll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVll.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVll.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVll.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtVll.o: /usr/include/assert.h /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVll.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVll.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVll.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVll.o: /usr/include/c++/3.4.6/limits
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVll.o: /usr/include/c++/3.4.6/algorithm
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVll.o: /usr/include/c++/3.4.6/streambuf
-EvtVll.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVll.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVll.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVll.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVll.o: /usr/include/c++/3.4.6/locale
-EvtVll.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVll.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVll.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtVll.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtVll.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtVll.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtVll.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtVll.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtVll.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtVll.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVll.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVll.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVll.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVll.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenModels/EvtVll.hh
-EvtVll.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVll.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtVll.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtVll.o: ../EvtGenBase/EvtVector3C.hh
-EvtVPHOtoV.o: /usr/include/stdlib.h /usr/include/features.h
-EvtVPHOtoV.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtVPHOtoV.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVPHOtoV.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVPHOtoV.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/iosfwd
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVPHOtoV.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVPHOtoV.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVPHOtoV.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVPHOtoV.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVPHOtoV.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVPHOtoV.o: /usr/include/gconv.h
-EvtVPHOtoV.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVPHOtoV.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVPHOtoV.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVPHOtoV.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVPHOtoV.o: /usr/include/libintl.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVPHOtoV.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVPHOtoV.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVPHOtoV.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVPHOtoV.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVPHOtoV.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVPHOtoV.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVPHOtoV.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVPHOtoV.o: /usr/include/bits/endian.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVPHOtoV.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/exception
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/climits
-EvtVPHOtoV.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVPHOtoV.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVPHOtoV.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/new
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/cassert
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/limits
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/algorithm
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/streambuf
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/locale
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVPHOtoV.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVPHOtoV.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVPHOtoV.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVPHOtoV.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVPHOtoV.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenModels/EvtVPHOtoV.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVPHOtoV.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtAmp.hh
-EvtVPHOtoVISR.o: /usr/include/stdlib.h /usr/include/features.h
-EvtVPHOtoVISR.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtVPHOtoVISR.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/iosfwd
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/cstring
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtVPHOtoVISR.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtVPHOtoVISR.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtVPHOtoVISR.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtVPHOtoVISR.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVPHOtoVISR.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVPHOtoVISR.o: /usr/include/bits/stdio_lim.h
-EvtVPHOtoVISR.o: /usr/include/bits/sys_errlist.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVPHOtoVISR.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVPHOtoVISR.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVPHOtoVISR.o: /usr/include/libintl.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVPHOtoVISR.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVPHOtoVISR.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVPHOtoVISR.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVPHOtoVISR.o: /usr/include/bits/pthreadtypes.h
-EvtVPHOtoVISR.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVPHOtoVISR.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVPHOtoVISR.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVPHOtoVISR.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVPHOtoVISR.o: /usr/include/bits/endian.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVPHOtoVISR.o: /usr/include/stdint.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/exception
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/climits
-EvtVPHOtoVISR.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVPHOtoVISR.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVPHOtoVISR.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/new
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/cassert
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/limits
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/algorithm
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/streambuf
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/locale
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/typeinfo
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/istream
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVPHOtoVISR.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVPHOtoVISR.o: /usr/include/bits/mathcalls.h
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtPartProp.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/vector
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVPHOtoVISR.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtRandom.hh
-EvtVPHOtoVISR.o: ../EvtGenModels/EvtVPHOtoVISR.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVPHOtoVISR.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtAmp.hh
-EvtVPHOtoVISRHi.o: /usr/include/stdlib.h /usr/include/features.h
-EvtVPHOtoVISRHi.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtVPHOtoVISRHi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtVector4R.hh
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/iostream
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/iosfwd
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/cstring
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtVPHOtoVISRHi.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVPHOtoVISRHi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/stdio_lim.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/sys_errlist.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVPHOtoVISRHi.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVPHOtoVISRHi.o: /usr/include/libintl.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVPHOtoVISRHi.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVPHOtoVISRHi.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVPHOtoVISRHi.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/pthreadtypes.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVPHOtoVISRHi.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVPHOtoVISRHi.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/endian.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVPHOtoVISRHi.o: /usr/include/stdint.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/exception
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/climits
-EvtVPHOtoVISRHi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVPHOtoVISRHi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVPHOtoVISRHi.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/new
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/cassert
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/string
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/memory
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/limits
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/algorithm
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/streambuf
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/locale
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/typeinfo
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/istream
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtVPHOtoVISRHi.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtVPHOtoVISRHi.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/vector
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVPHOtoVISRHi.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtRandom.hh
-EvtVPHOtoVISRHi.o: ../EvtGenModels/EvtVPHOtoVISRHi.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVPHOtoVISRHi.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtAmp.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVSPPwave.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVSPPwave.o: /usr/include/gnu/stubs.h
-EvtVSPPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVSPPwave.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVSPPwave.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVSPPwave.o: /usr/include/c++/3.4.6/iosfwd
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVSPPwave.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVSPPwave.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVSPPwave.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVSPPwave.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVSPPwave.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVSPPwave.o: /usr/include/gconv.h
-EvtVSPPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVSPPwave.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVSPPwave.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVSPPwave.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVSPPwave.o: /usr/include/libintl.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVSPPwave.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVSPPwave.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVSPPwave.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVSPPwave.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtVSPPwave.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtVSPPwave.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtVSPPwave.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVSPPwave.o: /usr/include/stdint.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/exception
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/climits
-EvtVSPPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVSPPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVSPPwave.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVSPPwave.o: /usr/include/c++/3.4.6/new
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/cassert
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/limits
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/algorithm
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVSPPwave.o: /usr/include/c++/3.4.6/streambuf
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVSPPwave.o: /usr/include/c++/3.4.6/locale
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVSPPwave.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVSPPwave.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVSPPwave.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtTensor4C.hh ../EvtGenBase/EvtPDL.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtPartProp.hh ../EvtGenBase/EvtAbsLineShape.hh
-EvtVSPPwave.o: /usr/include/c++/3.4.6/vector
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVSPPwave.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVSPPwave.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVSPPwave.o: ../EvtGenModels/EvtVSPPwave.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVSPPwave.o: ../EvtGenBase/EvtVector3R.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVSSBMixCPT.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVSSBMixCPT.o: /usr/include/gnu/stubs.h
-EvtVSSBMixCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtParticle.hh
-EvtVSSBMixCPT.o: /usr/include/assert.h ../EvtGenBase/EvtVector4R.hh
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/iostream
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/iosfwd
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/cstring
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtVSSBMixCPT.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtVSSBMixCPT.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtVSSBMixCPT.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtVSSBMixCPT.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVSSBMixCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVSSBMixCPT.o: /usr/include/bits/stdio_lim.h
-EvtVSSBMixCPT.o: /usr/include/bits/sys_errlist.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVSSBMixCPT.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVSSBMixCPT.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVSSBMixCPT.o: /usr/include/libintl.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVSSBMixCPT.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVSSBMixCPT.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVSSBMixCPT.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVSSBMixCPT.o: /usr/include/bits/pthreadtypes.h
-EvtVSSBMixCPT.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVSSBMixCPT.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVSSBMixCPT.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVSSBMixCPT.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVSSBMixCPT.o: /usr/include/bits/endian.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVSSBMixCPT.o: /usr/include/stdint.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/exception
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/climits
-EvtVSSBMixCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVSSBMixCPT.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVSSBMixCPT.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/new
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/cassert
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/limits
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/algorithm
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/streambuf
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/locale
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/typeinfo
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/istream
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVSSBMixCPT.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVSSBMixCPT.o: /usr/include/bits/mathcalls.h
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/vector
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVSSBMixCPT.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtVector3R.hh
-EvtVSSBMixCPT.o: ../EvtGenModels/EvtVSSBMixCPT.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVSSBMixCPT.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtRandom.hh
-EvtVSS.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVSS.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVSS.o: /usr/include/gnu/stubs.h
-EvtVSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVSS.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVSS.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVSS.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVSS.o: /usr/include/c++/3.4.6/iosfwd
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVSS.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVSS.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVSS.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVSS.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVSS.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtVSS.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVSS.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVSS.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVSS.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVSS.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVSS.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVSS.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVSS.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVSS.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVSS.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVSS.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVSS.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVSS.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVSS.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVSS.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVSS.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVSS.o: /usr/include/c++/3.4.6/exception
-EvtVSS.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVSS.o: /usr/include/c++/3.4.6/climits
-EvtVSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVSS.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVSS.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVSS.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVSS.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtVSS.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVSS.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVSS.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVSS.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVSS.o: /usr/include/c++/3.4.6/limits
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVSS.o: /usr/include/c++/3.4.6/algorithm
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVSS.o: /usr/include/c++/3.4.6/streambuf
-EvtVSS.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVSS.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVSS.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVSS.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVSS.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVSS.o: /usr/include/c++/3.4.6/locale
-EvtVSS.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVSS.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVSS.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVSS.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVSS.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVSS.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVSS.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVSS.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVSS.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVSS.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVSS.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVSS.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVSS.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVSS.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenModels/EvtVSS.hh
-EvtVSS.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVSS.o: ../EvtGenBase/EvtAmp.hh
-EvtVSSMix.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVSSMix.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVSSMix.o: /usr/include/gnu/stubs.h
-EvtVSSMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVSSMix.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVSSMix.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVSSMix.o: /usr/include/c++/3.4.6/iosfwd
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVSSMix.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVSSMix.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVSSMix.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVSSMix.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVSSMix.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVSSMix.o: /usr/include/gconv.h
-EvtVSSMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVSSMix.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVSSMix.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVSSMix.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVSSMix.o: /usr/include/libintl.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVSSMix.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVSSMix.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVSSMix.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVSSMix.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVSSMix.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVSSMix.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVSSMix.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVSSMix.o: /usr/include/bits/endian.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVSSMix.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/exception
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/climits
-EvtVSSMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVSSMix.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVSSMix.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVSSMix.o: /usr/include/c++/3.4.6/new
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/cassert
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/limits
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/algorithm
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVSSMix.o: /usr/include/c++/3.4.6/streambuf
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVSSMix.o: /usr/include/c++/3.4.6/locale
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVSSMix.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVSSMix.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVSSMix.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVSSMix.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVSSMix.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVSSMix.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVSSMix.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVSSMix.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVSSMix.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVSSMix.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVSSMix.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVSSMix.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenModels/EvtVSSMix.hh
-EvtVSSMix.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVSSMix.o: ../EvtGenBase/EvtAmp.hh
-EvtVtoSll.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVtoSll.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVtoSll.o: /usr/include/gnu/stubs.h
-EvtVtoSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/iostream
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVtoSll.o: /usr/include/c++/3.4.6/iosfwd
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVtoSll.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVtoSll.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVtoSll.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVtoSll.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVtoSll.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVtoSll.o: /usr/include/gconv.h
-EvtVtoSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVtoSll.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVtoSll.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVtoSll.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVtoSll.o: /usr/include/libintl.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVtoSll.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVtoSll.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVtoSll.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVtoSll.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVtoSll.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVtoSll.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVtoSll.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVtoSll.o: /usr/include/bits/endian.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVtoSll.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/exception
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/climits
-EvtVtoSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVtoSll.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVtoSll.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVtoSll.o: /usr/include/c++/3.4.6/new
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/limits
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/algorithm
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVtoSll.o: /usr/include/c++/3.4.6/streambuf
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVtoSll.o: /usr/include/c++/3.4.6/locale
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVtoSll.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtVtoSll.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtVtoSll.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtVtoSll.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtVtoSll.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtComplex.hh
-EvtVtoSll.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtVtoSll.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtVtoSll.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVtoSll.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVtoSll.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVtoSll.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVtoSll.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenModels/EvtVtoSll.hh
-EvtVtoSll.o: ../EvtGenBase/EvtDecayAmp.hh ../EvtGenBase/EvtDecayBase.hh
-EvtVtoSll.o: ../EvtGenBase/EvtAmp.hh ../EvtGenBase/EvtDiracSpinor.hh
-EvtVtoSll.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtVector4C.hh
-EvtVtoSll.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtTensor4C.hh
-EvtVubAC.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVubAC.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVubAC.o: /usr/include/gnu/stubs.h
-EvtVubAC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVubAC.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVubAC.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVubAC.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVubAC.o: /usr/include/c++/3.4.6/iosfwd
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVubAC.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVubAC.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVubAC.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVubAC.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVubAC.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVubAC.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVubAC.o: /usr/include/gconv.h
-EvtVubAC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVubAC.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVubAC.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVubAC.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVubAC.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVubAC.o: /usr/include/libintl.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVubAC.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVubAC.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVubAC.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVubAC.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVubAC.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVubAC.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVubAC.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVubAC.o: /usr/include/bits/endian.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVubAC.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVubAC.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVubAC.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVubAC.o: /usr/include/c++/3.4.6/exception
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVubAC.o: /usr/include/c++/3.4.6/climits
-EvtVubAC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVubAC.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVubAC.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVubAC.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVubAC.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVubAC.o: /usr/include/c++/3.4.6/cassert
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVubAC.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVubAC.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVubAC.o: /usr/include/c++/3.4.6/limits
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVubAC.o: /usr/include/c++/3.4.6/algorithm
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVubAC.o: /usr/include/c++/3.4.6/streambuf
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVubAC.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVubAC.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVubAC.o: /usr/include/c++/3.4.6/locale
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVubAC.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVubAC.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVubAC.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVubAC.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVubAC.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVubAC.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVubAC.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVubAC.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVubAC.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVubAC.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVubAC.o: ../EvtGenModels/EvtVubAC.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtVubAC.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenModels/EvtPFermi.hh
-EvtVubAC.o: ../EvtGenBase/EvtRandom.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVubBLNP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVubBLNP.o: /usr/include/gnu/stubs.h
-EvtVubBLNP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVubBLNP.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVubBLNP.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVubBLNP.o: /usr/include/c++/3.4.6/iosfwd
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVubBLNP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVubBLNP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVubBLNP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVubBLNP.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVubBLNP.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVubBLNP.o: /usr/include/gconv.h
-EvtVubBLNP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVubBLNP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVubBLNP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVubBLNP.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVubBLNP.o: /usr/include/libintl.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVubBLNP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVubBLNP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVubBLNP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVubBLNP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVubBLNP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVubBLNP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVubBLNP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVubBLNP.o: /usr/include/bits/endian.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVubBLNP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/exception
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/climits
-EvtVubBLNP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVubBLNP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVubBLNP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVubBLNP.o: /usr/include/c++/3.4.6/new
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/cassert
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/limits
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/algorithm
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVubBLNP.o: /usr/include/c++/3.4.6/streambuf
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVubBLNP.o: /usr/include/c++/3.4.6/locale
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVubBLNP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVubBLNP.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVubBLNP.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVubBLNP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVubBLNP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVubBLNP.o: ../EvtGenModels/EvtVubBLNP.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtVubBLNP.o: ../EvtGenBase/EvtDecayBase.hh
-EvtVubBLNP.o: ../EvtGenModels/EvtItgSimpsonIntegrator.hh
-EvtVubBLNP.o: ../EvtGenModels/EvtItgAbsIntegrator.hh
-EvtVubBLNP.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtVubBLNP.o: ../EvtGenModels/EvtItgPtrFunction.hh ../EvtGenBase/EvtRandom.hh
-EvtVubBLNP.o: ../EvtGenModels/EvtPFermi.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVubBLNPHybrid.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVubBLNPHybrid.o: /usr/include/gnu/stubs.h
-EvtVubBLNPHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtVector4R.hh
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/iostream
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/iosfwd
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/cstring
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtVubBLNPHybrid.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtVubBLNPHybrid.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtVubBLNPHybrid.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtVubBLNPHybrid.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVubBLNPHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVubBLNPHybrid.o: /usr/include/bits/stdio_lim.h
-EvtVubBLNPHybrid.o: /usr/include/bits/sys_errlist.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVubBLNPHybrid.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVubBLNPHybrid.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVubBLNPHybrid.o: /usr/include/libintl.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVubBLNPHybrid.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVubBLNPHybrid.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVubBLNPHybrid.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVubBLNPHybrid.o: /usr/include/bits/pthreadtypes.h
-EvtVubBLNPHybrid.o: /usr/include/bits/initspin.h
-EvtVubBLNPHybrid.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtVubBLNPHybrid.o: /usr/include/bits/posix_opt.h
-EvtVubBLNPHybrid.o: /usr/include/bits/confname.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtVubBLNPHybrid.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/cwchar
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/exception
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/climits
-EvtVubBLNPHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVubBLNPHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVubBLNPHybrid.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/new
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/cassert
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/string
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/memory
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/limits
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/algorithm
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/streambuf
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/locale
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/typeinfo
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/istream
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtVubBLNPHybrid.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtVubBLNPHybrid.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/vector
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVubBLNPHybrid.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVubBLNPHybrid.o: ../EvtGenModels/EvtVubBLNPHybrid.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtDecayBase.hh
-EvtVubBLNPHybrid.o: ../EvtGenModels/EvtItgSimpsonIntegrator.hh
-EvtVubBLNPHybrid.o: ../EvtGenModels/EvtItgAbsIntegrator.hh
-EvtVubBLNPHybrid.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtVubBLNPHybrid.o: ../EvtGenModels/EvtItgPtrFunction.hh
-EvtVubBLNPHybrid.o: ../EvtGenBase/EvtRandom.hh ../EvtGenModels/EvtPFermi.hh
-EvtVub.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVub.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVub.o: /usr/include/gnu/stubs.h
-EvtVub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVub.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVub.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVub.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVub.o: /usr/include/c++/3.4.6/iosfwd
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVub.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVub.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVub.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVub.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVub.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtVub.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVub.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVub.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVub.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVub.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVub.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVub.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVub.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVub.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVub.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVub.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVub.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVub.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVub.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVub.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVub.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVub.o: /usr/include/c++/3.4.6/exception
-EvtVub.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVub.o: /usr/include/c++/3.4.6/climits
-EvtVub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVub.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVub.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVub.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVub.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtVub.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVub.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVub.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVub.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVub.o: /usr/include/c++/3.4.6/limits
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVub.o: /usr/include/c++/3.4.6/algorithm
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVub.o: /usr/include/c++/3.4.6/streambuf
-EvtVub.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVub.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVub.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVub.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVub.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVub.o: /usr/include/c++/3.4.6/locale
-EvtVub.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVub.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVub.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVub.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVub.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVub.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVub.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVub.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVub.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVub.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVub.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVub.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVub.o: ../EvtGenModels/EvtVub.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtVub.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenModels/EvtPFermi.hh
-EvtVub.o: ../EvtGenModels/EvtVubdGamma.hh ../EvtGenBase/EvtRandom.hh
-EvtVubdGamma.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtConst.hh
-EvtVubdGamma.o: ../EvtGenModels/EvtVubdGamma.hh ../EvtGenBase/EvtDiLog.hh
-EvtVubdGamma.o: /usr/include/math.h /usr/include/features.h
-EvtVubdGamma.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
-EvtVubdGamma.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVubdGamma.o: /usr/include/bits/mathcalls.h
-EvtVubHybrid.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVubHybrid.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVubHybrid.o: /usr/include/gnu/stubs.h
-EvtVubHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVubHybrid.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVubHybrid.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVubHybrid.o: /usr/include/c++/3.4.6/iosfwd
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVubHybrid.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVubHybrid.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVubHybrid.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVubHybrid.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVubHybrid.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVubHybrid.o: /usr/include/gconv.h
-EvtVubHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVubHybrid.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVubHybrid.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVubHybrid.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVubHybrid.o: /usr/include/libintl.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVubHybrid.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVubHybrid.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVubHybrid.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVubHybrid.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtVubHybrid.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtVubHybrid.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtVubHybrid.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVubHybrid.o: /usr/include/stdint.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/exception
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/climits
-EvtVubHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVubHybrid.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVubHybrid.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVubHybrid.o: /usr/include/c++/3.4.6/new
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/cassert
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/limits
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/algorithm
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVubHybrid.o: /usr/include/c++/3.4.6/streambuf
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVubHybrid.o: /usr/include/c++/3.4.6/locale
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVubHybrid.o: /usr/include/c++/3.4.6/typeinfo
-EvtVubHybrid.o: /usr/include/c++/3.4.6/istream
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVubHybrid.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVubHybrid.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVubHybrid.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVubHybrid.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVubHybrid.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVubHybrid.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVubHybrid.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtVubHybrid.o: /usr/include/c++/3.4.6/vector
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVubHybrid.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVubHybrid.o: ../EvtGenModels/EvtVubHybrid.hh
-EvtVubHybrid.o: ../EvtGenBase/EvtDecayIncoherent.hh
-EvtVubHybrid.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenModels/EvtPFermi.hh
-EvtVubHybrid.o: ../EvtGenModels/EvtVubdGamma.hh ../EvtGenBase/EvtRandom.hh
-EvtVubHybrid.o: /usr/include/c++/3.4.6/fstream
-EvtVubHybrid.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/basic_file.h
-EvtVubHybrid.o: /usr/include/c++/3.4.6/bits/fstream.tcc
-EvtVubNLO.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVubNLO.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVubNLO.o: /usr/include/gnu/stubs.h
-EvtVubNLO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVubNLO.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVubNLO.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVubNLO.o: /usr/include/c++/3.4.6/iosfwd
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVubNLO.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVubNLO.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVubNLO.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVubNLO.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVubNLO.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVubNLO.o: /usr/include/gconv.h
-EvtVubNLO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVubNLO.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVubNLO.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVubNLO.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVubNLO.o: /usr/include/libintl.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVubNLO.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVubNLO.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVubNLO.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVubNLO.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVubNLO.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVubNLO.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVubNLO.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVubNLO.o: /usr/include/bits/endian.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVubNLO.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/exception
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/climits
-EvtVubNLO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVubNLO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVubNLO.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVubNLO.o: /usr/include/c++/3.4.6/new
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/cassert
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/limits
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/algorithm
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVubNLO.o: /usr/include/c++/3.4.6/streambuf
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVubNLO.o: /usr/include/c++/3.4.6/locale
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVubNLO.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVubNLO.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVubNLO.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVubNLO.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVubNLO.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVubNLO.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVubNLO.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVubNLO.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVubNLO.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVubNLO.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVubNLO.o: ../EvtGenModels/EvtVubNLO.hh ../EvtGenBase/EvtDecayIncoherent.hh
-EvtVubNLO.o: ../EvtGenBase/EvtDecayBase.hh
-EvtVubNLO.o: ../EvtGenModels/EvtItgSimpsonIntegrator.hh
-EvtVubNLO.o: ../EvtGenModels/EvtItgAbsIntegrator.hh
-EvtVubNLO.o: ../EvtGenModels/EvtItgAbsFunction.hh
-EvtVubNLO.o: ../EvtGenModels/EvtBtoXsgammaFermiUtil.hh
-EvtVubNLO.o: ../EvtGenModels/EvtItgPtrFunction.hh
-EvtVubNLO.o: ../EvtGenModels/EvtPFermi.hh ../EvtGenBase/EvtRandom.hh
-EvtVubNLO.o: ../EvtGenBase/EvtDiLog.hh
-EvtVVP.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVVP.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVVP.o: /usr/include/gnu/stubs.h
-EvtVVP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVVP.o: /usr/include/c++/3.4.6/iostream
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVVP.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVVP.o: /usr/include/c++/3.4.6/iosfwd
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVVP.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVVP.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVVP.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVVP.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVVP.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
-EvtVVP.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVVP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVVP.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVVP.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVVP.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVVP.o: /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVVP.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVVP.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVVP.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVVP.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVVP.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVVP.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVVP.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVVP.o: /usr/include/bits/endian.h /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVVP.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVVP.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVVP.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVVP.o: /usr/include/c++/3.4.6/exception
-EvtVVP.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVVP.o: /usr/include/c++/3.4.6/climits
-EvtVVP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVVP.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVVP.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVVP.o: /usr/include/c++/3.4.6/new /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVVP.o: /usr/include/c++/3.4.6/debug/debug.h /usr/include/c++/3.4.6/cassert
-EvtVVP.o: /usr/include/assert.h /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVVP.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVVP.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVVP.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVVP.o: /usr/include/c++/3.4.6/limits
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVVP.o: /usr/include/c++/3.4.6/algorithm
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVVP.o: /usr/include/c++/3.4.6/streambuf
-EvtVVP.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVVP.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVVP.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVVP.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVVP.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVVP.o: /usr/include/c++/3.4.6/locale
-EvtVVP.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVVP.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVVP.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtVVP.o: ../EvtGenBase/EvtVector3C.hh ../EvtGenBase/EvtComplex.hh
-EvtVVP.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtVVP.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
-EvtVVP.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtVector3R.hh
-EvtVVP.o: ../EvtGenBase/EvtParticle.hh ../EvtGenBase/EvtVector4R.hh
-EvtVVP.o: ../EvtGenBase/EvtSpinDensity.hh ../EvtGenBase/EvtId.hh
-EvtVVP.o: ../EvtGenBase/EvtSpinType.hh ../EvtGenBase/EvtReport.hh
-EvtVVP.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVVP.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVVP.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVVP.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVVP.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtVector4C.hh
-EvtVVP.o: ../EvtGenModels/EvtVVP.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtVVP.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtVVpipi.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVVpipi.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVVpipi.o: /usr/include/gnu/stubs.h
-EvtVVpipi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVVpipi.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVVpipi.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVVpipi.o: /usr/include/c++/3.4.6/iosfwd
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVVpipi.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVVpipi.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVVpipi.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVVpipi.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVVpipi.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVVpipi.o: /usr/include/gconv.h
-EvtVVpipi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVVpipi.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVVpipi.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVVpipi.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVVpipi.o: /usr/include/libintl.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVVpipi.o: /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h
-EvtVVpipi.o: /usr/include/bits/sched.h /usr/include/signal.h
-EvtVVpipi.o: /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h
-EvtVVpipi.o: /usr/include/bits/initspin.h /usr/include/bits/sigthread.h
-EvtVVpipi.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-EvtVVpipi.o: /usr/include/bits/confname.h /usr/include/c++/3.4.6/cctype
-EvtVVpipi.o: /usr/include/ctype.h /usr/include/endian.h
-EvtVVpipi.o: /usr/include/bits/endian.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVVpipi.o: /usr/include/stdint.h /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/exception
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/climits
-EvtVVpipi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVVpipi.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVVpipi.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVVpipi.o: /usr/include/c++/3.4.6/new
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/cassert
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/limits
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/algorithm
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVVpipi.o: /usr/include/c++/3.4.6/streambuf
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVVpipi.o: /usr/include/c++/3.4.6/locale
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVVpipi.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVVpipi.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVVpipi.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVVpipi.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVVpipi.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVVpipi.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVVpipi.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVVpipi.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVVpipi.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVVpipi.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVVpipi.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVVpipi.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtVVpipi.o: ../EvtGenModels/EvtVVpipi.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtVVpipi.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/gnu/stubs.h
-EvtVVPIPI_WEIGHTED.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtVector4R.hh
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/iostream
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/ostream
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/ios
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/iosfwd
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/cstring
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtVVPIPI_WEIGHTED.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/stdio_lim.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/sys_errlist.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/libintl.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/pthreadtypes.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/initspin.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/posix_opt.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/confname.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/cwchar
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/exception
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/climits
-EvtVVPIPI_WEIGHTED.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVVPIPI_WEIGHTED.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/new
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/cassert
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/string
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/memory
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/limits
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/algorithm
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/streambuf
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/locale
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/typeinfo
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/istream
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtVVPIPI_WEIGHTED.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/mathdef.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/bits/mathcalls.h
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/vector
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtStringHash.hh
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/map
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVVPIPI_WEIGHTED.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtVector4C.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtVector3C.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtVector3R.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtTensor4C.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenModels/EvtVVPIPI_WEIGHTED.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtDecayAmp.hh
-EvtVVPIPI_WEIGHTED.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtVVSPwave.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtVVSPwave.o: /usr/include/gnu/stubs.h
-EvtVVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtVVSPwave.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtVVSPwave.o: ../EvtGenBase/EvtVector4R.hh /usr/include/c++/3.4.6/iostream
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/ostream /usr/include/c++/3.4.6/ios
-EvtVVSPwave.o: /usr/include/c++/3.4.6/iosfwd
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/cstring /usr/include/c++/3.4.6/cstddef
-EvtVVSPwave.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtVVSPwave.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtVVSPwave.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
-EvtVVSPwave.o: /usr/include/libio.h /usr/include/_G_config.h
-EvtVVSPwave.o: /usr/include/wchar.h /usr/include/bits/wchar.h
-EvtVVSPwave.o: /usr/include/gconv.h
-EvtVVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtVVSPwave.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtVVSPwave.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtVVSPwave.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtVVSPwave.o: /usr/include/libintl.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtVVSPwave.o: /usr/include/pthread.h /usr/include/sched.h
-EvtVVSPwave.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtVVSPwave.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtVVSPwave.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h
-EvtVVSPwave.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtVVSPwave.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtVVSPwave.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/cwchar /usr/include/c++/3.4.6/ctime
-EvtVVSPwave.o: /usr/include/stdint.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/exception
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/climits
-EvtVVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtVVSPwave.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtVVSPwave.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtVVSPwave.o: /usr/include/c++/3.4.6/new
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/cassert
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/string /usr/include/c++/3.4.6/memory
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/limits
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/algorithm
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtVVSPwave.o: /usr/include/c++/3.4.6/streambuf
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtVVSPwave.o: /usr/include/c++/3.4.6/locale
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtVVSPwave.o: /usr/include/c++/3.4.6/typeinfo /usr/include/c++/3.4.6/istream
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/istream.tcc /usr/include/math.h
-EvtVVSPwave.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
-EvtVVSPwave.o: /usr/include/bits/mathcalls.h ../EvtGenBase/EvtSpinDensity.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtAbsLineShape.hh /usr/include/c++/3.4.6/vector
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtVVSPwave.o: ../EvtGenBase/EvtStringHash.hh /usr/include/c++/3.4.6/map
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtVVSPwave.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtVVSPwave.o: ../EvtGenBase/EvtVector4C.hh ../EvtGenBase/EvtVector3C.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtVector3R.hh ../EvtGenBase/EvtTensor4C.hh
-EvtVVSPwave.o: ../EvtGenModels/EvtVVSPwave.hh ../EvtGenBase/EvtDecayAmp.hh
-EvtVVSPwave.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-EvtWilsonCoeficients.o: ../EvtGenBase/EvtPatches.hh ../EvtGenBase/EvtConst.hh
-EvtWilsonCoeficients.o: ../EvtGenBase/EvtReport.hh
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/iostream
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtWilsonCoeficients.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtWilsonCoeficients.o: /usr/include/gnu/stubs.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/ostream
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/ios
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/iosfwd
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/cstring
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/cstddef
-EvtWilsonCoeficients.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtWilsonCoeficients.o: /usr/include/string.h /usr/include/c++/3.4.6/cstdio
-EvtWilsonCoeficients.o: /usr/include/stdio.h /usr/include/bits/types.h
-EvtWilsonCoeficients.o: /usr/include/bits/wordsize.h
-EvtWilsonCoeficients.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtWilsonCoeficients.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtWilsonCoeficients.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtWilsonCoeficients.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtWilsonCoeficients.o: /usr/include/bits/stdio_lim.h
-EvtWilsonCoeficients.o: /usr/include/bits/sys_errlist.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtWilsonCoeficients.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtWilsonCoeficients.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtWilsonCoeficients.o: /usr/include/libintl.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtWilsonCoeficients.o: /usr/include/pthread.h /usr/include/sched.h
-EvtWilsonCoeficients.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtWilsonCoeficients.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtWilsonCoeficients.o: /usr/include/bits/pthreadtypes.h
-EvtWilsonCoeficients.o: /usr/include/bits/initspin.h
-EvtWilsonCoeficients.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtWilsonCoeficients.o: /usr/include/bits/posix_opt.h
-EvtWilsonCoeficients.o: /usr/include/bits/confname.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtWilsonCoeficients.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/cwchar
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/exception
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/climits
-EvtWilsonCoeficients.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtWilsonCoeficients.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtWilsonCoeficients.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtWilsonCoeficients.o: /usr/include/stdlib.h /usr/include/c++/3.4.6/new
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/cassert /usr/include/assert.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/string
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/memory
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/limits
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/algorithm
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/streambuf
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/locale
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/typeinfo
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/istream
-EvtWilsonCoeficients.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtWilsonCoeficients.o: ../EvtGenModels/EvtWilsonCoeficients.hh
-EvtWilsonCoeficients.o: ../EvtGenBase/EvtComplex.hh /usr/include/math.h
-EvtWilsonCoeficients.o: /usr/include/bits/huge_val.h
-EvtWilsonCoeficients.o: /usr/include/bits/mathdef.h
-EvtWilsonCoeficients.o: /usr/include/bits/mathcalls.h
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/gnu/stubs.h
-EvtY3SToY1SpipiMoxhay.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtVector4R.hh
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/iostream
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/ostream
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/ios
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/iosfwd
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/cstring
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/types.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/wordsize.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtY3SToY1SpipiMoxhay.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/stdio_lim.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/sys_errlist.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/libintl.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/pthread.h /usr/include/sched.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/pthreadtypes.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/initspin.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/posix_opt.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/confname.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/cwchar
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/exception
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/climits
-EvtY3SToY1SpipiMoxhay.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtY3SToY1SpipiMoxhay.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/new
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/cassert
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/string
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/memory
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/limits
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/algorithm
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/streambuf
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/locale
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/typeinfo
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/istream
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtY3SToY1SpipiMoxhay.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/mathdef.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/bits/mathcalls.h
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtComplex.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtConst.hh ../EvtGenBase/EvtId.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtSpinType.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtReport.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtGenKine.hh ../EvtGenBase/EvtPDL.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtPartProp.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/vector
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtStringHash.hh
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/map
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtY3SToY1SpipiMoxhay.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtVector4C.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtVector3C.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtVector3R.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtTensor4C.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenModels/EvtY3SToY1SpipiMoxhay.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtDecayProb.hh
-EvtY3SToY1SpipiMoxhay.o: ../EvtGenBase/EvtDecayBase.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtPatches.hh /usr/include/stdlib.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/features.h /usr/include/sys/cdefs.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/gnu/stubs.h
-EvtYmSToYnSpipiCLEO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtParticle.hh /usr/include/assert.h
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtVector4R.hh
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/iostream
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++config.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/os_defines.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/ostream
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/ios
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/iosfwd
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++locale.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/cstring
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/cstddef /usr/include/string.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/cstdio /usr/include/stdio.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/_G_config.h /usr/include/wchar.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/wchar.h /usr/include/gconv.h
-EvtYmSToYnSpipiCLEO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/stdio_lim.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/sys_errlist.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/clocale /usr/include/locale.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/locale.h /usr/include/langinfo.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/nl_types.h /usr/include/iconv.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/libintl.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++io.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/gthr-default.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/pthread.h /usr/include/sched.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/time.h /usr/include/bits/sched.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/signal.h /usr/include/bits/sigset.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/pthreadtypes.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/initspin.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/sigthread.h /usr/include/unistd.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/posix_opt.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/confname.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/cctype /usr/include/ctype.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/endian.h /usr/include/bits/endian.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stringfwd.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/postypes.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/cwchar
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/ctime /usr/include/stdint.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/functexcept.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/exception_defines.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/exception
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/char_traits.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_algobase.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/climits
-EvtYmSToYnSpipiCLEO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/limits.h
-EvtYmSToYnSpipiCLEO.o: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/syslimits.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/limits.h /usr/include/c++/3.4.6/cstdlib
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/new
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_pair.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/type_traits.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_types.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_iterator_base_funcs.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/concept_check.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_iterator.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/debug/debug.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/cassert
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/localefwd.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/ios_base.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/atomicity.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/atomic_word.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/locale_classes.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/string
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/memory
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/allocator.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/c++allocator.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/ext/new_allocator.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_construct.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_uninitialized.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_raw_storage_iter.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/limits
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_function.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/basic_string.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/algorithm
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_algo.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_heap.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_tempbuf.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/basic_string.tcc
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/streambuf
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/streambuf.tcc
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/basic_ios.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/streambuf_iterator.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/locale_facets.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/cwctype /usr/include/wctype.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_base.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/ctype_inline.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/codecvt.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/codecvt_specializations.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/time_members.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/i386-redhat-linux/bits/messages_members.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/basic_ios.tcc
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/ostream.tcc
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/locale
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/locale_facets.tcc
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/typeinfo
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/istream
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/istream.tcc
-EvtYmSToYnSpipiCLEO.o: /usr/include/math.h /usr/include/bits/huge_val.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/mathdef.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/bits/mathcalls.h
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtSpinDensity.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtComplex.hh ../EvtGenBase/EvtConst.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtId.hh ../EvtGenBase/EvtSpinType.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtReport.hh ../EvtGenBase/EvtGenKine.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtPDL.hh ../EvtGenBase/EvtPartProp.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtAbsLineShape.hh
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/vector
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_vector.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_bvector.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/vector.tcc
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtStringHash.hh
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/map
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_tree.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/cpp_type_traits.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_map.h
-EvtYmSToYnSpipiCLEO.o: /usr/include/c++/3.4.6/bits/stl_multimap.h
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtVector4C.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtVector3C.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtVector3R.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtTensor4C.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtRandom.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenModels/EvtYmSToYnSpipiCLEO.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtDecayAmp.hh
-EvtYmSToYnSpipiCLEO.o: ../EvtGenBase/EvtDecayBase.hh ../EvtGenBase/EvtAmp.hh
-rly.o: ../EvtGenBase/EvtRandom.hh
-begevtgenget.o: ../EvtGenModels/stdhep.inc
-begevtgengetx.o: ../EvtGenModels/stdhep.inc
-begevtgenstore.o: ../EvtGenModels/stdhep.inc
-begevtgenstorex.o: ../EvtGenModels/stdhep.inc
-EvtBTo3pi.o: ../EvtGenModels/EvtBTo3pi.inc
-EvtBTo3piMPP.o: ../EvtGenModels/EvtBTo3pi.inc
-EvtBTo3piP00.o: ../EvtGenModels/EvtBTo3pi.inc
-EvtBToKpipi.o: ../EvtGenModels/EvtBTo3pi.inc
diff --git a/TEvtGen/EvtGenModels/Pythia.F b/TEvtGen/EvtGenModels/Pythia.F
deleted file mode 100644 (file)
index e477970..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See BelEvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: EvtJetSetInit.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C    RS          October 28, 2002        copied and modified from Jetset
-C
-C------------------------------------------------------------------------
-      SUBROUTINE EVTPYTHIAINIT(FNAME)
-      IMPLICIT NONE
-      EXTERNAL PYDATA
-      
-      CHARACTER*(*) FNAME
-      
-      PRINT *,'PYUPDA : : ',FNAME
-      OPEN(54,STATUS='OLD',FILE=FNAME)
-      CALL PYUPDA(3,54)
-      CLOSE(54)      
-      WRITE (*,*) 'PYUPDA DONE'
-      RETURN
-      END
-      SUBROUTINE INITPYTHIA(GAGA)
-      IMPLICIT NONE
-      INTEGER PYCOMP
-      EXTERNAL PYDATA,PYCOMP
-      LOGICAL FIRST
-      SAVE FIRST
-      DATA FIRST / .TRUE. /
-      DOUBLE PRECISION MAXIMUM
-      COMMON/CBBEAM/MAXIMUM
-      INTEGER IDC,GAGA
-C...Decay information.
-      INTEGER MDCY,MDME,KFDP
-      DOUBLE PRECISION BRAT
-      COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
-      
-      CHARACTER CH1*16,CH2*16
-      
-      INTEGER DC,CDC
-C     order of DC is d u s c b t b' t' ...
-C     ... e nu_e mu nu_mu tau nu_tau tau' nu_tau'
-      COMMON/DECAYCH/DC(18)
-      
-      IF(FIRST) THEN
-         MAXIMUM=10.6
-         WRITE (*,*) "Decay of Z0/gamma to"
-C...  Only allow Z0 decay to quarks (i.e. no leptonic final states).
-C     RS veto also b quarks
-         DO IDC=MDCY(23,2),MDCY(23,2)+MDCY(23,3)-1
-C     first switch channel off
-            MDME(IDC,1)=MIN(0,MDME(IDC,1))
-            CDC=IABS(KFDP(IDC,1))
-C     then switch on again if requested
-            CALL PYNAME(CDC,CH1)
-            CALL PYNAME(-CDC,CH2)
-            IF(DC(CDC).EQ.1) THEN
-               MDME(IDC,1)=1
-               WRITE (*,*) "  ",ch1,"+ ",ch2," ALLOWED"
-            ELSE
-               WRITE (*,*) "  ",ch1,"+ ",ch2," DISABLED"
-            ENDIF
-         ENDDO
-C     CALL PYSTAT(2)
-         
-         IF(GAGA.EQ.0) THEN
-            CALL PYINIT('CMS','E+','E-',MAXIMUM)
-         ELSE
-            CALL PYINIT('CMS','GAMMA/E+','GAMMA/E-',MAXIMUM)
-         ENDIF
-C     CALL PYLIST(0)
-C         WRITE (*,*) 'done PYTHIA initialization'//
-C     >        ' with varying beam energy'
-C         WRITE (*,*) 'maximum allowed energy is ',MAXIMUM,' GeV'
-         FIRST=.FALSE.
-      ENDIF
-      RETURN
-      END
-      
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See BelEvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: continuum.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C     26-Sep-2002 - RS : changed to PYTHIA
-C
-C------------------------------------------------------------------------
-      SUBROUTINE PYCONTINUUM(ENERGY,NDAUG,KF,PX,PY,PZ,E)
-      IMPLICIT NONE
-      DOUBLE PRECISION MAXIMUM
-      COMMON/CBBEAM/MAXIMUM
-      
-      DOUBLE PRECISION P,V
-      COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
-      
-      INTEGER MSTU,MSTJ
-      DOUBLE PRECISION PARU,PARJ
-      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      
-      INTEGER MSTP,MSTI
-      DOUBLE PRECISION PARP,PARI
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-C...Decay information.
-      INTEGER MDCY,MDME,KFDP
-      DOUBLE PRECISION BRAT
-      COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
-      
-      INTEGER N,NPAD,K,IMSTJ
-      
-      REAL*8 PXSUM,PYSUM,PZSUM
-      
-      REAL*8 ENERGY
-      
-      INTEGER PYCOMP
-      EXTERNAL PYCOMP
-      
-      INTEGER KF(100),I,NDAUG
-      REAL*8  PX(100),PY(100),PZ(100),E(100)
-
-C     RS Particles should not decay at this stage
-C     but remember the previous setting
-      IMSTJ=MSTJ(21)
-      MSTJ(21)=0
-      
-C      IF(FLAVOR.NE.LastProdFLav) THEN
-C...  Only allow Z0 decay to decay to certain flavour
-C         DO IDC=MDCY(23,2),MDCY(23,2)+MDCY(23,3)-1
-C            IF(IABS(KFDP(IDC,1)).NE.Flavor)
-C     >           MDME(IDC,1)=MIN(0,MDME(IDC,1))
-C         ENDDO
-C      ENDIF
-      
- 4    PARP(171)=Energy/Maximum
-      CALL PYEVNT
-      
-C--- only primary quarks and stable particles remain in the event record
-      CALL PYEDIT(5)
-      
-C     RS and allow decays
-      MSTJ(21)=IMSTJ
-      
-      NDAUG=0
-C     sum to check that we preserve momentum
-      PXSUM=0.0
-      PYSUM=0.0
-      PZSUM=0.0
-      
-      DO 1,I=1,N
-         NDAUG=NDAUG+1
-         KF(NDAUG)=K(I,2)
-         PX(NDAUG)=P(I,1)
-         PY(NDAUG)=P(I,2)
-         PZ(NDAUG)=P(I,3)
-         E(NDAUG) =P(I,4)
-         IF(K(I,1).LT.10)THEN
-            PXSUM=PXSUM+PX(NDAUG)
-            PYSUM=PYSUM+PY(NDAUG)
-            PZSUM=PZSUM+PZ(NDAUG)
-         ENDIF
-1     CONTINUE
-      
-      IF (ABS(PXSUM).GT.0.001.OR.
-     +       ABS(PYSUM).GT.0.001.OR.
-     +       ABS(PZSUM).GT.0.001) THEN
-
-
-         PRINT *, 'Momentum not conserved in jetset fragmentation:'
-         PRINT *,'dPx:',pxsum,' dPy:',pysum,' dPz:',pzsum
-
-         CALL PYLIST(2)
-
-         GOTO 4
-         
-      ENDIF
-      RETURN
-      END
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See BelEvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: jetset1.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C     26-Sep-2002 - RS : changed to PYTHIA
-C
-C------------------------------------------------------------------------
-      SUBROUTINE PYTHIADEC(IP,M,NDAUG,KF,KM,PX,PY,PZ,E)
-
-C
-C interface to JETSET 7.4 to have one particle decayed
-C including possibly fragmentation, if the decay products include
-C partons.
-C     
-      IMPLICIT NONE
-      
-      INTEGER MSTU,MSTJ
-      DOUBLE PRECISION PARU,PARJ
-      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /PYDAT1/
-      DOUBLE PRECISION P,V
-      COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
-      
-      INTEGER N,NPAD,K
-      
-      INTEGER NDMAX
-      PARAMETER (NDMAX=100)
-      
-      INTEGER PYCOMP
-      EXTERNAL PYCOMP
-      
-      INTEGER IP,KF(NDMAX),I,NDAUG,KM(NDMAX)
-      INTEGER KP,KID,IPART1,IPART
-      REAL*8  M,PX(NDMAX),PY(NDMAX),PZ(NDMAX),E(NDMAX)
-      
-      INTEGER IP1,IMSTJ
-      DOUBLE PRECISION QMAX
-      
-C      CALL PY1ENT(1,IP,M,0D0,0D0)
-      K(1,1)=1
-      K(1,2)=ip
-      P(1,5)=m
-      P(1,4)=m
-      P(1,1)=0.0
-      P(1,2)=0.0
-      P(1,3)=0.0
-      n=1
-     
-C     RS Particles should not decay at this stage
-C     but remember the previous setting
-      IMSTJ=MSTJ(21)
-      MSTJ(21)=0
-      
-      CALL PYDECY(1)
-      
-C     RS and allow decays
-      MSTJ(21)=IMSTJ
-
-
-
-
-C code copied from LUEXEC to avoid error with shower
-C switched on
-C...Decay products may develop a shower.
-        IF(MSTJ(92).GT.0) THEN
-          IP1=MSTJ(92)
-          QMAX=SQRT(MAX(0.,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
-     &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
-          CALL PYSHOW(IP1,IP1+1,QMAX)
-          CALL PYPREP(IP1)
-          MSTJ(92)=0
-        ELSEIF(MSTJ(92).LT.0) THEN
-          IP1=-MSTJ(92)
-          CALL PYSHOW(IP1,-3,P(IP,5))
-          CALL PYPREP(IP1)
-          MSTJ(92)=0
-        ENDIF
-
-c
-c for debugging:
-c      call lulist(1)
-c
-      mstj(21)=0
-      call pyexec
-      mstj(21)=2
-c find partons, delete secondary partons, set mother pointers
-
-      ndaug = 0
-      ipart1 = 1
-      ipart = 1
-
-      do 10 i=2,n
-         kp = k(i,3)
-         kid = k(i,2)
-         if (abs(kid) .ge. 1 .and. abs(kid) .le. 8
-     1        .or. kid .eq. 21
-     2        .or. kid .ge. 91 .and. kid .le. 94)  then
-            if (ipart1 .eq. 1) ipart1 = i
-            ipart = i
-            if (kp .ne. 1)  goto 10
-            kp = 0
-         else
-            if (kp .gt. ipart)  then
-               goto 10
-            elseif (kp .ge. ipart1)  then
-               kp = ipart1-1
-            else
-               kp = 0
-            endif
-         endif
-         ndaug = ndaug + 1
-         km(ndaug)=kp
-         kf(ndaug)=kid
-         px(ndaug)=p(i,1)
-         py(ndaug)=p(i,2)
-         pz(ndaug)=p(i,3)
-         e(ndaug)=p(i,4)
-
-C        print '( 2I5,I12,4F12.4 )',ndaug,km(ndaug),kf(ndaug),
-C     1    px(ndaug),py(ndaug),pz(ndaug),e(ndaug)
-
- 10   CONTINUE
-
-C      NDAUG=0
-C      DO I=2,N
-C        NDAUG = NDAUG + 1
-C        KM(NDAUG)=K(I,3)
-C        KF(NDAUG)=K(I,2)
-C        PX(NDAUG)=P(I,1)
-C        PY(NDAUG)=P(I,2)
-C        PZ(NDAUG)=P(I,3)
-C        E(NDAUG)=P(I,4)
-C      ENDDO
-
-
-      RETURN
-      END
diff --git a/TEvtGen/EvtGenModels/begevtgenget.F b/TEvtGen/EvtGenModels/begevtgenget.F
deleted file mode 100644 (file)
index 7e2090c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-      subroutine begevtgenget(entry,eventnum,numparticle,istat,
-     +                          partnum,mother,daugfirst,dauglast,
-     +                          px,py,pz,e,m,x,y,z,t)
-*
-* Copyright Information: See EvtGen/COPYRIGHT
-*
-* routine to read from the stdhep common block from
-* evtgen (C++). This routine allows the C++ program not to
-* have to mess with common blocks.
-*
-* Anders Ryd,  Oct 1   Created.
-*
-* 
-      implicit none
-#include "EvtGenModels/stdhep.inc"
-
-        integer entry,eventnum,numparticle,istat,partnum
-        integer mother,daugfirst,dauglast
-
-        integer stdhepnum
-
-        double precision px,py,pz,e,m,x,y,z,t
-
-        stdhepnum=partnum
-
-
-
-        eventnum=nevhep
-        numparticle=nhep
-        istat=isthep(entry)
-        stdhepnum=idhep(entry)
-        mother=jmohep(1,entry)
-        daugfirst=jdahep(1,entry)
-        dauglast=jdahep(2,entry)
-        px=phep(1,entry)
-        py=phep(2,entry)
-        pz=phep(3,entry)
-        e=phep(4,entry)
-        m=phep(5,entry)
-        x=vhep(1,entry)
-        y=vhep(2,entry)
-        z=vhep(3,entry)
-        t=vhep(4,entry)
-
-        return
-
-      end
-
-
-
-
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/begevtgengetx.F b/TEvtGen/EvtGenModels/begevtgengetx.F
deleted file mode 100644 (file)
index e41a319..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: begevtgengetx.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine begevtgengetx(entry,eventnum,numparticle,istat,
-     +                          partnum,mother,daugfirst,dauglast,
-     +                          px,py,pz,e,m,x,y,z,t)
-*
-* routine to read from the stdhep common block from
-* evtgen (C++). This routine allows the C++ program not to
-* have to mess with common blocks.
-*
-* Anders Ryd,  Oct 1   Created.
-*
-* 
-      implicit none
-
-C      INTEGER NMXHEP
-C      PARAMETER (NMXHEP=4000) !!! KRAL - NEW SIZE
-C
-C      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-C      real PHEP,VHEP !!! Kral - double precision for STDHEP v3.0
-C      COMMON/XHEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-C     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-C      SAVE /XHEPEVT/
-
-#include "EvtGenModels/stdhep.inc"
-
-        integer entry,eventnum,numparticle,istat,partnum
-        integer mother,daugfirst,dauglast
-
-        integer stdhepnum
-
-        double precision px,py,pz,e,m,x,y,z,t
-
-        stdhepnum=partnum
-
-
-
-        eventnum=nevhep
-        numparticle=nhep
-        istat=isthep(entry)
-        stdhepnum=idhep(entry)
-        mother=jmohep(1,entry)
-        daugfirst=jdahep(1,entry)
-        dauglast=jdahep(2,entry)
-        px=phep(1,entry)
-        py=phep(2,entry)
-        pz=phep(3,entry)
-        e=phep(4,entry)
-        m=phep(5,entry)
-        x=vhep(1,entry)
-        y=vhep(2,entry)
-        z=vhep(3,entry)
-        t=vhep(4,entry)
-
-        return
-
-      end
-
-
diff --git a/TEvtGen/EvtGenModels/begevtgenstore.F b/TEvtGen/EvtGenModels/begevtgenstore.F
deleted file mode 100644 (file)
index b2fdd45..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: begevtgenstore.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine begevtgenstore(nument,eventnum,numparticle,istat,
-     +                          partnum,motherfirst,motherlast,
-     +                          daugfirst,dauglast,
-     +                          px,py,pz,e,m,x,y,z,t)
-*
-* routine to fill the stdhep common blocks from
-* evtgen (C++). This routine allows the C++ program not to
-* have to mess with common blocks.
-*
-* Anders Ryd,  Dec 96   Created.
-*
-* 
-      implicit none
-#include "EvtGenModels/stdhep.inc"
-
-        integer nument,eventnum,numparticle,istat,partnum
-        integer motherfirst,motherlast,daugfirst,dauglast
-
-        integer stdhepnum
-
-        double precision px,py,pz,e,m,x,y,z,t
-
-        stdhepnum=partnum
-
-        if (istat.eq.1) then
-
-c       make the quarks unstable so that geant will not try
-c       to put them through the detector simulation!
-
-         if (
-     +        stdhepnum.eq.-1.or.
-     +        stdhepnum.eq. 1.or.
-     +        stdhepnum.eq.-2.or.
-     +        stdhepnum.eq. 2.or.
-     +        stdhepnum.eq.-3.or.
-     +        stdhepnum.eq. 3.or.
-     +        stdhepnum.eq.-4.or.
-     +        stdhepnum.eq. 4.or.
-     +        stdhepnum.eq.-5.or.
-     +        stdhepnum.eq. 5.or.
-     +        stdhepnum.eq.-6.or.
-     +        stdhepnum.eq. 6) then
-           istat=2
-         endif
-
-
-
-
-c         if (
-c     +        stdhepnum.ne.-1.and.
-c     +        stdhepnum.ne. 1.and.
-c     +        stdhepnum.ne.-2.and.
-c     +        stdhepnum.ne. 2.and.
-c     +        stdhepnum.ne.-3.and.
-c     +        stdhepnum.ne. 3.and.
-c     +        stdhepnum.ne.-4.and.
-c     +        stdhepnum.ne. 4.and.
-c     +        stdhepnum.ne.-5.and.
-c     +        stdhepnum.ne. 5.and.
-c     +        stdhepnum.ne.-6.and.
-c     +        stdhepnum.ne. 6.and.
-c     +        stdhepnum.ne.-11.and.
-c     +        stdhepnum.ne.11.and.
-c     +        stdhepnum.ne.-13.and.
-c     +        stdhepnum.ne.13.and.
-c     +        stdhepnum.ne.12.and.
-c     +        stdhepnum.ne.-12.and.
-c     +        stdhepnum.ne.14.and.
-c     +        stdhepnum.ne.-14.and.
-c     +        stdhepnum.ne.16.and.
-c     +        stdhepnum.ne.-16.and.
-c     +        stdhepnum.ne.2212.and.
-c     +        stdhepnum.ne.-2212.and.
-c     +        stdhepnum.ne.2112.and.
-c     +        stdhepnum.ne.-2112.and.
-c     +        stdhepnum.ne.211.and.
-c     +        stdhepnum.ne.-211.and.
-c     +        stdhepnum.ne.321.and.
-c     +        stdhepnum.ne.-321.and.
-c     +        stdhepnum.ne.130.and.
-c     +        stdhepnum.ne.310.and.
-c     +        stdhepnum.ne.22) then
-c    
-c            print *,'particle stdhep:',stdhepnum,' is stable'
-c
-c         endif
-
-        endif
-
-        nevhep=eventnum
-        nhep=numparticle
-        isthep(nument)=istat
-        idhep(nument)=stdhepnum
-        jmohep(1,nument)=motherfirst
-        jmohep(2,nument)=motherlast
-        jdahep(1,nument)=daugfirst
-        jdahep(2,nument)=dauglast
-        phep(1,nument)=px
-        phep(2,nument)=py
-        phep(3,nument)=pz
-        phep(4,nument)=e
-        phep(5,nument)=m
-        vhep(1,nument)=x
-        vhep(2,nument)=y
-        vhep(3,nument)=z
-        vhep(4,nument)=t
-
-        return
-
-      end
-
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/begevtgenstorex.F b/TEvtGen/EvtGenModels/begevtgenstorex.F
deleted file mode 100644 (file)
index 35239ca..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-C--------------------------------------------------------------------------
-C     
-C     Environment:
-C     This software is part of the EvtGen package developed jointly
-C     for the BaBar and CLEO collaborations.  If you use all or part
-C     of it, please give an appropriate acknowledgement.
-C     
-C     Copyright Information: See EvtGen/COPYRIGHT
-C     Copyright (C) 1998      Caltech, UCSB
-C     
-C     Module: begevtgenstorex.F
-C     
-C     Description:
-C     
-C     Modification history:
-C     
-C     DJL/RYD     August 11, 1998         Module created
-C     
-C------------------------------------------------------------------------
-      subroutine begevtgenstorex(entry,eventnum,numparticle,istat,
-     +     partnum,mother,daugfirst,dauglast,
-     +     px,py,pz,e,m,x,y,z,t)
-      implicit none
-*     
-*     routine to fill the stdhep common blocks from
-*     evtgen (C++). This routine allows the C++ program not to
-*     have to mess with common blocks.
-*     
-*     Anders Ryd,  Dec 96   Created.
-*     
-*     
-#include "EvtGenModels/stdhep.inc"
-      
-      logical qedrad
-      integer ph_nmxhep ! this is parameter nmxhep in photos/photos_make
-*                       ! Renamed here to avoid name conflict in stdhep.inc
-      parameter (ph_nmxhep=10000)
-      common / phoqed / qedrad(ph_nmxhep)
-
-      integer entry,eventnum,numparticle,istat,partnum
-      integer mother,daugfirst,dauglast
-      integer stdhepnum, i
-      double precision px,py,pz,e,m,x,y,z,t
-
-      stdhepnum=partnum
-
-      nevhep=eventnum
-      nhep=numparticle
-      isthep(entry)=istat
-      idhep(entry)=stdhepnum
-      jmohep(1,entry)=mother
-      jmohep(2,entry)=0
-      jdahep(1,entry)=daugfirst
-      jdahep(2,entry)=dauglast
-      phep(1,entry)=px
-      phep(2,entry)=py
-      phep(3,entry)=pz
-      phep(4,entry)=e
-      phep(5,entry)=m
-      vhep(1,entry)=x
-      vhep(2,entry)=y
-      vhep(3,entry)=z
-      vhep(4,entry)=t
-
-      qedrad(entry)=.true.
-      if (daugfirst.gt.0 .and. dauglast.gt.0) THEN
-         do i=daugfirst, dauglast
-            qedrad(i) = .true.
-         end do
-      end if
-
-      return
-
-      end
-
-
diff --git a/TEvtGen/EvtGenModels/continuum.F b/TEvtGen/EvtGenModels/continuum.F
deleted file mode 100644 (file)
index fe9f89b..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: continuum.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine continuum(energy,flavor,ndaug,kf,px,py,pz,e)
-
-      implicit none
-
-      common/lujets/n,k(4000,5),p(4000,5),v(4000,5)
-
-      integer n,k
-      real p,v
-
-      real*8 pxsum,pysum,pzsum
-
-      real*8 energy
-
-      real senergy
-
-      integer lucomp
-      external lucomp
-
-      integer flavor,kf(100),i,ndaug,istart
-      real*8  px(100),py(100),pz(100),e(100)
-
-      senergy=energy
-
-C      if(flavor.ne.0) kf_user=flavor
-C      flavor = kf_user
-
-
-C     call lueevt(kf_user,senergy)  ! e+e- --> qq shower parton model
- 4    call lueevt(flavor,senergy) ! e+e- --> qq shower parton model
-
-C      call lulist(1)
-
-      ndaug=0
-
-C--- Save the primary quarks 
-
-      do 1,i=1,n
-        if(abs(k(i,2)).gt.6) goto 1
-        if(k(i,2).eq.0)      goto 1
-        if(k(i,3).ne.0)      goto 1
-        ndaug=ndaug+1
-        kf(ndaug)=k(i,2)
-        px(ndaug)=p(i,1)
-        py(ndaug)=p(i,2)
-        pz(ndaug)=p(i,3)
-        e(ndaug) =p(i,4)
-1     continue
-
-C     sum to check that we preserve momentum
-      pxsum=0.0
-      pysum=0.0
-      pzsum=0.0
-
-      istart=0
-
-      do 2, i=1,n
-         if(k(i,3).le.0.and.k(i,2).ne.22) goto 2
-c        if particle is jet or cluster
-
-         if (k(i,2).eq.22.and.istart.eq.0) goto 22
-         if ( k(i,3).le.0) goto 2
-
-         if(k(k(i,3),2).eq.92.or.k(k(i,3),2).eq.91) goto 22
-
-         goto 2
-         
- 22      continue
-C     Copy particle. If parent is cluster or string or photon if
-C     before first cluster or string. Uggly...
-         if (k(i,2).ne.22) istart=1
-         ndaug = ndaug + 1
-         kf(ndaug)=k(i,2)
-         px(ndaug)=p(i,1)
-         py(ndaug)=p(i,2)
-         pz(ndaug)=p(i,3)
-         pxsum=pxsum+px(ndaug)
-         pysum=pysum+py(ndaug)
-         pzsum=pzsum+pz(ndaug)
-         e(ndaug) =p(i,4)
- 2    continue
-
-
-      if (abs(pxsum).gt.0.001.or.
-     +       abs(pysum).gt.0.001.or.
-     +       abs(pzsum).gt.0.001) then
-
-
-         print *, 'Momentum not conserved in jetset fragmentation:'
-         print *,'dPx:',pxsum,' dPy:',pysum,' dPz:',pzsum
-
-         call lulist(1)
-
-         goto 4
-
-      endif
-
-      return
-      end
-
-
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/continuumCDF.F b/TEvtGen/EvtGenModels/continuumCDF.F
deleted file mode 100644 (file)
index b5d1735..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: continuum.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine continuumcdf(energy,flavor,ndaug,kf,px,py,pz,e)
-
-      implicit none
-
-      common/lyjets/n,k(4000,5),p(4000,5),v(4000,5)
-
-      integer n,k
-      real p,v
-
-      real*8 pxsum,pysum,pzsum
-
-      real*8 energy
-
-      real senergy
-
-      integer lycomp
-      external lycomp
-
-      integer flavor,kf(100),i,ndaug,istart
-      real*8  px(100),py(100),pz(100),e(100)
-
-      senergy=energy
-
-C      if(flavor.ne.0) kf_user=flavor
-C      flavor = kf_user
-
-
-C     call lyeevt(kf_user,senergy)  ! e+e- --> qq shower parton model
- 4    call lyeevt(flavor,senergy) ! e+e- --> qq shower parton model
-
-C      call lylist(1)
-
-      ndaug=0
-
-C--- Save the primary quarks 
-
-      do 1,i=1,n
-        if(abs(k(i,2)).gt.6) goto 1
-        if(k(i,2).eq.0)      goto 1
-        if(k(i,3).ne.0)      goto 1
-        ndaug=ndaug+1
-        kf(ndaug)=k(i,2)
-        px(ndaug)=p(i,1)
-        py(ndaug)=p(i,2)
-        pz(ndaug)=p(i,3)
-        e(ndaug) =p(i,4)
-1     continue
-
-C     sum to check that we preserve momentum
-      pxsum=0.0
-      pysum=0.0
-      pzsum=0.0
-
-      istart=0
-
-      do 2, i=1,n
-         if(k(i,3).le.0.and.k(i,2).ne.22) goto 2
-c        if particle is jet or cluster
-
-         if (k(i,2).eq.22.and.istart.eq.0) goto 22
-         if ( k(i,3).le.0) goto 2
-
-         if(k(k(i,3),2).eq.92.or.k(k(i,3),2).eq.91) goto 22
-
-         goto 2
-         
- 22      continue
-C     Copy particle. If parent is cluster or string or photon if
-C     before first cluster or string. Uggly...
-         if (k(i,2).ne.22) istart=1
-         ndaug = ndaug + 1
-         kf(ndaug)=k(i,2)
-         px(ndaug)=p(i,1)
-         py(ndaug)=p(i,2)
-         pz(ndaug)=p(i,3)
-         pxsum=pxsum+px(ndaug)
-         pysum=pysum+py(ndaug)
-         pzsum=pzsum+pz(ndaug)
-         e(ndaug) =p(i,4)
- 2    continue
-
-
-      if (abs(pxsum).gt.0.001.or.
-     +       abs(pysum).gt.0.001.or.
-     +       abs(pzsum).gt.0.001) then
-
-
-         print *, 'Momentum not conserved in jetset fragmentation:'
-         print *,'dPx:',pxsum,' dPy:',pysum,' dPz:',pzsum
-
-         call lylist(1)
-
-         goto 4
-
-      endif
-
-      return
-      end
-
-
-
-
-
-
diff --git a/TEvtGen/EvtGenModels/jetset1.F b/TEvtGen/EvtGenModels/jetset1.F
deleted file mode 100644 (file)
index fbeb893..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: jetset1.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine jetset1(ip,m,ndaug,kf,km,px,py,pz,e)
-
-C
-C interface to JETSET 7.4 to have one particle decayed
-C including possibly fragmentation, if the decay products include
-C partons.
-C
-
-      implicit none
-
-      INTEGER MSTU,MSTJ
-      REAL PARU,PARJ
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-
-      common/lujets/n,k(4000,5),p(4000,5),v(4000,5)
-
-      integer n,k
-      real p,v
-
-      integer ndmax
-      parameter (ndmax=100)
-
-      integer lucomp
-      external lucomp
-
-      integer ip,kf(ndmax),i,ndaug,km(ndmax)
-      integer kp,kid,ipart1,ipart
-      real*8  m,px(ndmax),py(ndmax),pz(ndmax),e(ndmax)
-
-      integer ip1
-      real qmax
-
-c      used to use lu1ent both since it does not set the mass
-c      of the daughter we have to manipulate the common blocks our
-c      self. ryd April 25-1999
-
-c      call lu1ent(1,ip,0.0,0.0,0.0)
-
-      K(1,1)=1
-      K(1,2)=ip
-      P(1,5)=m
-      P(1,4)=m
-      P(1,1)=0.0
-      P(1,2)=0.0
-      P(1,3)=0.0
-      n=1
-
-
-c     now we can decay this particle
-      call ludecy(1)
-
-C code copied from LUEXEC to avoid error with shower
-C switched on
-C...Decay products may develop a shower.
-        IF(MSTJ(92).GT.0) THEN
-          IP1=MSTJ(92)
-          QMAX=SQRT(MAX(0.,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
-     &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
-          CALL LUSHOW(IP1,IP1+1,QMAX)
-          CALL LUPREP(IP1)
-          MSTJ(92)=0
-        ELSEIF(MSTJ(92).LT.0) THEN
-          IP1=-MSTJ(92)
-          CALL LUSHOW(IP1,-3,P(IP1,5))
-          CALL LUPREP(IP1)
-          MSTJ(92)=0
-        ENDIF
-
-c
-c for debugging:
-c      call lulist(1)
-c
-      mstj(21)=0
-      call luexec
-      mstj(21)=2
-c find partons, delete secondary partons, set mother pointers
-
-      ndaug = 0
-      ipart1 = 1
-      ipart = 1
-
-      do 10 i=2,n
-        kp = k(i,3)
-        kid = k(i,2)
-        if (abs(kid) .ge. 1 .and. abs(kid) .le. 8
-     1  .or. kid .eq. 21
-     2  .or. kid .ge. 91 .and. kid .le. 94)  then
-           if (ipart1 .eq. 1) ipart1 = i
-           ipart = i
-           if (kp .ne. 1)  goto 10
-           kp = 0
-        else
-           if (kp .gt. ipart)  then
-              goto 10
-           elseif (kp .ge. ipart1)  then
-              kp = ipart1-1
-           else
-              kp = 0
-              endif
-           endif
-        ndaug = ndaug + 1
-        km(ndaug)=kp
-        kf(ndaug)=kid
-        px(ndaug)=p(i,1)
-        py(ndaug)=p(i,2)
-        pz(ndaug)=p(i,3)
-        e(ndaug)=p(i,4)
-c
-c for debugging:
-c        print '( 2I5,I12,4F12.4 )',ndaug,km(ndaug),kf(ndaug),
-c     1    px(ndaug),py(ndaug),pz(ndaug),e(ndaug)
-c
-   10 continue
-
-      end
-
-
diff --git a/TEvtGen/EvtGenModels/jetset7410CDF.F b/TEvtGen/EvtGenModels/jetset7410CDF.F
deleted file mode 100644 (file)
index a227617..0000000
+++ /dev/null
@@ -1,11712 +0,0 @@
-C*********************************************************************
-C* This version of Jetset 7.4 was altered by 
-C*
-C*         Frank Wuerthwein (fkw@fnal.gov)  3/22/00
-C*
-C* to be compatible with Pythia 6.115 .
-C* Changes are in LYGIVE to adjust common blocks to PYTHIA 6.115
-C* This involves array sizes, double precision, and some rearrangement
-C* of common block content for the common blocks:
-C* PYSUBS, PYPARS, PYINT1,2,3,4,5,6,7 
-C* LYLOGO is only affected by the switch to DOUBLE PRECISION.
-C*
-C* The switch to double precission is implemented such that only the
-C* REAL 's in PYxxxx commons are explicitly defined as DOUPLE PRECISION.
-C* All of Jetset remains REAL rather than DOUBLE PRECISION .
-C*
-C*                    WARNING
-C*
-C* All common blocks and symbol names were renamed to avoid possible
-C* conflicts with other instances of JETSET (J. Beringer, 4/6/2006).
-C* 
-C********************************************************************* 
-C*                                                                  ** 
-C*                                                 December 1993    ** 
-C*                                                                  ** 
-C*   The Lund Monte Carlo for Jet Fragmentation and e+e- Physics    ** 
-C*                                                                  ** 
-C*                        JETSET version 7.4                        ** 
-C*                                                                  ** 
-C*                        Torbjorn Sjostrand                        ** 
-C*                Department of theoretical physics 2               ** 
-C*                        University of Lund                        ** 
-C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
-C*                    E-mail torbjorn@thep.lu.se                    ** 
-C*                    phone +46 - 46 - 222 48 16                    ** 
-C*                                                                  ** 
-C*          LYSHOW is written together with Mats Bengtsson          ** 
-C*                                                                  **
-C*   The latest program version and documentation is found on WWW   **
-C*         http://thep.lu.se/tf2/staff/torbjorn/Welcome.html        **
-C*                                                                  ** 
-C*        Copyright Torbjorn Sjostrand and CERN, Geneva 1993        ** 
-C*                                                                  ** 
-C********************************************************************* 
-C********************************************************************* 
-C                                                                    * 
-C  List of subprograms in order of appearance, with main purpose     * 
-C  (S = subroutine, F = function, B = block data)                    * 
-C                                                                    * 
-C  S   LY1ENT   to fill one entry (= parton or particle)             * 
-C  S   LY2ENT   to fill two entries                                  * 
-C  S   LY3ENT   to fill three entries                                * 
-C  S   LY4ENT   to fill four entries                                 * 
-C  S   LYJOIN   to connect entries with colour flow information      * 
-C  S   LYGIVE   to fill (or query) commonblock variables             * 
-C  S   LYEXEC   to administrate fragmentation and decay chain        * 
-C  S   LYPREP   to rearrange showered partons along strings          * 
-C  S   LYSTRF   to do string fragmentation of jet system             * 
-C  S   LYINDF   to do independent fragmentation of one or many jets  * 
-C  S   LYDECY   to do the decay of a particle                        * 
-C  S   LYKFDI   to select parton and hadron flavours in fragm        * 
-C  S   LYPTDI   to select transverse momenta in fragm                * 
-C  S   LYZDIS   to select longitudinal scaling variable in fragm     * 
-C  S   LYSHOW   to do timelike parton shower evolution               * 
-C  S   LYBOEI   to include Bose-Einstein effects (crudely)           * 
-C  F   UYMASS   to give the mass of a particle or parton             * 
-C  S   LYNAME   to give the name of a particle or parton             * 
-C  F   LYCHGE   to give three times the electric charge              * 
-C  F   LYCOMP   to compress standard KF flavour code to internal KC  * 
-C  S   LYERRM   to write error messages and abort faulty run         * 
-C  F   UYALEM   to give the alpha_electromagnetic value              * 
-C  F   UYALPS   to give the alpha_strong value                       * 
-C  F   UYANGL   to give the angle from known x and y components      * 
-C  F   RLY      to provide a random number generator                 * 
-C  S   RLYGET   to save the state of the random number generator     * 
-C  S   RLYSET   to set the state of the random number generator      * 
-C  S   LYROBO   to rotate and/or boost an event                      * 
-C  S   LYEDIT   to remove unwanted entries from record               * 
-C  S   LYLIST   to list event record or particle data                * 
-C  S   LYLOGO   to write a logo for JETSET and PYTHIA                * 
-C  S   LYUPDA   to update particle data                              * 
-C  F   KLY      to provide integer-valued event information          * 
-C  F   PLY      to provide real-valued event information             * 
-C  S   LYSPHE   to perform sphericity analysis                       * 
-C  S   LYTHRU   to perform thrust analysis                           * 
-C  S   LYCLUS   to perform three-dimensional cluster analysis        * 
-C  S   LYCELL   to perform cluster analysis in (eta, phi, E_T)       * 
-C  S   LYJMAS   to give high and low jet mass of event               * 
-C  S   LYFOWO   to give Fox-Wolfram moments                          * 
-C  S   LYTABU   to analyze events, with tabular output               * 
-C                                                                    * 
-C  S   LYEEVT   to administrate the generation of an e+e- event      * 
-C  S   LYXTOT   to give the total cross-section at given CM energy   * 
-C  S   LYRADK   to generate initial state photon radiation           * 
-C  S   LYXKFL   to select flavour of primary qqbar pair              * 
-C  S   LYXJET   to select (matrix element) jet multiplicity          * 
-C  S   LYX3JT   to select kinematics of three-jet event              * 
-C  S   LYX4JT   to select kinematics of four-jet event               * 
-C  S   LYXDIF   to select angular orientation of event               * 
-C  S   LYONIA   to perform generation of onium decay to gluons       * 
-C                                                                    * 
-C  S   LYHEPC   to convert between /LYJETS/ and /XHEPEVT/ records     * 
-C  S   LYTEST   to test the proper functioning of the package        * 
-C  B   LYDATA   to contain default values and particle data          * 
-C                                                                    * 
-C********************************************************************* 
-      SUBROUTINE LY1ENT(IP,KF,PE,THE,PHI) 
-C...Purpose: to store one parton/particle in commonblock LUJETS. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)) CALL LYERRM(21, 
-     &'(LY1ENT:) writing outside LUJETS memory') 
-      KC=LYCOMP(KF) 
-      IF(KC.EQ.0) CALL LYERRM(12,'(LY1ENT:) unknown flavour code') 
-C...Find mass. Reset K, P and V vectors. 
-      PM=0. 
-      IF(MSTU(10).EQ.1) PM=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM=UYMASS(KF) 
-      DO 100 J=1,5 
-      K(IPA,J)=0 
-      P(IPA,J)=0. 
-      V(IPA,J)=0. 
-  100 CONTINUE 
-C...Store parton/particle in K and P vectors. 
-      K(IPA,1)=1 
-      IF(IP.LT.0) K(IPA,1)=2 
-      K(IPA,2)=KF 
-      P(IPA,5)=PM 
-      P(IPA,4)=MAX(PE,PM) 
-      PA=SQRT(P(IPA,4)**2-P(IPA,5)**2) 
-      P(IPA,1)=PA*SIN(THE)*COS(PHI) 
-      P(IPA,2)=PA*SIN(THE)*SIN(PHI) 
-      P(IPA,3)=PA*COS(THE) 
-C...Set N. Optionally fragment/decay. 
-      N=IPA 
-      IF(IP.EQ.0) CALL LYEXEC 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LY2ENT(IP,KF1,KF2,PECM) 
-C...Purpose: to store two partons/particles in their CM frame, 
-C...with the first along the +z axis. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)-1) CALL LYERRM(21, 
-     &'(LY2ENT:) writing outside LUJETS memory') 
-      KC1=LYCOMP(KF1) 
-      KC2=LYCOMP(KF2) 
-      IF(KC1.EQ.0.OR.KC2.EQ.0) CALL LYERRM(12, 
-     &'(LY2ENT:) unknown flavour code') 
-C...Find masses. Reset K, P and V vectors. 
-      PM1=0. 
-      IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM1=UYMASS(KF1) 
-      PM2=0. 
-      IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
-      IF(MSTU(10).GE.2) PM2=UYMASS(KF2) 
-      DO 110 I=IPA,IPA+1 
-      DO 100 J=1,5 
-      K(I,J)=0 
-      P(I,J)=0. 
-      V(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-C...Check flavours. 
-      KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
-      KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
-      IF(MSTU(19).EQ.1) THEN 
-        MSTU(19)=0 
-      ELSE 
-        IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL LYERRM(2, 
-     &  '(LY2ENT:) unphysical flavour combination') 
-      ENDIF 
-      K(IPA,2)=KF1 
-      K(IPA+1,2)=KF2 
-C...Store partons/particles in K vectors for normal case. 
-      IF(IP.GE.0) THEN 
-        K(IPA,1)=1 
-        IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2 
-        K(IPA+1,1)=1 
-C...Store partons in K vectors for parton shower evolution. 
-      ELSE 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA,4)=MSTU(5)*(IPA+1) 
-        K(IPA,5)=K(IPA,4) 
-        K(IPA+1,4)=MSTU(5)*IPA 
-        K(IPA+1,5)=K(IPA+1,4) 
-      ENDIF 
-C...Check kinematics and store partons/particles in P vectors. 
-      IF(PECM.LE.PM1+PM2) CALL LYERRM(13, 
-     &'(LY2ENT:) energy smaller than sum of masses') 
-      PA=SQRT(MAX(0.,(PECM**2-PM1**2-PM2**2)**2-(2.*PM1*PM2)**2))/ 
-     &(2.*PECM) 
-      P(IPA,3)=PA 
-      P(IPA,4)=SQRT(PM1**2+PA**2) 
-      P(IPA,5)=PM1 
-      P(IPA+1,3)=-PA 
-      P(IPA+1,4)=SQRT(PM2**2+PA**2) 
-      P(IPA+1,5)=PM2 
-C...Set N. Optionally fragment/decay. 
-      N=IPA+1 
-      IF(IP.EQ.0) CALL LYEXEC 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LY3ENT(IP,KF1,KF2,KF3,PECM,X1,X3) 
-C...Purpose: to store three partons or particles in their CM frame, 
-C...with the first along the +z axis and the third in the (x,z) 
-C...plane with x > 0. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)-2) CALL LYERRM(21, 
-     &'(LY3ENT:) writing outside LUJETS memory') 
-      KC1=LYCOMP(KF1) 
-      KC2=LYCOMP(KF2) 
-      KC3=LYCOMP(KF3) 
-      IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL LYERRM(12, 
-     &'(LY3ENT:) unknown flavour code') 
-C...Find masses. Reset K, P and V vectors. 
-      PM1=0. 
-      IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM1=UYMASS(KF1) 
-      PM2=0. 
-      IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
-      IF(MSTU(10).GE.2) PM2=UYMASS(KF2) 
-      PM3=0. 
-      IF(MSTU(10).EQ.1) PM3=P(IPA+2,5) 
-      IF(MSTU(10).GE.2) PM3=UYMASS(KF3) 
-      DO 110 I=IPA,IPA+2 
-      DO 100 J=1,5 
-      K(I,J)=0 
-      P(I,J)=0. 
-      V(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-C...Check flavours. 
-      KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
-      KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
-      KQ3=KCHG(KC3,2)*ISIGN(1,KF3) 
-      IF(MSTU(19).EQ.1) THEN 
-        MSTU(19)=0 
-      ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN 
-      ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR. 
-     &KQ1+KQ3.EQ.4)) THEN 
-      ELSE 
-        CALL LYERRM(2,'(LY3ENT:) unphysical flavour combination') 
-      ENDIF 
-      K(IPA,2)=KF1 
-      K(IPA+1,2)=KF2 
-      K(IPA+2,2)=KF3 
-C...Store partons/particles in K vectors for normal case. 
-      IF(IP.GE.0) THEN 
-        K(IPA,1)=1 
-        IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2 
-        K(IPA+1,1)=1 
-        IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2 
-        K(IPA+2,1)=1 
-C...Store partons in K vectors for parton shower evolution. 
-      ELSE 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA+2,1)=3 
-        KCS=4 
-        IF(KQ1.EQ.-1) KCS=5 
-        K(IPA,KCS)=MSTU(5)*(IPA+1) 
-        K(IPA,9-KCS)=MSTU(5)*(IPA+2) 
-        K(IPA+1,KCS)=MSTU(5)*(IPA+2) 
-        K(IPA+1,9-KCS)=MSTU(5)*IPA 
-        K(IPA+2,KCS)=MSTU(5)*IPA 
-        K(IPA+2,9-KCS)=MSTU(5)*(IPA+1) 
-      ENDIF 
-C...Check kinematics. 
-      MKERR=0 
-      IF(0.5*X1*PECM.LE.PM1.OR.0.5*(2.-X1-X3)*PECM.LE.PM2.OR. 
-     &0.5*X3*PECM.LE.PM3) MKERR=1 
-      PA1=SQRT(MAX(1E-10,(0.5*X1*PECM)**2-PM1**2)) 
-      PA2=SQRT(MAX(1E-10,(0.5*(2.-X1-X3)*PECM)**2-PM2**2)) 
-      PA3=SQRT(MAX(1E-10,(0.5*X3*PECM)**2-PM3**2)) 
-      CTHE2=(PA3**2-PA1**2-PA2**2)/(2.*PA1*PA2) 
-      CTHE3=(PA2**2-PA1**2-PA3**2)/(2.*PA1*PA3) 
-      IF(ABS(CTHE2).GE.1.001.OR.ABS(CTHE3).GE.1.001) MKERR=1 
-      CTHE3=MAX(-1.,MIN(1.,CTHE3)) 
-      IF(MKERR.NE.0) CALL LYERRM(13, 
-     &'(LY3ENT:) unphysical kinematical variable setup') 
-C...Store partons/particles in P vectors. 
-      P(IPA,3)=PA1 
-      P(IPA,4)=SQRT(PA1**2+PM1**2) 
-      P(IPA,5)=PM1 
-      P(IPA+2,1)=PA3*SQRT(1.-CTHE3**2) 
-      P(IPA+2,3)=PA3*CTHE3 
-      P(IPA+2,4)=SQRT(PA3**2+PM3**2) 
-      P(IPA+2,5)=PM3 
-      P(IPA+1,1)=-P(IPA+2,1) 
-      P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3) 
-      P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2) 
-      P(IPA+1,5)=PM2 
-C...Set N. Optionally fragment/decay. 
-      N=IPA+2 
-      IF(IP.EQ.0) CALL LYEXEC 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LY4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14) 
-C...Purpose: to store four partons or particles in their CM frame, with 
-C...the first along the +z axis, the last in the xz plane with x > 0 
-C...and the second having y < 0 and y > 0 with equal probability. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)-3) CALL LYERRM(21, 
-     &'(LY4ENT:) writing outside LUJETS momory') 
-      KC1=LYCOMP(KF1) 
-      KC2=LYCOMP(KF2) 
-      KC3=LYCOMP(KF3) 
-      KC4=LYCOMP(KF4) 
-      IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL LYERRM(12, 
-     &'(LY4ENT:) unknown flavour code') 
-C...Find masses. Reset K, P and V vectors. 
-      PM1=0. 
-      IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM1=UYMASS(KF1) 
-      PM2=0. 
-      IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
-      IF(MSTU(10).GE.2) PM2=UYMASS(KF2) 
-      PM3=0. 
-      IF(MSTU(10).EQ.1) PM3=P(IPA+2,5) 
-      IF(MSTU(10).GE.2) PM3=UYMASS(KF3) 
-      PM4=0. 
-      IF(MSTU(10).EQ.1) PM4=P(IPA+3,5) 
-      IF(MSTU(10).GE.2) PM4=UYMASS(KF4) 
-      DO 110 I=IPA,IPA+3 
-      DO 100 J=1,5 
-      K(I,J)=0 
-      P(I,J)=0. 
-      V(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-C...Check flavours. 
-      KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
-      KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
-      KQ3=KCHG(KC3,2)*ISIGN(1,KF3) 
-      KQ4=KCHG(KC4,2)*ISIGN(1,KF4) 
-      IF(MSTU(19).EQ.1) THEN 
-        MSTU(19)=0 
-      ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN 
-      ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR. 
-     &KQ1+KQ4.EQ.4)) THEN 
-      ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0.) 
-     &THEN 
-      ELSE 
-        CALL LYERRM(2,'(LY4ENT:) unphysical flavour combination') 
-      ENDIF 
-      K(IPA,2)=KF1 
-      K(IPA+1,2)=KF2 
-      K(IPA+2,2)=KF3 
-      K(IPA+3,2)=KF4 
-C...Store partons/particles in K vectors for normal case. 
-      IF(IP.GE.0) THEN 
-        K(IPA,1)=1 
-        IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2 
-        K(IPA+1,1)=1 
-        IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0)) 
-     &  K(IPA+1,1)=2 
-        K(IPA+2,1)=1 
-        IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2 
-        K(IPA+3,1)=1 
-C...Store partons for parton shower evolution from q-g-g-qbar or 
-C...g-g-g-g event. 
-      ELSEIF(KQ1+KQ2.NE.0) THEN 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA+2,1)=3 
-        K(IPA+3,1)=3 
-        KCS=4 
-        IF(KQ1.EQ.-1) KCS=5 
-        K(IPA,KCS)=MSTU(5)*(IPA+1) 
-        K(IPA,9-KCS)=MSTU(5)*(IPA+3) 
-        K(IPA+1,KCS)=MSTU(5)*(IPA+2) 
-        K(IPA+1,9-KCS)=MSTU(5)*IPA 
-        K(IPA+2,KCS)=MSTU(5)*(IPA+3) 
-        K(IPA+2,9-KCS)=MSTU(5)*(IPA+1) 
-        K(IPA+3,KCS)=MSTU(5)*IPA 
-        K(IPA+3,9-KCS)=MSTU(5)*(IPA+2) 
-C...Store partons for parton shower evolution from q-qbar-q-qbar event. 
-      ELSE 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA+2,1)=3 
-        K(IPA+3,1)=3 
-        K(IPA,4)=MSTU(5)*(IPA+1) 
-        K(IPA,5)=K(IPA,4) 
-        K(IPA+1,4)=MSTU(5)*IPA 
-        K(IPA+1,5)=K(IPA+1,4) 
-        K(IPA+2,4)=MSTU(5)*(IPA+3) 
-        K(IPA+2,5)=K(IPA+2,4) 
-        K(IPA+3,4)=MSTU(5)*(IPA+2) 
-        K(IPA+3,5)=K(IPA+3,4) 
-      ENDIF 
-C...Check kinematics. 
-      MKERR=0 
-      IF(0.5*X1*PECM.LE.PM1.OR.0.5*X2*PECM.LE.PM2.OR.0.5*(2.-X1-X2-X4)* 
-     &PECM.LE.PM3.OR.0.5*X4*PECM.LE.PM4) MKERR=1 
-      PA1=SQRT(MAX(1E-10,(0.5*X1*PECM)**2-PM1**2)) 
-      PA2=SQRT(MAX(1E-10,(0.5*X2*PECM)**2-PM2**2)) 
-      PA4=SQRT(MAX(1E-10,(0.5*X4*PECM)**2-PM4**2)) 
-      X24=X1+X2+X4-1.-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2 
-      CTHE4=(X1*X4-2.*X14)*PECM**2/(4.*PA1*PA4) 
-      IF(ABS(CTHE4).GE.1.002) MKERR=1 
-      CTHE4=MAX(-1.,MIN(1.,CTHE4)) 
-      STHE4=SQRT(1.-CTHE4**2) 
-      CTHE2=(X1*X2-2.*X12)*PECM**2/(4.*PA1*PA2) 
-      IF(ABS(CTHE2).GE.1.002) MKERR=1 
-      CTHE2=MAX(-1.,MIN(1.,CTHE2)) 
-      STHE2=SQRT(1.-CTHE2**2) 
-      CPHI2=((X2*X4-2.*X24)*PECM**2-4.*PA2*CTHE2*PA4*CTHE4)/ 
-     &MAX(1E-8*PECM**2,4.*PA2*STHE2*PA4*STHE4) 
-      IF(ABS(CPHI2).GE.1.05) MKERR=1 
-      CPHI2=MAX(-1.,MIN(1.,CPHI2)) 
-      IF(MKERR.EQ.1) CALL LYERRM(13, 
-     &'(LY4ENT:) unphysical kinematical variable setup') 
-C...Store partons/particles in P vectors. 
-      P(IPA,3)=PA1 
-      P(IPA,4)=SQRT(PA1**2+PM1**2) 
-      P(IPA,5)=PM1 
-      P(IPA+3,1)=PA4*STHE4 
-      P(IPA+3,3)=PA4*CTHE4 
-      P(IPA+3,4)=SQRT(PA4**2+PM4**2) 
-      P(IPA+3,5)=PM4 
-      P(IPA+1,1)=PA2*STHE2*CPHI2 
-      P(IPA+1,2)=PA2*STHE2*SQRT(1.-CPHI2**2)*(-1.)**INT(RLY(0)+0.5) 
-      P(IPA+1,3)=PA2*CTHE2 
-      P(IPA+1,4)=SQRT(PA2**2+PM2**2) 
-      P(IPA+1,5)=PM2 
-      P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1) 
-      P(IPA+2,2)=-P(IPA+1,2) 
-      P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3) 
-      P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2) 
-      P(IPA+2,5)=PM3 
-C...Set N. Optionally fragment/decay. 
-      N=IPA+3 
-      IF(IP.EQ.0) CALL LYEXEC 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYJOIN(NJOIN,IJOIN) 
-C...Purpose: to connect a sequence of partons with colour flow indices, 
-C...as required for subsequent shower evolution (or other operations). 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION IJOIN(*) 
-C...Check that partons are of right types to be connected. 
-      IF(NJOIN.LT.2) GOTO 120 
-      KQSUM=0 
-      DO 100 IJN=1,NJOIN 
-      I=IJOIN(IJN) 
-      IF(I.LE.0.OR.I.GT.N) GOTO 120 
-      IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120 
-      KC=LYCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 120 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 120 
-      IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120 
-      IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-      IF(IJN.EQ.1) KQS=KQ 
-  100 CONTINUE 
-      IF(KQSUM.NE.0) GOTO 120 
-C...Connect the partons sequentially (closing for gluon loop). 
-      KCS=(9-KQS)/2 
-      IF(KQS.EQ.2) KCS=INT(4.5+RLY(0)) 
-      DO 110 IJN=1,NJOIN 
-      I=IJOIN(IJN) 
-      K(I,1)=3 
-      IF(IJN.NE.1) IP=IJOIN(IJN-1) 
-      IF(IJN.EQ.1) IP=IJOIN(NJOIN) 
-      IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1) 
-      IF(IJN.EQ.NJOIN) IN=IJOIN(1) 
-      K(I,KCS)=MSTU(5)*IN 
-      K(I,9-KCS)=MSTU(5)*IP 
-      IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0 
-      IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0 
-  110 CONTINUE 
-C...Error exit: no action taken. 
-      RETURN 
-  120 CALL LYERRM(12, 
-     &'(LYJOIN:) given entries can not be joined by one string') 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYGIVE(CHIN) 
-C...Purpose: to set values of commonblock variables (also in PYTHIA!). 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      COMMON/LYDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      COMMON/LYDATR/MRLU(6),RRLU(100) 
-c      DOUBLE PRECISION KFIN,CKIN
-c      COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) 
-c      DOUBLE PRECISION PARP,PARI
-c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) 
-c      DOUBLE PRECISION VINT
-c      COMMON/PYINT1/MINT(400),VINT(400) 
-c      DOUBLE PRECISION KFPR,COEF
-c      COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) 
-c      DOUBLE PRECISION XSFX,SIGH
-c      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) 
-c      DOUBLE PRECISION WIDS
-c      COMMON/PYINT4/MWID(500),WIDS(500,5)
-c      DOUBLE PRECISION XSEC
-c      COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) 
-c      CHARACTER PROC*28 
-c      COMMON/PYINT6/PROC(0:500) 
-c      DOUBLE PRECISION SIGT
-c      COMMON/PYINT7/SIGT(0:6,0:6,0:5) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/,/LYDAT3/,/LYDAT4/,/LYDATR/ 
-c      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/, 
-c     &/PYINT5/,/PYINT6/,/PYINT7/ 
-      CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28, 
-     &CHNEW2*28,CHNAM*4,CHVAR(19)*4,CHALP(2)*26,CHIND*8,CHINI*10, 
-     &CHINR*16 
-      DIMENSION MSVAR(43,8) 
-C...For each variable to be translated give: name, 
-C...integer/real/character, no. of indices, lower&upper index bounds. 
-cfkw 3/29/00 I changed the dimension of CHVAR such that it includes only
-cfkw         variables names from LUxxxx common blocks.
-cfkw         However, I left MSVAR untouched out of fear of screwing it 
-cfkw         up royally !!!
-      DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG', 
-     &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRLU', 
-     &'RRLU'/
-c     ,'MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI', 
-c     &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH', 
-c     &'WIDP','WIDE','WIDS','NGEN','XSEC','PROC','SIGT'/ 
-      DATA ((MSVAR(I,J),J=1,8),I=1,43)/ 1,7*0,  1,2,1,4000,1,5,2*0, 
-     & 2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0, 
-     & 2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0, 
-     & 1,2,1,500,1,3,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0, 
-     & 2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,2000,1,2,2*0, 
-     & 2,1,1,2000,4*0,  1,2,1,2000,1,5,2*0,  3,1,1,500,4*0, 
-     & 1,1,1,6,4*0,  2,1,1,100,4*0, 
-     & 1,7*0,  1,1,1,200,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0, 
-     & 1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0, 
-     & 1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,200,4*0, 
-     & 1,2,1,200,1,2,2*0,  2,2,1,200,1,20,2*0,  1,3,1,40,1,4,1,2, 
-     & 2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0, 
-     & 2,2,21,40,0,40,2*0,  2,2,21,40,0,40,2*0,  2,2,21,40,1,3,2*0, 
-     & 1,2,0,200,1,3,2*0,  2,2,0,200,1,3,2*0,  4,1,0,200,4*0, 
-     & 2,3,0,6,0,6,0,5/ 
-      DATA CHALP/'abcdefghijklmnopqrstuvwxyz', 
-     &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ 
-C...Length of character variable. Subdivide it into instructions. 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      CHBIT=CHIN//' ' 
-      LBIT=101 
-  100 LBIT=LBIT-1 
-      IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100 
-      LTOT=0 
-      DO 110 LCOM=1,LBIT 
-      IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110 
-      LTOT=LTOT+1 
-      CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM) 
-  110 CONTINUE 
-      LLOW=0 
-  120 LHIG=LLOW+1 
-  130 LHIG=LHIG+1 
-      IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130 
-      LBIT=LHIG-LLOW-1 
-      CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1) 
-C...Identify commonblock variable. 
-      LNAM=1 
-  140 LNAM=LNAM+1 
-      IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND. 
-     &LNAM.LE.4) GOTO 140 
-      CHNAM=CHBIT(1:LNAM-1)//' ' 
-      DO 160 LCOM=1,LNAM-1 
-      DO 150 LALP=1,26 
-      IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)= 
-     &CHALP(2)(LALP:LALP) 
-  150 CONTINUE 
-  160 CONTINUE 
-      IVAR=0 
-c      DO 170 IV=1,43
-      DO 170 IV=1,19
-      IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV 
-  170 CONTINUE 
-      IF(IVAR.EQ.0) THEN 
-        CALL LYERRM(18,'(LYGIVE:) do not recognize variable '//CHNAM) 
-        LLOW=LHIG 
-        IF(LLOW.LT.LTOT) GOTO 120 
-        RETURN 
-      ENDIF 
-C...Identify any indices. 
-      I1=0 
-      I2=0 
-      I3=0 
-      NINDX=0 
-      IF(CHBIT(LNAM:LNAM).EQ.'(') THEN 
-        LIND=LNAM 
-  180   LIND=LIND+1 
-        IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 180 
-        CHIND=' ' 
-        IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c'). 
-     &  AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17)) THEN 
-          CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1) 
-          READ(CHIND,'(I8)') KF 
-          I1=LYCOMP(KF) 
-        ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ. 
-     &  'c') THEN 
-          CALL LYERRM(18,'(LYGIVE:) not allowed to use C index for '// 
-     &    CHNAM) 
-          LLOW=LHIG 
-          IF(LLOW.LT.LTOT) GOTO 120 
-          RETURN 
-        ELSE 
-          CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
-          READ(CHIND,'(I8)') I1 
-        ENDIF 
-        LNAM=LIND 
-        IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1 
-        NINDX=1 
-      ENDIF 
-      IF(CHBIT(LNAM:LNAM).EQ.',') THEN 
-        LIND=LNAM 
-  190   LIND=LIND+1 
-        IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190 
-        CHIND=' ' 
-        CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
-        READ(CHIND,'(I8)') I2 
-        LNAM=LIND 
-        IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1 
-        NINDX=2 
-      ENDIF 
-      IF(CHBIT(LNAM:LNAM).EQ.',') THEN 
-        LIND=LNAM 
-  200   LIND=LIND+1 
-        IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200 
-        CHIND=' ' 
-        CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
-        READ(CHIND,'(I8)') I3 
-        LNAM=LIND+1 
-        NINDX=3 
-      ENDIF 
-C...Check that indices allowed. 
-      IERR=0 
-      IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1 
-      IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4))) 
-     &IERR=2 
-      IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6))) 
-     &IERR=3 
-      IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8))) 
-     &IERR=4 
-      IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5 
-      IF(IERR.GE.1) THEN 
-        CALL LYERRM(18,'(LYGIVE:) unallowed indices for '// 
-     &  CHBIT(1:LNAM-1)) 
-        LLOW=LHIG 
-        IF(LLOW.LT.LTOT) GOTO 120 
-        RETURN 
-      ENDIF 
-C...Save old value of variable. 
-      IF(IVAR.EQ.1) THEN 
-        IOLD=N 
-      ELSEIF(IVAR.EQ.2) THEN 
-        IOLD=K(I1,I2) 
-      ELSEIF(IVAR.EQ.3) THEN 
-        ROLD=P(I1,I2) 
-      ELSEIF(IVAR.EQ.4) THEN 
-        ROLD=V(I1,I2) 
-      ELSEIF(IVAR.EQ.5) THEN 
-        IOLD=MSTU(I1) 
-      ELSEIF(IVAR.EQ.6) THEN 
-        ROLD=PARU(I1) 
-      ELSEIF(IVAR.EQ.7) THEN 
-        IOLD=MSTJ(I1) 
-      ELSEIF(IVAR.EQ.8) THEN 
-        ROLD=PARJ(I1) 
-      ELSEIF(IVAR.EQ.9) THEN 
-        IOLD=KCHG(I1,I2) 
-      ELSEIF(IVAR.EQ.10) THEN 
-        ROLD=PMAS(I1,I2) 
-      ELSEIF(IVAR.EQ.11) THEN 
-        ROLD=PARF(I1) 
-      ELSEIF(IVAR.EQ.12) THEN 
-        ROLD=VCKM(I1,I2) 
-      ELSEIF(IVAR.EQ.13) THEN 
-        IOLD=MDCY(I1,I2) 
-      ELSEIF(IVAR.EQ.14) THEN 
-        IOLD=MDME(I1,I2) 
-      ELSEIF(IVAR.EQ.15) THEN 
-        ROLD=BRAT(I1) 
-      ELSEIF(IVAR.EQ.16) THEN 
-        IOLD=KFDP(I1,I2) 
-      ELSEIF(IVAR.EQ.17) THEN 
-        CHOLD=CHAF(I1) 
-      ELSEIF(IVAR.EQ.18) THEN 
-        IOLD=MRLU(I1) 
-      ELSEIF(IVAR.EQ.19) THEN 
-        ROLD=RRLU(I1) 
-cfkw 3/29/00 comment out all variables that exist only in PYxxxx commons
-cfkw         as those commons are commented above anyway.
-c      ELSEIF(IVAR.EQ.20) THEN 
-c        IOLD=MSEL 
-c      ELSEIF(IVAR.EQ.21) THEN 
-c        IOLD=MSUB(I1) 
-c      ELSEIF(IVAR.EQ.22) THEN 
-c        IOLD=KFIN(I1,I2) 
-c      ELSEIF(IVAR.EQ.23) THEN 
-c        ROLD=CKIN(I1) 
-c      ELSEIF(IVAR.EQ.24) THEN 
-c        IOLD=MSTP(I1) 
-c      ELSEIF(IVAR.EQ.25) THEN 
-c        ROLD=PARP(I1) 
-c      ELSEIF(IVAR.EQ.26) THEN 
-c        IOLD=MSTI(I1) 
-c      ELSEIF(IVAR.EQ.27) THEN 
-c        ROLD=PARI(I1) 
-c      ELSEIF(IVAR.EQ.28) THEN 
-c        IOLD=MINT(I1) 
-c      ELSEIF(IVAR.EQ.29) THEN 
-c        ROLD=VINT(I1) 
-c      ELSEIF(IVAR.EQ.30) THEN 
-c        IOLD=ISET(I1) 
-c      ELSEIF(IVAR.EQ.31) THEN 
-c        IOLD=KFPR(I1,I2) 
-c      ELSEIF(IVAR.EQ.32) THEN 
-c        ROLD=COEF(I1,I2) 
-c      ELSEIF(IVAR.EQ.33) THEN 
-c        IOLD=ICOL(I1,I2,I3) 
-c      ELSEIF(IVAR.EQ.34) THEN 
-c        ROLD=XSFX(I1,I2) 
-c      ELSEIF(IVAR.EQ.35) THEN 
-c        IOLD=ISIG(I1,I2) 
-c      ELSEIF(IVAR.EQ.36) THEN 
-c        ROLD=SIGH(I1) 
-c      ELSEIF(IVAR.EQ.37) THEN 
-c        ROLD=WIDP(I1,I2) 
-c      ELSEIF(IVAR.EQ.38) THEN 
-c        ROLD=WIDE(I1,I2) 
-c      ELSEIF(IVAR.EQ.39) THEN 
-c        ROLD=WIDS(I1,I2) 
-c      ELSEIF(IVAR.EQ.40) THEN 
-c        IOLD=NGEN(I1,I2) 
-c      ELSEIF(IVAR.EQ.41) THEN 
-c        ROLD=XSEC(I1,I2) 
-c      ELSEIF(IVAR.EQ.42) THEN 
-c        CHOLD2=PROC(I1) 
-c      ELSEIF(IVAR.EQ.43) THEN 
-c        ROLD=SIGT(I1,I2,I3) 
-      ELSE
-        CALL LYERRM(18,'(LYGIVE:) IVAR screwup '//CHNAM) 
-      ENDIF 
-C...Print current value of variable. Loop back. 
-      IF(LNAM.GE.LBIT) THEN 
-        CHBIT(LNAM:14)=' ' 
-        CHBIT(15:60)=' has the value                                ' 
-        IF(MSVAR(IVAR,1).EQ.1) THEN 
-          WRITE(CHBIT(51:60),'(I10)') IOLD 
-        ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
-          WRITE(CHBIT(47:60),'(F14.5)') ROLD 
-        ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
-          CHBIT(53:60)=CHOLD 
-        ELSE 
-          CHBIT(33:60)=CHOLD 
-        ENDIF 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-        LLOW=LHIG 
-        IF(LLOW.LT.LTOT) GOTO 120 
-        RETURN 
-      ENDIF 
-C...Read in new variable value. 
-      IF(MSVAR(IVAR,1).EQ.1) THEN 
-        CHINI=' ' 
-        CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT) 
-        READ(CHINI,'(I10)') INEW 
-      ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
-        CHINR=' ' 
-        CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT) 
-        READ(CHINR,'(F16.2)') RNEW 
-      ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
-        CHNEW=CHBIT(LNAM+1:LBIT)//' ' 
-      ELSE 
-        CHNEW2=CHBIT(LNAM+1:LBIT)//' ' 
-      ENDIF 
-C...Store new variable value. 
-      IF(IVAR.EQ.1) THEN 
-        N=INEW 
-      ELSEIF(IVAR.EQ.2) THEN 
-        K(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.3) THEN 
-        P(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.4) THEN 
-        V(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.5) THEN 
-        MSTU(I1)=INEW 
-      ELSEIF(IVAR.EQ.6) THEN 
-        PARU(I1)=RNEW 
-      ELSEIF(IVAR.EQ.7) THEN 
-        MSTJ(I1)=INEW 
-      ELSEIF(IVAR.EQ.8) THEN 
-        PARJ(I1)=RNEW 
-      ELSEIF(IVAR.EQ.9) THEN 
-        KCHG(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.10) THEN 
-        PMAS(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.11) THEN 
-        PARF(I1)=RNEW 
-      ELSEIF(IVAR.EQ.12) THEN 
-        VCKM(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.13) THEN 
-        MDCY(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.14) THEN 
-        MDME(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.15) THEN 
-        BRAT(I1)=RNEW 
-      ELSEIF(IVAR.EQ.16) THEN 
-        KFDP(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.17) THEN 
-        CHAF(I1)=CHNEW 
-      ELSEIF(IVAR.EQ.18) THEN 
-        MRLU(I1)=INEW 
-      ELSEIF(IVAR.EQ.19) THEN 
-        RRLU(I1)=RNEW 
-cfkw 3/29/00 comment out all variables that exist only in PYxxxx commons
-cfkw         as those commons are commented above anyway.
-c      ELSEIF(IVAR.EQ.20) THEN 
-c        MSEL=INEW 
-c      ELSEIF(IVAR.EQ.21) THEN 
-c        MSUB(I1)=INEW 
-c      ELSEIF(IVAR.EQ.22) THEN 
-c        KFIN(I1,I2)=INEW 
-c      ELSEIF(IVAR.EQ.23) THEN 
-c        CKIN(I1)=RNEW 
-c      ELSEIF(IVAR.EQ.24) THEN 
-c        MSTP(I1)=INEW 
-c      ELSEIF(IVAR.EQ.25) THEN 
-c        PARP(I1)=RNEW 
-c      ELSEIF(IVAR.EQ.26) THEN 
-c        MSTI(I1)=INEW 
-c      ELSEIF(IVAR.EQ.27) THEN 
-c        PARI(I1)=RNEW 
-c      ELSEIF(IVAR.EQ.28) THEN 
-c        MINT(I1)=INEW 
-c      ELSEIF(IVAR.EQ.29) THEN 
-c        VINT(I1)=RNEW 
-c      ELSEIF(IVAR.EQ.30) THEN 
-c        ISET(I1)=INEW 
-c      ELSEIF(IVAR.EQ.31) THEN 
-c        KFPR(I1,I2)=INEW 
-c      ELSEIF(IVAR.EQ.32) THEN 
-c        COEF(I1,I2)=RNEW 
-c      ELSEIF(IVAR.EQ.33) THEN 
-c        ICOL(I1,I2,I3)=INEW 
-c      ELSEIF(IVAR.EQ.34) THEN 
-c        XSFX(I1,I2)=RNEW 
-c      ELSEIF(IVAR.EQ.35) THEN 
-c        ISIG(I1,I2)=INEW 
-c      ELSEIF(IVAR.EQ.36) THEN 
-c        SIGH(I1)=RNEW 
-c      ELSEIF(IVAR.EQ.37) THEN 
-c        WIDP(I1,I2)=RNEW 
-c      ELSEIF(IVAR.EQ.38) THEN 
-c        WIDE(I1,I2)=RNEW 
-c      ELSEIF(IVAR.EQ.39) THEN 
-c        WIDS(I1,I2)=RNEW 
-c      ELSEIF(IVAR.EQ.40) THEN 
-c        NGEN(I1,I2)=INEW 
-c      ELSEIF(IVAR.EQ.41) THEN 
-c        XSEC(I1,I2)=RNEW 
-c      ELSEIF(IVAR.EQ.42) THEN 
-c        PROC(I1)=CHNEW2 
-c      ELSEIF(IVAR.EQ.43) THEN 
-c        SIGT(I1,I2,I3)=RNEW 
-      ELSE
-        CALL LYERRM(18,'(LYGIVE:) IVAR screwup '//CHNAM) 
-      ENDIF 
-C...Write old and new value. Loop back. 
-      CHBIT(LNAM:14)=' ' 
-      CHBIT(15:60)=' changed from                to               ' 
-      IF(MSVAR(IVAR,1).EQ.1) THEN 
-        WRITE(CHBIT(33:42),'(I10)') IOLD 
-        WRITE(CHBIT(51:60),'(I10)') INEW 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-      ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
-        WRITE(CHBIT(29:42),'(F14.5)') ROLD 
-        WRITE(CHBIT(47:60),'(F14.5)') RNEW 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-      ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
-        CHBIT(35:42)=CHOLD 
-        CHBIT(53:60)=CHNEW 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-      ELSE 
-        CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88) 
-      ENDIF 
-      LLOW=LHIG 
-      IF(LLOW.LT.LTOT) GOTO 120 
-C...Format statement for output on unit MSTU(11) (by default 6). 
- 5000 FORMAT(5X,A60) 
- 5100 FORMAT(5X,A88) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYEXEC 
-C...Purpose: to administrate the fragmentation and decay chain. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/,/LYDAT3/ 
-      DIMENSION PS(2,6) 
-C...Initialize and reset. 
-      MSTU(24)=0 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      MSTU(31)=MSTU(31)+1 
-      MSTU(1)=0 
-      MSTU(2)=0 
-      MSTU(3)=0 
-      IF(MSTU(17).LE.0) MSTU(90)=0 
-      MCONS=1 
-C...Sum up momentum, energy and charge for starting entries. 
-      NSAV=N 
-      DO 110 I=1,2 
-      DO 100 J=1,6 
-      PS(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-      DO 130 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130 
-      DO 120 J=1,4 
-      PS(1,J)=PS(1,J)+P(I,J) 
-  120 CONTINUE 
-      PS(1,6)=PS(1,6)+LYCHGE(K(I,2)) 
-  130 CONTINUE 
-      PARU(21)=PS(1,4) 
-C...Prepare system for subsequent fragmentation/decay. 
-      CALL LYPREP(0) 
-C...Loop through jet fragmentation and particle decays. 
-      MBE=0 
-  140 MBE=MBE+1 
-      IP=0 
-  150 IP=IP+1 
-      KC=0 
-      IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=LYCOMP(K(IP,2)) 
-      IF(KC.EQ.0) THEN 
-C...Particle decay if unstable and allowed. Save long-lived particle 
-C...decays until second pass after Bose-Einstein effects. 
-      ELSEIF(KCHG(KC,2).EQ.0) THEN 
-        IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE 
-     &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311)) 
-     &  CALL LYDECY(IP) 
-C...Decay products may develop a shower. 
-        IF(MSTJ(92).GT.0) THEN 
-          IP1=MSTJ(92) 
-          QMAX=SQRT(MAX(0.,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1, 
-     &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2)) 
-          CALL LYSHOW(IP1,IP1+1,QMAX) 
-          CALL LYPREP(IP1) 
-          MSTJ(92)=0 
-        ELSEIF(MSTJ(92).LT.0) THEN 
-          IP1=-MSTJ(92) 
-          CALL LYSHOW(IP1,-3,P(IP,5)) 
-          CALL LYPREP(IP1) 
-          MSTJ(92)=0 
-        ENDIF 
-C...Jet fragmentation: string or independent fragmentation. 
-      ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN 
-        MFRAG=MSTJ(1) 
-        IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2 
-        IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN 
-          IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND. 
-     &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN 
-            IF(KCHG(LYCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG) 
-          ENDIF 
-        ENDIF 
-        IF(MFRAG.EQ.1) CALL LYSTRF(IP) 
-        IF(MFRAG.EQ.2) CALL LYINDF(IP) 
-        IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0 
-        IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0 
-      ENDIF 
-C...Loop back if enough space left in LUJETS and no error abort. 
-      IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN 
-      ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN 
-        GOTO 150 
-      ELSEIF(IP.LT.N) THEN 
-        CALL LYERRM(11,'(LYEXEC:) no more memory left in LUJETS') 
-      ENDIF 
-C...Include simple Bose-Einstein effect parametrization if desired. 
-      IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN 
-        CALL LYBOEI(NSAV) 
-        GOTO 140 
-      ENDIF 
-C...Check that momentum, energy and charge were conserved. 
-      DO 170 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170 
-      DO 160 J=1,4 
-      PS(2,J)=PS(2,J)+P(I,J) 
-  160 CONTINUE 
-      PS(2,6)=PS(2,6)+LYCHGE(K(I,2)) 
-  170 CONTINUE 
-      PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)- 
-     &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1.+ABS(PS(2,4))+ABS(PS(1,4))) 
-      IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL LYERRM(15, 
-     &'(LYEXEC:) four-momentum was not conserved') 
-      IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1) CALL LYERRM(15, 
-     &'(LYEXEC:) charge was not conserved') 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYPREP(IP) 
-C...Purpose: to rearrange partons along strings, to allow small systems 
-C...to collapse into one or two particles and to check flavours. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/,/LYDAT3/ 
-      DIMENSION DPS(5),DPC(5),UE(3) 
-C...Rearrange parton shower product listing along strings: begin loop. 
-      I1=N 
-      DO 130 MQGST=1,2 
-      DO 120 I=MAX(1,IP),N 
-      IF(K(I,1).NE.3) GOTO 120 
-      KC=LYCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 120 
-      KQ=KCHG(KC,2) 
-      IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 120 
-C...Pick up loose string end. 
-      KCS=4 
-      IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5 
-      IA=I 
-      NSTP=0 
-  100 NSTP=NSTP+1 
-      IF(NSTP.GT.4*N) THEN 
-        CALL LYERRM(14,'(LYPREP:) caught in infinite loop') 
-        RETURN 
-      ENDIF 
-C...Copy undecayed parton. 
-      IF(K(IA,1).EQ.3) THEN 
-        IF(I1.GE.MSTU(4)-MSTU(32)-5) THEN 
-          CALL LYERRM(11,'(LYPREP:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        I1=I1+1 
-        K(I1,1)=2 
-        IF(NSTP.GE.2.AND.IABS(K(IA,2)).NE.21) K(I1,1)=1 
-        K(I1,2)=K(IA,2) 
-        K(I1,3)=IA 
-        K(I1,4)=0 
-        K(I1,5)=0 
-        DO 110 J=1,5 
-        P(I1,J)=P(IA,J) 
-        V(I1,J)=V(IA,J) 
-  110   CONTINUE 
-        K(IA,1)=K(IA,1)+10 
-        IF(K(I1,1).EQ.1) GOTO 120 
-      ENDIF 
-C...Go to next parton in colour space. 
-      IB=IA 
-      IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5)) 
-     &.NE.0) THEN 
-        IA=MOD(K(IB,KCS),MSTU(5)) 
-        K(IB,KCS)=K(IB,KCS)+MSTU(5)**2 
-        MREV=0 
-      ELSE 
-        IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),MSTU(5)) 
-     &  .EQ.0) KCS=9-KCS 
-        IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5)) 
-        K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2 
-        MREV=1 
-      ENDIF 
-      IF(IA.LE.0.OR.IA.GT.N) THEN 
-        CALL LYERRM(12,'(LYPREP:) colour rearrangement failed') 
-        RETURN 
-      ENDIF 
-      IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5), 
-     &MSTU(5)).EQ.IB) THEN 
-        IF(MREV.EQ.1) KCS=9-KCS 
-        IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS 
-        K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2 
-      ELSE 
-        IF(MREV.EQ.0) KCS=9-KCS 
-        IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS 
-        K(IA,KCS)=K(IA,KCS)+MSTU(5)**2 
-      ENDIF 
-      IF(IA.NE.I) GOTO 100 
-      K(I1,1)=1 
-  120 CONTINUE 
-  130 CONTINUE 
-      N=I1 
-      IF(MSTJ(14).LT.0) RETURN 
-C...Find lowest-mass colour singlet jet system, OK if above threshold. 
-      IF(MSTJ(14).EQ.0) GOTO 320 
-      NS=N 
-  140 NSIN=N-NS 
-      PDM=1.+PARJ(32) 
-      IC=0 
-      DO 190 I=MAX(1,IP),NS 
-      IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN 
-      ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN 
-        NSIN=NSIN+1 
-        IC=I 
-        DO 150 J=1,4 
-        DPS(J)=P(I,J) 
-  150   CONTINUE 
-        MSTJ(93)=1 
-        DPS(5)=UYMASS(K(I,2)) 
-      ELSEIF(K(I,1).EQ.2) THEN 
-        DO 160 J=1,4 
-        DPS(J)=DPS(J)+P(I,J) 
-  160   CONTINUE 
-      ELSEIF(IC.NE.0.AND.KCHG(LYCOMP(K(I,2)),2).NE.0) THEN 
-        DO 170 J=1,4 
-        DPS(J)=DPS(J)+P(I,J) 
-  170   CONTINUE 
-        MSTJ(93)=1 
-        DPS(5)=DPS(5)+UYMASS(K(I,2)) 
-        PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-DPS(5) 
-        IF(PD.LT.PDM) THEN 
-          PDM=PD 
-          DO 180 J=1,5 
-          DPC(J)=DPS(J) 
-  180     CONTINUE 
-          IC1=IC 
-          IC2=I 
-        ENDIF 
-        IC=0 
-      ELSE 
-        NSIN=NSIN+1 
-      ENDIF 
-  190 CONTINUE 
-      IF(PDM.GE.PARJ(32)) GOTO 320 
-C...Fill small-mass system as cluster. 
-      NSAV=N 
-      PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2)) 
-      K(N+1,1)=11 
-      K(N+1,2)=91 
-      K(N+1,3)=IC1 
-      K(N+1,4)=N+2 
-      K(N+1,5)=N+3 
-      P(N+1,1)=DPC(1) 
-      P(N+1,2)=DPC(2) 
-      P(N+1,3)=DPC(3) 
-      P(N+1,4)=DPC(4) 
-      P(N+1,5)=PECM 
-C...Form two particles from flavours of lowest-mass system, if feasible. 
-      K(N+2,1)=1 
-      K(N+3,1)=1 
-      IF(MSTU(16).NE.2) THEN 
-        K(N+2,3)=N+1 
-        K(N+3,3)=N+1 
-      ELSE 
-        K(N+2,3)=IC1 
-        K(N+3,3)=IC2 
-      ENDIF 
-      K(N+2,4)=0 
-      K(N+3,4)=0 
-      K(N+2,5)=0 
-      K(N+3,5)=0 
-      IF(IABS(K(IC1,2)).NE.21) THEN 
-        KC1=LYCOMP(K(IC1,2)) 
-        KC2=LYCOMP(K(IC2,2)) 
-        IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 320 
-        KQ1=KCHG(KC1,2)*ISIGN(1,K(IC1,2)) 
-        KQ2=KCHG(KC2,2)*ISIGN(1,K(IC2,2)) 
-        IF(KQ1+KQ2.NE.0) GOTO 320 
-  200   CALL LYKFDI(K(IC1,2),0,KFLN,K(N+2,2)) 
-        CALL LYKFDI(K(IC2,2),-KFLN,KFLDMP,K(N+3,2)) 
-        IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 200 
-      ELSE 
-        IF(IABS(K(IC2,2)).NE.21) GOTO 320 
-  210   CALL LYKFDI(1+INT((2.+PARJ(2))*RLY(0)),0,KFLN,KFDMP) 
-        CALL LYKFDI(KFLN,0,KFLM,K(N+2,2)) 
-        CALL LYKFDI(-KFLN,-KFLM,KFLDMP,K(N+3,2)) 
-        IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 210 
-      ENDIF 
-      P(N+2,5)=UYMASS(K(N+2,2)) 
-      P(N+3,5)=UYMASS(K(N+3,2)) 
-      IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM.AND.NSIN.EQ.1) GOTO 320 
-      IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) GOTO 260 
-C...Perform two-particle decay of jet system, if possible. 
-      IF(PECM.GE.0.02*DPC(4)) THEN 
-        PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2- 
-     &  (P(N+2,5)-P(N+3,5))**2))/(2.*PECM) 
-        UE(3)=2.*RLY(0)-1. 
-        PHI=PARU(2)*RLY(0) 
-        UE(1)=SQRT(1.-UE(3)**2)*COS(PHI) 
-        UE(2)=SQRT(1.-UE(3)**2)*SIN(PHI) 
-        DO 220 J=1,3 
-        P(N+2,J)=PA*UE(J) 
-        P(N+3,J)=-PA*UE(J) 
-  220   CONTINUE 
-        P(N+2,4)=SQRT(PA**2+P(N+2,5)**2) 
-        P(N+3,4)=SQRT(PA**2+P(N+3,5)**2) 
-        MSTU(33)=1 
-        CALL LUDBRB(N+2,N+3,0.,0.,DPC(1)/DPC(4),DPC(2)/DPC(4), 
-     &  DPC(3)/DPC(4)) 
-      ELSE 
-        NP=0 
-        DO 230 I=IC1,IC2 
-        IF(K(I,1).EQ.1.OR.K(I,1).EQ.2) NP=NP+1 
-  230   CONTINUE 
-        HA=P(IC1,4)*P(IC2,4)-P(IC1,1)*P(IC2,1)-P(IC1,2)*P(IC2,2)- 
-     &  P(IC1,3)*P(IC2,3) 
-        IF(NP.GE.3.OR.HA.LE.1.25*P(IC1,5)*P(IC2,5)) GOTO 260 
-        HD1=0.5*(P(N+2,5)**2-P(IC1,5)**2) 
-        HD2=0.5*(P(N+3,5)**2-P(IC2,5)**2) 
-        HR=SQRT(MAX(0.,((HA-HD1-HD2)**2-(P(N+2,5)*P(N+3,5))**2)/ 
-     &  (HA**2-(P(IC1,5)*P(IC2,5))**2)))-1. 
-        HC=P(IC1,5)**2+2.*HA+P(IC2,5)**2 
-        HK1=((P(IC2,5)**2+HA)*HR+HD1-HD2)/HC 
-        HK2=((P(IC1,5)**2+HA)*HR+HD2-HD1)/HC 
-        DO 240 J=1,4 
-        P(N+2,J)=(1.+HK1)*P(IC1,J)-HK2*P(IC2,J) 
-        P(N+3,J)=(1.+HK2)*P(IC2,J)-HK1*P(IC1,J) 
-  240   CONTINUE 
-      ENDIF 
-      DO 250 J=1,4 
-      V(N+1,J)=V(IC1,J) 
-      V(N+2,J)=V(IC1,J) 
-      V(N+3,J)=V(IC2,J) 
-  250 CONTINUE 
-      V(N+1,5)=0. 
-      V(N+2,5)=0. 
-      V(N+3,5)=0. 
-      N=N+3 
-      GOTO 300 
-C...Else form one particle from the flavours available, if possible. 
-  260 K(N+1,5)=N+2 
-      IF(IABS(K(IC1,2)).GT.100.AND.IABS(K(IC2,2)).GT.100) THEN 
-        GOTO 320 
-      ELSEIF(IABS(K(IC1,2)).NE.21) THEN 
-        CALL LYKFDI(K(IC1,2),K(IC2,2),KFLDMP,K(N+2,2)) 
-      ELSE 
-        KFLN=1+INT((2.+PARJ(2))*RLY(0)) 
-        CALL LYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2)) 
-      ENDIF 
-      IF(K(N+2,2).EQ.0) GOTO 260 
-      P(N+2,5)=UYMASS(K(N+2,2)) 
-C...Find parton/particle which combines to largest extra mass. 
-      IR=0 
-      HA=0. 
-      HSM=0. 
-      DO 280 MCOMB=1,3 
-      IF(IR.NE.0) GOTO 280 
-      DO 270 I=MAX(1,IP),N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2 
-     &.AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 270 
-      IF(MCOMB.EQ.1) KCI=LYCOMP(K(I,2)) 
-      IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 270 
-      IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 270 
-      IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100) 
-     &GOTO 270 
-      HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3) 
-      HSR=2.*HCR+PECM**2-P(N+2,5)**2-2.*P(N+2,5)*P(I,5) 
-      IF(HSR.GT.HSM) THEN 
-        IR=I 
-        HA=HCR 
-        HSM=HSR 
-      ENDIF 
-  270 CONTINUE 
-  280 CONTINUE 
-C...Shuffle energy and momentum to put new particle on mass shell. 
-      IF(IR.NE.0) THEN 
-        HB=PECM**2+HA 
-        HC=P(N+2,5)**2+HA 
-        HD=P(IR,5)**2+HA 
-        HK2=0.5*(HB*SQRT(MAX(0.,((HB+HC)**2-4.*(HB+HD)*P(N+2,5)**2)/ 
-     &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD) 
-        HK1=(0.5*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB 
-        DO 290 J=1,4 
-        P(N+2,J)=(1.+HK1)*DPC(J)-HK2*P(IR,J) 
-        P(IR,J)=(1.+HK2)*P(IR,J)-HK1*DPC(J) 
-        V(N+1,J)=V(IC1,J) 
-        V(N+2,J)=V(IC1,J) 
-  290   CONTINUE 
-        V(N+1,5)=0. 
-        V(N+2,5)=0. 
-        N=N+2 
-      ELSE 
-        CALL LYERRM(3,'(LYPREP:) no match for collapsing cluster') 
-        RETURN 
-      ENDIF 
-C...Mark collapsed system and store daughter pointers. Iterate. 
-  300 DO 310 I=IC1,IC2 
-      IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.KCHG(LYCOMP(K(I,2)),2).NE.0) 
-     &THEN 
-        K(I,1)=K(I,1)+10 
-        IF(MSTU(16).NE.2) THEN 
-          K(I,4)=NSAV+1 
-          K(I,5)=NSAV+1 
-        ELSE 
-          K(I,4)=NSAV+2 
-          K(I,5)=N 
-        ENDIF 
-      ENDIF 
-  310 CONTINUE 
-      IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 140 
-C...Check flavours and invariant masses in parton systems. 
-  320 NP=0 
-      KFN=0 
-      KQS=0 
-      NJU=0
-      DO 330 J=1,5 
-      DPS(J)=0. 
-  330 CONTINUE 
-      DO 360 I=MAX(1,IP),N 
-      IF(K(I,1).EQ.41) NJU=NJU+1
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 360 
-      KC=LYCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 360 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 360 
-      NP=NP+1 
-      IF(KQ.NE.2) THEN 
-        KFN=KFN+1 
-        KQS=KQS+KQ 
-        MSTJ(93)=1 
-        DPS(5)=DPS(5)+UYMASS(K(I,2)) 
-      ENDIF 
-      DO 340 J=1,4 
-      DPS(J)=DPS(J)+P(I,J) 
-  340 CONTINUE 
-      IF(K(I,1).EQ.1) THEN 
-        NFERR=0
-        IF(NJU.EQ.0.AND.NP.NE.1) THEN
-          IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1
-        ELSEIF(NJU.EQ.1) THEN
-          IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1
-        ELSEIF(NJU.EQ.2) THEN
-          IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1
-        ELSEIF(NJU.GE.3) THEN
-          NFERR=1
-        ENDIF
-        IF(NFERR.EQ.1) CALL 
-     &  LYERRM(2,'(LYPREP:) unphysical flavour combination') 
-        IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT. 
-     &  (0.9*PARJ(32)+DPS(5))**2) CALL LYERRM(3, 
-     &  '(LYPREP:) too small mass in jet system') 
-        NP=0 
-        KFN=0 
-        KQS=0 
-        NJU=0
-        DO 350 J=1,5 
-        DPS(J)=0. 
-  350   CONTINUE 
-      ENDIF 
-  360 CONTINUE 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYSTRF(IP) 
-C...Purpose: to handle the fragmentation of an arbitrary colour singlet 
-C...jet system according to the Lund string fragmentation model. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2), 
-     &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(3),PJU(5,5), 
-     &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8) 
-C...Function: four-product of two vectors. 
-      FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3) 
-      DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)- 
-     &DP(I,3)*DP(J,3) 
-C...Reset counters. Identify parton system. 
-      MSTJ(91)=0 
-      NSAV=N 
-      MSTU90=MSTU(90) 
-      NP=0 
-      KQSUM=0 
-      DO 100 J=1,5 
-      DPS(J)=0D0 
-  100 CONTINUE 
-      MJU(1)=0 
-      MJU(2)=0 
-      I=IP-1 
-  110 I=I+1 
-      IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN 
-        CALL LYERRM(12,'(LYSTRF:) failed to reconstruct jet system') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110 
-      KC=LYCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 110 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 110 
-      IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYSTRF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Take copy of partons to be considered. Check flavour sum. 
-      NP=NP+1 
-      DO 120 J=1,5 
-      K(N+NP,J)=K(I,J) 
-      P(N+NP,J)=P(I,J) 
-      IF(J.NE.4) DPS(J)=DPS(J)+P(I,J) 
-  120 CONTINUE 
-      DPS(4)=DPS(4)+SQRT(DBLE(P(I,1))**2+DBLE(P(I,2))**2+ 
-     &DBLE(P(I,3))**2+DBLE(P(I,5))**2) 
-      K(N+NP,3)=I 
-      IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-      IF(K(I,1).EQ.41) THEN 
-        KQSUM=KQSUM+2*KQ 
-        IF(KQSUM.EQ.KQ) MJU(1)=N+NP 
-        IF(KQSUM.NE.KQ) MJU(2)=N+NP 
-      ENDIF 
-      IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110 
-      IF(KQSUM.NE.0) THEN 
-        CALL LYERRM(12,'(LYSTRF:) unphysical flavour combination') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Boost copied system to CM frame (for better numerical precision). 
-      IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN 
-        MBST=0 
-        MSTU(33)=1 
-        CALL LUDBRB(N+1,N+NP,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4), 
-     &  -DPS(3)/DPS(4)) 
-      ELSE 
-        MBST=1 
-        HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3))) 
-        DO 130 I=N+1,N+NP 
-        HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2 
-        IF(P(I,3).GT.0.) THEN 
-          HHPEZ=(P(I,4)+P(I,3))/HHBZ 
-          P(I,3)=0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ELSE 
-          HHPEZ=(P(I,4)-P(I,3))*HHBZ 
-          P(I,3)=-0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ENDIF 
-  130   CONTINUE 
-      ENDIF 
-C...Search for very nearby partons that may be recombined. 
-      NTRYR=0 
-      PARU12=PARU(12) 
-      PARU13=PARU(13) 
-      MJU(3)=MJU(1) 
-      MJU(4)=MJU(2) 
-      NR=NP 
-  140 IF(NR.GE.3) THEN 
-        PDRMIN=2.*PARU12 
-        DO 150 I=N+1,N+NR 
-        IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150 
-        I1=I+1 
-        IF(I.EQ.N+NR) I1=N+1 
-        IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150 
-        IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21) 
-     &  GOTO 150 
-        IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21) GOTO 150 
-        PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+ 
-     &  P(I1,2)**2+P(I1,3)**2)) 
-        PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3) 
-        PDR=4.*(PAP-PVP)**2/MAX(1E-6,PARU13**2*PAP+2.*(PAP-PVP)) 
-        IF(PDR.LT.PDRMIN) THEN 
-          IR=I 
-          PDRMIN=PDR 
-        ENDIF 
-  150   CONTINUE 
-C...Recombine very nearby partons to avoid machine precision problems. 
-        IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN 
-          DO 160 J=1,4 
-          P(N+1,J)=P(N+1,J)+P(N+NR,J) 
-  160     CONTINUE 
-          P(N+1,5)=SQRT(MAX(0.,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2- 
-     &    P(N+1,3)**2)) 
-          NR=NR-1 
-          GOTO 140 
-        ELSEIF(PDRMIN.LT.PARU12) THEN 
-          DO 170 J=1,4 
-          P(IR,J)=P(IR,J)+P(IR+1,J) 
-  170     CONTINUE 
-          P(IR,5)=SQRT(MAX(0.,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2- 
-     &    P(IR,3)**2)) 
-          DO 190 I=IR+1,N+NR-1 
-          K(I,2)=K(I+1,2) 
-          DO 180 J=1,5 
-          P(I,J)=P(I+1,J) 
-  180     CONTINUE 
-  190     CONTINUE 
-          IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2) 
-          NR=NR-1 
-          IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1 
-          IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1 
-          GOTO 140 
-        ENDIF 
-      ENDIF 
-      NTRYR=NTRYR+1 
-C...Reset particle counter. Skip ahead if no junctions are present; 
-C...this is usually the case! 
-      NRS=MAX(5*NR+11,NP) 
-      NTRY=0 
-  200 NTRY=NTRY+1 
-      IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
-        PARU12=4.*PARU12 
-        PARU13=2.*PARU13 
-        GOTO 140 
-      ELSEIF(NTRY.GT.100) THEN 
-        CALL LYERRM(14,'(LYSTRF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=N+NRS 
-      MSTU(90)=MSTU90 
-      IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 580 
-      DO 570 JT=1,2 
-      NJS(JT)=0 
-      IF(MJU(JT).EQ.0) GOTO 570 
-      JS=3-2*JT 
-C...Find and sum up momentum on three sides of junction. Check flavours. 
-      DO 220 IU=1,3 
-      IJU(IU)=0 
-      DO 210 J=1,5 
-      PJU(IU,J)=0. 
-  210 CONTINUE 
-  220 CONTINUE 
-      IU=0 
-      DO 240 I1=N+1+(JT-1)*(NR-1),N+NR+(JT-1)*(1-NR),JS 
-      IF(K(I1,2).NE.21.AND.IU.LE.2) THEN 
-        IU=IU+1 
-        IJU(IU)=I1 
-      ENDIF 
-      DO 230 J=1,4 
-      PJU(IU,J)=PJU(IU,J)+P(I1,J) 
-  230 CONTINUE 
-  240 CONTINUE 
-      DO 250 IU=1,3 
-      PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2) 
-  250 CONTINUE 
-      IF(K(IJU(3),2)/100.NE.10*K(IJU(1),2)+K(IJU(2),2).AND. 
-     &K(IJU(3),2)/100.NE.10*K(IJU(2),2)+K(IJU(1),2)) THEN 
-        CALL LYERRM(12,'(LYSTRF:) unphysical flavour combination') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Calculate (approximate) boost to rest frame of junction. 
-      T12=(PJU(1,1)*PJU(2,1)+PJU(1,2)*PJU(2,2)+PJU(1,3)*PJU(2,3))/ 
-     &(PJU(1,5)*PJU(2,5)) 
-      T13=(PJU(1,1)*PJU(3,1)+PJU(1,2)*PJU(3,2)+PJU(1,3)*PJU(3,3))/ 
-     &(PJU(1,5)*PJU(3,5)) 
-      T23=(PJU(2,1)*PJU(3,1)+PJU(2,2)*PJU(3,2)+PJU(2,3)*PJU(3,3))/ 
-     &(PJU(2,5)*PJU(3,5)) 
-      T11=SQRT((2./3.)*(1.-T12)*(1.-T13)/(1.-T23)) 
-      T22=SQRT((2./3.)*(1.-T12)*(1.-T23)/(1.-T13)) 
-      TSQ=SQRT((2.*T11*T22+T12-1.)*(1.+T12)) 
-      T1F=(TSQ-T22*(1.+T12))/(1.-T12**2) 
-      T2F=(TSQ-T11*(1.+T12))/(1.-T12**2) 
-      DO 260 J=1,3 
-      TJU(J)=-(T1F*PJU(1,J)/PJU(1,5)+T2F*PJU(2,J)/PJU(2,5)) 
-  260 CONTINUE 
-      TJU(4)=SQRT(1.+TJU(1)**2+TJU(2)**2+TJU(3)**2) 
-      DO 270 IU=1,3 
-      PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)- 
-     &TJU(3)*PJU(IU,3) 
-  270 CONTINUE 
-C...Put junction at rest if motion could give inconsistencies. 
-      IF(PJU(1,5)+PJU(2,5).GT.PJU(1,4)+PJU(2,4)) THEN 
-        DO 280 J=1,3 
-        TJU(J)=0. 
-  280   CONTINUE 
-        TJU(4)=1. 
-        PJU(1,5)=PJU(1,4) 
-        PJU(2,5)=PJU(2,4) 
-        PJU(3,5)=PJU(3,4) 
-      ENDIF 
-C...Start preparing for fragmentation of two strings from junction. 
-      ISTA=I 
-      DO 550 IU=1,2 
-      NS=JS*(IJU(IU+1)-IJU(IU)) 
-C...Junction strings: find longitudinal string directions. 
-      DO 310 IS=1,NS 
-      IS1=IJU(IU)+IS-1 
-      IS2=IJU(IU)+IS 
-      DO 290 J=1,5 
-      DP(1,J)=0.5*P(IS1,J) 
-      IF(IS.EQ.1) DP(1,J)=P(IS1,J) 
-      DP(2,J)=0.5*P(IS2,J) 
-      IF(IS.EQ.NS) DP(2,J)=-PJU(IU,J) 
-  290 CONTINUE 
-      IF(IS.EQ.NS) DP(2,4)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2) 
-      IF(IS.EQ.NS) DP(2,5)=0. 
-      DP(3,5)=DFOUR(1,1) 
-      DP(4,5)=DFOUR(2,2) 
-      DHKC=DFOUR(1,2) 
-      IF(DP(3,5)+2.*DHKC+DP(4,5).LE.0.) THEN 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DP(3,5)=0D0 
-        DP(4,5)=0D0 
-        DHKC=DFOUR(1,2) 
-      ENDIF 
-      DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5)) 
-      DHK1=0.5*((DP(4,5)+DHKC)/DHKS-1.) 
-      DHK2=0.5*((DP(3,5)+DHKC)/DHKS-1.) 
-      IN1=N+NR+4*IS-3 
-      P(IN1,5)=SQRT(DP(3,5)+2.*DHKC+DP(4,5)) 
-      DO 300 J=1,4 
-      P(IN1,J)=(1.+DHK1)*DP(1,J)-DHK2*DP(2,J) 
-      P(IN1+1,J)=(1.+DHK2)*DP(2,J)-DHK1*DP(1,J) 
-  300 CONTINUE 
-  310 CONTINUE 
-C...Junction strings: initialize flavour, momentum and starting pos. 
-      ISAV=I 
-      MSTU91=MSTU(90) 
-  320 NTRY=NTRY+1 
-      IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
-        PARU12=4.*PARU12 
-        PARU13=2.*PARU13 
-        GOTO 140 
-      ELSEIF(NTRY.GT.100) THEN 
-        CALL LYERRM(14,'(LYSTRF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=ISAV 
-      MSTU(90)=MSTU91 
-      IRANKJ=0 
-      IE(1)=K(N+1+(JT/2)*(NP-1),3) 
-      IN(4)=N+NR+1 
-      IN(5)=IN(4)+1 
-      IN(6)=N+NR+4*NS+1 
-      DO 340 JQ=1,2 
-      DO 330 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4 
-      P(IN1,1)=2-JQ 
-      P(IN1,2)=JQ-1 
-      P(IN1,3)=1. 
-  330 CONTINUE 
-  340 CONTINUE 
-      KFL(1)=K(IJU(IU),2) 
-      PX(1)=0. 
-      PY(1)=0. 
-      GAM(1)=0. 
-      DO 350 J=1,5 
-      PJU(IU+3,J)=0. 
-  350 CONTINUE 
-C...Junction strings: find initial transverse directions. 
-      DO 360 J=1,4 
-      DP(1,J)=P(IN(4),J) 
-      DP(2,J)=P(IN(4)+1,J) 
-      DP(3,J)=0. 
-      DP(4,J)=0. 
-  360 CONTINUE 
-      DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-      DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-      DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-      DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-      DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-      IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-      IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-      IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-      IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-      DHC12=DFOUR(1,2) 
-      DHCX1=DFOUR(3,1)/DHC12 
-      DHCX2=DFOUR(3,2)/DHC12 
-      DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-      DHCY1=DFOUR(4,1)/DHC12 
-      DHCY2=DFOUR(4,2)/DHC12 
-      DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-      DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-      DO 370 J=1,4 
-      DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-      P(IN(6),J)=DP(3,J) 
-      P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &DHCYX*DP(3,J)) 
-  370 CONTINUE 
-C...Junction strings: produce new particle, origin. 
-  380 I=I+1 
-      IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYSTRF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IRANKJ=IRANKJ+1 
-      K(I,1)=1 
-      K(I,3)=IE(1) 
-      K(I,4)=0 
-      K(I,5)=0 
-C...Junction strings: generate flavour, hadron, pT, z and Gamma. 
-  390 CALL LYKFDI(KFL(1),0,KFL(3),K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 320 
-      IF(MSTJ(12).GE.3.AND.IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND. 
-     &IABS(KFL(3)).GT.10) THEN 
-        IF(RLY(0).GT.PARJ(19)) GOTO 390 
-      ENDIF 
-      P(I,5)=UYMASS(K(I,2)) 
-      CALL LYPTDI(KFL(1),PX(3),PY(3)) 
-      PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2 
-      CALL LYZDIS(KFL(1),KFL(3),PR(1),Z) 
-      IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND. 
-     &MSTU(90).LT.8) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I 
-        PARU(90+MSTU(90))=Z 
-      ENDIF 
-      GAM(3)=(1.-Z)*(GAM(1)+PR(1)/Z) 
-      DO 400 J=1,3 
-      IN(J)=IN(3+J) 
-  400 CONTINUE 
-C...Junction strings: stepping within or from 'low' string region easy. 
-      IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)* 
-     &P(IN(1),5)**2.GE.PR(1)) THEN 
-        P(IN(1)+2,4)=Z*P(IN(1)+2,3) 
-        P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2) 
-        DO 410 J=1,4 
-        P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J) 
-  410   CONTINUE 
-        GOTO 500 
-      ELSEIF(IN(1)+1.EQ.IN(2)) THEN 
-        P(IN(2)+2,4)=P(IN(2)+2,3) 
-        P(IN(2)+2,1)=1. 
-        IN(2)=IN(2)+4 
-        IF(IN(2).GT.N+NR+4*NS) GOTO 320 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(1)+2,4)=P(IN(1)+2,3) 
-          P(IN(1)+2,1)=0. 
-          IN(1)=IN(1)+4 
-        ENDIF 
-      ENDIF 
-C...Junction strings: find new transverse directions. 
-  420 IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR. 
-     &IN(1).GT.IN(2)) GOTO 320 
-      IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN 
-        DO 430 J=1,4 
-        DP(1,J)=P(IN(1),J) 
-        DP(2,J)=P(IN(2),J) 
-        DP(3,J)=0. 
-        DP(4,J)=0. 
-  430   CONTINUE 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DHC12=DFOUR(1,2) 
-        IF(DHC12.LE.1E-2) THEN 
-          P(IN(1)+2,4)=P(IN(1)+2,3) 
-          P(IN(1)+2,1)=0. 
-          IN(1)=IN(1)+4 
-          GOTO 420 
-        ENDIF 
-        IN(3)=N+NR+4*NS+5 
-        DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-        DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-        DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-        IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-        IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-        IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-        IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-        DHCX1=DFOUR(3,1)/DHC12 
-        DHCX2=DFOUR(3,2)/DHC12 
-        DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-        DHCY1=DFOUR(4,1)/DHC12 
-        DHCY2=DFOUR(4,2)/DHC12 
-        DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-        DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-        DO 440 J=1,4 
-        DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-        P(IN(3),J)=DP(3,J) 
-        P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &  DHCYX*DP(3,J)) 
-  440   CONTINUE 
-C...Express pT with respect to new axes, if sensible. 
-        PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3))) 
-        PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1)) 
-        IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01) THEN 
-          PX(3)=PXP 
-          PY(3)=PYP 
-        ENDIF 
-      ENDIF 
-C...Junction strings: sum up known four-momentum, coefficients for m2. 
-      DO 470 J=1,4 
-      DHG(J)=0. 
-      P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+ 
-     &PY(3)*P(IN(3)+1,J) 
-      DO 450 IN1=IN(4),IN(1)-4,4 
-      P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J) 
-  450 CONTINUE 
-      DO 460 IN2=IN(5),IN(2)-4,4 
-      P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J) 
-  460 CONTINUE 
-  470 CONTINUE 
-      DHM(1)=FOUR(I,I) 
-      DHM(2)=2.*FOUR(I,IN(1)) 
-      DHM(3)=2.*FOUR(I,IN(2)) 
-      DHM(4)=2.*FOUR(IN(1),IN(2)) 
-C...Junction strings: find coefficients for Gamma expression. 
-      DO 490 IN2=IN(1)+1,IN(2),4 
-      DO 480 IN1=IN(1),IN2-1,4 
-      DHC=2.*FOUR(IN1,IN2) 
-      DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC 
-      IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC 
-      IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC 
-      IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC 
-  480 CONTINUE 
-  490 CONTINUE 
-C...Junction strings: solve (m2, Gamma) equation system for energies. 
-      DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3) 
-      IF(ABS(DHS1).LT.1E-4) GOTO 320 
-      DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)* 
-     &(P(I,5)**2-DHM(1))+DHG(2)*DHM(3) 
-      DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1)) 
-      P(IN(2)+2,4)=0.5*(SQRT(MAX(0D0,DHS2**2-4.*DHS1*DHS3))/ABS(DHS1)- 
-     &DHS2/DHS1) 
-      IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0.) GOTO 320 
-      P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/ 
-     &(DHM(2)+DHM(4)*P(IN(2)+2,4)) 
-C...Junction strings: step to new region if necessary. 
-      IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN 
-        P(IN(2)+2,4)=P(IN(2)+2,3) 
-        P(IN(2)+2,1)=1. 
-        IN(2)=IN(2)+4 
-        IF(IN(2).GT.N+NR+4*NS) GOTO 320 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(1)+2,4)=P(IN(1)+2,3) 
-          P(IN(1)+2,1)=0. 
-          IN(1)=IN(1)+4 
-        ENDIF 
-        GOTO 420 
-      ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN 
-        P(IN(1)+2,4)=P(IN(1)+2,3) 
-        P(IN(1)+2,1)=0. 
-        IN(1)=IN(1)+JS 
-        GOTO 820 
-      ENDIF 
-C...Junction strings: particle four-momentum, remainder, loop back. 
-  500 DO 510 J=1,4 
-      P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J) 
-      PJU(IU+3,J)=PJU(IU+3,J)+P(I,J) 
-  510 CONTINUE 
-      IF(P(I,4).LT.P(I,5)) GOTO 320 
-      PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)- 
-     &TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3) 
-      IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN 
-        KFL(1)=-KFL(3) 
-        PX(1)=-PX(3) 
-        PY(1)=-PY(3) 
-        GAM(1)=GAM(3) 
-        IF(IN(3).NE.IN(6)) THEN 
-          DO 520 J=1,4 
-          P(IN(6),J)=P(IN(3),J) 
-          P(IN(6)+1,J)=P(IN(3)+1,J) 
-  520     CONTINUE 
-        ENDIF 
-        DO 530 JQ=1,2 
-        IN(3+JQ)=IN(JQ) 
-        P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4) 
-        P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4) 
-  530   CONTINUE 
-        GOTO 380 
-      ENDIF 
-C...Junction strings: save quantities left after each string. 
-      IF(IABS(KFL(1)).GT.10) GOTO 320 
-      I=I-1 
-      KFJH(IU)=KFL(1) 
-      DO 540 J=1,4 
-      PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J) 
-  540 CONTINUE 
-  550 CONTINUE 
-C...Junction strings: put together to new effective string endpoint. 
-      NJS(JT)=I-ISTA 
-      KFJS(JT)=K(K(MJU(JT+2),3),2) 
-      KFLS=2*INT(RLY(0)+3.*PARJ(4)/(1.+3.*PARJ(4)))+1 
-      IF(KFJH(1).EQ.KFJH(2)) KFLS=3 
-      IF(ISTA.NE.I) KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)), 
-     &IABS(KFJH(2)))+100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+ 
-     &KFLS,KFJH(1)) 
-      DO 560 J=1,4 
-      PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J) 
-      PJS(JT+2,J)=PJU(4,J)+PJU(5,J) 
-  560 CONTINUE 
-      PJS(JT,5)=SQRT(MAX(0.,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2- 
-     &PJS(JT,3)**2)) 
-  570 CONTINUE 
-C...Open versus closed strings. Choose breakup region for latter. 
-  580 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN 
-        NS=MJU(2)-MJU(1) 
-        NB=MJU(1)-N 
-      ELSEIF(MJU(1).NE.0) THEN 
-        NS=N+NR-MJU(1) 
-        NB=MJU(1)-N 
-      ELSEIF(MJU(2).NE.0) THEN 
-        NS=MJU(2)-N 
-        NB=1 
-      ELSEIF(IABS(K(N+1,2)).NE.21) THEN 
-        NS=NR-1 
-        NB=1 
-      ELSE 
-        NS=NR+1 
-        W2SUM=0. 
-        DO 590 IS=1,NR 
-        P(N+NR+IS,1)=0.5*FOUR(N+IS,N+IS+1-NR*(IS/NR)) 
-        W2SUM=W2SUM+P(N+NR+IS,1) 
-  590   CONTINUE 
-        W2RAN=RLY(0)*W2SUM 
-        NB=0 
-  600   NB=NB+1 
-        W2SUM=W2SUM-P(N+NR+NB,1) 
-        IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 600 
-      ENDIF 
-C...Find longitudinal string directions (i.e. lightlike four-vectors). 
-      DO 630 IS=1,NS 
-      IS1=N+IS+NB-1-NR*((IS+NB-2)/NR) 
-      IS2=N+IS+NB-NR*((IS+NB-1)/NR) 
-      DO 610 J=1,5 
-      DP(1,J)=P(IS1,J) 
-      IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5*DP(1,J) 
-      IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J) 
-      DP(2,J)=P(IS2,J) 
-      IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5*DP(2,J) 
-      IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J) 
-  610 CONTINUE 
-      DP(3,5)=DFOUR(1,1) 
-      DP(4,5)=DFOUR(2,2) 
-      DHKC=DFOUR(1,2) 
-      IF(DP(3,5)+2.*DHKC+DP(4,5).LE.0.) THEN 
-        DP(3,5)=DP(1,5)**2 
-        DP(4,5)=DP(2,5)**2 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2+DP(1,5)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2+DP(2,5)**2) 
-        DHKC=DFOUR(1,2) 
-      ENDIF 
-      DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5)) 
-      DHK1=0.5*((DP(4,5)+DHKC)/DHKS-1.) 
-      DHK2=0.5*((DP(3,5)+DHKC)/DHKS-1.) 
-      IN1=N+NR+4*IS-3 
-      P(IN1,5)=SQRT(DP(3,5)+2.*DHKC+DP(4,5)) 
-      DO 620 J=1,4 
-      P(IN1,J)=(1.+DHK1)*DP(1,J)-DHK2*DP(2,J) 
-      P(IN1+1,J)=(1.+DHK2)*DP(2,J)-DHK1*DP(1,J) 
-  620 CONTINUE 
-  630 CONTINUE 
-C...Begin initialization: sum up energy, set starting position. 
-      ISAV=I 
-      MSTU91=MSTU(90) 
-  640 NTRY=NTRY+1 
-      IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
-        PARU12=4.*PARU12 
-        PARU13=2.*PARU13 
-        GOTO 140 
-      ELSEIF(NTRY.GT.100) THEN 
-        CALL LYERRM(14,'(LYSTRF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=ISAV 
-      MSTU(90)=MSTU91 
-      DO 660 J=1,4 
-      P(N+NRS,J)=0. 
-      DO 650 IS=1,NR 
-      P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J) 
-  650 CONTINUE 
-  660 CONTINUE 
-      DO 680 JT=1,2 
-      IRANK(JT)=0 
-      IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT) 
-      IF(NS.GT.NR) IRANK(JT)=1 
-      IE(JT)=K(N+1+(JT/2)*(NP-1),3) 
-      IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1) 
-      IN(3*JT+2)=IN(3*JT+1)+1 
-      IN(3*JT+3)=N+NR+4*NS+2*JT-1 
-      DO 670 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4 
-      P(IN1,1)=2-JT 
-      P(IN1,2)=JT-1 
-      P(IN1,3)=1. 
-  670 CONTINUE 
-  680 CONTINUE 
-C...Initialize flavour and pT variables for open string. 
-      IF(NS.LT.NR) THEN 
-        PX(1)=0. 
-        PY(1)=0. 
-        IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL LYPTDI(0,PX(1),PY(1)) 
-        PX(2)=-PX(1) 
-        PY(2)=-PY(1) 
-        DO 690 JT=1,2 
-        KFL(JT)=K(IE(JT),2) 
-        IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT) 
-        MSTJ(93)=1 
-        PMQ(JT)=UYMASS(KFL(JT)) 
-        GAM(JT)=0. 
-  690   CONTINUE 
-C...Closed string: random initial breakup flavour, pT and vertex. 
-      ELSE 
-        KFL(3)=INT(1.+(2.+PARJ(2))*RLY(0))*(-1)**INT(RLY(0)+0.5) 
-        CALL LYKFDI(KFL(3),0,KFL(1),KDUMP) 
-        KFL(2)=-KFL(1) 
-        IF(IABS(KFL(1)).GT.10.AND.RLY(0).GT.0.5) THEN 
-          KFL(2)=-(KFL(1)+ISIGN(10000,KFL(1))) 
-        ELSEIF(IABS(KFL(1)).GT.10) THEN 
-          KFL(1)=-(KFL(2)+ISIGN(10000,KFL(2))) 
-        ENDIF 
-        CALL LYPTDI(KFL(1),PX(1),PY(1)) 
-        PX(2)=-PX(1) 
-        PY(2)=-PY(1) 
-        PR3=MIN(25.,0.1*P(N+NR+1,5)**2) 
-  700   CALL LYZDIS(KFL(1),KFL(2),PR3,Z) 
-        ZR=PR3/(Z*P(N+NR+1,5)**2) 
-        IF(ZR.GE.1.) GOTO 700 
-        DO 710 JT=1,2 
-        MSTJ(93)=1 
-        PMQ(JT)=UYMASS(KFL(JT)) 
-        GAM(JT)=PR3*(1.-Z)/Z 
-        IN1=N+NR+3+4*(JT/2)*(NS-1) 
-        P(IN1,JT)=1.-Z 
-        P(IN1,3-JT)=JT-1 
-        P(IN1,3)=(2-JT)*(1.-Z)+(JT-1)*Z 
-        P(IN1+1,JT)=ZR 
-        P(IN1+1,3-JT)=2-JT 
-        P(IN1+1,3)=(2-JT)*(1.-ZR)+(JT-1)*ZR 
-  710   CONTINUE 
-      ENDIF 
-C...Find initial transverse directions (i.e. spacelike four-vectors). 
-      DO 750 JT=1,2 
-      IF(JT.EQ.1.OR.NS.EQ.NR-1) THEN 
-        IN1=IN(3*JT+1) 
-        IN3=IN(3*JT+3) 
-        DO 720 J=1,4 
-        DP(1,J)=P(IN1,J) 
-        DP(2,J)=P(IN1+1,J) 
-        DP(3,J)=0. 
-        DP(4,J)=0. 
-  720   CONTINUE 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-        DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-        DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-        IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-        IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-        IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-        IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-        DHC12=DFOUR(1,2) 
-        DHCX1=DFOUR(3,1)/DHC12 
-        DHCX2=DFOUR(3,2)/DHC12 
-        DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-        DHCY1=DFOUR(4,1)/DHC12 
-        DHCY2=DFOUR(4,2)/DHC12 
-        DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-        DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-        DO 730 J=1,4 
-        DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-        P(IN3,J)=DP(3,J) 
-        P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &  DHCYX*DP(3,J)) 
-  730   CONTINUE 
-      ELSE 
-        DO 740 J=1,4 
-        P(IN3+2,J)=P(IN3,J) 
-        P(IN3+3,J)=P(IN3+1,J) 
-  740   CONTINUE 
-      ENDIF 
-  750 CONTINUE 
-C...Remove energy used up in junction string fragmentation. 
-      IF(MJU(1)+MJU(2).GT.0) THEN 
-        DO 770 JT=1,2 
-        IF(NJS(JT).EQ.0) GOTO 770 
-        DO 760 J=1,4 
-        P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J) 
-  760   CONTINUE 
-  770   CONTINUE 
-      ENDIF 
-C...Produce new particle: side, origin. 
-  780 I=I+1 
-      IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYSTRF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      JT=1.5+RLY(0) 
-      IF(IABS(KFL(3-JT)).GT.10) JT=3-JT 
-      IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT 
-      JR=3-JT 
-      JS=3-2*JT 
-      IRANK(JT)=IRANK(JT)+1 
-      K(I,1)=1 
-      K(I,3)=IE(JT) 
-      K(I,4)=0 
-      K(I,5)=0 
-C...Generate flavour, hadron and pT. 
-  790 CALL LYKFDI(KFL(JT),0,KFL(3),K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 640 
-      IF(MSTJ(12).GE.3.AND.IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND. 
-     &IABS(KFL(3)).GT.10) THEN 
-        IF(RLY(0).GT.PARJ(19)) GOTO 790 
-      ENDIF 
-      P(I,5)=UYMASS(K(I,2)) 
-      CALL LYPTDI(KFL(JT),PX(3),PY(3)) 
-      PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2 
-C...Final hadrons for small invariant mass. 
-      MSTJ(93)=1 
-      PMQ(3)=UYMASS(KFL(3)) 
-      PARJST=PARJ(33) 
-      IF(MSTJ(11).EQ.2) PARJST=PARJ(34) 
-      WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3) 
-      IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN= 
-     &WMIN-0.5*PARJ(36)*PMQ(3) 
-      WREM2=FOUR(N+NRS,N+NRS) 
-      IF(WREM2.LT.0.10) GOTO 640 
-      IF(WREM2.LT.MAX(WMIN*(1.+(2.*RLY(0)-1.)*PARJ(37)), 
-     &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 940 
-C...Choose z, which gives Gamma. Shift z for heavy flavours. 
-      CALL LYZDIS(KFL(JT),KFL(3),PR(JT),Z) 
-      IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND. 
-     &MSTU(90).LT.8) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I 
-        PARU(90+MSTU(90))=Z 
-      ENDIF 
-      KFL1A=IABS(KFL(1)) 
-      KFL2A=IABS(KFL(2)) 
-      IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10), 
-     &MOD(KFL2A/1000,10)).GE.4) THEN 
-        PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
-        PW12=SQRT(MAX(0.,(WREM2-PR(1)-PR(2))**2-4.*PR(1)*PR(2))) 
-        Z=(WREM2+PR(JT)-PR(JR)+PW12*(2.*Z-1.))/(2.*WREM2) 
-        PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
-        IF((1.-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 940 
-      ENDIF 
-      GAM(3)=(1.-Z)*(GAM(JT)+PR(JT)/Z) 
-      DO 800 J=1,3 
-      IN(J)=IN(3*JT+J) 
-  800 CONTINUE 
-C...Stepping within or from 'low' string region easy. 
-      IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)* 
-     &P(IN(1),5)**2.GE.PR(JT)) THEN 
-        P(IN(JT)+2,4)=Z*P(IN(JT)+2,3) 
-        P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2) 
-        DO 810 J=1,4 
-        P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J) 
-  810   CONTINUE 
-        GOTO 900 
-      ELSEIF(IN(1)+1.EQ.IN(2)) THEN 
-        P(IN(JR)+2,4)=P(IN(JR)+2,3) 
-        P(IN(JR)+2,JT)=1. 
-        IN(JR)=IN(JR)+4*JS 
-        IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 640 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-          P(IN(JT)+2,JT)=0. 
-          IN(JT)=IN(JT)+4*JS 
-        ENDIF 
-      ENDIF 
-C...Find new transverse directions (i.e. spacelike string vectors). 
-  820 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR. 
-     &IN(1).GT.IN(2)) GOTO 640 
-      IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN 
-        DO 830 J=1,4 
-        DP(1,J)=P(IN(1),J) 
-        DP(2,J)=P(IN(2),J) 
-        DP(3,J)=0. 
-        DP(4,J)=0. 
-  830   CONTINUE 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DHC12=DFOUR(1,2) 
-        IF(DHC12.LE.1E-2) THEN 
-          P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-          P(IN(JT)+2,JT)=0. 
-          IN(JT)=IN(JT)+4*JS 
-          GOTO 820 
-        ENDIF 
-        IN(3)=N+NR+4*NS+5 
-        DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-        DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-        DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-        IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-        IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-        IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-        IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-        DHCX1=DFOUR(3,1)/DHC12 
-        DHCX2=DFOUR(3,2)/DHC12 
-        DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-        DHCY1=DFOUR(4,1)/DHC12 
-        DHCY2=DFOUR(4,2)/DHC12 
-        DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-        DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-        DO 840 J=1,4 
-        DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-        P(IN(3),J)=DP(3,J) 
-        P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &  DHCYX*DP(3,J)) 
-  840   CONTINUE 
-C...Express pT with respect to new axes, if sensible. 
-        PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)* 
-     &  FOUR(IN(3*JT+3)+1,IN(3))) 
-        PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)* 
-     &  FOUR(IN(3*JT+3)+1,IN(3)+1)) 
-        IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01) THEN 
-          PX(3)=PXP 
-          PY(3)=PYP 
-        ENDIF 
-      ENDIF 
-C...Sum up known four-momentum. Gives coefficients for m2 expression. 
-      DO 870 J=1,4 
-      DHG(J)=0. 
-      P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+ 
-     &PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J) 
-      DO 850 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS 
-      P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J) 
-  850 CONTINUE 
-      DO 860 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS 
-      P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J) 
-  860 CONTINUE 
-  870 CONTINUE 
-      DHM(1)=FOUR(I,I) 
-      DHM(2)=2.*FOUR(I,IN(1)) 
-      DHM(3)=2.*FOUR(I,IN(2)) 
-      DHM(4)=2.*FOUR(IN(1),IN(2)) 
-C...Find coefficients for Gamma expression. 
-      DO 890 IN2=IN(1)+1,IN(2),4 
-      DO 880 IN1=IN(1),IN2-1,4 
-      DHC=2.*FOUR(IN1,IN2) 
-      DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC 
-      IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC 
-      IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC 
-      IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC 
-  880 CONTINUE 
-  890 CONTINUE 
-C...Solve (m2, Gamma) equation system for energies taken. 
-      DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1) 
-      IF(ABS(DHS1).LT.1E-4) GOTO 640 
-      DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)* 
-     &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1) 
-      DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1)) 
-      P(IN(JR)+2,4)=0.5*(SQRT(MAX(0D0,DHS2**2-4.*DHS1*DHS3))/ABS(DHS1)- 
-     &DHS2/DHS1) 
-      IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0.) GOTO 640 
-      P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/ 
-     &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4)) 
-C...Step to new region if necessary. 
-      IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN 
-        P(IN(JR)+2,4)=P(IN(JR)+2,3) 
-        P(IN(JR)+2,JT)=1. 
-        IN(JR)=IN(JR)+4*JS 
-        IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 640 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-          P(IN(JT)+2,JT)=0. 
-          IN(JT)=IN(JT)+4*JS 
-        ENDIF 
-        GOTO 820 
-      ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN 
-        P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-        P(IN(JT)+2,JT)=0. 
-        IN(JT)=IN(JT)+4*JS 
-        GOTO 820 
-      ENDIF 
-C...Four-momentum of particle. Remaining quantities. Loop back. 
-  900 DO 910 J=1,4 
-      P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J) 
-      P(N+NRS,J)=P(N+NRS,J)-P(I,J) 
-  910 CONTINUE 
-      IF(P(I,4).LT.P(I,5)) GOTO 640 
-      KFL(JT)=-KFL(3) 
-      PMQ(JT)=PMQ(3) 
-      PX(JT)=-PX(3) 
-      PY(JT)=-PY(3) 
-      GAM(JT)=GAM(3) 
-      IF(IN(3).NE.IN(3*JT+3)) THEN 
-        DO 920 J=1,4 
-        P(IN(3*JT+3),J)=P(IN(3),J) 
-        P(IN(3*JT+3)+1,J)=P(IN(3)+1,J) 
-  920   CONTINUE 
-      ENDIF 
-      DO 930 JQ=1,2 
-      IN(3*JT+JQ)=IN(JQ) 
-      P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4) 
-      P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4) 
-  930 CONTINUE 
-      GOTO 780 
-C...Final hadron: side, flavour, hadron, mass. 
-  940 I=I+1 
-      K(I,1)=1 
-      K(I,3)=IE(JR) 
-      K(I,4)=0 
-      K(I,5)=0 
-      CALL LYKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 640 
-      P(I,5)=UYMASS(K(I,2)) 
-      PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
-C...Final two hadrons: find common setup of four-vectors. 
-      JQ=1 
-      IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.P(IN(7),3)* 
-     &P(IN(8),3)*FOUR(IN(7),IN(8))) JQ=2 
-      DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2)) 
-      DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12 
-      DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12 
-      IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN 
-        PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ) 
-        PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ) 
-        PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS* 
-     &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2 
-      ENDIF 
-C...Solve kinematics for final two hadrons, if possible. 
-      WREM2=WREM2+(PX(1)+PX(2))**2+(PY(1)+PY(2))**2 
-      FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2) 
-      IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1.) GOTO 200 
-      IF(FD.GE.1.) GOTO 640 
-      FA=WREM2+PR(JT)-PR(JR) 
-      IF(MSTJ(11).NE.2) PREV=0.5*EXP(MAX(-50.,LOG(FD)*PARJ(38)* 
-     &(PR(1)+PR(2))**2)) 
-      IF(MSTJ(11).EQ.2) PREV=0.5*FD**PARJ(39) 
-      FB=SIGN(SQRT(MAX(0.,FA**2-4.*WREM2*PR(JT))),JS*(RLY(0)-PREV)) 
-      KFL1A=IABS(KFL(1)) 
-      KFL2A=IABS(KFL(2)) 
-      IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10), 
-     &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0.,FA**2- 
-     &4.*WREM2*PR(JT))),FLOAT(JS)) 
-      DO 950 J=1,4 
-      P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))* 
-     &P(IN(3*JQ+3)+1,J)+0.5*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+ 
-     &DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2 
-      P(I,J)=P(N+NRS,J)-P(I-1,J) 
-  950 CONTINUE 
-      IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 640 
-C...Mark jets as fragmented and give daughter pointers. 
-      N=I-NRS+1 
-      DO 960 I=NSAV+1,NSAV+NP 
-      IM=K(I,3) 
-      K(IM,1)=K(IM,1)+10 
-      IF(MSTU(16).NE.2) THEN 
-        K(IM,4)=NSAV+1 
-        K(IM,5)=NSAV+1 
-      ELSE 
-        K(IM,4)=NSAV+2 
-        K(IM,5)=N 
-      ENDIF 
-  960 CONTINUE 
-C...Document string system. Move up particles. 
-      NSAV=NSAV+1 
-      K(NSAV,1)=11 
-      K(NSAV,2)=92 
-      K(NSAV,3)=IP 
-      K(NSAV,4)=NSAV+1 
-      K(NSAV,5)=N 
-      DO 970 J=1,4 
-      P(NSAV,J)=DPS(J) 
-      V(NSAV,J)=V(IP,J) 
-  970 CONTINUE 
-      P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2)) 
-      V(NSAV,5)=0. 
-      DO 990 I=NSAV+1,N 
-      DO 980 J=1,5 
-      K(I,J)=K(I+NRS-1,J) 
-      P(I,J)=P(I+NRS-1,J) 
-      V(I,J)=0. 
-  980 CONTINUE 
-  990 CONTINUE 
-      MSTU91=MSTU(90) 
-      DO 1000 IZ=MSTU90+1,MSTU91 
-      MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N 
-      PARU9T(IZ)=PARU(90+IZ) 
- 1000 CONTINUE 
-      MSTU(90)=MSTU90 
-C...Order particles in rank along the chain. Update mother pointer. 
-      DO 1020 I=NSAV+1,N 
-      DO 1010 J=1,5 
-      K(I-NSAV+N,J)=K(I,J) 
-      P(I-NSAV+N,J)=P(I,J) 
- 1010 CONTINUE 
- 1020 CONTINUE 
-      I1=NSAV 
-      DO 1050 I=N+1,2*N-NSAV 
-      IF(K(I,3).NE.IE(1)) GOTO 1050 
-      I1=I1+1 
-      DO 1030 J=1,5 
-      K(I1,J)=K(I,J) 
-      P(I1,J)=P(I,J) 
- 1030 CONTINUE 
-      IF(MSTU(16).NE.2) K(I1,3)=NSAV 
-      DO 1040 IZ=MSTU90+1,MSTU91 
-      IF(MSTU9T(IZ).EQ.I) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I1 
-        PARU(90+MSTU(90))=PARU9T(IZ) 
-      ENDIF 
- 1040 CONTINUE 
- 1050 CONTINUE 
-      DO 1080 I=2*N-NSAV,N+1,-1 
-      IF(K(I,3).EQ.IE(1)) GOTO 1080 
-      I1=I1+1 
-      DO 1060 J=1,5 
-      K(I1,J)=K(I,J) 
-      P(I1,J)=P(I,J) 
- 1060 CONTINUE 
-      IF(MSTU(16).NE.2) K(I1,3)=NSAV 
-      DO 1070 IZ=MSTU90+1,MSTU91 
-      IF(MSTU9T(IZ).EQ.I) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I1 
-        PARU(90+MSTU(90))=PARU9T(IZ) 
-      ENDIF 
- 1070 CONTINUE 
- 1080 CONTINUE 
-C...Boost back particle system. Set production vertices. 
-      IF(MBST.EQ.0) THEN 
-        MSTU(33)=1 
-        CALL LUDBRB(NSAV+1,N,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4), 
-     &  DPS(3)/DPS(4)) 
-      ELSE 
-        DO 1090 I=NSAV+1,N 
-        HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2 
-        IF(P(I,3).GT.0.) THEN 
-          HHPEZ=(P(I,4)+P(I,3))*HHBZ 
-          P(I,3)=0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ELSE 
-          HHPEZ=(P(I,4)-P(I,3))/HHBZ 
-          P(I,3)=-0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ENDIF 
- 1090   CONTINUE 
-      ENDIF 
-      DO 1110 I=NSAV+1,N 
-      DO 1100 J=1,4 
-      V(I,J)=V(IP,J) 
- 1100 CONTINUE 
- 1110 CONTINUE 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYINDF(IP) 
-C...Purpose: to handle the fragmentation of a jet system (or a single 
-C...jet) according to independent fragmentation models. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3), 
-     &KFLO(2),PXO(2),PYO(2),WO(2) 
-C...Reset counters. Identify parton system and take copy. Check flavour. 
-      NSAV=N 
-      MSTU90=MSTU(90) 
-      NJET=0 
-      KQSUM=0 
-      DO 100 J=1,5 
-      DPS(J)=0. 
-  100 CONTINUE 
-      I=IP-1 
-  110 I=I+1 
-      IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN 
-        CALL LYERRM(12,'(LYINDF:) failed to reconstruct jet system') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110 
-      KC=LYCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 110 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 110 
-      NJET=NJET+1 
-      IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-      DO 120 J=1,5 
-      K(NSAV+NJET,J)=K(I,J) 
-      P(NSAV+NJET,J)=P(I,J) 
-      DPS(J)=DPS(J)+P(I,J) 
-  120 CONTINUE 
-      K(NSAV+NJET,3)=I 
-      IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND. 
-     &K(I+1,1).EQ.2)) GOTO 110 
-      IF(NJET.NE.1.AND.KQSUM.NE.0) THEN 
-        CALL LYERRM(12,'(LYINDF:) unphysical flavour combination') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Boost copied system to CM frame. Find CM energy and sum flavours. 
-      IF(NJET.NE.1) THEN 
-        MSTU(33)=1 
-        CALL LUDBRB(NSAV+1,NSAV+NJET,0.,0.,-DPS(1)/DPS(4), 
-     &  -DPS(2)/DPS(4),-DPS(3)/DPS(4)) 
-      ENDIF 
-      PECM=0. 
-      DO 130 J=1,3 
-      NFI(J)=0 
-  130 CONTINUE 
-      DO 140 I=NSAV+1,NSAV+NJET 
-      PECM=PECM+P(I,4) 
-      KFA=IABS(K(I,2)) 
-      IF(KFA.LE.3) THEN 
-        NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2)) 
-      ELSEIF(KFA.GT.1000) THEN 
-        KFLA=MOD(KFA/1000,10) 
-        KFLB=MOD(KFA/100,10) 
-        IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2)) 
-        IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2)) 
-      ENDIF 
-  140 CONTINUE 
-C...Loop over attempts made. Reset counters. 
-      NTRY=0 
-  150 NTRY=NTRY+1 
-      IF(NTRY.GT.200) THEN 
-        CALL LYERRM(14,'(LYINDF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      N=NSAV+NJET 
-      MSTU(90)=MSTU90 
-      DO 160 J=1,3 
-      NFL(J)=NFI(J) 
-      IFET(J)=0 
-      KFLF(J)=0 
-  160 CONTINUE 
-C...Loop over jets to be fragmented. 
-      DO 230 IP1=NSAV+1,NSAV+NJET 
-      MSTJ(91)=0 
-      NSAV1=N 
-      MSTU91=MSTU(90) 
-C...Initial flavour and momentum values. Jet along +z axis. 
-      KFLH=IABS(K(IP1,2)) 
-      IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10) 
-      KFLO(2)=0 
-      WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2) 
-C...Initial values for quark or diquark jet. 
-  170 IF(IABS(K(IP1,2)).NE.21) THEN 
-        NSTR=1 
-        KFLO(1)=K(IP1,2) 
-        CALL LYPTDI(0,PXO(1),PYO(1)) 
-        WO(1)=WF 
-C...Initial values for gluon treated like random quark jet. 
-      ELSEIF(MSTJ(2).LE.2) THEN 
-        NSTR=1 
-        IF(MSTJ(2).EQ.2) MSTJ(91)=1 
-        KFLO(1)=INT(1.+(2.+PARJ(2))*RLY(0))*(-1)**INT(RLY(0)+0.5) 
-        CALL LYPTDI(0,PXO(1),PYO(1)) 
-        WO(1)=WF 
-C...Initial values for gluon treated like quark-antiquark jet pair, 
-C...sharing energy according to Altarelli-Parisi splitting function. 
-      ELSE 
-        NSTR=2 
-        IF(MSTJ(2).EQ.4) MSTJ(91)=1 
-        KFLO(1)=INT(1.+(2.+PARJ(2))*RLY(0))*(-1)**INT(RLY(0)+0.5) 
-        KFLO(2)=-KFLO(1) 
-        CALL LYPTDI(0,PXO(1),PYO(1)) 
-        PXO(2)=-PXO(1) 
-        PYO(2)=-PYO(1) 
-        WO(1)=WF*RLY(0)**(1./3.) 
-        WO(2)=WF-WO(1) 
-      ENDIF 
-C...Initial values for rank, flavour, pT and W+. 
-      DO 220 ISTR=1,NSTR 
-  180 I=N 
-      MSTU(90)=MSTU91 
-      IRANK=0 
-      KFL1=KFLO(ISTR) 
-      PX1=PXO(ISTR) 
-      PY1=PYO(ISTR) 
-      W=WO(ISTR) 
-C...New hadron. Generate flavour and hadron species. 
-  190 I=I+1 
-      IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN 
-        CALL LYERRM(11,'(LYINDF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IRANK=IRANK+1 
-      K(I,1)=1 
-      K(I,3)=IP1 
-      K(I,4)=0 
-      K(I,5)=0 
-  200 CALL LYKFDI(KFL1,0,KFL2,K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 180 
-      IF(MSTJ(12).GE.3.AND.IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND. 
-     &IABS(KFL2).GT.10) THEN 
-        IF(RLY(0).GT.PARJ(19)) GOTO 200 
-      ENDIF 
-C...Find hadron mass. Generate four-momentum. 
-      P(I,5)=UYMASS(K(I,2)) 
-      CALL LYPTDI(KFL1,PX2,PY2) 
-      P(I,1)=PX1+PX2 
-      P(I,2)=PY1+PY2 
-      PR=P(I,5)**2+P(I,1)**2+P(I,2)**2 
-      CALL LYZDIS(KFL1,KFL2,PR,Z) 
-      MZSAV=0 
-      IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN 
-        MZSAV=1 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I 
-        PARU(90+MSTU(90))=Z 
-      ENDIF 
-      P(I,3)=0.5*(Z*W-PR/MAX(1E-4,Z*W)) 
-      P(I,4)=0.5*(Z*W+PR/MAX(1E-4,Z*W)) 
-      IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND. 
-     &P(I,3).LE.0.001) THEN 
-        IF(W.GE.P(I,5)+0.5*PARJ(32)) GOTO 180 
-        P(I,3)=0.0001 
-        P(I,4)=SQRT(PR) 
-        Z=P(I,4)/W 
-      ENDIF 
-C...Remaining flavour and momentum. 
-      KFL1=-KFL2 
-      PX1=-PX2 
-      PY1=-PY2 
-      W=(1.-Z)*W 
-      DO 210 J=1,5 
-      V(I,J)=0. 
-  210 CONTINUE 
-C...Check if pL acceptable. Go back for new hadron if enough energy. 
-      IF(MSTJ(3).GE.0.AND.P(I,3).LT.0.) THEN 
-        I=I-1 
-        IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1 
-      ENDIF 
-      IF(W.GT.PARJ(31)) GOTO 190 
-      N=I 
-  220 CONTINUE 
-      IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1*PARJ(32) 
-      IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170 
-C...Rotate jet to new direction. 
-      THE=UYANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2)) 
-      PHI=UYANGL(P(IP1,1),P(IP1,2)) 
-      MSTU(33)=1 
-      CALL LUDBRB(NSAV1+1,N,THE,PHI,0D0,0D0,0D0) 
-      K(K(IP1,3),4)=NSAV1+1 
-      K(K(IP1,3),5)=N 
-C...End of jet generation loop. Skip conservation in some cases. 
-  230 CONTINUE 
-      IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490 
-      IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150 
-C...Subtract off produced hadron flavours, finished if zero. 
-      DO 240 I=NSAV+NJET+1,N 
-      KFA=IABS(K(I,2)) 
-      KFLA=MOD(KFA/1000,10) 
-      KFLB=MOD(KFA/100,10) 
-      KFLC=MOD(KFA/10,10) 
-      IF(KFLA.EQ.0) THEN 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB 
-      ELSE 
-        IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2)) 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2)) 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2)) 
-      ENDIF 
-  240 CONTINUE 
-      NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
-     &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
-      IF(NREQ.EQ.0) GOTO 320 
-C...Take away flavour of low-momentum particles until enough freedom. 
-      NREM=0 
-  250 IREM=0 
-      P2MIN=PECM**2 
-      DO 260 I=NSAV+NJET+1,N 
-      P2=P(I,1)**2+P(I,2)**2+P(I,3)**2 
-      IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I 
-      IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2 
-  260 CONTINUE 
-      IF(IREM.EQ.0) GOTO 150 
-      K(IREM,1)=7 
-      KFA=IABS(K(IREM,2)) 
-      KFLA=MOD(KFA/1000,10) 
-      KFLB=MOD(KFA/100,10) 
-      KFLC=MOD(KFA/10,10) 
-      IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8 
-      IF(K(IREM,1).EQ.8) GOTO 250 
-      IF(KFLA.EQ.0) THEN 
-        ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN 
-      ELSE 
-        IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2)) 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2)) 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2)) 
-      ENDIF 
-      NREM=NREM+1 
-      NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
-     &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
-      IF(NREQ.GT.NREM) GOTO 250 
-      DO 270 I=NSAV+NJET+1,N 
-      IF(K(I,1).EQ.8) K(I,1)=1 
-  270 CONTINUE 
-C...Find combination of existing and new flavours for hadron. 
-  280 NFET=2 
-      IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3 
-      IF(NREQ.LT.NREM) NFET=1 
-      IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0 
-      DO 290 J=1,NFET 
-      IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*RLY(0) 
-      KFLF(J)=ISIGN(1,NFL(1)) 
-      IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2)) 
-      IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3)) 
-  290 CONTINUE 
-      IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0)) 
-     &GOTO 280 
-      IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR. 
-     &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3) 
-     &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280 
-      IF(NFET.EQ.0) KFLF(1)=1+INT((2.+PARJ(2))*RLY(0)) 
-      IF(NFET.EQ.0) KFLF(2)=-KFLF(1) 
-      IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2.+PARJ(2))*RLY(0)),-KFLF(1)) 
-      IF(NFET.LE.2) KFLF(3)=0 
-      IF(KFLF(3).NE.0) THEN 
-        KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+ 
-     &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1)) 
-        IF(KFLF(1).EQ.KFLF(3).OR.(1.+3.*PARJ(4))*RLY(0).GT.1.) 
-     &  KFLFC=KFLFC+ISIGN(2,KFLFC) 
-      ELSE 
-        KFLFC=KFLF(1) 
-      ENDIF 
-      CALL LYKFDI(KFLFC,KFLF(2),KFLDMP,KF) 
-      IF(KF.EQ.0) GOTO 280 
-      DO 300 J=1,MAX(2,NFET) 
-      NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J)) 
-  300 CONTINUE 
-C...Store hadron at random among free positions. 
-      NPOS=MIN(1+INT(RLY(0)*NREM),NREM) 
-      DO 310 I=NSAV+NJET+1,N 
-      IF(K(I,1).EQ.7) NPOS=NPOS-1 
-      IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310 
-      K(I,1)=1 
-      K(I,2)=KF 
-      P(I,5)=UYMASS(K(I,2)) 
-      P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-  310 CONTINUE 
-      NREM=NREM-1 
-      NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
-     &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
-      IF(NREM.GT.0) GOTO 280 
-C...Compensate for missing momentum in global scheme (3 options). 
-  320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN 
-        DO 340 J=1,3 
-        PSI(J)=0. 
-        DO 330 I=NSAV+NJET+1,N 
-        PSI(J)=PSI(J)+P(I,J) 
-  330   CONTINUE 
-  340   CONTINUE 
-        PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2 
-        PWS=0. 
-        DO 350 I=NSAV+NJET+1,N 
-        IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4) 
-        IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+ 
-     &  PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4)) 
-        IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1. 
-  350   CONTINUE 
-        DO 370 I=NSAV+NJET+1,N 
-        IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4) 
-        IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+ 
-     &  PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4)) 
-        IF(MOD(MSTJ(3),5).EQ.3) PW=1. 
-        DO 360 J=1,3 
-        P(I,J)=P(I,J)-PSI(J)*PW/PWS 
-  360   CONTINUE 
-        P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-  370   CONTINUE 
-C...Compensate for missing momentum withing each jet separately. 
-      ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN 
-        DO 390 I=N+1,N+NJET 
-        K(I,1)=0 
-        DO 380 J=1,5 
-        P(I,J)=0. 
-  380   CONTINUE 
-  390   CONTINUE 
-        DO 410 I=NSAV+NJET+1,N 
-        IR1=K(I,3) 
-        IR2=N+IR1-NSAV 
-        K(IR2,1)=K(IR2,1)+1 
-        PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/ 
-     &  (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2) 
-        DO 400 J=1,3 
-        P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J) 
-  400   CONTINUE 
-        P(IR2,4)=P(IR2,4)+P(I,4) 
-        P(IR2,5)=P(IR2,5)+PLS 
-  410   CONTINUE 
-        PSS=0. 
-        DO 420 I=N+1,N+NJET 
-        IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8*P(I,5)+0.2)) 
-  420   CONTINUE 
-        DO 440 I=NSAV+NJET+1,N 
-        IR1=K(I,3) 
-        IR2=N+IR1-NSAV 
-        PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/ 
-     &  (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2) 
-        DO 430 J=1,3 
-        P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1./(P(IR2,5)*PSS)-1.)*PLS* 
-     &  P(IR1,J) 
-  430   CONTINUE 
-        P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-  440   CONTINUE 
-      ENDIF 
-C...Scale momenta for energy conservation. 
-      IF(MOD(MSTJ(3),5).NE.0) THEN 
-        PMS=0. 
-        PES=0. 
-        PQS=0. 
-        DO 450 I=NSAV+NJET+1,N 
-        PMS=PMS+P(I,5) 
-        PES=PES+P(I,4) 
-        PQS=PQS+P(I,5)**2/P(I,4) 
-  450   CONTINUE 
-        IF(PMS.GE.PECM) GOTO 150 
-        NECO=0 
-  460   NECO=NECO+1 
-        PFAC=(PECM-PQS)/(PES-PQS) 
-        PES=0. 
-        PQS=0. 
-        DO 480 I=NSAV+NJET+1,N 
-        DO 470 J=1,3 
-        P(I,J)=PFAC*P(I,J) 
-  470   CONTINUE 
-        P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-        PES=PES+P(I,4) 
-        PQS=PQS+P(I,5)**2/P(I,4) 
-  480   CONTINUE 
-        IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2E-6*PECM) GOTO 460 
-      ENDIF 
-C...Origin of produced particles and parton daughter pointers. 
-  490 DO 500 I=NSAV+NJET+1,N 
-      IF(MSTU(16).NE.2) K(I,3)=NSAV+1 
-      IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3) 
-  500 CONTINUE 
-      DO 510 I=NSAV+1,NSAV+NJET 
-      I1=K(I,3) 
-      K(I1,1)=K(I1,1)+10 
-      IF(MSTU(16).NE.2) THEN 
-        K(I1,4)=NSAV+1 
-        K(I1,5)=NSAV+1 
-      ELSE 
-        K(I1,4)=K(I1,4)-NJET+1 
-        K(I1,5)=K(I1,5)-NJET+1 
-        IF(K(I1,5).LT.K(I1,4)) THEN 
-          K(I1,4)=0 
-          K(I1,5)=0 
-        ENDIF 
-      ENDIF 
-  510 CONTINUE 
-C...Document independent fragmentation system. Remove copy of jets. 
-      NSAV=NSAV+1 
-      K(NSAV,1)=11 
-      K(NSAV,2)=93 
-      K(NSAV,3)=IP 
-      K(NSAV,4)=NSAV+1 
-      K(NSAV,5)=N-NJET+1 
-      DO 520 J=1,4 
-      P(NSAV,J)=DPS(J) 
-      V(NSAV,J)=V(IP,J) 
-  520 CONTINUE 
-      P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2)) 
-      V(NSAV,5)=0. 
-      DO 540 I=NSAV+NJET,N 
-      DO 530 J=1,5 
-      K(I-NJET+1,J)=K(I,J) 
-      P(I-NJET+1,J)=P(I,J) 
-      V(I-NJET+1,J)=V(I,J) 
-  530 CONTINUE 
-  540 CONTINUE 
-      N=N-NJET+1 
-      DO 550 IZ=MSTU90+1,MSTU(90) 
-      MSTU(90+IZ)=MSTU(90+IZ)-NJET+1 
-  550 CONTINUE 
-C...Boost back particle system. Set production vertices. 
-      IF(NJET.NE.1) CALL LUDBRB(NSAV+1,N,0.,0.,DPS(1)/DPS(4), 
-     &DPS(2)/DPS(4),DPS(3)/DPS(4)) 
-      DO 570 I=NSAV+1,N 
-      DO 560 J=1,4 
-      V(I,J)=V(IP,J) 
-  560 CONTINUE 
-  570 CONTINUE 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYDECY(IP) 
-C...Purpose: to handle the decay of unstable particles. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/,/LYDAT3/ 
-      DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3), 
-     &WTCOR(10),PTAU(4),PCMTAU(4) 
-      DOUBLE PRECISION DBETAU(3) 
-      DATA WTCOR/2.,5.,15.,60.,250.,1500.,1.2E4,1.2E5,150.,16./ 
-C...Functions: momentum in two-particle decays, four-product and 
-C...matrix element times phase space in weak decays. 
-      PAWT(A,B,C)=SQRT(ABS((A**2-(B+C)**2)*(A**2-(B-C)**2)))/(2.*A)
-C...........added ABS because would go 10**-7 LT 0 (precision thing?)
-C...........once per few 10**5 events -- jmiles 22.June.02
-      FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3) 
-      HMEPS(HA)=((1.-HRQ-HA)**2+3.*HA*(1.+HRQ-HA))* 
-     &SQRT((1.-HRQ-HA)**2-4.*HRQ*HA) 
-C...Initial values. 
-      NTRY=0 
-      NSAV=N 
-      KFA=IABS(K(IP,2)) 
-      KFS=ISIGN(1,K(IP,2)) 
-      KC=LYCOMP(KFA) 
-      MSTJ(92)=0 
-C...Choose lifetime and determine decay vertex. 
-      IF(K(IP,1).EQ.5) THEN 
-        V(IP,5)=0. 
-      ELSEIF(K(IP,1).NE.4) THEN 
-        V(IP,5)=-PMAS(KC,4)*LOG(RLY(0)) 
-      ENDIF 
-      DO 100 J=1,4 
-      VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5) 
-  100 CONTINUE 
-C...Determine whether decay allowed or not. 
-      MOUT=0 
-      IF(MSTJ(22).EQ.2) THEN 
-        IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1 
-      ELSEIF(MSTJ(22).EQ.3) THEN 
-        IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1 
-      ELSEIF(MSTJ(22).EQ.4) THEN 
-        IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1 
-        IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1 
-      ENDIF 
-      IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN 
-        K(IP,1)=4 
-        RETURN 
-      ENDIF 
-C...Interface to external tau decay library (for tau polarization). 
-      IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN 
-C...Starting values for pointers and momenta. 
-        ITAU=IP 
-        DO 110 J=1,4 
-        PTAU(J)=P(ITAU,J) 
-        PCMTAU(J)=P(ITAU,J) 
-  110   CONTINUE 
-C...Iterate to find position and code of mother of tau. 
-        IMTAU=ITAU 
-  120   IMTAU=K(IMTAU,3) 
-        IF(IMTAU.EQ.0) THEN 
-C...If no known origin then impossible to do anything further. 
-          KFORIG=0 
-          IORIG=0 
-        ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN 
-C...If tau -> tau + gamma then add gamma energy and loop. 
-          IF(K(K(IMTAU,4),2).EQ.22) THEN 
-            DO 130 J=1,4 
-            PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J) 
-  130       CONTINUE 
-          ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN 
-            DO 140 J=1,4 
-            PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J) 
-  140       CONTINUE 
-          ENDIF 
-          GOTO 120 
-        ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN 
-C...If coming from weak decay of hadron then W is not stored in record, 
-C...but can be reconstructed by adding neutrino momentum. 
-          KFORIG=-ISIGN(24,K(ITAU,2)) 
-          IORIG=0 
-          DO 160 II=K(IMTAU,4),K(IMTAU,5) 
-          IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN 
-            DO 150 J=1,4 
-            PCMTAU(J)=PCMTAU(J)+P(II,J) 
-  150       CONTINUE 
-          ENDIF 
-  160     CONTINUE 
-        ELSE 
-C...If coming from resonance decay then find latest copy of this 
-C...resonance (may not completely agree). 
-          KFORIG=K(IMTAU,2) 
-          IORIG=IMTAU 
-          DO 170 II=IMTAU+1,IP-1 
-          IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND. 
-     &    ABS(P(II,5)-P(IORIG,5)).LT.1E-5*P(IORIG,5)) IORIG=II 
-  170     CONTINUE 
-          DO 180 J=1,4 
-          PCMTAU(J)=P(IORIG,J) 
-  180     CONTINUE 
-        ENDIF 
-C...Boost tau to rest frame of production process (where known) 
-C...and rotate it to sit along +z axis. 
-        DO 190 J=1,3 
-        DBETAU(J)=PCMTAU(J)/PCMTAU(4) 
-  190   CONTINUE 
-        IF(KFORIG.NE.0) CALL LUDBRB(ITAU,ITAU,0.,0.,-DBETAU(1), 
-     &  -DBETAU(2),-DBETAU(3)) 
-        PHITAU=UYANGL(P(ITAU,1),P(ITAU,2)) 
-        CALL LUDBRB(ITAU,ITAU,0.,-PHITAU,0D0,0D0,0D0) 
-        THETAU=UYANGL(P(ITAU,3),P(ITAU,1)) 
-        CALL LUDBRB(ITAU,ITAU,-THETAU,0.,0D0,0D0,0D0) 
-C...Call tau decay routine (if meaningful) and fill extra info. 
-        IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN 
-          CALL LYTAUD(ITAU,IORIG,KFORIG,NDECAY) 
-          DO 200 II=NSAV+1,NSAV+NDECAY 
-          K(II,1)=1 
-          K(II,3)=IP 
-          K(II,4)=0 
-          K(II,5)=0 
-  200     CONTINUE 
-          N=NSAV+NDECAY 
-        ENDIF 
-C...Boost back decay tau and decay products. 
-        DO 210 J=1,4 
-        P(ITAU,J)=PTAU(J) 
-  210   CONTINUE 
-        IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN 
-          CALL LUDBRB(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0) 
-          IF(KFORIG.NE.0) CALL LUDBRB(NSAV+1,N,0.,0.,DBETAU(1), 
-     &    DBETAU(2),DBETAU(3)) 
-C...Skip past ordinary tau decay treatment. 
-          MMAT=0 
-          MBST=0 
-          ND=0 
-          GOTO 660 
-        ENDIF 
-      ENDIF 
-C...B-B~ mixing: flip sign of meson appropriately. 
-      MMIX=0 
-      IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN 
-        XBBMIX=PARJ(76) 
-        IF(KFA.EQ.531) XBBMIX=PARJ(77) 
-        IF(SIN(0.5*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.RLY(0)) MMIX=1 
-        IF(MMIX.EQ.1) KFS=-KFS 
-      ENDIF 
-C...Check existence of decay channels. Particle/antiparticle rules. 
-      KCA=KC 
-      IF(MDCY(KC,2).GT.0) THEN 
-        MDMDCY=MDME(MDCY(KC,2),2) 
-        IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY 
-      ENDIF 
-      IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN 
-        CALL LYERRM(9,'(LYDECY:) no decay channel defined') 
-        RETURN 
-      ENDIF 
-      IF(MOD(KFA/1000,10).EQ.0.AND.(KCA.EQ.85.OR.KCA.EQ.87)) KFS=-KFS 
-      IF(KCHG(KC,3).EQ.0) THEN 
-        KFSP=1 
-        KFSN=0 
-        IF(RLY(0).GT.0.5) KFS=-KFS 
-      ELSEIF(KFS.GT.0) THEN 
-        KFSP=1 
-        KFSN=0 
-      ELSE 
-        KFSP=0 
-        KFSN=1 
-      ENDIF 
-C...Sum branching ratios of allowed decay channels. 
-  220 NOPE=0 
-      BRSU=0. 
-      DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1 
-      IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND. 
-     &KFSN*MDME(IDL,1).NE.3) GOTO 230 
-      IF(MDME(IDL,2).GT.100) GOTO 230 
-      NOPE=NOPE+1 
-      BRSU=BRSU+BRAT(IDL) 
-  230 CONTINUE 
-      IF(NOPE.EQ.0) THEN 
-        CALL LYERRM(2,'(LYDECY:) all decay channels closed by user') 
-        RETURN 
-      ENDIF 
-C...Select decay channel among allowed ones. 
-  240 RBR=BRSU*RLY(0) 
-      IDL=MDCY(KCA,2)-1 
-  250 IDL=IDL+1 
-      IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND. 
-     &KFSN*MDME(IDL,1).NE.3) THEN 
-        IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250 
-      ELSEIF(MDME(IDL,2).GT.100) THEN 
-        IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250 
-      ELSE 
-        IDC=IDL 
-        RBR=RBR-BRAT(IDL) 
-        IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0.) GOTO 250 
-      ENDIF 
-C...Start readout of decay channel: matrix element, reset counters. 
-      MMAT=MDME(IDC,2) 
-  260 NTRY=NTRY+1 
-      IF(NTRY.GT.1000) THEN 
-        CALL LYERRM(14,'(LYDECY:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=N 
-      NP=0 
-      NQ=0 
-      MBST=0 
-      IF(MMAT.GE.11.AND.MMAT.NE.46.AND.P(IP,4).GT.20.*P(IP,5)) MBST=1 
-      DO 270 J=1,4 
-      PV(1,J)=0. 
-      IF(MBST.EQ.0) PV(1,J)=P(IP,J) 
-  270 CONTINUE 
-      IF(MBST.EQ.1) PV(1,4)=P(IP,5) 
-      PV(1,5)=P(IP,5) 
-      PS=0. 
-      PSQ=0. 
-      MREM=0 
-      MHADDY=0 
-      IF(KFA.GT.80) MHADDY=1 
-C...Read out decay products. Convert to standard flavour code. 
-      JTMAX=5 
-      IF(MDME(IDC+1,2).EQ.101) JTMAX=10 
-      DO 280 JT=1,JTMAX 
-      IF(JT.LE.5) KP=KFDP(IDC,JT) 
-      IF(JT.GE.6) KP=KFDP(IDC+1,JT-5) 
-      IF(KP.EQ.0) GOTO 280 
-      KPA=IABS(KP) 
-      KCP=LYCOMP(KPA) 
-      IF(KPA.GT.80) MHADDY=1 
-      IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN 
-        KFP=KP 
-      ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN 
-        KFP=KFS*KP 
-      ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN 
-        KFP=-KFS*MOD(KFA/10,10) 
-      ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN 
-        KFP=KFS*(100*MOD(KFA/10,100)+3) 
-      ELSEIF(KPA.EQ.81) THEN 
-        KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1) 
-      ELSEIF(KP.EQ.82) THEN 
-        CALL LYKFDI(-KFS*INT(1.+(2.+PARJ(2))*RLY(0)),0,KFP,KDUMP) 
-        IF(KFP.EQ.0) GOTO 260 
-        MSTJ(93)=1 
-        IF(PV(1,5).LT.PARJ(32)+2.*UYMASS(KFP)) GOTO 260 
-      ELSEIF(KP.EQ.-82) THEN 
-        KFP=-KFP 
-        IF(IABS(KFP).GT.10) KFP=KFP+ISIGN(10000,KFP) 
-      ENDIF 
-      IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=LYCOMP(KFP) 
-C...Add decay product to event record or to quark flavour list. 
-      KFPA=IABS(KFP) 
-      KQP=KCHG(KCP,2) 
-      IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN 
-        NQ=NQ+1 
-        KFLO(NQ)=KFP 
-        MSTJ(93)=2 
-        PSQ=PSQ+UYMASS(KFLO(NQ)) 
-      ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND. 
-     &MOD(NQ,2).EQ.1) THEN 
-        NQ=NQ-1 
-        PS=PS-P(I,5) 
-        K(I,1)=1 
-        KFI=K(I,2) 
-        CALL LYKFDI(KFP,KFI,KFLDMP,K(I,2)) 
-        IF(K(I,2).EQ.0) GOTO 260 
-        MSTJ(93)=1 
-        P(I,5)=UYMASS(K(I,2)) 
-        PS=PS+P(I,5) 
-      ELSE 
-        I=I+1 
-        NP=NP+1 
-        IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1 
-        IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1 
-        K(I,1)=1+MOD(NQ,2) 
-        IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2 
-        IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1 
-        K(I,2)=KFP 
-        K(I,3)=IP 
-        K(I,4)=0 
-        K(I,5)=0 
-        P(I,5)=UYMASS(KFP) 
-        IF(MMAT.EQ.45.AND.KFPA.EQ.89) P(I,5)=PARJ(32) 
-        PS=PS+P(I,5) 
-      ENDIF 
-  280 CONTINUE 
-C...Check masses for resonance decays. 
-      IF(MHADDY.EQ.0) THEN 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240 
-      ENDIF 
-C...Choose decay multiplicity in phase space model. 
-  290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN 
-        PSP=PS 
-        CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1)) 
-        IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63) 
-  300   NTRY=NTRY+1 
-        IF(NTRY.GT.1000) THEN 
-          CALL LYERRM(14,'(LYDECY:) caught in infinite loop') 
-          IF(MSTU(21).GE.1) RETURN 
-        ENDIF 
-        IF(MMAT.LE.20) THEN 
-          GAUSS=SQRT(-2.*CNDE*LOG(MAX(1E-10,RLY(0))))* 
-     &    SIN(PARU(2)*RLY(0)) 
-          ND=0.5+0.5*NP+0.25*NQ+CNDE+GAUSS 
-          IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300 
-          IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300 
-          IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300 
-          IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300 
-        ELSE 
-          ND=MMAT-20 
-        ENDIF 
-C...Form hadrons from flavour content. 
-        DO 310 JT=1,4 
-        KFL1(JT)=KFLO(JT) 
-  310   CONTINUE 
-        IF(ND.EQ.NP+NQ/2) GOTO 330 
-        DO 320 I=N+NP+1,N+ND-NQ/2 
-        JT=1+INT((NQ-1)*RLY(0)) 
-        CALL LYKFDI(KFL1(JT),0,KFL2,K(I,2)) 
-        IF(K(I,2).EQ.0) GOTO 300 
-        KFL1(JT)=-KFL2 
-  320   CONTINUE 
-  330   JT=2 
-        JT2=3 
-        JT3=4 
-        IF(NQ.EQ.4.AND.RLY(0).LT.PARJ(66)) JT=4 
-        IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))* 
-     &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3 
-        IF(JT.EQ.3) JT2=2 
-        IF(JT.EQ.4) JT3=2 
-        CALL LYKFDI(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2)) 
-        IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300 
-        IF(NQ.EQ.4) CALL LYKFDI(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2)) 
-        IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300 
-C...Check that sum of decay product masses not too large. 
-        PS=PSP 
-        DO 340 I=N+NP+1,N+ND 
-        K(I,1)=1 
-        K(I,3)=IP 
-        K(I,4)=0 
-        K(I,5)=0 
-        P(I,5)=UYMASS(K(I,2)) 
-        PS=PS+P(I,5) 
-  340   CONTINUE 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300 
-C...Rescale energy to subtract off spectator quark mass. 
-      ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44.OR.MMAT.EQ.45) 
-     &.AND.NP.GE.3) THEN 
-        PS=PS-P(N+NP,5) 
-        PQT=(P(N+NP,5)+PARJ(65))/PV(1,5) 
-        DO 350 J=1,5 
-        P(N+NP,J)=PQT*PV(1,J) 
-        PV(1,J)=(1.-PQT)*PV(1,J) 
-  350   CONTINUE 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260 
-        ND=NP-1 
-        MREM=1 
-C...Phase space factors imposed in W decay. 
-      ELSEIF(MMAT.EQ.46) THEN 
-        MSTJ(93)=1 
-        PSMC=UYMASS(K(N+1,2)) 
-        MSTJ(93)=1 
-        PSMC=PSMC+UYMASS(K(N+2,2)) 
-        IF(MAX(PS,PSMC)+PARJ(32).GT.PV(1,5)) GOTO 240 
-        HR1=(P(N+1,5)/PV(1,5))**2 
-        HR2=(P(N+2,5)/PV(1,5))**2 
-        IF((1.-HR1-HR2)*(2.+HR1+HR2)*SQRT((1.-HR1-HR2)**2-4.*HR1*HR2) 
-     &  .LT.2.*RLY(0)) GOTO 240 
-        ND=NP 
-C...Fully specified final state: check mass broadening effects. 
-      ELSE 
-        IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260 
-        ND=NP 
-      ENDIF 
-C...Select W mass in decay Q -> W + q, without W propagator. 
-      IF(MMAT.EQ.45.AND.MSTJ(25).LE.0) THEN 
-        HLQ=(PARJ(32)/PV(1,5))**2 
-        HUQ=(1.-(P(N+2,5)+PARJ(64))/PV(1,5))**2 
-        HRQ=(P(N+2,5)/PV(1,5))**2 
-  360   HW=HLQ+RLY(0)*(HUQ-HLQ) 
-        IF(HMEPS(HW).LT.RLY(0)) GOTO 360 
-        P(N+1,5)=PV(1,5)*SQRT(HW) 
-C...Ditto, including W propagator. Divide mass range into three regions. 
-      ELSEIF(MMAT.EQ.45) THEN 
-        HQW=(PV(1,5)/PMAS(24,1))**2 
-        HLW=(PARJ(32)/PMAS(24,1))**2 
-        HUW=((PV(1,5)-P(N+2,5)-PARJ(64))/PMAS(24,1))**2 
-        HRQ=(P(N+2,5)/PV(1,5))**2 
-        HG=PMAS(24,2)/PMAS(24,1) 
-        HATL=ATAN((HLW-1.)/HG) 
-        HM=MIN(1.,HUW-0.001) 
-        HMV1=HMEPS(HM/HQW)/((HM-1.)**2+HG**2) 
-  370   HM=HM-HG 
-        HMV2=HMEPS(HM/HQW)/((HM-1.)**2+HG**2) 
-        IF(HMV2.GT.HMV1.AND.HM-HG.GT.HLW) THEN 
-          HMV1=HMV2 
-          GOTO 370 
-        ENDIF 
-        HMV=MIN(2.*HMV1,HMEPS(HM/HQW)/HG**2) 
-        HM1=1.-SQRT(1./HMV-HG**2) 
-        IF(HM1.GT.HLW.AND.HM1.LT.HM) THEN 
-          HM=HM1 
-        ELSEIF(HMV2.LE.HMV1) THEN 
-          HM=MAX(HLW,HM-MIN(0.1,1.-HM)) 
-        ENDIF 
-        HATM=ATAN((HM-1.)/HG) 
-        HWT1=(HATM-HATL)/HG 
-        HWT2=HMV*(MIN(1.,HUW)-HM) 
-        HWT3=0. 
-        IF(HUW.GT.1.) THEN 
-          HATU=ATAN((HUW-1.)/HG) 
-          HMP1=HMEPS(1./HQW) 
-          HWT3=HMP1*HATU/HG 
-        ENDIF 
-C...Select mass region and W mass there. Accept according to weight. 
-  380   HREG=RLY(0)*(HWT1+HWT2+HWT3) 
-        IF(HREG.LE.HWT1) THEN 
-          HW=1.+HG*TAN(HATL+RLY(0)*(HATM-HATL)) 
-          HACC=HMEPS(HW/HQW) 
-        ELSEIF(HREG.LE.HWT1+HWT2) THEN 
-          HW=HM+RLY(0)*(MIN(1.,HUW)-HM) 
-          HACC=HMEPS(HW/HQW)/((HW-1.)**2+HG**2)/HMV 
-        ELSE 
-          HW=1.+HG*TAN(RLY(0)*HATU) 
-          HACC=HMEPS(HW/HQW)/HMP1 
-        ENDIF 
-        IF(HACC.LT.RLY(0)) GOTO 380 
-        P(N+1,5)=PMAS(24,1)*SQRT(HW) 
-      ENDIF 
-C...Determine position of grandmother, number of sisters, Q -> W sign. 
-      NM=0 
-      KFAS=0 
-      MSGN=0 
-      IF(MMAT.EQ.3.OR.MMAT.EQ.46) THEN 
-        IM=K(IP,3) 
-        IF(IM.LT.0.OR.IM.GE.IP) IM=0 
-        IF(MMAT.EQ.46.AND.MSTJ(27).EQ.1) THEN 
-          IM=0 
-        ELSEIF(MMAT.EQ.46.AND.MSTJ(27).GE.2.AND.IM.NE.0) THEN 
-          IF(K(IM,2).EQ.94) THEN 
-            IM=K(K(IM,3),3) 
-            IF(IM.LT.0.OR.IM.GE.IP) IM=0 
-          ENDIF 
-        ENDIF 
-        IF(IM.NE.0) KFAM=IABS(K(IM,2)) 
-        IF(IM.NE.0.AND.MMAT.EQ.3) THEN 
-          DO 390 IL=MAX(IP-2,IM+1),MIN(IP+2,N) 
-          IF(K(IL,3).EQ.IM) NM=NM+1 
-          IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL 
-  390     CONTINUE 
-          IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR. 
-     &    MOD(KFAM/1000,10).NE.0) NM=0 
-          IF(NM.EQ.2) THEN 
-            KFAS=IABS(K(ISIS,2)) 
-            IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR. 
-     &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0 
-          ENDIF 
-        ELSEIF(IM.NE.0.AND.MMAT.EQ.46) THEN 
-          MSGN=ISIGN(1,K(IM,2)*K(IP,2)) 
-          IF(KFAM.GT.100.AND.MOD(KFAM/1000,10).EQ.0) MSGN= 
-     &    MSGN*(-1)**MOD(KFAM/100,10) 
-        ENDIF 
-      ENDIF 
-C...Kinematics of one-particle decays. 
-      IF(ND.EQ.1) THEN 
-        DO 400 J=1,4 
-        P(N+1,J)=P(IP,J) 
-  400   CONTINUE 
-        GOTO 660 
-      ENDIF 
-C...Calculate maximum weight ND-particle decay. 
-      PV(ND,5)=P(N+ND,5) 
-      IF(ND.GE.3) THEN 
-        WTMAX=1./WTCOR(ND-2) 
-        PMAX=PV(1,5)-PS+P(N+ND,5) 
-        PMIN=0. 
-        DO 410 IL=ND-1,1,-1 
-        PMAX=PMAX+P(N+IL,5) 
-        PMIN=PMIN+P(N+IL+1,5) 
-        WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5)) 
-  410   CONTINUE 
-      ENDIF 
-C...Find virtual gamma mass in Dalitz decay. 
-  420 IF(ND.EQ.2) THEN 
-      ELSEIF(MMAT.EQ.2) THEN 
-        PMES=4.*PMAS(11,1)**2 
-        PMRHO2=PMAS(131,1)**2 
-        PGRHO2=PMAS(131,2)**2 
-  430   PMST=PMES*(P(IP,5)**2/PMES)**RLY(0) 
-        WT=(1+0.5*PMES/PMST)*SQRT(MAX(0.,1.-PMES/PMST))* 
-     &  (1.-PMST/P(IP,5)**2)**3*(1.+PGRHO2/PMRHO2)/ 
-     &  ((1.-PMST/PMRHO2)**2+PGRHO2/PMRHO2) 
-        IF(WT.LT.RLY(0)) GOTO 430 
-        PV(2,5)=MAX(2.00001*PMAS(11,1),SQRT(PMST)) 
-C...M-generator gives weight. If rejected, try again. 
-      ELSE 
-  440   RORD(1)=1. 
-        DO 470 IL1=2,ND-1 
-        RSAV=RLY(0) 
-        DO 450 IL2=IL1-1,1,-1 
-        IF(RSAV.LE.RORD(IL2)) GOTO 460 
-        RORD(IL2+1)=RORD(IL2) 
-  450   CONTINUE 
-  460   RORD(IL2+1)=RSAV 
-  470   CONTINUE 
-        RORD(ND)=0. 
-        WT=1. 
-        DO 480 IL=ND-1,1,-1 
-        PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*(PV(1,5)-PS) 
-        WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5)) 
-  480   CONTINUE 
-        IF(WT.LT.RLY(0)*WTMAX) GOTO 440 
-      ENDIF 
-C...Perform two-particle decays in respective CM frame. 
-  490 DO 510 IL=1,ND-1 
-      PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5)) 
-      UE(3)=2.*RLY(0)-1. 
-      PHI=PARU(2)*RLY(0) 
-      UE(1)=SQRT(1.-UE(3)**2)*COS(PHI) 
-      UE(2)=SQRT(1.-UE(3)**2)*SIN(PHI) 
-      DO 500 J=1,3 
-      P(N+IL,J)=PA*UE(J) 
-      PV(IL+1,J)=-PA*UE(J) 
-  500 CONTINUE 
-      P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2) 
-      PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2) 
-  510 CONTINUE 
-C...Lorentz transform decay products to lab frame. 
-      DO 520 J=1,4 
-      P(N+ND,J)=PV(ND,J) 
-  520 CONTINUE 
-      DO 560 IL=ND-1,1,-1 
-      DO 530 J=1,3 
-      BE(J)=PV(IL,J)/PV(IL,4) 
-  530 CONTINUE 
-      GA=PV(IL,4)/PV(IL,5) 
-      DO 550 I=N+IL,N+ND 
-      BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3) 
-      DO 540 J=1,3 
-      P(I,J)=P(I,J)+GA*(GA*BEP/(1.+GA)+P(I,4))*BE(J) 
-  540 CONTINUE 
-      P(I,4)=GA*(P(I,4)+BEP) 
-  550 CONTINUE 
-  560 CONTINUE 
-C...Check that no infinite loop in matrix element weight. 
-      NTRY=NTRY+1 
-      IF(NTRY.GT.800) GOTO 590 
-C...Matrix elements for omega and phi decays. 
-      IF(MMAT.EQ.1) THEN 
-        WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2 
-     &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2 
-     &  +2.*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3) 
-        IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001).LT.RLY(0)) GOTO 420 
-C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-. 
-      ELSEIF(MMAT.EQ.2) THEN 
-        FOUR12=FOUR(N+1,N+2) 
-        FOUR13=FOUR(N+1,N+3) 
-        WT=(PMST-0.5*PMES)*(FOUR12**2+FOUR13**2)+ 
-     &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2) 
-        IF(WT.LT.RLY(0)*0.25*PMST*(P(IP,5)**2-PMST)**2) GOTO 490 
-C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar, 
-C...V vector), of form cos**2(theta02) in V1 rest frame, and for 
-C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02). 
-      ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN 
-        FOUR10=FOUR(IP,IM) 
-        FOUR12=FOUR(IP,N+1) 
-        FOUR02=FOUR(IM,N+1) 
-        PMS1=P(IP,5)**2 
-        PMS0=P(IM,5)**2 
-        PMS2=P(N+1,5)**2 
-        IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2 
-        IF(KFAS.EQ.22) HNUM=PMS1*(2.*FOUR10*FOUR12*FOUR02- 
-     &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2) 
-        HNUM=MAX(1E-6*PMS1**2*PMS0*PMS2,HNUM) 
-        HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2) 
-        IF(HNUM.LT.RLY(0)*HDEN) GOTO 490 
-C...Matrix element for "onium" -> g + g + g or gamma + g + g. 
-      ELSEIF(MMAT.EQ.4) THEN 
-        HX1=2.*FOUR(IP,N+1)/P(IP,5)**2 
-        HX2=2.*FOUR(IP,N+2)/P(IP,5)**2 
-        HX3=2.*FOUR(IP,N+3)/P(IP,5)**2 
-        WT=((1.-HX1)/(HX2*HX3))**2+((1.-HX2)/(HX1*HX3))**2+ 
-     &  ((1.-HX3)/(HX1*HX2))**2 
-        IF(WT.LT.2.*RLY(0)) GOTO 420 
-        IF(K(IP+1,2).EQ.22.AND.(1.-HX1)*P(IP,5)**2.LT.4.*PARJ(32)**2) 
-     &  GOTO 420 
-C...Effective matrix element for nu spectrum in tau -> nu + hadrons. 
-      ELSEIF(MMAT.EQ.41) THEN 
-        HX1=2.*FOUR(IP,N+1)/P(IP,5)**2 
-        HXM=MIN(0.75,2.*(1.-PS/P(IP,5))) 
-        IF(HX1*(3.-2.*HX1).LT.RLY(0)*HXM*(3.-2.*HXM)) GOTO 420 
-C...Matrix elements for weak decays (only semileptonic for c and b) 
-      ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) 
-     &.AND.ND.EQ.3) THEN 
-        IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3) 
-        IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3) 
-        IF(WT.LT.RLY(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 420 
-      ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN 
-        DO 580 J=1,4 
-        P(N+NP+1,J)=0. 
-        DO 570 IS=N+3,N+NP 
-        P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J) 
-  570   CONTINUE 
-  580   CONTINUE 
-        IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1) 
-        IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1) 
-        IF(WT.LT.RLY(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 420 
-C...Angular distribution in W decay. 
-      ELSEIF(MMAT.EQ.46.AND.MSGN.NE.0) THEN 
-        IF(MSGN.GT.0) WT=FOUR(IM,N+1)*FOUR(N+2,IP+1) 
-        IF(MSGN.LT.0) WT=FOUR(IM,N+2)*FOUR(N+1,IP+1) 
-        IF(WT.LT.RLY(0)*P(IM,5)**4/WTCOR(10)) GOTO 490 
-      ENDIF 
-C...Scale back energy and reattach spectator. 
-  590 IF(MREM.EQ.1) THEN 
-        DO 600 J=1,5 
-        PV(1,J)=PV(1,J)/(1.-PQT) 
-  600   CONTINUE 
-        ND=ND+1 
-        MREM=0 
-      ENDIF 
-C...Low invariant mass for system with spectator quark gives particle, 
-C...not two jets. Readjust momenta accordingly. 
-      IF((MMAT.EQ.31.OR.MMAT.EQ.45).AND.ND.EQ.3) THEN 
-        MSTJ(93)=1 
-        PM2=UYMASS(K(N+2,2)) 
-        MSTJ(93)=1 
-        PM3=UYMASS(K(N+3,2)) 
-        IF(P(N+2,5)**2+P(N+3,5)**2+2.*FOUR(N+2,N+3).GE. 
-     &  (PARJ(32)+PM2+PM3)**2) GOTO 660 
-        K(N+2,1)=1 
-        KFTEMP=K(N+2,2) 
-        CALL LYKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2)) 
-        IF(K(N+2,2).EQ.0) GOTO 260 
-        P(N+2,5)=UYMASS(K(N+2,2)) 
-        PS=P(N+1,5)+P(N+2,5) 
-        PV(2,5)=P(N+2,5) 
-        MMAT=0 
-        ND=2 
-        GOTO 490 
-      ELSEIF(MMAT.EQ.44) THEN 
-        MSTJ(93)=1 
-        PM3=UYMASS(K(N+3,2)) 
-        MSTJ(93)=1 
-        PM4=UYMASS(K(N+4,2)) 
-        IF(P(N+3,5)**2+P(N+4,5)**2+2.*FOUR(N+3,N+4).GE. 
-     &  (PARJ(32)+PM3+PM4)**2) GOTO 630 
-        K(N+3,1)=1 
-        KFTEMP=K(N+3,2) 
-        CALL LYKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2)) 
-        IF(K(N+3,2).EQ.0) GOTO 260 
-        P(N+3,5)=UYMASS(K(N+3,2)) 
-        DO 610 J=1,3 
-        P(N+3,J)=P(N+3,J)+P(N+4,J) 
-  610   CONTINUE 
-        P(N+3,4)=SQRT(P(N+3,1)**2+P(N+3,2)**2+P(N+3,3)**2+P(N+3,5)**2) 
-        HA=P(N+1,4)**2-P(N+2,4)**2 
-        HB=HA-(P(N+1,5)**2-P(N+2,5)**2) 
-        HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+ 
-     &  (P(N+1,3)-P(N+2,3))**2 
-        HD=(PV(1,4)-P(N+3,4))**2 
-        HE=HA**2-2.*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2 
-        HF=HD*HC-HB**2 
-        HG=HD*HC-HA*HB 
-        HH=(SQRT(HG**2+HE*HF)-HG)/(2.*HF) 
-        DO 620 J=1,3 
-        PCOR=HH*(P(N+1,J)-P(N+2,J)) 
-        P(N+1,J)=P(N+1,J)+PCOR 
-        P(N+2,J)=P(N+2,J)-PCOR 
-  620   CONTINUE 
-        P(N+1,4)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2+P(N+1,5)**2) 
-        P(N+2,4)=SQRT(P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2+P(N+2,5)**2) 
-        ND=ND-1 
-      ENDIF 
-C...Check invariant mass of W jets. May give one particle or start over. 
-  630 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) 
-     &.AND.IABS(K(N+1,2)).LT.10) THEN 
-        PMR=SQRT(MAX(0.,P(N+1,5)**2+P(N+2,5)**2+2.*FOUR(N+1,N+2))) 
-        MSTJ(93)=1 
-        PM1=UYMASS(K(N+1,2)) 
-        MSTJ(93)=1 
-        PM2=UYMASS(K(N+2,2)) 
-        IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 640 
-        KFLDUM=INT(1.5+RLY(0)) 
-        CALL LYKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1) 
-        CALL LYKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2) 
-        IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260 
-        PSM=UYMASS(KF1)+UYMASS(KF2) 
-        IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 640 
-        IF(MMAT.GE.43.AND.PMR.GT.0.2*PARJ(32)+PSM) GOTO 640 
-        IF(MMAT.EQ.48) GOTO 420 
-        IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260 
-        K(N+1,1)=1 
-        KFTEMP=K(N+1,2) 
-        CALL LYKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2)) 
-        IF(K(N+1,2).EQ.0) GOTO 260 
-        P(N+1,5)=UYMASS(K(N+1,2)) 
-        K(N+2,2)=K(N+3,2) 
-        P(N+2,5)=P(N+3,5) 
-        PS=P(N+1,5)+P(N+2,5) 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260 
-        PV(2,5)=P(N+3,5) 
-        MMAT=0 
-        ND=2 
-        GOTO 490 
-      ENDIF 
-C...Phase space decay of partons from W decay. 
-  640 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN 
-        KFLO(1)=K(N+1,2) 
-        KFLO(2)=K(N+2,2) 
-        K(N+1,1)=K(N+3,1) 
-        K(N+1,2)=K(N+3,2) 
-        DO 650 J=1,5 
-        PV(1,J)=P(N+1,J)+P(N+2,J) 
-        P(N+1,J)=P(N+3,J) 
-  650   CONTINUE 
-        PV(1,5)=PMR 
-        N=N+1 
-        NP=0 
-        NQ=2 
-        PS=0. 
-        MSTJ(93)=2 
-        PSQ=UYMASS(KFLO(1)) 
-        MSTJ(93)=2 
-        PSQ=PSQ+UYMASS(KFLO(2)) 
-        MMAT=11 
-        GOTO 290 
-      ENDIF 
-C...Boost back for rapidly moving particle. 
-  660 N=N+ND 
-      IF(MBST.EQ.1) THEN 
-        DO 670 J=1,3 
-        BE(J)=P(IP,J)/P(IP,4) 
-  670   CONTINUE 
-        GA=P(IP,4)/P(IP,5) 
-        DO 690 I=NSAV+1,N 
-        BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3) 
-        DO 680 J=1,3 
-        P(I,J)=P(I,J)+GA*(GA*BEP/(1.+GA)+P(I,4))*BE(J) 
-  680   CONTINUE 
-        P(I,4)=GA*(P(I,4)+BEP) 
-  690   CONTINUE 
-      ENDIF 
-C...Fill in position of decay vertex. 
-      DO 710 I=NSAV+1,N 
-      DO 700 J=1,4 
-      V(I,J)=VDCY(J) 
-  700 CONTINUE 
-      V(I,5)=0. 
-  710 CONTINUE 
-C...Set up for parton shower evolution from jets. 
-      IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+1,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+1,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+1) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+1) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=-(NSAV+1) 
-      ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=NSAV+2 
-      ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44.OR.MMAT.EQ.46) 
-     &.AND.IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+2,1)=3 
-        K(NSAV+1,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+1,5)=MSTU(5)*(NSAV+2) 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+1) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+1) 
-        MSTJ(92)=NSAV+1 
-      ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44.OR.MMAT.EQ.46) 
-     &.AND.IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN 
-        MSTJ(92)=NSAV+1 
-      ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21) 
-     &THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        KCP=LYCOMP(K(NSAV+1,2)) 
-        KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2)) 
-        JCON=4 
-        IF(KQP.LT.0) JCON=5 
-        K(NSAV+1,JCON)=MSTU(5)*(NSAV+2) 
-        K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1) 
-        K(NSAV+2,JCON)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=NSAV+1 
-      ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+1,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+1,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+1) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+1) 
-        MSTJ(92)=NSAV+1 
-C...Set up for parton shower evolution in t -> W + b. 
-      ELSEIF(MSTJ(27).GE.1.AND.MMAT.EQ.45.AND.ND.EQ.3) THEN 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=NSAV+1 
-      ENDIF 
-C...Mark decayed particle; special option for B-B~ mixing. 
-      IF(K(IP,1).EQ.5) K(IP,1)=15 
-      IF(K(IP,1).LE.10) K(IP,1)=11 
-      IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12 
-      K(IP,4)=NSAV+1 
-      K(IP,5)=N 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYKFDI(KFL1,KFL2,KFL3,KF) 
-C...Purpose: to generate a new flavour pair and combine off a hadron. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT1/,/LYDAT2/ 
-C...Default flavour values. Input consistency checks. 
-      KF1A=IABS(KFL1) 
-      KF2A=IABS(KFL2) 
-      KFL3=0 
-      KF=0 
-      IF(KF1A.EQ.0) RETURN 
-      IF(KF2A.NE.0) THEN 
-        IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN 
-        IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN 
-        IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN 
-      ENDIF 
-C...Check if tabulated flavour probabilities are to be used. 
-      IF(MSTJ(15).EQ.1) THEN 
-        KTAB1=-1 
-        IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A 
-        KFL1A=MOD(KF1A/1000,10) 
-        KFL1B=MOD(KF1A/100,10) 
-        KFL1S=MOD(KF1A,10) 
-        IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4) 
-     &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2 
-        IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1 
-        IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A 
-        KTAB2=0 
-        IF(KF2A.NE.0) THEN 
-          KTAB2=-1 
-          IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A 
-          KFL2A=MOD(KF2A/1000,10) 
-          KFL2B=MOD(KF2A/100,10) 
-          KFL2S=MOD(KF2A,10) 
-          IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4) 
-     &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2 
-          IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1 
-        ENDIF 
-        IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 150 
-      ENDIF 
-C...Parameters and breaking diquark parameter combinations. 
-  100 PAR2=PARJ(2) 
-      PAR3=PARJ(3) 
-      PAR4=3.*PARJ(4) 
-      IF(MSTJ(12).GE.2) THEN 
-        PAR3M=SQRT(PARJ(3)) 
-        PAR4M=1./(3.*SQRT(PARJ(4))) 
-        PARDM=PARJ(7)/(PARJ(7)+PAR3M*PARJ(6)) 
-        PARS0=PARJ(5)*(2.+(1.+PAR2*PAR3M*PARJ(7))*(1.+PAR4M)) 
-        PARS1=PARJ(7)*PARS0/(2.*PAR3M)+PARJ(5)*(PARJ(6)*(1.+PAR4M)+ 
-     &  PAR2*PAR3M*PARJ(6)*PARJ(7)) 
-        PARS2=PARJ(5)*2.*PARJ(6)*PARJ(7)*(PAR2*PARJ(7)+(1.+PAR4M)/PAR3M) 
-        PARSM=MAX(PARS0,PARS1,PARS2) 
-        PAR4=PAR4*(1.+PARSM)/(1.+PARSM/(3.*PAR4M)) 
-      ENDIF 
-C...Choice of whether to generate meson or baryon. 
-  110 MBARY=0 
-      KFDA=0 
-      IF(KF1A.LE.10) THEN 
-        IF(KF2A.EQ.0.AND.MSTJ(12).GE.1.AND.(1.+PARJ(1))*RLY(0).GT.1.) 
-     &  MBARY=1 
-        IF(KF2A.GT.10) MBARY=2 
-        IF(KF2A.GT.10.AND.KF2A.LE.10000) KFDA=KF2A 
-      ELSE 
-        MBARY=2 
-        IF(KF1A.LE.10000) KFDA=KF1A 
-      ENDIF 
-C...Possibility of process diquark -> meson + new diquark. 
-      IF(KFDA.NE.0.AND.MSTJ(12).GE.2) THEN 
-        KFLDA=MOD(KFDA/1000,10) 
-        KFLDB=MOD(KFDA/100,10) 
-        KFLDS=MOD(KFDA,10) 
-        WTDQ=PARS0 
-        IF(MAX(KFLDA,KFLDB).EQ.3) WTDQ=PARS1 
-        IF(MIN(KFLDA,KFLDB).EQ.3) WTDQ=PARS2 
-        IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M) 
-        IF((1.+WTDQ)*RLY(0).GT.1.) MBARY=-1 
-        IF(MBARY.EQ.-1.AND.KF2A.NE.0) RETURN 
-      ENDIF 
-C...Flavour for meson, possibly with new flavour. 
-      IF(MBARY.LE.0) THEN 
-        KFS=ISIGN(1,KFL1) 
-        IF(MBARY.EQ.0) THEN 
-          IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLY(0)),-KFL1) 
-          KFLA=MAX(KF1A,KF2A+IABS(KFL3)) 
-          KFLB=MIN(KF1A,KF2A+IABS(KFL3)) 
-          IF(KFLA.NE.KF1A) KFS=-KFS 
-C...Splitting of diquark into meson plus new diquark. 
-        ELSE 
-          KFL1A=MOD(KF1A/1000,10) 
-          KFL1B=MOD(KF1A/100,10) 
-  120     KFL1D=KFL1A+INT(RLY(0)+0.5)*(KFL1B-KFL1A) 
-          KFL1E=KFL1A+KFL1B-KFL1D 
-          IF((KFL1D.EQ.3.AND.RLY(0).GT.PARDM).OR.(KFL1E.EQ.3.AND. 
-     &    RLY(0).LT.PARDM)) THEN 
-            KFL1D=KFL1A+KFL1B-KFL1D 
-            KFL1E=KFL1A+KFL1B-KFL1E 
-          ENDIF 
-          KFL3A=1+INT((2.+PAR2*PAR3M*PARJ(7))*RLY(0)) 
-          IF((KFL1E.NE.KFL3A.AND.RLY(0).GT.(1.+PAR4M)/MAX(2.,1.+PAR4M)) 
-     &    .OR.(KFL1E.EQ.KFL3A.AND.RLY(0).GT.2./MAX(2.,1.+PAR4M))) 
-     &    GOTO 120 
-          KFLDS=3 
-          IF(KFL1E.NE.KFL3A) KFLDS=2*INT(RLY(0)+1./(1.+PAR4M))+1 
-          KFL3=ISIGN(10000+1000*MAX(KFL1E,KFL3A)+100*MIN(KFL1E,KFL3A)+ 
-     &    KFLDS,-KFL1) 
-          KFLA=MAX(KFL1D,KFL3A) 
-          KFLB=MIN(KFL1D,KFL3A) 
-          IF(KFLA.NE.KFL1D) KFS=-KFS 
-        ENDIF 
-C...Form meson, with spin and flavour mixing for diagonal states. 
-        IF(KFLA.LE.2) KMUL=INT(PARJ(11)+RLY(0)) 
-        IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+RLY(0)) 
-        IF(KFLA.GE.4) KMUL=INT(PARJ(13)+RLY(0)) 
-        IF(KMUL.EQ.0.AND.PARJ(14).GT.0.) THEN 
-          IF(RLY(0).LT.PARJ(14)) KMUL=2 
-        ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0.) THEN 
-          RMUL=RLY(0) 
-          IF(RMUL.LT.PARJ(15)) KMUL=3 
-          IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4 
-          IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5 
-        ENDIF 
-        KFLS=3 
-        IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1 
-        IF(KMUL.EQ.5) KFLS=5 
-        IF(KFLA.NE.KFLB) THEN 
-          KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA 
-        ELSE 
-          RMIX=RLY(0) 
-          IMIX=2*KFLA+10*KMUL 
-          IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+ 
-     &    INT(RMIX+PARF(IMIX)))+KFLS 
-          IF(KFLA.GE.4) KF=110*KFLA+KFLS 
-        ENDIF 
-        IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF) 
-        IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF) 
-C...Optional extra suppression of eta and eta'. 
-        IF(KF.EQ.221) THEN 
-          IF(RLY(0).GT.PARJ(25)) GOTO 110 
-        ELSEIF(KF.EQ.331) THEN 
-          IF(RLY(0).GT.PARJ(26)) GOTO 110 
-        ENDIF 
-C...Generate diquark flavour. 
-      ELSE 
-  130   IF(KF1A.LE.10.AND.KF2A.EQ.0) THEN 
-          KFLA=KF1A 
-  140     KFLB=1+INT((2.+PAR2*PAR3)*RLY(0)) 
-          KFLC=1+INT((2.+PAR2*PAR3)*RLY(0)) 
-          KFLDS=1 
-          IF(KFLB.GE.KFLC) KFLDS=3 
-          IF(KFLDS.EQ.1.AND.PAR4*RLY(0).GT.1.) GOTO 140 
-          IF(KFLDS.EQ.3.AND.PAR4.LT.RLY(0)) GOTO 140 
-          KFL3=ISIGN(1000*MAX(KFLB,KFLC)+100*MIN(KFLB,KFLC)+KFLDS,KFL1) 
-C...Take diquark flavour from input. 
-        ELSEIF(KF1A.LE.10) THEN 
-          KFLA=KF1A 
-          KFLB=MOD(KF2A/1000,10) 
-          KFLC=MOD(KF2A/100,10) 
-          KFLDS=MOD(KF2A,10) 
-C...Generate (or take from input) quark to go with diquark. 
-        ELSE 
-          IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLY(0)),KFL1) 
-          KFLA=KF2A+IABS(KFL3) 
-          KFLB=MOD(KF1A/1000,10) 
-          KFLC=MOD(KF1A/100,10) 
-          KFLDS=MOD(KF1A,10) 
-        ENDIF 
-C...SU(6) factors for formation of baryon. Try again if fails. 
-        KBARY=KFLDS 
-        IF(KFLDS.EQ.3.AND.KFLB.NE.KFLC) KBARY=5 
-        IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC) KBARY=KBARY+1 
-        WT=PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY) 
-        IF(MBARY.EQ.1.AND.MSTJ(12).GE.2) THEN 
-          WTDQ=PARS0 
-          IF(MAX(KFLB,KFLC).EQ.3) WTDQ=PARS1 
-          IF(MIN(KFLB,KFLC).EQ.3) WTDQ=PARS2 
-          IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M) 
-          IF(KFLDS.EQ.1) WT=WT*(1.+WTDQ)/(1.+PARSM/(3.*PAR4M)) 
-          IF(KFLDS.EQ.3) WT=WT*(1.+WTDQ)/(1.+PARSM) 
-        ENDIF 
-        IF(KF2A.EQ.0.AND.WT.LT.RLY(0)) GOTO 130 
-C...Form baryon. Distinguish Lambda- and Sigmalike baryons. 
-        KFLD=MAX(KFLA,KFLB,KFLC) 
-        KFLF=MIN(KFLA,KFLB,KFLC) 
-        KFLE=KFLA+KFLB+KFLC-KFLD-KFLF 
-        KFLS=2 
-        IF((PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY))*RLY(0).GT. 
-     &  PARF(60+KBARY)) KFLS=4 
-        KFLL=0 
-        IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF) THEN 
-          IF(KFLDS.EQ.1.AND.KFLA.EQ.KFLD) KFLL=1 
-          IF(KFLDS.EQ.1.AND.KFLA.NE.KFLD) KFLL=INT(0.25+RLY(0)) 
-          IF(KFLDS.EQ.3.AND.KFLA.NE.KFLD) KFLL=INT(0.75+RLY(0)) 
-        ENDIF 
-        IF(KFLL.EQ.0) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1) 
-        IF(KFLL.EQ.1) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1) 
-      ENDIF 
-      RETURN 
-C...Use tabulated probabilities to select new flavour and hadron. 
-  150 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN 
-        KT3L=1 
-        KT3U=6 
-      ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN 
-        KT3L=1 
-        KT3U=6 
-      ELSEIF(KTAB2.EQ.0) THEN 
-        KT3L=1 
-        KT3U=22 
-      ELSE 
-        KT3L=KTAB2 
-        KT3U=KTAB2 
-      ENDIF 
-      RFL=0. 
-      DO 170 KTS=0,2 
-      DO 160 KT3=KT3L,KT3U 
-      RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3) 
-  160 CONTINUE 
-  170 CONTINUE 
-      RFL=RLY(0)*RFL 
-      DO 190 KTS=0,2 
-      KTABS=KTS 
-      DO 180 KT3=KT3L,KT3U 
-      KTAB3=KT3 
-      RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3) 
-      IF(RFL.LE.0.) GOTO 200 
-  180 CONTINUE 
-  190 CONTINUE 
-  200 CONTINUE 
-C...Reconstruct flavour of produced quark/diquark. 
-      IF(KTAB3.LE.6) THEN 
-        KFL3A=KTAB3 
-        KFL3B=0 
-        KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13)) 
-      ELSE 
-        KFL3A=1 
-        IF(KTAB3.GE.8) KFL3A=2 
-        IF(KTAB3.GE.11) KFL3A=3 
-        IF(KTAB3.GE.16) KFL3A=4 
-        KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2 
-        KFL3=1000*KFL3A+100*KFL3B+1 
-        IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3= 
-     &  KFL3+2 
-        KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1)) 
-      ENDIF 
-C...Reconstruct meson code. 
-      IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR. 
-     &KFL3B.NE.0)) THEN 
-        RFL=RLY(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+ 
-     &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS)) 
-        KF=110+2*KTABS+1 
-        IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1 
-        IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+ 
-     &  25*KTABS)) KF=330+2*KTABS+1 
-      ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN 
-        KFLA=MAX(KTAB1,KTAB3) 
-        KFLB=MIN(KTAB1,KTAB3) 
-        KFS=ISIGN(1,KFL1) 
-        IF(KFLA.NE.KF1A) KFS=-KFS 
-        KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA 
-      ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN 
-        KFS=ISIGN(1,KFL1) 
-        IF(KFL1A.EQ.KFL3A) THEN 
-          KFLA=MAX(KFL1B,KFL3B) 
-          KFLB=MIN(KFL1B,KFL3B) 
-          IF(KFLA.NE.KFL1B) KFS=-KFS 
-        ELSEIF(KFL1A.EQ.KFL3B) THEN 
-          KFLA=KFL3A 
-          KFLB=KFL1B 
-          KFS=-KFS 
-        ELSEIF(KFL1B.EQ.KFL3A) THEN 
-          KFLA=KFL1A 
-          KFLB=KFL3B 
-        ELSEIF(KFL1B.EQ.KFL3B) THEN 
-          KFLA=MAX(KFL1A,KFL3A) 
-          KFLB=MIN(KFL1A,KFL3A) 
-          IF(KFLA.NE.KFL1A) KFS=-KFS 
-        ELSE 
-          CALL LYERRM(2,'(LYKFDI:) no matching flavours for qq -> qq') 
-          GOTO 100 
-        ENDIF 
-        KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA 
-C...Reconstruct baryon code. 
-      ELSE 
-        IF(KTAB1.GE.7) THEN 
-          KFLA=KFL3A 
-          KFLB=KFL1A 
-          KFLC=KFL1B 
-        ELSE 
-          KFLA=KFL1A 
-          KFLB=KFL3A 
-          KFLC=KFL3B 
-        ENDIF 
-        KFLD=MAX(KFLA,KFLB,KFLC) 
-        KFLF=MIN(KFLA,KFLB,KFLC) 
-        KFLE=KFLA+KFLB+KFLC-KFLD-KFLF 
-        IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1) 
-        IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1) 
-      ENDIF 
-C...Check that constructed flavour code is an allowed one. 
-      IF(KFL2.NE.0) KFL3=0 
-      KC=LYCOMP(KF) 
-      IF(KC.EQ.0) THEN 
-        CALL LYERRM(2,'(LYKFDI:) user-defined flavour probabilities '// 
-     &  'failed') 
-        GOTO 100 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYPTDI(KFL,PX,PY) 
-C...Purpose: to generate transverse momentum according to a Gaussian. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYDAT1/ 
-C...Generate p_T and azimuthal angle, gives p_x and p_y. 
-      KFLA=IABS(KFL) 
-      PT=PARJ(21)*SQRT(-LOG(MAX(1E-10,RLY(0)))) 
-      IF(PARJ(23).GT.RLY(0)) PT=PARJ(24)*PT 
-      IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT 
-      IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0. 
-      PHI=PARU(2)*RLY(0) 
-      PX=PT*COS(PHI) 
-      PY=PT*SIN(PHI) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYZDIS(KFL1,KFL2,PR,Z) 
-C...Purpose: to generate the longitudinal splitting variable z. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT1/,/LYDAT2/ 
-C...Check if heavy flavour fragmentation. 
-      KFLA=IABS(KFL1) 
-      KFLB=IABS(KFL2) 
-      KFLH=KFLA 
-      IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10) 
-C...Lund symmetric scaling function: determine parameters of shape. 
-      IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR. 
-     &MSTJ(11).GE.4) THEN 
-        FA=PARJ(41) 
-        IF(MSTJ(91).EQ.1) FA=PARJ(43) 
-        IF(KFLB.GE.10) FA=FA+PARJ(45) 
-        FBB=PARJ(42) 
-        IF(MSTJ(91).EQ.1) FBB=PARJ(44) 
-        FB=FBB*PR 
-        FC=1. 
-        IF(KFLA.GE.10) FC=FC-PARJ(45) 
-        IF(KFLB.GE.10) FC=FC+PARJ(45) 
-        IF(MSTJ(11).GE.4.AND.KFLH.GE.4.AND.KFLH.LE.5) THEN 
-          FRED=PARJ(46) 
-          IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47) 
-          FC=FC+FRED*FBB*PARF(100+KFLH)**2 
-        ELSEIF(MSTJ(11).GE.4.AND.KFLH.GE.6.AND.KFLH.LE.8) THEN 
-          FRED=PARJ(46) 
-          IF(MSTJ(11).EQ.5) FRED=PARJ(48) 
-          FC=FC+FRED*FBB*PMAS(KFLH,1)**2 
-        ENDIF 
-        MC=1 
-        IF(ABS(FC-1.).GT.0.01) MC=2 
-C...Determine position of maximum. Special cases for a = 0 or a = c. 
-        IF(FA.LT.0.02) THEN 
-          MA=1 
-          ZMAX=1. 
-          IF(FC.GT.FB) ZMAX=FB/FC 
-        ELSEIF(ABS(FC-FA).LT.0.01) THEN 
-          MA=2 
-          ZMAX=FB/(FB+FC) 
-        ELSE 
-          MA=3 
-          ZMAX=0.5*(FB+FC-SQRT((FB-FC)**2+4.*FA*FB))/(FC-FA) 
-          IF(ZMAX.GT.0.9999.AND.FB.GT.100.) ZMAX=MIN(ZMAX,1.-FA/FB) 
-        ENDIF 
-C...Subdivide z range if distribution very peaked near endpoint. 
-        MMAX=2 
-        IF(ZMAX.LT.0.1) THEN 
-          MMAX=1 
-          ZDIV=2.75*ZMAX 
-          IF(MC.EQ.1) THEN 
-            FINT=1.-LOG(ZDIV) 
-          ELSE 
-            ZDIVC=ZDIV**(1.-FC) 
-            FINT=1.+(1.-1./ZDIVC)/(FC-1.) 
-          ENDIF 
-        ELSEIF(ZMAX.GT.0.85.AND.FB.GT.1.) THEN 
-          MMAX=3 
-          FSCB=SQRT(4.+(FC/FB)**2) 
-          ZDIV=FSCB-1./ZMAX-(FC/FB)*LOG(ZMAX*0.5*(FSCB+FC/FB)) 
-          IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1.-ZMAX) 
-          ZDIV=MIN(ZMAX,MAX(0.,ZDIV)) 
-          FINT=1.+FB*(1.-ZDIV) 
-        ENDIF 
-C...Choice of z, preweighted for peaks at low or high z. 
-  100   Z=RLY(0) 
-        FPRE=1. 
-        IF(MMAX.EQ.1) THEN 
-          IF(FINT*RLY(0).LE.1.) THEN 
-            Z=ZDIV*Z 
-          ELSEIF(MC.EQ.1) THEN 
-            Z=ZDIV**Z 
-            FPRE=ZDIV/Z 
-          ELSE 
-            Z=(ZDIVC+Z*(1.-ZDIVC))**(1./(1.-FC)) 
-            FPRE=(ZDIV/Z)**FC 
-          ENDIF 
-        ELSEIF(MMAX.EQ.3) THEN 
-          IF(FINT*RLY(0).LE.1.) THEN 
-            Z=ZDIV+LOG(Z)/FB 
-            FPRE=EXP(FB*(Z-ZDIV)) 
-          ELSE 
-            Z=ZDIV+Z*(1.-ZDIV) 
-          ENDIF 
-        ENDIF 
-C...Weighting according to correct formula. 
-        IF(Z.LE.0..OR.Z.GE.1.) GOTO 100 
-        FEXP=FC*LOG(ZMAX/Z)+FB*(1./ZMAX-1./Z) 
-        IF(MA.GE.2) FEXP=FEXP+FA*LOG((1.-Z)/(1.-ZMAX)) 
-        FVAL=EXP(MAX(-50.,MIN(50.,FEXP))) 
-        IF(FVAL.LT.RLY(0)*FPRE) GOTO 100 
-C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c. 
-      ELSE 
-        FC=PARJ(50+MAX(1,KFLH)) 
-        IF(MSTJ(91).EQ.1) FC=PARJ(59) 
-  110   Z=RLY(0) 
-        IF(FC.GE.0..AND.FC.LE.1.) THEN 
-          IF(FC.GT.RLY(0)) Z=1.-Z**(1./3.) 
-        ELSEIF(FC.GT.-1.AND.FC.LT.0.) THEN 
-          IF(-4.*FC*Z*(1.-Z)**2.LT.RLY(0)*((1.-Z)**2-FC*Z)**2) GOTO 110 
-        ELSE 
-          IF(FC.GT.0.) Z=1.-Z**(1./FC) 
-          IF(FC.LT.0.) Z=Z**(-1./FC) 
-        ENDIF 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYSHOW(IP1,IP2,QMAX) 
-C...Purpose: to generate timelike parton showers from given partons. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION PMTH(5,50),PS(5),PMA(4),PMSD(4),IEP(4),IPA(4), 
-     &KFLA(4),KFLD(4),KFL(4),ITRY(4),ISI(4),ISL(4),DP(4),DPT(5,4), 
-     &KSH(0:40),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),PHIIIS(2,2), 
-     &ISII(2) 
-C...Initialization of cutoff masses etc. 
-      IF(MSTJ(41).LE.0.OR.(MSTJ(41).EQ.1.AND.QMAX.LE.PARJ(82)).OR. 
-     &QMAX.LE.MIN(PARJ(82),PARJ(83))) RETURN 
-      DO 100 IFL=0,40 
-      KSH(IFL)=0 
-  100 CONTINUE 
-      KSH(21)=1 
-      PMTH(1,21)=UYMASS(21) 
-      PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25*PARJ(82)**2) 
-      PMTH(3,21)=2.*PMTH(2,21) 
-      PMTH(4,21)=PMTH(3,21) 
-      PMTH(5,21)=PMTH(3,21) 
-      PMTH(1,22)=UYMASS(22) 
-      PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25*PARJ(83)**2) 
-      PMTH(3,22)=2.*PMTH(2,22) 
-      PMTH(4,22)=PMTH(3,22) 
-      PMTH(5,22)=PMTH(3,22) 
-      PMQTH1=PARJ(82) 
-      IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83)) 
-      PMQTH2=PMTH(2,21) 
-      IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22)) 
-      DO 110 IFL=1,8 
-      KSH(IFL)=1 
-      PMTH(1,IFL)=UYMASS(IFL) 
-      PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PMQTH1**2) 
-      PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2 
-      PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PARJ(82)**2)+PMTH(2,21) 
-      PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PARJ(83)**2)+PMTH(2,22) 
-  110 CONTINUE 
-      DO 120 IFL=11,17,2 
-      IF(MSTJ(41).GE.2) KSH(IFL)=1 
-      PMTH(1,IFL)=UYMASS(IFL) 
-      PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PARJ(83)**2) 
-      PMTH(3,IFL)=PMTH(2,IFL)+PMTH(2,22) 
-      PMTH(4,IFL)=PMTH(3,IFL) 
-      PMTH(5,IFL)=PMTH(3,IFL) 
-  120 CONTINUE 
-      PT2MIN=MAX(0.5*PARJ(82),1.1*PARJ(81))**2 
-      ALAMS=PARJ(81)**2 
-      ALFM=LOG(PT2MIN/ALAMS) 
-C...Store positions of shower initiating partons. 
-      IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN 
-        NPA=1 
-        IPA(1)=IP1 
-      ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)- 
-     &MSTU(32))) THEN 
-        NPA=2 
-        IPA(1)=IP1 
-        IPA(2)=IP2 
-      ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0 
-     &.AND.IP2.GE.-3) THEN 
-        NPA=IABS(IP2) 
-        DO 130 I=1,NPA 
-        IPA(I)=IP1+I-1 
-  130   CONTINUE 
-      ELSE 
-        CALL LYERRM(12, 
-     &  '(LYSHOW:) failed to reconstruct showering system') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Check on phase space available for emission. 
-      IREJ=0 
-      DO 140 J=1,5 
-      PS(J)=0. 
-  140 CONTINUE 
-      PM=0. 
-      DO 160 I=1,NPA 
-      KFLA(I)=IABS(K(IPA(I),2)) 
-      PMA(I)=P(IPA(I),5) 
-C...Special cutoff masses for t, l, h with variable masses.
-      IFLA=KFLA(I)
-      IF(KFLA(I).GE.6.AND.KFLA(I).LE.8) THEN
-        IFLA=37+KFLA(I)+ISIGN(2,K(IPA(I),2))
-        PMTH(1,IFLA)=PMA(I)
-        PMTH(2,IFLA)=SQRT(PMTH(1,IFLA)**2+0.25*PMQTH1**2) 
-        PMTH(3,IFLA)=PMTH(2,IFLA)+PMQTH2 
-        PMTH(4,IFLA)=SQRT(PMTH(1,IFLA)**2+0.25*PARJ(82)**2)+PMTH(2,21) 
-        PMTH(5,IFLA)=SQRT(PMTH(1,IFLA)**2+0.25*PARJ(83)**2)+PMTH(2,22) 
-      ENDIF 
-      IF(KFLA(I).LE.40) THEN 
-        IF(KSH(KFLA(I)).EQ.1) PMA(I)=PMTH(3,IFLA)
-      ENDIF 
-      PM=PM+PMA(I) 
-      IF(KFLA(I).GT.40) THEN 
-        IREJ=IREJ+1 
-      ELSE 
-        IF(KSH(KFLA(I)).EQ.0.OR.PMA(I).GT.QMAX) IREJ=IREJ+1 
-      ENDIF 
-      DO 150 J=1,4 
-      PS(J)=PS(J)+P(IPA(I),J) 
-  150 CONTINUE 
-  160 CONTINUE 
-      IF(IREJ.EQ.NPA) RETURN 
-      PS(5)=SQRT(MAX(0.,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2)) 
-      IF(NPA.EQ.1) PS(5)=PS(4) 
-      IF(PS(5).LE.PM+PMQTH1) RETURN 
-C...Check if 3-jet matrix elements to be used. 
-      M3JC=0 
-      IF(NPA.EQ.2.AND.MSTJ(47).GE.1) THEN 
-        IF(KFLA(1).GE.1.AND.KFLA(1).LE.8.AND.KFLA(2).GE.1.AND. 
-     &  KFLA(2).LE.8) M3JC=1 
-        IF((KFLA(1).EQ.11.OR.KFLA(1).EQ.13.OR.KFLA(1).EQ.15.OR. 
-     &  KFLA(1).EQ.17).AND.KFLA(2).EQ.KFLA(1)) M3JC=1 
-        IF((KFLA(1).EQ.11.OR.KFLA(1).EQ.13.OR.KFLA(1).EQ.15.OR. 
-     &  KFLA(1).EQ.17).AND.KFLA(2).EQ.KFLA(1)+1) M3JC=1 
-        IF((KFLA(1).EQ.12.OR.KFLA(1).EQ.14.OR.KFLA(1).EQ.16.OR. 
-     &  KFLA(1).EQ.18).AND.KFLA(2).EQ.KFLA(1)-1) M3JC=1 
-        IF(MSTJ(47).EQ.2.OR.MSTJ(47).EQ.4) M3JC=1 
-        M3JCM=0 
-        IF(M3JC.EQ.1.AND.MSTJ(47).GE.3.AND.KFLA(1).EQ.KFLA(2)) THEN 
-          M3JCM=1 
-          QME=(2.*PMTH(1,KFLA(1))/PS(5))**2 
-        ENDIF 
-      ENDIF 
-C...Find if interference with initial state partons. 
-      MIIS=0 
-      IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2) MIIS=MSTJ(50) 
-      IF(MIIS.NE.0) THEN 
-        DO 180 I=1,2 
-        KCII(I)=0 
-        KCA=LYCOMP(KFLA(I)) 
-        IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2)) 
-        NIIS(I)=0 
-        IF(KCII(I).NE.0) THEN 
-          DO 170 J=1,2 
-          ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5)) 
-          IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND. 
-     &    (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN 
-            NIIS(I)=NIIS(I)+1 
-            IIIS(I,NIIS(I))=ICSI 
-          ENDIF 
-  170     CONTINUE 
-        ENDIF 
-  180   CONTINUE 
-        IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0 
-      ENDIF 
-C...Boost interfering initial partons to rest frame 
-C...and reconstruct their polar and azimuthal angles. 
-      IF(MIIS.NE.0) THEN 
-        DO 200 I=1,2 
-        DO 190 J=1,5 
-        K(N+I,J)=K(IPA(I),J) 
-        P(N+I,J)=P(IPA(I),J) 
-        V(N+I,J)=0. 
-  190   CONTINUE 
-  200   CONTINUE 
-        DO 220 I=3,2+NIIS(1) 
-        DO 210 J=1,5 
-        K(N+I,J)=K(IIIS(1,I-2),J) 
-        P(N+I,J)=P(IIIS(1,I-2),J) 
-        V(N+I,J)=0. 
-  210   CONTINUE 
-  220   CONTINUE 
-        DO 240 I=3+NIIS(1),2+NIIS(1)+NIIS(2) 
-        DO 230 J=1,5 
-        K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J) 
-        P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J) 
-        V(N+I,J)=0. 
-  230   CONTINUE 
-  240   CONTINUE 
-        CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),0.,0.,-DBLE(PS(1)/PS(4)), 
-     &  -DBLE(PS(2)/PS(4)),-DBLE(PS(3)/PS(4))) 
-        PHI=UYANGL(P(N+1,1),P(N+1,2)) 
-        CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),0.,-PHI,0D0,0D0,0D0) 
-        THE=UYANGL(P(N+1,3),P(N+1,1)) 
-        CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),-THE,0.,0D0,0D0,0D0) 
-        DO 250 I=3,2+NIIS(1) 
-        THEIIS(1,I-2)=UYANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2)) 
-        PHIIIS(1,I-2)=UYANGL(P(N+I,1),P(N+I,2)) 
-  250   CONTINUE 
-        DO 260 I=3+NIIS(1),2+NIIS(1)+NIIS(2) 
-        THEIIS(2,I-2-NIIS(1))=PARU(1)-UYANGL(P(N+I,3), 
-     &  SQRT(P(N+I,1)**2+P(N+I,2)**2)) 
-        PHIIIS(2,I-2-NIIS(1))=UYANGL(P(N+I,1),P(N+I,2)) 
-  260   CONTINUE 
-      ENDIF 
-C...Define imagined single initiator of shower for parton system. 
-      NS=N 
-      IF(N.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYSHOW:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(NPA.GE.2) THEN 
-        K(N+1,1)=11 
-        K(N+1,2)=21 
-        K(N+1,3)=0 
-        K(N+1,4)=0 
-        K(N+1,5)=0 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=0. 
-        P(N+1,4)=PS(5) 
-        P(N+1,5)=PS(5) 
-        V(N+1,5)=PS(5)**2 
-        N=N+1 
-      ENDIF 
-C...Loop over partons that may branch. 
-      NEP=NPA 
-      IM=NS 
-      IF(NPA.EQ.1) IM=NS-1 
-  270 IM=IM+1 
-      IF(N.GT.NS) THEN 
-        IF(IM.GT.N) GOTO 510 
-        KFLM=IABS(K(IM,2)) 
-        IF(KFLM.GT.40) GOTO 270 
-        IF(KSH(KFLM).EQ.0) GOTO 270 
-        IFLM=KFLM
-        IF(KFLM.GE.6.AND.KFLM.LE.8) IFLM=37+KFLM+ISIGN(2,K(IM,2)) 
-        IF(P(IM,5).LT.PMTH(2,IFLM)) GOTO 270 
-        IGM=K(IM,3) 
-      ELSE 
-        IGM=-1 
-      ENDIF 
-      IF(N+NEP.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYSHOW:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Position of aunt (sister to branching parton). 
-C...Origin and flavour of daughters. 
-      IAU=0 
-      IF(IGM.GT.0) THEN 
-        IF(K(IM-1,3).EQ.IGM) IAU=IM-1 
-        IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1 
-      ENDIF 
-      IF(IGM.GE.0) THEN 
-        K(IM,4)=N+1 
-        DO 280 I=1,NEP 
-        K(N+I,3)=IM 
-  280   CONTINUE 
-      ELSE 
-        K(N+1,3)=IPA(1) 
-      ENDIF 
-      IF(IGM.LE.0) THEN 
-        DO 290 I=1,NEP 
-        K(N+I,2)=K(IPA(I),2) 
-  290   CONTINUE 
-      ELSEIF(KFLM.NE.21) THEN 
-        K(N+1,2)=K(IM,2) 
-        K(N+2,2)=K(IM,5) 
-      ELSEIF(K(IM,5).EQ.21) THEN 
-        K(N+1,2)=21 
-        K(N+2,2)=21 
-      ELSE 
-        K(N+1,2)=K(IM,5) 
-        K(N+2,2)=-K(IM,5) 
-      ENDIF 
-C...Reset flags on daughers and tries made. 
-      DO 300 IP=1,NEP 
-      K(N+IP,1)=3 
-      K(N+IP,4)=0 
-      K(N+IP,5)=0 
-      KFLD(IP)=IABS(K(N+IP,2)) 
-      IF(KCHG(LYCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1 
-      ITRY(IP)=0 
-      ISL(IP)=0 
-      ISI(IP)=0 
-      IF(KFLD(IP).LE.40) THEN 
-        IF(KSH(KFLD(IP)).EQ.1) ISI(IP)=1 
-      ENDIF 
-  300 CONTINUE 
-      ISLM=0 
-C...Maximum virtuality of daughters. 
-      IF(IGM.LE.0) THEN 
-        DO 310 I=1,NPA 
-        IF(NPA.GE.3) P(N+I,4)=(PS(4)*P(IPA(I),4)-PS(1)*P(IPA(I),1)- 
-     &  PS(2)*P(IPA(I),2)-PS(3)*P(IPA(I),3))/PS(5) 
-        P(N+I,5)=MIN(QMAX,PS(5)) 
-        IF(NPA.GE.3) P(N+I,5)=MIN(P(N+I,5),P(N+I,4)) 
-        IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5) 
-  310   CONTINUE 
-      ELSE 
-        IF(MSTJ(43).LE.2) PEM=V(IM,2) 
-        IF(MSTJ(43).GE.3) PEM=P(IM,4) 
-        P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM) 
-        P(N+2,5)=MIN(P(IM,5),(1.-V(IM,1))*PEM) 
-        IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22) 
-      ENDIF 
-      DO 320 I=1,NEP 
-      PMSD(I)=P(N+I,5) 
-      IF(ISI(I).EQ.1) THEN 
-        IFLD=KFLD(I)
-        IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &  ISIGN(2,K(N+I,2)) 
-        IF(P(N+I,5).LE.PMTH(3,IFLD)) P(N+I,5)=PMTH(1,IFLD) 
-      ENDIF 
-      V(N+I,5)=P(N+I,5)**2 
-  320 CONTINUE 
-C...Choose one of the daughters for evolution. 
-  330 INUM=0 
-      IF(NEP.EQ.1) INUM=1 
-      DO 340 I=1,NEP 
-      IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I 
-  340 CONTINUE 
-      DO 350 I=1,NEP 
-      IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN 
-        IFLD=KFLD(I)
-        IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &  ISIGN(2,K(N+I,2)) 
-        IF(P(N+I,5).GE.PMTH(2,IFLD)) INUM=I 
-      ENDIF 
-  350 CONTINUE 
-      IF(INUM.EQ.0) THEN 
-        RMAX=0. 
-        DO 360 I=1,NEP 
-        IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQTH2) THEN 
-          RPM=P(N+I,5)/PMSD(I) 
-          IFLD=KFLD(I)
-          IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &    ISIGN(2,K(N+I,2)) 
-          IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IFLD)) THEN 
-            RMAX=RPM 
-            INUM=I 
-          ENDIF 
-        ENDIF 
-  360   CONTINUE 
-      ENDIF 
-C...Store information on choice of evolving daughter. 
-      INUM=MAX(1,INUM) 
-      IEP(1)=N+INUM 
-      DO 370 I=2,NEP 
-      IEP(I)=IEP(I-1)+1 
-      IF(IEP(I).GT.N+NEP) IEP(I)=N+1 
-  370 CONTINUE 
-      DO 380 I=1,NEP 
-      KFL(I)=IABS(K(IEP(I),2)) 
-  380 CONTINUE 
-      ITRY(INUM)=ITRY(INUM)+1 
-      IF(ITRY(INUM).GT.200) THEN 
-        CALL LYERRM(14,'(LYSHOW:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      Z=0.5 
-      IF(KFL(1).GT.40) GOTO 430 
-      IF(KSH(KFL(1)).EQ.0) GOTO 430 
-      IFL=KFL(1)
-      IF(KFL(1).GE.6.AND.KFL(1).LE.8) IFL=37+KFL(1)+
-     &ISIGN(2,K(IEP(1),2)) 
-      IF(P(IEP(1),5).LT.PMTH(2,IFL)) GOTO 430 
-C...Select side for interference with initial state partons. 
-      IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN 
-        III=IEP(1)-NS-1 
-        ISII(III)=0 
-        IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN 
-          ISII(III)=1 
-        ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN 
-          IF(RLY(0).GT.0.5) ISII(III)=1 
-        ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN 
-          ISII(III)=1 
-          IF(RLY(0).GT.0.5) ISII(III)=2 
-        ENDIF 
-      ENDIF 
-C...Calculate allowed z range. 
-      IF(NEP.EQ.1) THEN 
-        PMED=PS(4) 
-      ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
-        PMED=P(IM,5) 
-      ELSE 
-        IF(INUM.EQ.1) PMED=V(IM,1)*PEM 
-        IF(INUM.EQ.2) PMED=(1.-V(IM,1))*PEM 
-      ENDIF 
-      IF(MOD(MSTJ(43),2).EQ.1) THEN 
-        ZC=PMTH(2,21)/PMED 
-        ZCE=PMTH(2,22)/PMED 
-      ELSE 
-        ZC=0.5*(1.-SQRT(MAX(0.,1.-(2.*PMTH(2,21)/PMED)**2))) 
-        IF(ZC.LT.1E-4) ZC=(PMTH(2,21)/PMED)**2 
-        ZCE=0.5*(1.-SQRT(MAX(0.,1.-(2.*PMTH(2,22)/PMED)**2))) 
-        IF(ZCE.LT.1E-4) ZCE=(PMTH(2,22)/PMED)**2 
-      ENDIF 
-      ZC=MIN(ZC,0.491) 
-      ZCE=MIN(ZCE,0.491) 
-      IF((MSTJ(41).EQ.1.AND.ZC.GT.0.49).OR.(MSTJ(41).GE.2.AND. 
-     &MIN(ZC,ZCE).GT.0.49)) THEN 
-        P(IEP(1),5)=PMTH(1,IFL) 
-        V(IEP(1),5)=P(IEP(1),5)**2 
-        GOTO 430 
-      ENDIF 
-C...Integral of Altarelli-Parisi z kernel for QCD. 
-      IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN 
-        FBR=6.*LOG((1.-ZC)/ZC)+MSTJ(45)*(0.5-ZC) 
-      ELSEIF(MSTJ(49).EQ.0) THEN 
-        FBR=(8./3.)*LOG((1.-ZC)/ZC) 
-C...Integral of Altarelli-Parisi z kernel for scalar gluon. 
-      ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN 
-        FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1.-2.*ZC) 
-      ELSEIF(MSTJ(49).EQ.1) THEN 
-        FBR=(1.-2.*ZC)/3. 
-        IF(IGM.EQ.0.AND.M3JC.EQ.1) FBR=4.*FBR 
-C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon. 
-      ELSEIF(KFL(1).EQ.21) THEN 
-        FBR=6.*MSTJ(45)*(0.5-ZC) 
-      ELSE 
-        FBR=2.*LOG((1.-ZC)/ZC) 
-      ENDIF 
-C...Reset QCD probability for lepton. 
-      IF(KFL(1).GE.11.AND.KFL(1).LE.18) FBR=0. 
-C...Integral of Altarelli-Parisi kernel for photon emission. 
-      IF(MSTJ(41).GE.2.AND.KFL(1).GE.1.AND.KFL(1).LE.18) THEN 
-        FBRE=(KCHG(KFL(1),1)/3.)**2*2.*LOG((1.-ZCE)/ZCE) 
-        IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE 
-      ENDIF 
-C...Inner veto algorithm starts. Find maximum mass for evolution. 
-  390 PMS=V(IEP(1),5) 
-      IF(IGM.GE.0) THEN 
-        PM2=0. 
-        DO 400 I=2,NEP 
-        PM=P(IEP(I),5) 
-        IF(KFL(I).LE.40) THEN 
-          IFLI=KFL(I)
-          IF(KFL(I).GE.6.AND.KFL(I).LE.8) IFLI=37+KFL(I)+
-     &    ISIGN(2,K(IEP(I),2)) 
-          IF(KSH(KFL(I)).EQ.1) PM=PMTH(2,IFLI) 
-        ENDIF 
-        PM2=PM2+PM 
-  400   CONTINUE 
-        PMS=MIN(PMS,(P(IM,5)-PM2)**2) 
-      ENDIF 
-C...Select mass for daughter in QCD evolution. 
-      B0=27./6. 
-      DO 410 IFF=4,MSTJ(45) 
-      IF(PMS.GT.4.*PMTH(2,IFF)**2) B0=(33.-2.*IFF)/6. 
-  410 CONTINUE 
-      IF(FBR.LT.1E-3) THEN 
-        PMSQCD=0. 
-      ELSEIF(MSTJ(44).LE.0) THEN 
-        PMSQCD=PMS*EXP(MAX(-50.,LOG(RLY(0))*PARU(2)/(PARU(111)*FBR))) 
-      ELSEIF(MSTJ(44).EQ.1) THEN 
-        PMSQCD=4.*ALAMS*(0.25*PMS/ALAMS)**(RLY(0)**(B0/FBR)) 
-      ELSE 
-        PMSQCD=PMS*EXP(MAX(-50.,ALFM*B0*LOG(RLY(0))/FBR)) 
-      ENDIF 
-      IF(ZC.GT.0.49.OR.PMSQCD.LE.PMTH(4,IFL)**2) PMSQCD=PMTH(2,IFL)**2 
-      V(IEP(1),5)=PMSQCD 
-      MCE=1 
-C...Select mass for daughter in QED evolution. 
-      IF(MSTJ(41).GE.2.AND.KFL(1).GE.1.AND.KFL(1).LE.18) THEN 
-        PMSQED=PMS*EXP(MAX(-50.,LOG(RLY(0))*PARU(2)/(PARU(101)*FBRE))) 
-        IF(ZCE.GT.0.49.OR.PMSQED.LE.PMTH(5,IFL)**2) PMSQED= 
-     &  PMTH(2,IFL)**2 
-        IF(PMSQED.GT.PMSQCD) THEN 
-          V(IEP(1),5)=PMSQED 
-          MCE=2 
-        ENDIF 
-      ENDIF 
-C...Check whether daughter mass below cutoff. 
-      P(IEP(1),5)=SQRT(V(IEP(1),5)) 
-      IF(P(IEP(1),5).LE.PMTH(3,IFL)) THEN 
-        P(IEP(1),5)=PMTH(1,IFL) 
-        V(IEP(1),5)=P(IEP(1),5)**2 
-        GOTO 430 
-      ENDIF 
-C...Select z value of branching: q -> qgamma. 
-      IF(MCE.EQ.2) THEN 
-        Z=1.-(1.-ZCE)*(ZCE/(1.-ZCE))**RLY(0) 
-        IF(1.+Z**2.LT.2.*RLY(0)) GOTO 390 
-        K(IEP(1),5)=22 
-C...Select z value of branching: q -> qg, g -> gg, g -> qqbar. 
-      ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN 
-        Z=1.-(1.-ZC)*(ZC/(1.-ZC))**RLY(0) 
-        IF(1.+Z**2.LT.2.*RLY(0)) GOTO 390 
-        K(IEP(1),5)=21 
-      ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*(0.5-ZC).LT.RLY(0)*FBR) THEN 
-        Z=(1.-ZC)*(ZC/(1.-ZC))**RLY(0) 
-        IF(RLY(0).GT.0.5) Z=1.-Z 
-        IF((1.-Z*(1.-Z))**2.LT.RLY(0)) GOTO 390 
-        K(IEP(1),5)=21 
-      ELSEIF(MSTJ(49).NE.1) THEN 
-        Z=ZC+(1.-2.*ZC)*RLY(0) 
-        IF(Z**2+(1.-Z)**2.LT.RLY(0)) GOTO 390 
-        KFLB=1+INT(MSTJ(45)*RLY(0)) 
-        PMQ=4.*PMTH(2,KFLB)**2/V(IEP(1),5) 
-        IF(PMQ.GE.1.) GOTO 390 
-        PMQ0=4.*PMTH(2,21)**2/V(IEP(1),5) 
-        IF(MOD(MSTJ(43),2).EQ.0.AND.(1.+0.5*PMQ)*SQRT(1.-PMQ).LT. 
-     &  RLY(0)*(1.+0.5*PMQ0)*SQRT(1.-PMQ0)) GOTO 390 
-        K(IEP(1),5)=KFLB 
-C...Ditto for scalar gluon model. 
-      ELSEIF(KFL(1).NE.21) THEN 
-        Z=1.-SQRT(ZC**2+RLY(0)*(1.-2.*ZC)) 
-        K(IEP(1),5)=21 
-      ELSEIF(RLY(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN 
-        Z=ZC+(1.-2.*ZC)*RLY(0) 
-        K(IEP(1),5)=21 
-      ELSE 
-        Z=ZC+(1.-2.*ZC)*RLY(0) 
-        KFLB=1+INT(MSTJ(45)*RLY(0)) 
-        PMQ=4.*PMTH(2,KFLB)**2/V(IEP(1),5) 
-        IF(PMQ.GE.1.) GOTO 390 
-        K(IEP(1),5)=KFLB 
-      ENDIF 
-      IF(MCE.EQ.1.AND.MSTJ(44).GE.2) THEN 
-        IF(Z*(1.-Z)*V(IEP(1),5).LT.PT2MIN) GOTO 390 
-        IF(ALFM/LOG(V(IEP(1),5)*Z*(1.-Z)/ALAMS).LT.RLY(0)) GOTO 390 
-      ENDIF 
-C...Check if z consistent with chosen m. 
-      IF(KFL(1).EQ.21) THEN 
-        KFLGD1=IABS(K(IEP(1),5)) 
-        KFLGD2=KFLGD1 
-      ELSE 
-        KFLGD1=KFL(1) 
-        KFLGD2=IABS(K(IEP(1),5)) 
-      ENDIF 
-      IF(NEP.EQ.1) THEN 
-        PED=PS(4) 
-      ELSEIF(NEP.GE.3) THEN 
-        PED=P(IEP(1),4) 
-      ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
-        PED=0.5*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5) 
-      ELSE 
-        IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM 
-        IF(IEP(1).EQ.N+2) PED=(1.-V(IM,1))*PEM 
-      ENDIF 
-      IF(MOD(MSTJ(43),2).EQ.1) THEN 
-        IFLGD1=KFLGD1
-        IF(KFLGD1.GE.6.AND.KFLGD1.LE.8) IFLGD1=IFL
-        PMQTH3=0.5*PARJ(82) 
-        IF(KFLGD2.EQ.22) PMQTH3=0.5*PARJ(83) 
-        PMQ1=(PMTH(1,IFLGD1)**2+PMQTH3**2)/V(IEP(1),5) 
-        PMQ2=(PMTH(1,KFLGD2)**2+PMQTH3**2)/V(IEP(1),5) 
-        ZD=SQRT(MAX(0.,(1.-V(IEP(1),5)/PED**2)*((1.-PMQ1-PMQ2)**2- 
-     &  4.*PMQ1*PMQ2))) 
-        ZH=1.+PMQ1-PMQ2 
-      ELSE 
-        ZD=SQRT(MAX(0.,1.-V(IEP(1),5)/PED**2)) 
-        ZH=1. 
-      ENDIF 
-      ZL=0.5*(ZH-ZD) 
-      ZU=0.5*(ZH+ZD) 
-      IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 390 
-      IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1.-ZL)/MAX(1E-20,ZL* 
-     &(1.-ZU))) 
-      IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1.-ZL)/MAX(1E-10,1.-ZU)) 
-C...Width suppression for q -> q + g.
-      IF(MSTJ(40).NE.0.AND.KFL(1).NE.21) THEN
-        IF(IGM.EQ.0) THEN
-          EGLU=0.5*PS(5)*(1.-Z)*(1.+V(IEP(1),5)/V(NS+1,5))
-        ELSE
-          EGLU=PMED*(1.-Z)
-        ENDIF
-        CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
-        IF(MSTJ(40).EQ.1) THEN
-          IF(CHI.LT.RLY(0)) GOTO 390  
-        ELSEIF(MSTJ(40).EQ.2) THEN
-          IF(1.-CHI.LT.RLY(0)) GOTO 390
-        ENDIF
-      ENDIF
-C...Three-jet matrix element correction. 
-      IF(IGM.EQ.0.AND.M3JC.EQ.1) THEN 
-        X1=Z*(1.+V(IEP(1),5)/V(NS+1,5)) 
-        X2=1.-V(IEP(1),5)/V(NS+1,5) 
-        X3=(1.-X1)+(1.-X2) 
-        IF(MCE.EQ.2) THEN 
-          KI1=K(IPA(INUM),2) 
-          KI2=K(IPA(3-INUM),2) 
-          QF1=KCHG(IABS(KI1),1)*ISIGN(1,KI1)/3. 
-          QF2=KCHG(IABS(KI2),1)*ISIGN(1,KI2)/3. 
-          WSHOW=QF1**2*(1.-X1)/X3*(1.+(X1/(2.-X2))**2)+ 
-     &    QF2**2*(1.-X2)/X3*(1.+(X2/(2.-X1))**2) 
-          WME=(QF1*(1.-X1)/X3-QF2*(1.-X2)/X3)**2*(X1**2+X2**2) 
-        ELSEIF(MSTJ(49).NE.1) THEN 
-          WSHOW=1.+(1.-X1)/X3*(X1/(2.-X2))**2+ 
-     &    (1.-X2)/X3*(X2/(2.-X1))**2 
-          WME=X1**2+X2**2 
-          IF(M3JCM.EQ.1) WME=WME-QME*X3-0.5*QME**2- 
-     &    (0.5*QME+0.25*QME**2)*((1.-X2)/MAX(1E-7,1.-X1)+
-     &    (1.-X1)/MAX(1E-7,1.-X2)) 
-        ELSE 
-          WSHOW=4.*X3*((1.-X1)/(2.-X2)**2+(1.-X2)/(2.-X1)**2) 
-          WME=X3**2 
-          IF(MSTJ(102).GE.2) WME=X3**2-2.*(1.+X3)*(1.-X1)*(1.-X2)* 
-     &    PARJ(171) 
-        ENDIF 
-        IF(WME.LT.RLY(0)*WSHOW) GOTO 390 
-C...Impose angular ordering by rejection of nonordered emission. 
-      ELSEIF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2) THEN 
-        MAOM=1 
-        ZM=V(IM,1) 
-        IF(IEP(1).EQ.N+2) ZM=1.-V(IM,1) 
-        THE2ID=Z*(1.-Z)*(ZM*P(IM,4))**2/V(IEP(1),5) 
-        IAOM=IM 
-  420   IF(K(IAOM,5).EQ.22) THEN 
-          IAOM=K(IAOM,3) 
-          IF(K(IAOM,3).LE.NS) MAOM=0 
-          IF(MAOM.EQ.1) GOTO 420 
-        ENDIF 
-        IF(MAOM.EQ.1) THEN 
-          THE2IM=V(IAOM,1)*(1.-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5) 
-          IF(THE2ID.LT.THE2IM) GOTO 390 
-        ENDIF 
-      ENDIF 
-C...Impose user-defined maximum angle at first branching. 
-      IF(MSTJ(48).EQ.1) THEN 
-        IF(NEP.EQ.1.AND.IM.EQ.NS) THEN 
-          THE2ID=Z*(1.-Z)*PS(4)**2/V(IEP(1),5) 
-          IF(THE2ID.LT.1./PARJ(85)**2) GOTO 390 
-        ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN 
-          THE2ID=Z*(1.-Z)*(0.5*P(IM,4))**2/V(IEP(1),5) 
-          IF(THE2ID.LT.1./PARJ(85)**2) GOTO 390 
-        ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN 
-          THE2ID=Z*(1.-Z)*(0.5*P(IM,4))**2/V(IEP(1),5) 
-          IF(THE2ID.LT.1./PARJ(86)**2) GOTO 390 
-        ENDIF 
-      ENDIF 
-C...Impose angular constraint in first branching from interference 
-C...with initial state partons. 
-      IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN 
-        THE2D=MAX((1.-Z)/Z,Z/(1.-Z))*V(IEP(1),5)/(0.5*P(IM,4))**2 
-        IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN 
-          IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 390 
-        ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN 
-          IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 390 
-        ENDIF 
-      ENDIF 
-C...End of inner veto algorithm. Check if only one leg evolved so far. 
-  430 V(IEP(1),1)=Z 
-      ISL(1)=0 
-      ISL(2)=0 
-      IF(NEP.EQ.1) GOTO 460 
-      IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 330 
-      DO 440 I=1,NEP 
-      IF(ITRY(I).EQ.0.AND.KFLD(I).LE.40) THEN 
-        IF(KSH(KFLD(I)).EQ.1) THEN 
-          IFLD=KFLD(I)
-          IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &    ISIGN(2,K(N+I,2)) 
-          IF(P(N+I,5).GE.PMTH(2,IFLD)) GOTO 330 
-        ENDIF 
-      ENDIF 
-  440 CONTINUE 
-C...Check if chosen multiplet m1,m2,z1,z2 is physical. 
-      IF(NEP.EQ.3) THEN 
-        PA1S=(P(N+1,4)+P(N+1,5))*(P(N+1,4)-P(N+1,5)) 
-        PA2S=(P(N+2,4)+P(N+2,5))*(P(N+2,4)-P(N+2,5)) 
-        PA3S=(P(N+3,4)+P(N+3,5))*(P(N+3,4)-P(N+3,5)) 
-        PTS=0.25*(2.*PA1S*PA2S+2.*PA1S*PA3S+2.*PA2S*PA3S- 
-     &  PA1S**2-PA2S**2-PA3S**2)/PA1S 
-        IF(PTS.LE.0.) GOTO 330 
-      ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN 
-        DO 450 I1=N+1,N+2 
-        KFLDA=IABS(K(I1,2)) 
-        IF(KFLDA.GT.40) GOTO 450 
-        IF(KSH(KFLDA).EQ.0) GOTO 450 
-        IFLDA=KFLDA 
-        IF(KFLDA.GE.6.AND.KFLDA.LE.8) IFLDA=37+KFLDA+
-     &  ISIGN(2,K(I1,2)) 
-        IF(P(I1,5).LT.PMTH(2,IFLDA)) GOTO 450 
-        IF(KFLDA.EQ.21) THEN 
-          KFLGD1=IABS(K(I1,5)) 
-          KFLGD2=KFLGD1 
-        ELSE 
-          KFLGD1=KFLDA 
-          KFLGD2=IABS(K(I1,5)) 
-        ENDIF 
-        I2=2*N+3-I1 
-        IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
-          PED=0.5*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5) 
-        ELSE 
-          IF(I1.EQ.N+1) ZM=V(IM,1) 
-          IF(I1.EQ.N+2) ZM=1.-V(IM,1) 
-          PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2- 
-     &    4.*V(N+1,5)*V(N+2,5)) 
-          PED=PEM*(0.5*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/V(IM,5) 
-        ENDIF 
-        IF(MOD(MSTJ(43),2).EQ.1) THEN 
-          PMQTH3=0.5*PARJ(82) 
-          IF(KFLGD2.EQ.22) PMQTH3=0.5*PARJ(83) 
-          IFLGD1=KFLGD1
-          IF(KFLGD1.GE.6.AND.KFLGD1.LE.8) IFLGD1=IFLDA
-          PMQ1=(PMTH(1,IFLGD1)**2+PMQTH3**2)/V(I1,5) 
-          PMQ2=(PMTH(1,KFLGD2)**2+PMQTH3**2)/V(I1,5) 
-          ZD=SQRT(MAX(0.,(1.-V(I1,5)/PED**2)*((1.-PMQ1-PMQ2)**2- 
-     &    4.*PMQ1*PMQ2))) 
-          ZH=1.+PMQ1-PMQ2 
-        ELSE 
-          ZD=SQRT(MAX(0.,1.-V(I1,5)/PED**2)) 
-          ZH=1. 
-        ENDIF 
-        ZL=0.5*(ZH-ZD) 
-        ZU=0.5*(ZH+ZD) 
-        IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU)) ISL(1)=1 
-        IF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU)) ISL(2)=1 
-        IF(KFLDA.EQ.21) V(I1,4)=LOG(ZU*(1.-ZL)/MAX(1E-20,ZL*(1.-ZU))) 
-        IF(KFLDA.NE.21) V(I1,4)=LOG((1.-ZL)/MAX(1E-10,1.-ZU)) 
-  450   CONTINUE 
-        IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN 
-          ISL(3-ISLM)=0 
-          ISLM=3-ISLM 
-        ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN 
-          ZDR1=MAX(0.,V(N+1,3)/MAX(1E-6,V(N+1,4))-1.) 
-          ZDR2=MAX(0.,V(N+2,3)/MAX(1E-6,V(N+2,4))-1.) 
-          IF(ZDR2.GT.RLY(0)*(ZDR1+ZDR2)) ISL(1)=0 
-          IF(ISL(1).EQ.1) ISL(2)=0 
-          IF(ISL(1).EQ.0) ISLM=1 
-          IF(ISL(2).EQ.0) ISLM=2 
-        ENDIF 
-        IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 330 
-      ENDIF 
-      IFLD1=KFLD(1)
-      IF(KFLD(1).GE.6.AND.KFLD(1).LE.8) IFLD1=37+KFLD(1)+
-     &ISIGN(2,K(N+1,2)) 
-      IFLD2=KFLD(2)
-      IF(KFLD(2).GE.6.AND.KFLD(2).LE.8) IFLD2=37+KFLD(2)+
-     &ISIGN(2,K(N+2,2)) 
-      IF(IGM.GT.0.AND.MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE. 
-     &PMTH(2,IFLD1).OR.P(N+2,5).GE.PMTH(2,IFLD2))) THEN 
-        PMQ1=V(N+1,5)/V(IM,5) 
-        PMQ2=V(N+2,5)/V(IM,5) 
-        ZD=SQRT(MAX(0.,(1.-V(IM,5)/PEM**2)*((1.-PMQ1-PMQ2)**2- 
-     &  4.*PMQ1*PMQ2))) 
-        ZH=1.+PMQ1-PMQ2 
-        ZL=0.5*(ZH-ZD) 
-        ZU=0.5*(ZH+ZD) 
-        IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 330 
-      ENDIF 
-C...Accepted branch. Construct four-momentum for initial partons. 
-  460 MAZIP=0 
-      MAZIC=0 
-      IF(NEP.EQ.1) THEN 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=SQRT(MAX(0.,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)- 
-     &  P(N+1,5)))) 
-        P(N+1,4)=P(IPA(1),4) 
-        V(N+1,2)=P(N+1,4) 
-      ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN 
-        PED1=0.5*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5) 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=SQRT(MAX(0.,(PED1+P(N+1,5))*(PED1-P(N+1,5)))) 
-        P(N+1,4)=PED1 
-        P(N+2,1)=0. 
-        P(N+2,2)=0. 
-        P(N+2,3)=-P(N+1,3) 
-        P(N+2,4)=P(IM,5)-PED1 
-        V(N+1,2)=P(N+1,4) 
-        V(N+2,2)=P(N+2,4) 
-      ELSEIF(NEP.EQ.3) THEN 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=SQRT(MAX(0.,PA1S)) 
-        P(N+2,1)=SQRT(PTS) 
-        P(N+2,2)=0. 
-        P(N+2,3)=0.5*(PA3S-PA2S-PA1S)/P(N+1,3) 
-        P(N+3,1)=-P(N+2,1) 
-        P(N+3,2)=0. 
-        P(N+3,3)=-(P(N+1,3)+P(N+2,3)) 
-        V(N+1,2)=P(N+1,4) 
-        V(N+2,2)=P(N+2,4) 
-        V(N+3,2)=P(N+3,4) 
-C...Construct transverse momentum for ordinary branching in shower. 
-      ELSE 
-        ZM=V(IM,1) 
-        PZM=SQRT(MAX(0.,(PEM+P(IM,5))*(PEM-P(IM,5)))) 
-        PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4.*V(N+1,5)*V(N+2,5) 
-        IF(PZM.LE.0.) THEN 
-          PTS=0. 
-        ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN 
-          PTS=(PEM**2*(ZM*(1.-ZM)*V(IM,5)-(1.-ZM)*V(N+1,5)- 
-     &    ZM*V(N+2,5))-0.25*PMLS)/PZM**2 
-        ELSE 
-          PTS=PMLS*(ZM*(1.-ZM)*PEM**2/V(IM,5)-0.25)/PZM**2 
-        ENDIF 
-        PT=SQRT(MAX(0.,PTS)) 
-C...Find coefficient of azimuthal asymmetry due to gluon polarization. 
-        HAZIP=0. 
-        IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21. 
-     &  AND.IAU.NE.0) THEN 
-          IF(K(IGM,3).NE.0) MAZIP=1 
-          ZAU=V(IGM,1) 
-          IF(IAU.EQ.IM+1) ZAU=1.-V(IGM,1) 
-          IF(MAZIP.EQ.0) ZAU=0. 
-          IF(K(IGM,2).NE.21) THEN 
-            HAZIP=2.*ZAU/(1.+ZAU**2) 
-          ELSE 
-            HAZIP=(ZAU/(1.-ZAU*(1.-ZAU)))**2 
-          ENDIF 
-          IF(K(N+1,2).NE.21) THEN 
-            HAZIP=HAZIP*(-2.*ZM*(1.-ZM))/(1.-2.*ZM*(1.-ZM)) 
-          ELSE 
-            HAZIP=HAZIP*(ZM*(1.-ZM)/(1.-ZM*(1.-ZM)))**2 
-          ENDIF 
-        ENDIF 
-C...Find coefficient of azimuthal asymmetry due to soft gluon 
-C...interference. 
-        HAZIC=0. 
-        IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR. 
-     &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN 
-          IF(K(IGM,3).NE.0) MAZIC=N+1 
-          IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2 
-          IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND. 
-     &    ZM.GT.0.5) MAZIC=N+2 
-          IF(K(IAU,2).EQ.22) MAZIC=0 
-          ZS=ZM 
-          IF(MAZIC.EQ.N+2) ZS=1.-ZM 
-          ZGM=V(IGM,1) 
-          IF(IAU.EQ.IM-1) ZGM=1.-V(IGM,1) 
-          IF(MAZIC.EQ.0) ZGM=1. 
-          IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
-     &    SQRT((1.-ZS)*(1.-ZGM)/(ZS*ZGM)) 
-          HAZIC=MIN(0.95,HAZIC) 
-        ENDIF 
-      ENDIF 
-C...Construct kinematics for ordinary branching in shower. 
-  470 IF(NEP.EQ.2.AND.IGM.GT.0) THEN 
-        IF(MOD(MSTJ(43),2).EQ.1) THEN 
-          P(N+1,4)=PEM*V(IM,1) 
-        ELSE 
-          P(N+1,4)=PEM*(0.5*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+ 
-     &    SQRT(PMLS)*ZM)/V(IM,5) 
-        ENDIF 
-        PHI=PARU(2)*RLY(0) 
-        P(N+1,1)=PT*COS(PHI) 
-        P(N+1,2)=PT*SIN(PHI) 
-        IF(PZM.GT.0.) THEN 
-          P(N+1,3)=0.5*(V(N+2,5)-V(N+1,5)-V(IM,5)+2.*PEM*P(N+1,4))/PZM 
-        ELSE 
-          P(N+1,3)=0. 
-        ENDIF 
-        P(N+2,1)=-P(N+1,1) 
-        P(N+2,2)=-P(N+1,2) 
-        P(N+2,3)=PZM-P(N+1,3) 
-        P(N+2,4)=PEM-P(N+1,4) 
-        IF(MSTJ(43).LE.2) THEN 
-          V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5) 
-          V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5) 
-        ENDIF 
-      ENDIF 
-C...Rotate and boost daughters. 
-      IF(IGM.GT.0) THEN 
-        IF(MSTJ(43).LE.2) THEN 
-          BEX=P(IGM,1)/P(IGM,4) 
-          BEY=P(IGM,2)/P(IGM,4) 
-          BEZ=P(IGM,3)/P(IGM,4) 
-          GA=P(IGM,4)/P(IGM,5) 
-          GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1.+GA)- 
-     &    P(IM,4)) 
-        ELSE 
-          BEX=0. 
-          BEY=0. 
-          BEZ=0. 
-          GA=1. 
-          GABEP=0. 
-        ENDIF 
-        THE=UYANGL(P(IM,3)+GABEP*BEZ,SQRT((P(IM,1)+GABEP*BEX)**2+ 
-     &  (P(IM,2)+GABEP*BEY)**2)) 
-        PHI=UYANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY) 
-        DO 480 I=N+1,N+2 
-        DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+ 
-     &  SIN(THE)*COS(PHI)*P(I,3) 
-        DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+ 
-     &  SIN(THE)*SIN(PHI)*P(I,3) 
-        DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3) 
-        DP(4)=P(I,4) 
-        DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3) 
-        DGABP=GA*(GA*DBP/(1D0+GA)+DP(4)) 
-        P(I,1)=DP(1)+DGABP*BEX 
-        P(I,2)=DP(2)+DGABP*BEY 
-        P(I,3)=DP(3)+DGABP*BEZ 
-        P(I,4)=GA*(DP(4)+DBP) 
-  480   CONTINUE 
-      ENDIF 
-C...Weight with azimuthal distribution, if required. 
-      IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN 
-        DO 490 J=1,3 
-        DPT(1,J)=P(IM,J) 
-        DPT(2,J)=P(IAU,J) 
-        DPT(3,J)=P(N+1,J) 
-  490   CONTINUE 
-        DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3) 
-        DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3) 
-        DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2 
-        DO 500 J=1,3 
-        DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/DPMM 
-        DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/DPMM 
-  500   CONTINUE 
-        DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2) 
-        DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2) 
-        IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1*PARJ(82)) THEN 
-          CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+ 
-     &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4)) 
-          IF(MAZIP.NE.0) THEN 
-            IF(1.+HAZIP*(2.*CAD**2-1.).LT.RLY(0)*(1.+ABS(HAZIP))) 
-     &      GOTO 470 
-          ENDIF 
-          IF(MAZIC.NE.0) THEN 
-            IF(MAZIC.EQ.N+2) CAD=-CAD 
-            IF((1.-HAZIC)*(1.-HAZIC*CAD)/(1.+HAZIC**2-2.*HAZIC*CAD) 
-     &      .LT.RLY(0)) GOTO 470 
-          ENDIF 
-        ENDIF 
-      ENDIF 
-C...Azimuthal anisotropy due to interference with initial state partons. 
-      IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR. 
-     &K(N+2,2).EQ.21)) THEN 
-        III=IM-NS-1 
-        IF(ISII(III).GE.1) THEN 
-          IAZIID=N+1 
-          IF(K(N+1,2).NE.21) IAZIID=N+2 
-          IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND. 
-     &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2 
-          THEIID=UYANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2)) 
-          IF(III.EQ.2) THEIID=PARU(1)-THEIID 
-          PHIIID=UYANGL(P(IAZIID,1),P(IAZIID,2)) 
-          HAZII=MIN(0.95,THEIID/THEIIS(III,ISII(III))) 
-          CAD=COS(PHIIID-PHIIIS(III,ISII(III))) 
-          PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III))) 
-          IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL 
-          IF((1.-HAZII)*(1.-HAZII*CAD)/(1.+HAZII**2-2.*HAZII*CAD) 
-     &    .LT.RLY(0)) GOTO 470 
-        ENDIF 
-      ENDIF 
-C...Continue loop over partons that may branch, until none left. 
-      IF(IGM.GE.0) K(IM,1)=14 
-      N=N+NEP 
-      NEP=2 
-      IF(N.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYSHOW:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) N=NS 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      GOTO 270 
-C...Set information on imagined shower initiator. 
-  510 IF(NPA.GE.2) THEN 
-        K(NS+1,1)=11 
-        K(NS+1,2)=94 
-        K(NS+1,3)=IP1 
-        IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2 
-        K(NS+1,4)=NS+2 
-        K(NS+1,5)=NS+1+NPA 
-        IIM=1 
-      ELSE 
-        IIM=0 
-      ENDIF 
-C...Reconstruct string drawing information. 
-      DO 520 I=NS+1+IIM,N 
-      IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN 
-        K(I,1)=1 
-      ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND. 
-     &IABS(K(I,2)).LE.18) THEN 
-        K(I,1)=1 
-      ELSEIF(K(I,1).LE.10) THEN 
-        K(I,4)=MSTU(5)*(K(I,4)/MSTU(5)) 
-        K(I,5)=MSTU(5)*(K(I,5)/MSTU(5)) 
-      ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN 
-        ID1=MOD(K(I,4),MSTU(5)) 
-        IF(K(I,2).GE.1.AND.K(I,2).LE.8) ID1=MOD(K(I,4),MSTU(5))+1 
-        ID2=2*MOD(K(I,4),MSTU(5))+1-ID1 
-        K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1 
-        K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2 
-        K(ID1,4)=K(ID1,4)+MSTU(5)*I 
-        K(ID1,5)=K(ID1,5)+MSTU(5)*ID2 
-        K(ID2,4)=K(ID2,4)+MSTU(5)*ID1 
-        K(ID2,5)=K(ID2,5)+MSTU(5)*I 
-      ELSE 
-        ID1=MOD(K(I,4),MSTU(5)) 
-        ID2=ID1+1 
-        K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1 
-        K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1 
-        IF(IABS(K(I,2)).LE.10.OR.K(ID1,1).GE.11) THEN 
-          K(ID1,4)=K(ID1,4)+MSTU(5)*I 
-          K(ID1,5)=K(ID1,5)+MSTU(5)*I 
-        ELSE 
-          K(ID1,4)=0 
-          K(ID1,5)=0 
-        ENDIF 
-        K(ID2,4)=0 
-        K(ID2,5)=0 
-      ENDIF 
-  520 CONTINUE 
-C...Transformation from CM frame. 
-      IF(NPA.GE.2) THEN 
-        BEX=PS(1)/PS(4) 
-        BEY=PS(2)/PS(4) 
-        BEZ=PS(3)/PS(4) 
-        GA=PS(4)/PS(5) 
-        GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3)) 
-     &  /(1.+GA)-P(IPA(1),4)) 
-      ELSE 
-        BEX=0. 
-        BEY=0. 
-        BEZ=0. 
-        GABEP=0. 
-      ENDIF 
-      THE=UYANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1) 
-     &+GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2)) 
-      PHI=UYANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY) 
-      IF(NPA.EQ.3) THEN 
-        CHI=UYANGL(COS(THE)*COS(PHI)*(P(IPA(2),1)+GABEP*BEX)+COS(THE)* 
-     &  SIN(PHI)*(P(IPA(2),2)+GABEP*BEY)-SIN(THE)*(P(IPA(2),3)+GABEP* 
-     &  BEZ),-SIN(PHI)*(P(IPA(2),1)+GABEP*BEX)+COS(PHI)*(P(IPA(2),2)+ 
-     &  GABEP*BEY)) 
-        MSTU(33)=1 
-        CALL LUDBRB(NS+1,N,0.,CHI,0D0,0D0,0D0) 
-      ENDIF 
-      DBEX=DBLE(BEX) 
-      DBEY=DBLE(BEY) 
-      DBEZ=DBLE(BEZ) 
-      MSTU(33)=1 
-      CALL LUDBRB(NS+1,N,THE,PHI,DBEX,DBEY,DBEZ) 
-C...Decay vertex of shower. 
-      DO 540 I=NS+1,N 
-      DO 530 J=1,5 
-      V(I,J)=V(IP1,J) 
-  530 CONTINUE 
-  540 CONTINUE 
-C...Delete trivial shower, else connect initiators. 
-      IF(N.EQ.NS+NPA+IIM) THEN 
-        N=NS 
-      ELSE 
-        DO 550 IP=1,NPA 
-        K(IPA(IP),1)=14 
-        K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP 
-        K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP 
-        K(NS+IIM+IP,3)=IPA(IP) 
-        IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1 
-        IF(K(NS+IIM+IP,1).NE.1) THEN 
-          K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4) 
-          K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5) 
-        ENDIF 
-  550   CONTINUE 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYBOEI(NSAV) 
-C...Purpose: to modify event so as to approximately take into account 
-C...Bose-Einstein effects according to a simple phenomenological 
-C...parametrization. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYJETS/,/LYDAT1/ 
-      DIMENSION DPS(4),KFBE(9),NBE(0:9),BEI(100) 
-      DATA KFBE/211,-211,111,321,-321,130,310,221,331/ 
-C...Boost event to overall CM frame. Calculate CM energy. 
-      IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN 
-      DO 100 J=1,4 
-      DPS(J)=0. 
-  100 CONTINUE 
-      DO 120 I=1,N 
-      KFA=IABS(K(I,2))
-      IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22).AND.
-     &K(I,3).GT.0) THEN
-        KFMA=IABS(K(K(I,3),2))
-        IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
-      ELSEIF(KFA.EQ.22.AND.K(I,3).EQ.0) THEN
-        K(I,1)=-K(I,1)
-      ENDIF
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120 
-      DO 110 J=1,4 
-      DPS(J)=DPS(J)+P(I,J) 
-  110 CONTINUE 
-  120 CONTINUE 
-      CALL LUDBRB(0,0,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4), 
-     &-DPS(3)/DPS(4)) 
-      PECM=0. 
-      DO 130 I=1,N 
-      IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4) 
-  130 CONTINUE 
-C...Reserve copy of particles by species at end of record. 
-      NBE(0)=N+MSTU(3) 
-      DO 160 IBE=1,MIN(9,MSTJ(52)) 
-      NBE(IBE)=NBE(IBE-1) 
-      DO 150 I=NSAV+1,N 
-      IF(K(I,2).NE.KFBE(IBE)) GOTO 150 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150 
-      IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYBOEI:) no more memory left in LUJETS') 
-        RETURN 
-      ENDIF 
-      NBE(IBE)=NBE(IBE)+1 
-      K(NBE(IBE),1)=I 
-      DO 140 J=1,3 
-      P(NBE(IBE),J)=0. 
-  140 CONTINUE 
-  150 CONTINUE 
-  160 CONTINUE 
-      IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 280
-C...Tabulate integral for subsequent momentum shift. 
-      DO 220 IBE=1,MIN(9,MSTJ(52)) 
-      IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 180 
-      IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2)) 
-     &.LE.1) GOTO 180 
-      IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5), 
-     &NBE(7)-NBE(6)).LE.1) GOTO 180 
-      IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 180 
-      IF(IBE.EQ.1) PMHQ=2.*UYMASS(211) 
-      IF(IBE.EQ.4) PMHQ=2.*UYMASS(321) 
-      IF(IBE.EQ.8) PMHQ=2.*UYMASS(221) 
-      IF(IBE.EQ.9) PMHQ=2.*UYMASS(331) 
-      QDEL=0.1*MIN(PMHQ,PARJ(93)) 
-      IF(MSTJ(51).EQ.1) THEN 
-        NBIN=MIN(100,NINT(9.*PARJ(93)/QDEL)) 
-        BEEX=EXP(0.5*QDEL/PARJ(93)) 
-        BERT=EXP(-QDEL/PARJ(93)) 
-      ELSE 
-        NBIN=MIN(100,NINT(3.*PARJ(93)/QDEL)) 
-      ENDIF 
-      DO 170 IBIN=1,NBIN 
-      QBIN=QDEL*(IBIN-0.5) 
-      BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12.)/SQRT(QBIN**2+PMHQ**2) 
-      IF(MSTJ(51).EQ.1) THEN 
-        BEEX=BEEX*BERT 
-        BEI(IBIN)=BEI(IBIN)*BEEX 
-      ELSE 
-        BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2) 
-      ENDIF 
-      IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1) 
-  170 CONTINUE 
-C...Loop through particle pairs and find old relative momentum. 
-  180 DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)-1 
-      I1=K(I1M,1) 
-      DO 200 I2M=I1M+1,NBE(IBE) 
-      I2=K(I2M,1) 
-      Q2OLD=MAX(0.,(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+ 
-     &P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2) 
-      QOLD=SQRT(Q2OLD) 
-C...Calculate new relative momentum. 
-      IF(QOLD.LT.1E-3*QDEL) THEN 
-        GOTO 200 
-      ELSEIF(QOLD.LE.QDEL) THEN 
-        QMOV=QOLD/3. 
-      ELSEIF(QOLD.LT.(NBIN-0.1)*QDEL) THEN 
-        RBIN=QOLD/QDEL 
-        IBIN=RBIN 
-        RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1) 
-        QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))* 
-     &  SQRT(Q2OLD+PMHQ**2)/Q2OLD 
-      ELSE 
-        QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD 
-      ENDIF 
-      Q2NEW=Q2OLD*(QOLD/(QOLD+3.*PARJ(92)*QMOV))**(2./3.) 
-C...Calculate and save shift to be performed on three-momenta. 
-      HC1=(P(I1,4)+P(I2,4))**2-(Q2OLD-Q2NEW) 
-      HC2=(Q2OLD-Q2NEW)*(P(I1,4)-P(I2,4))**2 
-      HA=0.5*(1.-SQRT(HC1*Q2NEW/(HC1*Q2OLD-HC2))) 
-      DO 190 J=1,3 
-      PD=HA*(P(I2,J)-P(I1,J)) 
-      P(I1M,J)=P(I1M,J)+PD 
-      P(I2M,J)=P(I2M,J)-PD 
-  190 CONTINUE 
-  200 CONTINUE 
-  210 CONTINUE 
-  220 CONTINUE 
-C...Shift momenta and recalculate energies. 
-      DO 240 IM=NBE(0)+1,NBE(MIN(9,MSTJ(52))) 
-      I=K(IM,1) 
-      DO 230 J=1,3 
-      P(I,J)=P(I,J)+P(IM,J) 
-  230 CONTINUE 
-      P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-  240 CONTINUE 
-C...Rescale all momenta for energy conservation. 
-      PES=0. 
-      PQS=0. 
-      DO 250 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 250 
-      PES=PES+P(I,4) 
-      PQS=PQS+P(I,5)**2/P(I,4) 
-  250 CONTINUE 
-      FAC=(PECM-PQS)/(PES-PQS) 
-      DO 270 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 270 
-      DO 260 J=1,3 
-      P(I,J)=FAC*P(I,J) 
-  260 CONTINUE 
-      P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-  270 CONTINUE 
-C...Boost back to correct reference frame. 
-  280 CALL LUDBRB(0,0,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4)) 
-      DO 290 I=1,N
-      IF(K(I,1).LT.0) K(I,1)=-K(I,1)
-  290 CONTINUE
-      RETURN 
-      END 
-C********************************************************************* 
-      FUNCTION UYMASS(KF) 
-C...Purpose: to give the mass of a particle/parton. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT1/,/LYDAT2/ 
-C...Reset variables. Compressed code. 
-      UYMASS=0. 
-      KFA=IABS(KF) 
-      KC=LYCOMP(KF) 
-      IF(KC.EQ.0) RETURN 
-      PARF(106)=PMAS(6,1) 
-      PARF(107)=PMAS(7,1) 
-      PARF(108)=PMAS(8,1) 
-C...Guarantee use of constituent masses for internal checks. 
-      IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.KFA.LE.10) THEN 
-        UYMASS=PARF(100+KFA) 
-        IF(MSTJ(93).EQ.2) UYMASS=MAX(0.,UYMASS-PARF(121)) 
-C...Masses that can be read directly off table. 
-      ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN 
-        UYMASS=PMAS(KC,1) 
-C...Find constituent partons and their masses. 
-      ELSE 
-        KFLA=MOD(KFA/1000,10) 
-        KFLB=MOD(KFA/100,10) 
-        KFLC=MOD(KFA/10,10) 
-        KFLS=MOD(KFA,10) 
-        KFLR=MOD(KFA/10000,10) 
-        PMA=PARF(100+KFLA) 
-        PMB=PARF(100+KFLB) 
-        PMC=PARF(100+KFLC) 
-C...Construct masses for various meson, diquark and baryon cases. 
-        IF(KFLA.EQ.0.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN 
-          IF(KFLS.EQ.1) PMSPL=-3./(PMB*PMC) 
-          IF(KFLS.GE.3) PMSPL=1./(PMB*PMC) 
-          UYMASS=PARF(111)+PMB+PMC+PARF(113)*PARF(101)**2*PMSPL 
-        ELSEIF(KFLA.EQ.0) THEN 
-          KMUL=2 
-          IF(KFLS.EQ.1) KMUL=3 
-          IF(KFLR.EQ.2) KMUL=4 
-          IF(KFLS.EQ.5) KMUL=5 
-          UYMASS=PARF(113+KMUL)+PMB+PMC 
-        ELSEIF(KFLC.EQ.0) THEN 
-          IF(KFLS.EQ.1) PMSPL=-3./(PMA*PMB) 
-          IF(KFLS.EQ.3) PMSPL=1./(PMA*PMB) 
-          UYMASS=2.*PARF(112)/3.+PMA+PMB+PARF(114)*PARF(101)**2*PMSPL 
-          IF(MSTJ(93).EQ.1) UYMASS=PMA+PMB 
-          IF(MSTJ(93).EQ.2) UYMASS=MAX(0.,UYMASS-PARF(122)- 
-     &    2.*PARF(112)/3.) 
-        ELSE 
-          IF(KFLS.EQ.2.AND.KFLA.EQ.KFLB) THEN 
-            PMSPL=1./(PMA*PMB)-2./(PMA*PMC)-2./(PMB*PMC) 
-          ELSEIF(KFLS.EQ.2.AND.KFLB.GE.KFLC) THEN 
-            PMSPL=-2./(PMA*PMB)-2./(PMA*PMC)+1./(PMB*PMC) 
-          ELSEIF(KFLS.EQ.2) THEN 
-            PMSPL=-3./(PMB*PMC) 
-          ELSE 
-            PMSPL=1./(PMA*PMB)+1./(PMA*PMC)+1./(PMB*PMC) 
-          ENDIF 
-          UYMASS=PARF(112)+PMA+PMB+PMC+PARF(114)*PARF(101)**2*PMSPL 
-        ENDIF 
-      ENDIF 
-C...Optional mass broadening according to truncated Breit-Wigner 
-C...(either in m or in m^2). 
-      IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1E-4) THEN 
-        IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN 
-          UYMASS=UYMASS+0.5*PMAS(KC,2)*TAN((2.*RLY(0)-1.)* 
-     &    ATAN(2.*PMAS(KC,3)/PMAS(KC,2))) 
-        ELSE 
-          PM0=UYMASS 
-          PMLOW=ATAN((MAX(0.,PM0-PMAS(KC,3))**2-PM0**2)/ 
-     &    (PM0*PMAS(KC,2))) 
-          PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2))) 
-          UYMASS=SQRT(MAX(0.,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+ 
-     &    (PMUPP-PMLOW)*RLY(0)))) 
-        ENDIF 
-      ENDIF 
-      MSTJ(93)=0 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYNAME(KF,CHAU) 
-C...Purpose: to give the particle/parton name as a character string. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      SAVE /LYDAT1/,/LYDAT2/,/LYDAT4/ 
-      CHARACTER CHAU*16 
-C...Initial values. Charge. Subdivide code. 
-      CHAU=' ' 
-      KFA=IABS(KF) 
-      KC=LYCOMP(KF) 
-      IF(KC.EQ.0) RETURN 
-      KQ=LYCHGE(KF) 
-      KFLA=MOD(KFA/1000,10) 
-      KFLB=MOD(KFA/100,10) 
-      KFLC=MOD(KFA/10,10) 
-      KFLS=MOD(KFA,10) 
-      KFLR=MOD(KFA/10000,10) 
-C...Read out root name and spin for simple particle. 
-      IF(KFA.LE.100.OR.(KFA.GT.100.AND.KC.GT.100)) THEN 
-        CHAU=CHAF(KC) 
-        LEN=0 
-        DO 100 LEM=1,8 
-        IF(CHAU(LEM:LEM).NE.' ') LEN=LEM 
-  100   CONTINUE 
-C...Construct root name for diquark. Add on spin. 
-      ELSEIF(KFLC.EQ.0) THEN 
-        CHAU(1:2)=CHAF(KFLA)(1:1)//CHAF(KFLB)(1:1) 
-        IF(KFLS.EQ.1) CHAU(3:4)='_0' 
-        IF(KFLS.EQ.3) CHAU(3:4)='_1' 
-        LEN=4 
-C...Construct root name for heavy meson. Add on spin and heavy flavour. 
-      ELSEIF(KFLA.EQ.0) THEN 
-        IF(KFLB.EQ.5) CHAU(1:1)='B' 
-        IF(KFLB.EQ.6) CHAU(1:1)='T' 
-        IF(KFLB.EQ.7) CHAU(1:1)='L' 
-        IF(KFLB.EQ.8) CHAU(1:1)='H' 
-        LEN=1 
-        IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
-        ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
-          CHAU(2:2)='*' 
-          LEN=2 
-        ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
-          CHAU(2:3)='_1' 
-          LEN=3 
-        ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
-          CHAU(2:4)='*_0' 
-          LEN=4 
-        ELSEIF(KFLR.EQ.2) THEN 
-          CHAU(2:4)='*_1' 
-          LEN=4 
-        ELSEIF(KFLS.EQ.5) THEN 
-          CHAU(2:4)='*_2' 
-          LEN=4 
-        ENDIF 
-        IF(KFLC.GE.3.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN 
-          CHAU(LEN+1:LEN+2)='_'//CHAF(KFLC)(1:1) 
-          LEN=LEN+2 
-        ELSEIF(KFLC.GE.3) THEN 
-          CHAU(LEN+1:LEN+1)=CHAF(KFLC)(1:1) 
-          LEN=LEN+1 
-        ENDIF 
-C...Construct root name and spin for heavy baryon. 
-      ELSE 
-        IF(KFLB.LE.2.AND.KFLC.LE.2) THEN 
-          CHAU='Sigma ' 
-          IF(KFLC.GT.KFLB) CHAU='Lambda' 
-          IF(KFLS.EQ.4) CHAU='Sigma*' 
-          LEN=5 
-          IF(CHAU(6:6).NE.' ') LEN=6 
-        ELSEIF(KFLB.LE.2.OR.KFLC.LE.2) THEN 
-          CHAU='Xi ' 
-          IF(KFLA.GT.KFLB.AND.KFLB.GT.KFLC) CHAU='Xi''' 
-          IF(KFLS.EQ.4) CHAU='Xi*' 
-          LEN=2 
-          IF(CHAU(3:3).NE.' ') LEN=3 
-        ELSE 
-          CHAU='Omega ' 
-          IF(KFLA.GT.KFLB.AND.KFLB.GT.KFLC) CHAU='Omega''' 
-          IF(KFLS.EQ.4) CHAU='Omega*' 
-          LEN=5 
-          IF(CHAU(6:6).NE.' ') LEN=6 
-        ENDIF 
-C...Add on heavy flavour content for heavy baryon. 
-        CHAU(LEN+1:LEN+2)='_'//CHAF(KFLA)(1:1) 
-        LEN=LEN+2 
-        IF(KFLB.GE.KFLC.AND.KFLC.GE.4) THEN 
-          CHAU(LEN+1:LEN+2)=CHAF(KFLB)(1:1)//CHAF(KFLC)(1:1) 
-          LEN=LEN+2 
-        ELSEIF(KFLB.GE.KFLC.AND.KFLB.GE.4) THEN 
-          CHAU(LEN+1:LEN+1)=CHAF(KFLB)(1:1) 
-          LEN=LEN+1 
-        ELSEIF(KFLC.GT.KFLB.AND.KFLB.GE.4) THEN 
-          CHAU(LEN+1:LEN+2)=CHAF(KFLC)(1:1)//CHAF(KFLB)(1:1) 
-          LEN=LEN+2 
-        ELSEIF(KFLC.GT.KFLB.AND.KFLC.GE.4) THEN 
-          CHAU(LEN+1:LEN+1)=CHAF(KFLC)(1:1) 
-          LEN=LEN+1 
-        ENDIF 
-      ENDIF 
-C...Add on bar sign for antiparticle (where necessary). 
-      IF(KF.GT.0.OR.LEN.EQ.0) THEN 
-      ELSEIF(KFA.GT.10.AND.KFA.LE.40.AND.KQ.NE.0.AND.MOD(KQ,3).EQ.0) 
-     &THEN 
-      ELSEIF(KFA.EQ.89.OR.(KFA.GE.91.AND.KFA.LE.99)) THEN 
-      ELSEIF(KFA.GT.100.AND.KFLA.EQ.0.AND.KQ.NE.0) THEN 
-      ELSEIF(MSTU(15).LE.1) THEN 
-        CHAU(LEN+1:LEN+1)='~' 
-        LEN=LEN+1 
-      ELSE 
-        CHAU(LEN+1:LEN+3)='bar' 
-        LEN=LEN+3 
-      ENDIF 
-C...Add on charge where applicable (conventional cases skipped). 
-      IF(KQ.EQ.6) CHAU(LEN+1:LEN+2)='++' 
-      IF(KQ.EQ.-6) CHAU(LEN+1:LEN+2)='--' 
-      IF(KQ.EQ.3) CHAU(LEN+1:LEN+1)='+' 
-      IF(KQ.EQ.-3) CHAU(LEN+1:LEN+1)='-' 
-      IF(KQ.EQ.0.AND.(KFA.LE.22.OR.LEN.EQ.0)) THEN 
-      ELSEIF(KQ.EQ.0.AND.(KFA.GE.81.AND.KFA.LE.100)) THEN 
-      ELSEIF(KFA.EQ.28.OR.KFA.EQ.29) THEN 
-      ELSEIF(KFA.GT.100.AND.KFLA.EQ.0.AND.KFLB.EQ.KFLC.AND. 
-     &KFLB.NE.1) THEN 
-      ELSEIF(KQ.EQ.0) THEN 
-        CHAU(LEN+1:LEN+1)='0' 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      FUNCTION LYCHGE(KF) 
-C...Purpose: to give three times the charge for a particle/parton. 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT2/ 
-C...Initial values. Simple case of direct readout. 
-      LYCHGE=0 
-      KFA=IABS(KF) 
-      KC=LYCOMP(KFA) 
-      IF(KC.EQ.0) THEN 
-      ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN 
-        LYCHGE=KCHG(KC,1) 
-C...Construction from quark content for heavy meson, diquark, baryon. 
-      ELSEIF(MOD(KFA/1000,10).EQ.0) THEN 
-        LYCHGE=(KCHG(MOD(KFA/100,10),1)-KCHG(MOD(KFA/10,10),1))* 
-     &  (-1)**MOD(KFA/100,10) 
-      ELSEIF(MOD(KFA/10,10).EQ.0) THEN 
-        LYCHGE=KCHG(MOD(KFA/1000,10),1)+KCHG(MOD(KFA/100,10),1) 
-      ELSE 
-        LYCHGE=KCHG(MOD(KFA/1000,10),1)+KCHG(MOD(KFA/100,10),1)+ 
-     &  KCHG(MOD(KFA/10,10),1) 
-      ENDIF 
-C...Add on correct sign. 
-      LYCHGE=LYCHGE*ISIGN(1,KF) 
-      RETURN 
-      END 
-C********************************************************************* 
-      integer function lycomp_beg(kfa)
-*
-*
-* called by modified LYCOMP_BEG to add user defined particles
-*
-* added ASLUND backward compatibility Dec 1994
-* added LYCOMP_BEG=410+abs(KF)/100 000 July 1994
-* added UPS 4S,5S  Jan 1994
-* added all bb-onia below threshold Jun 97 RW
-*
-* NOTE: ASLUND version maps LYCOMP_BEG = 400 + KFA/1 000 000
-*
-* Doug Wright Oct 1994
-* R.Waldi  Nov 1997
-
-      implicit none
-
-C  #include "beget.inc"          (Don't need beget.inc)  1/16/98
-
-      integer N_BB
-      PARAMETER (N_BB = 22)
-      integer KF_BB(N_BB),KC_BB(N_BB),I
-
-      DATA KF_BB
-*        UPS(3S),UPS(4S),UPS(5S),UPS_1(1D),UPS_2(1D),UPS_3(1D)
-     1 / 60553,  70553,  80553,  120553,   30555,    557,
-*        UPS_1(2D),UPS_2(2D),UPS_3(2D),chi_0b(2P),chi_1b(2P),chi_2b(2P)
-     1   130553,   50555,    10557,    30551,     50553,     10555,
-*        h_b(2P),chi_0b(3P),chi_1b(3P),chi_2b(3P),h_b(3P),eta_b(2S),
-     1   40553,  50551,     110553,    20555,     100553, 20551,
-*        eta_b(3S),eta_2b(1D),eta_2b(2D),eta_c(2S)
-     1   40551,    40555,     60555,     20441/
-      DATA KC_BB
-*        UPS(3S),UPS(4S),UPS(5S),UPS_1(1D),UPS_2(1D),UPS_3(1D)
-     1 /   403,    404,    405,     416,     417,    418,
-*        UPS_1(2D),UPS_2(2D),UPS_3(2D),chi_0b(2P),chi_1b(2P),chi_2b(2P)
-     1     419,     420,      421,      410,       411,       412,
-*        h_b(2P),chi_0b(3P),chi_1b(3P),chi_2b(3P),h_b(3P),eta_b(2S),
-     1     422,    413,        414,      415,        423,   401,
-*        eta_b(3S),eta_2b(1D),eta_2b(2D),eta_c(2S)
-     1     402,    424,        425,       460/
-
-      integer kfa
-
-      LYCOMP_BEG = 0
-      IF(    KFA.GE.1000000) THEN   ! for ASLUND backward compatibility
-         LYCOMP_BEG = 400 + MOD(KFA/1 000 000,100)
-c      ELSEIF(KFA.GE.100000) THEN
-c         LYCOMP_BEG = 410 + MOD(KFA/100 000, 90)
-      ELSE
-         DO 100 I=1,N_BB
-         IF(KFA.eq.KF_BB(I)) THEN 
-            LYCOMP_BEG =   KC_BB(I)
-            GOTO 110
-            ENDIF
- 100     CONTINUE
- 110  CONTINUE
-      ENDIF
-      end
-
-C********************************************************************* 
-      FUNCTION LYCOMP(KF) 
-      implicit none
-*****-*****************************************************************-*******
-C...Purpose: to compress the standard KF codes for use in mass and decay
-C...arrays; also to check whether a given code actually is defined.
-C.. History:
-C
-C     12-Aug-1997 - Lockman : implicit none added; save KFTAB, KCTAB 
-C... modified R.Waldi/92-07.v7.4:97-06 beget conv./stdhep, 97/11 evtgen
-C     11-Sep-2000 - Mark Ian Williams added X_su/d/s for BtoXsgamma model
-*****-*****************************************************************-*******
-      integer kf
-      integer lycomp, lycomp_beg
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT2/ 
-      integer kchg
-      real*4 pmas, parf, vckm
-*      DIMENSION KFTAB(25),KCTAB(25) 
-      integer KFTAB(25),KCTAB(25)
-      save KFTAB, KCTAB
-      integer kfa, ikf, kfla, kflb, kflc, kfls, kflr
-      DATA KFTAB/211,111,221,311,321,130,310,213,113,223, 
-     &313,323,2112,2212,210,2110,2210,110,220,330,440,30443,30553,0,0/ 
-      DATA KCTAB/101,111,112,102,103,221,222,121,131,132, 
-     &122,123,332,333,281,282,283,284,285,286,287,231,235,0,0/ 
-C...Starting values. 
-      LYCOMP=lycomp_beg(KF)
-      IF (LYCOMP .NE. 0)  RETURN
-
-      KFA=IABS(KF)
-C...Subdivide KF code into constituent pieces. 
-
-      KFLR=MOD(KFA/10000,10)
-      KFLA=MOD(KFA/1000,10)
-      KFLB=MOD(KFA/100,10)
-      KFLC=MOD(KFA/10,10)
-      KFLS=MOD(KFA,10)
-C...Hardwire the return code for -42 since EvtJetSet updates the particles
-C   too late for the Xu- decays to be recognized
-      IF (KF.EQ.-42) THEN
-        LYCOMP=KFA
-        RETURN
-      ENDIF
-
-C...Allow for massive sbar-u, sbar-d, sbar-s systems
-      IF (KFA.EQ.30343.OR.KFA.EQ.30353.OR.KFA.EQ.30363) THEN
-        LYCOMP=451+KFLC
-        RETURN
-      ENDIF
-
-C...Simple cases: direct translation or table.
-      IF(KFA.EQ.0.OR.KFA.GE.100000) THEN
-        RETURN
-      ELSEIF(KFA.LE.100) THEN
-        LYCOMP=KFA
-        IF(KF.LT.0.AND.KCHG(KFA,3).EQ.0) LYCOMP=0
-        RETURN
-      ELSE
-        DO 100 IKF=1,23
-        IF(KFA.EQ.KFTAB(IKF)) THEN
-          LYCOMP=KCTAB(IKF)
-          IF(KF.LT.0.AND.KCHG(LYCOMP,3).EQ.0) LYCOMP=0
-          RETURN
-        ENDIF
-  100   CONTINUE
-      ENDIF
-
-C...Mesons. 
-      IF(KFA-10000*KFLR.LT.1000) THEN 
-        IF(KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.0.OR.KFLC.EQ.9) THEN 
-        ELSEIF(KFLB.LT.KFLC) THEN 
-        ELSEIF(KF.LT.0.AND.KFLB.EQ.KFLC) THEN 
-        ELSEIF(KFLB.EQ.KFLC) THEN 
-          IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
-            LYCOMP=110+KFLB 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
-            LYCOMP=130+KFLB 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
-            LYCOMP=150+KFLB 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
-            LYCOMP=170+KFLB 
-          ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
-            LYCOMP=190+KFLB 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
-            LYCOMP=210+KFLB 
-          ENDIF 
-        ELSEIF(KFLB.LE.5) THEN 
-          IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
-            LYCOMP=100+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
-            LYCOMP=120+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
-            LYCOMP=140+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
-            LYCOMP=160+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
-            LYCOMP=180+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
-            LYCOMP=200+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ENDIF 
-        ELSEIF((KFLS.EQ.1.AND.KFLR.LE.1).OR.(KFLS.EQ.3.AND.KFLR.LE.2) 
-     &  .OR.(KFLS.EQ.5.AND.KFLR.EQ.0)) THEN 
-          LYCOMP=80+KFLB 
-        ENDIF 
-C...Diquarks. 
-      ELSEIF((KFLR.EQ.0.OR.KFLR.EQ.1).AND.KFLC.EQ.0) THEN 
-        IF(KFLS.NE.1.AND.KFLS.NE.3) THEN 
-        ELSEIF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9) THEN 
-        ELSEIF(KFLA.LT.KFLB) THEN 
-        ELSEIF(KFLS.EQ.1.AND.KFLA.EQ.KFLB) THEN 
-        ELSE 
-          LYCOMP=90 
-        ENDIF 
-C...Spin 1/2 baryons. 
-      ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.2) THEN 
-        IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
-        ELSEIF(KFLA.LE.KFLC.OR.KFLA.LT.KFLB) THEN 
-        ELSEIF(KFLA.GE.6.OR.KFLB.GE.4.OR.KFLC.GE.4) THEN 
-          LYCOMP=80+KFLA 
-        ELSEIF(KFLB.LT.KFLC) THEN 
-          LYCOMP=300+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLC*(KFLC-1))/2+KFLB 
-        ELSE 
-          LYCOMP=330+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
-        ENDIF 
-C...Spin 3/2 baryons. 
-      ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.4) THEN 
-        IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
-        ELSEIF(KFLA.LT.KFLB.OR.KFLB.LT.KFLC) THEN 
-        ELSEIF(KFLA.GE.6.OR.KFLB.GE.4) THEN 
-          LYCOMP=80+KFLA 
-        ELSE 
-          LYCOMP=360+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
-        ENDIF 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYERRM(MERR,CHMESS) 
-C...Purpose: to inform user of errors in program execution. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYJETS/,/LYDAT1/ 
-      CHARACTER CHMESS*(*) 
-C...Write first few warnings, then be silent. 
-      IF(MERR.LE.10) THEN 
-        MSTU(27)=MSTU(27)+1 
-        MSTU(28)=MERR 
-        IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000) 
-     &  MERR,MSTU(31),CHMESS 
-C...Write first few errors, then be silent or stop program. 
-      ELSEIF(MERR.LE.20) THEN 
-        MSTU(23)=MSTU(23)+1 
-        MSTU(24)=MERR-10 
-        IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100) 
-     &  MERR-10,MSTU(31),CHMESS 
-        IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN 
-          WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS 
-          WRITE(MSTU(11),5200) 
-          IF(MERR.NE.17) CALL LYLIST(2) 
-          STOP 
-        ENDIF 
-C...Stop program in case of irreparable error. 
-      ELSE 
-        WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS 
-        STOP 
-      ENDIF 
-C...Formats for output. 
- 5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I6, 
-     &' LYEXEC calls:'/5X,A) 
- 5100 FORMAT(/5X,'Error type',I2,' has occured after',I6, 
-     &' LYEXEC calls:'/5X,A) 
- 5200 FORMAT(5X,'Execution will be stopped after listing of last ', 
-     &'event!') 
- 5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I6, 
-     &' LYEXEC calls:'/5X,A/5X,'Execution will now be stopped!') 
-      RETURN 
-      END 
-C********************************************************************* 
-      FUNCTION UYALEM(Q2) 
-C...Purpose: to calculate the running alpha_electromagnetic. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYDAT1/ 
-C...Calculate real part of photon vacuum polarization. 
-C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions. 
-C...For hadrons use parametrization of H. Burkhardt et al. 
-C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131. 
-      AEMPI=PARU(101)/(3.*PARU(1)) 
-      IF(MSTU(101).LE.0.OR.Q2.LT.2E-6) THEN 
-        RPIGG=0. 
-      ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
-        RPIGG=0.
-      ELSEIF(MSTU(101).EQ.2) THEN
-        RPIGG=1.-PARU(101)/PARU(103) 
-      ELSEIF(Q2.LT.0.09) THEN 
-        RPIGG=AEMPI*(13.4916+LOG(Q2))+0.00835*LOG(1.+Q2) 
-      ELSEIF(Q2.LT.9.) THEN 
-        RPIGG=AEMPI*(16.3200+2.*LOG(Q2))+0.00238*LOG(1.+3.927*Q2) 
-      ELSEIF(Q2.LT.1E4) THEN 
-        RPIGG=AEMPI*(13.4955+3.*LOG(Q2))+0.00165+0.00299*LOG(1.+Q2) 
-      ELSE 
-        RPIGG=AEMPI*(13.4955+3.*LOG(Q2))+0.00221+0.00293*LOG(1.+Q2) 
-      ENDIF 
-C...Calculate running alpha_em. 
-      UYALEM=PARU(101)/(1.-RPIGG) 
-      PARU(108)=UYALEM 
-      RETURN 
-      END 
-C********************************************************************* 
-      FUNCTION UYALPS(Q2) 
-C...Purpose: to give the value of alpha_strong. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT1/,/LYDAT2/ 
-C...Constant alpha_strong trivial. 
-      IF(MSTU(111).LE.0) THEN 
-        UYALPS=PARU(111) 
-        MSTU(118)=MSTU(112) 
-        PARU(117)=0. 
-        PARU(118)=PARU(111) 
-        RETURN 
-      ENDIF 
-C...Find effective Q2, number of flavours and Lambda. 
-      Q2EFF=Q2 
-      IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114)) 
-      NF=MSTU(112) 
-      ALAM2=PARU(112)**2 
-  100 IF(NF.GT.MAX(2,MSTU(113))) THEN 
-        Q2THR=PARU(113)*PMAS(NF,1)**2 
-        IF(Q2EFF.LT.Q2THR) THEN 
-          NF=NF-1 
-          ALAM2=ALAM2*(Q2THR/ALAM2)**(2./(33.-2.*NF)) 
-          GOTO 100 
-        ENDIF 
-      ENDIF 
-  110 IF(NF.LT.MIN(8,MSTU(114))) THEN 
-        Q2THR=PARU(113)*PMAS(NF+1,1)**2 
-        IF(Q2EFF.GT.Q2THR) THEN 
-          NF=NF+1 
-          ALAM2=ALAM2*(ALAM2/Q2THR)**(2./(33.-2.*NF)) 
-          GOTO 110 
-        ENDIF 
-      ENDIF 
-      IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2 
-      PARU(117)=SQRT(ALAM2) 
-C...Evaluate first or second order alpha_strong. 
-      B0=(33.-2.*NF)/6. 
-      ALGQ=LOG(MAX(1.0001,Q2EFF/ALAM2)) 
-      IF(MSTU(111).EQ.1) THEN 
-        UYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)) 
-      ELSE 
-        B1=(153.-19.*NF)/6. 
-        UYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1.-B1*LOG(ALGQ)/ 
-     &  (B0**2*ALGQ))) 
-      ENDIF 
-      MSTU(118)=NF 
-      PARU(118)=UYALPS 
-      RETURN 
-      END 
-C********************************************************************* 
-      FUNCTION UYANGL(X,Y) 
-C...Purpose: to reconstruct an angle from given x and y coordinates. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYDAT1/ 
-      UYANGL=0. 
-      R=SQRT(X**2+Y**2) 
-      IF(R.LT.1E-20) RETURN 
-      IF(ABS(X)/R.LT.0.8) THEN 
-        UYANGL=SIGN(ACOS(X/R),Y) 
-      ELSE 
-        UYANGL=ASIN(Y/R) 
-        IF(X.LT.0..AND.UYANGL.GE.0.) THEN 
-          UYANGL=PARU(1)-UYANGL 
-        ELSEIF(X.LT.0.) THEN 
-          UYANGL=-PARU(1)-UYANGL 
-        ENDIF 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-c 
-c      FUNCTION RLU(IDUMMY) 
-c 
-cC...Purpose: to generate random numbers uniformly distributed between 
-cC...0 and 1, excluding the endpoints. 
-c      COMMON/LYDATR/MRLU(6),RRLU(100) 
-c      SAVE /LYDATR/ 
-c      EQUIVALENCE (MRLU1,MRLU(1)),(MRLU2,MRLU(2)),(MRLU3,MRLU(3)), 
-c     &(MRLU4,MRLU(4)),(MRLU5,MRLU(5)),(MRLU6,MRLU(6)), 
-c     &(RRLU98,RRLU(98)),(RRLU99,RRLU(99)),(RRLU00,RRLU(100)) 
-c 
-cC...Initialize generation from given seed. 
-c      IF(MRLU2.EQ.0) THEN 
-c        IJ=MOD(MRLU1/30082,31329) 
-c        KL=MOD(MRLU1,30082) 
-c        I=MOD(IJ/177,177)+2 
-c        J=MOD(IJ,177)+2 
-c        K=MOD(KL/169,178)+1 
-c        L=MOD(KL,169) 
-c        DO 110 II=1,97 
-c        S=0. 
-c        T=0.5 
-c        DO 100 JJ=1,24 
-c        M=MOD(MOD(I*J,179)*K,179) 
-c        I=J 
-c        J=K 
-c        K=M 
-c        L=MOD(53*L+1,169) 
-c        IF(MOD(L*M,64).GE.32) S=S+T 
-c        T=0.5*T 
-c  100   CONTINUE 
-c        RRLU(II)=S 
-c  110   CONTINUE 
-c        TWOM24=1. 
-c        DO 120 I24=1,24 
-c        TWOM24=0.5*TWOM24 
-c  120   CONTINUE 
-c        RRLU98=362436.*TWOM24 
-c        RRLU99=7654321.*TWOM24 
-c        RRLU00=16777213.*TWOM24 
-c        MRLU2=1 
-c        MRLU3=0 
-c        MRLU4=97 
-c        MRLU5=33 
-c      ENDIF 
-c 
-cC...Generate next random number. 
-c  130 RUNI=RRLU(MRLU4)-RRLU(MRLU5) 
-c      IF(RUNI.LT.0.) RUNI=RUNI+1. 
-c      RRLU(MRLU4)=RUNI 
-c      MRLU4=MRLU4-1 
-c      IF(MRLU4.EQ.0) MRLU4=97 
-c      MRLU5=MRLU5-1 
-c      IF(MRLU5.EQ.0) MRLU5=97 
-c      RRLU98=RRLU98-RRLU99 
-c      IF(RRLU98.LT.0.) RRLU98=RRLU98+RRLU00 
-c      RUNI=RUNI-RRLU98 
-c      IF(RUNI.LT.0.) RUNI=RUNI+1. 
-c      IF(RUNI.LE.0.OR.RUNI.GE.1.) GOTO 130 
-c 
-cC...Update counters. Random number to output. 
-c      MRLU3=MRLU3+1 
-c      IF(MRLU3.EQ.1000000000) THEN 
-c        MRLU2=MRLU2+1 
-c        MRLU3=0 
-c      ENDIF 
-c      RLU=RUNI 
-c 
-c      RETURN 
-c      END 
-c 
-C********************************************************************* 
-      SUBROUTINE RLYGET(LFN,MOVE) 
-C...Purpose: to dump the state of the random number generator on a file 
-C...for subsequent startup from this state onwards. 
-      COMMON/LYDATR/MRLU(6),RRLU(100) 
-      SAVE /LYDATR/ 
-      CHARACTER CHERR*8 
-C...Backspace required number of records (or as many as there are). 
-      IF(MOVE.LT.0) THEN 
-        NBCK=MIN(MRLU(6),-MOVE) 
-        DO 100 IBCK=1,NBCK 
-        BACKSPACE(LFN,ERR=110,IOSTAT=IERR) 
-  100   CONTINUE 
-        MRLU(6)=MRLU(6)-NBCK 
-      ENDIF 
-C...Unformatted write on unit LFN. 
-      WRITE(LFN,ERR=110,IOSTAT=IERR) (MRLU(I1),I1=1,5), 
-     &(RRLU(I2),I2=1,100) 
-      MRLU(6)=MRLU(6)+1 
-      RETURN 
-C...Write error. 
-  110 WRITE(CHERR,'(I8)') IERR 
-      CALL LYERRM(18,'(RLYGET:) error when accessing file, IOSTAT ='// 
-     &CHERR) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE RLYSET(LFN,MOVE) 
-C...Purpose: to read a state of the random number generator from a file 
-C...for subsequent generation from this state onwards. 
-      COMMON/LYDATR/MRLU(6),RRLU(100) 
-      SAVE /LYDATR/ 
-      CHARACTER CHERR*8 
-C...Backspace required number of records (or as many as there are). 
-      IF(MOVE.LT.0) THEN 
-        NBCK=MIN(MRLU(6),-MOVE) 
-        DO 100 IBCK=1,NBCK 
-        BACKSPACE(LFN,ERR=120,IOSTAT=IERR) 
-  100   CONTINUE 
-        MRLU(6)=MRLU(6)-NBCK 
-      ENDIF 
-C...Unformatted read from unit LFN. 
-      NFOR=1+MAX(0,MOVE) 
-      DO 110 IFOR=1,NFOR 
-      READ(LFN,ERR=120,IOSTAT=IERR) (MRLU(I1),I1=1,5), 
-     &(RRLU(I2),I2=1,100) 
-  110 CONTINUE 
-      MRLU(6)=MRLU(6)+NFOR 
-      RETURN 
-C...Write error. 
-  120 WRITE(CHERR,'(I8)') IERR 
-      CALL LYERRM(18,'(RLYSET:) error when accessing file, IOSTAT ='// 
-     &CHERR) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYROBO(THE,PHI,BEX,BEY,BEZ) 
-C...Purpose: to perform rotations and boosts. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYJETS/,/LYDAT1/ 
-      DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4) 
-C...Find range of rotation/boost. Convert boost to double precision. 
-      IMIN=1 
-      IF(MSTU(1).GT.0) IMIN=MSTU(1) 
-      IMAX=N 
-      IF(MSTU(2).GT.0) IMAX=MSTU(2) 
-      DBX=BEX 
-      DBY=BEY 
-      DBZ=BEZ 
-      GOTO 120 
-C...Entry for specific range and double precision boost. 
-      ENTRY LUDBRB(IMI,IMA,THE,PHI,DBEX,DBEY,DBEZ) 
-      IMIN=IMI 
-      IF(IMIN.LE.0) IMIN=1 
-      IMAX=IMA 
-      IF(IMAX.LE.0) IMAX=N 
-      DBX=DBEX 
-      DBY=DBEY 
-      DBZ=DBEZ 
-C...Optional resetting of V (when not set before.) 
-      IF(MSTU(33).NE.0) THEN 
-        DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4)) 
-        DO 100 J=1,5 
-        V(I,J)=0. 
-  100   CONTINUE 
-  110 CONTINUE 
-        MSTU(33)=0 
-      ENDIF 
-C...Check range of rotation/boost. 
-  120 IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN 
-        CALL LYERRM(11,'(LYROBO:) range outside LUJETS memory') 
-        RETURN 
-      ENDIF 
-C...Rotate, typically from z axis to direction (theta,phi). 
-      IF(THE**2+PHI**2.GT.1E-20) THEN 
-        ROT(1,1)=COS(THE)*COS(PHI) 
-        ROT(1,2)=-SIN(PHI) 
-        ROT(1,3)=SIN(THE)*COS(PHI) 
-        ROT(2,1)=COS(THE)*SIN(PHI) 
-        ROT(2,2)=COS(PHI) 
-        ROT(2,3)=SIN(THE)*SIN(PHI) 
-        ROT(3,1)=-SIN(THE) 
-        ROT(3,2)=0. 
-        ROT(3,3)=COS(THE) 
-        DO 150 I=IMIN,IMAX 
-        IF(K(I,1).LE.0) GOTO 150 
-        DO 130 J=1,3 
-        PR(J)=P(I,J) 
-        VR(J)=V(I,J) 
-  130   CONTINUE 
-        DO 140 J=1,3 
-        P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3) 
-        V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3) 
-  140   CONTINUE 
-  150   CONTINUE 
-      ENDIF 
-C...Boost, typically from rest to momentum/energy=beta. 
-      IF(DBX**2+DBY**2+DBZ**2.GT.1E-20) THEN 
-        DB=SQRT(DBX**2+DBY**2+DBZ**2) 
-        IF(DB.GT.0.99999999D0) THEN 
-C...Rescale boost vector if too close to unity. 
-          CALL LYERRM(3,'(LYROBO:) boost vector too large') 
-          DBX=DBX*(0.99999999D0/DB) 
-          DBY=DBY*(0.99999999D0/DB) 
-          DBZ=DBZ*(0.99999999D0/DB) 
-          DB=0.99999999D0 
-        ENDIF 
-        DGA=1D0/SQRT(1D0-DB**2) 
-        DO 170 I=IMIN,IMAX 
-        IF(K(I,1).LE.0) GOTO 170 
-        DO 160 J=1,4 
-        DP(J)=P(I,J) 
-        DV(J)=V(I,J) 
-  160   CONTINUE 
-        DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3) 
-        DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4)) 
-        P(I,1)=DP(1)+DGABP*DBX 
-        P(I,2)=DP(2)+DGABP*DBY 
-        P(I,3)=DP(3)+DGABP*DBZ 
-        P(I,4)=DGA*(DP(4)+DBP) 
-        DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3) 
-        DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4)) 
-        V(I,1)=DV(1)+DGABV*DBX 
-        V(I,2)=DV(2)+DGABV*DBY 
-        V(I,3)=DV(3)+DGABV*DBZ 
-        V(I,4)=DGA*(DV(4)+DBV) 
-  170   CONTINUE 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYEDIT(MEDIT) 
-C...Purpose: to perform global manipulations on the event record, 
-C...in particular to exclude unstable or undetectable partons/particles. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION NS(2),PTS(2),PLS(2) 
-C...Remove unwanted partons/particles. 
-      IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN 
-        IMAX=N 
-        IF(MSTU(2).GT.0) IMAX=MSTU(2) 
-        I1=MAX(1,MSTU(1))-1 
-        DO 110 I=MAX(1,MSTU(1)),IMAX 
-        IF(K(I,1).EQ.0.OR.K(I,1).GT.20) GOTO 110 
-        IF(MEDIT.EQ.1) THEN 
-          IF(K(I,1).GT.10) GOTO 110 
-        ELSEIF(MEDIT.EQ.2) THEN 
-          IF(K(I,1).GT.10) GOTO 110 
-          KC=LYCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.KC.EQ.18) 
-     &    GOTO 110 
-        ELSEIF(MEDIT.EQ.3) THEN 
-          IF(K(I,1).GT.10) GOTO 110 
-          KC=LYCOMP(K(I,2)) 
-          IF(KC.EQ.0) GOTO 110 
-          IF(KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) GOTO 110 
-        ELSEIF(MEDIT.EQ.5) THEN 
-          IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) GOTO 110 
-          KC=LYCOMP(K(I,2)) 
-          IF(KC.EQ.0) GOTO 110 
-          IF(K(I,1).GE.11.AND.KCHG(KC,2).EQ.0) GOTO 110 
-        ENDIF 
-C...Pack remaining partons/particles. Origin no longer known. 
-        I1=I1+1 
-        DO 100 J=1,5 
-        K(I1,J)=K(I,J) 
-        P(I1,J)=P(I,J) 
-        V(I1,J)=V(I,J) 
-  100   CONTINUE 
-        K(I1,3)=0 
-  110   CONTINUE 
-        IF(I1.LT.N) MSTU(3)=0 
-        IF(I1.LT.N) MSTU(70)=0 
-        N=I1 
-C...Selective removal of class of entries. New position of retained. 
-      ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN 
-        I1=0 
-        DO 120 I=1,N 
-        K(I,3)=MOD(K(I,3),MSTU(5)) 
-        IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120 
-        IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120 
-        IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR. 
-     &  K(I,1).EQ.15).AND.K(I,2).NE.94) GOTO 120 
-        IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR. 
-     &  K(I,2).EQ.94)) GOTO 120 
-        IF(MEDIT.EQ.15.AND.K(I,1).GE.21) GOTO 120 
-        I1=I1+1 
-        K(I,3)=K(I,3)+MSTU(5)*I1 
-  120   CONTINUE 
-C...Find new event history information and replace old. 
-        DO 140 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,3)/MSTU(5).EQ.0) GOTO 140 
-        ID=I 
-  130   IM=MOD(K(ID,3),MSTU(5)) 
-        IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN 
-          IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15).AND. 
-     &    K(IM,2).NE.94) THEN 
-            ID=IM 
-            GOTO 130 
-          ENDIF 
-        ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN 
-          IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,2).EQ.94) THEN 
-            ID=IM 
-            GOTO 130 
-          ENDIF 
-        ENDIF 
-        K(I,3)=MSTU(5)*(K(I,3)/MSTU(5)) 
-        IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5) 
-        IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN 
-          IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)= 
-     &    K(K(I,4),3)/MSTU(5) 
-          IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)= 
-     &    K(K(I,5),3)/MSTU(5) 
-        ELSE 
-          KCM=MOD(K(I,4)/MSTU(5),MSTU(5)) 
-          IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5) 
-          KCD=MOD(K(I,4),MSTU(5)) 
-          IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5) 
-          K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD 
-          KCM=MOD(K(I,5)/MSTU(5),MSTU(5)) 
-          IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5) 
-          KCD=MOD(K(I,5),MSTU(5)) 
-          IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5) 
-          K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD 
-        ENDIF 
-  140   CONTINUE 
-C...Pack remaining entries. 
-        I1=0 
-        MSTU90=MSTU(90) 
-        MSTU(90)=0 
-        DO 170 I=1,N 
-        IF(K(I,3)/MSTU(5).EQ.0) GOTO 170 
-        I1=I1+1 
-        DO 150 J=1,5 
-        K(I1,J)=K(I,J) 
-        P(I1,J)=P(I,J) 
-        V(I1,J)=V(I,J) 
-  150   CONTINUE 
-        K(I1,3)=MOD(K(I1,3),MSTU(5)) 
-        DO 160 IZ=1,MSTU90 
-        IF(I.EQ.MSTU(90+IZ)) THEN 
-          MSTU(90)=MSTU(90)+1 
-          MSTU(90+MSTU(90))=I1 
-          PARU(90+MSTU(90))=PARU(90+IZ) 
-        ENDIF 
-  160   CONTINUE 
-  170   CONTINUE 
-        IF(I1.LT.N) MSTU(3)=0 
-        IF(I1.LT.N) MSTU(70)=0 
-        N=I1 
-C...Fill in some missing daughter pointers (lost in colour flow). 
-      ELSEIF(MEDIT.EQ.16) THEN 
-        DO 190 I=1,N 
-        IF(K(I,1).LE.10.OR.K(I,1).GT.20) GOTO 190 
-        IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 190 
-C...Find daughters who point to mother.
-        DO 180 I1=I+1,N 
-        IF(K(I1,3).NE.I) THEN 
-        ELSEIF(K(I,4).EQ.0) THEN 
-          K(I,4)=I1 
-        ELSE 
-          K(I,5)=I1 
-        ENDIF 
-  180   CONTINUE 
-        IF(K(I,5).EQ.0) K(I,5)=K(I,4)
-        IF(K(I,4).NE.0) GOTO 190
-C...Find daughters who point to documentation version of mother.      
-        IM=K(I,3)
-        IF(IM.LE.0.OR.IM.GE.I) GOTO 190
-        IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 190  
-        IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1E-2) GOTO 190
-        DO 182 I1=I+1,N 
-        IF(K(I1,3).NE.IM) THEN 
-        ELSEIF(K(I,4).EQ.0) THEN 
-          K(I,4)=I1 
-        ELSE 
-          K(I,5)=I1 
-        ENDIF 
-  182   CONTINUE 
-        IF(K(I,5).EQ.0) K(I,5)=K(I,4)
-        IF(K(I,4).NE.0) GOTO 190
-C...Find daughters who point to documentation daughters who,
-C...in their turn, point to documentation mother.
-        ID1=IM
-        ID2=IM
-        DO 184 I1=IM+1,I-1
-        IF(K(I1,3).EQ.IM.AND.K(I1,1).GT.20.AND.K(I1,1).LE.30) THEN
-          ID2=I1
-          IF(ID1.EQ.IM) ID1=I1
-        ENDIF
-  184   CONTINUE 
-        DO 186 I1=I+1,N 
-        IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN 
-        ELSEIF(K(I,4).EQ.0) THEN 
-          K(I,4)=I1 
-        ELSE 
-          K(I,5)=I1 
-        ENDIF 
-  186   CONTINUE 
-        IF(K(I,5).EQ.0) K(I,5)=K(I,4)
-  190   CONTINUE 
-C...Save top entries at bottom of LUJETS commonblock. 
-      ELSEIF(MEDIT.EQ.21) THEN 
-        IF(2*N.GE.MSTU(4)) THEN 
-          CALL LYERRM(11,'(LYEDIT:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        DO 210 I=1,N 
-        DO 200 J=1,5 
-        K(MSTU(4)-I,J)=K(I,J) 
-        P(MSTU(4)-I,J)=P(I,J) 
-        V(MSTU(4)-I,J)=V(I,J) 
-  200   CONTINUE 
-  210   CONTINUE 
-        MSTU(32)=N 
-C...Restore bottom entries of commonblock LUJETS to top. 
-      ELSEIF(MEDIT.EQ.22) THEN 
-        DO 230 I=1,MSTU(32) 
-        DO 220 J=1,5 
-        K(I,J)=K(MSTU(4)-I,J) 
-        P(I,J)=P(MSTU(4)-I,J) 
-        V(I,J)=V(MSTU(4)-I,J) 
-  220   CONTINUE 
-  230   CONTINUE 
-        N=MSTU(32) 
-C...Mark primary entries at top of commonblock LUJETS as untreated. 
-      ELSEIF(MEDIT.EQ.23) THEN 
-        I1=0 
-        DO 240 I=1,N 
-        KH=K(I,3) 
-        IF(KH.GE.1) THEN 
-          IF(K(KH,1).GT.20) KH=0 
-        ENDIF 
-        IF(KH.NE.0) GOTO 250 
-        I1=I1+1 
-        IF(K(I,1).GT.10.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10 
-  240   CONTINUE 
-  250   N=I1 
-C...Place largest axis along z axis and second largest in xy plane. 
-      ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN 
-        CALL LUDBRB(1,N+MSTU(3),0.,-UYANGL(P(MSTU(61),1), 
-     &  P(MSTU(61),2)),0D0,0D0,0D0) 
-        CALL LUDBRB(1,N+MSTU(3),-UYANGL(P(MSTU(61),3), 
-     &  P(MSTU(61),1)),0.,0D0,0D0,0D0) 
-        CALL LUDBRB(1,N+MSTU(3),0.,-UYANGL(P(MSTU(61)+1,1), 
-     &  P(MSTU(61)+1,2)),0D0,0D0,0D0) 
-        IF(MEDIT.EQ.31) RETURN 
-C...Rotate to put slim jet along +z axis. 
-        DO 260 IS=1,2 
-        NS(IS)=0 
-        PTS(IS)=0. 
-        PLS(IS)=0. 
-  260   CONTINUE 
-        DO 270 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 270 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LYCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 270 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &    GOTO 270 
-        ENDIF 
-        IS=2.-SIGN(0.5,P(I,3)) 
-        NS(IS)=NS(IS)+1 
-        PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2) 
-  270   CONTINUE 
-        IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2) 
-     &  CALL LUDBRB(1,N+MSTU(3),PARU(1),0.,0D0,0D0,0D0) 
-C...Rotate to put second largest jet into -z,+x quadrant. 
-        DO 280 I=1,N 
-        IF(P(I,3).GE.0.) GOTO 280 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 280 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LYCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 280 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &    GOTO 280 
-        ENDIF 
-        IS=2.-SIGN(0.5,P(I,1)) 
-        PLS(IS)=PLS(IS)-P(I,3) 
-  280   CONTINUE 
-        IF(PLS(2).GT.PLS(1)) CALL LUDBRB(1,N+MSTU(3),0.,PARU(1), 
-     &  0D0,0D0,0D0) 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYLIST(MLIST) 
-C...Purpose: to give program heading, or list an event, or particle 
-C...data, or current parameter values. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/,/LYDAT3/ 
-      CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4 
-      DIMENSION PS(6) 
-      DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/ 
-C...Initialization printout: version number and date of last change. 
-      IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN 
-        CALL LYLOGO 
-        MSTU(12)=0 
-        IF(MLIST.EQ.0) RETURN 
-      ENDIF 
-C...List event data, including additional lines after N. 
-      IF(MLIST.GE.1.AND.MLIST.LE.3) THEN 
-        IF(MLIST.EQ.1) WRITE(MSTU(11),5100) 
-        IF(MLIST.EQ.2) WRITE(MSTU(11),5200) 
-        IF(MLIST.EQ.3) WRITE(MSTU(11),5300) 
-        LMX=12 
-        IF(MLIST.GE.2) LMX=16 
-        ISTR=0 
-        IMAX=N 
-        IF(MSTU(2).GT.0) IMAX=MSTU(2) 
-        DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3))) 
-        IF((I.GT.IMAX.AND.I.LE.N).OR.K(I,1).LT.0) GOTO 120 
-C...Get particle name, pad it and check it is not too long. 
-        CALL LYNAME(K(I,2),CHAP) 
-        LEN=0 
-        DO 100 LEM=1,16 
-        IF(CHAP(LEM:LEM).NE.' ') LEN=LEM 
-  100   CONTINUE 
-        MDL=(K(I,1)+19)/10 
-        LDL=0 
-        IF(MDL.EQ.2.OR.MDL.GE.8) THEN 
-          CHAC=CHAP 
-          IF(LEN.GT.LMX) CHAC(LMX:LMX)='?' 
-        ELSE 
-          LDL=1 
-          IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2 
-          IF(LEN.EQ.0) THEN 
-            CHAC=CHDL(MDL)(1:2*LDL)//' ' 
-          ELSE 
-            CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))// 
-     &      CHDL(MDL)(LDL+1:2*LDL)//' ' 
-            IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?' 
-          ENDIF 
-        ENDIF 
-C...Add information on string connection. 
-        IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12) 
-     &  THEN 
-          KC=LYCOMP(K(I,2)) 
-          KCC=0 
-          IF(KC.NE.0) KCC=KCHG(KC,2) 
-          IF(IABS(K(I,2)).EQ.39) THEN 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X' 
-          ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN 
-            ISTR=1 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A' 
-          ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I' 
-          ELSEIF(KCC.NE.0) THEN 
-            ISTR=0 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V' 
-          ENDIF 
-        ENDIF 
-C...Write data for particle/jet. 
-        IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999.) THEN 
-          WRITE(MSTU(11),5400) I,CHAC(1:12),(K(I,J1),J1=1,3), 
-     &    (P(I,J2),J2=1,5) 
-        ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999.) THEN 
-          WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3), 
-     &    (P(I,J2),J2=1,5) 
-        ELSEIF(MLIST.EQ.1) THEN 
-          WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3), 
-     &    (P(I,J2),J2=1,5) 
-        ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR. 
-     &  K(I,1).EQ.14)) THEN 
-          WRITE(MSTU(11),5700) I,CHAC,(K(I,J1),J1=1,3), 
-     &    K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000), 
-     &    K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000), 
-     &    (P(I,J2),J2=1,5) 
-        ELSE 
-          WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,5),(P(I,J2),J2=1,5) 
-        ENDIF 
-        IF(MLIST.EQ.3) WRITE(MSTU(11),5900) (V(I,J),J=1,5) 
-C...Insert extra separator lines specified by user. 
-        IF(MSTU(70).GE.1) THEN 
-          ISEP=0 
-          DO 110 J=1,MIN(10,MSTU(70)) 
-          IF(I.EQ.MSTU(70+J)) ISEP=1 
-  110     CONTINUE 
-          IF(ISEP.EQ.1.AND.MLIST.EQ.1) WRITE(MSTU(11),6000) 
-          IF(ISEP.EQ.1.AND.MLIST.GE.2) WRITE(MSTU(11),6100) 
-        ENDIF 
-  120   CONTINUE 
-C...Sum of charges and momenta. 
-        DO 130 J=1,6 
-        PS(J)=PLY(0,J) 
-  130   CONTINUE 
-        IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999.) THEN 
-          WRITE(MSTU(11),6200) PS(6),(PS(J),J=1,5) 
-        ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999.) THEN 
-          WRITE(MSTU(11),6300) PS(6),(PS(J),J=1,5) 
-        ELSEIF(MLIST.EQ.1) THEN 
-          WRITE(MSTU(11),6400) PS(6),(PS(J),J=1,5) 
-        ELSE 
-          WRITE(MSTU(11),6500) PS(6),(PS(J),J=1,5) 
-        ENDIF 
-C...Give simple list of KF codes defined in program. 
-      ELSEIF(MLIST.EQ.11) THEN 
-        WRITE(MSTU(11),6600) 
-        DO 140 KF=1,40 
-        CALL LYNAME(KF,CHAP) 
-        CALL LYNAME(-KF,CHAN) 
-        IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP 
-        IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  140   CONTINUE 
-        DO 170 KFLS=1,3,2 
-        DO 160 KFLA=1,8 
-        DO 150 KFLB=1,KFLA-(3-KFLS)/2 
-        KF=1000*KFLA+100*KFLB+KFLS 
-        CALL LYNAME(KF,CHAP) 
-        CALL LYNAME(-KF,CHAN) 
-        WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  150   CONTINUE 
-  160   CONTINUE 
-  170   CONTINUE 
-        KF=130 
-        CALL LYNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        KF=310 
-        CALL LYNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        DO 200 KMUL=0,5 
-        KFLS=3 
-        IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1 
-        IF(KMUL.EQ.5) KFLS=5 
-        KFLR=0 
-        IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1 
-        IF(KMUL.EQ.4) KFLR=2 
-        DO 190 KFLB=1,8 
-        DO 180 KFLC=1,KFLB-1 
-        KF=10000*KFLR+100*KFLB+10*KFLC+KFLS 
-        CALL LYNAME(KF,CHAP) 
-        CALL LYNAME(-KF,CHAN) 
-        WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  180   CONTINUE 
-        KF=10000*KFLR+110*KFLB+KFLS 
-        CALL LYNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-  190   CONTINUE 
-  200 CONTINUE 
-        KF=30443 
-        CALL LYNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        KF=30553 
-        CALL LYNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        DO 240 KFLSP=1,3 
-        KFLS=2+2*(KFLSP/3) 
-        DO 230 KFLA=1,8 
-        DO 220 KFLB=1,KFLA 
-        DO 210 KFLC=1,KFLB 
-        IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC)) GOTO 210 
-        IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 210 
-        IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS 
-        IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS 
-        CALL LYNAME(KF,CHAP) 
-        CALL LYNAME(-KF,CHAN) 
-        WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  210   CONTINUE 
-  220   CONTINUE 
-  230   CONTINUE 
-  240   CONTINUE 
-C...List parton/particle data table. Check whether to be listed. 
-      ELSEIF(MLIST.EQ.12) THEN 
-        WRITE(MSTU(11),6800) 
-        MSTJ24=MSTJ(24) 
-        MSTJ(24)=0 
-        KFMAX=30553 
-        IF(MSTU(2).NE.0) KFMAX=MSTU(2) 
-        DO 270 KF=MAX(1,MSTU(1)),KFMAX 
-        KC=LYCOMP(KF) 
-        IF(KC.EQ.0) GOTO 270 
-        IF(MSTU(14).EQ.0.AND.KF.GT.100.AND.KC.LE.100) GOTO 270 
-        IF(MSTU(14).GT.0.AND.KF.GT.100.AND.MAX(MOD(KF/1000,10), 
-     &  MOD(KF/100,10)).GT.MSTU(14)) GOTO 270 
-        IF(MSTU(14).GT.0.AND.KF.GT.100.AND.KC.EQ.90) GOTO 270 
-C...Find particle name and mass. Print information. 
-        CALL LYNAME(KF,CHAP) 
-        IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 270 
-        CALL LYNAME(-KF,CHAN) 
-        PM=UYMASS(KF) 
-        WRITE(MSTU(11),6900) KF,KC,CHAP,CHAN,KCHG(KC,1),KCHG(KC,2), 
-     &  KCHG(KC,3),PM,PMAS(KC,2),PMAS(KC,3),PMAS(KC,4),MDCY(KC,1) 
-C...Particle decay: channel number, branching ration, matrix element, 
-C...decay products. 
-        IF(KF.GT.100.AND.KC.LE.100) GOTO 270 
-        DO 260 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
-        DO 250 J=1,5 
-        CALL LYNAME(KFDP(IDC,J),CHAD(J)) 
-  250   CONTINUE 
-        WRITE(MSTU(11),7000) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
-     &  (CHAD(J),J=1,5) 
-  260   CONTINUE 
-  270   CONTINUE 
-        MSTJ(24)=MSTJ24 
-C...List parameter value table. 
-      ELSEIF(MLIST.EQ.13) THEN 
-        WRITE(MSTU(11),7100) 
-        DO 280 I=1,200 
-        WRITE(MSTU(11),7200) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I) 
-  280   CONTINUE 
-      ENDIF 
-C...Format statements for output on unit MSTU(11) (by default 6). 
- 5100 FORMAT(///28X,'Event listing (summary)'//4X,'I  particle/jet KS', 
-     &5X,'KF orig    p_x      p_y      p_z       E        m'/) 
- 5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet', 
-     &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)', 
-     &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/) 
- 5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j', 
-     &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)', 
-     &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X, 
-     &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/) 
- 5400 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.3) 
- 5500 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.2) 
- 5600 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.1) 
- 5700 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I1,2I4),5F13.5) 
- 5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I9),5F13.5) 
- 5900 FORMAT(66X,5(1X,F12.3)) 
- 6000 FORMAT(1X,78('=')) 
- 6100 FORMAT(1X,130('=')) 
- 6200 FORMAT(19X,'sum:',F6.2,5X,5F9.3) 
- 6300 FORMAT(19X,'sum:',F6.2,5X,5F9.2) 
- 6400 FORMAT(19X,'sum:',F6.2,5X,5F9.1) 
- 6500 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:', 
-     &5F13.5) 
- 6600 FORMAT(///20X,'List of KF codes in program'/) 
- 6700 FORMAT(4X,I6,4X,A16,6X,I6,4X,A16) 
- 6800 FORMAT(///30X,'Particle/parton data table'//5X,'KF',5X,'KC',4X, 
-     &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X, 
-     &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off', 
-     &1X,'ME',3X,'Br.rat.',4X,'decay products') 
- 6900 FORMAT(/1X,I6,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5), 
-     &2X,F12.5,3X,I2) 
- 7000 FORMAT(10X,I4,2X,I3,2X,I3,2X,F8.5,4X,5A16) 
- 7100 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)', 
-     &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)') 
- 7200 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYLOGO 
-C...Purpose: to write logo for JETSET and PYTHIA programs. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-c      DOUBLE PRECISION PARP,PARI
-c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) 
-      SAVE /LYDAT1/ 
-c      SAVE /PYPARS/ 
-      CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(22)*36, LINE*79, 
-     &VERS*1, SUBV*3, DATE*2, YEAR*4 
-C...Data on months, logo, titles, and references. 
-      DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep', 
-     &'Oct','Nov','Dec'/ 
-      DATA (LOGO(J),J=1,10)/ 
-     &'PPP  Y   Y TTTTT H   H III   A  ', 
-     &'P  P  Y Y    T   H   H  I   A A ', 
-     &'PPP    Y     T   HHHHH  I  AAAAA', 
-     &'P      Y     T   H   H  I  A   A', 
-     &'P      Y     T   H   H III A   A', 
-     &'JJJJ EEEE TTTTT  SSS  EEEE TTTTT', 
-     &'   J E      T   S     E      T  ', 
-     &'   J EEE    T    SSS  EEE    T  ', 
-     &'J  J E      T       S E      T  ', 
-     &' JJ  EEEE   T    SSS  EEEE   T  '/ 
-      DATA (LOGO(J),J=11,29)/ 
-     &'            *......*            ', 
-     &'       *:::!!:::::::::::*       ', 
-     &'    *::::::!!::::::::::::::*    ', 
-     &'  *::::::::!!::::::::::::::::*  ', 
-     &' *:::::::::!!:::::::::::::::::* ', 
-     &' *:::::::::!!:::::::::::::::::* ', 
-     &'  *::::::::!!::::::::::::::::*! ', 
-     &'    *::::::!!::::::::::::::* !! ', 
-     &'    !! *:::!!:::::::::::*    !! ', 
-     &'    !!     !* -><- *         !! ', 
-     &'    !!     !!                !! ', 
-     &'    !!     !!                !! ', 
-     &'    !!                       !! ', 
-     &'    !!        ep             !! ', 
-     &'    !!                       !! ', 
-     &'    !!                 pp    !! ', 
-     &'    !!   e+e-                !! ', 
-     &'    !!                       !! ', 
-     &'    !!                          '/ 
-      DATA (LOGO(J),J=30,48)/ 
-     &'Welcome to the Lund Monte Carlo!', 
-     &'                                ', 
-     &'  This jetset version    x.xxx  ', 
-     &'can coexist with     xx xxx 199x', 
-     &'        PYTHIA !!!              ', 
-     &' it was altered by fkw   x.xxx  ', 
-     &' on 3.29.00          xx xxx 199x', 
-     &' to this effect !!!             ', 
-     &'          Main author:          ', 
-     &'       Torbjorn Sjostrand       ', 
-     &' Dept. of theoretical physics 2 ', 
-     &'       University of Lund       ', 
-     &'         Solvegatan 14A         ', 
-     &'      S-223 62 Lund, Sweden     ', 
-     &'   phone: +46 - 46 - 222 48 16  ', 
-     &'   E-mail: torbjorn@thep.lu.se  ', 
-     &'                                ', 
-     &'  Copyright Torbjorn Sjostrand  ', 
-     &'     and CERN, Geneva 1993      '/ 
-      DATA (REFER(J),J=1,6)/ 
-     &'The latest program versions and docu',
-     &'mentation is found on WWW address   ',
-     &'http://thep.lu.se/tf2/staff/torbjorn',
-     &'/Welcome.html                       ',
-     &'                                    ',
-     &' This is fkw version !!!            '/
-      DATA (REFER(J),J=7,22)/ 
-     &'When you cite these programs, priori', 
-     &'ty should always be given to the    ', 
-     &'latest published description. Curren', 
-     &'tly this is                         ', 
-     &'T. Sjostrand, Computer Physics Commu', 
-     &'n. 82 (1994) 74.                    ', 
-     &'The most recent long description (un', 
-     &'published) is                       ', 
-     &'T. Sjostrand, LU TP 95-20 and CERN-T',
-     &'H.7112/93 (revised August 1995).    ', 
-     &'Also remember that the programs, to ', 
-     &'a large extent, represent original  ', 
-     &'physics research. Other publications', 
-     &' of special relevance to your       ', 
-     &'studies may therefore deserve separa', 
-     &'te mention.                         '/ 
-C...Check if PYTHIA linked. 
-c      IF(MSTP(183)/10.NE.199) THEN 
-        LOGO(32)=' Warning: this is jetset7.4_fkw ' 
-        LOGO(33)='All refs to pythia were excised!' 
-c      ELSE 
-c        WRITE(VERS,'(I1)') MSTP(181) 
-c        LOGO(32)(26:26)=VERS 
-c        WRITE(SUBV,'(I3)') MSTP(182) 
-c        LOGO(32)(28:30)=SUBV 
-c        WRITE(DATE,'(I2)') MSTP(185) 
-c        LOGO(33)(22:23)=DATE 
-c        LOGO(33)(25:27)=MONTH(MSTP(184)) 
-c        WRITE(YEAR,'(I4)') MSTP(183) 
-c        LOGO(33)(29:32)=YEAR 
-c      ENDIF 
-C...Check if JETSET linked. 
-      IF(MSTU(183)/10.NE.199) THEN 
-        LOGO(35)='  Error: JETSET is not loaded!  ' 
-        LOGO(36)='Did you remember to link LYDATA?' 
-      ELSE 
-        WRITE(VERS,'(I1)') MSTU(181) 
-        LOGO(35)(26:26)=VERS 
-        WRITE(SUBV,'(I3)') MSTU(182) 
-        LOGO(35)(28:30)=SUBV 
-        WRITE(DATE,'(I2)') MSTU(185) 
-        LOGO(36)(22:23)=DATE 
-        LOGO(36)(25:27)=MONTH(MSTU(184)) 
-        WRITE(YEAR,'(I4)') MSTU(183) 
-        LOGO(36)(29:32)=YEAR 
-      ENDIF 
-C...Loop over lines in header. Define page feed and side borders. 
-      DO 100 ILIN=1,48 
-      LINE=' ' 
-      IF(ILIN.EQ.1) THEN 
-        LINE(1:1)='1' 
-      ELSE 
-        LINE(2:3)='**' 
-        LINE(78:79)='**' 
-      ENDIF 
-C...Separator lines and logos. 
-      IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.EQ.47.OR.ILIN.EQ.48) THEN 
-        LINE(4:77)='***********************************************'// 
-     &  '***************************' 
-      ELSEIF(ILIN.GE.6.AND.ILIN.LE.10) THEN 
-        LINE(6:37)=LOGO(ILIN-5) 
-        LINE(44:75)=LOGO(ILIN) 
-      ELSEIF(ILIN.GE.13.AND.ILIN.LE.31) THEN 
-        LINE(6:37)=LOGO(ILIN-2) 
-        LINE(44:75)=LOGO(ILIN+17) 
-      ELSEIF(ILIN.GE.34.AND.ILIN.LE.44) THEN 
-        LINE(5:40)=REFER(2*ILIN-67) 
-        LINE(41:76)=REFER(2*ILIN-66) 
-      ENDIF 
-C...Write lines to appropriate unit. 
-      IF(MSTU(183)/10.EQ.199) THEN 
-        WRITE(MSTU(11),'(A79)') LINE 
-      ELSE 
-        WRITE(*,'(A79)') LINE 
-      ENDIF 
-  100 CONTINUE 
-C...Check that matching subversions are linked. 
-c      IF(MSTU(183)/10.EQ.199.AND.MSTP(183)/10.EQ.199) THEN 
-c        IF(MSTU(182).LT.MSTP(186)) WRITE(MSTU(11), 
-      WRITE(MSTU(11), 
-     &  '(/'' Warning: Jetset7.4_fkw independent of PYTHIA!''/)') 
-c        IF(MSTP(182).LT.MSTU(186)) WRITE(MSTU(11), 
-c     &  '(/'' Warning: PYTHIA subversion too old for JETSET''/)') 
-c      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYUPDA(MUPDA,LFN) 
-C...Purpose: to facilitate the updating of particle and decay data. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      COMMON/LYDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      SAVE /LYDAT1/,/LYDAT2/,/LYDAT3/,/LYDAT4/ 
-      CHARACTER CHINL*80,CHKC*4,CHVAR(19)*9,CHLIN*72, 
-     &CHBLK(20)*72,CHOLD*12,CHTMP*12,CHNEW*12,CHCOM*12 
-      DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','PMAS(I,1)', 
-     &'PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)','MDCY(I,2)', 
-     &'MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ','KFDP(I,1)', 
-     &'KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)','CHAF(I)  '/ 
-C...Write information on file for editing. 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      IF(MUPDA.EQ.1) THEN 
-        DO 110 KC=1,MSTU(6) 
-        WRITE(LFN,5000) KC,CHAF(KC),(KCHG(KC,J1),J1=1,3), 
-     &  (PMAS(KC,J2),J2=1,4),MDCY(KC,1) 
-        DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
-        WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
-     &  (KFDP(IDC,J),J=1,5) 
-  100   CONTINUE 
-  110   CONTINUE 
-C...Reset variables and read information from edited file. 
-      ELSEIF(MUPDA.EQ.2) THEN 
-        DO 130 I=1,MSTU(7) 
-        MDME(I,1)=1 
-        MDME(I,2)=0 
-        BRAT(I)=0. 
-        DO 120 J=1,5 
-        KFDP(I,J)=0 
-  120   CONTINUE 
-  130   CONTINUE 
-        KC=0 
-        IDC=0 
-        NDC=0 
-  140   READ(LFN,5200,END=150) CHINL 
-        IF(CHINL(2:5).NE.'    ') THEN 
-          CHKC=CHINL(2:5) 
-          IF(KC.NE.0) THEN 
-            MDCY(KC,2)=0 
-            IF(NDC.NE.0) MDCY(KC,2)=IDC+1-NDC 
-            MDCY(KC,3)=NDC 
-          ENDIF 
-          READ(CHKC,5300) KC 
-          IF(KC.LE.0.OR.KC.GT.MSTU(6)) CALL LYERRM(27, 
-     &    '(LYUPDA:) Read KC code illegal, KC ='//CHKC) 
-          READ(CHINL,5000) KCR,CHAF(KC),(KCHG(KC,J1),J1=1,3), 
-     &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1) 
-          NDC=0 
-        ELSE 
-          IDC=IDC+1 
-          NDC=NDC+1 
-          IF(IDC.GE.MSTU(7)) CALL LYERRM(27, 
-     &    '(LYUPDA:) Decay data arrays full by KC ='//CHKC) 
-          READ(CHINL,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
-     &    (KFDP(IDC,J),J=1,5) 
-        ENDIF 
-        GOTO 140 
-  150   MDCY(KC,2)=0 
-        IF(NDC.NE.0) MDCY(KC,2)=IDC+1-NDC 
-        MDCY(KC,3)=NDC 
-C...Perform possible tests that new information is consistent. 
-        MSTJ24=MSTJ(24) 
-        MSTJ(24)=0 
-        DO 180 KC=1,MSTU(6) 
-        WRITE(CHKC,5300) KC 
-        IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3), 
-     &  PMAS(KC,4)).LT.0..OR.MDCY(KC,3).LT.0) CALL LYERRM(17, 
-     &  '(LYUPDA:) Mass/width/life/(# channels) wrong for KC ='//CHKC) 
-        BRSUM=0. 
-        DO 170 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
-        IF(MDME(IDC,2).GT.80) GOTO 170 
-        KQ=KCHG(KC,1) 
-        PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64) 
-        MERR=0 
-        DO 160 J=1,5 
-        KP=KFDP(IDC,J) 
-        IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN 
-        ELSEIF(LYCOMP(KP).EQ.0) THEN 
-          MERR=3 
-        ELSE 
-          KQ=KQ-LYCHGE(KP) 
-          PMS=PMS-UYMASS(KP) 
-        ENDIF 
-  160   CONTINUE 
-        IF(KQ.NE.0) MERR=MAX(2,MERR) 
-        IF(KFDP(IDC,2).NE.0.AND.(KC.LE.20.OR.KC.GT.40).AND. 
-     &  (KC.LE.80.OR.KC.GT.100).AND.MDME(IDC,2).NE.34.AND. 
-     &  MDME(IDC,2).NE.61.AND.PMS.LT.0.) MERR=MAX(1,MERR) 
-        IF(MERR.EQ.3) CALL LYERRM(17, 
-     &  '(LYUPDA:) Unknown particle code in decay of KC ='//CHKC) 
-        IF(MERR.EQ.2) CALL LYERRM(17, 
-     &  '(LYUPDA:) Charge not conserved in decay of KC ='//CHKC) 
-        IF(MERR.EQ.1) CALL LYERRM(7, 
-     &  '(LYUPDA:) Kinematically unallowed decay of KC ='//CHKC) 
-        BRSUM=BRSUM+BRAT(IDC) 
-  170   CONTINUE 
-        WRITE(CHTMP,5500) BRSUM 
-        IF(ABS(BRSUM).GT.0.0005.AND.ABS(BRSUM-1.).GT.0.0005) CALL 
-     &  LYERRM(7,'(LYUPDA:) Sum of branching ratios is '//CHTMP(5:12)// 
-     &  ' for KC ='//CHKC) 
-  180   CONTINUE 
-        MSTJ(24)=MSTJ24 
-C...Initialize writing of DATA statements for inclusion in program. 
-      ELSEIF(MUPDA.EQ.3) THEN 
-        DO 250 IVAR=1,19 
-        NDIM=MSTU(6) 
-        IF(IVAR.GE.11.AND.IVAR.LE.18) NDIM=MSTU(7) 
-        NLIN=1 
-        CHLIN=' ' 
-        CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/' 
-        LLIN=35 
-        CHOLD='START' 
-C...Loop through variables for conversion to characters. 
-        DO 230 IDIM=1,NDIM 
-        IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1) 
-        IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2) 
-        IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3) 
-        IF(IVAR.EQ.4) WRITE(CHTMP,5500) PMAS(IDIM,1) 
-        IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,2) 
-        IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,3) 
-        IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,4) 
-        IF(IVAR.EQ.8) WRITE(CHTMP,5400) MDCY(IDIM,1) 
-        IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,2) 
-        IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,3) 
-        IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDME(IDIM,1) 
-        IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,2) 
-        IF(IVAR.EQ.13) WRITE(CHTMP,5500) BRAT(IDIM) 
-        IF(IVAR.EQ.14) WRITE(CHTMP,5400) KFDP(IDIM,1) 
-        IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,2) 
-        IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,3) 
-        IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,4) 
-        IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,5) 
-        IF(IVAR.EQ.19) CHTMP=CHAF(IDIM) 
-C...Length of variable, trailing decimal zeros, quotation marks. 
-        LLOW=1 
-        LHIG=1 
-        DO 190 LL=1,12 
-        IF(CHTMP(13-LL:13-LL).NE.' ') LLOW=13-LL 
-        IF(CHTMP(LL:LL).NE.' ') LHIG=LL 
-  190   CONTINUE 
-        CHNEW=CHTMP(LLOW:LHIG)//' ' 
-        LNEW=1+LHIG-LLOW 
-        IF((IVAR.GE.4.AND.IVAR.LE.7).OR.IVAR.EQ.13) THEN 
-          LNEW=LNEW+1 
-  200     LNEW=LNEW-1 
-          IF(CHNEW(LNEW:LNEW).EQ.'0') GOTO 200 
-          IF(LNEW.EQ.1) CHNEW(1:2)='0.' 
-          IF(LNEW.EQ.1) LNEW=2 
-        ELSEIF(IVAR.EQ.19) THEN 
-          DO 210 LL=LNEW,1,-1 
-          IF(CHNEW(LL:LL).EQ.'''') THEN 
-            CHTMP=CHNEW 
-            CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11) 
-            LNEW=LNEW+1 
-          ENDIF 
-  210     CONTINUE 
-          CHTMP=CHNEW 
-          CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//'''' 
-          LNEW=LNEW+2 
-        ENDIF 
-C...Form composite character string, often including repetition counter. 
-        IF(CHNEW.NE.CHOLD) THEN 
-          NRPT=1 
-          CHOLD=CHNEW 
-          CHCOM=CHNEW 
-          LCOM=LNEW 
-        ELSE 
-          LRPT=LNEW+1 
-          IF(NRPT.GE.2) LRPT=LNEW+3 
-          IF(NRPT.GE.10) LRPT=LNEW+4 
-          IF(NRPT.GE.100) LRPT=LNEW+5 
-          IF(NRPT.GE.1000) LRPT=LNEW+6 
-          LLIN=LLIN-LRPT 
-          NRPT=NRPT+1 
-          WRITE(CHTMP,5400) NRPT 
-          LRPT=1 
-          IF(NRPT.GE.10) LRPT=2 
-          IF(NRPT.GE.100) LRPT=3 
-          IF(NRPT.GE.1000) LRPT=4 
-          CHCOM(1:LRPT+1+LNEW)=CHTMP(13-LRPT:12)//'*'//CHNEW(1:LNEW) 
-          LCOM=LRPT+1+LNEW 
-        ENDIF 
-C...Add characters to end of line, to new line (after storing old line), 
-C...or to new block of lines (after writing old block). 
-        IF(LLIN+LCOM.LE.70) THEN 
-          CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//',' 
-          LLIN=LLIN+LCOM+1 
-        ELSEIF(NLIN.LE.19) THEN 
-          CHLIN(LLIN+1:72)=' ' 
-          CHBLK(NLIN)=CHLIN 
-          NLIN=NLIN+1 
-          CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//',' 
-          LLIN=6+LCOM+1 
-        ELSE 
-          CHLIN(LLIN:72)='/'//' ' 
-          CHBLK(NLIN)=CHLIN 
-          WRITE(CHTMP,5400) IDIM-NRPT 
-          CHBLK(1)(30:33)=CHTMP(9:12) 
-          DO 220 ILIN=1,NLIN 
-          WRITE(LFN,5600) CHBLK(ILIN) 
-  220     CONTINUE 
-          NLIN=1 
-          CHLIN=' ' 
-          CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//',I=    ,    )/'// 
-     &    CHCOM(1:LCOM)//',' 
-          WRITE(CHTMP,5400) IDIM-NRPT+1 
-          CHLIN(25:28)=CHTMP(9:12) 
-          LLIN=35+LCOM+1 
-        ENDIF 
-  230   CONTINUE 
-C...Write final block of lines. 
-        CHLIN(LLIN:72)='/'//' ' 
-        CHBLK(NLIN)=CHLIN 
-        WRITE(CHTMP,5400) NDIM 
-        CHBLK(1)(30:33)=CHTMP(9:12) 
-        DO 240 ILIN=1,NLIN 
-        WRITE(LFN,5600) CHBLK(ILIN) 
-  240   CONTINUE 
-  250   CONTINUE 
-      ENDIF 
-C...Formats for reading and writing particle data. 
- 5000 FORMAT(1X,I4,2X,A8,3I3,3F12.5,2X,F12.5,I3) 
- 5100 FORMAT(5X,2I5,F12.5,5I8) 
- 5200 FORMAT(A80) 
- 5300 FORMAT(I4) 
- 5400 FORMAT(I12) 
- 5500 FORMAT(F12.5) 
- 5600 FORMAT(A72) 
-      RETURN 
-      END 
-C********************************************************************* 
-      FUNCTION KLY(I,J) 
-C...Purpose: to provide various integer-valued event related data. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Default value. For I=0 number of entries, number of stable entries 
-C...or 3 times total charge. 
-      KLY=0 
-      IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
-      ELSEIF(I.EQ.0.AND.J.EQ.1) THEN 
-        KLY=N 
-      ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN 
-        DO 100 I1=1,N 
-        IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLY=KLY+1 
-        IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLY=KLY+ 
-     &  LYCHGE(K(I1,2)) 
-  100   CONTINUE 
-      ELSEIF(I.EQ.0) THEN 
-C...For I > 0 direct readout of K matrix or charge. 
-      ELSEIF(J.LE.5) THEN 
-        KLY=K(I,J) 
-      ELSEIF(J.EQ.6) THEN 
-        KLY=LYCHGE(K(I,2)) 
-C...Status (existing/fragmented/decayed), parton/hadron separation. 
-      ELSEIF(J.LE.8) THEN 
-        IF(K(I,1).GE.1.AND.K(I,1).LE.10) KLY=1 
-        IF(J.EQ.8) KLY=KLY*K(I,2) 
-      ELSEIF(J.LE.12) THEN 
-        KFA=IABS(K(I,2)) 
-        KC=LYCOMP(KFA) 
-        KQ=0 
-        IF(KC.NE.0) KQ=KCHG(KC,2) 
-        IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) KLY=K(I,2) 
-        IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) KLY=K(I,2) 
-        IF(J.EQ.11) KLY=KC 
-        IF(J.EQ.12) KLY=KQ*ISIGN(1,K(I,2)) 
-C...Heaviest flavour in hadron/diquark. 
-      ELSEIF(J.EQ.13) THEN 
-        KFA=IABS(K(I,2)) 
-        KLY=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10) 
-        IF(KFA.LT.10) KLY=KFA 
-        IF(MOD(KFA/1000,10).NE.0) KLY=MOD(KFA/1000,10) 
-        KLY=KLY*ISIGN(1,K(I,2)) 
-C...Particle history: generation, ancestor, rank. 
-      ELSEIF(J.LE.15) THEN 
-        I2=I 
-        I1=I 
-  110   KLY=KLY+1 
-        I2=I1 
-        I1=K(I1,3) 
-        IF(I1.GT.0.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110 
-        IF(J.EQ.15) KLY=I2 
-      ELSEIF(J.EQ.16) THEN 
-        KFA=IABS(K(I,2))
-        IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.        
-     &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN  
-          I1=I
-  120     I2=I1 
-          I1=K(I1,3)
-          IF(I1.GT.0) THEN
-            KFAM=IABS(K(I1,2))
-            ILP=1
-            IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
-            IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93) 
-     &      ILP=0
-            IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
-            IF(ILP.EQ.1) GOTO 120
-          ENDIF
-          IF(K(I1,1).EQ.12) THEN
-            DO 130 I3=I1+1,I2 
-            IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
-     &      .AND.K(I3,2).NE.93) KLY=KLY+1
-  130       CONTINUE
-          ELSE
-            I3=I2
-  140       KLY=KLY+1
-            I3=I3+1
-            IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140           
-          ENDIF 
-        ENDIF 
-C...Particle coming from collapsing jet system or not. 
-      ELSEIF(J.EQ.17) THEN 
-        I1=I 
-  150   KLY=KLY+1 
-        I3=I1 
-        I1=K(I1,3) 
-        I0=MAX(1,I1) 
-        KC=LYCOMP(K(I0,2)) 
-        IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN 
-          IF(KLY.EQ.1) KLY=-1 
-          IF(KLY.GT.1) KLY=0 
-          RETURN 
-        ENDIF 
-        IF(KCHG(KC,2).EQ.0) GOTO 150 
-        IF(K(I1,1).NE.12) KLY=0 
-        IF(K(I1,1).NE.12) RETURN 
-        I2=I1 
-  160   I2=I2+1 
-        IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160 
-        K3M=K(I3-1,3) 
-        IF(K3M.GE.I1.AND.K3M.LE.I2) KLY=0 
-        K3P=K(I3+1,3) 
-        IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) KLY=0 
-C...Number of decay products. Colour flow. 
-      ELSEIF(J.EQ.18) THEN 
-        IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) KLY=MAX(0,K(I,5)-K(I,4)+1) 
-        IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) KLY=0 
-      ELSEIF(J.LE.22) THEN 
-        IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN 
-        IF(J.EQ.19) KLY=MOD(K(I,4)/MSTU(5),MSTU(5)) 
-        IF(J.EQ.20) KLY=MOD(K(I,5)/MSTU(5),MSTU(5)) 
-        IF(J.EQ.21) KLY=MOD(K(I,4),MSTU(5)) 
-        IF(J.EQ.22) KLY=MOD(K(I,5),MSTU(5)) 
-      ELSE 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      FUNCTION PLY(I,J) 
-C...Purpose: to provide various real-valued event related data. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION PSUM(4) 
-C...Set default value. For I = 0 sum of momenta or charges, 
-C...or invariant mass of system. 
-      PLY=0. 
-      IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
-      ELSEIF(I.EQ.0.AND.J.LE.4) THEN 
-        DO 100 I1=1,N 
-        IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PLY=PLY+P(I1,J) 
-  100   CONTINUE 
-      ELSEIF(I.EQ.0.AND.J.EQ.5) THEN 
-        DO 120 J1=1,4 
-        PSUM(J1)=0. 
-        DO 110 I1=1,N 
-        IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+P(I1,J1) 
-  110   CONTINUE 
-  120 CONTINUE 
-        PLY=SQRT(MAX(0.,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2)) 
-      ELSEIF(I.EQ.0.AND.J.EQ.6) THEN 
-        DO 130 I1=1,N 
-        IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PLY=PLY+LYCHGE(K(I1,2))/3. 
-  130   CONTINUE 
-      ELSEIF(I.EQ.0) THEN 
-C...Direct readout of P matrix. 
-      ELSEIF(J.LE.5) THEN 
-        PLY=P(I,J) 
-C...Charge, total momentum, transverse momentum, transverse mass. 
-      ELSEIF(J.LE.12) THEN 
-        IF(J.EQ.6) PLY=LYCHGE(K(I,2))/3. 
-        IF(J.EQ.7.OR.J.EQ.8) PLY=P(I,1)**2+P(I,2)**2+P(I,3)**2 
-        IF(J.EQ.9.OR.J.EQ.10) PLY=P(I,1)**2+P(I,2)**2 
-        IF(J.EQ.11.OR.J.EQ.12) PLY=P(I,5)**2+P(I,1)**2+P(I,2)**2 
-        IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PLY=SQRT(PLY) 
-C...Theta and phi angle in radians or degrees. 
-      ELSEIF(J.LE.16) THEN 
-        IF(J.LE.14) PLY=UYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2)) 
-        IF(J.GE.15) PLY=UYANGL(P(I,1),P(I,2)) 
-        IF(J.EQ.14.OR.J.EQ.16) PLY=PLY*180./PARU(1) 
-C...True rapidity, rapidity with pion mass, pseudorapidity. 
-      ELSEIF(J.LE.19) THEN 
-        PMR=0. 
-        IF(J.EQ.17) PMR=P(I,5) 
-        IF(J.EQ.18) PMR=UYMASS(211) 
-        PR=MAX(1E-20,PMR**2+P(I,1)**2+P(I,2)**2) 
-        PLY=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR), 
-     &  1E20)),P(I,3)) 
-C...Energy and momentum fractions (only to be used in CM frame). 
-      ELSEIF(J.LE.25) THEN 
-        IF(J.EQ.20) PLY=2.*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21) 
-        IF(J.EQ.21) PLY=2.*P(I,3)/PARU(21) 
-        IF(J.EQ.22) PLY=2.*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21) 
-        IF(J.EQ.23) PLY=2.*P(I,4)/PARU(21) 
-        IF(J.EQ.24) PLY=(P(I,4)+P(I,3))/PARU(21) 
-        IF(J.EQ.25) PLY=(P(I,4)-P(I,3))/PARU(21) 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYSPHE(SPH,APL) 
-C...Purpose: to perform sphericity tensor analysis to give sphericity, 
-C...aplanarity and the related event axes. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION SM(3,3),SV(3,3) 
-C...Calculate matrix to be diagonalized. 
-      NP=0 
-      DO 110 J1=1,3 
-      DO 100 J2=J1,3 
-      SM(J1,J2)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-      PS=0. 
-      DO 140 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LYCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 140 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &  GOTO 140 
-      ENDIF 
-      NP=NP+1 
-      PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      PWT=1. 
-      IF(ABS(PARU(41)-2.).GT.0.001) PWT=MAX(1E-10,PA)**(PARU(41)-2.) 
-      DO 130 J1=1,3 
-      DO 120 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2) 
-  120 CONTINUE 
-  130 CONTINUE 
-      PS=PS+PWT*PA**2 
-  140 CONTINUE 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LYERRM(8,'(LYSPHE:) too few particles for analysis') 
-        SPH=-1. 
-        APL=-1. 
-        RETURN 
-      ENDIF 
-      DO 160 J1=1,3 
-      DO 150 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)/PS 
-  150 CONTINUE 
-  160 CONTINUE 
-C...Find eigenvalues to matrix (third degree equation). 
-      SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-SM(1,2)**2- 
-     &SM(1,3)**2-SM(2,3)**2)/3.-1./9. 
-      SR=-0.5*(SQ+1./9.+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+SM(3,3)* 
-     &SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+SM(1,2)*SM(1,3)*SM(2,3)+1./27. 
-      SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1.),-1.))/3.) 
-      P(N+1,4)=1./3.+SQRT(-SQ)*MAX(2.*SP,SQRT(3.*(1.-SP**2))-SP) 
-      P(N+3,4)=1./3.+SQRT(-SQ)*MIN(2.*SP,-SQRT(3.*(1.-SP**2))-SP) 
-      P(N+2,4)=1.-P(N+1,4)-P(N+3,4) 
-      IF(P(N+2,4).LT.1E-5) THEN 
-        CALL LYERRM(8,'(LYSPHE:) all particles back-to-back') 
-        SPH=-1. 
-        APL=-1. 
-        RETURN 
-      ENDIF 
-C...Find first and last eigenvector by solving equation system. 
-      DO 240 I=1,3,2 
-      DO 180 J1=1,3 
-      SV(J1,J1)=SM(J1,J1)-P(N+I,4) 
-      DO 170 J2=J1+1,3 
-      SV(J1,J2)=SM(J1,J2) 
-      SV(J2,J1)=SM(J1,J2) 
-  170 CONTINUE 
-  180 CONTINUE 
-      SMAX=0. 
-      DO 200 J1=1,3 
-      DO 190 J2=1,3 
-      IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190 
-      JA=J1 
-      JB=J2 
-      SMAX=ABS(SV(J1,J2)) 
-  190 CONTINUE 
-  200 CONTINUE 
-      SMAX=0. 
-      DO 220 J3=JA+1,JA+2 
-      J1=J3-3*((J3-1)/3) 
-      RL=SV(J1,JB)/SV(JA,JB) 
-      DO 210 J2=1,3 
-      SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2) 
-      IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210 
-      JC=J1 
-      SMAX=ABS(SV(J1,J2)) 
-  210 CONTINUE 
-  220 CONTINUE 
-      JB1=JB+1-3*(JB/3) 
-      JB2=JB+2-3*((JB+1)/3) 
-      P(N+I,JB1)=-SV(JC,JB2) 
-      P(N+I,JB2)=SV(JC,JB1) 
-      P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/ 
-     &SV(JA,JB) 
-      PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2) 
-      SGN=(-1.)**INT(RLY(0)+0.5) 
-      DO 230 J=1,3 
-      P(N+I,J)=SGN*P(N+I,J)/PA 
-  230 CONTINUE 
-  240 CONTINUE 
-C...Middle axis orthogonal to other two. Fill other codes. 
-      SGN=(-1.)**INT(RLY(0)+0.5) 
-      P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2)) 
-      P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3)) 
-      P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1)) 
-      DO 260 I=1,3 
-      K(N+I,1)=31 
-      K(N+I,2)=95 
-      K(N+I,3)=I 
-      K(N+I,4)=0 
-      K(N+I,5)=0 
-      P(N+I,5)=0. 
-      DO 250 J=1,5 
-      V(I,J)=0. 
-  250 CONTINUE 
-  260 CONTINUE 
-C...Calculate sphericity and aplanarity. Select storing option. 
-      SPH=1.5*(P(N+2,4)+P(N+3,4)) 
-      APL=1.5*P(N+3,4) 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      IF(MSTU(43).LE.1) MSTU(3)=3 
-      IF(MSTU(43).GE.2) N=N+3 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYTHRU(THR,OBL) 
-C...Purpose: to perform thrust analysis to give thrust, oblateness 
-C...and the related event axes. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION TDI(3),TPR(3) 
-C...Take copy of particles that are to be considered in thrust analysis. 
-      NP=0 
-      PS=0. 
-      DO 100 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LYCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 100 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &  GOTO 100 
-      ENDIF 
-      IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYTHRU:) no more memory left in LUJETS') 
-        THR=-2. 
-        OBL=-2. 
-        RETURN 
-      ENDIF 
-      NP=NP+1 
-      K(N+NP,1)=23 
-      P(N+NP,1)=P(I,1) 
-      P(N+NP,2)=P(I,2) 
-      P(N+NP,3)=P(I,3) 
-      P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      P(N+NP,5)=1. 
-      IF(ABS(PARU(42)-1.).GT.0.001) P(N+NP,5)=P(N+NP,4)**(PARU(42)-1.) 
-      PS=PS+P(N+NP,4)*P(N+NP,5) 
-  100 CONTINUE 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LYERRM(8,'(LYTHRU:) too few particles for analysis') 
-        THR=-1. 
-        OBL=-1. 
-        RETURN 
-      ENDIF 
-C...Loop over thrust and major. T axis along z direction in latter case. 
-      DO 320 ILD=1,2 
-      IF(ILD.EQ.2) THEN 
-        K(N+NP+1,1)=31 
-        PHI=UYANGL(P(N+NP+1,1),P(N+NP+1,2)) 
-        MSTU(33)=1 
-        CALL LUDBRB(N+1,N+NP+1,0.,-PHI,0D0,0D0,0D0) 
-        THE=UYANGL(P(N+NP+1,3),P(N+NP+1,1)) 
-        CALL LUDBRB(N+1,N+NP+1,-THE,0.,0D0,0D0,0D0) 
-      ENDIF 
-C...Find and order particles with highest p (pT for major). 
-      DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4 
-      P(ILF,4)=0. 
-  110 CONTINUE 
-      DO 160 I=N+1,N+NP 
-      IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2) 
-      DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1 
-      IF(P(I,4).LE.P(ILF,4)) GOTO 140 
-      DO 120 J=1,5 
-      P(ILF+1,J)=P(ILF,J) 
-  120 CONTINUE 
-  130 CONTINUE 
-      ILF=N+NP+3 
-  140 DO 150 J=1,5 
-      P(ILF+1,J)=P(I,J) 
-  150 CONTINUE 
-  160 CONTINUE 
-C...Find and order initial axes with highest thrust (major). 
-      DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15 
-      P(ILG,4)=0. 
-  170 CONTINUE 
-      NC=2**(MIN(MSTU(44),NP)-1) 
-      DO 250 ILC=1,NC 
-      DO 180 J=1,3 
-      TDI(J)=0. 
-  180 CONTINUE 
-      DO 200 ILF=1,MIN(MSTU(44),NP) 
-      SGN=P(N+NP+ILF+3,5) 
-      IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN 
-      DO 190 J=1,4-ILD 
-      TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J) 
-  190 CONTINUE 
-  200 CONTINUE 
-      TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2 
-      DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1 
-      IF(TDS.LE.P(ILG,4)) GOTO 230 
-      DO 210 J=1,4 
-      P(ILG+1,J)=P(ILG,J) 
-  210 CONTINUE 
-  220 CONTINUE 
-      ILG=N+NP+MSTU(44)+4 
-  230 DO 240 J=1,3 
-      P(ILG+1,J)=TDI(J) 
-  240 CONTINUE 
-      P(ILG+1,4)=TDS 
-  250 CONTINUE 
-C...Iterate direction of axis until stable maximum. 
-      P(N+NP+ILD,4)=0. 
-      ILG=0 
-  260 ILG=ILG+1 
-      THP=0. 
-  270 THPS=THP 
-      DO 280 J=1,3 
-      IF(THP.LE.1E-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J) 
-      IF(THP.GT.1E-10) TDI(J)=TPR(J) 
-      TPR(J)=0. 
-  280 CONTINUE 
-      DO 300 I=N+1,N+NP 
-      SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3)) 
-      DO 290 J=1,4-ILD 
-      TPR(J)=TPR(J)+SGN*P(I,J) 
-  290 CONTINUE 
-  300 CONTINUE 
-      THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS 
-      IF(THP.GE.THPS+PARU(48)) GOTO 270 
-C...Save good axis. Try new initial axis until a number of tries agree. 
-      IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260 
-      IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN 
-        IAGR=0 
-        SGN=(-1.)**INT(RLY(0)+0.5) 
-        DO 310 J=1,3 
-        P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP) 
-  310   CONTINUE 
-        P(N+NP+ILD,4)=THP 
-        P(N+NP+ILD,5)=0. 
-      ENDIF 
-      IAGR=IAGR+1 
-      IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260 
-  320 CONTINUE 
-C...Find minor axis and value by orthogonality. 
-      SGN=(-1.)**INT(RLY(0)+0.5) 
-      P(N+NP+3,1)=-SGN*P(N+NP+2,2) 
-      P(N+NP+3,2)=SGN*P(N+NP+2,1) 
-      P(N+NP+3,3)=0. 
-      THP=0. 
-      DO 330 I=N+1,N+NP 
-      THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2)) 
-  330 CONTINUE 
-      P(N+NP+3,4)=THP/PS 
-      P(N+NP+3,5)=0. 
-C...Fill axis information. Rotate back to original coordinate system. 
-      DO 350 ILD=1,3 
-      K(N+ILD,1)=31 
-      K(N+ILD,2)=96 
-      K(N+ILD,3)=ILD 
-      K(N+ILD,4)=0 
-      K(N+ILD,5)=0 
-      DO 340 J=1,5 
-      P(N+ILD,J)=P(N+NP+ILD,J) 
-      V(N+ILD,J)=0. 
-  340 CONTINUE 
-  350 CONTINUE 
-      CALL LUDBRB(N+1,N+3,THE,PHI,0D0,0D0,0D0) 
-C...Calculate thrust and oblateness. Select storing option. 
-      THR=P(N+1,4) 
-      OBL=P(N+2,4)-P(N+3,4) 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      IF(MSTU(43).LE.1) MSTU(3)=3 
-      IF(MSTU(43).GE.2) N=N+3 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYCLUS(NJET) 
-C...Purpose: to subdivide the particle content of an event into 
-C...jets/clusters. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION PS(5) 
-      SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM 
-C...Functions: distance measure in pT, (pseudo)mass or Durham pT. 
-      R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)- 
-     &P(I1,3)*P(I2,3))*2.*P(I1,5)*P(I2,5)/(0.0001+P(I1,5)+P(I2,5))**2 
-      R2M(I1,I2)=2.*P(I1,4)*P(I2,4)*(1.-(P(I1,1)*P(I2,1)+P(I1,2)* 
-     &P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5))) 
-      R2D(I1,I2)=2.*MIN(P(I1,4),P(I2,4))**2*(1.-(P(I1,1)*P(I2,1)+
-     &P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5))) 
-C...If first time, reset. If reentering, skip preliminaries. 
-      IF(MSTU(48).LE.0) THEN 
-        NP=0 
-        DO 100 J=1,5 
-        PS(J)=0. 
-  100   CONTINUE 
-        PSS=0. 
-      ELSE 
-        NJET=NSAV 
-        IF(MSTU(43).GE.2) N=N-NJET 
-        DO 110 I=N+1,N+NJET 
-        P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-  110   CONTINUE 
-        IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN 
-          R2ACC=PARU(44)**2 
-        ELSE 
-          R2ACC=PARU(45)*PS(5)**2
-        ENDIF 
-        NLOOP=0 
-        GOTO 300 
-      ENDIF 
-C...Find which particles are to be considered in cluster search. 
-      DO 140 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LYCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 140 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &  GOTO 140 
-      ENDIF 
-      IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYCLUS:) no more memory left in LUJETS') 
-        NJET=-1 
-        RETURN 
-      ENDIF 
-C...Take copy of these particles, with space left for jets later on. 
-      NP=NP+1 
-      K(N+NP,3)=I 
-      DO 120 J=1,5 
-      P(N+NP,J)=P(I,J) 
-  120 CONTINUE 
-      IF(MSTU(42).EQ.0) P(N+NP,5)=0. 
-      IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PMAS(101,1) 
-      P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      DO 130 J=1,4 
-      PS(J)=PS(J)+P(N+NP,J) 
-  130 CONTINUE 
-      PSS=PSS+P(N+NP,5) 
-  140 CONTINUE 
-      DO 160 I=N+1,N+NP 
-      K(I+NP,3)=K(I,3) 
-      DO 150 J=1,5 
-      P(I+NP,J)=P(I,J) 
-  150 CONTINUE 
-  160 CONTINUE 
-      PS(5)=SQRT(MAX(0.,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2)) 
-C...Very low multiplicities not considered. 
-      IF(NP.LT.MSTU(47)) THEN 
-        CALL LYERRM(8,'(LYCLUS:) too few particles for analysis') 
-        NJET=-1 
-        RETURN 
-      ENDIF 
-C...Find precluster configuration. If too few jets, make harder cuts. 
-      NLOOP=0 
-      IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN 
-        R2ACC=PARU(44)**2 
-      ELSE 
-        R2ACC=PARU(45)*PS(5)**2 
-      ENDIF 
-      RINIT=1.25*PARU(43) 
-      IF(NP.LE.MSTU(47)+2) RINIT=0. 
-  170 RINIT=0.8*RINIT 
-      NPRE=0 
-      NREM=NP 
-      DO 180 I=N+NP+1,N+2*NP 
-      K(I,4)=0 
-  180 CONTINUE 
-C...Sum up small momentum region. Jet if enough absolute momentum. 
-      IF(MSTU(46).LE.2) THEN 
-        DO 190 J=1,4 
-        P(N+1,J)=0. 
-  190   CONTINUE 
-        DO 210 I=N+NP+1,N+2*NP 
-        IF(P(I,5).GT.2.*RINIT) GOTO 210 
-        NREM=NREM-1 
-        K(I,4)=1 
-        DO 200 J=1,4 
-        P(N+1,J)=P(N+1,J)+P(I,J) 
-  200   CONTINUE 
-  210   CONTINUE 
-        P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2) 
-        IF(P(N+1,5).GT.2.*RINIT) NPRE=1 
-        IF(RINIT.GE.0.2*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170 
-        IF(NREM.EQ.0) GOTO 170 
-      ENDIF 
-C...Find fastest remaining particle. 
-  220 NPRE=NPRE+1 
-      PMAX=0. 
-      DO 230 I=N+NP+1,N+2*NP 
-      IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230 
-      IMAX=I 
-      PMAX=P(I,5) 
-  230 CONTINUE 
-      DO 240 J=1,5 
-      P(N+NPRE,J)=P(IMAX,J) 
-  240 CONTINUE 
-      NREM=NREM-1 
-      K(IMAX,4)=NPRE 
-C...Sum up precluster around it according to pT separation. 
-      IF(MSTU(46).LE.2) THEN 
-        DO 260 I=N+NP+1,N+2*NP 
-        IF(K(I,4).NE.0) GOTO 260 
-        R2=R2T(I,IMAX) 
-        IF(R2.GT.RINIT**2) GOTO 260 
-        NREM=NREM-1 
-        K(I,4)=NPRE 
-        DO 250 J=1,4 
-        P(N+NPRE,J)=P(N+NPRE,J)+P(I,J) 
-  250   CONTINUE 
-  260   CONTINUE 
-        P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2) 
-C...Sum up precluster around it according to mass or 
-C...Durham pT separation. 
-      ELSE 
-  270   IMIN=0 
-        R2MIN=RINIT**2 
-        DO 280 I=N+NP+1,N+2*NP 
-        IF(K(I,4).NE.0) GOTO 280
-        IF(MSTU(46).LE.4) THEN 
-          R2=R2M(I,N+NPRE) 
-        ELSE
-          R2=R2D(I,N+NPRE) 
-        ENDIF
-        IF(R2.GE.R2MIN) GOTO 280 
-        IMIN=I 
-        R2MIN=R2 
-  280   CONTINUE 
-        IF(IMIN.NE.0) THEN 
-          DO 290 J=1,4 
-          P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J) 
-  290     CONTINUE 
-          P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2) 
-          NREM=NREM-1 
-          K(IMIN,4)=NPRE 
-          GOTO 270 
-        ENDIF 
-      ENDIF 
-C...Check if more preclusters to be found. Start over if too few. 
-      IF(RINIT.GE.0.2*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170 
-      IF(NREM.GT.0) GOTO 220 
-      NJET=NPRE 
-C...Reassign all particles to nearest jet. Sum up new jet momenta. 
-  300 TSAV=0. 
-      PSJT=0. 
-  310 IF(MSTU(46).LE.1) THEN 
-        DO 330 I=N+1,N+NJET 
-        DO 320 J=1,4 
-        V(I,J)=0. 
-  320   CONTINUE 
-  330 CONTINUE 
-        DO 360 I=N+NP+1,N+2*NP 
-        R2MIN=PSS**2 
-        DO 340 IJET=N+1,N+NJET 
-        IF(P(IJET,5).LT.RINIT) GOTO 340 
-        R2=R2T(I,IJET) 
-        IF(R2.GE.R2MIN) GOTO 340 
-        IMIN=IJET 
-        R2MIN=R2 
-  340   CONTINUE 
-        K(I,4)=IMIN-N 
-        DO 350 J=1,4 
-        V(IMIN,J)=V(IMIN,J)+P(I,J) 
-  350   CONTINUE 
-  360   CONTINUE 
-        PSJT=0. 
-        DO 380 I=N+1,N+NJET 
-        DO 370 J=1,4 
-        P(I,J)=V(I,J) 
-  370   CONTINUE 
-        P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-        PSJT=PSJT+P(I,5) 
-  380   CONTINUE 
-      ENDIF 
-C...Find two closest jets. 
-      R2MIN=2.*MAX(R2ACC,PS(5)**2) 
-      DO 400 ITRY1=N+1,N+NJET-1 
-      DO 390 ITRY2=ITRY1+1,N+NJET 
-      IF(MSTU(46).LE.2) THEN 
-        R2=R2T(ITRY1,ITRY2) 
-      ELSEIF(MSTU(46).LE.4) THEN
-        R2=R2M(ITRY1,ITRY2)
-      ELSE
-        R2=R2D(ITRY1,ITRY2)
-      ENDIF 
-      IF(R2.GE.R2MIN) GOTO 390 
-      IMIN1=ITRY1 
-      IMIN2=ITRY2 
-      R2MIN=R2 
-  390 CONTINUE 
-  400 CONTINUE 
-C...If allowed, join two closest jets and start over. 
-      IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN 
-        IREC=MIN(IMIN1,IMIN2) 
-        IDEL=MAX(IMIN1,IMIN2) 
-        DO 410 J=1,4 
-        P(IREC,J)=P(IMIN1,J)+P(IMIN2,J) 
-  410   CONTINUE 
-        P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2) 
-        DO 430 I=IDEL+1,N+NJET 
-        DO 420 J=1,5 
-        P(I-1,J)=P(I,J) 
-  420   CONTINUE 
-  430 CONTINUE 
-        IF(MSTU(46).GE.2) THEN 
-          DO 440 I=N+NP+1,N+2*NP 
-          IORI=N+K(I,4) 
-          IF(IORI.EQ.IDEL) K(I,4)=IREC-N 
-          IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1 
-  440     CONTINUE 
-        ENDIF 
-        NJET=NJET-1 
-        GOTO 300 
-C...Divide up broad jet if empty cluster in list of final ones. 
-      ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN 
-        DO 450 I=N+1,N+NJET 
-        K(I,5)=0 
-  450   CONTINUE 
-        DO 460 I=N+NP+1,N+2*NP 
-        K(N+K(I,4),5)=K(N+K(I,4),5)+1 
-  460   CONTINUE 
-        IEMP=0 
-        DO 470 I=N+1,N+NJET 
-        IF(K(I,5).EQ.0) IEMP=I 
-  470   CONTINUE 
-        IF(IEMP.NE.0) THEN 
-          NLOOP=NLOOP+1 
-          ISPL=0 
-          R2MAX=0. 
-          DO 480 I=N+NP+1,N+2*NP 
-          IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480 
-          IJET=N+K(I,4) 
-          R2=R2T(I,IJET) 
-          IF(R2.LE.R2MAX) GOTO 480 
-          ISPL=I 
-          R2MAX=R2 
-  480     CONTINUE 
-          IF(ISPL.NE.0) THEN 
-            IJET=N+K(ISPL,4) 
-            DO 490 J=1,4 
-            P(IEMP,J)=P(ISPL,J) 
-            P(IJET,J)=P(IJET,J)-P(ISPL,J) 
-  490       CONTINUE 
-            P(IEMP,5)=P(ISPL,5) 
-            P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2) 
-            IF(NLOOP.LE.2) GOTO 300 
-          ENDIF 
-        ENDIF 
-      ENDIF 
-C...If generalized thrust has not yet converged, continue iteration. 
-      IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48)) 
-     &THEN 
-        TSAV=PSJT/PSS 
-        GOTO 310 
-      ENDIF 
-C...Reorder jets according to energy. 
-      DO 510 I=N+1,N+NJET 
-      DO 500 J=1,5 
-      V(I,J)=P(I,J) 
-  500 CONTINUE 
-  510 CONTINUE 
-      DO 540 INEW=N+1,N+NJET 
-      PEMAX=0. 
-      DO 520 ITRY=N+1,N+NJET 
-      IF(V(ITRY,4).LE.PEMAX) GOTO 520 
-      IMAX=ITRY 
-      PEMAX=V(ITRY,4) 
-  520 CONTINUE 
-      K(INEW,1)=31 
-      K(INEW,2)=97 
-      K(INEW,3)=INEW-N 
-      K(INEW,4)=0 
-      DO 530 J=1,5 
-      P(INEW,J)=V(IMAX,J) 
-  530 CONTINUE 
-      V(IMAX,4)=-1. 
-      K(IMAX,5)=INEW 
-  540 CONTINUE 
-C...Clean up particle-jet assignments and jet information. 
-      DO 550 I=N+NP+1,N+2*NP 
-      IORI=K(N+K(I,4),5) 
-      K(I,4)=IORI-N 
-      IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N 
-      K(IORI,4)=K(IORI,4)+1 
-  550 CONTINUE 
-      IEMP=0 
-      PSJT=0. 
-      DO 570 I=N+1,N+NJET 
-      K(I,5)=0 
-      PSJT=PSJT+P(I,5) 
-      P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0.)) 
-      DO 560 J=1,5 
-      V(I,J)=0. 
-  560 CONTINUE 
-      IF(K(I,4).EQ.0) IEMP=I 
-  570 CONTINUE 
-C...Select storing option. Output variables. Check for failure. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      MSTU(63)=NPRE 
-      PARU(61)=PS(5) 
-      PARU(62)=PSJT/PSS 
-      PARU(63)=SQRT(R2MIN) 
-      IF(NJET.LE.1) PARU(63)=0. 
-      IF(IEMP.NE.0) THEN 
-        CALL LYERRM(8,'(LYCLUS:) failed to reconstruct as requested') 
-        NJET=-1 
-      ENDIF 
-      IF(MSTU(43).LE.1) MSTU(3)=NJET 
-      IF(MSTU(43).GE.2) N=N+NJET 
-      NSAV=NJET 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYCELL(NJET) 
-C...Purpose: to provide a simple way of jet finding in an eta-phi-ET 
-C...coordinate frame, as used for calorimeters at hadron colliders. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Loop over all particles. Find cell that was hit by given particle. 
-      PTLRAT=1./SINH(PARU(51))**2 
-      NP=0 
-      NC=N 
-      DO 110 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110 
-      IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LYCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 110 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &  GOTO 110 
-      ENDIF 
-      NP=NP+1 
-      PT=SQRT(P(I,1)**2+P(I,2)**2) 
-      ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3)) 
-      IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5*(ETA/PARU(51)+1.)))) 
-      PHI=UYANGL(P(I,1),P(I,2)) 
-      IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5*(PHI/PARU(1)+1.)))) 
-      IETPH=MSTU(52)*IETA+IPHI 
-C...Add to cell already hit, or book new cell. 
-      DO 100 IC=N+1,NC 
-      IF(IETPH.EQ.K(IC,3)) THEN 
-        K(IC,4)=K(IC,4)+1 
-        P(IC,5)=P(IC,5)+PT 
-        GOTO 110 
-      ENDIF 
-  100 CONTINUE 
-      IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYCELL:) no more memory left in LUJETS') 
-        NJET=-2 
-        RETURN 
-      ENDIF 
-      NC=NC+1 
-      K(NC,3)=IETPH 
-      K(NC,4)=1 
-      K(NC,5)=2 
-      P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51)) 
-      P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52)) 
-      P(NC,5)=PT 
-  110 CONTINUE 
-C...Smear true bin content by calorimeter resolution. 
-      IF(MSTU(53).GE.1) THEN 
-        DO 130 IC=N+1,NC 
-        PEI=P(IC,5) 
-        IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1)) 
-  120   PEF=PEI+PARU(55)*SQRT(-2.*LOG(MAX(1E-10,RLY(0)))*PEI)* 
-     &  COS(PARU(2)*RLY(0)) 
-        IF(PEF.LT.0..OR.PEF.GT.PARU(56)*PEI) GOTO 120 
-        P(IC,5)=PEF 
-        IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1)) 
-  130   CONTINUE 
-      ENDIF 
-C...Remove cells below threshold. 
-      IF(PARU(58).GT.0.) THEN 
-        NCC=NC 
-        NC=N 
-        DO 140 IC=N+1,NCC 
-        IF(P(IC,5).GT.PARU(58)) THEN 
-          NC=NC+1 
-          K(NC,3)=K(IC,3) 
-          K(NC,4)=K(IC,4) 
-          K(NC,5)=K(IC,5) 
-          P(NC,1)=P(IC,1) 
-          P(NC,2)=P(IC,2) 
-          P(NC,5)=P(IC,5) 
-        ENDIF 
-  140   CONTINUE 
-      ENDIF 
-C...Find initiator cell: the one with highest pT of not yet used ones. 
-      NJ=NC 
-  150 ETMAX=0. 
-      DO 160 IC=N+1,NC 
-      IF(K(IC,5).NE.2) GOTO 160 
-      IF(P(IC,5).LE.ETMAX) GOTO 160 
-      ICMAX=IC 
-      ETA=P(IC,1) 
-      PHI=P(IC,2) 
-      ETMAX=P(IC,5) 
-  160 CONTINUE 
-      IF(ETMAX.LT.PARU(52)) GOTO 220 
-      IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYCELL:) no more memory left in LUJETS') 
-        NJET=-2 
-        RETURN 
-      ENDIF 
-      K(ICMAX,5)=1 
-      NJ=NJ+1 
-      K(NJ,4)=0 
-      K(NJ,5)=1 
-      P(NJ,1)=ETA 
-      P(NJ,2)=PHI 
-      P(NJ,3)=0. 
-      P(NJ,4)=0. 
-      P(NJ,5)=0. 
-C...Sum up unused cells within required distance of initiator. 
-      DO 170 IC=N+1,NC 
-      IF(K(IC,5).EQ.0) GOTO 170 
-      IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170 
-      DPHIA=ABS(P(IC,2)-PHI) 
-      IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170 
-      PHIC=P(IC,2) 
-      IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI) 
-      IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170 
-      K(IC,5)=-K(IC,5) 
-      K(NJ,4)=K(NJ,4)+K(IC,4) 
-      P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1) 
-      P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC 
-      P(NJ,5)=P(NJ,5)+P(IC,5) 
-  170 CONTINUE 
-C...Reject cluster below minimum ET, else accept. 
-      IF(P(NJ,5).LT.PARU(53)) THEN 
-        NJ=NJ-1 
-        DO 180 IC=N+1,NC 
-        IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5) 
-  180   CONTINUE 
-      ELSEIF(MSTU(54).LE.2) THEN 
-        P(NJ,3)=P(NJ,3)/P(NJ,5) 
-        P(NJ,4)=P(NJ,4)/P(NJ,5) 
-        IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2), 
-     &  P(NJ,4)) 
-        DO 190 IC=N+1,NC 
-        IF(K(IC,5).LT.0) K(IC,5)=0 
-  190   CONTINUE 
-      ELSE 
-        DO 200 J=1,4 
-        P(NJ,J)=0. 
-  200   CONTINUE 
-        DO 210 IC=N+1,NC 
-        IF(K(IC,5).GE.0) GOTO 210 
-        P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2)) 
-        P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2)) 
-        P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1)) 
-        P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1)) 
-        K(IC,5)=0 
-  210   CONTINUE 
-      ENDIF 
-      GOTO 150 
-C...Arrange clusters in falling ET sequence. 
-  220 DO 250 I=1,NJ-NC 
-      ETMAX=0. 
-      DO 230 IJ=NC+1,NJ 
-      IF(K(IJ,5).EQ.0) GOTO 230 
-      IF(P(IJ,5).LT.ETMAX) GOTO 230 
-      IJMAX=IJ 
-      ETMAX=P(IJ,5) 
-  230 CONTINUE 
-      K(IJMAX,5)=0 
-      K(N+I,1)=31 
-      K(N+I,2)=98 
-      K(N+I,3)=I 
-      K(N+I,4)=K(IJMAX,4) 
-      K(N+I,5)=0 
-      DO 240 J=1,5 
-      P(N+I,J)=P(IJMAX,J) 
-      V(N+I,J)=0. 
-  240 CONTINUE 
-  250 CONTINUE 
-      NJET=NJ-NC 
-C...Convert to massless or massive four-vectors. 
-      IF(MSTU(54).EQ.2) THEN 
-        DO 260 I=N+1,N+NJET 
-        ETA=P(I,3) 
-        P(I,1)=P(I,5)*COS(P(I,4)) 
-        P(I,2)=P(I,5)*SIN(P(I,4)) 
-        P(I,3)=P(I,5)*SINH(ETA) 
-        P(I,4)=P(I,5)*COSH(ETA) 
-        P(I,5)=0. 
-  260   CONTINUE 
-      ELSEIF(MSTU(54).GE.3) THEN 
-        DO 270 I=N+1,N+NJET 
-        P(I,5)=SQRT(MAX(0.,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2)) 
-  270   CONTINUE 
-      ENDIF 
-C...Information about storage. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      MSTU(63)=NC-N 
-      IF(MSTU(43).LE.1) MSTU(3)=NJET 
-      IF(MSTU(43).GE.2) N=N+NJET 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYJMAS(PMH,PML) 
-C...Purpose: to determine, approximately, the two jet masses that 
-C...minimize the sum m_H^2 + m_L^2, a la Clavelli and Wyler. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-      DIMENSION SM(3,3),SAX(3),PS(3,5) 
-C...Reset. 
-      NP=0 
-      DO 120 J1=1,3 
-      DO 100 J2=J1,3 
-      SM(J1,J2)=0. 
-  100 CONTINUE 
-      DO 110 J2=1,4 
-      PS(J1,J2)=0. 
-  110 CONTINUE 
-  120 CONTINUE 
-      PSS=0. 
-C...Take copy of particles that are to be considered in mass analysis. 
-      DO 170 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LYCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 170 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &  GOTO 170 
-      ENDIF 
-      IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYJMAS:) no more memory left in LUJETS') 
-        PMH=-2. 
-        PML=-2. 
-        RETURN 
-      ENDIF 
-      NP=NP+1 
-      DO 130 J=1,5 
-      P(N+NP,J)=P(I,J) 
-  130 CONTINUE 
-      IF(MSTU(42).EQ.0) P(N+NP,5)=0. 
-      IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PMAS(101,1) 
-      P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-C...Fill information in sphericity tensor and total momentum vector. 
-      DO 150 J1=1,3 
-      DO 140 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2) 
-  140 CONTINUE 
-  150 CONTINUE 
-      PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      DO 160 J=1,4 
-      PS(3,J)=PS(3,J)+P(N+NP,J) 
-  160 CONTINUE 
-  170 CONTINUE 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LYERRM(8,'(LYJMAS:) too few particles for analysis') 
-        PMH=-1. 
-        PML=-1. 
-        RETURN 
-      ENDIF 
-      PARU(61)=SQRT(MAX(0.,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-PS(3,3)**2)) 
-C...Find largest eigenvalue to matrix (third degree equation). 
-      DO 190 J1=1,3 
-      DO 180 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)/PSS 
-  180 CONTINUE 
-  190 CONTINUE 
-      SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-SM(1,2)**2- 
-     &SM(1,3)**2-SM(2,3)**2)/3.-1./9. 
-      SR=-0.5*(SQ+1./9.+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+SM(3,3)* 
-     &SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+SM(1,2)*SM(1,3)*SM(2,3)+1./27. 
-      SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1.),-1.))/3.) 
-      SMA=1./3.+SQRT(-SQ)*MAX(2.*SP,SQRT(3.*(1.-SP**2))-SP) 
-C...Find largest eigenvector by solving equation system. 
-      DO 210 J1=1,3 
-      SM(J1,J1)=SM(J1,J1)-SMA 
-      DO 200 J2=J1+1,3 
-      SM(J2,J1)=SM(J1,J2) 
-  200 CONTINUE 
-  210 CONTINUE 
-      SMAX=0. 
-      DO 230 J1=1,3 
-      DO 220 J2=1,3 
-      IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220 
-      JA=J1 
-      JB=J2 
-      SMAX=ABS(SM(J1,J2)) 
-  220 CONTINUE 
-  230 CONTINUE 
-      SMAX=0. 
-      DO 250 J3=JA+1,JA+2 
-      J1=J3-3*((J3-1)/3) 
-      RL=SM(J1,JB)/SM(JA,JB) 
-      DO 240 J2=1,3 
-      SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2) 
-      IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240 
-      JC=J1 
-      SMAX=ABS(SM(J1,J2)) 
-  240 CONTINUE 
-  250 CONTINUE 
-      JB1=JB+1-3*(JB/3) 
-      JB2=JB+2-3*((JB+1)/3) 
-      SAX(JB1)=-SM(JC,JB2) 
-      SAX(JB2)=SM(JC,JB1) 
-      SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB) 
-C...Divide particles into two initial clusters by hemisphere. 
-      DO 270 I=N+1,N+NP 
-      PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3) 
-      IS=1 
-      IF(PSAX.LT.0.) IS=2 
-      K(I,3)=IS 
-      DO 260 J=1,4 
-      PS(IS,J)=PS(IS,J)+P(I,J) 
-  260 CONTINUE 
-  270 CONTINUE 
-      PMS=MAX(1E-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+ 
-     &MAX(1E-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2) 
-C...Reassign one particle at a time; find maximum decrease of m^2 sum. 
-  280 PMD=0. 
-      IM=0 
-      DO 290 J=1,4 
-      PS(3,J)=PS(1,J)-PS(2,J) 
-  290 CONTINUE 
-      DO 300 I=N+1,N+NP 
-      PPS=P(I,4)*PS(3,4)-P(I,1)*PS(3,1)-P(I,2)*PS(3,2)-P(I,3)*PS(3,3) 
-      IF(K(I,3).EQ.1) PMDI=2.*(P(I,5)**2-PPS) 
-      IF(K(I,3).EQ.2) PMDI=2.*(P(I,5)**2+PPS) 
-      IF(PMDI.LT.PMD) THEN 
-        PMD=PMDI 
-        IM=I 
-      ENDIF 
-  300 CONTINUE 
-C...Loop back if significant reduction in sum of m^2. 
-      IF(PMD.LT.-PARU(48)*PMS) THEN 
-        PMS=PMS+PMD 
-        IS=K(IM,3) 
-        DO 310 J=1,4 
-        PS(IS,J)=PS(IS,J)-P(IM,J) 
-        PS(3-IS,J)=PS(3-IS,J)+P(IM,J) 
-  310   CONTINUE 
-        K(IM,3)=3-IS 
-        GOTO 280 
-      ENDIF 
-C...Final masses and output. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      PS(1,5)=SQRT(MAX(0.,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)) 
-      PS(2,5)=SQRT(MAX(0.,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)) 
-      PMH=MAX(PS(1,5),PS(2,5)) 
-      PML=MIN(PS(1,5),PS(2,5)) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYFOWO(H10,H20,H30,H40) 
-C...Purpose: to calculate the first few Fox-Wolfram moments. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Copy momenta for particles and calculate H0. 
-      NP=0 
-      H0=0. 
-      HD=0. 
-      DO 110 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LYCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 110 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &  GOTO 110 
-      ENDIF 
-      IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LYERRM(11,'(LYFOWO:) no more memory left in LUJETS') 
-        H10=-1. 
-        H20=-1. 
-        H30=-1. 
-        H40=-1. 
-        RETURN 
-      ENDIF 
-      NP=NP+1 
-      DO 100 J=1,3 
-      P(N+NP,J)=P(I,J) 
-  100 CONTINUE 
-      P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      H0=H0+P(N+NP,4) 
-      HD=HD+P(N+NP,4)**2 
-  110 CONTINUE 
-      H0=H0**2 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LYERRM(8,'(LYFOWO:) too few particles for analysis') 
-        H10=-1. 
-        H20=-1. 
-        H30=-1. 
-        H40=-1. 
-        RETURN 
-      ENDIF 
-C...Calculate H1 - H4. 
-      H10=0. 
-      H20=0. 
-      H30=0. 
-      H40=0. 
-      DO 130 I1=N+1,N+NP 
-      DO 120 I2=I1+1,N+NP 
-      CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/ 
-     &(P(I1,4)*P(I2,4)) 
-      H10=H10+P(I1,4)*P(I2,4)*CTHE 
-      H20=H20+P(I1,4)*P(I2,4)*(1.5*CTHE**2-0.5) 
-      H30=H30+P(I1,4)*P(I2,4)*(2.5*CTHE**3-1.5*CTHE) 
-      H40=H40+P(I1,4)*P(I2,4)*(4.375*CTHE**4-3.75*CTHE**2+0.375) 
-  120 CONTINUE 
-  130 CONTINUE 
-C...Calculate H1/H0 - H4/H0. Output. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      H10=(HD+2.*H10)/H0 
-      H20=(HD+2.*H20)/H0 
-      H30=(HD+2.*H30)/H0 
-      H40=(HD+2.*H40)/H0 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYTABU(MTABU) 
-C...Purpose: to evaluate various properties of an event, with 
-C...statistics accumulated during the course of the run and 
-C...printed at the end. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/,/LYDAT3/ 
-      DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4), 
-     &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4), 
-     &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25), 
-     &KFDM(8),KFDC(200,0:8),NPDC(200) 
-      SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS, 
-     &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA, 
-     &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC 
-      CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12 
-      DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/, 
-     &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0./,FM2FM/120*0./, 
-     &NEVEE/0/,FE1EC/50*0./,FE2EC/50*0./,FE1EA/25*0./,FE2EA/25*0./, 
-     &NEVDC/0/,NKFDC/0/,NREDC/0/ 
-C...Reset statistics on initial parton state. 
-      IF(MTABU.EQ.10) THEN 
-        NEVIS=0 
-        NKFIS=0 
-C...Identify and order flavour content of initial state. 
-      ELSEIF(MTABU.EQ.11) THEN 
-        NEVIS=NEVIS+1 
-        KFM1=2*IABS(MSTU(161)) 
-        IF(MSTU(161).GT.0) KFM1=KFM1-1 
-        KFM2=2*IABS(MSTU(162)) 
-        IF(MSTU(162).GT.0) KFM2=KFM2-1 
-        KFMN=MIN(KFM1,KFM2) 
-        KFMX=MAX(KFM1,KFM2) 
-        DO 100 I=1,NKFIS 
-        IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN 
-          IKFIS=-I 
-          GOTO 110 
-        ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND. 
-     &  KFMX.LT.KFIS(I,2))) THEN 
-          IKFIS=I 
-          GOTO 110 
-        ENDIF 
-  100   CONTINUE 
-        IKFIS=NKFIS+1 
-  110   IF(IKFIS.LT.0) THEN 
-          IKFIS=-IKFIS 
-        ELSE 
-          IF(NKFIS.GE.100) RETURN 
-          DO 130 I=NKFIS,IKFIS,-1 
-          KFIS(I+1,1)=KFIS(I,1) 
-          KFIS(I+1,2)=KFIS(I,2) 
-          DO 120 J=0,10 
-          NPIS(I+1,J)=NPIS(I,J) 
-  120     CONTINUE 
-  130   CONTINUE 
-          NKFIS=NKFIS+1 
-          KFIS(IKFIS,1)=KFMN 
-          KFIS(IKFIS,2)=KFMX 
-          DO 140 J=0,10 
-          NPIS(IKFIS,J)=0 
-  140     CONTINUE 
-        ENDIF 
-        NPIS(IKFIS,0)=NPIS(IKFIS,0)+1 
-C...Count number of partons in initial state. 
-        NP=0 
-        DO 160 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN 
-        ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN 
-        ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0) 
-     &  THEN 
-        ELSE 
-          IM=I 
-  150     IM=K(IM,3) 
-          IF(IM.LE.0.OR.IM.GT.N) THEN 
-            NP=NP+1 
-          ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN 
-            NP=NP+1 
-          ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN 
-          ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10).NE.0) 
-     &    THEN 
-          ELSE 
-            GOTO 150 
-          ENDIF 
-        ENDIF 
-  160   CONTINUE 
-        NPCO=MAX(NP,1) 
-        IF(NP.GE.6) NPCO=6 
-        IF(NP.GE.8) NPCO=7 
-        IF(NP.GE.11) NPCO=8 
-        IF(NP.GE.16) NPCO=9 
-        IF(NP.GE.26) NPCO=10 
-        NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1 
-        MSTU(62)=NP 
-C...Write statistics on initial parton state. 
-      ELSEIF(MTABU.EQ.12) THEN 
-        FAC=1./MAX(1,NEVIS) 
-        WRITE(MSTU(11),5000) NEVIS 
-        DO 170 I=1,NKFIS 
-        KFMN=KFIS(I,1) 
-        IF(KFMN.EQ.0) KFMN=KFIS(I,2) 
-        KFM1=(KFMN+1)/2 
-        IF(2*KFM1.EQ.KFMN) KFM1=-KFM1 
-        CALL LYNAME(KFM1,CHAU) 
-        CHIS(1)=CHAU(1:12) 
-        IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?' 
-        KFMX=KFIS(I,2) 
-        IF(KFIS(I,1).EQ.0) KFMX=0 
-        KFM2=(KFMX+1)/2 
-        IF(2*KFM2.EQ.KFMX) KFM2=-KFM2 
-        CALL LYNAME(KFM2,CHAU) 
-        CHIS(2)=CHAU(1:12) 
-        IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?' 
-        WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0), 
-     &  (NPIS(I,J)/FLOAT(NPIS(I,0)),J=1,10) 
-  170   CONTINUE 
-C...Copy statistics on initial parton state into /LYJETS/. 
-      ELSEIF(MTABU.EQ.13) THEN 
-        FAC=1./MAX(1,NEVIS) 
-        DO 190 I=1,NKFIS 
-        KFMN=KFIS(I,1) 
-        IF(KFMN.EQ.0) KFMN=KFIS(I,2) 
-        KFM1=(KFMN+1)/2 
-        IF(2*KFM1.EQ.KFMN) KFM1=-KFM1 
-        KFMX=KFIS(I,2) 
-        IF(KFIS(I,1).EQ.0) KFMX=0 
-        KFM2=(KFMX+1)/2 
-        IF(2*KFM2.EQ.KFMX) KFM2=-KFM2 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=KFM1 
-        K(I,4)=KFM2 
-        K(I,5)=NPIS(I,0) 
-        DO 180 J=1,5 
-        P(I,J)=FAC*NPIS(I,J) 
-        V(I,J)=FAC*NPIS(I,J+5) 
-  180   CONTINUE 
-  190   CONTINUE 
-        N=NKFIS 
-        DO 200 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  200   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVIS 
-        MSTU(3)=1 
-C...Reset statistics on number of particles/partons. 
-      ELSEIF(MTABU.EQ.20) THEN 
-        NEVFS=0 
-        NPRFS=0 
-        NFIFS=0 
-        NCHFS=0 
-        NKFFS=0 
-C...Identify whether particle/parton is primary or not. 
-      ELSEIF(MTABU.EQ.21) THEN 
-        NEVFS=NEVFS+1 
-        MSTU(62)=0 
-        DO 260 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260 
-        MSTU(62)=MSTU(62)+1 
-        KC=LYCOMP(K(I,2)) 
-        MPRI=0 
-        IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN 
-          MPRI=1 
-        ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN 
-          MPRI=1 
-        ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN 
-          MPRI=1 
-        ELSEIF(KC.EQ.0) THEN 
-        ELSEIF(K(K(I,3),1).EQ.13) THEN 
-          IM=K(K(I,3),3) 
-          IF(IM.LE.0.OR.IM.GT.N) THEN 
-            MPRI=1 
-          ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN 
-            MPRI=1 
-          ENDIF 
-        ELSEIF(KCHG(KC,2).EQ.0) THEN 
-          KCM=LYCOMP(K(K(I,3),2)) 
-          IF(KCM.NE.0) THEN 
-            IF(KCHG(KCM,2).NE.0) MPRI=1 
-          ENDIF 
-        ENDIF 
-        IF(KC.NE.0.AND.MPRI.EQ.1) THEN 
-          IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1 
-        ENDIF 
-        IF(K(I,1).LE.10) THEN 
-          NFIFS=NFIFS+1 
-          IF(LYCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1 
-        ENDIF 
-C...Fill statistics on number of particles/partons in event. 
-        KFA=IABS(K(I,2)) 
-        KFS=3-ISIGN(1,K(I,2))-MPRI 
-        DO 210 IP=1,NKFFS 
-        IF(KFA.EQ.KFFS(IP)) THEN 
-          IKFFS=-IP 
-          GOTO 220 
-        ELSEIF(KFA.LT.KFFS(IP)) THEN 
-          IKFFS=IP 
-          GOTO 220 
-        ENDIF 
-  210   CONTINUE 
-        IKFFS=NKFFS+1 
-  220   IF(IKFFS.LT.0) THEN 
-          IKFFS=-IKFFS 
-        ELSE 
-          IF(NKFFS.GE.400) RETURN 
-          DO 240 IP=NKFFS,IKFFS,-1 
-          KFFS(IP+1)=KFFS(IP) 
-          DO 230 J=1,4 
-          NPFS(IP+1,J)=NPFS(IP,J) 
-  230     CONTINUE 
-  240   CONTINUE 
-          NKFFS=NKFFS+1 
-          KFFS(IKFFS)=KFA 
-          DO 250 J=1,4 
-          NPFS(IKFFS,J)=0 
-  250     CONTINUE 
-        ENDIF 
-        NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1 
-  260   CONTINUE 
-C...Write statistics on particle/parton composition of events. 
-      ELSEIF(MTABU.EQ.22) THEN 
-        FAC=1./MAX(1,NEVFS) 
-        WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS 
-        DO 270 I=1,NKFFS 
-        CALL LYNAME(KFFS(I),CHAU) 
-        KC=LYCOMP(KFFS(I)) 
-        MDCYF=0 
-        IF(KC.NE.0) MDCYF=MDCY(KC,1) 
-        WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4), 
-     &  FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)) 
-  270   CONTINUE 
-C...Copy particle/parton composition information into /LYJETS/. 
-      ELSEIF(MTABU.EQ.23) THEN 
-        FAC=1./MAX(1,NEVFS) 
-        DO 290 I=1,NKFFS 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=KFFS(I) 
-        K(I,4)=0 
-        K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4) 
-        DO 280 J=1,4 
-        P(I,J)=FAC*NPFS(I,J) 
-        V(I,J)=0. 
-  280   CONTINUE 
-        P(I,5)=FAC*K(I,5) 
-        V(I,5)=0. 
-  290   CONTINUE 
-        N=NKFFS 
-        DO 300 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  300   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVFS 
-        P(N+1,1)=FAC*NPRFS 
-        P(N+1,2)=FAC*NFIFS 
-        P(N+1,3)=FAC*NCHFS 
-        MSTU(3)=1 
-C...Reset factorial moments statistics. 
-      ELSEIF(MTABU.EQ.30) THEN 
-        NEVFM=0 
-        NMUFM=0 
-        DO 330 IM=1,3 
-        DO 320 IB=1,10 
-        DO 310 IP=1,4 
-        FM1FM(IM,IB,IP)=0. 
-        FM2FM(IM,IB,IP)=0. 
-  310   CONTINUE 
-  320   CONTINUE 
-  330   CONTINUE 
-C...Find particles to include, with (pion,pseudo)rapidity and azimuth. 
-      ELSEIF(MTABU.EQ.31) THEN 
-        NEVFM=NEVFM+1 
-        NLOW=N+MSTU(3) 
-        NUPP=NLOW 
-        DO 410 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LYCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 410 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &    GOTO 410 
-        ENDIF 
-        PMR=0. 
-        IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=UYMASS(211) 
-        IF(MSTU(42).GE.2) PMR=P(I,5) 
-        PR=MAX(1E-20,PMR**2+P(I,1)**2+P(I,2)**2) 
-        YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR), 
-     &  1E20)),P(I,3)) 
-        IF(ABS(YETA).GT.PARU(57)) GOTO 410 
-        PHI=UYANGL(P(I,1),P(I,2)) 
-        IYETA=512.*(YETA+PARU(57))/(2.*PARU(57)) 
-        IYETA=MAX(0,MIN(511,IYETA)) 
-        IPHI=512.*(PHI+PARU(1))/PARU(2) 
-        IPHI=MAX(0,MIN(511,IPHI)) 
-        IYEP=0 
-        DO 340 IB=0,9 
-        IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2)) 
-  340   CONTINUE 
-C...Order particles in (pseudo)rapidity and/or azimuth. 
-        IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN 
-          CALL LYERRM(11,'(LYTABU:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        NUPP=NUPP+1 
-        IF(NUPP.EQ.NLOW+1) THEN 
-          K(NUPP,1)=IYETA 
-          K(NUPP,2)=IPHI 
-          K(NUPP,3)=IYEP 
-        ELSE 
-          DO 350 I1=NUPP-1,NLOW+1,-1 
-          IF(IYETA.GE.K(I1,1)) GOTO 360 
-          K(I1+1,1)=K(I1,1) 
-  350     CONTINUE 
-  360     K(I1+1,1)=IYETA 
-          DO 370 I1=NUPP-1,NLOW+1,-1 
-          IF(IPHI.GE.K(I1,2)) GOTO 380 
-          K(I1+1,2)=K(I1,2) 
-  370     CONTINUE 
-  380     K(I1+1,2)=IPHI 
-          DO 390 I1=NUPP-1,NLOW+1,-1 
-          IF(IYEP.GE.K(I1,3)) GOTO 400 
-          K(I1+1,3)=K(I1,3) 
-  390     CONTINUE 
-  400     K(I1+1,3)=IYEP 
-        ENDIF 
-  410   CONTINUE 
-        K(NUPP+1,1)=2**10 
-        K(NUPP+1,2)=2**10 
-        K(NUPP+1,3)=4**10 
-C...Calculate sum of factorial moments in event. 
-        DO 480 IM=1,3 
-        DO 430 IB=1,10 
-        DO 420 IP=1,4 
-        FEVFM(IB,IP)=0. 
-  420   CONTINUE 
-  430   CONTINUE 
-        DO 450 IB=1,10 
-        IF(IM.LE.2) IBIN=2**(10-IB) 
-        IF(IM.EQ.3) IBIN=4**(10-IB) 
-        IAGR=K(NLOW+1,IM)/IBIN 
-        NAGR=1 
-        DO 440 I=NLOW+2,NUPP+1 
-        ICUT=K(I,IM)/IBIN 
-        IF(ICUT.EQ.IAGR) THEN 
-          NAGR=NAGR+1 
-        ELSE 
-          IF(NAGR.EQ.1) THEN 
-          ELSEIF(NAGR.EQ.2) THEN 
-            FEVFM(IB,1)=FEVFM(IB,1)+2. 
-          ELSEIF(NAGR.EQ.3) THEN 
-            FEVFM(IB,1)=FEVFM(IB,1)+6. 
-            FEVFM(IB,2)=FEVFM(IB,2)+6. 
-          ELSEIF(NAGR.EQ.4) THEN 
-            FEVFM(IB,1)=FEVFM(IB,1)+12. 
-            FEVFM(IB,2)=FEVFM(IB,2)+24. 
-            FEVFM(IB,3)=FEVFM(IB,3)+24. 
-          ELSE 
-            FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1.) 
-            FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1.)*(NAGR-2.) 
-            FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1.)*(NAGR-2.)*(NAGR-3.) 
-            FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1.)*(NAGR-2.)*(NAGR-3.)* 
-     &      (NAGR-4.) 
-          ENDIF 
-          IAGR=ICUT 
-          NAGR=1 
-        ENDIF 
-  440   CONTINUE 
-  450   CONTINUE 
-C...Add results to total statistics. 
-        DO 470 IB=10,1,-1 
-        DO 460 IP=1,4 
-        IF(FEVFM(1,IP).LT.0.5) THEN 
-          FEVFM(IB,IP)=0. 
-        ELSEIF(IM.LE.2) THEN 
-          FEVFM(IB,IP)=2.**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP) 
-        ELSE 
-          FEVFM(IB,IP)=4.**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP) 
-        ENDIF 
-        FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP) 
-        FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2 
-  460   CONTINUE 
-  470   CONTINUE 
-  480   CONTINUE 
-        NMUFM=NMUFM+(NUPP-NLOW) 
-        MSTU(62)=NUPP-NLOW 
-C...Write accumulated statistics on factorial moments. 
-      ELSEIF(MTABU.EQ.32) THEN 
-        FAC=1./MAX(1,NEVFM) 
-        IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta' 
-        IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi' 
-        IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  ' 
-        DO 510 IM=1,3 
-        WRITE(MSTU(11),5500) 
-        DO 500 IB=1,10 
-        BYETA=2.*PARU(57) 
-        IF(IM.NE.2) BYETA=BYETA/2**(IB-1) 
-        BPHI=PARU(2) 
-        IF(IM.NE.1) BPHI=BPHI/2**(IB-1) 
-        IF(IM.LE.2) BNAVE=FAC*NMUFM/FLOAT(2**(IB-1)) 
-        IF(IM.EQ.3) BNAVE=FAC*NMUFM/FLOAT(4**(IB-1)) 
-        DO 490 IP=1,4 
-        FMOMA(IP)=FAC*FM1FM(IM,IB,IP) 
-        FMOMS(IP)=SQRT(MAX(0.,FAC*(FAC*FM2FM(IM,IB,IP)-FMOMA(IP)**2))) 
-  490   CONTINUE 
-        WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP), 
-     &  IP=1,4) 
-  500   CONTINUE 
-  510   CONTINUE 
-C...Copy statistics on factorial moments into /LYJETS/. 
-      ELSEIF(MTABU.EQ.33) THEN 
-        FAC=1./MAX(1,NEVFM) 
-        DO 540 IM=1,3 
-        DO 530 IB=1,10 
-        I=10*(IM-1)+IB 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=1 
-        IF(IM.NE.2) K(I,3)=2**(IB-1) 
-        K(I,4)=1 
-        IF(IM.NE.1) K(I,4)=2**(IB-1) 
-        K(I,5)=0 
-        P(I,1)=2.*PARU(57)/K(I,3) 
-        V(I,1)=PARU(2)/K(I,4) 
-        DO 520 IP=1,4 
-        P(I,IP+1)=FAC*FM1FM(IM,IB,IP) 
-        V(I,IP+1)=SQRT(MAX(0.,FAC*(FAC*FM2FM(IM,IB,IP)-P(I,IP+1)**2))) 
-  520   CONTINUE 
-  530   CONTINUE 
-  540   CONTINUE 
-        N=30 
-        DO 550 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  550   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVFM 
-        MSTU(3)=1 
-C...Reset statistics on Energy-Energy Correlation. 
-      ELSEIF(MTABU.EQ.40) THEN 
-        NEVEE=0 
-        DO 560 J=1,25 
-        FE1EC(J)=0. 
-        FE2EC(J)=0. 
-        FE1EC(51-J)=0. 
-        FE2EC(51-J)=0. 
-        FE1EA(J)=0. 
-        FE2EA(J)=0. 
-  560   CONTINUE 
-C...Find particles to include, with proper assumed mass. 
-      ELSEIF(MTABU.EQ.41) THEN 
-        NEVEE=NEVEE+1 
-        NLOW=N+MSTU(3) 
-        NUPP=NLOW 
-        ECM=0. 
-        DO 570 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LYCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 570 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LYCHGE(K(I,2)).EQ.0) 
-     &    GOTO 570 
-        ENDIF 
-        PMR=0. 
-        IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=UYMASS(211) 
-        IF(MSTU(42).GE.2) PMR=P(I,5) 
-        IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN 
-          CALL LYERRM(11,'(LYTABU:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        NUPP=NUPP+1 
-        P(NUPP,1)=P(I,1) 
-        P(NUPP,2)=P(I,2) 
-        P(NUPP,3)=P(I,3) 
-        P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-        P(NUPP,5)=MAX(1E-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)) 
-        ECM=ECM+P(NUPP,4) 
-  570   CONTINUE 
-        IF(NUPP.EQ.NLOW) RETURN 
-C...Analyze Energy-Energy Correlation in event. 
-        FAC=(2./ECM**2)*50./PARU(1) 
-        DO 580 J=1,50 
-        FEVEE(J)=0. 
-  580   CONTINUE 
-        DO 600 I1=NLOW+2,NUPP 
-        DO 590 I2=NLOW+1,I1-1 
-        CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/ 
-     &  (P(I1,5)*P(I2,5)) 
-        THE=ACOS(MAX(-1.,MIN(1.,CTHE))) 
-        ITHE=MAX(1,MIN(50,1+INT(50.*THE/PARU(1)))) 
-        FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4) 
-  590   CONTINUE 
-  600   CONTINUE 
-        DO 610 J=1,25 
-        FE1EC(J)=FE1EC(J)+FEVEE(J) 
-        FE2EC(J)=FE2EC(J)+FEVEE(J)**2 
-        FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J) 
-        FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2 
-        FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J)) 
-        FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2 
-  610   CONTINUE 
-        MSTU(62)=NUPP-NLOW 
-C...Write statistics on Energy-Energy Correlation. 
-      ELSEIF(MTABU.EQ.42) THEN 
-        FAC=1./MAX(1,NEVEE) 
-        WRITE(MSTU(11),5700) NEVEE 
-        DO 620 J=1,25 
-        FEEC1=FAC*FE1EC(J) 
-        FEES1=SQRT(MAX(0.,FAC*(FAC*FE2EC(J)-FEEC1**2))) 
-        FEEC2=FAC*FE1EC(51-J) 
-        FEES2=SQRT(MAX(0.,FAC*(FAC*FE2EC(51-J)-FEEC2**2))) 
-        FEECA=FAC*FE1EA(J) 
-        FEESA=SQRT(MAX(0.,FAC*(FAC*FE2EA(J)-FEECA**2))) 
-        WRITE(MSTU(11),5800) 3.6*(J-1),3.6*J,FEEC1,FEES1,FEEC2,FEES2, 
-     &  FEECA,FEESA 
-  620   CONTINUE 
-C...Copy statistics on Energy-Energy Correlation into /LYJETS/. 
-      ELSEIF(MTABU.EQ.43) THEN 
-        FAC=1./MAX(1,NEVEE) 
-        DO 630 I=1,25 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=0 
-        K(I,4)=0 
-        K(I,5)=0 
-        P(I,1)=FAC*FE1EC(I) 
-        V(I,1)=SQRT(MAX(0.,FAC*(FAC*FE2EC(I)-P(I,1)**2))) 
-        P(I,2)=FAC*FE1EC(51-I) 
-        V(I,2)=SQRT(MAX(0.,FAC*(FAC*FE2EC(51-I)-P(I,2)**2))) 
-        P(I,3)=FAC*FE1EA(I) 
-        V(I,3)=SQRT(MAX(0.,FAC*(FAC*FE2EA(I)-P(I,3)**2))) 
-        P(I,4)=PARU(1)*(I-1)/50. 
-        P(I,5)=PARU(1)*I/50. 
-        V(I,4)=3.6*(I-1) 
-        V(I,5)=3.6*I 
-  630   CONTINUE 
-        N=25 
-        DO 640 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  640   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVEE 
-        MSTU(3)=1 
-C...Reset statistics on decay channels. 
-      ELSEIF(MTABU.EQ.50) THEN 
-        NEVDC=0 
-        NKFDC=0 
-        NREDC=0 
-C...Identify and order flavour content of final state. 
-      ELSEIF(MTABU.EQ.51) THEN 
-        NEVDC=NEVDC+1 
-        NDS=0 
-        DO 670 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670 
-        NDS=NDS+1 
-        IF(NDS.GT.8) THEN 
-          NREDC=NREDC+1 
-          RETURN 
-        ENDIF 
-        KFM=2*IABS(K(I,2)) 
-        IF(K(I,2).LT.0) KFM=KFM-1 
-        DO 650 IDS=NDS-1,1,-1 
-        IIN=IDS+1 
-        IF(KFM.LT.KFDM(IDS)) GOTO 660 
-        KFDM(IDS+1)=KFDM(IDS) 
-  650   CONTINUE 
-        IIN=1 
-  660   KFDM(IIN)=KFM 
-  670   CONTINUE 
-C...Find whether old or new final state. 
-        DO 690 IDC=1,NKFDC 
-        IF(NDS.LT.KFDC(IDC,0)) THEN 
-          IKFDC=IDC 
-          GOTO 700 
-        ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN 
-          DO 680 I=1,NDS 
-          IF(KFDM(I).LT.KFDC(IDC,I)) THEN 
-            IKFDC=IDC 
-            GOTO 700 
-          ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN 
-            GOTO 690 
-          ENDIF 
-  680     CONTINUE 
-          IKFDC=-IDC 
-          GOTO 700 
-        ENDIF 
-  690   CONTINUE 
-        IKFDC=NKFDC+1 
-  700   IF(IKFDC.LT.0) THEN 
-          IKFDC=-IKFDC 
-        ELSEIF(NKFDC.GE.200) THEN 
-          NREDC=NREDC+1 
-          RETURN 
-        ELSE 
-          DO 720 IDC=NKFDC,IKFDC,-1 
-          NPDC(IDC+1)=NPDC(IDC) 
-          DO 710 I=0,8 
-          KFDC(IDC+1,I)=KFDC(IDC,I) 
-  710     CONTINUE 
-  720     CONTINUE 
-          NKFDC=NKFDC+1 
-          KFDC(IKFDC,0)=NDS 
-          DO 730 I=1,NDS 
-          KFDC(IKFDC,I)=KFDM(I) 
-  730     CONTINUE 
-          NPDC(IKFDC)=0 
-        ENDIF 
-        NPDC(IKFDC)=NPDC(IKFDC)+1 
-C...Write statistics on decay channels. 
-      ELSEIF(MTABU.EQ.52) THEN 
-        FAC=1./MAX(1,NEVDC) 
-        WRITE(MSTU(11),5900) NEVDC 
-        DO 750 IDC=1,NKFDC 
-        DO 740 I=1,KFDC(IDC,0) 
-        KFM=KFDC(IDC,I) 
-        KF=(KFM+1)/2 
-        IF(2*KF.NE.KFM) KF=-KF 
-        CALL LYNAME(KF,CHAU) 
-        CHDC(I)=CHAU(1:12) 
-        IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?' 
-  740   CONTINUE 
-        WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0)) 
-  750   CONTINUE 
-        IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC 
-C...Copy statistics on decay channels into /LYJETS/. 
-      ELSEIF(MTABU.EQ.53) THEN 
-        FAC=1./MAX(1,NEVDC) 
-        DO 780 IDC=1,NKFDC 
-        K(IDC,1)=32 
-        K(IDC,2)=99 
-        K(IDC,3)=0 
-        K(IDC,4)=0 
-        K(IDC,5)=KFDC(IDC,0) 
-        DO 760 J=1,5 
-        P(IDC,J)=0. 
-        V(IDC,J)=0. 
-  760   CONTINUE 
-        DO 770 I=1,KFDC(IDC,0) 
-        KFM=KFDC(IDC,I) 
-        KF=(KFM+1)/2 
-        IF(2*KF.NE.KFM) KF=-KF 
-        IF(I.LE.5) P(IDC,I)=KF 
-        IF(I.GE.6) V(IDC,I-5)=KF 
-  770   CONTINUE 
-        V(IDC,5)=FAC*NPDC(IDC) 
-  780   CONTINUE 
-        N=NKFDC 
-        DO 790 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  790   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVDC 
-        V(N+1,5)=FAC*NREDC 
-        MSTU(3)=1 
-      ENDIF 
-C...Format statements for output on unit MSTU(11) (default 6). 
- 5000 FORMAT(///20X,'Event statistics - initial state'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ', 
-     &'according to fragmenting system multiplicity'/ 
-     &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5', 
-     &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/) 
- 5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4) 
- 5200 FORMAT(///20X,'Event statistics - final state'/ 
-     &20X,'based on an analysis of ',I7,' events'// 
-     &5X,'Mean primary multiplicity =',F10.4/ 
-     &5X,'Mean final   multiplicity =',F10.4/ 
-     &5X,'Mean charged multiplicity =',F10.4// 
-     &5X,'Number of particles produced per event (directly and via ', 
-     &'decays/branchings)'/ 
-     &5X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles', 
-     &8X,'Total'/35X,'prim        seco        prim        seco'/) 
- 5300 FORMAT(1X,I6,4X,A16,I2,5(1X,F11.6)) 
- 5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>', 
-     &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  ')) 
- 5500 FORMAT(10X) 
- 5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4)) 
- 5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X, 
-     &'EECA(theta)'/2X,'in degrees ',3('      value    error')/) 
- 5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4)) 
- 5900 FORMAT(///20X,'Decay channel analysis - final state'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &2X,'Probability',10X,'Complete final state'/) 
- 6000 FORMAT(2X,F9.5,5X,8(A12,1X)) 
- 6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ', 
-     &'or table overflow)') 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYEEVT(KFL,ECM) 
-C...Purpose: to handle the generation of an e+e- annihilation jet event. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Check input parameters. 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      IF(KFL.LT.0.OR.KFL.GT.8) THEN 
-        CALL LYERRM(16,'(LYEEVT:) called with unknown flavour code') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02*PARF(100+MAX(1,KFL)) 
-      IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02*PMAS(KFL,1) 
-      IF(ECM.LT.ECMMIN) THEN 
-        CALL LYERRM(16,'(LYEEVT:) called with too small CM energy') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Check consistency of MSTJ options set. 
-      IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN 
-        CALL LYERRM(6, 
-     &  '(LYEEVT:) MSTJ(109) value requires MSTJ(110) = 1') 
-        MSTJ(110)=1 
-      ENDIF 
-      IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN 
-        CALL LYERRM(6, 
-     &  '(LYEEVT:) MSTJ(109) value requires MSTJ(111) = 0') 
-        MSTJ(111)=0 
-      ENDIF 
-C...Initialize alpha_strong and total cross-section. 
-      MSTU(111)=MSTJ(108) 
-      IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1)) 
-     &MSTU(111)=1 
-      PARU(112)=PARJ(121) 
-      IF(MSTU(111).EQ.2) PARU(112)=PARJ(122) 
-      IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE. 
-     &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL LYXTOT(KFL,ECM, 
-     &XTOT) 
-      IF(MSTJ(116).GE.3) MSTJ(116)=1 
-      PARJ(171)=0. 
-C...Add initial e+e- to event record (documentation only). 
-      NTRY=0 
-  100 NTRY=NTRY+1 
-      IF(NTRY.GT.100) THEN 
-        CALL LYERRM(14,'(LYEEVT:) caught in an infinite loop') 
-        RETURN 
-      ENDIF 
-      MSTU(24)=0 
-      NC=0 
-      IF(MSTJ(115).GE.2) THEN 
-        NC=NC+2 
-        CALL LY1ENT(NC-1,11,0.5*ECM,0.,0.) 
-        K(NC-1,1)=21 
-        CALL LY1ENT(NC,-11,0.5*ECM,PARU(1),0.) 
-        K(NC,1)=21 
-      ENDIF 
-C...Radiative photon (in initial state). 
-      MK=0 
-      ECMC=ECM 
-      IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL LYRADK(ECM,MK,PAK, 
-     &THEK,PHIK,ALPK) 
-      IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2.*PAK)) 
-      IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN 
-        NC=NC+1 
-        CALL LY1ENT(NC,22,PAK,THEK,PHIK) 
-        K(NC,3)=MIN(MSTJ(115)/2,1) 
-      ENDIF 
-C...Virtual exchange boson (gamma or Z0). 
-      IF(MSTJ(115).GE.3) THEN 
-        NC=NC+1 
-        KF=22 
-        IF(MSTJ(102).EQ.2) KF=23 
-        MSTU10=MSTU(10) 
-        MSTU(10)=1 
-        P(NC,5)=ECMC 
-        CALL LY1ENT(NC,KF,ECMC,0.,0.) 
-        K(NC,1)=21 
-        K(NC,3)=1 
-        MSTU(10)=MSTU10 
-      ENDIF 
-C...Choice of flavour and jet configuration. 
-      CALL LYXKFL(KFL,ECM,ECMC,KFLC) 
-      IF(KFLC.EQ.0) GOTO 100 
-      CALL LYXJET(ECMC,NJET,CUT) 
-      KFLN=21 
-      IF(NJET.EQ.4) CALL LYX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4, 
-     &X12,X14) 
-      IF(NJET.EQ.3) CALL LYX3JT(NJET,CUT,KFLC,ECMC,X1,X3) 
-      IF(NJET.EQ.2) MSTJ(120)=1 
-C...Fill jet configuration and origin. 
-      IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL LY2ENT(NC+1,KFLC,-KFLC,ECMC) 
-      IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL LY2ENT(-(NC+1),KFLC,-KFLC, 
-     &ECMC) 
-      IF(NJET.EQ.3) CALL LY3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3) 
-      IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL LY4ENT(NC+1,KFLC,KFLN,KFLN, 
-     &-KFLC,ECMC,X1,X2,X4,X12,X14) 
-      IF(NJET.EQ.4.AND.KFLN.NE.21) CALL LY4ENT(NC+1,KFLC,-KFLN,KFLN, 
-     &-KFLC,ECMC,X1,X2,X4,X12,X14) 
-      IF(MSTU(24).NE.0) GOTO 100 
-      DO 110 IP=NC+1,N 
-      K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1) 
-  110 CONTINUE 
-C...Angular orientation according to matrix element. 
-      IF(MSTJ(106).EQ.1) THEN 
-        CALL LYXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI) 
-        CALL LUDBRB(NC+1,N,0.,CHI,0D0,0D0,0D0) 
-        CALL LUDBRB(NC+1,N,THE,PHI,0D0,0D0,0D0) 
-      ENDIF 
-C...Rotation and boost from radiative photon. 
-      IF(MK.EQ.1) THEN 
-        DBEK=-PAK/(ECM-PAK) 
-        NMIN=NC+1-MSTJ(115)/3 
-        CALL LUDBRB(NMIN,N,0.,-PHIK,0D0,0D0,0D0) 
-        CALL LUDBRB(NMIN,N,ALPK,0.,DBEK*SIN(THEK),0D0,DBEK*COS(THEK)) 
-        CALL LUDBRB(NMIN,N,0.,PHIK,0D0,0D0,0D0) 
-      ENDIF 
-C...Generate parton shower. Rearrange along strings and check. 
-      IF(MSTJ(101).EQ.5) THEN 
-        CALL LYSHOW(N-1,N,ECMC) 
-        MSTJ14=MSTJ(14) 
-        IF(MSTJ(105).EQ.-1) MSTJ(14)=-1 
-        IF(MSTJ(105).GE.0) MSTU(28)=0 
-        CALL LYPREP(0) 
-        MSTJ(14)=MSTJ14 
-        IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100 
-      ENDIF 
-C...Fragmentation/decay generation. Information for LYTABU. 
-      IF(MSTJ(105).EQ.1) CALL LYEXEC 
-      MSTU(161)=KFLC 
-      MSTU(162)=-KFLC 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYXTOT(KFL,ECM,XTOT) 
-C...Purpose: to calculate total cross-section, including initial 
-C...state radiation effects. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT1/,/LYDAT2/ 
-C...Status, (optimized) Q^2 scale, alpha_strong. 
-      PARJ(151)=ECM 
-      MSTJ(119)=10*MSTJ(102)+KFL 
-      IF(MSTJ(111).EQ.0) THEN 
-        Q2R=ECM**2 
-      ELSEIF(MSTU(111).EQ.0) THEN 
-        PARJ(168)=MIN(1.,MAX(PARJ(128),EXP(-12.*PARU(1)/ 
-     &  ((33.-2.*MSTU(112))*PARU(111))))) 
-        Q2R=PARJ(168)*ECM**2 
-      ELSE 
-        PARJ(168)=MIN(1.,MAX(PARJ(128),PARU(112)/ECM, 
-     &  (2.*PARU(112)/ECM)**2)) 
-        Q2R=PARJ(168)*ECM**2 
-      ENDIF 
-      ALSPI=UYALPS(Q2R)/PARU(1) 
-C...QCD corrections factor in R. 
-      IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN 
-        RQCD=1. 
-      ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN 
-        RQCD=1.+ALSPI 
-      ELSEIF(MSTJ(109).EQ.0) THEN 
-        RQCD=1.+ALSPI+(1.986-0.115*MSTU(118))*ALSPI**2 
-        IF(MSTJ(111).EQ.1) RQCD=MAX(1.,RQCD+(33.-2.*MSTU(112))/12.* 
-     &  LOG(PARJ(168))*ALSPI**2) 
-      ELSEIF(IABS(MSTJ(101)).EQ.1) THEN 
-        RQCD=1.+(3./4.)*ALSPI 
-      ELSE 
-        RQCD=1.+(3./4.)*ALSPI-(3./32.+0.519*MSTU(118))*ALSPI**2 
-      ENDIF 
-C...Calculate Z0 width if default value not acceptable. 
-      IF(MSTJ(102).GE.3) THEN 
-        RVA=3.*(3.+(4.*PARU(102)-1.)**2)+6.*RQCD*(2.+(1.-8.*PARU(102)/ 
-     &  3.)**2+(4.*PARU(102)/3.-1.)**2) 
-        DO 100 KFLC=5,6 
-        VQ=1. 
-        IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*UYMASS(KFLC)/ 
-     &  ECM)**2)) 
-        IF(KFLC.EQ.5) VF=4.*PARU(102)/3.-1. 
-        IF(KFLC.EQ.6) VF=1.-8.*PARU(102)/3. 
-        RVA=RVA+3.*RQCD*(0.5*VQ*(3.-VQ**2)*VF**2+VQ**3) 
-  100   CONTINUE 
-        PARJ(124)=PARU(101)*PARJ(123)*RVA/(48.*PARU(102)*(1.-PARU(102))) 
-      ENDIF 
-C...Calculate propagator and related constants for QFD case. 
-      POLL=1.-PARJ(131)*PARJ(132) 
-      IF(MSTJ(102).GE.2) THEN 
-        SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
-        SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
-        SFI=SFW*(1.-(PARJ(123)/ECM)**2) 
-        VE=4.*PARU(102)-1. 
-        SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131)) 
-        SF1W=SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131))) 
-        HF1I=SFI*SF1I 
-        HF1W=SFW*SF1W 
-      ENDIF 
-C...Loop over different flavours: charge, velocity. 
-      RTOT=0. 
-      RQQ=0. 
-      RQV=0. 
-      RVA=0. 
-      DO 110 KFLC=1,MAX(MSTJ(104),KFL) 
-      IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110 
-      MSTJ(93)=1 
-      PMQ=UYMASS(KFLC) 
-      IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 110 
-      QF=KCHG(KFLC,1)/3. 
-      VQ=1. 
-      IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1.-(2.*PMQ/ECM)**2) 
-C...Calculate R and sum of charges for QED or QFD case. 
-      RQQ=RQQ+3.*QF**2*POLL 
-      IF(MSTJ(102).LE.1) THEN 
-        RTOT=RTOT+3.*0.5*VQ*(3.-VQ**2)*QF**2*POLL 
-      ELSE 
-        VF=SIGN(1.,QF)-4.*QF*PARU(102) 
-        RQV=RQV-6.*QF*VF*SF1I 
-        RVA=RVA+3.*(VF**2+1.)*SF1W 
-        RTOT=RTOT+3.*(0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+ 
-     &  VF**2*HF1W)+VQ**3*HF1W) 
-      ENDIF 
-  110 CONTINUE 
-      RSUM=RQQ 
-      IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA 
-C...Calculate cross-section, including QCD corrections. 
-      PARJ(141)=RQQ 
-      PARJ(142)=RTOT 
-      PARJ(143)=RTOT*RQCD 
-      PARJ(144)=PARJ(143) 
-      PARJ(145)=PARJ(141)*86.8/ECM**2 
-      PARJ(146)=PARJ(142)*86.8/ECM**2 
-      PARJ(147)=PARJ(143)*86.8/ECM**2 
-      PARJ(148)=PARJ(147) 
-      PARJ(157)=RSUM*RQCD 
-      PARJ(158)=0. 
-      PARJ(159)=0. 
-      XTOT=PARJ(147) 
-      IF(MSTJ(107).LE.0) RETURN 
-C...Virtual cross-section. 
-      XKL=PARJ(135) 
-      XKU=MIN(PARJ(136),1.-(2.*PARJ(127)/ECM)**2) 
-      ALE=2.*LOG(ECM/UYMASS(11))-1. 
-      SIGV=ALE/3.+2.*LOG(ECM**2/(UYMASS(13)*UYMASS(15)))/3.-4./3.+ 
-     &1.526*LOG(ECM**2/0.932) 
-C...Soft and hard radiative cross-section in QED case. 
-      IF(MSTJ(102).LE.1) THEN 
-        SIGV=1.5*ALE-0.5+PARU(1)**2/3.+2.*SIGV 
-        SIGS=ALE*(2.*LOG(XKL)-LOG(1.-XKL)-XKL) 
-        SIGH=ALE*(2.*LOG(XKU/XKL)-LOG((1.-XKU)/(1.-XKL))-(XKU-XKL)) 
-C...Soft and hard radiative cross-section in QFD case. 
-      ELSE 
-        SZM=1.-(PARJ(123)/ECM)**2 
-        SZW=PARJ(123)*PARJ(124)/ECM**2 
-        PARJ(161)=-RQQ/RSUM 
-        PARJ(162)=-(RQQ+RQV+RVA)/RSUM 
-        PARJ(163)=(RQV*(1.-0.5*SZM-SFI)+RVA*(1.5-SZM-SFW))/RSUM 
-        PARJ(164)=(RQV*SZW**2*(1.-2.*SFW)+RVA*(2.*SFI+SZW**2-4.+3.*SZM- 
-     &  SZM**2))/(SZW*RSUM) 
-        SIGV=1.5*ALE-0.5+PARU(1)**2/3.+((2.*RQQ+SFI*RQV)/RSUM)*SIGV+ 
-     &  (SZW*SFW*RQV/RSUM)*PARU(1)*20./9. 
-        SIGS=ALE*(2.*LOG(XKL)+PARJ(161)*LOG(1.-XKL)+PARJ(162)*XKL+ 
-     &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+ 
-     &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW))) 
-        SIGH=ALE*(2.*LOG(XKU/XKL)+PARJ(161)*LOG((1.-XKU)/(1.-XKL))+ 
-     &  PARJ(162)*(XKU-XKL)+PARJ(163)*LOG(((XKU-SZM)**2+SZW**2)/ 
-     &  ((XKL-SZM)**2+SZW**2))+PARJ(164)*(ATAN((XKU-SZM)/SZW)- 
-     &  ATAN((XKL-SZM)/SZW))) 
-      ENDIF 
-C...Total cross-section and fraction of hard photon events. 
-      PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH) 
-      PARJ(157)=RSUM*(1.+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD 
-      PARJ(144)=PARJ(157) 
-      PARJ(148)=PARJ(144)*86.8/ECM**2 
-      XTOT=PARJ(148) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYRADK(ECM,MK,PAK,THEK,PHIK,ALPK) 
-C...Purpose: to generate initial state photon radiation. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYDAT1/ 
-C...Function: cumulative hard photon spectrum in QFD case. 
-      FXK(XX)=2.*LOG(XX)+PARJ(161)*LOG(1.-XX)+PARJ(162)*XX+ 
-     &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW) 
-C...Determine whether radiative photon or not. 
-      MK=0 
-      PAK=0. 
-      IF(PARJ(160).LT.RLY(0)) RETURN 
-      MK=1 
-C...Photon energy range. Find photon momentum in QED case. 
-      XKL=PARJ(135) 
-      XKU=MIN(PARJ(136),1.-(2.*PARJ(127)/ECM)**2) 
-      IF(MSTJ(102).LE.1) THEN 
-  100   XK=1./(1.+(1./XKL-1.)*((1./XKU-1.)/(1./XKL-1.))**RLY(0)) 
-        IF(1.+(1.-XK)**2.LT.2.*RLY(0)) GOTO 100 
-C...Ditto in QFD case, by numerical inversion of integrated spectrum. 
-      ELSE 
-        SZM=1.-(PARJ(123)/ECM)**2 
-        SZW=PARJ(123)*PARJ(124)/ECM**2 
-        FXKL=FXK(XKL) 
-        FXKU=FXK(XKU) 
-        FXKD=1E-4*(FXKU-FXKL) 
-        FXKR=FXKL+RLY(0)*(FXKU-FXKL) 
-        NXK=0 
-  110   NXK=NXK+1 
-        XK=0.5*(XKL+XKU) 
-        FXKV=FXK(XK) 
-        IF(FXKV.GT.FXKR) THEN 
-          XKU=XK 
-          FXKU=FXKV 
-        ELSE 
-          XKL=XK 
-          FXKL=FXKV 
-        ENDIF 
-        IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110 
-        XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL) 
-      ENDIF 
-      PAK=0.5*ECM*XK 
-C...Photon polar and azimuthal angle. 
-      PME=2.*(UYMASS(11)/ECM)**2 
-  120 CTHM=PME*(2./PME)**RLY(0) 
-      IF(1.-(XK**2*CTHM*(1.-0.5*CTHM)+2.*(1.-XK)*PME/MAX(PME, 
-     &CTHM*(1.-0.5*CTHM)))/(1.+(1.-XK)**2).LT.RLY(0)) GOTO 120 
-      CTHE=1.-CTHM 
-      IF(RLY(0).GT.0.5) CTHE=-CTHE 
-      STHE=SQRT(MAX(0.,(CTHM-PME)*(2.-CTHM))) 
-      THEK=UYANGL(CTHE,STHE) 
-      PHIK=PARU(2)*RLY(0) 
-C...Rotation angle for hadronic system. 
-      SGN=1. 
-      IF(0.5*(2.-XK*(1.-CTHE))**2/((2.-XK)**2+(XK*CTHE)**2).GT. 
-     &RLY(0)) SGN=-1. 
-      ALPK=ASIN(SGN*STHE*(XK-SGN*(2.*SQRT(1.-XK)-2.+XK)*CTHE)/ 
-     &(2.-XK*(1.-SGN*CTHE))) 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYXKFL(KFL,ECM,ECMC,KFLC) 
-C...Purpose: to select flavour for produced qqbar pair. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYDAT1/,/LYDAT2/ 
-C...Calculate maximum weight in QED or QFD case. 
-      IF(MSTJ(102).LE.1) THEN 
-        RFMAX=4./9. 
-      ELSE 
-        POLL=1.-PARJ(131)*PARJ(132) 
-        SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
-        SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
-        SFI=SFW*(1.-(PARJ(123)/ECMC)**2) 
-        VE=4.*PARU(102)-1. 
-        HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131)) 
-        HF1W=SFW*SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131))) 
-        RFMAX=MAX(4./9.*POLL-4./3.*(1.-8.*PARU(102)/3.)*HF1I+ 
-     &  ((1.-8.*PARU(102)/3.)**2+1.)*HF1W,1./9.*POLL+2./3.* 
-     &  (-1.+4.*PARU(102)/3.)*HF1I+((-1.+4.*PARU(102)/3.)**2+1.)*HF1W) 
-      ENDIF 
-C...Choose flavour. Gives charge and velocity. 
-      NTRY=0 
-  100 NTRY=NTRY+1 
-      IF(NTRY.GT.100) THEN 
-        CALL LYERRM(14,'(LYXKFL:) caught in an infinite loop') 
-        KFLC=0 
-        RETURN 
-      ENDIF 
-      KFLC=KFL 
-      IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*RLY(0)) 
-      MSTJ(93)=1 
-      PMQ=UYMASS(KFLC) 
-      IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 100 
-      QF=KCHG(KFLC,1)/3. 
-      VQ=1. 
-      IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*PMQ/ECMC)**2)) 
-C...Calculate weight in QED or QFD case. 
-      IF(MSTJ(102).LE.1) THEN 
-        RF=QF**2 
-        RFV=0.5*VQ*(3.-VQ**2)*QF**2 
-      ELSE 
-        VF=SIGN(1.,QF)-4.*QF*PARU(102) 
-        RF=QF**2*POLL-2.*QF*VF*HF1I+(VF**2+1.)*HF1W 
-        RFV=0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+VF**2*HF1W)+ 
-     &  VQ**3*HF1W 
-        IF(RFV.GT.0.) PARJ(171)=MIN(1.,VQ**3*HF1W/RFV) 
-      ENDIF 
-C...Weighting or new event (radiative photon). Cross-section update. 
-      IF(KFL.LE.0.AND.RF.LT.RLY(0)*RFMAX) GOTO 100 
-      PARJ(158)=PARJ(158)+1. 
-      IF(ECMC.LT.2.*PMQ+PARJ(127).OR.RFV.LT.RLY(0)*RF) KFLC=0 
-      IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100 
-      IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1. 
-      PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158) 
-      PARJ(148)=PARJ(144)*86.8/ECM**2 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYXJET(ECM,NJET,CUT) 
-C...Purpose: to select number of jets in matrix element approach. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYDAT1/ 
-      DIMENSION ZHUT(5) 
-C...Relative three-jet rate in Zhu second order parametrization. 
-      DATA ZHUT/3.0922, 6.2291, 7.4782, 7.8440, 8.2560/ 
-C...Trivial result for two-jets only, including parton shower. 
-      IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN 
-        CUT=0. 
-C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R. 
-      ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN 
-        CF=4./3. 
-        IF(MSTJ(109).EQ.2) CF=1. 
-        IF(MSTJ(111).EQ.0) THEN 
-          Q2=ECM**2 
-          Q2R=ECM**2 
-        ELSEIF(MSTU(111).EQ.0) THEN 
-          PARJ(169)=MIN(1.,PARJ(129)) 
-          Q2=PARJ(169)*ECM**2 
-          PARJ(168)=MIN(1.,MAX(PARJ(128),EXP(-12.*PARU(1)/ 
-     &    ((33.-2.*MSTU(112))*PARU(111))))) 
-          Q2R=PARJ(168)*ECM**2 
-        ELSE 
-          PARJ(169)=MIN(1.,MAX(PARJ(129),(2.*PARU(112)/ECM)**2)) 
-          Q2=PARJ(169)*ECM**2 
-          PARJ(168)=MIN(1.,MAX(PARJ(128),PARU(112)/ECM, 
-     &    (2.*PARU(112)/ECM)**2)) 
-          Q2R=PARJ(168)*ECM**2 
-        ENDIF 
-C...alpha_strong for R and R itself. 
-        ALSPI=(3./4.)*CF*UYALPS(Q2R)/PARU(1) 
-        IF(IABS(MSTJ(101)).EQ.1) THEN 
-          RQCD=1.+ALSPI 
-        ELSEIF(MSTJ(109).EQ.0) THEN 
-          RQCD=1.+ALSPI+(1.986-0.115*MSTU(118))*ALSPI**2 
-          IF(MSTJ(111).EQ.1) RQCD=MAX(1.,RQCD+(33.-2.*MSTU(112))/12.* 
-     &    LOG(PARJ(168))*ALSPI**2) 
-        ELSE 
-          RQCD=1.+ALSPI-(3./32.+0.519*MSTU(118))*(4.*ALSPI/3.)**2 
-        ENDIF 
-C...alpha_strong for jet rate. Initial value for y cut. 
-        ALSPI=(3./4.)*CF*UYALPS(Q2)/PARU(1) 
-        CUT=MAX(0.001,PARJ(125),(PARJ(126)/ECM)**2) 
-        IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0)) 
-     &  CUT=MAX(CUT,EXP(-SQRT(0.75/ALSPI))/2.) 
-        IF(MSTJ(110).EQ.2) CUT=MAX(0.01,MIN(0.05,CUT)) 
-C...Parametrization of first order three-jet cross-section. 
-  100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25) THEN 
-          PARJ(152)=0. 
-        ELSE 
-          PARJ(152)=(2.*ALSPI/3.)*((3.-6.*CUT+2.*LOG(CUT))* 
-     &    LOG(CUT/(1.-2.*CUT))+(2.5+1.5*CUT-6.571)*(1.-3.*CUT)+ 
-     &    5.833*(1.-3.*CUT)**2-3.894*(1.-3.*CUT)**3+ 
-     &    1.342*(1.-3.*CUT)**4)/RQCD 
-          IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2)) 
-     &    PARJ(152)=0. 
-        ENDIF 
-C...Parametrization of second order three-jet cross-section. 
-        IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR. 
-     &  CUT.GE.0.25) THEN 
-          PARJ(153)=0. 
-        ELSEIF(MSTJ(110).LE.1) THEN 
-          CT=LOG(1./CUT-2.) 
-          PARJ(153)=ALSPI**2*CT**2*(2.419+0.5989*CT+0.6782*CT**2- 
-     &    0.2661*CT**3+0.01159*CT**4)/RQCD 
-C...Interpolation in second/first order ratio for Zhu parametrization. 
-        ELSEIF(MSTJ(110).EQ.2) THEN 
-          IZA=0 
-          DO 110 IY=1,5 
-          IF(ABS(CUT-0.01*IY).LT.0.0001) IZA=IY 
-  110     CONTINUE 
-          IF(IZA.NE.0) THEN 
-            ZHURAT=ZHUT(IZA) 
-          ELSE 
-            IZ=100.*CUT 
-            ZHURAT=ZHUT(IZ)+(100.*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ)) 
-          ENDIF 
-          PARJ(153)=ALSPI*PARJ(152)*ZHURAT 
-        ENDIF 
-C...Shift in second order three-jet cross-section with optimized Q^2. 
-        IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3. 
-     &  AND.CUT.LT.0.25) PARJ(153)=PARJ(153)+(33.-2.*MSTU(112))/12.* 
-     &  LOG(PARJ(169))*ALSPI*PARJ(152) 
-C...Parametrization of second order four-jet cross-section. 
-        IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125) THEN 
-          PARJ(154)=0. 
-        ELSE 
-          CT=LOG(1./CUT-5.) 
-          IF(CUT.LE.0.018) THEN 
-            XQQGG=6.349-4.330*CT+0.8304*CT**2 
-            IF(MSTJ(109).EQ.2) XQQGG=(4./3.)**2*(3.035-2.091*CT+ 
-     &      0.4059*CT**2) 
-            XQQQQ=1.25*(-0.1080+0.01486*CT+0.009364*CT**2) 
-            IF(MSTJ(109).EQ.2) XQQQQ=8.*XQQQQ 
-          ELSE 
-            XQQGG=-0.09773+0.2959*CT-0.2764*CT**2+0.08832*CT**3 
-            IF(MSTJ(109).EQ.2) XQQGG=(4./3.)**2*(-0.04079+0.1340*CT- 
-     &      0.1326*CT**2+0.04365*CT**3) 
-            XQQQQ=1.25*(0.003661-0.004888*CT-0.001081*CT**2+0.002093* 
-     &      CT**3) 
-            IF(MSTJ(109).EQ.2) XQQQQ=8.*XQQQQ 
-          ENDIF 
-          PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD 
-          PARJ(155)=XQQQQ/(XQQGG+XQQQQ) 
-        ENDIF 
-C...If negative three-jet rate, change y' optimization parameter. 
-        IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0..AND. 
-     &  PARJ(169).LT.0.99) THEN 
-          PARJ(169)=MIN(1.,1.2*PARJ(169)) 
-          Q2=PARJ(169)*ECM**2 
-          ALSPI=(3./4.)*CF*UYALPS(Q2)/PARU(1) 
-          GOTO 100 
-        ENDIF 
-C...If too high cross-section, use harder cuts, or fail. 
-        IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN 
-          IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499.AND.MSTJ(111).EQ.1.AND. 
-     &    PARJ(169).LT.0.99) THEN 
-            PARJ(169)=MIN(1.,1.2*PARJ(169)) 
-            Q2=PARJ(169)*ECM**2 
-            ALSPI=(3./4.)*CF*UYALPS(Q2)/PARU(1) 
-            GOTO 100 
-          ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499) THEN 
-            CALL LYERRM(26, 
-     &      '(LYXJET:) no allowed y cut value for Zhu parametrization') 
-          ENDIF 
-          CUT=0.26*(4.*CUT)**(PARJ(152)+PARJ(153)+PARJ(154))**(-1./3.) 
-          IF(MSTJ(110).EQ.2) CUT=MAX(0.01,MIN(0.05,CUT)) 
-          GOTO 100 
-        ENDIF 
-C...Scalar gluon (first order only). 
-      ELSE 
-        ALSPI=UYALPS(ECM**2)/PARU(1) 
-        CUT=MAX(0.001,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3./ALSPI)) 
-        PARJ(152)=0. 
-        IF(CUT.LT.0.25) PARJ(152)=(ALSPI/3.)*((1.-2.*CUT)* 
-     &  LOG((1.-2.*CUT)/CUT)+0.5*(9.*CUT**2-1.)) 
-        PARJ(153)=0. 
-        PARJ(154)=0. 
-      ENDIF 
-C...Select number of jets. 
-      PARJ(150)=CUT 
-      IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN 
-        NJET=2 
-      ELSEIF(MSTJ(101).LE.0) THEN 
-        NJET=MIN(4,2-MSTJ(101)) 
-      ELSE 
-        RNJ=RLY(0) 
-        NJET=2 
-        IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3 
-        IF(PARJ(154).GT.RNJ) NJET=4 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYX3JT(NJET,CUT,KFL,ECM,X1,X2) 
-C...Purpose: to select the kinematical variables of three-jet events. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYDAT1/ 
-      DIMENSION ZHUP(5,12) 
-C...Coefficients of Zhu second order parametrization. 
-      DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/ 
-     &    18.29,    89.56,    4.541,   -52.09,   -109.8,    24.90, 
-     &    11.63,    3.683,    17.50, 0.002440,   -1.362,  -0.3537, 
-     &    11.42,    6.299,   -22.55,   -8.915,    59.25,   -5.855, 
-     &   -32.85,   -1.054,   -16.90, 0.006489,  -0.8156,  0.01095, 
-     &    7.847,   -3.964,   -35.83,    1.178,    29.39,   0.2806, 
-     &    47.82,   -12.36,   -56.72,  0.04054,  -0.4365,   0.6062, 
-     &    5.441,   -56.89,   -50.27,    15.13,    114.3,   -18.19, 
-     &    97.05,   -1.890,   -139.9,  0.08153,  -0.4984,   0.9439, 
-     &   -17.65,    51.44,   -58.32,    70.95,   -255.7,   -78.99, 
-     &    476.9,    29.65,   -239.3,   0.4745,   -1.174,    6.081/ 
-C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick). 
-      DILOG(X)=X+X**2/4.+X**3/9.+X**4/16.+X**5/25.+X**6/36.+X**7/49. 
-C...Event type. Mass effect factors and other common constants. 
-      MSTJ(120)=2 
-      MSTJ(121)=0 
-      PMQ=UYMASS(KFL) 
-      QME=(2.*PMQ/ECM)**2 
-      IF(MSTJ(109).NE.1) THEN 
-        CUTL=LOG(CUT) 
-        CUTD=LOG(1./CUT-2.) 
-        IF(MSTJ(109).EQ.0) THEN 
-          CF=4./3. 
-          CN=3. 
-          TR=2. 
-          WTMX=MIN(20.,37.-6.*CUTD) 
-          IF(MSTJ(110).EQ.2) WTMX=2.*(7.5+80.*CUT) 
-        ELSE 
-          CF=1. 
-          CN=0. 
-          TR=12. 
-          WTMX=0. 
-        ENDIF 
-C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight. 
-        ALS2PI=PARU(118)/PARU(2) 
-        WTOPT=0. 
-        IF(MSTJ(111).EQ.1) WTOPT=(33.-2.*MSTU(112))/6.*LOG(PARJ(169))* 
-     &  ALS2PI 
-        WTMAX=MAX(0.,1.+WTOPT+ALS2PI*WTMX) 
-C...Choose three-jet events in allowed region. 
-  100   NJET=3 
-  110   Y13L=CUTL+CUTD*RLY(0) 
-        Y23L=CUTL+CUTD*RLY(0) 
-        Y13=EXP(Y13L) 
-        Y23=EXP(Y23L) 
-        Y12=1.-Y13-Y23 
-        IF(Y12.LE.CUT) GOTO 110 
-        IF(Y13**2+Y23**2+2.*Y12.LE.2.*RLY(0)) GOTO 110 
-C...Second order corrections. 
-        IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN 
-          Y12L=LOG(Y12) 
-          Y13M=LOG(1.-Y13) 
-          Y23M=LOG(1.-Y23) 
-          Y12M=LOG(1.-Y12) 
-          IF(Y13.LE.0.5) Y13I=DILOG(Y13) 
-          IF(Y13.GE.0.5) Y13I=1.644934-Y13L*Y13M-DILOG(1.-Y13) 
-          IF(Y23.LE.0.5) Y23I=DILOG(Y23) 
-          IF(Y23.GE.0.5) Y23I=1.644934-Y23L*Y23M-DILOG(1.-Y23) 
-          IF(Y12.LE.0.5) Y12I=DILOG(Y12) 
-          IF(Y12.GE.0.5) Y12I=1.644934-Y12L*Y12M-DILOG(1.-Y12) 
-          WT1=(Y13**2+Y23**2+2.*Y12)/(Y13*Y23) 
-          WT2=CF*(-2.*(CUTL-Y12L)**2-3.*CUTL-1.+3.289868+ 
-     &    2.*(2.*CUTL-Y12L)*CUT/Y12)+ 
-     &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-11.*CUTL/6.+ 
-     &    67./18.+1.644934-(2.*CUTL-Y12L)*CUT/Y12+(2.*CUTL-Y13L)* 
-     &    CUT/Y13+(2.*CUTL-Y23L)*CUT/Y23)+ 
-     &    TR*(2.*CUTL/3.-10./9.)+ 
-     &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+ 
-     &    Y13L*(4.*Y12**2+2.*Y12*Y13+4.*Y12*Y23+Y13*Y23)/(Y12+Y23)**2+ 
-     &    Y23L*(4.*Y12**2+2.*Y12*Y23+4.*Y12*Y13+Y13*Y23)/(Y12+Y13)**2)/ 
-     &    WT1+ 
-     &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+ 
-     &    (CN-2.*CF)*((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L* 
-     &    Y23M+1.644934-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)* 
-     &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934-Y12I-Y13I)/ 
-     &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))- 
-     &    2.*Y12L*Y12**2/(Y13+Y23)**2-4.*Y12L*Y12/(Y13+Y23))/WT1- 
-     &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934-Y13I-Y23I) 
-          IF(1.+WTOPT+ALS2PI*WT2.LE.0.) MSTJ(121)=1 
-          IF(1.+WTOPT+ALS2PI*WT2.LE.WTMAX*RLY(0)) GOTO 110 
-          PARJ(156)=(WTOPT+ALS2PI*WT2)/(1.+WTOPT+ALS2PI*WT2) 
-        ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN 
-C...Second order corrections; Zhu parametrization of ERT. 
-          ZX=(Y23-Y13)**2 
-          ZY=1.-Y12 
-          IZA=0 
-          DO 120 IY=1,5 
-          IF(ABS(CUT-0.01*IY).LT.0.0001) IZA=IY 
-  120     CONTINUE 
-          IF(IZA.NE.0) THEN 
-            IZ=IZA 
-            WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
-     &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
-     &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
-     &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
-          ELSE 
-            IZ=100.*CUT 
-            WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
-     &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
-     &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
-     &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
-            IZ=IZ+1 
-            WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
-     &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
-     &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
-     &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
-            WT2=WTL+(WTU-WTL)*(100.*CUT+1.-IZ) 
-          ENDIF 
-          IF(1.+WTOPT+2.*ALS2PI*WT2.LE.0.) MSTJ(121)=1 
-          IF(1.+WTOPT+2.*ALS2PI*WT2.LE.WTMAX*RLY(0)) GOTO 110 
-          PARJ(156)=(WTOPT+2.*ALS2PI*WT2)/(1.+WTOPT+2.*ALS2PI*WT2) 
-        ENDIF 
-C...Impose mass cuts (gives two jets). For fixed jet number new try. 
-        X1=1.-Y23 
-        X2=1.-Y13 
-        X3=1.-Y12 
-        IF(4.*Y23*Y13*Y12/X3**2.LE.QME) NJET=2 
-        IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+ 
-     &  0.5*QME**2+(0.5*QME+0.25*QME**2)*((1.-X2)/(1.-X1)+ 
-     &  (1.-X1)/(1.-X2)).GT.(X1**2+X2**2)*RLY(0)) NJET=2 
-        IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100 
-C...Scalar gluon model (first order only, no mass effects). 
-      ELSE 
-  130   NJET=3 
-  140   X3=SQRT(4.*CUT**2+RLY(0)*((1.-CUT)**2-4.*CUT**2)) 
-        IF(LOG((X3-CUT)/CUT).LE.RLY(0)*LOG((1.-2.*CUT)/CUT)) GOTO 140 
-        YD=SIGN(2.*CUT*((X3-CUT)/CUT)**RLY(0)-X3,RLY(0)-0.5) 
-        X1=1.-0.5*(X3+YD) 
-        X2=1.-0.5*(X3-YD) 
-        IF(4.*(1.-X1)*(1.-X2)*(1.-X3)/X3**2.LE.QME) NJET=2 
-        IF(MSTJ(102).GE.2) THEN 
-          IF(X3**2-2.*(1.+X3)*(1.-X1)*(1.-X2)*PARJ(171).LT. 
-     &    X3**2*RLY(0)) NJET=2 
-        ENDIF 
-        IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130 
-      ENDIF 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14) 
-C...Purpose: to select the kinematical variables of four-jet events. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYDAT1/ 
-      DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4) 
-C...Common constants. Colour factors for QCD and Abelian gluon theory. 
-      PMQ=UYMASS(KFL) 
-      QME=(2.*PMQ/ECM)**2 
-      CT=LOG(1./CUT-5.) 
-      IF(MSTJ(109).EQ.0) THEN 
-        CF=4./3. 
-        CN=3. 
-        TR=2.5 
-      ELSE 
-        CF=1. 
-        CN=0. 
-        TR=15. 
-      ENDIF 
-C...Choice of process (qqbargg or qqbarqqbar). 
-  100 NJET=4 
-      IT=1 
-      IF(PARJ(155).GT.RLY(0)) IT=2 
-      IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2 
-      IF(IT.EQ.1) WTMX=0.7/CUT**2 
-      IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6/CUT**2 
-      IF(IT.EQ.2) WTMX=0.1125*CF*TR/CUT**2 
-      ID=1 
-C...Sample the five kinematical variables (for qqgg preweighted in y34). 
-  110 Y134=3.*CUT+(1.-6.*CUT)*RLY(0) 
-      Y234=3.*CUT+(1.-6.*CUT)*RLY(0) 
-      IF(IT.EQ.1) Y34=(1.-5.*CUT)*EXP(-CT*RLY(0)) 
-      IF(IT.EQ.2) Y34=CUT+(1.-6.*CUT)*RLY(0) 
-      IF(Y34.LE.Y134+Y234-1..OR.Y34.GE.Y134*Y234) GOTO 110 
-      VT=RLY(0) 
-      CP=COS(PARU(1)*RLY(0)) 
-      Y14=(Y134-Y34)*VT 
-      Y13=Y134-Y14-Y34 
-      VB=Y34*(1.-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34)) 
-      Y24=0.5*(Y234-Y34)*(1.-4.*SQRT(MAX(0.,VT*(1.-VT)*VB*(1.-VB)))* 
-     &CP-(1.-2.*VT)*(1.-2.*VB)) 
-      Y23=Y234-Y34-Y24 
-      Y12=1.-Y134-Y23-Y24 
-      IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110 
-      Y123=Y12+Y13+Y23 
-      Y124=Y12+Y14+Y24 
-C...Calculate matrix elements for qqgg or qqqq process. 
-      IC=0 
-      WTTOT=0. 
-  120 IC=IC+1 
-      IF(IT.EQ.1) THEN 
-        WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3.*Y12*Y23*Y34+ 
-     &  3.*Y12*Y14*Y34+4.*Y12**2*Y34-Y13*Y23*Y24+2.*Y12*Y23*Y24- 
-     &  Y13*Y14*Y24-2.*Y12*Y13*Y24+2.*Y12**2*Y24+Y14*Y23**2+2.*Y12* 
-     &  Y23**2+Y14**2*Y23+4.*Y12*Y14*Y23+4.*Y12**2*Y23+2.*Y12*Y14**2+ 
-     &  2.*Y12*Y13*Y14+4.*Y12**2*Y14+2.*Y12**2*Y13+2.*Y12**3)/(2.*Y13* 
-     &  Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-Y14*Y23+Y12*Y13)/(Y13* 
-     &  Y134**2)+2.*Y23*(1.-Y13)/(Y13*Y134*Y24)+Y34/(2.*Y13*Y24) 
-        WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2.*Y12* 
-     &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1.+Y34)*Y124/(Y134*Y234*Y14* 
-     &  Y24)-(2.*Y13*Y24+Y14**2+Y13*Y23+2.*Y12*Y13)/(Y13*Y134*Y14)+ 
-     &  Y12*Y123*Y124/(2.*Y13*Y14*Y23*Y24) 
-        WTC(IC)=-(5.*Y12*Y34**2+2.*Y12*Y24*Y34+2.*Y12*Y23*Y34+2.*Y12* 
-     &  Y14*Y34+2.*Y12*Y13*Y34+4.*Y12**2*Y34-Y13*Y24**2+Y14*Y23*Y24+ 
-     &  Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-3.*Y12*Y13*Y24- 
-     &  Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-3.*Y12*Y14*Y23-Y12*Y13*Y23)/ 
-     &  (4.*Y134*Y234*Y34**2)+(3.*Y12*Y34**2-3.*Y13*Y24*Y34+3.*Y12*Y24* 
-     &  Y34+3.*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6.*Y12*Y14*Y34+2.*Y12* 
-     &  Y13*Y34-2.*Y12**2*Y34+Y14*Y23*Y24-3.*Y13*Y23*Y24-2.*Y13*Y14* 
-     &  Y24+4.*Y12*Y14*Y24+2.*Y12*Y13*Y24+3.*Y14*Y23**2+2.*Y14**2*Y23+ 
-     &  2.*Y14**2*Y12+2.*Y12**2*Y14+6.*Y12*Y14*Y23-2.*Y12*Y13**2- 
-     &  2.*Y12**2*Y13)/(4.*Y13*Y134*Y234*Y34) 
-        WTC(IC)=WTC(IC)+(2.*Y12*Y34**2-2.*Y13*Y24*Y34+Y12*Y24*Y34+ 
-     &  4.*Y13*Y23*Y34+4.*Y12*Y14*Y34+2.*Y12*Y13*Y34+2.*Y12**2*Y34- 
-     &  Y13*Y24**2+3.*Y14*Y23*Y24+4.*Y13*Y23*Y24-2.*Y13*Y14*Y24+ 
-     &  4.*Y12*Y14*Y24+2.*Y12*Y13*Y24+2.*Y14*Y23**2+4.*Y13*Y23**2+ 
-     &  2.*Y13*Y14*Y23+2.*Y12*Y14*Y23+4.*Y12*Y13*Y23+2.*Y12*Y14**2+4.* 
-     &  Y12**2*Y13+4.*Y12*Y13*Y14+2.*Y12**2*Y14)/(4.*Y13*Y134*Y24*Y34)- 
-     &  (Y12*Y34**2-2.*Y14*Y24*Y34-2.*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23* 
-     &  Y34+Y12*Y14*Y34+2.*Y12*Y13*Y34-2.*Y14**2*Y24-4.*Y13*Y14*Y24- 
-     &  4.*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-Y12*Y13**2)/ 
-     &  (2.*Y13*Y34*Y134**2)+(Y12*Y34**2-4.*Y14*Y24*Y34-2.*Y13*Y24*Y34- 
-     &  2.*Y14*Y23*Y34-4.*Y13*Y23*Y34-4.*Y12*Y14*Y34-4.*Y12*Y13*Y34- 
-     &  2.*Y13*Y14*Y24+2.*Y13**2*Y24+2.*Y14**2*Y23-2.*Y13*Y14*Y23- 
-     &  Y12*Y14**2-6.*Y12*Y13*Y14-Y12*Y13**2)/(4.*Y34**2*Y134**2) 
-        WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5*CN)*WTB(IC)+CN*WTC(IC))/ 
-     &  8. 
-      ELSE 
-        WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2.*Y12* 
-     &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2* 
-     &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12* 
-     &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14* 
-     &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+ 
-     &  Y13*Y14*Y24+2.*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+ 
-     &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24* 
-     &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24- 
-     &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123) 
-        WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13* 
-     &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23* 
-     &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13* 
-     &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+ 
-     &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+ 
-     &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134* 
-     &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14* 
-     &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124) 
-        WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5*CN)*WTE(IC))/16. 
-      ENDIF 
-C...Permutations of momenta in matrix element. Weighting. 
-  130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN 
-        YSAV=Y13 
-        Y13=Y14 
-        Y14=YSAV 
-        YSAV=Y23 
-        Y23=Y24 
-        Y24=YSAV 
-        YSAV=Y123 
-        Y123=Y124 
-        Y124=YSAV 
-      ENDIF 
-      IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN 
-        YSAV=Y13 
-        Y13=Y23 
-        Y23=YSAV 
-        YSAV=Y14 
-        Y14=Y24 
-        Y24=YSAV 
-        YSAV=Y134 
-        Y134=Y234 
-        Y234=YSAV 
-      ENDIF 
-      IF(IC.LE.3) GOTO 120 
-      IF(ID.EQ.1.AND.WTTOT.LT.RLY(0)*WTMX) GOTO 110 
-      IC=5 
-C...qqgg events: string configuration and event type. 
-      IF(IT.EQ.1) THEN 
-        IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN 
-          PARJ(156)=Y34*(2.*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4.*(WTC(1)+ 
-     &    WTC(2)+WTC(3)+WTC(4)))/(9.*WTTOT) 
-          IF(WTA(2)+WTA(4)+2.*(WTC(2)+WTC(4)).GT.RLY(0)*(WTA(1)+WTA(2)+ 
-     &    WTA(3)+WTA(4)+2.*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2 
-          IF(ID.EQ.2) GOTO 130 
-        ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN 
-          PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8.*WTTOT) 
-          IF(WTA(2)+WTA(4).GT.RLY(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2 
-          IF(ID.EQ.2) GOTO 130 
-        ENDIF 
-        MSTJ(120)=3 
-        IF(MSTJ(109).EQ.0.AND.0.5*Y34*(WTC(1)+WTC(2)+WTC(3)+WTC(4)).GT. 
-     &  RLY(0)*WTTOT) MSTJ(120)=4 
-        KFLN=21 
-C...Mass cuts. Kinematical variables out. 
-        IF(Y12.LE.CUT+QME) NJET=2 
-        IF(NJET.EQ.2) GOTO 150 
-        Q12=0.5*(1.-SQRT(1.-QME/Y12)) 
-        X1=1.-(1.-Q12)*Y234-Q12*Y134 
-        X4=1.-(1.-Q12)*Y134-Q12*Y234 
-        X2=1.-Y124 
-        X12=(1.-Q12)*Y13+Q12*Y23 
-        X14=Y12-0.5*QME 
-        IF(Y134*Y234/((1.-X1)*(1.-X4)).LE.RLY(0)) NJET=2 
-C...qqbarqqbar events: string configuration, choose new flavour. 
-      ELSE 
-        IF(ID.EQ.1) THEN 
-          WTR=RLY(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4)) 
-          IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2 
-          IF(WTR.LT.WTD(3)+WTD(4)) ID=3 
-          IF(WTR.LT.WTD(4)) ID=4 
-          IF(ID.GE.2) GOTO 130 
-        ENDIF 
-        MSTJ(120)=5 
-        PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16.*WTTOT) 
-  140   KFLN=1+INT(5.*RLY(0)) 
-        IF(KFLN.NE.KFL.AND.0.2*PARJ(156).LE.RLY(0)) GOTO 140 
-        IF(KFLN.EQ.KFL.AND.1.-0.8*PARJ(156).LE.RLY(0)) GOTO 140 
-        IF(KFLN.GT.MSTJ(104)) NJET=2 
-        PMQN=UYMASS(KFLN) 
-        QMEN=(2.*PMQN/ECM)**2 
-C...Mass cuts. Kinematical variables out. 
-        IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1*QMEN) NJET=2 
-        IF(NJET.EQ.2) GOTO 150 
-        Q24=0.5*(1.-SQRT(1.-QME/Y24)) 
-        Q13=0.5*(1.-SQRT(1.-QMEN/Y13)) 
-        X1=1.-(1.-Q24)*Y123-Q24*Y134 
-        X4=1.-(1.-Q24)*Y134-Q24*Y123 
-        X2=1.-(1.-Q13)*Y234-Q13*Y124 
-        X12=(1.-Q24)*((1.-Q13)*Y14+Q13*Y34)+Q24*((1.-Q13)*Y12+Q13*Y23) 
-        X14=Y24-0.5*QME 
-        X34=(1.-Q24)*((1.-Q13)*Y23+Q13*Y12)+Q24*((1.-Q13)*Y34+Q13*Y14) 
-        IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE. 
-     &  (PARJ(127)+PMQ+PMQN)**2) NJET=2 
-        IF(Y123*Y134/((1.-X1)*(1.-X4)).LE.RLY(0)) NJET=2 
-      ENDIF 
-  150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI) 
-C...Purpose: to give the angular orientation of events. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Charge. Factors depending on polarization for QED case. 
-      QF=KCHG(KFL,1)/3. 
-      POLL=1.-PARJ(131)*PARJ(132) 
-      POLD=PARJ(132)-PARJ(131) 
-      IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN 
-        HF1=POLL 
-        HF2=0. 
-        HF3=PARJ(133)**2 
-        HF4=0. 
-C...Factors depending on flavour, energy and polarization for QFD case. 
-      ELSE 
-        SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
-        SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
-        SFI=SFW*(1.-(PARJ(123)/ECM)**2) 
-        AE=-1. 
-        VE=4.*PARU(102)-1. 
-        AF=SIGN(1.,QF) 
-        VF=AF-4.*QF*PARU(102) 
-        HF1=QF**2*POLL-2.*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+ 
-     &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2.*VE*AE*POLD) 
-        HF2=-2.*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2.*VF*AF*SFW*SFF**2* 
-     &  (2.*VE*AE*POLL-(VE**2+AE**2)*POLD) 
-        HF3=PARJ(133)**2*(QF**2-2.*QF*VF*SFI*SFF*VE+(VF**2+AF**2)* 
-     &  SFW*SFF**2*(VE**2-AE**2)) 
-        HF4=-PARJ(133)**2*2.*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)* 
-     &  SFF*AE 
-      ENDIF 
-C...Mass factor. Differential cross-sections for two-jet events. 
-      SQ2=SQRT(2.) 
-      QME=0. 
-      IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND. 
-     &MSTJ(109).NE.1) QME=(2.*UYMASS(KFL)/ECM)**2 
-      IF(NJET.EQ.2) THEN 
-        SIGU=4.*SQRT(1.-QME) 
-        SIGL=2.*QME*SQRT(1.-QME) 
-        SIGT=0. 
-        SIGI=0. 
-        SIGA=0. 
-        SIGP=4. 
-C...Kinematical variables. Reduce four-jet event to three-jet one. 
-      ELSE 
-        IF(NJET.EQ.3) THEN 
-          X1=2.*P(NC+1,4)/ECM 
-          X2=2.*P(NC+3,4)/ECM 
-        ELSE 
-          ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+ 
-     &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2) 
-          X1=2.*P(NC+1,4)/ECMR 
-          X2=2.*P(NC+4,4)/ECMR 
-        ENDIF 
-C...Differential cross-sections for three-jet (or reduced four-jet). 
-        XQ=(1.-X1)/(1.-X2) 
-        CT12=(X1*X2-2.*X1-2.*X2+2.+QME)/SQRT((X1**2-QME)*(X2**2-QME)) 
-        ST12=SQRT(1.-CT12**2) 
-        IF(MSTJ(109).NE.1) THEN 
-          SIGU=2.*X1**2+X2**2*(1.+CT12**2)-QME*(3.+CT12**2-X1-X2)- 
-     &    QME*X1/XQ+0.5*QME*((X2**2-QME)*ST12**2-2.*X2)*XQ 
-          SIGL=(X2*ST12)**2-QME*(3.-CT12**2-2.5*(X1+X2)+X1*X2+QME)+ 
-     &    0.5*QME*(X1**2-X1-QME)/XQ+0.5*QME*((X2**2-QME)*CT12**2-X2)*XQ 
-          SIGT=0.5*(X2**2-QME-0.5*QME*(X2**2-QME)/XQ)*ST12**2 
-          SIGI=((1.-0.5*QME*XQ)*(X2**2-QME)*ST12*CT12+QME*(1.-X1-X2+ 
-     &    0.5*X1*X2+0.5*QME)*ST12/CT12)/SQ2 
-          SIGA=X2**2*ST12/SQ2 
-          SIGP=2.*(X1**2-X2**2*CT12) 
-C...Differential cross-sect for scalar gluons (no mass effects). 
-        ELSE 
-          X3=2.-X1-X2 
-          XT=X2*ST12 
-          CT13=SQRT(MAX(0.,1.-(XT/X3)**2)) 
-          SIGU=(1.-PARJ(171))*(X3**2-0.5*XT**2)+ 
-     &    PARJ(171)*(X3**2-0.5*XT**2-4.*(1.-X1)*(1.-X2)**2/X1) 
-          SIGL=(1.-PARJ(171))*0.5*XT**2+ 
-     &    PARJ(171)*0.5*(1.-X1)**2*XT**2 
-          SIGT=(1.-PARJ(171))*0.25*XT**2+ 
-     &    PARJ(171)*0.25*XT**2*(1.-2.*X1) 
-          SIGI=-(0.5/SQ2)*((1.-PARJ(171))*XT*X3*CT13+ 
-     &    PARJ(171)*XT*((1.-2.*X1)*X3*CT13-X1*(X1-X2))) 
-          SIGA=(0.25/SQ2)*XT*(2.*(1.-X1)-X1*X3) 
-          SIGP=X3**2-2.*(1.-X1)*(1.-X2)/X1 
-        ENDIF 
-      ENDIF 
-C...Upper bounds for differential cross-section. 
-      HF1A=ABS(HF1) 
-      HF2A=ABS(HF2) 
-      HF3A=ABS(HF3) 
-      HF4A=ABS(HF4) 
-      SIGMAX=(2.*HF1A+HF3A+HF4A)*ABS(SIGU)+2.*(HF1A+HF3A+HF4A)* 
-     &ABS(SIGL)+2.*(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGT)+2.*SQ2* 
-     &(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGI)+4.*SQ2*HF2A*ABS(SIGA)+ 
-     &2.*HF2A*ABS(SIGP) 
-C...Generate angular orientation according to differential cross-sect. 
-  100 CHI=PARU(2)*RLY(0) 
-      CTHE=2.*RLY(0)-1. 
-      PHI=PARU(2)*RLY(0) 
-      CCHI=COS(CHI) 
-      SCHI=SIN(CHI) 
-      C2CHI=COS(2.*CHI) 
-      S2CHI=SIN(2.*CHI) 
-      THE=ACOS(CTHE) 
-      STHE=SIN(THE) 
-      C2PHI=COS(2.*(PHI-PARJ(134))) 
-      S2PHI=SIN(2.*(PHI-PARJ(134))) 
-      SIG=((1.+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+ 
-     &2.*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+ 
-     &2.*(STHE**2*C2CHI*HF1+((1.+CTHE**2)*C2CHI*C2PHI-2.*CTHE*S2CHI* 
-     &S2PHI)*HF3-((1.+CTHE**2)*C2CHI*S2PHI+2.*CTHE*S2CHI*C2PHI)*HF4)* 
-     &SIGT-2.*SQ2*(2.*STHE*CTHE*CCHI*HF1-2.*STHE*(CTHE*CCHI*C2PHI- 
-     &SCHI*S2PHI)*HF3+2.*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+ 
-     &4.*SQ2*STHE*CCHI*HF2*SIGA+2.*CTHE*HF2*SIGP 
-      IF(SIG.LT.SIGMAX*RLY(0)) GOTO 100 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYONIA(KFL,ECM) 
-C...Purpose: to generate Upsilon and toponium decays into three 
-C...gluons or two gluons and a photon. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Printout. Check input parameters. 
-      IF(MSTU(12).GE.1) CALL LYLIST(0) 
-      IF(KFL.LT.0.OR.KFL.GT.8) THEN 
-        CALL LYERRM(16,'(LYONIA:) called with unknown flavour code') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(ECM.LT.PARJ(127)+2.02*PARF(101)) THEN 
-        CALL LYERRM(16,'(LYONIA:) called with too small CM energy') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Initial e+e- and onium state (optional). 
-      NC=0 
-      IF(MSTJ(115).GE.2) THEN 
-        NC=NC+2 
-        CALL LY1ENT(NC-1,11,0.5*ECM,0.,0.) 
-        K(NC-1,1)=21 
-        CALL LY1ENT(NC,-11,0.5*ECM,PARU(1),0.) 
-        K(NC,1)=21 
-      ENDIF 
-      KFLC=IABS(KFL) 
-      IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN 
-        NC=NC+1 
-        KF=110*KFLC+3 
-        MSTU10=MSTU(10) 
-        MSTU(10)=1 
-        P(NC,5)=ECM 
-        CALL LY1ENT(NC,KF,ECM,0.,0.) 
-        K(NC,1)=21 
-        K(NC,3)=1 
-        MSTU(10)=MSTU10 
-      ENDIF 
-C...Choose x1 and x2 according to matrix element. 
-      NTRY=0 
-  100 X1=RLY(0) 
-      X2=RLY(0) 
-      X3=2.-X1-X2 
-      IF(X3.GE.1..OR.((1.-X1)/(X2*X3))**2+((1.-X2)/(X1*X3))**2+ 
-     &((1.-X3)/(X1*X2))**2.LE.2.*RLY(0)) GOTO 100 
-      NTRY=NTRY+1 
-      NJET=3 
-      IF(MSTJ(101).LE.4) CALL LY3ENT(NC+1,21,21,21,ECM,X1,X3) 
-      IF(MSTJ(101).GE.5) CALL LY3ENT(-(NC+1),21,21,21,ECM,X1,X3) 
-C...Photon-gluon-gluon events. Small system modifications. Jet origin. 
-      MSTU(111)=MSTJ(108) 
-      IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1)) 
-     &MSTU(111)=1 
-      PARU(112)=PARJ(121) 
-      IF(MSTU(111).EQ.2) PARU(112)=PARJ(122) 
-      QF=0. 
-      IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3. 
-      RGAM=7.2*QF**2*PARU(101)/UYALPS(ECM**2) 
-      MK=0 
-      ECMC=ECM 
-      IF(RLY(0).GT.RGAM/(1.+RGAM)) THEN 
-        IF(1.-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125))) 
-     &  NJET=2 
-        IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL LY2ENT(NC+1,21,21,ECM) 
-        IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL LY2ENT(-(NC+1),21,21,ECM) 
-      ELSE 
-        MK=1 
-        ECMC=SQRT(1.-X1)*ECM 
-        IF(ECMC.LT.2.*PARJ(127)) GOTO 100 
-        K(NC+1,1)=1 
-        K(NC+1,2)=22 
-        K(NC+1,4)=0 
-        K(NC+1,5)=0 
-        IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3) 
-        IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3) 
-        IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2) 
-        IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2) 
-        NJET=2 
-        IF(ECMC.LT.4.*PARJ(127)) THEN 
-          MSTU10=MSTU(10) 
-          MSTU(10)=1 
-          P(NC+2,5)=ECMC 
-          CALL LY1ENT(NC+2,83,0.5*(X2+X3)*ECM,PARU(1),0.) 
-          MSTU(10)=MSTU10 
-          NJET=0 
-        ENDIF 
-      ENDIF 
-      DO 110 IP=NC+1,N 
-      K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1) 
-  110 CONTINUE 
-C...Differential cross-sections. Upper limit for cross-section. 
-      IF(MSTJ(106).EQ.1) THEN 
-        SQ2=SQRT(2.) 
-        HF1=1.-PARJ(131)*PARJ(132) 
-        HF3=PARJ(133)**2 
-        CT13=(X1*X3-2.*X1-2.*X3+2.)/(X1*X3) 
-        ST13=SQRT(1.-CT13**2) 
-        SIGL=0.5*X3**2*((1.-X2)**2+(1.-X3)**2)*ST13**2 
-        SIGU=(X1*(1.-X1))**2+(X2*(1.-X2))**2+(X3*(1.-X3))**2-SIGL 
-        SIGT=0.5*SIGL 
-        SIGI=(SIGL*CT13/ST13+0.5*X1*X3*(1.-X2)**2*ST13)/SQ2 
-        SIGMAX=(2.*HF1+HF3)*ABS(SIGU)+2.*(HF1+HF3)*ABS(SIGL)+2.*(HF1+ 
-     &  2.*HF3)*ABS(SIGT)+2.*SQ2*(HF1+2.*HF3)*ABS(SIGI) 
-C...Angular orientation of event. 
-  120   CHI=PARU(2)*RLY(0) 
-        CTHE=2.*RLY(0)-1. 
-        PHI=PARU(2)*RLY(0) 
-        CCHI=COS(CHI) 
-        SCHI=SIN(CHI) 
-        C2CHI=COS(2.*CHI) 
-        S2CHI=SIN(2.*CHI) 
-        THE=ACOS(CTHE) 
-        STHE=SIN(THE) 
-        C2PHI=COS(2.*(PHI-PARJ(134))) 
-        S2PHI=SIN(2.*(PHI-PARJ(134))) 
-        SIG=((1.+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2.*(STHE**2*HF1- 
-     &  STHE**2*C2PHI*HF3)*SIGL+2.*(STHE**2*C2CHI*HF1+((1.+CTHE**2)* 
-     &  C2CHI*C2PHI-2.*CTHE*S2CHI*S2PHI)*HF3)*SIGT-2.*SQ2*(2.*STHE*CTHE* 
-     &  CCHI*HF1-2.*STHE*(CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI 
-        IF(SIG.LT.SIGMAX*RLY(0)) GOTO 120 
-        CALL LUDBRB(NC+1,N,0.,CHI,0D0,0D0,0D0) 
-        CALL LUDBRB(NC+1,N,THE,PHI,0D0,0D0,0D0) 
-      ENDIF 
-C...Generate parton shower. Rearrange along strings and check. 
-      IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN 
-        CALL LYSHOW(NC+MK+1,-NJET,ECMC) 
-        MSTJ14=MSTJ(14) 
-        IF(MSTJ(105).EQ.-1) MSTJ(14)=-1 
-        IF(MSTJ(105).GE.0) MSTU(28)=0 
-        CALL LYPREP(0) 
-        MSTJ(14)=MSTJ14 
-        IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100 
-      ENDIF 
-C...Generate fragmentation. Information for LYTABU: 
-      IF(MSTJ(105).EQ.1) CALL LYEXEC 
-      MSTU(161)=110*KFLC+3 
-      MSTU(162)=0 
-      RETURN 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYHEPC(MCONV) 
-C...Purpose: to convert JETSET event record contents to or from 
-C...the standard event record commonblock. 
-C...Note that HEPEVT is in double precision according to LEP 2 standard.
-C...W. H. Bell --- Changed HEPEVT common block to match EvtGen.
-      PARAMETER (NMXHEP=4000) 
-      COMMON/XHEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), 
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) 
-      REAL*8 PHEP,VHEP
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /XHEPEVT/ 
-      SAVE /LYJETS/,/LYDAT1/,/LYDAT2/ 
-C...Conversion from JETSET to standard, the easy part. 
-      IF(MCONV.EQ.1) THEN 
-        NEVHEP=0 
-        IF(N.GT.NMXHEP) CALL LYERRM(8, 
-     &  '(LYHEPC:) no more space in /HEPEVT/') 
-        NHEP=MIN(N,NMXHEP) 
-        DO 140 I=1,NHEP 
-        ISTHEP(I)=0 
-        IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1 
-        IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2 
-        IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3 
-        IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1) 
-        IDHEP(I)=K(I,2) 
-        JMOHEP(1,I)=K(I,3) 
-        JMOHEP(2,I)=0 
-        IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN 
-          JDAHEP(1,I)=K(I,4) 
-          JDAHEP(2,I)=K(I,5) 
-        ELSE 
-          JDAHEP(1,I)=0 
-          JDAHEP(2,I)=0 
-        ENDIF 
-        DO 100 J=1,5 
-        PHEP(J,I)=P(I,J) 
-  100   CONTINUE 
-        DO 110 J=1,4 
-        VHEP(J,I)=V(I,J) 
-  110   CONTINUE 
-C...Check if new event (from pileup). 
-        IF(I.EQ.1) THEN 
-          INEW=1 
-        ELSE 
-          IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I 
-        ENDIF 
-C...Fill in missing mother information. 
-        IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN 
-          IMO1=I-2 
-          IF(I.GE.INEW+3.AND.K(I-1,1).EQ.21.AND.K(I-1,3).EQ.0) 
-     &    IMO1=IMO1-1 
-          JMOHEP(1,I)=IMO1 
-          JMOHEP(2,I)=IMO1+1 
-        ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN 
-          I1=K(I,3)-1 
-  120     I1=I1+1 
-          IF(I1.GE.I) CALL LYERRM(8, 
-     &    '(LYHEPC:) translation of inconsistent event history') 
-          IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 120 
-          KC=LYCOMP(K(I1,2)) 
-          IF(I1.LT.I.AND.KC.EQ.0) GOTO 120 
-          IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 120 
-          JMOHEP(2,I)=I1 
-        ELSEIF(K(I,2).EQ.94) THEN 
-          NJET=2 
-          IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3 
-          IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4 
-          JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5)) 
-          IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)= 
-     &    MOD(K(I+1,4)/MSTU(5),MSTU(5)) 
-        ENDIF 
-C...Fill in missing daughter information. 
-        IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN 
-          DO 130 I1=JDAHEP(1,I),JDAHEP(2,I) 
-          I2=MOD(K(I1,4)/MSTU(5),MSTU(5)) 
-          JDAHEP(1,I2)=I 
-  130     CONTINUE 
-        ENDIF 
-        IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 140 
-        I1=JMOHEP(1,I) 
-        IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 140 
-        IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 140 
-        IF(JDAHEP(1,I1).EQ.0) THEN 
-          JDAHEP(1,I1)=I 
-        ELSE 
-          JDAHEP(2,I1)=I 
-        ENDIF 
-  140   CONTINUE 
-        DO 150 I=1,NHEP 
-        IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 150 
-        IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I) 
-  150   CONTINUE 
-C...Conversion from standard to JETSET, the easy part. 
-      ELSE 
-        IF(NHEP.GT.MSTU(4)) CALL LYERRM(8, 
-     &  '(LYHEPC:) no more space in /LYJETS/') 
-        N=MIN(NHEP,MSTU(4)) 
-        NKQ=0 
-        KQSUM=0 
-        DO 180 I=1,N 
-        K(I,1)=0 
-        IF(ISTHEP(I).EQ.1) K(I,1)=1 
-        IF(ISTHEP(I).EQ.2) K(I,1)=11 
-        IF(ISTHEP(I).EQ.3) K(I,1)=21 
-        K(I,2)=IDHEP(I) 
-        K(I,3)=JMOHEP(1,I) 
-        K(I,4)=JDAHEP(1,I) 
-        K(I,5)=JDAHEP(2,I) 
-        DO 160 J=1,5 
-        P(I,J)=PHEP(J,I) 
-  160   CONTINUE 
-        DO 170 J=1,4 
-        V(I,J)=VHEP(J,I) 
-  170   CONTINUE 
-        V(I,5)=0. 
-        IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN 
-          I1=JDAHEP(1,I) 
-          IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))* 
-     &    PHEP(5,I)/PHEP(4,I) 
-        ENDIF 
-C...Fill in missing information on colour connection in jet systems. 
-        IF(ISTHEP(I).EQ.1) THEN 
-          KC=LYCOMP(K(I,2)) 
-          KQ=0 
-          IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-          IF(KQ.NE.0) NKQ=NKQ+1 
-          IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-          IF(KQ.NE.0.AND.KQSUM.NE.0) THEN 
-            K(I,1)=2 
-          ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN 
-            IF(K(I+1,2).EQ.21) K(I,1)=2 
-          ENDIF 
-        ENDIF 
-  180   CONTINUE 
-        IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL LYERRM(8, 
-     &  '(LYHEPC:) input parton configuration not colour singlet') 
-      ENDIF 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYTEST(MTEST) 
-C...Purpose: to provide a simple program (disguised as subroutine) to 
-C...run at installation as a check that the program works as intended. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYJETS/,/LYDAT1/ 
-      DIMENSION PSUM(5),PINI(6),PFIN(6) 
-C...Loop over events to be generated. 
-      IF(MTEST.GE.1) CALL LYTABU(20) 
-      NERR=0 
-      DO 180 IEV=1,600 
-C...Reset parameter values. Switch on some nonstandard features. 
-      MSTJ(1)=1 
-      MSTJ(3)=0 
-      MSTJ(11)=1 
-      MSTJ(42)=2 
-      MSTJ(43)=4 
-      MSTJ(44)=2 
-      PARJ(17)=0.1 
-      PARJ(22)=1.5 
-      PARJ(43)=1. 
-      PARJ(54)=-0.05 
-      MSTJ(101)=5 
-      MSTJ(104)=5 
-      MSTJ(105)=0 
-      MSTJ(107)=1 
-      IF(IEV.EQ.301.OR.IEV.EQ.351.OR.IEV.EQ.401) MSTJ(116)=3 
-C...Ten events each for some single jets configurations. 
-      IF(IEV.LE.50) THEN 
-        ITY=(IEV+9)/10 
-        MSTJ(3)=-1 
-        IF(ITY.EQ.3.OR.ITY.EQ.4) MSTJ(11)=2 
-        IF(ITY.EQ.1) CALL LY1ENT(1,1,15.,0.,0.) 
-        IF(ITY.EQ.2) CALL LY1ENT(1,3101,15.,0.,0.) 
-        IF(ITY.EQ.3) CALL LY1ENT(1,-2203,15.,0.,0.) 
-        IF(ITY.EQ.4) CALL LY1ENT(1,-4,30.,0.,0.) 
-        IF(ITY.EQ.5) CALL LY1ENT(1,21,15.,0.,0.) 
-C...Ten events each for some simple jet systems; string fragmentation. 
-      ELSEIF(IEV.LE.130) THEN 
-        ITY=(IEV-41)/10 
-        IF(ITY.EQ.1) CALL LY2ENT(1,1,-1,40.) 
-        IF(ITY.EQ.2) CALL LY2ENT(1,4,-4,30.) 
-        IF(ITY.EQ.3) CALL LY2ENT(1,2,2103,100.) 
-        IF(ITY.EQ.4) CALL LY2ENT(1,21,21,40.) 
-        IF(ITY.EQ.5) CALL LY3ENT(1,2101,21,-3203,30.,0.6,0.8) 
-        IF(ITY.EQ.6) CALL LY3ENT(1,5,21,-5,40.,0.9,0.8) 
-        IF(ITY.EQ.7) CALL LY3ENT(1,21,21,21,60.,0.7,0.5) 
-        IF(ITY.EQ.8) CALL LY4ENT(1,2,21,21,-2,40.,0.4,0.64,0.6,0.12,0.2) 
-C...Seventy events with independent fragmentation and momentum cons. 
-      ELSEIF(IEV.LE.200) THEN 
-        ITY=1+(IEV-131)/16 
-        MSTJ(2)=1+MOD(IEV-131,4) 
-        MSTJ(3)=1+MOD((IEV-131)/4,4) 
-        IF(ITY.EQ.1) CALL LY2ENT(1,4,-5,40.) 
-        IF(ITY.EQ.2) CALL LY3ENT(1,3,21,-3,40.,0.9,0.4) 
-        IF(ITY.EQ.3) CALL LY4ENT(1,2,21,21,-2,40.,0.4,0.64,0.6,0.12,0.2) 
-        IF(ITY.GE.4) CALL LY4ENT(1,2,-3,3,-2,40.,0.4,0.64,0.6,0.12,0.2) 
-C...A hundred events with random jets (check invariant mass). 
-      ELSEIF(IEV.LE.300) THEN 
-  100   DO 110 J=1,5 
-        PSUM(J)=0. 
-  110   CONTINUE 
-        NJET=2.+6.*RLY(0) 
-        DO 130 I=1,NJET 
-        KFL=21 
-        IF(I.EQ.1) KFL=INT(1.+4.*RLY(0)) 
-        IF(I.EQ.NJET) KFL=-INT(1.+4.*RLY(0)) 
-        EJET=5.+20.*RLY(0) 
-        THETA=ACOS(2.*RLY(0)-1.) 
-        PHI=6.2832*RLY(0) 
-        IF(I.LT.NJET) CALL LY1ENT(-I,KFL,EJET,THETA,PHI) 
-        IF(I.EQ.NJET) CALL LY1ENT(I,KFL,EJET,THETA,PHI) 
-        IF(I.EQ.1.OR.I.EQ.NJET) MSTJ(93)=1 
-        IF(I.EQ.1.OR.I.EQ.NJET) PSUM(5)=PSUM(5)+UYMASS(KFL) 
-        DO 120 J=1,4 
-        PSUM(J)=PSUM(J)+P(I,J) 
-  120   CONTINUE 
-  130   CONTINUE 
-        IF(PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2.LT. 
-     &  (PSUM(5)+PARJ(32))**2) GOTO 100 
-C...Fifty e+e- continuum events with matrix elements. 
-      ELSEIF(IEV.LE.350) THEN 
-        MSTJ(101)=2 
-        CALL LYEEVT(0,40.) 
-C...Fifty e+e- continuum event with varying shower options. 
-      ELSEIF(IEV.LE.400) THEN 
-        MSTJ(42)=1+MOD(IEV,2) 
-        MSTJ(43)=1+MOD(IEV/2,4) 
-        MSTJ(44)=MOD(IEV/8,3) 
-        CALL LYEEVT(0,90.) 
-C...Fifty e+e- continuum events with coherent shower, including top. 
-      ELSEIF(IEV.LE.450) THEN 
-        MSTJ(104)=6 
-        CALL LYEEVT(0,500.) 
-C...Fifty Upsilon decays to ggg or gammagg with coherent shower. 
-      ELSEIF(IEV.LE.500) THEN 
-        CALL LYONIA(5,9.46) 
-C...One decay each for some heavy mesons. 
-      ELSEIF(IEV.LE.560) THEN 
-        ITY=IEV-501 
-        KFLS=2*(ITY/20)+1 
-        KFLB=8-MOD(ITY/5,4) 
-        KFLC=KFLB-MOD(ITY,5) 
-        CALL LY1ENT(1,100*KFLB+10*KFLC+KFLS,0.,0.,0.) 
-C...One decay each for some heavy baryons. 
-      ELSEIF(IEV.LE.600) THEN 
-        ITY=IEV-561 
-        KFLS=2*(ITY/20)+2 
-        KFLA=8-MOD(ITY/5,4) 
-        KFLB=KFLA-MOD(ITY,5) 
-        KFLC=MAX(1,KFLB-1) 
-        CALL LY1ENT(1,1000*KFLA+100*KFLB+10*KFLC+KFLS,0.,0.,0.) 
-      ENDIF 
-C...Generate event. Find total momentum, energy and charge. 
-      DO 140 J=1,4 
-      PINI(J)=PLY(0,J) 
-  140 CONTINUE 
-      PINI(6)=PLY(0,6) 
-      CALL LYEXEC 
-      DO 150 J=1,4 
-      PFIN(J)=PLY(0,J) 
-  150 CONTINUE 
-      PFIN(6)=PLY(0,6) 
-C...Check conservation of energy, momentum and charge; 
-C...usually exact, but only approximate for single jets. 
-      MERR=0 
-      IF(IEV.LE.50) THEN 
-        IF((PFIN(1)-PINI(1))**2+(PFIN(2)-PINI(2))**2.GE.4.) MERR=MERR+1 
-        EPZREM=PINI(4)+PINI(3)-PFIN(4)-PFIN(3) 
-        IF(EPZREM.LT.0..OR.EPZREM.GT.2.*PARJ(31)) MERR=MERR+1 
-        IF(ABS(PFIN(6)-PINI(6)).GT.2.1) MERR=MERR+1 
-      ELSE 
-        DO 160 J=1,4 
-        IF(ABS(PFIN(J)-PINI(J)).GT.0.0001*PINI(4)) MERR=MERR+1 
-  160   CONTINUE 
-        IF(ABS(PFIN(6)-PINI(6)).GT.0.1) MERR=MERR+1 
-      ENDIF 
-      IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6), 
-     &(PFIN(J),J=1,4),PFIN(6) 
-C...Check that all KF codes are known ones, and that partons/particles 
-C...satisfy energy-momentum-mass relation. Store particle statistics. 
-      DO 170 I=1,N 
-      IF(K(I,1).GT.20) GOTO 170 
-      IF(LYCOMP(K(I,2)).EQ.0) THEN 
-        WRITE(MSTU(11),5100) I 
-        MERR=MERR+1 
-      ENDIF 
-      PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2 
-      IF(ABS(PD).GT.MAX(0.1,0.001*P(I,4)**2).OR.P(I,4).LT.0.) THEN 
-        WRITE(MSTU(11),5200) I 
-        MERR=MERR+1 
-      ENDIF 
-  170 CONTINUE 
-      IF(MTEST.GE.1) CALL LYTABU(21) 
-C...List all erroneous events and some normal ones. 
-      IF(MERR.NE.0.OR.MSTU(24).NE.0.OR.MSTU(28).NE.0) THEN 
-        CALL LYLIST(2) 
-      ELSEIF(MTEST.GE.1.AND.MOD(IEV-5,100).EQ.0) THEN 
-        CALL LYLIST(1) 
-      ENDIF 
-C...Stop execution if too many errors. 
-      IF(MERR.NE.0) NERR=NERR+1 
-      IF(NERR.GE.10) THEN 
-        WRITE(MSTU(11),5300) IEV 
-        STOP 
-      ENDIF 
-  180 CONTINUE 
-C...Summarize result of run. 
-      IF(MTEST.GE.1) CALL LYTABU(22) 
-      IF(NERR.EQ.0) WRITE(MSTU(11),5400) 
-      IF(NERR.GT.0) WRITE(MSTU(11),5500) NERR 
-C...Reset commonblock variables changed during run. 
-      MSTJ(2)=3 
-      PARJ(17)=0. 
-      PARJ(22)=1. 
-      PARJ(43)=0.5 
-      PARJ(54)=0. 
-      MSTJ(105)=1 
-      MSTJ(107)=0 
-C...Format statements for output. 
- 5000 FORMAT(/' Momentum, energy and/or charge were not conserved ', 
-     &'in following event'/' sum of',9X,'px',11X,'py',11X,'pz',11X, 
-     &'E',8X,'charge'/' before',2X,4(1X,F12.5),1X,F8.2/' after',3X, 
-     &4(1X,F12.5),1X,F8.2) 
- 5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code') 
- 5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ', 
-     &'kinematics') 
- 5300 FORMAT(/5X,'Ten errors experienced by event ',I3/ 
-     &5X,'Something is seriously wrong! Execution stopped now!') 
- 5400 FORMAT(//5X,'End result of LYTEST: no errors detected.') 
- 5500 FORMAT(//5X,'End result of LYTEST:',I2,' errors detected.'/ 
-     &5X,'This should not have happened!') 
-      RETURN 
-      END 
-C********************************************************************* 
-      BLOCK DATA LYDATA 
-C...Purpose: to give default values to parameters and particle and 
-C...decay data. 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LYDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LYDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      COMMON/LYDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      COMMON/LYDATR/MRLU(6),RRLU(100) 
-      SAVE /LYDAT1/,/LYDAT2/,/LYDAT3/,/LYDAT4/,/LYDATR/ 
-C...LUDAT1, containing status codes and most parameters. 
-      DATA MSTU/ 
-     &    0,    0,    0, 4000,10000,  500, 2000,    0,    0,    2, 
-     1    6,    1,    1,    0,    1,    1,    0,    0,    0,    0, 
-     2    2,   10,    0,    0,    1,   10,    0,    0,    0,    0, 
-     3    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     4    2,    2,    1,    4,    2,    1,    1,    0,    0,    0, 
-     5   25,   24,    0,    1,    0,    0,    0,    0,    0,    0, 
-     6    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     7  30*0, 
-     &    1,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     1    1,    5,    3,    5,    0,    0,    0,    0,    0,    0, 
-     2  60*0, 
-     8    7,  410, 1997,   01,   20,  700,    0,    0,    0,    0, 
-     9    0,    0,    0,    0,    0,    0,    0,    0,    0,    0/ 
-      DATA PARU/ 
-     & 3.1415927, 6.2831854, 0.1973, 5.068, 0.3894, 2.568,   4*0., 
-     1 0.001, 0.09, 0.01,  0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     2   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     3   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     4  2.0,  1.0, 0.25,  2.5, 0.05,   0.,   0., 0.0001, 0.,   0., 
-     5  2.5,  1.5,  7.0,  1.0,  0.5,  2.0,  3.2,   0.,   0.,   0., 
-     6  40*0., 
-     & 0.00729735, 0.232, 0.007764, 1.0, 1.16639E-5, 0., 0., 0., 
-     &   0.,   0., 
-     1 0.20, 0.25,  1.0,  4.0,  10.,   0.,   0.,   0.,   0.,   0., 
-     2 -0.693, -1.0, 0.387, 1.0, -0.08, -1.0, 1.0, 1.0, 1.0,   0., 
-     3  1.0, -1.0,  1.0, -1.0,  1.0,   0.,   0.,   0.,   0.,   0., 
-     4  5.0,  1.0,  1.0,   0.,  1.0,  1.0,   0.,   0.,   0.,   0., 
-     5  1.0,   0.,   0.,   0., 1000., 1.0,  1.0,  1.0,  1.0,   0., 
-     6  1.0,  1.0,  1.0,  1.0,  1.0,   0.,   0.,   0.,   0.,   0., 
-     7  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,   0.,   0.,   0., 
-     8  1.0,  1.0,  1.0,  0.0,  0.0,  1.0,  1.0,  0.0,  0.0,   0., 
-     9   0.,   0.,   0.,   0.,  1.0,   0.,   0.,   0.,   0.,   0./ 
-      DATA MSTJ/ 
-     &    1,    3,    0,    0,    0,    0,    0,    0,    0,    0, 
-     1    4,    2,    0,    1,    0,    0,    0,    0,    0,    0, 
-     2    2,    1,    1,    2,    1,    2,    2,    0,    0,    0, 
-     3    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     4    2,    2,    4,    2,    5,    3,    3,    0,    0,    3, 
-     5    0,    3,    0,    0,    0,    0,    0,    0,    0,    0, 
-     6  40*0, 
-     &    5,    2,    7,    5,    1,    1,    0,    2,    0,    2, 
-     1    0,    0,    0,    0,    1,    1,    0,    0,    0,    0, 
-     2  80*0/ 
-      DATA PARJ/ 
-     & 0.10, 0.30, 0.40, 0.05, 0.50, 0.50, 0.50,   0.,   0.,   0., 
-     1 0.50, 0.60, 0.75,   0.,   0.,   0.,   0.,  1.0,  1.0,   0., 
-     2 0.36,  1.0, 0.01,  2.0,  1.0,  0.4,   0.,   0.,   0.,   0., 
-     3 0.10,  1.0,  0.8,  1.5,   0.,  2.0,  0.2,  2.5,  0.6,   0., 
-     4  0.3, 0.58,  0.5,  0.9,  0.5,  1.0,  1.0,  1.0,   0.,   0., 
-     5 0.77,0.77,0.77,-0.05,-0.005,-0.00001,-0.00001,-0.00001,1.0,0., 
-     6  4.5,  0.7,  0., 0.003,  0.5,  0.5,   0.,   0.,   0.,   0., 
-     7  10., 1000., 100., 1000., 0.,  0.7,  10.,   0.,   0.,   0., 
-     8 0.29,  1.0,  1.0,   0.,  10.,  10.,   0.,   0.,   0.,   0., 
-     9 0.02,  1.0,  0.2,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     &   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     1   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     2  1.0, 0.25,91.187,2.489, 0.01, 2.0,  1.0, 0.25,0.002,   0., 
-     3   0.,   0.,   0.,   0., 0.01, 0.99,   0.,   0.,  0.2,   0., 
-     4  60*0./ 
-C...LUDAT2, with particle data and flavour treatment parameters. 
-      DATA (KCHG(I,1),I=   1, 500)/-1,2,-1,2,-1,2,-1,2,2*0,-3,0,-3,0, 
-     &-3,0,-3,6*0,3,9*0,3,2*0,3,0,-1,44*0,2,-1,2,-1,2,3,11*0,3,0,2*3,0, 
-     &3,0,3,0,3,10*0,3,0,2*3,0,3,0,3,0,3,10*0,3,0,2*3,0,3,0,3,0,3,10*0, 
-     &3,0,2*3,0,3,0,3,0,3,10*0,3,0,2*3,0,3,0,3,0,3,10*0,3,0,2*3,0,3,0, 
-     &3,0,3,70*0,3,0,3,28*0,3,2*0,3,8*0,-3,8*0,3,0,-3,0,3,-3,3*0,3,6,0, 
-     &3,5*0,-3,0,3,-3,0,-3,4*0,-3,0,3,6,-3,0,3,-3,0,-3,0,3,6,0,3,5*0, 
-     &-3,0,3,-3,0,-3,114*0/ 
-      DATA (KCHG(I,2),I=   1, 500)/8*1,12*0,2,16*0,2,1,50*0,-1,410*0/ 
-      DATA (KCHG(I,3),I=   1, 500)/8*1,2*0,8*1,5*0,1,9*0,1,2*0,1,0,2*1, 
-     &41*0,1,0,7*1,10*0,10*1,10*0,10*1,10*0,10*1,10*0,10*1,10*0,10*1, 
-     &10*0,10*1,70*0,3*1,22*0,1,5*0,1,0,2*1,6*0,1,0,2*1,6*0,2*1,0,5*1, 
-     &0,6*1,4*0,6*1,4*0,16*1,4*0,6*1,114*0/ 
-      DATA (PMAS(I,1),I=   1, 500)/0.0099,0.0056,0.199,1.35,5.,160., 
-     &2*250.,2*0.,0.00051,0.,0.1057,0.,1.777,0.,250.,5*0.,91.187,80.25, 
-     &80.,6*0.,500.,900.,500.,3*300.,350.,200.,5000.,60*0.,0.1396, 
-     &0.4977,0.4936,1.8693,1.8645,1.9688,5.2787,5.2786,5.47972,6.594, 
-     &0.135,0.5475,0.9578,2.9788,9.4,320.,2*500.,2*0.,0.7669,0.8961, 
-     &0.8916,2.0101,2.0071,2.11,2*5.325,5.5068,6.602,0.7683,0.782, 
-     &1.0194,3.0969,9.4603,320.,2*500.,2*0.,1.232,2*1.29,2*2.424,2.536, 
-     &2*5.73,5.97,7.3,1.232,1.17,1.4,3.46,9.875,320.,2*500.,2*0.,0.983, 
-     &2*1.429,2*2.272,2.5,2*5.68,5.92,7.25,0.9827,1.,1.4,3.4151,9.8598, 
-     &320.,2*500.,2*0.,1.26,2*1.402,2*2.372,2.56,2*5.78,6.02,7.3,1.26, 
-     &1.282,1.42,3.5106,9.8919,320.,2*500.,2*0.,1.318,1.432,1.425, 
-     &2*2.46,2.61,2*5.83,6.07,7.35,1.318,1.275,1.525,3.5562,9.9132, 
-     &320.,2*500.,2*0.,2*0.4977,8*0.,3.686,3*0.,10.0233,70*0.,1.1156, 
-     &5*0.,2.2849,0.,2.473,2.466,6*0.,5.641,0.,2*5.84,6*0.,0.9396, 
-     &0.9383,0.,1.1974,1.1926,1.1894,1.3213,1.3149,0.,2.4525,2.4529, 
-     &2.4527,2*2.55,2.73,4*0.,3*5.8,2*5.96,6.12,4*0.,1.234,1.233,1.232, 
-     &1.231,1.3872,1.3837,1.3828,1.535,1.5318,1.6724,3*2.5,2*2.63,2.8, 
-     &4*0.,3*5.81,2*5.97,6.13,114*0./ 
-      DATA (PMAS(I,2),I=   1, 500)/22*0.,2.489,2.066,88*0.,0.0002, 
-     &0.001,6*0.,0.149,0.0505,0.0498,7*0.,0.151,0.00843,0.0044,7*0., 
-     &0.155,2*0.09,2*0.02,0.,4*0.05,0.155,0.36,0.08,2*0.01,5*0.,0.057, 
-     &2*0.287,7*0.05,0.057,0.,0.25,0.014,6*0.,0.4,2*0.174,7*0.05,0.4, 
-     &0.024,0.06,0.0009,6*0.,0.11,0.109,0.098,2*0.019,5*0.02,0.11, 
-     &0.185,0.076,0.002,146*0.,4*0.12,0.0394,0.036,0.0358,0.0099, 
-     &0.0091,131*0./ 
-      DATA (PMAS(I,3),I=   1, 500)/22*0.,2*20.,88*0.,0.002,0.005,6*0., 
-     &0.4,2*0.2,7*0.,0.4,0.1,0.015,7*0.,0.25,0.005,0.01,2*0.08,0., 
-     &4*0.1,0.25,0.2,0.001,2*0.02,5*0.,0.05,2*0.4,6*0.1,2*0.05,0.,0.35, 
-     &0.05,6*0.,3*0.3,2*0.1,0.03,4*0.1,0.3,0.05,0.02,0.001,6*0.,0.25, 
-     &4*0.12,5*0.05,0.25,0.17,0.2,0.01,146*0.,4*0.14,0.04,2*0.035, 
-     &2*0.05,131*0./ 
-      DATA (PMAS(I,4),I=   1, 500)/12*0.,658650.,0.,0.0914,68*0.,0.1, 
-     &0.387,15*0.,7804.,0.,3709.,0.32,0.1259,0.135,3*0.387,0.15,110*0., 
-     &15500.,26.75,83*0.,78.88,5*0.,0.057,0.,0.025,0.09,6*0.,0.387,0., 
-     &2*0.387,9*0.,44.3,0.,23.95,49.1,86.9,6*0.,0.13,9*0.,0.387,13*0., 
-     &24.60001,130*0./ 
-      DATA PARF/ 
-     &  0.5, 0.25,  0.5, 0.25,   1.,  0.5,   0.,   0.,   0.,   0., 
-     1  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     2  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     3  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     4  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     5  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     6 0.75,  0.5,   0., 0.1667, 0.0833, 0.1667, 0., 0., 0.,   0., 
-     7   0.,   0.,   1., 0.3333, 0.6667, 0.3333, 0., 0., 0.,   0., 
-     8   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     9   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     & 0.325, 0.325, 0.5, 1.6,  5.0,   0.,   0.,   0.,   0.,   0., 
-     1   0., 0.11, 0.16, 0.048, 0.50, 0.45, 0.55, 0.60,  0.,   0., 
-     2  0.2,  0.1,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     3  1870*0./ 
-      DATA ((VCKM(I,J),J=1,4),I=1,4)/ 
-     1  0.95113,  0.04884,  0.00003,  0.00000, 
-     2  0.04884,  0.94940,  0.00176,  0.00000, 
-     3  0.00003,  0.00176,  0.99821,  0.00000, 
-     4  0.00000,  0.00000,  0.00000,  1.00000/ 
-C...LUDAT3, with particle decay parameters and data. 
-      DATA (MDCY(I,1),I=   1, 500)/5*0,3*1,6*0,1,0,1,5*0,3*1,6*0,1,0,1, 
-     &2*0,4*1,42*0,7*1,12*0,1,0,15*1,2*0,18*1,2*0,18*1,2*0,18*1,2*0, 
-     &18*1,2*0,18*1,3*0,1,8*0,1,3*0,1,70*0,1,5*0,1,0,2*1,6*0,1,0,2*1, 
-     &9*0,5*1,0,6*1,4*0,6*1,4*0,16*1,4*0,6*1,114*0/ 
-      DATA (MDCY(I,2),I=   1, 500)/1,9,17,25,33,41,50,60,2*0,70,74,76, 
-     &81,83,124,126,132,2*0,135,144,156,172,192,6*0,209,0,231,254,274, 
-     &292,301,304,305,42*0,314,315,319,328,331,336,338,11*0,358,359, 
-     &361,367,430,491,524,560,596,635,666,668,675,681,682,683,684,685, 
-     &2*0,686,688,691,694,697,699,700,701,702,703,704,708,713,721,724, 
-     &733,734,735,2*0,736,737,742,747,749,751,753,755,757,759,761,762, 
-     &765,769,770,771,772,773,2*0,774,775,777,779,781,783,785,787,789, 
-     &791,793,794,799,804,806,808,809,810,2*0,811,813,815,817,819,821, 
-     &823,825,827,829,831,833,846,850,852,854,855,856,2*0,857,863,873, 
-     &884,892,900,904,912,920,924,928,936,945,951,953,955,956,957,2*0, 
-     &958,966,8*0,968,3*0,979,70*0,993,5*0,997,0,1073,1074,6*0,1075,0, 
-     &1092,1093,9*0,1094,1096,1097,1100,1101,0,1103,1104,1105,1106, 
-     &1107,1108,4*0,1109,1110,1111,1112,1113,1114,4*0,1115,1116,1119, 
-     &1122,1123,1126,1129,1132,1134,1136,1140,1141,1142,1143,1145,1147, 
-     &4*0,1148,1149,1150,1151,1152,1153,114*0/ 
-      DATA (MDCY(I,3),I=   1, 500)/5*8,9,2*10,2*0,4,2,5,2,41,2,6,3,2*0, 
-     &9,12,16,20,17,6*0,22,0,23,20,18,9,3,1,9,42*0,1,4,9,3,5,2,20,11*0, 
-     &1,2,6,63,61,33,2*36,39,31,2,7,6,5*1,2*0,2,3*3,2,5*1,4,5,8,3,9, 
-     &3*1,2*0,1,2*5,7*2,1,3,4,5*1,2*0,1,9*2,1,2*5,2*2,3*1,2*0,11*2,13, 
-     &4,2*2,3*1,2*0,6,10,11,2*8,4,2*8,2*4,8,9,6,2*2,3*1,2*0,8,2,8*0,11, 
-     &3*0,14,70*0,4,5*0,76,0,2*1,6*0,17,0,2*1,9*0,2,1,3,1,2,0,6*1,4*0, 
-     &6*1,4*0,1,2*3,1,3*3,2*2,4,3*1,2*2,1,4*0,6*1,114*0/ 
-      DATA (MDME(I,1),I=   1,2000)/6*1,-1,7*1,-1,7*1,-1,7*1,-1,7*1,-1, 
-     &7*1,-1,1,-1,8*1,2*-1,8*1,2*-1,61*1,-1,2*1,-1,6*1,2*-1,7*1,2*-1, 
-     &3*1,-1,6*1,2*-1,6*1,2*-1,3*1,-1,3*1,-1,3*1,5*-1,3*1,-1,6*1,2*-1, 
-     &3*1,-1,11*1,2*-1,6*1,8*-1,3*1,-1,3*1,-1,3*1,5*-1,3*1,4*-1,6*1, 
-     &2*-1,3*1,-1,5*1,-1,8*1,2*-1,3*1,-1,9*1,-1,3*1,-1,9*1,2*-1,2*1,-1, 
-     &16*1,-1,2*1,3*-1,1665*1/ 
-      DATA (MDME(I,2),I=   1,2000)/75*102,42,6*102,2*42,2*0,7*41,2*0, 
-     &24*41,6*102,45,29*102,8*32,8*0,16*32,4*0,8*32,4*0,32,4*0,8*32, 
-     &14*0,16*32,7*0,8*32,4*0,32,7*0,8*32,4*0,32,5*0,4*32,5*0,3*32,0, 
-     &6*32,3*0,12,2*42,2*11,9*42,2*45,31,2*45,2*33,31,2*45,20*46,7*0, 
-     &24*42,41*0,16*42,46*0,10*42,20*0,2*13,14*42,16*0,48,3*13,16*42, 
-     &16*0,48,3*13,16*42,19*0,48,3*13,2*42,0,2*11,28*42,0,2,4*0,2,8*0, 
-     &12,32,86,87,88,3,0,2*3,0,2*3,0,2*3,0,3,6*0,3,3*0,1,0,3,2*0,2*3, 
-     &3*0,1,4*0,12,3*0,4*32,2*4,86,87,88,33*0,12,32,86,87,88,31*0,12,0, 
-     &32,86,87,88,40*0,12,0,32,86,87,88,95*0,12,0,32,86,87,88,2*0,4*42, 
-     &6*0,12,11*0,4*32,2*4,9*0,14*42,52*0,10*13,2*84,3*42,8*0,48,3*13, 
-     &2*42,2*85,14*0,84,5*0,85,886*0/ 
-      DATA (BRAT(I)  ,I=   1, 439)/75*0.,1.,6*0.,0.179,0.178,0.116, 
-     &0.235,0.005,0.056,0.018,0.023,0.011,2*0.004,0.0067,0.014,2*0.002, 
-     &2*0.001,0.0022,0.054,0.002,0.016,0.005,0.011,0.0101,5*0.006, 
-     &0.002,2*0.001,5*0.002,6*0.,1.,29*0.,0.15394,0.11936,0.15394, 
-     &0.11926,0.15254,3*0.,0.03368,0.06664,0.03368,0.06664,0.03368, 
-     &0.06664,2*0.,0.3214,0.0165,2*0.,0.0165,0.3207,2*0.,0.00001, 
-     &0.00059,6*0.,3*0.1081,3*0.,0.0003,0.048,0.8705,4*0.,0.0002, 
-     &0.0603,0.,0.0199,0.0008,3*0.,0.143,0.111,0.143,0.111,0.143,0.085, 
-     &2*0.,0.03,0.058,0.03,0.058,0.03,0.058,8*0.,0.25,0.01,2*0.,0.01, 
-     &0.25,4*0.,0.24,5*0.,3*0.08,6*0.,0.01,0.08,0.82,5*0.,0.09,11*0., 
-     &0.01,0.08,0.82,5*0.,0.09,9*0.,1.,6*0.,0.01,0.98,0.01,1.,4*0.215, 
-     &2*0.,2*0.07,0.,1.,2*0.08,0.76,0.08,2*0.105,0.04,0.5,0.08,0.14, 
-     &0.01,0.015,0.005,1.,3*0.,1.,4*0.,1.,0.25,0.01,2*0.,0.01,0.25, 
-     &4*0.,0.24,5*0.,3*0.08,0.,1.,2*0.5,0.635,0.212,0.056,0.017,0.048, 
-     &0.032,0.07,0.065,2*0.005,2*0.011,5*0.001,0.07,0.065,2*0.005, 
-     &2*0.011,5*0.001,0.026,0.019,0.066,0.041,0.045,0.076,0.0073, 
-     &2*0.0047,0.026,0.001,0.0006,0.0066,0.005,2*0.003,2*0.0006, 
-     &2*0.001,0.006,0.005,0.012,0.0057,0.067,0.008,0.0022,0.027,0.004, 
-     &0.019,0.012,0.002,0.009,0.0218,0.001,0.022,0.087,0.001,0.0019, 
-     &0.0015,0.0028,0.034,0.027,2*0.002,2*0.004,2*0.002,0.034,0.027/ 
-      DATA (BRAT(I)  ,I= 440, 655)/2*0.002,2*0.004,2*0.002,0.0365, 
-     &0.045,0.073,0.062,3*0.021,0.0061,0.015,0.025,0.0088,0.074,0.0109, 
-     &0.0041,0.002,0.0035,0.0011,0.001,0.0027,2*0.0016,0.0018,0.011, 
-     &0.0063,0.0052,0.018,0.016,0.0034,0.0036,0.0009,0.0006,0.015, 
-     &0.0923,0.018,0.022,0.0077,0.009,0.0075,0.024,0.0085,0.067,0.0511, 
-     &0.017,0.0004,0.0028,0.01,2*0.02,0.03,2*0.005,2*0.02,0.03,2*0.005, 
-     &0.015,0.037,0.028,0.079,0.095,0.052,0.0078,4*0.001,0.028,0.033, 
-     &0.026,0.05,0.01,4*0.005,0.25,0.0952,0.02,0.055,2*0.005,0.008, 
-     &0.012,0.02,0.055,2*0.005,0.008,0.012,0.01,0.03,0.0035,0.011, 
-     &0.0055,0.0042,0.009,0.018,0.015,0.0185,0.0135,0.025,0.0004, 
-     &0.0007,0.0008,0.0014,0.0019,0.0025,0.4291,0.08,0.07,0.02,0.015, 
-     &0.005,0.02,0.055,2*0.005,0.008,0.012,0.02,0.055,2*0.005,0.008, 
-     &0.012,0.01,0.03,0.0035,0.011,0.0055,0.0042,0.009,0.018,0.015, 
-     &0.0185,0.0135,0.025,0.0004,0.0007,0.0008,0.0014,0.0019,0.0025, 
-     &0.4291,0.08,0.07,0.02,0.015,0.005,0.02,0.055,2*0.005,0.008,0.012, 
-     &0.02,0.055,2*0.005,0.008,0.012,0.01,0.03,0.0035,0.011,0.0055, 
-     &0.0042,0.009,0.018,0.015,0.0185,0.0135,0.025,2*0.0002,0.0007, 
-     &2*0.0004,0.0014,0.001,0.0009,0.0025,0.4291,0.08,0.07,0.02,0.015, 
-     &0.005,0.047,0.122,0.006,0.012,0.035,0.012,0.035,0.003,0.007,0.15, 
-     &0.037,0.008,0.002,0.05,0.015,0.003,0.001,0.014,0.042,0.014,0.042/ 
-      DATA (BRAT(I)  ,I= 656, 931)/0.24,0.065,0.012,0.003,0.001,0.002, 
-     &0.001,0.002,0.014,0.003,0.988,0.012,0.389,0.319,0.2367,0.049, 
-     &0.005,0.001,0.0003,0.441,0.206,0.3,0.03,0.022,0.001,5*1.,0.99955, 
-     &0.00045,0.665,0.333,0.002,0.666,0.333,0.001,0.65,0.3,0.05,0.56, 
-     &0.44,5*1.,0.99912,0.00079,0.00005,0.00004,0.888,0.085,0.021, 
-     &2*0.003,0.49,0.344,3*0.043,0.023,0.013,0.001,0.0627,0.0597, 
-     &0.8776,3*0.027,0.015,0.045,0.015,0.045,0.77,0.029,4*1.,0.28,0.14, 
-     &0.313,0.157,0.11,0.28,0.14,0.313,0.157,0.11,0.667,0.333,0.667, 
-     &0.333,2*0.5,0.667,0.333,0.667,0.333,4*0.5,1.,0.333,0.334,0.333, 
-     &4*0.25,6*1.,0.667,0.333,0.667,0.333,0.667,0.333,0.667,0.333, 
-     &2*0.5,0.667,0.333,0.667,0.333,4*0.5,1.,0.52,0.26,0.11,2*0.055, 
-     &0.62,0.31,0.035,2*0.0175,0.007,0.993,0.02,0.98,3*1.,2*0.5,0.667, 
-     &0.333,0.667,0.333,0.667,0.333,0.667,0.333,2*0.5,0.667,0.333, 
-     &0.667,0.333,6*0.5,3*0.12,0.097,0.043,4*0.095,4*0.03,4*0.25,0.273, 
-     &0.727,0.35,0.65,3*1.,2*0.35,0.144,0.105,0.048,0.003,0.333,0.166, 
-     &0.168,0.084,0.087,0.043,0.059,2*0.029,0.002,0.332,0.166,0.168, 
-     &0.084,0.086,0.043,0.059,2*0.029,2*0.002,0.3,0.15,0.16,0.08,0.13, 
-     &0.06,0.08,0.04,0.3,0.15,0.16,0.08,0.13,0.06,0.08,0.04,2*0.3, 
-     &2*0.2,0.3,0.15,0.16,0.08,0.13,0.06,0.08,0.04,0.3,0.15,0.16,0.08, 
-     &0.13,0.06,0.08,0.04,2*0.3,2*0.2,2*0.3,2*0.2,2*0.35,0.144,0.105/ 
-      DATA (BRAT(I)  ,I= 932,2000)/0.024,2*0.012,0.003,0.566,0.283, 
-     &0.069,0.028,0.023,2*0.0115,0.005,0.003,0.356,2*0.178,0.28, 
-     &2*0.004,0.135,0.865,0.22,0.78,3*1.,0.217,0.124,2*0.193,2*0.135, 
-     &0.002,0.001,0.686,0.314,2*0.0083,0.1866,0.324,0.184,0.027,0.001, 
-     &0.093,0.087,0.078,0.0028,3*0.014,0.008,0.024,0.008,0.024,0.425, 
-     &0.02,0.185,0.088,0.043,0.067,0.066,0.641,0.357,2*0.001,0.018, 
-     &2*0.005,0.003,0.002,2*0.006,0.018,2*0.005,0.003,0.002,2*0.006, 
-     &0.0066,0.025,0.016,0.0088,2*0.005,0.0058,0.005,0.0055,4*0.004, 
-     &2*0.002,2*0.004,0.003,0.002,2*0.003,3*0.002,2*0.001,0.002, 
-     &2*0.001,2*0.002,0.0013,0.0018,5*0.001,4*0.003,2*0.005,2*0.002, 
-     &2*0.001,2*0.002,2*0.001,0.2432,0.057,2*0.035,0.15,2*0.075,0.03, 
-     &2*0.015,2*1.,2*0.105,0.04,0.0077,0.02,0.0235,0.0285,0.0435, 
-     &0.0011,0.0022,0.0044,0.4291,0.08,0.07,0.02,0.015,0.005,2*1., 
-     &0.999,0.001,1.,0.516,0.483,0.001,1.,0.995,0.005,13*1.,0.331, 
-     &0.663,0.006,0.663,0.331,0.006,1.,0.88,2*0.06,0.88,2*0.06,0.88, 
-     &2*0.06,0.667,2*0.333,0.667,0.676,0.234,0.085,0.005,3*1.,4*0.5, 
-     &7*1.,847*0./ 
-      DATA (KFDP(I,1),I=   1, 507)/21,22,23,4*-24,25,21,22,23,4*24,25, 
-     &21,22,23,4*-24,25,21,22,23,4*24,25,21,22,23,4*-24,25,21,22,23, 
-     &4*24,25,37,21,22,23,4*-24,25,2*-37,21,22,23,4*24,25,2*37,22,23, 
-     &-24,25,23,24,-12,22,23,-24,25,23,24,-12,-14,35*16,22,23,-24,25, 
-     &23,24,-89,22,23,-24,25,-37,23,24,37,1,2,3,4,5,6,7,8,21,1,2,3,4,5, 
-     &6,7,8,11,13,15,17,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,4*-1, 
-     &4*-3,4*-5,4*-7,-11,-13,-15,-17,1,2,3,4,5,6,7,8,11,13,15,17,21, 
-     &2*22,23,24,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,24,37,2*23,25, 
-     &35,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,3*24,1,2,3,4,5,6,7,8,11, 
-     &13,15,17,21,2*22,23,24,23,25,36,1,2,3,4,5,6,7,8,11,13,15,17,21, 
-     &2*22,23,24,23,-1,-3,-5,-7,-11,-13,-15,-17,24,5,6,21,2,1,2,3,4,5, 
-     &6,11,13,15,82,-11,-13,2*2,-12,-14,-16,2*-2,2*-4,-2,-4,2*89,37, 
-     &2*-89,2*5,-37,2*89,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,-13,130, 
-     &310,-13,3*211,12,14,11*-11,11*-13,-311,-313,-311,-313,-20313, 
-     &2*-311,-313,-311,-313,2*111,2*221,2*331,2*113,2*223,2*333,-311, 
-     &-313,2*-321,211,-311,-321,333,-311,-313,-321,211,2*-321,2*-311, 
-     &-321,211,113,8*-11,8*-13,-321,-323,-321,-323,-311,2*-313,-311, 
-     &-313,2*-311,-321,-10323,-321,-323,-321,-311,2*-313,211,111,333, 
-     &3*-321,-311,-313,-321,-313,310,333,211,2*-321,-311,-313,-311,211, 
-     &-321,3*-311,211,113,321,-15,5*-11,5*-13,221,331,333,221,331,333/ 
-      DATA (KFDP(I,1),I= 508, 924)/10221,211,213,211,213,321,323,321, 
-     &323,2212,221,331,333,221,2*2,6*12,6*14,2*16,3*-411,3*-413,2*-411, 
-     &2*-413,2*441,2*443,2*20443,2*2,2*4,2,4,6*12,6*14,2*16,3*-421, 
-     &3*-423,2*-421,2*-423,2*441,2*443,2*20443,2*2,2*4,2,4,6*12,6*14, 
-     &2*16,3*-431,3*-433,2*-431,2*-433,3*441,3*443,3*20443,2*2,2*4,2,4, 
-     &16,2*4,2*12,2*14,2*16,4*2,4*4,2*-11,2*-13,2*-1,2*-3,2*-11,2*-13, 
-     &2*-1,3*22,111,211,2*22,211,22,211,111,3*22,111,82,21,3*0,2*211, 
-     &321,3*311,2*321,421,2*411,2*421,431,511,521,531,541,211,111,13, 
-     &11,211,22,211,2*111,321,130,-213,113,213,211,22,111,11,13,82,11, 
-     &13,15,1,2,3,4,21,22,3*0,223,321,311,323,313,2*311,321,313,323, 
-     &321,423,2*413,2*423,413,523,2*513,2*523,2*513,523,223,213,113, 
-     &-213,313,-313,323,-323,82,21,3*0,221,321,2*311,321,421,2*411,421, 
-     &411,421,521,2*511,2*521,2*511,521,221,211,111,321,130,310,211, 
-     &111,321,130,310,443,82,553,21,3*0,113,213,323,2*313,323,423, 
-     &2*413,2*423,413,523,2*513,2*523,2*513,523,213,-213,10211,10111, 
-     &-10211,2*221,213,2*113,-213,2*321,2*311,313,-313,323,-323,443,82, 
-     &553,21,3*0,213,113,221,223,321,211,321,311,323,313,323,313,321, 
-     &4*311,321,313,323,313,323,311,4*321,421,411,423,413,423,413,421, 
-     &2*411,421,413,423,413,423,411,2*421,411,423,413,521,511,523,513, 
-     &523,513,521,2*511,521,513,523,513,523,511,2*521,511,523,513,511/ 
-      DATA (KFDP(I,1),I= 925,2000)/521,513,523,213,-213,221,223,321, 
-     &130,310,111,211,111,2*211,321,130,310,221,111,321,130,310,221, 
-     &211,111,443,82,553,21,3*0,111,211,-12,12,-14,14,211,111,211,111, 
-     &11,13,82,4*443,10441,20443,445,441,11,13,15,1,2,3,4,21,22,2*553, 
-     &10551,20553,555,2212,2*2112,-12,7*-11,7*-13,2*2224,2*2212,2*2214, 
-     &2*3122,2*3212,2*3214,5*3222,4*3224,2*3322,3324,2*2224,7*2212, 
-     &5*2214,2*2112,2*2114,2*3122,2*3212,2*3214,2*3222,2*3224,4*2,3, 
-     &2*2,1,2*2,2*0,-12,-14,-16,5*4122,441,443,20443,2*-2,2*-4,-2,-4, 
-     &2*0,2112,-12,3122,2212,2112,2212,3*3122,3*4122,4132,4232,0, 
-     &3*5122,5132,5232,0,2112,2212,2*2112,2212,2112,2*2212,3122,3212, 
-     &3112,3122,3222,3112,3122,3222,3212,3322,3312,3322,3312,3122,3322, 
-     &3312,-12,3*4122,2*4132,2*4232,4332,3*5122,5132,5232,5332,847*0/ 
-      DATA (KFDP(I,2),I=   1, 476)/3*1,2,4,6,8,1,3*2,1,3,5,7,2,3*3,2,4, 
-     &6,8,3,3*4,1,3,5,7,4,3*5,2,4,6,8,5,3*6,1,3,5,7,6,5,3*7,2,4,6,8,7, 
-     &4,6,3*8,1,3,5,7,8,5,7,2*11,12,11,12,2*11,2*13,14,13,14,13,11,13, 
-     &-211,-213,-211,-213,-211,-213,3*-211,-321,-323,-321,-323,3*-321, 
-     &4*-211,-213,-211,-213,-211,-213,-211,-213,-211,-213,6*-211,2*15, 
-     &16,15,16,15,18,2*17,18,17,2*18,2*17,-1,-2,-3,-4,-5,-6,-7,-8,21, 
-     &-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,-1,-2,-3,-4,-5,-6,-7,-8, 
-     &-11,-12,-13,-14,-15,-16,-17,-18,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8, 
-     &12,14,16,18,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23, 
-     &-24,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24, 
-     &-37,22,25,2*36,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,23,22, 
-     &25,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,-24,2*25, 
-     &36,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,-24,25,2,4, 
-     &6,8,12,14,16,18,25,-5,-6,21,11,-3,-4,-5,-6,-7,-8,-13,-15,-17,-82, 
-     &12,14,-1,-3,11,13,15,1,4,3,4,1,3,5,3,5,6,4,21,22,4,7,5,2,4,6,8,2, 
-     &4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,14,2*0,14,111,211,111,-11,-13, 
-     &11*12,11*14,2*211,2*213,211,20213,2*321,2*323,211,213,211,213, 
-     &211,213,211,213,211,213,211,213,3*211,213,211,2*321,8*211,2*113, 
-     &2*211,8*12,8*14,2*211,2*213,2*111,221,2*113,223,333,20213,211, 
-     &2*321,323,2*311,313,-211,111,113,2*211,321,2*211,311,321,310,211/ 
-      DATA (KFDP(I,2),I= 477, 857)/-211,4*211,321,4*211,113,2*211,-321, 
-     &16,5*12,5*14,3*211,3*213,211,2*111,2*113,2*-311,2*-313,-2112, 
-     &3*321,323,2*-1,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,431, 
-     &433,431,433,311,313,311,313,311,313,-1,-4,-3,-4,-1,-3,6*-11, 
-     &6*-13,2*-15,211,213,20213,211,213,20213,431,433,431,433,321,323, 
-     &321,323,321,323,-1,-4,-3,-4,-1,-3,6*-11,6*-13,2*-15,211,213, 
-     &20213,211,213,20213,431,433,431,433,221,331,333,221,331,333,221, 
-     &331,333,-1,-4,-3,-4,-1,-3,-15,-3,-1,2*-11,2*-13,2*-15,-1,-4,-3, 
-     &-4,-3,-4,-1,-4,2*12,2*14,2,3,2,3,2*12,2*14,2,1,22,11,22,111,-211, 
-     &211,11,-211,13,-211,111,113,223,22,111,-82,21,3*0,111,22,-211, 
-     &111,22,211,111,22,211,111,22,111,6*22,-211,22,-13,-11,-211,111, 
-     &-211,2*111,-321,310,211,111,2*-211,221,22,-11,-13,-82,-11,-13, 
-     &-15,-1,-2,-3,-4,2*21,3*0,211,-213,113,-211,111,223,213,113,211, 
-     &111,223,211,111,-211,111,321,311,-211,111,211,111,-321,-311,411, 
-     &421,111,-211,111,211,-311,311,-321,321,-82,21,3*0,211,-211,111, 
-     &211,111,211,111,-211,111,311,321,-211,111,211,111,-321,-311,411, 
-     &421,111,-211,111,-321,130,310,-211,111,-321,130,310,22,-82,22,21, 
-     &3*0,211,111,-211,111,211,111,211,111,-211,111,321,311,-211,111, 
-     &211,111,-321,-311,411,421,-211,211,-211,111,2*211,111,-211,211, 
-     &111,211,-321,2*-311,-321,-311,311,-321,321,22,-82,22,21,3*0,111/ 
-      DATA (KFDP(I,2),I= 858,2000)/3*211,-311,22,-211,111,-211,111, 
-     &-211,211,-213,113,223,221,211,111,211,111,2*211,213,113,223,221, 
-     &22,211,111,211,111,4*211,-211,111,-211,111,-211,211,-211,211,321, 
-     &311,321,311,-211,111,-211,111,-211,211,-211,2*211,111,211,111, 
-     &4*211,-321,-311,-321,-311,411,421,411,421,-211,211,111,211,-321, 
-     &130,310,22,-211,111,2*-211,-321,130,310,221,111,-321,130,310,221, 
-     &-211,111,22,-82,22,21,3*0,111,-211,11,-11,13,-13,-211,111,-211, 
-     &111,-11,-13,-82,211,111,221,111,4*22,-11,-13,-15,-1,-2,-3,-4, 
-     &2*21,211,111,3*22,-211,111,22,11,7*12,7*14,-321,-323,-311,-313, 
-     &-311,-313,211,213,211,213,211,213,111,221,331,113,223,111,221, 
-     &113,223,321,323,321,-211,-213,111,221,331,113,223,333,10221,111, 
-     &221,331,113,223,211,213,211,213,321,323,321,323,321,323,311,313, 
-     &311,313,2*-1,-3,-1,2203,3201,3203,2203,2101,2103,2*0,11,13,15, 
-     &-211,-213,-20213,-431,-433,3*3122,1,4,3,4,1,3,2*0,-211,11,22,111, 
-     &211,22,-211,111,22,-211,111,211,2*22,0,-211,111,211,2*22,0, 
-     &2*-211,111,22,111,211,22,211,2*-211,2*111,-211,2*211,111,211, 
-     &-211,2*111,211,-321,-211,111,11,-211,111,211,111,22,111,2*22, 
-     &-211,111,211,3*22,847*0/ 
-      DATA (KFDP(I,3),I=   1, 944)/75*0,14,6*0,2*16,2*0,5*111,310,130, 
-     &2*0,2*111,310,130,321,113,211,223,221,2*113,2*211,2*223,2*221, 
-     &2*113,221,113,2*213,-213,195*0,4*3,4*4,1,4,3,2*2,10*81,25*0,-211, 
-     &3*111,-311,-313,-311,-321,-313,-323,111,221,331,113,223,-311, 
-     &-313,-311,-321,-313,-323,111,221,331,113,223,22*0,111,113,2*211, 
-     &-211,-311,211,111,3*211,-211,7*211,-321,-323,-311,-321,-313,-323, 
-     &-211,-213,-321,-323,-311,-321,-313,-323,-211,-213,22*0,111,113, 
-     &-311,2*-211,211,-211,310,-211,2*111,211,2*-211,-321,-211,2*211, 
-     &-211,111,-211,2*211,0,221,331,333,321,311,221,331,333,321,311, 
-     &20*0,3,0,-411,-413,-10413,-10411,-20413,-415,-411,-413,-10413, 
-     &-10411,-20413,-415,-411,-413,16*0,-4,-1,-4,-3,2*-2,-421,-423, 
-     &-10423,-10421,-20423,-425,-421,-423,-10423,-10421,-20423,-425, 
-     &-421,-423,16*0,-4,-1,-4,-3,2*-2,-431,-433,-10433,-10431,-20433, 
-     &-435,-431,-433,-10433,-10431,-20433,-435,-431,-433,19*0,-4,-1,-4, 
-     &-3,2*-2,3*0,441,443,441,443,441,443,-4,-1,-4,-3,-4,-3,-4,-1,531, 
-     &533,531,533,3,2,3,2,511,513,511,513,1,2,0,-11,0,2*111,-211,-11, 
-     &11,-13,2*221,3*0,111,27*0,111,2*0,22,111,5*0,111,12*0,2*21,103*0, 
-     &-211,2*111,-211,3*111,-211,111,211,14*0,111,6*0,111,-211,8*0,111, 
-     &-211,9*0,111,-211,111,-211,4*0,111,-211,111,-211,8*0,111,-211, 
-     &111,-211,4*0,111,-211,111,-211,11*0,-211,6*0,111,211,4*0,111/ 
-      DATA (KFDP(I,3),I= 945,2000)/13*0,2*111,211,-211,211,-211,7*0, 
-     &-211,111,13*0,2*21,-211,111,6*0,2212,3122,3212,3214,2112,2114, 
-     &2212,2112,3122,3212,3214,2112,2114,2212,2112,52*0,3*3,1,8*0, 
-     &3*4122,8*0,4,1,4,3,2*2,3*0,2112,43*0,3322,861*0/ 
-      DATA (KFDP(I,4),I=   1,2000)/88*0,3*111,8*0,-211,0,-211,3*0,111, 
-     &2*-211,0,111,0,2*111,113,221,111,-213,-211,211,195*0,13*81,41*0, 
-     &111,211,111,211,7*0,111,211,111,211,35*0,2*-211,2*111,211,111, 
-     &-211,2*211,2*-211,2*0,-211,111,-211,111,4*0,-211,111,-211,111, 
-     &34*0,111,-211,3*111,3*-211,2*111,3*-211,4*0,-321,-311,3*0,-321, 
-     &-311,20*0,-3,31*0,6*1,30*0,6*2,33*0,6*3,9*0,8*4,4*0,4*-5,4*0, 
-     &2*-5,7*0,-11,264*0,111,-211,4*0,111,57*0,-211,111,5*0,-211,111, 
-     &52*0,2101,2103,2*2101,19*0,6*2101,909*0/ 
-      DATA (KFDP(I,5),I=   1,2000)/90*0,111,16*0,111,7*0,111,0,2*111, 
-     &303*0,-211,2*111,-211,111,-211,111,54*0,111,-211,3*111,-211,111, 
-     &1510*0/ 
-C...LUDAT4, with character strings. 
-      DATA (CHAF(I)  ,I=   1, 281)/'d','u','s','c','b','t','l','h', 
-     &2*' ','e','nu_e','mu','nu_mu','tau','nu_tau','chi','nu_chi', 
-     &2*' ','g','gamma','Z','W','H',2*' ','reggeon','pomeron',2*' ', 
-     &'Z''','Z"','W''','H''','A','H','eta_tech','LQ_ue','R',40*' ', 
-     &'specflav','rndmflav','phasespa','c-hadron','b-hadron', 
-     &'t-hadron','l-hadron','h-hadron','Wvirt','diquark','cluster', 
-     &'string','indep.','CMshower','SPHEaxis','THRUaxis','CLUSjet', 
-     &'CELLjet','table',' ','pi',2*'K',2*'D','D_s',2*'B','B_s','B_c', 
-     &'pi','eta','eta''','eta_c','eta_b','eta_t','eta_l','eta_h',2*' ', 
-     &'rho',2*'K*',2*'D*','D*_s',2*'B*','B*_s','B*_c','rho','omega', 
-     &'phi','J/psi','Upsilon','Theta','Theta_l','Theta_h',2*' ','b_1', 
-     &2*'K_1',2*'D_1','D_1s',2*'B_1','B_1s','B_1c','b_1','h_1','h''_1', 
-     &'h_1c','h_1b','h_1t','h_1l','h_1h',2*' ','a_0',2*'K*_0',2*'D*_0', 
-     &'D*_0s',2*'B*_0','B*_0s','B*_0c','a_0','f_0','f''_0','chi_0c', 
-     &'chi_0b','chi_0t','chi_0l','chi_0h',2*' ','a_1',2*'K*_1', 
-     &2*'D*_1','D*_1s',2*'B*_1','B*_1s','B*_1c','a_1','f_1','f''_1', 
-     &'chi_1c','chi_1b','chi_1t','chi_1l','chi_1h',2*' ','a_2', 
-     &2*'K*_2',2*'D*_2','D*_2s',2*'B*_2','B*_2s','B*_2c','a_2','f_2', 
-     &'f''_2','chi_2c','chi_2b','chi_2t','chi_2l','chi_2h',2*' ','K_L', 
-     &'K_S',8*' ','psi''',3*' ','Upsilon''',45*' ','pi_diffr'/ 
-      DATA (CHAF(I)  ,I= 282, 500)/'n_diffr','p_diffr','rho_diff', 
-     &'omega_di','phi_diff','J/psi_di',18*' ','Lambda',5*' ', 
-     &'Lambda_c',' ',2*'Xi_c',6*' ','Lambda_b',' ',2*'Xi_b',6*' ','n', 
-     &'p',' ',3*'Sigma',2*'Xi',' ',3*'Sigma_c',2*'Xi''_c','Omega_c', 
-     &4*' ',3*'Sigma_b',2*'Xi''_b','Omega_b',4*' ',4*'Delta', 
-     &3*'Sigma*',2*'Xi*','Omega',3*'Sigma*_c',2*'Xi*_c','Omega*_c', 
-     &4*' ',3*'Sigma*_b',2*'Xi*_b','Omega*_b',114*' '/ 
-C...LUDATR, with initial values for the random number generator. 
-      DATA MRLU/19780503,0,0,97,33,0/ 
-      END 
-C********************************************************************* 
-      SUBROUTINE LYTAUD(ITAU,IORIG,KFORIG,NDECAY) 
-C...Dummy routine, to be replaced by user, to handle the decay of a 
-C...polarized tau lepton. 
-C...Input: 
-C...ITAU is the position where the decaying tau is stored in /LYJETS/. 
-C...IORIG is the position where the mother of the tau is stored; 
-C...     is 0 when the mother is not stored. 
-C...KFORIG is the flavour of the mother of the tau; 
-C...     is 0 when the mother is not known. 
-C...Note that IORIG=0 does not necessarily imply KFORIG=0; 
-C...     e.g. in B hadron semileptonic decays the W  propagator 
-C...     is not explicitly stored but the W code is still unambiguous. 
-C...Output: 
-C...NDECAY is the number of decay products in the current tau decay. 
-C...These decay products should be added to the /LYJETS/ common block, 
-C...in positions N+1 through N+NDECAY. For each product I you must 
-C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2), 
-C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically. 
-      COMMON/LYJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LYJETS/,/LYDAT1/ 
-C...Stop program if this routine is ever called. 
-C...You should not copy these lines to your own routine. 
-      NDECAY=ITAU+IORIG+KFORIG      
-      WRITE(MSTU(11),5000) 
-      IF(RLY(0).LT.10.) STOP 
-C...Format for error printout. 
- 5000 FORMAT(1X,'Error: you did not link your LYTAUD routine ', 
-     &'correctly.'/1X,'Dummy routine in JETSET file called instead.'/ 
-     &1X,'Execution stopped!') 
-      RETURN 
-      END 
diff --git a/TEvtGen/EvtGenModels/jetsetCDF.F b/TEvtGen/EvtGenModels/jetsetCDF.F
deleted file mode 100644 (file)
index c1027d6..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: jetset1.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine jetsetcdf(ip,m,ndaug,kf,km,px,py,pz,e)
-
-C
-C interface to JETSET 7.4 to have one particle decayed
-C including possibly fragmentation, if the decay products include
-C partons.
-C
-
-      implicit none
-
-      INTEGER MSTU,MSTJ
-      REAL PARU,PARJ
-      COMMON/LYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LYDAT1/
-
-      common/lyjets/n,k(4000,5),p(4000,5),v(4000,5)
-
-      integer n,k
-      real p,v
-
-      integer ndmax
-      parameter (ndmax=100)
-
-      integer lycomp
-      external lycomp
-
-      integer ip,kf(ndmax),i,ndaug,km(ndmax)
-      integer kp,kid,ipart1,ipart
-      real*8  m,px(ndmax),py(ndmax),pz(ndmax),e(ndmax)
-
-      integer ip1
-      real qmax
-
-c      used to use ly1ent both since it does not set the mass
-c      of the daughter we have to manipulate the common blocks our
-c      self. ryd April 25-1999
-
-c      call ly1ent(1,ip,0.0,0.0,0.0)
-
-      K(1,1)=1
-      K(1,2)=ip
-      P(1,5)=m
-      P(1,4)=m
-      P(1,1)=0.0
-      P(1,2)=0.0
-      P(1,3)=0.0
-      n=1
-
-
-c     now we can decay this particle
-      call lydecy(1)
-
-C code copied from LUEXEC to avoid error with shower
-C switched on
-C...Decay products may develop a shower.
-        IF(MSTJ(92).GT.0) THEN
-          IP1=MSTJ(92)
-          QMAX=SQRT(MAX(0.,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
-     &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
-          CALL LYSHOW(IP1,IP1+1,QMAX)
-          CALL LYPREP(IP1)
-          MSTJ(92)=0
-        ELSEIF(MSTJ(92).LT.0) THEN
-          IP1=-MSTJ(92)
-          CALL LYSHOW(IP1,-3,P(IP1,5))
-          CALL LYPREP(IP1)
-          MSTJ(92)=0
-        ENDIF
-
-c
-c for debugging:
-c      call lylist(1)
-c
-      mstj(21)=0
-      call lyexec
-      mstj(21)=2
-c find partons, delete secondary partons, set mother pointers
-
-      ndaug = 0
-      ipart1 = 1
-      ipart = 1
-
-      do 10 i=2,n
-        kp = k(i,3)
-        kid = k(i,2)
-        if (abs(kid) .ge. 1 .and. abs(kid) .le. 8
-     1  .or. kid .eq. 21
-     2  .or. kid .ge. 91 .and. kid .le. 94)  then
-           if (ipart1 .eq. 1) ipart1 = i
-           ipart = i
-           if (kp .ne. 1)  goto 10
-           kp = 0
-        else
-           if (kp .gt. ipart)  then
-              goto 10
-           elseif (kp .ge. ipart1)  then
-              kp = ipart1-1
-           else
-              kp = 0
-              endif
-           endif
-        ndaug = ndaug + 1
-        km(ndaug)=kp
-        kf(ndaug)=kid
-        px(ndaug)=p(i,1)
-        py(ndaug)=p(i,2)
-        pz(ndaug)=p(i,3)
-        e(ndaug)=p(i,4)
-c
-c for debugging:
-c        print '( 2I5,I12,4F12.4 )',ndaug,km(ndaug),kf(ndaug),
-c     1    px(ndaug),py(ndaug),pz(ndaug),e(ndaug)
-c
-   10 continue
-
-      end
-
-
diff --git a/TEvtGen/EvtGenModels/jetsetcont.F b/TEvtGen/EvtGenModels/jetsetcont.F
deleted file mode 100644 (file)
index 6ec8ab9..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-C--------------------------------------------------------------------------
-C
-C Environment:
-C      This software is part of the EvtGen package developed jointly
-C      for the BaBar and CLEO collaborations.  If you use all or part
-C      of it, please give an appropriate acknowledgement.
-C
-C Copyright Information: See EvtGen/COPYRIGHT
-C      Copyright (C) 1998      Caltech, UCSB
-C
-C Module: jetsetcont.F
-C
-C Description:
-C
-C Modification history:
-C
-C    DJL/RYD     August 11, 1998         Module created
-C
-C------------------------------------------------------------------------
-      subroutine jetsetcont(energy,flavor,ndaug,kf,px,py,pz,e)
-
-
-
-      implicit none
-
-      common/lujets/n,k(4000,5),p(4000,5),v(4000,5)
-
-      integer n,k
-      real p,v
-
-      real*8 energy
-
-      real senergy
-
-      integer lucomp
-      external lucomp
-
-      integer flavor,kf(100),i,ndaug
-      real*8  px(100),py(100),pz(100),e(100)
-
-      senergy=energy
-
-
-      call lu2ent(0,flavor,-flavor,senergy)
-
-
-      ndaug=0
-
-      do 10,i=4,n
-
-c     only wants the particles that are created from the
-c     fragmentation, not the secondary daugthers.
-
-        if (k(i,3).eq.3) then
-          kf(i-3)=k(i,2)
-          px(i-3)=p(i,1)
-          py(i-3)=p(i,2)
-          pz(i-3)=p(i,3)
-          e(i-3)=p(i,4)
-          ndaug=ndaug+1
-         endif
-
-10    continue
-
-
-      end
-
-
-
diff --git a/TEvtGen/EvtGenModels/pykcut.F b/TEvtGen/EvtGenModels/pykcut.F
deleted file mode 100644 (file)
index a191ccb..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-C*********************************************************************
-C...PYKCUT
-C...Dummy routine, which the user can replace in order to make cuts on
-C...the kinematics on the parton level before the matrix elements are
-C...evaluated and the event is generated. The cross-section estimates
-C...will automatically take these cuts into account, so the given
-C...values are for the allowed phase space region only. MCUT=0 means
-C...that the event has passed the cuts, MCUT=1 that it has failed.
-      SUBROUTINE PYKCUT(MCUT)
-C...Double precision and integer declarations.
-      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
-      IMPLICIT INTEGER(I-N)
-      INTEGER PYK,PYCHGE,PYCOMP
-C...Commonblocks.
-      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      SAVE /PYDAT1/,/PYINT1/,/PYINT2/,/PYPARS/
-C...Set default value (accepting event) for MCUT.
-      MCUT=0
-C...Read out subprocess number.
-      ISUB=MINT(1)
-      ISTSB=ISET(ISUB)
-C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
-      TAU=VINT(21)
-      YST=VINT(22)
-      CTH=0D0
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
-      TAUP=0D0
-      IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
-C...Calculate x_1, x_2, x_F.
-      IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN
-        X1=SQRT(TAU)*EXP(YST)
-        X2=SQRT(TAU)*EXP(-YST)
-      ELSE
-        X1=SQRT(TAUP)*EXP(YST)
-        X2=SQRT(TAUP)*EXP(-YST)
-      ENDIF
-      XF=X1-X2
-C...Calculate shat, that, uhat, p_T^2.
-      SHAT=TAU*VINT(2)
-      SQM3=VINT(63)
-      SQM4=VINT(64)
-      RM3=SQM3/SHAT
-      RM4=SQM4/SHAT
-      BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
-      RPTS=4D0*VINT(71)**2/SHAT
-      BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
-      RM34=2D0*RM3*RM4
-      RSQM=1D0+RM34
-      RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
-      THAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
-      UHAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
-      PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2))
-C...Decisions by user to be put here.
-C      WRITE (*,*) "PYKCUT : ",SQRT(SHAT) 
-      IF(SHAT.LE.PARP(2)*PARP(2)) MCUT=1
-C...Stop program if this routine is ever called.
-C...You should not copy these lines to your own routine.
-C      WRITE(MSTU(11),5000)
-C      IF(PYR(0).LT.10D0) STOP
-C...Format for error printout.
- 5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
-     &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
-     &1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/TEvtGen/EvtGenModels/pytime.F b/TEvtGen/EvtGenModels/pytime.F
deleted file mode 100644 (file)
index 7020d72..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-C*********************************************************************
-C...PYTIME
-C...Finds current date and time.
-C...Since this task is not standardized in Fortran 77, the routine
-C...is dummy, to be replaced by the user. Examples are given for
-C...the Fortran 90 routine DEC Fortran 77, GNU Linux g77, and what to 
-C...do if you do not have access to suitable routines.
-      SUBROUTINE PYTIME(IDATI)
-C...Double precision and integer declarations.
-      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
-      IMPLICIT INTEGER(I-N)
-C      INTEGER PYK,PYCHGE,PYCOMP
-C      CHARACTER*8 ATIME
-C...Local array.
-      INTEGER IDATI(6),IDTEMP(3)
-C...Example 0: if you do not have suitable routines.
-      DO 100 J=1,6
-      IDATI(J)=0
-  100 CONTINUE
-C...Example 1: Fortran 90 routine.
-C      INTEGER IVAL(8)
-C      CALL DATE_AND_TIME(VALUES=IVAL)
-C      IDATI(1)=IVAL(1)
-C      IDATI(2)=IVAL(2)
-C      IDATI(3)=IVAL(3)
-C      IDATI(4)=IVAL(5)
-C      IDATI(5)=IVAL(6)
-C      IDATI(6)=IVAL(7)
-C...Example 2: DEC Fortran 77. AIX.
-C      CALL IDATE(IMON,IDAY,IYEAR)
-C      IDATI(1)=IYEAR
-C      IDATI(2)=IMON
-C      IDATI(3)=IDAY
-C      CALL ITIME(IHOUR,IMIN,ISEC)
-C      IDATI(4)=IHOUR
-C      IDATI(5)=IMIN
-C      IDATI(6)=ISEC
-C...Example 3: DEC Fortran, IRIX, IRIX64.
-C      CALL IDATE(IMON,IDAY,IYEAR)
-C      IDATI(1)=IYEAR
-C      IDATI(2)=IMON
-C      IDATI(3)=IDAY
-C      CALL TIME(ATIME)
-C      IHOUR=0
-C      IMIN=0
-C      ISEC=0
-C      READ(ATIME(1:2),'(I2)') IHOUR
-C      READ(ATIME(4:5),'(I2)') IMIN
-C      READ(ATIME(7:8),'(I2)') ISEC
-C      IDATI(4)=IHOUR
-C      IDATI(5)=IMIN
-C      IDATI(6)=ISEC
-C...Example 4: GNU LINUX libU77, SunOS.
-      CALL IDATE(IDTEMP)
-      IDATI(1)=IDTEMP(3)
-      IDATI(2)=IDTEMP(2)
-      IDATI(3)=IDTEMP(1)
-      CALL ITIME(IDTEMP)
-      IDATI(4)=IDTEMP(1)
-      IDATI(5)=IDTEMP(2)
-      IDATI(6)=IDTEMP(3)
-C...Common code to ensure right century.
-      IDATI(1)=2000+MOD(IDATI(1),100)
-      RETURN
-      END
diff --git a/TEvtGen/EvtGenModels/rly.cxx b/TEvtGen/EvtGenModels/rly.cxx
deleted file mode 100644 (file)
index f439212..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// $Id: rly.cc,v 1.1 2009/02/18 03:34:11 ryd Exp $
-//
-// Define random number generators used by JETSET
-
-#include "EvtGenBase/EvtRandom.hh"
-
-extern "C" {
-  extern float rly_();
-}
-
-float rly_(){
-  return EvtRandom::Flat();
-}
old mode 100644 (file)
new mode 100755 (executable)
index dcb14a0..9285a59
@@ -15,7 +15,7 @@ C  PHEP(5,I)   = px,py,pz,E,m of particle
 C  VHEP(4,I)   = x,y,z,L of production vertex
 
       INTEGER  nmxhep         ! maximum number of particles
-      PARAMETER ( nmxhep=4000)
+      PARAMETER ( nmxhep=10000)
       REAL*8  phep,  vhep ! to be real*4 or *8  depending on host
       INTEGER nevhep,nhep,isthep,idhep,jmohep,
      $        jdahep
@@ -29,8 +29,6 @@ C  VHEP(4,I)   = x,y,z,L of production vertex
      $      phep(5,nmxhep),   ! four-momentum, mass [GeV]
      $      vhep(4,nmxhep)    ! vertex [mm]
 
-
-
 c$$$      INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP
 c$$$      REAL    PHEP,VHEP
 c$$$      PARAMETER (NMXHEP=2000)
diff --git a/TEvtGen/HepMC/CompareGenEvent.cc b/TEvtGen/HepMC/CompareGenEvent.cc
new file mode 100644 (file)
index 0000000..69efeba
--- /dev/null
@@ -0,0 +1,192 @@
+/////////////////////////////////////////////////////////////////////////
+// CompareGenEvent.cc
+//
+// garren@fnal.gov, January 2008
+// Free functions used to compare two copies of GenEvent
+//////////////////////////////////////////////////////////////////////////
+//
+
+#include <iostream>
+
+#include "HepMC/CompareGenEvent.h"
+#include "HepMC/GenEvent.h"
+
+namespace HepMC {
+
+bool compareGenEvent( GenEvent* e1, GenEvent* e2)
+{
+   //std::cout << "compareGenEvent: comparing event " << e1->event_number() << " to event " 
+   //          << e2->event_number() << std::endl;
+   if( e1->event_number() != e2->event_number() ) { 
+       std::cerr << "compareGenEvent: event numbers differ " << std::endl;
+       return false; 
+   }
+   if( e1->signal_process_id() != e2->signal_process_id() ) { 
+       std::cerr << "compareGenEvent: signal process ids differ " << std::endl;
+       return false; 
+   }
+   if( e1->event_scale() != e2->event_scale() ) { 
+       std::cerr << "compareGenEvent: event scales differ " << std::endl;
+       return false; 
+   }
+   if( e1->alphaQCD() != e2->alphaQCD() ) { 
+       std::cerr << "compareGenEvent: alphaQCD differs " << std::endl;
+       return false; 
+   }
+   if( e1->alphaQED() != e2->alphaQED() ) { 
+       std::cerr << "alphaQED differs " << std::endl;
+       return false; 
+   }
+   if( e1->mpi() != e2->mpi() ) { 
+       std::cerr << "compareGenEvent: mpi differs " << std::endl;
+       return false; 
+   }
+   if ( !compareSignalProcessVertex( e1, e2 ) ) { return false; }
+   if ( !compareBeamParticles( e1, e2 ) ) { return false; }
+   if ( !compareWeights( e1, e2 ) ) { return false; }
+   if( e1->random_states() != e2->random_states() ) { 
+       std::cerr << "compareGenEvent: random states differ " << std::endl;
+       return false; 
+   }
+   if( e1->heavy_ion() != e2->heavy_ion() ) { 
+       std::cerr << "compareGenEvent: heavy ions differ " << std::endl;
+       return false; 
+   }
+   if( e1->pdf_info() != e2->pdf_info() ) { 
+       std::cerr << "compareGenEvent: pdf info differs " << std::endl;
+       return false; 
+   }
+   if ( !compareParticles( e1, e2 ) ) { return false; }
+   if ( !compareVertices( e1, e2 ) ) { return false; }
+   return true;
+}
+
+bool compareSignalProcessVertex( GenEvent* e1, GenEvent* e2 ) {
+   // compare signal process vertex
+   GenVertex* s1 = e1->signal_process_vertex();
+   GenVertex* s2 = e2->signal_process_vertex();
+   if( s1 && s2 ) {
+       if( (*s1) != (*s2) ) { 
+          std::cerr << "compareSignalProcessVertex: signal process vertices differ " << std::endl;
+          return false; 
+       }
+   }
+   return true;
+}
+
+bool compareBeamParticles( GenEvent* e1, GenEvent* e2 ) {
+   GenParticle* e1b1 = e1->beam_particles().first;
+   GenParticle* e1b2 = e1->beam_particles().second;
+   GenParticle* e2b1 = e2->beam_particles().first;
+   GenParticle* e2b2 = e2->beam_particles().second;
+   if( e1b1 && e1b2 && e2b1 && e2b2 ) {
+       if( (*e1b1) == (*e2b1)  && (*e1b2) == (*e2b2) ) {
+       } else { 
+          std::cerr << "compareBeamParticles: beam particles differ " << std::endl;
+          return false; 
+       }
+   }
+   return true;
+}
+
+bool compareWeights( GenEvent* e1, GenEvent* e2 ) {
+   if( e1->weights() == e2->weights() ) return true;
+   std::cerr << "compareWeights: weight containers differ " << std::endl;
+   return false;
+}
+
+bool compareParticles( GenEvent* e1, GenEvent* e2 ) {
+   if( e1->particles_size() != e2->particles_size() ) { 
+       std::cerr << "compareParticles: number of particles differs " << std::endl;
+       return false; 
+   }
+   if( e1->particles_size() == 0 ) { return true; }
+   for ( GenEvent::particle_const_iterator p1 =  e1->particles_begin(),
+         p2 = e2->particles_begin();
+         p1 !=  e1->particles_end(); ++p1, ++p2 ) {
+       /* std::cout << "compareParticles: particle " 
+                << (*p1)->barcode() << " " << (*p2)->barcode()
+                << std::endl; */
+       if ( **p1 != **p2 ) {
+          std::cerr << "compareParticles: particle " 
+                    << (*p1)->barcode() << " differs from " 
+                    << (*p2)->barcode() << std::endl;
+          return false; 
+       }
+   }
+   return true;
+}
+
+bool compareVertices( GenEvent* e1, GenEvent* e2 ) {
+   if( e1->vertices_size() != e2->vertices_size() ) { 
+       std::cerr << "compareVertices: number of vertices differs " << std::endl;
+       return false; 
+   }
+   for ( GenEvent::vertex_const_iterator v =  e1->vertices_begin();
+         v !=  e1->vertices_end(); ++v ) {
+       //std::cout << "compareVertices:  comparing vertex " 
+       //         << (*v)->barcode() << std::endl;
+       GenVertex* v1 = (*v);
+       GenVertex* v2 = e2->barcode_to_vertex((*v)->barcode());
+       compareVertex( (*v), e2->barcode_to_vertex((*v)->barcode()));
+       if ( (*v1) != (*v2) ) {
+          std::cerr << "compareVertices: vertex " 
+                    << (*v)->barcode() << " differs" << std::endl;
+          return false; 
+       }
+   }
+   return true;
+}
+
+bool compareVertex( GenVertex* v1, GenVertex* v2 ) {
+       if ( v1->position() !=  v2->position() ) {
+         std::cerr << "compareVertex: position " 
+                   << v1->barcode() << " differs" << std::endl;
+         return false; 
+       }
+       // if the size of the inlist differs, return false.
+       if ( v1->particles_in_size() !=  v2->particles_in_size() ) {
+         std::cerr << "compareVertex: particles_in_size " 
+                   << v1->barcode() << " differs" << std::endl;
+         return false; 
+       }
+       // loop over the inlist and ensure particles are identical
+       if ( v1->particles_in_const_begin() != v1->particles_in_const_end() ) {
+          for ( GenVertex::particles_in_const_iterator 
+                   ia = v1->particles_in_const_begin(),
+                   ib = v2->particles_in_const_begin();
+               ia != v1->particles_in_const_end(); ia++, ib++ ){
+             if ( **ia != **ib ) {
+                std::cerr << "compareVertex: incoming particle " 
+                          << v1->barcode() << " differs: " 
+                          << (*ia)->barcode() << " " << (*ib)->barcode()
+                          << std::endl;
+                 //return false; 
+             }
+          }
+       }
+       // if the size of the outlist differs, return false.
+       if ( v1->particles_out_size() !=  v2->particles_out_size() ) {
+         std::cerr << "compareVertex: particles_out_size " 
+                   << v1->barcode() << " differs" << std::endl;
+         return false; 
+       }
+       // loop over the outlist and ensure particles are identical
+       if ( v1->particles_out_const_begin() != v1->particles_out_const_end() ) {
+          for ( GenVertex::particles_out_const_iterator 
+                    ia = v1->particles_out_const_begin(),
+                    ib = v2->particles_out_const_begin();
+                ia != v1->particles_out_const_end(); ia++, ib++ ){
+              if ( **ia != **ib ) {
+                  std::cerr << "compareVertex: outgoing particle " 
+                            << v1->barcode() << " differs: " 
+                            << (*ia)->barcode() << " " << (*ib)->barcode()
+                            << std::endl;
+                  //return false; 
+              }
+          }
+       }
+   return true;
+}
+
+} // HepMC
diff --git a/TEvtGen/HepMC/CompareGenEvent.h b/TEvtGen/HepMC/CompareGenEvent.h
new file mode 100644 (file)
index 0000000..90f2be4
--- /dev/null
@@ -0,0 +1,30 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_COMPARE_GENEVENT_H
+#define HEPMC_COMPARE_GENEVENT_H
+
+/////////////////////////////////////////////////////////////////////////
+// CompareGenEvent.h
+//
+// garren@fnal.gov, January 2008
+// Free functions used to compare two copies of GenEvent
+//////////////////////////////////////////////////////////////////////////
+//
+
+#include <iostream>
+
+#include "HepMC/GenEvent.h"
+
+namespace HepMC {
+
+bool compareGenEvent( GenEvent*, GenEvent* );
+bool compareSignalProcessVertex( GenEvent*, GenEvent* );
+bool compareBeamParticles( GenEvent*, GenEvent* );
+bool compareWeights( GenEvent*, GenEvent* );
+bool compareVertices( GenEvent*, GenEvent* );
+bool compareParticles( GenEvent*, GenEvent* );
+bool compareVertex( GenVertex* v1, GenVertex* v2 );
+
+} // HepMC
+
+#endif  // HEPMC_COMPARE_GENEVENT_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/Flow.cc b/TEvtGen/HepMC/Flow.cc
new file mode 100644 (file)
index 0000000..d56183e
--- /dev/null
@@ -0,0 +1,217 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, January 2000
+// particle's flow object
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/Flow.h"
+#include "HepMC/GenParticle.h"
+#include "HepMC/GenVertex.h"
+#include "HepMC/SearchVector.h"
+
+namespace HepMC {
+
+    Flow::Flow( GenParticle* particle_owner ) 
+       : m_particle_owner(particle_owner) 
+    {}
+
+    Flow::Flow( const Flow& inflow ) : 
+       m_particle_owner(inflow.m_particle_owner),
+       m_icode(inflow.m_icode)
+    {
+       /// copies both the m_icode AND the m_particle_owner
+    }
+
+    Flow::~Flow() {
+       m_icode.clear();
+    }
+
+    void Flow::swap( Flow & other)
+    {
+       std::swap( m_particle_owner, other.m_particle_owner );
+       m_icode.swap( other.m_icode );
+    }
+
+    void Flow::print( std::ostream& ostr ) const {
+       ostr << "Flow(" << m_particle_owner << "): " << *this << std::endl;
+    }
+    
+    std::vector<GenParticle*> Flow::connected_partners( int code, int code_index, 
+                                                 int num_indices ) const {
+       /// Returns all flow partners which have "code" in any  of the 
+       ///  num_indices beginning with index code_index.
+       ///  m_particle_owner is included in the result.
+       ///  Return is by value since the set should never be very big.
+       /// EXAMPLE: if you want to find all flow partners that have the same
+       ///   code in indices 2,3,4 as particle p has in index 2, you would use:
+       ///   set<GenParticle*> result = 
+       ///             p->flow().connected_partners(p->flow().icode(2),2,3);
+       //
+       std::vector<GenParticle*> output;
+       for ( int i = code_index; i!=code_index+num_indices; ++i ) {
+           if ( icode(i)==code ) {
+               output.push_back(m_particle_owner);
+               connected_partners( &output, code, code_index, num_indices );
+               break;
+           } 
+       }
+       return output;
+    }
+
+    void Flow::connected_partners( std::vector<HepMC::GenParticle*>* output, int code, 
+                                  int code_index, int num_indices ) const
+    {
+       /// protected: for recursive use by Flow::connected_partners()
+       //
+       if ( !m_particle_owner ) return; // nothing to do
+       // look for connected partners joined to this m_particle_owner
+       // through its end_vertex
+       if ( m_particle_owner->end_vertex() ) {
+           for ( GenVertex::particle_iterator p 
+                    = m_particle_owner->end_vertex()->particles_begin(family);
+                 p != m_particle_owner->end_vertex()->particles_end(family);
+                 ++p ) {
+               // if the particle has the correct flow code and is not yet in 
+               // the set, then we recursively call connected_partners
+               for ( int index = code_index; index!=code_index+num_indices; 
+                     ++index ){
+                   if ( (*p)->flow(index)==code && not_in_vector(output,(*p)) ) {
+                       output->push_back(*p);
+                       (*p)->flow().connected_partners( output, code,
+                                                        code_index, 
+                                                        num_indices );
+                   }
+               }
+           }
+       }
+       // same for production_vertex
+       if ( m_particle_owner->production_vertex() ) {
+           for ( GenVertex::particle_iterator p 
+                     = m_particle_owner->production_vertex()->
+                     particles_begin( family );
+                 p != m_particle_owner->production_vertex()->
+                     particles_end( family ); ++p ) {
+               // if the particle has the correct flow code and is not yet in 
+               // the set, then we recursively call connected_partners
+               for ( int index = code_index; index!=code_index+num_indices; 
+                     ++index ){
+                   if ( (*p)->flow(index)==code && not_in_vector(output,(*p)) ) {
+                       output->push_back(*p);
+                       (*p)->flow().connected_partners( output, code,
+                                                        code_index, 
+                                                        num_indices );
+                   }
+               }
+           }
+       }
+    }
+
+    std::vector<GenParticle*> Flow::dangling_connected_partners( int code, 
+                                    int code_index, int num_indices ) const {
+       std::vector<GenParticle*> output;
+       std::vector<GenParticle*> visited_particles;
+       for ( int i = code_index; i!=code_index+num_indices; ++i ) {
+           if ( icode(i)==code ) {
+               visited_particles.push_back(m_particle_owner);
+               dangling_connected_partners( &output, &visited_particles, code,
+                                            code_index, num_indices );
+               break;
+           }
+       }
+       return output;
+    }
+
+    void Flow::dangling_connected_partners( std::vector<HepMC::GenParticle*>* output, 
+                                           std::vector<HepMC::GenParticle*>* 
+                                           visited_particles,
+                                           int code, int code_index, 
+                                           int num_indices ) const 
+    {
+       /// protected: for recursive use by Flow::dangling_connected_partners
+       //
+       if ( !m_particle_owner ) return; // nothing to do
+       int count_partners = 0;
+       // look for connected partners joined to this m_particle_owner
+       // through its end_vertex
+       if ( m_particle_owner->end_vertex() ) {
+           for ( GenVertex::particle_iterator p 
+                    = m_particle_owner->end_vertex()->particles_begin(family);
+                 p != m_particle_owner->end_vertex()->particles_end(family);
+                 ++p ) {
+               // if the particle has the correct flow code and is not yet in 
+               // the set, then we recursively call connected_partners
+               for ( int index = code_index; index!=code_index+num_indices; 
+                     ++index ){
+                   if ( (*p)->flow(index)==code ) {
+                       if ( *p!=m_particle_owner ) ++count_partners;
+                       if ( not_in_vector(visited_particles,(*p)) ) {
+                           visited_particles->push_back(*p);
+                           (*p)->flow().dangling_connected_partners( output, 
+                                                    visited_particles, code,
+                                                    code_index, num_indices );
+
+                       }
+                   }           
+               }
+           }
+       }
+       // same for production_vertex
+       if ( m_particle_owner->production_vertex() ) {
+           for ( GenVertex::particle_iterator p = m_particle_owner->
+                                               production_vertex()->
+                                               particles_begin( family );
+                 p != m_particle_owner->production_vertex()->
+                                               particles_end( family ); 
+                 ++p ) {
+               // if the particle has the correct flow code and is not yet in 
+               // the set, then we recursively call connected_partners
+               for ( int index = code_index; index!=code_index+num_indices; 
+                     ++index ){
+                   if ( (*p)->flow(index)==code ) {
+                       if ( *p!=m_particle_owner ) ++count_partners;
+                       if ( not_in_vector(visited_particles,(*p)) ) {
+                           visited_particles->push_back(*p);
+                           (*p)->flow().dangling_connected_partners( output, 
+                                                    visited_particles, code,
+                                                    code_index, num_indices );
+
+                       }
+                   }
+               }
+           }
+       }
+       if ( count_partners <= 1 ) output->push_back( m_particle_owner );
+    }
+       
+    /////////////
+    // Friends //
+    /////////////
+
+        /// send Flow informatin to ostr for printing
+    std::ostream& operator<<( std::ostream& ostr, const Flow& f ) {
+       ostr << f.m_icode.size();
+       for ( std::map<int,int>::const_iterator i = f.m_icode.begin();
+             i != f.m_icode.end(); ++i ) {
+           ostr << " " << (*i).first << " " << (*i).second;
+       }
+       return ostr;
+    }
+
+} // HepMC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TEvtGen/HepMC/Flow.h b/TEvtGen/HepMC/Flow.h
new file mode 100644 (file)
index 0000000..d55d055
--- /dev/null
@@ -0,0 +1,215 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_FLOW_H
+#define HEPMC_FLOW_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, January 2000, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// particle's flow object
+// keeps track of an arbitrary number of flow patterns within a graph 
+// (i.e. color flow, charge flow, lepton number flow, ...) 
+// Flow patterns are coded with an integer, in the same manner as in Herwig.
+// Note: 0 is NOT allowed as code index nor as flow code since it
+//       is used to indicate null.
+//////////////////////////////////////////////////////////////////////////
+
+// This class can be used to keep track of flow patterns within 
+//  a graph. An example is color flow. If we have two quarks going through
+//  an s-channel gluon to form two more quarks:
+//
+//  \q1       /q3   then we can keep track of the color flow with the
+//   \_______/      HepMC::Flow class as follows: 
+//   /   g   \. 
+//  /q2       \q4
+//
+//  lets say the color flows from q2-->g-->q3  and q1-->g-->q4
+//  the individual colors are unimportant, but the flow pattern is.
+//  We can capture this flow by assigning the first pattern (q2-->g-->q3)
+//  a unique (arbitrary) flow code 678 and the second pattern (q1-->g-->q4)
+//  flow code 269  ( you can ask HepMC::Flow to choose
+//  a unique code for you using Flow::set_unique_icode() ).
+//  The first two code indices are reserved for color codes, so we store 
+//  these codes with the particles as follows:
+//    q2->flow().set_icode(1,678);
+//    g->flow().set_icode(1,678);
+//    q3->flow().set_icode(1,678);
+//    q1->flow().set_icode(1,269);
+//    g->flow().set_icode(2,269);
+//    q4->flow().set_icode(1,269);
+//  later on if we wish to know the color partner of q1 we can ask for a list
+//  of all particles connected via this code to q1 which do have less than 
+//  2 color partners using:
+//    vector<GenParticle*> result=q1->dangling_connected_partners(q1->icode(1),1,2);
+//  this will return a list containing q1 and q4.
+//    vector<GenParticle*> result=q1->connected_partners(q1->icode(1),1,2);
+//  would return a list containing q1, g, and q4.
+//
+
+#include <iostream>
+#include <map>
+#include <vector>
+
+namespace HepMC {
+
+    class GenParticle;
+
+    //! The flow object
+
+    ///
+    /// \class  Flow
+    /// The particle's flow object
+    /// keeps track of an arbitrary number of flow patterns within a graph 
+    /// (i.e. color flow, charge flow, lepton number flow, ...) 
+    /// Flow patterns are coded with an integer, in the same manner as in Herwig.
+    class Flow {
+
+        /// for printing
+       friend std::ostream& operator<<( std::ostream& ostr, const Flow& f );
+       
+    public:
+        /// default constructor
+       Flow( GenParticle* particle_owner = 0 );
+       /// copy
+       Flow( const Flow& );
+       virtual         ~Flow();
+        /// swap
+        void swap( Flow & other);
+       /// make a copy
+       Flow&           operator=( const Flow& );
+       /// equality
+       bool            operator==( const Flow& a ) const; //compares only flow
+       /// inequality
+       bool            operator!=( const Flow& a ) const; //patterns not owner
+
+        /// print Flow information to ostr
+       void            print( std::ostream& ostr = std::cout ) const;
+
+       /// returns all connected particles which have "code" in any  of the 
+       ///  num_indices beginning with index code_index.
+       std::vector<HepMC::GenParticle*> connected_partners( int code, int code_index =1,
+                                                  int num_indices = 2 ) const;
+       /// same as connected_partners, but returns only those particles which
+       ///  are connected to <=1 other particles (i.e. the flow line "dangles"
+       ///  at these particles)
+       std::vector<HepMC::GenParticle*> dangling_connected_partners( int code, 
+                              int code_index = 1, int num_indices = 2 ) const;
+
+       ////////////////////
+       // access methods //
+       ////////////////////
+
+       /// find particle owning this Flow
+       const GenParticle* particle_owner() const;
+       /// flow code
+       int             icode( int code_index = 1 ) const;
+       /// set flow code
+       Flow            set_icode( int code_index, int code );
+       /// set unique flow code
+       Flow            set_unique_icode( int code_index = 1 );
+
+       //////////////////////
+       // container access //
+       //////////////////////
+
+        /// return true if there is no flow container
+       bool            empty() const;
+       /// size of flow pattern container
+       int             size() const;
+       /// clear flow patterns
+        void            clear();
+       /// empty flow pattern container
+       bool            erase( int code_index );
+
+        /// iterator for flow pattern container
+        typedef std::map<int,int>::iterator       iterator;
+        /// const iterator for flow pattern container
+        typedef std::map<int,int>::const_iterator const_iterator;
+       /// beginning of flow pattern container
+        iterator            begin();
+       /// end of flow pattern container
+        iterator            end();
+       /// beginning of flow pattern container
+        const_iterator      begin() const;
+       /// end of flow pattern container
+        const_iterator      end() const;
+
+    protected: // intended for internal use only
+        /// for internal use only
+       void            connected_partners( std::vector<HepMC::GenParticle*>* output, 
+                                           int code,
+                                           int code_index,
+                                           int num_indices ) const;
+        /// for internal use only
+       void            dangling_connected_partners( std::vector<HepMC::GenParticle*>* 
+                                                    output, 
+                                                    std::vector<HepMC::GenParticle*>*
+                                                    visited_particles, 
+                                                    int code, int code_index, 
+                                                    int num_indices ) const; 
+    private:
+       GenParticle*         m_particle_owner;
+       std::map<int,int> m_icode; // stores flow patterns as(code_index,icode)
+    };  
+
+    ///////////////////////////
+    // INLINE Access Methods //
+    ///////////////////////////
+
+    inline const GenParticle* Flow::particle_owner() const {
+       return m_particle_owner;
+    }
+    inline int Flow::icode( int code_index ) const {
+       std::map<int,int>::const_iterator a = m_icode.find(code_index);
+       return a==m_icode.end() ? 0 : (*a).second;
+    }
+    inline Flow Flow::set_icode( int code_index, int code ) {
+       m_icode[code_index] = code;
+       return *this;
+    }
+    inline Flow Flow::set_unique_icode( int flow_num ) {
+       /// use this method if you want to assign a unique flow code, but
+       /// do not want the burden of choosing it yourself
+       m_icode[flow_num] = size_t(this);
+       return *this;
+    }
+    inline bool Flow::empty() const { return (bool)m_icode.empty(); }
+    inline int Flow::size() const { return (int)m_icode.size(); }
+    inline void Flow::clear() { m_icode.clear(); }
+    inline bool Flow::erase( int code_index ) {
+       // this will return true if the number of elements removed is nonzero
+       return m_icode.erase( code_index )==0 ? false : true ;
+    }
+    inline Flow::iterator Flow::begin() { return m_icode.begin(); }
+    inline Flow::iterator Flow::end() { return m_icode.end(); }
+    inline Flow::const_iterator Flow::begin() const { return m_icode.begin(); }
+    inline Flow::const_iterator Flow::end() const { return m_icode.end(); }
+
+    ///////////////////////////
+    // INLINE Operators      //
+    ///////////////////////////
+
+    inline bool Flow::operator==( const Flow& a ) const {
+       /// equivalent flows have the same flow codes for all flow_numbers 
+       /// (i.e. their m_icode maps are identical), but they need not have the
+       /// same m_particle owner
+       return (m_icode == a.m_icode);
+    }
+    inline bool Flow::operator!=( const Flow& a ) const {
+       return !( *this == a );
+    }
+    inline Flow& Flow::operator=( const Flow& inflow ) {
+       /// copies only the m_icode ... not the particle_owner
+       /// this is intuitive behaviour so you can do
+       /// oneparticle->flow() = otherparticle->flow()
+       //
+       m_icode = inflow.m_icode;
+       return *this;
+    }
+
+} // HepMC
+
+#endif  // HEPMC_FLOW_H
+//--------------------------------------------------------------------------
+
diff --git a/TEvtGen/HepMC/GenCrossSection.cc b/TEvtGen/HepMC/GenCrossSection.cc
new file mode 100644 (file)
index 0000000..1e6a8ac
--- /dev/null
@@ -0,0 +1,106 @@
+//--------------------------------------------------------------------------
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, January 2009
+//
+// The singleton GenCrossSection class holds run level information, 
+// such as the cross section.
+// 
+//////////////////////////////////////////////////////////////////////////
+//--------------------------------------------------------------------------
+
+#include <iostream>
+#include <sstream>
+
+#include "HepMC/GenCrossSection.h"
+#include "HepMC/IO_Exception.h"
+
+namespace HepMC {
+
+GenCrossSection::GenCrossSection( GenCrossSection const & orig )
+    : m_cross_section( orig.cross_section() ),
+      m_cross_section_error( orig.cross_section_error() ),
+      m_is_set( orig.is_set() )
+{}
+
+void GenCrossSection::swap( GenCrossSection & other)
+{
+    std::swap( m_cross_section, other.m_cross_section );
+    std::swap( m_cross_section_error, other.m_cross_section_error );
+    std::swap( m_is_set, other.m_is_set );
+}
+
+GenCrossSection &  GenCrossSection::operator = ( GenCrossSection const & rhs )
+{
+    GenCrossSection tmp( rhs );
+    swap( tmp );
+    return *this;
+}
+
+bool GenCrossSection::operator==( const GenCrossSection& rhs ) const
+{
+    if( rhs.cross_section() != this->cross_section() ) return false;
+    if( rhs.cross_section_error() != this->cross_section_error() ) return false;
+    return true;
+}
+
+bool GenCrossSection::operator!=( const GenCrossSection& rhs ) const
+{
+       return !( rhs == *this );
+}
+
+
+void GenCrossSection::clear() 
+{
+    m_cross_section       = 0.0;
+    m_cross_section_error = 0.0;
+    m_is_set              = false;
+}
+
+std::ostream & GenCrossSection::write( std::ostream & os ) const
+{
+    // make sure the stream is valid
+    if ( !os ) {
+       std::cerr << "GenCrossSection::print !os, setting badbit" << std::endl;
+       os.clear(std::ios::badbit); 
+       return os;
+    }
+    // write the GenCrossSection information if the cross section was set
+    if( is_set() ) {
+       os << "C " << m_cross_section 
+          << " " << m_cross_section_error 
+          << "\n";
+    }
+    return os;
+}
+
+std::istream & GenCrossSection::read( std::istream & is )
+{
+    // make sure the stream is valid
+    if ( !is ) { 
+      std::cerr << "GenCrossSection stream input setting badbit." << std::endl;
+      is.clear(std::ios::badbit); 
+      return is; 
+    }
+    // check to see if we have a GenCrossSection line
+    // This line is optional and may not exist
+    if ( is.peek()!='C' ) { 
+      return is; 
+    }
+    // get the GenCrossSection line
+    std::string line, firstc;
+    std::getline(is,line);
+    std::istringstream iline(line);
+    // Get first character and throw it away
+    iline >> firstc;
+    // Now get the numbers
+    double xs = 0., xserr = 0.;
+    iline >> xs ;
+    if(!iline) throw IO_Exception("GenCrossSection::read encounterd invalid data");
+    iline >> xserr ;
+    if(!iline) throw IO_Exception("GenCrossSection::read encounterd invalid data");
+    // set the data members
+    set_cross_section( xs, xserr );
+    return  is;
+}
+
+} // HepMC
diff --git a/TEvtGen/HepMC/GenCrossSection.h b/TEvtGen/HepMC/GenCrossSection.h
new file mode 100644 (file)
index 0000000..71195a1
--- /dev/null
@@ -0,0 +1,116 @@
+#ifndef HEPMC_GEN_CROSS_SECTION_H
+#define HEPMC_GEN_CROSS_SECTION_H
+
+//--------------------------------------------------------------------------
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, May 2009
+// 
+//////////////////////////////////////////////////////////////////////////
+//--------------------------------------------------------------------------
+
+#include <iostream>
+
+namespace HepMC {
+
+//! The GenCrossSection class stores the generated cross section
+
+///
+/// \class  GenCrossSection
+/// HepMC::GenCrossSection is used to store the generated cross section.
+/// This class is meant to be used to pass, on an event by event basis,
+/// the current best guess of the total cross section. 
+/// It is expected that the final cross section will be stored elsewhere.
+///
+///   - double cross_section;                  // cross section in pb
+///   - double cross_section_error;    // error associated with this cross section   
+/// 
+/// The units of cross_section and cross_section_error are expected to be pb.
+/// 
+/// GenCrossSection information will be written if GenEvent contains a pointer 
+/// to a valid GenCrossSection object.
+///
+class GenCrossSection {
+
+public:
+  GenCrossSection()
+    : m_cross_section(0),
+      m_cross_section_error(0),
+      m_is_set(false)
+    {}
+  ~GenCrossSection() {}
+
+  GenCrossSection( GenCrossSection const & orig ); //!< copy
+
+  void swap( GenCrossSection & other); //!< swap
+  GenCrossSection &  operator = ( GenCrossSection const & rhs ); //!< shallow
+  /// check for equality
+  bool         operator==( const GenCrossSection& ) const;
+  /// check for inequality
+  bool         operator!=( const GenCrossSection& ) const;
+
+
+  // ---  accessors:
+
+  /// cross section in pb
+  double cross_section()          const { return m_cross_section; }
+  /// error associated with this cross section in pb
+  double cross_section_error()    const { return m_cross_section_error; }
+
+  /// True if the cross section has been set.  False by default.
+  bool   is_set()                 const { return m_is_set; }
+
+  // ---  mutators:
+  /// Set cross section and error in pb
+  void   set_cross_section( double xs, double xs_err );
+  /// set cross section in pb
+  void   set_cross_section( double );
+  /// set error associated with this cross section in pb
+  void   set_cross_section_error( double );
+  /// Clear all GenCrossSection info 
+  /// (disables output of GenCrossSection until the cross section is set again)
+  void   clear();
+  // ---  I/O:
+  /// write to an output stream
+  std::ostream &  write( std::ostream & ) const;
+  /// read from an input stream
+  std::istream &  read( std::istream & );
+
+private: // data members
+    double m_cross_section;
+    double m_cross_section_error;
+    bool   m_is_set;
+
+};
+
+//
+// streaming I/O
+
+inline std::ostream & operator << ( std::ostream & os, GenCrossSection & xs )
+{ return xs.write(os); }
+
+inline std::istream & operator >> ( std::istream & is, GenCrossSection & xs )
+{ return xs.read(is); }
+
+//
+// inline methods
+
+inline void GenCrossSection::set_cross_section( double xs, double xserr ) { 
+  set_cross_section(xs);
+  set_cross_section_error(xserr); 
+}
+
+inline void GenCrossSection::set_cross_section( double xs )        
+{
+  m_cross_section = xs;
+  m_is_set = true;
+}
+
+inline void GenCrossSection::set_cross_section_error( double xserr )  
+{
+  m_cross_section_error = xserr;
+}
+
+} // HepMC
+
+#endif  // HEPMC_GEN_CROSS_SECTION_H
diff --git a/TEvtGen/HepMC/GenEvent.cc b/TEvtGen/HepMC/GenEvent.cc
new file mode 100644 (file)
index 0000000..0f7f6ed
--- /dev/null
@@ -0,0 +1,780 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999
+// Updated: 7.1.2000 iterators complete and working!
+// Updated: 10.1.2000 GenEvent::vertex, particle iterators are made 
+//                    constant WRT this event ... note that 
+//                    GenVertex::***_iterator is not const, since it must
+//                    be able to return a mutable pointer to itself.
+// Updated: 08.2.2000 the event now holds a set of all attached vertices
+//                    rather than just the roots of the graph
+// Event record for MC generators (for use at any stage of generation)
+//////////////////////////////////////////////////////////////////////////
+
+#include <iomanip>
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenCrossSection.h"
+#include "HepMC/Version.h"
+#include "HepMC/StreamHelpers.h"
+
+namespace HepMC {
+
+    GenEvent::GenEvent( int signal_process_id, 
+                        int event_number,
+                       GenVertex* signal_vertex,
+                       const WeightContainer& weights,
+                       const std::vector<long>& random_states,
+                       Units::MomentumUnit mom, 
+                       Units::LengthUnit len ) :
+       m_signal_process_id(signal_process_id), 
+       m_event_number(event_number),
+       m_mpi(-1),
+       m_event_scale(-1), 
+       m_alphaQCD(-1), 
+       m_alphaQED(-1),
+       m_signal_process_vertex(signal_vertex), 
+       m_beam_particle_1(0),
+       m_beam_particle_2(0),
+       m_weights(weights),
+       m_random_states(random_states),
+       m_vertex_barcodes(),
+       m_particle_barcodes(),
+       m_cross_section(0), 
+       m_heavy_ion(0), 
+       m_pdf_info(0),
+       m_momentum_unit(mom),
+       m_position_unit(len)
+    {
+        /// This constructor only allows null pointers to HeavyIon and PdfInfo
+       ///
+       /// note: default values for m_event_scale, m_alphaQCD, m_alphaQED
+       ///       are as suggested in hep-ph/0109068, "Generic Interface..."
+       ///
+    }
+
+    GenEvent::GenEvent( int signal_process_id, int event_number,
+                       GenVertex* signal_vertex,
+                       const WeightContainer& weights,
+                       const std::vector<long>& random_states,
+                       const HeavyIon& ion, 
+                       const PdfInfo& pdf,
+                       Units::MomentumUnit mom, 
+                       Units::LengthUnit len ) :
+       m_signal_process_id(signal_process_id), 
+       m_event_number(event_number),
+       m_mpi(-1),
+       m_event_scale(-1), 
+       m_alphaQCD(-1), 
+       m_alphaQED(-1),
+       m_signal_process_vertex(signal_vertex), 
+       m_beam_particle_1(0),
+       m_beam_particle_2(0),
+       m_weights(weights),
+       m_random_states(random_states), 
+       m_vertex_barcodes(),
+       m_particle_barcodes(),
+       m_cross_section(0), 
+       m_heavy_ion( new HeavyIon(ion) ), 
+       m_pdf_info( new PdfInfo(pdf) ),
+       m_momentum_unit(mom),
+       m_position_unit(len)
+    {
+        /// GenEvent makes its own copy of HeavyIon and PdfInfo
+       ///
+       /// note: default values for m_event_scale, m_alphaQCD, m_alphaQED
+       ///       are as suggested in hep-ph/0109068, "Generic Interface..."
+    }
+
+    GenEvent::GenEvent( Units::MomentumUnit mom, 
+                       Units::LengthUnit len, 
+                       int signal_process_id, 
+                        int event_number,
+                       GenVertex* signal_vertex,
+                       const WeightContainer& weights,
+                       const std::vector<long>& random_states ) :
+       m_signal_process_id(signal_process_id), 
+       m_event_number(event_number),
+       m_mpi(-1),
+       m_event_scale(-1), 
+       m_alphaQCD(-1), 
+       m_alphaQED(-1),
+       m_signal_process_vertex(signal_vertex), 
+       m_beam_particle_1(0),
+       m_beam_particle_2(0),
+       m_weights(weights),
+       m_random_states(random_states),
+       m_vertex_barcodes(),
+       m_particle_barcodes(),
+       m_cross_section(0), 
+       m_heavy_ion(0), 
+       m_pdf_info(0),
+       m_momentum_unit(mom),
+       m_position_unit(len)
+    {
+        /// constructor requiring units - all else is default
+        /// This constructor only allows null pointers to HeavyIon and PdfInfo
+       ///
+       /// note: default values for m_event_scale, m_alphaQCD, m_alphaQED
+       ///       are as suggested in hep-ph/0109068, "Generic Interface..."
+       ///
+    }
+
+    GenEvent::GenEvent( Units::MomentumUnit mom, 
+                       Units::LengthUnit len,
+                       int signal_process_id, int event_number,
+                       GenVertex* signal_vertex,
+                       const WeightContainer& weights,
+                       const std::vector<long>& random_states,
+                       const HeavyIon& ion, 
+                       const PdfInfo& pdf ) :
+       m_signal_process_id(signal_process_id), 
+       m_event_number(event_number),
+       m_mpi(-1),
+       m_event_scale(-1), 
+       m_alphaQCD(-1), 
+       m_alphaQED(-1),
+       m_signal_process_vertex(signal_vertex), 
+       m_beam_particle_1(0),
+       m_beam_particle_2(0),
+       m_weights(weights),
+       m_random_states(random_states), 
+       m_vertex_barcodes(),
+       m_particle_barcodes(),
+       m_cross_section(0), 
+       m_heavy_ion( new HeavyIon(ion) ), 
+       m_pdf_info( new PdfInfo(pdf) ),
+       m_momentum_unit(mom),
+       m_position_unit(len)
+    {
+        /// explicit constructor with units first that takes HeavyIon and PdfInfo
+        /// GenEvent makes its own copy of HeavyIon and PdfInfo
+       ///
+       /// note: default values for m_event_scale, m_alphaQCD, m_alphaQED
+       ///       are as suggested in hep-ph/0109068, "Generic Interface..."
+    }
+
+    GenEvent::GenEvent( const GenEvent& inevent ) 
+      : m_signal_process_id    ( inevent.signal_process_id() ),
+       m_event_number         ( inevent.event_number() ),
+       m_mpi                  ( inevent.mpi() ),
+       m_event_scale          ( inevent.event_scale() ),
+       m_alphaQCD             ( inevent.alphaQCD() ),
+       m_alphaQED             ( inevent.alphaQED() ),
+       m_signal_process_vertex( /* inevent.m_signal_process_vertex */ ),
+       m_beam_particle_1      ( /* inevent.m_beam_particle_1 */ ),
+       m_beam_particle_2      ( /* inevent.m_beam_particle_2 */ ),
+       m_weights              ( /* inevent.m_weights */ ),
+       m_random_states        ( /* inevent.m_random_states */ ),
+       m_vertex_barcodes      ( /* inevent.m_vertex_barcodes */ ),
+       m_particle_barcodes    ( /* inevent.m_particle_barcodes */ ),
+       m_cross_section        ( inevent.cross_section() ? new GenCrossSection(*inevent.cross_section()) : 0 ),
+       m_heavy_ion            ( inevent.heavy_ion() ? new HeavyIon(*inevent.heavy_ion()) : 0 ),
+       m_pdf_info             ( inevent.pdf_info() ? new PdfInfo(*inevent.pdf_info()) : 0 ),
+       m_momentum_unit        ( inevent.momentum_unit() ),
+       m_position_unit        ( inevent.length_unit() )
+    {
+       /// deep copy - makes a copy of all vertices!
+       //
+
+       // 1. create a NEW copy of all vertices from inevent
+       //    taking care to map new vertices onto the vertices being copied
+       //    and add these new vertices to this event.
+       //    We do not use GenVertex::operator= because that would copy
+       //    the attached particles as well.
+       std::map<const GenVertex*,GenVertex*> map_in_to_new;
+       for ( GenEvent::vertex_const_iterator v = inevent.vertices_begin();
+             v != inevent.vertices_end(); ++v ) {
+           GenVertex* newvertex = new GenVertex(
+               (*v)->position(), (*v)->id(), (*v)->weights() );
+            newvertex->suggest_barcode( (*v)->barcode() );
+           map_in_to_new[*v] = newvertex;
+           add_vertex( newvertex );
+       }
+       // 2. copy the signal process vertex info.
+       if ( inevent.signal_process_vertex() ) {
+           set_signal_process_vertex( 
+               map_in_to_new[inevent.signal_process_vertex()] );
+       } else set_signal_process_vertex( 0 );
+        //
+        // 3. create a NEW copy of all particles from inevent
+        //    taking care to attach them to the appropriate vertex
+       GenParticle* beam1(0);
+       GenParticle* beam2(0);
+        for ( GenEvent::particle_const_iterator p = inevent.particles_begin();
+              p != inevent.particles_end(); ++p ) 
+        {
+           GenParticle* oldparticle = *p;
+           GenParticle* newparticle = new GenParticle(*oldparticle);
+           if ( oldparticle->end_vertex() ) {
+                map_in_to_new[ oldparticle->end_vertex() ]->
+                                         add_particle_in(newparticle);
+            }
+            if ( oldparticle->production_vertex() ) {
+                map_in_to_new[ oldparticle->production_vertex() ]->
+                                         add_particle_out(newparticle);
+            }
+           if ( oldparticle == inevent.beam_particles().first ) beam1 = newparticle;
+           if ( oldparticle == inevent.beam_particles().second ) beam2 = newparticle;
+        }
+       set_beam_particles( beam1, beam2 );
+       //
+       // 4. now that vtx/particles are copied, copy weights and random states
+       set_random_states( inevent.random_states() );
+       weights() = inevent.weights();
+    }
+
+    void GenEvent::swap( GenEvent & other )
+    {
+        // if a container has a swap method, use that for improved performance
+       std::swap(m_signal_process_id    , other.m_signal_process_id    );
+       std::swap(m_event_number         , other.m_event_number         );
+       std::swap(m_mpi                  , other.m_mpi                  );
+       std::swap(m_event_scale          , other.m_event_scale          );
+       std::swap(m_alphaQCD             , other.m_alphaQCD             );
+       std::swap(m_alphaQED             , other.m_alphaQED             );
+       std::swap(m_signal_process_vertex, other.m_signal_process_vertex);
+       std::swap(m_beam_particle_1      , other.m_beam_particle_1      );
+       std::swap(m_beam_particle_2      , other.m_beam_particle_2      );
+       m_weights.swap(           other.m_weights  );
+       m_random_states.swap(     other.m_random_states  );
+       m_vertex_barcodes.swap(   other.m_vertex_barcodes );
+       m_particle_barcodes.swap( other.m_particle_barcodes );
+       std::swap(m_cross_section        , other.m_cross_section        );
+       std::swap(m_heavy_ion            , other.m_heavy_ion            );
+       std::swap(m_pdf_info             , other.m_pdf_info             );
+       std::swap(m_momentum_unit       , other.m_momentum_unit       );
+       std::swap(m_position_unit       , other.m_position_unit       );
+       // must now adjust GenVertex back pointers
+       for ( GenEvent::vertex_const_iterator vthis = vertices_begin();
+             vthis != vertices_end(); ++vthis ) {
+           (*vthis)->change_parent_event_( this );
+       }
+       for ( GenEvent::vertex_const_iterator voth = other.vertices_begin();
+             voth != other.vertices_end(); ++voth ) {
+           (*voth)->change_parent_event_( &other );
+       }
+    }
+
+    GenEvent::~GenEvent() 
+    {
+       /// Deep destructor.
+       /// deletes all vertices/particles in this GenEvent
+       /// deletes the associated HeavyIon and PdfInfo
+       delete_all_vertices();
+       delete m_cross_section;
+       delete m_heavy_ion;
+       delete m_pdf_info;
+    }
+
+    GenEvent& GenEvent::operator=( const GenEvent& inevent ) 
+    {
+        /// best practices implementation
+       GenEvent tmp( inevent );
+       swap( tmp );
+       return *this;
+    }
+
+    void GenEvent::print( std::ostream& ostr ) const {
+       /// dumps the content of this event to ostr
+       ///   to dump to cout use: event.print();
+       ///   if you want to write this event to file outfile.txt you could use:
+       ///      std::ofstream outfile("outfile.txt"); event.print( outfile );
+       ostr << "________________________________________"
+            << "________________________________________\n";
+       ostr << "GenEvent: #" << event_number() 
+            << " ID=" << signal_process_id() 
+            << " SignalProcessGenVertex Barcode: " 
+            << ( signal_process_vertex() ? signal_process_vertex()->barcode()
+                 : 0 )
+            << "\n";
+       write_units( ostr );
+        write_cross_section(ostr);
+       ostr << " Entries this event: " << vertices_size() << " vertices, "
+            << particles_size() << " particles.\n"; 
+       if( m_beam_particle_1 && m_beam_particle_2 ) {
+         ostr << " Beam Particle barcodes: " << beam_particles().first->barcode() << " "
+              << beam_particles().second->barcode() << " \n";
+       } else {
+         ostr << " Beam Particles are not defined.\n";
+       }
+       // Random State
+       ostr << " RndmState(" << m_random_states.size() << ")=";
+       for ( std::vector<long>::const_iterator rs 
+                 = m_random_states.begin();
+             rs != m_random_states.end(); ++rs ) { ostr << *rs << " "; }
+       ostr << "\n";
+       // Weights
+       ostr << " Wgts(" << weights().size() << ")=";
+       weights().print(ostr);
+       ostr << " EventScale " << event_scale() 
+            << " [energy] \t alphaQCD=" << alphaQCD() 
+            << "\t alphaQED=" << alphaQED() << std::endl;
+       // print a legend to describe the particle info
+       ostr << "                                    GenParticle Legend\n";
+       ostr  << "        Barcode   PDG ID      "
+             << "( Px,       Py,       Pz,     E )"
+             << " Stat  DecayVtx\n";
+       ostr << "________________________________________"
+            << "________________________________________\n";
+       // Print all Vertices
+       for ( GenEvent::vertex_const_iterator vtx = this->vertices_begin();
+             vtx != this->vertices_end(); ++vtx ) {
+           (*vtx)->print(ostr); 
+       }
+       ostr << "________________________________________"
+            << "________________________________________" << std::endl;
+    }
+
+    void GenEvent::print_version( std::ostream& ostr ) const {
+        ostr << "---------------------------------------------" << std::endl;
+        writeVersion( ostr );
+        ostr << "---------------------------------------------" << std::endl;
+    }
+
+    bool GenEvent::add_vertex( GenVertex* vtx ) {
+       /// returns true if successful - generally will only return false
+       /// if the inserted vertex is already included in the event.
+       if ( !vtx ) return false;
+       // if vtx previously pointed to another GenEvent, remove it from that
+       // GenEvent's list
+       if ( vtx->parent_event() && vtx->parent_event() != this ) {
+           bool remove_status = vtx->parent_event()->remove_vertex( vtx );
+           if ( !remove_status ) {            
+               std::cerr << "GenEvent::add_vertex ERROR "
+                         << "GenVertex::parent_event points to \n"
+                         << "an event that does not point back to the "
+                         << "GenVertex. \n This probably indicates a deeper "
+                         << "problem. " << std::endl;
+           }
+       }
+       //
+       // setting the vertex parent also inserts the vertex into this
+       // event
+       vtx->set_parent_event_( this );
+       return ( m_vertex_barcodes.count(vtx->barcode()) ? true : false );
+    }
+
+    bool GenEvent::remove_vertex( GenVertex* vtx ) {
+       /// this removes vtx from the event but does NOT delete it.
+       /// returns True if an entry vtx existed in the table and was erased
+       if ( m_signal_process_vertex == vtx ) m_signal_process_vertex = 0;
+       if ( vtx->parent_event() == this ) vtx->set_parent_event_( 0 );
+       return ( m_vertex_barcodes.count(vtx->barcode()) ? false : true );
+    }
+
+    void GenEvent::clear() 
+    {
+       /// remove all information from the event
+       /// deletes all vertices/particles in this evt
+       ///
+       delete_all_vertices();
+       // remove existing objects and set pointers to null
+       delete m_cross_section;
+       m_cross_section = 0;
+       delete m_heavy_ion;
+       m_heavy_ion = 0;
+       delete m_pdf_info;
+       m_pdf_info = 0;
+       m_signal_process_id = 0;
+        m_beam_particle_1 = 0;
+       m_beam_particle_2 = 0;
+       m_event_number = 0;
+       m_mpi = -1;
+       m_event_scale = -1;
+       m_alphaQCD = -1;
+       m_alphaQED = -1;
+       m_weights = std::vector<double>();
+       m_random_states = std::vector<long>();
+       // resetting unit information
+       m_momentum_unit = Units::default_momentum_unit();
+       m_position_unit = Units::default_length_unit();
+        // error check just to be safe
+       if ( m_vertex_barcodes.size() != 0 
+            || m_particle_barcodes.size() != 0 ) {
+           std::cerr << "GenEvent::clear() strange result ... \n"
+                     << "either the particle and/or the vertex map isn't empty" << std::endl;
+            std::cerr << "Number vtx,particle the event after deleting = "
+                      << m_vertex_barcodes.size() << "  " 
+                     << m_particle_barcodes.size() << std::endl;
+        }
+       return;
+    }
+    
+    void GenEvent::delete_all_vertices() {
+       /// deletes all vertices in the vertex container
+       /// (i.e. all vertices owned by this event)
+       /// The vertices are the "owners" of the particles, so as we delete
+       ///   the vertices, the vertex desctructors are automatically
+       ///   deleting their particles.
+
+       // delete each vertex individually (this deletes particles as well)
+       while ( !vertices_empty() ) {
+           GenVertex* vtx = ( m_vertex_barcodes.begin() )->second;
+            m_vertex_barcodes.erase( m_vertex_barcodes.begin() );
+            delete vtx;
+       }
+       //
+       // Error checking:
+       if ( !vertices_empty() || ! particles_empty() ) {
+           std::cerr << "GenEvent::delete_all_vertices strange result ... "
+                     << "after deleting all vertices, \nthe particle and "
+                     << "vertex maps aren't empty.\n  This probably " 
+                     << "indicates deeper problems or memory leak in the "
+                     << "code." << std::endl;
+            std::cerr << "Number vtx,particle the event after deleting = "
+                      << m_vertex_barcodes.size() << "  " 
+                     << m_particle_barcodes.size() << std::endl;
+       }
+    }
+    
+    bool GenEvent::set_barcode( GenParticle* p, int suggested_barcode )
+    {
+       if ( p->parent_event() != this ) {
+           std::cerr << "GenEvent::set_barcode attempted, but the argument's"
+                     << "\n parent_event is not this ... request rejected."
+                     << std::endl;
+           return false;
+       }
+       // M.Dobbs  Nov 4, 2002
+       // First we must check to see if the particle already has a
+       // barcode which is different from the suggestion. If yes, we
+       // remove it from the particle map.
+       if ( p->barcode() != 0 && p->barcode() != suggested_barcode ) {
+           if ( m_particle_barcodes.count(p->barcode()) &&
+                m_particle_barcodes[p->barcode()] == p ) {
+               m_particle_barcodes.erase( p->barcode() );
+           }
+           // At this point either the particle is NOT in
+           // m_particle_barcodes, or else it is in the map, but
+           // already with the suggested barcode.
+       }
+       //
+       // First case --- a valid barcode has been suggested
+       //     (valid barcodes are numbers greater than zero)
+       bool insert_success = true;
+       if ( suggested_barcode > 0 ) {
+           if ( m_particle_barcodes.count(suggested_barcode) ) {
+               // the suggested_barcode is already used.
+               if ( m_particle_barcodes[suggested_barcode] == p ) {
+                   // but it was used for this particle ... so everythings ok
+                   p->set_barcode_( suggested_barcode );
+                   return true;
+               }
+               insert_success = false;
+               suggested_barcode = 0;
+           } else { // suggested barcode is OK, proceed to insert
+               m_particle_barcodes[suggested_barcode] = p;
+               p->set_barcode_( suggested_barcode );
+               return true;
+           }
+       }
+       //
+       // Other possibility -- a valid barcode has not been suggested,
+       //    so one is automatically generated
+       if ( suggested_barcode < 0 ) insert_success = false;
+       if ( suggested_barcode <= 0 ) {
+           if ( !m_particle_barcodes.empty() ) {
+               // in this case we find the highest barcode that was used,
+               // and increment it by 1
+               suggested_barcode = m_particle_barcodes.rbegin()->first;
+               ++suggested_barcode;
+           }
+           // For the automatically assigned barcodes, the first one
+           //   we use is 10001 ... this is just because when we read 
+           //   events from HEPEVT, we will suggest their index as the
+           //   barcode, and that index has maximum value 10000.
+           //  This way we will immediately be able to recognize the hepevt
+           //   particles from the auto-assigned ones.
+           if ( suggested_barcode <= 10000 ) suggested_barcode = 10001;
+       }
+       // At this point we should have a valid barcode
+       if ( m_particle_barcodes.count(suggested_barcode) ) {
+           std::cerr << "GenEvent::set_barcode ERROR, this should never "
+                     << "happen \n report bug to matt.dobbs@cern.ch" 
+                     << std::endl;
+       }
+       m_particle_barcodes[suggested_barcode] = p;
+       p->set_barcode_( suggested_barcode );
+       return insert_success;
+    }
+
+    bool GenEvent::set_barcode( GenVertex* v, int suggested_barcode )
+    {
+       if ( v->parent_event() != this ) {
+           std::cerr << "GenEvent::set_barcode attempted, but the argument's"
+                     << "\n parent_event is not this ... request rejected."
+                     << std::endl;
+           return false;
+       }
+       // M.Dobbs Nov 4, 2002
+       // First we must check to see if the vertex already has a
+       // barcode which is different from the suggestion. If yes, we
+       // remove it from the vertex map.
+       if ( v->barcode() != 0 && v->barcode() != suggested_barcode ) {
+           if ( m_vertex_barcodes.count(v->barcode()) &&
+                m_vertex_barcodes[v->barcode()] == v ) {
+               m_vertex_barcodes.erase( v->barcode() );
+           }
+           // At this point either the vertex is NOT in
+           // m_vertex_barcodes, or else it is in the map, but
+           // already with the suggested barcode.
+       }
+       
+       //
+       // First case --- a valid barcode has been suggested
+       //     (valid barcodes are numbers greater than zero)
+       bool insert_success = true;
+       if ( suggested_barcode < 0 ) {
+           if ( m_vertex_barcodes.count(suggested_barcode) ) {
+               // the suggested_barcode is already used.
+               if ( m_vertex_barcodes[suggested_barcode] == v ) {
+                   // but it was used for this vertex ... so everythings ok
+                   v->set_barcode_( suggested_barcode );
+                   return true;
+               }
+               insert_success = false;
+               suggested_barcode = 0;
+           } else { // suggested barcode is OK, proceed to insert
+               m_vertex_barcodes[suggested_barcode] = v;
+               v->set_barcode_( suggested_barcode );
+               return true;
+           }
+       }
+       //
+       // Other possibility -- a valid barcode has not been suggested,
+       //    so one is automatically generated
+       if ( suggested_barcode > 0 ) insert_success = false;
+       if ( suggested_barcode >= 0 ) {
+           if ( !m_vertex_barcodes.empty() ) {
+               // in this case we find the highest barcode that was used,
+               // and increment it by 1, (vertex barcodes are negative)
+               suggested_barcode = m_vertex_barcodes.rbegin()->first;
+               --suggested_barcode;
+           }
+           if ( suggested_barcode >= 0 ) suggested_barcode = -1;
+       }
+       // At this point we should have a valid barcode
+       if ( m_vertex_barcodes.count(suggested_barcode) ) {
+           std::cerr << "GenEvent::set_barcode ERROR, this should never "
+                     << "happen \n report bug to matt.dobbs@cern.ch" 
+                     << std::endl;
+       }
+       m_vertex_barcodes[suggested_barcode] = v;
+       v->set_barcode_( suggested_barcode );
+       return insert_success;
+    }
+
+    /// test to see if we have two valid beam particles
+    bool  GenEvent::valid_beam_particles() const {
+        bool have1 = false;
+        bool have2 = false;
+       // first check that both are defined
+        if(m_beam_particle_1 && m_beam_particle_2) {
+           // now look for a match with the particle "list"
+            for ( particle_const_iterator p = particles_begin();
+                 p != particles_end(); ++p ) {
+               if( m_beam_particle_1 == *p ) have1 = true;
+               if( m_beam_particle_2 == *p ) have2 = true;
+           }
+       }
+       if( have1 && have2 ) return true;
+       return false;
+    }
+    
+    /// construct the beam particle information using pointers to GenParticle
+    /// returns false if either GenParticle* is null
+    bool  GenEvent::set_beam_particles(GenParticle* bp1, GenParticle* bp2) {
+       m_beam_particle_1 = bp1;
+       m_beam_particle_2 = bp2;
+       if( m_beam_particle_1 && m_beam_particle_2 ) return true;
+       return false;
+    }
+
+    /// construct the beam particle information using a std::pair of pointers to GenParticle
+    /// returns false if either GenParticle* is null
+    bool  GenEvent::set_beam_particles(std::pair<HepMC::GenParticle*, HepMC::GenParticle*> const & bp) {
+       return set_beam_particles(bp.first,bp.second);
+    }
+
+    void GenEvent::write_units( std::ostream & os ) const {
+       os << " Momenutm units:" << std::setw(8) << name(momentum_unit());
+       os << "     Position units:" << std::setw(8) << name(length_unit());
+       os << std::endl;
+    }
+
+    void GenEvent::write_cross_section( std::ostream& os ) const
+    {
+       // write the GenCrossSection information if the cross section was set
+       if( !cross_section() ) return;
+       if( cross_section()->is_set() ) {
+           os << " Cross Section: " << cross_section()->cross_section() ;
+           os << " +/- " << cross_section()->cross_section_error() ;
+           os << std::endl;
+       }
+    }
+
+   bool GenEvent::use_momentum_unit( Units::MomentumUnit newunit ) { 
+       // currently not exception-safe. 
+       // Easy to fix, though, if needed.
+       if ( m_momentum_unit != newunit ) { 
+           const double factor = Units::conversion_factor( m_momentum_unit, newunit );
+           // multiply all momenta by 'factor',  
+           // loop is entered only if particle list is not empty
+            for ( GenEvent::particle_iterator p = particles_begin();
+                                              p != particles_end(); ++p ) 
+            {
+               (*p)->convert_momentum(factor);
+            }
+           // ... 
+           m_momentum_unit = newunit; 
+       }
+       return true; 
+    }
+    
+    bool GenEvent::use_length_unit( Units::LengthUnit newunit ) { 
+       // currently not exception-safe. 
+       // Easy to fix, though, if needed.
+       if ( m_position_unit != newunit ) { 
+           const double factor = Units::conversion_factor( m_position_unit, newunit );
+           // multiply all lengths by 'factor', 
+           // loop is entered only if vertex list is not empty
+           for ( GenEvent::vertex_iterator vtx = vertices_begin();
+                                           vtx != vertices_end(); ++vtx ) {
+               (*vtx)->convert_position(factor);
+           }
+           // ... 
+           m_position_unit = newunit; 
+       } 
+       return true; 
+    }  
+
+    bool GenEvent::use_momentum_unit( std::string& newunit ) { 
+        if     ( newunit == "MEV" ) return use_momentum_unit( Units::MEV );
+       else if( newunit == "GEV" ) return use_momentum_unit( Units::GEV );
+       else std::cerr << "GenEvent::use_momentum_unit ERROR: use either MEV or GEV\n";
+       return false;
+    }
+    
+    bool GenEvent::use_length_unit( std::string& newunit ) { 
+        if     ( newunit == "MM" ) return use_length_unit( Units::MM );
+       else if( newunit == "CM" ) return use_length_unit( Units::CM );
+       else std::cerr << "GenEvent::use_length_unit ERROR: use either MM or CM\n";
+       return false;
+    }  
+    
+    void GenEvent::define_units( std::string& new_m, std::string& new_l ) { 
+
+        if     ( new_m == "MEV" ) m_momentum_unit = Units::MEV ;
+       else if( new_m == "GEV" ) m_momentum_unit = Units::GEV ;
+       else std::cerr << "GenEvent::define_units ERROR: use either MEV or GEV\n";
+
+        if     ( new_l == "MM" ) m_position_unit = Units::MM ;
+       else if( new_l == "CM" ) m_position_unit = Units::CM ;
+       else std::cerr << "GenEvent::define_units ERROR: use either MM or CM\n";
+
+    }
+
+    bool GenEvent::is_valid() const {
+        /// A GenEvent is presumed valid if it has both associated
+       /// particles and vertices.   No other information is checked.
+        if ( vertices_empty() ) return false;
+       if ( particles_empty() ) return false;
+       return true;
+    }
+
+    std::ostream & GenEvent::write_beam_particles(std::ostream & os, 
+                        std::pair<HepMC::GenParticle *,HepMC::GenParticle *> pr )
+    {
+       GenParticle* p = pr.first;
+       if(!p) {
+          detail::output( os, 0 );
+       } else {
+          detail::output( os, p->barcode() );
+       }
+       p = pr.second;
+       if(!p) {
+          detail::output( os, 0 );
+       } else {
+          detail::output( os, p->barcode() );
+       }
+
+       return os;
+    }
+
+    std::ostream & GenEvent::write_vertex(std::ostream & os, GenVertex const * v)
+    {
+       if ( !v || !os ) {
+           std::cerr << "GenEvent::write_vertex !v||!os, "
+                     << "v="<< v << " setting badbit" << std::endl;
+           os.clear(std::ios::badbit); 
+           return os;
+       }
+       // First collect info we need
+       // count the number of orphan particles going into v
+       int num_orphans_in = 0;
+       for ( GenVertex::particles_in_const_iterator p1
+                 = v->particles_in_const_begin();
+             p1 != v->particles_in_const_end(); ++p1 ) {
+           if ( !(*p1)->production_vertex() ) ++num_orphans_in;
+       }
+       //
+       os << 'V';
+       detail::output( os, v->barcode() ); // v's unique identifier
+       detail::output( os, v->id() );
+       detail::output( os, v->position().x() );
+       detail::output( os, v->position().y() );
+       detail::output( os, v->position().z() );
+       detail::output( os, v->position().t() );
+       detail::output( os, num_orphans_in );
+       detail::output( os, (int)v->particles_out_size() );
+       detail::output( os, (int)v->weights().size() );
+       for ( WeightContainer::const_iterator w = v->weights().begin(); 
+             w != v->weights().end(); ++w ) {
+           detail::output( os, *w );
+       }
+       detail::output( os,'\n');
+       // incoming particles
+       for ( GenVertex::particles_in_const_iterator p2 
+                 = v->particles_in_const_begin();
+             p2 != v->particles_in_const_end(); ++p2 ) {
+           if ( !(*p2)->production_vertex() ) {
+               write_particle( os, *p2 );
+           }
+       }
+       // outgoing particles
+       for ( GenVertex::particles_out_const_iterator p3 
+                 = v->particles_out_const_begin();
+             p3 != v->particles_out_const_end(); ++p3 ) {
+           write_particle( os, *p3 );
+       }
+       return os;
+    }
+
+    std::ostream & GenEvent::write_particle( std::ostream & os, GenParticle const * p )
+    {
+       if ( !p || !os ) {
+           std::cerr << "GenEvent::write_particle !p||!os, "
+                     << "p="<< p << " setting badbit" << std::endl;
+           os.clear(std::ios::badbit); 
+           return os;
+       }
+       os << 'P';
+       detail::output( os, p->barcode() );
+       detail::output( os, p->pdg_id() );
+       detail::output( os, p->momentum().px() );
+       detail::output( os, p->momentum().py() );
+       detail::output( os, p->momentum().pz() );
+       detail::output( os, p->momentum().e() );
+       detail::output( os, p->generated_mass() );
+       detail::output( os, p->status() );
+       detail::output( os, p->polarization().theta() );
+       detail::output( os, p->polarization().phi() );
+       // since end_vertex is oftentimes null, this CREATES a null vertex
+       // in the map
+       detail::output( os,   ( p->end_vertex() ? p->end_vertex()->barcode() : 0 )  );
+       os << ' ' << p->flow() << "\n";
+
+       return os;
+    }
+
+} // HepMC
diff --git a/TEvtGen/HepMC/GenEvent.h b/TEvtGen/HepMC/GenEvent.h
new file mode 100644 (file)
index 0000000..17bac2c
--- /dev/null
@@ -0,0 +1,877 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_GEN_EVENT_H
+#define HEPMC_GEN_EVENT_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// Event record for MC generators (for use at any stage of generation)
+//////////////////////////////////////////////////////////////////////////
+//
+// This class is intended as both a "container class" ( to store a MC
+//  event for interface between MC generators and detector simulation )
+//  and also as a "work in progress class" ( that could be used inside
+//  a generator and modified as the event is built ).
+//
+// Iterators are provided which allow the user to easily obtain a
+//  list of particles or vertices in an event --- this list can be filled
+//  subject to some sort of selection criteria. Examples are given below
+//  ( see HepMC::copy_if and std::copy )
+
+///
+/// \namespace HepMC
+/// All classes in the HepMC packages are in the HepMC namespace 
+///
+namespace HepMC {
+
+    // To create a list from an iterator, use: (i.e. for a list of particles);
+    // #include <algorithm>
+    //     list<GenParticle*> thelist;
+    //     copy( evt->particles_begin(), evt->particles_end(), 
+    //           back_inserter(thelist) );
+    // to create a list subject to a condition (predicate) use:
+    //     list<GenParticle*> thelist;
+    //     HepMC::copy_if( evt->particles_begin(), evt->particles_end(), 
+    //                     back_inserter(thelist), is_photon() );
+    // where is_photon() is a predicate like:
+    //     class is_photon {
+    //       public:
+    //         bool operator() ( GenParticle const * p ) {
+    //             if ( p && p->pdg_id() == 22 ) return true;
+    //             return false;
+    //         }
+    //     };
+    // which the user defines herself.
+
+    /// define the type of iterator to use
+    template <class InputIterator, class OutputIterator, class Predicate>
+    void copy_if( InputIterator first, InputIterator last, OutputIterator out,
+                 Predicate pred ) {
+       for ( ; first != last; ++first ) { if ( pred(*first) ) out = *first; }
+    }
+} // HepMC
+
+// Since a container of all vertices in the event is maintained, the time
+//  required to loop over all vertices (or particles) is very fast -- and 
+//  the user does not gain much by first making his own list.
+//  (this is not true for the GenVertex:: versions of these iterators, which
+//   allow you to specify the vertex starting point and range)
+
+// Data Members:
+// signal_process_id()   The integer ID that uniquely specifies this signal
+//                       process, i.e. MSUB in Pythia. It is necessary to
+//                       package this with each event rather than with the run
+//                       because many processes may be generated within one
+//                       run.
+// event_number()        Strictly speaking we cannot think of any reason that
+//                       an event would need to know its own event number, it
+//                       is more likely something that would be assigned by
+//                       a database. It is included anyway (tradition?) since
+//                       we expect it may be useful for debugging. It can
+//                       be reset later by a database.
+// mpi()                 The number of multi parton interactions in the event.
+//                       This is NOT beam pileup.  Set to -1 by default.
+// beam_particles()      A pair of pointers to the incoming beam particles.
+// signal_process_vertex() pointer to the vertex containing the signal process
+// weights()             Vector of doubles which specify th weight of the evnt,
+//                       the first entry will be the "event weight" used for
+//                       hit and miss etc., but a general vector is used to
+//                       allow for reweighting etc. We envision a list of
+//                       WeightTags to be included with a run class which
+//                       would specify the meaning of the Weights .
+// random_states()       Vector of integers which specify the random number 
+//                       generator's state for this event. It is left to the
+//                       generator to make use of this. We envision a vector of
+//                       RndmStatesTags to be included with a run class which
+//                       would specify the meaning of the random_states.
+//
+///////////////////////
+// Memory allocation //
+///////////////////////
+// -When a vertex (particle) is added to a event (vertex), it is "adopted" 
+//  and becomes the responsibility of the event (vertex) to delete that 
+//  particle. 
+// -objects responsible for deleting memory:
+//    -events delete included vertices
+//    -each vertex deletes its outgoing particles which do not have decay
+//     vertices
+//    -each vertex deletes its incoming particles which do not
+//     have creation vertices 
+//
+////////////////////////
+// About the Barcodes //
+////////////////////////
+// - each vertex or particle has a barcode, which is just an integer which
+//   uniquely identifies it inside the event (i.e. there is a one to one
+//   mapping between particle memory addresses and particle barcodes... and 
+//   the same applied for vertices)
+// - The value of a barcode has NO MEANING and NO ORDER!
+//   For the user's convenience, when an event is read in via an IO_method
+//   from an indexed list (like the HEPEVT common block), then the index will
+//   become the barcode for that particle.
+// - particle barcodes are always positive integers
+//   vertex barcodes are always negative integers
+//   The barcodes are chosen and set automatically when a vertex or particle
+//   comes under the ownership of an event (i.e. it is contained in an event).
+// - You can tell when a particle or vertex is owned, because its 
+//   parent_event() return value will return a pointer to the event which owns
+//   it (or null if its an orphan).
+// - Please note that the barcodes are intended for internal use within HepMC 
+//   as a unique identifier for the particles and vertices.
+//   Using the barcode to encode extra information is an abuse of 
+//   the barcode data member and causes confusion among users. 
+// 
+
+#include "HepMC/GenVertex.h"
+#include "HepMC/GenParticle.h"
+#include "HepMC/WeightContainer.h"
+#include "HepMC/GenCrossSection.h"
+#include "HepMC/HeavyIon.h"
+#include "HepMC/PdfInfo.h"
+#include "HepMC/Units.h"
+#include "HepMC/HepMCDefs.h"
+#include <map>
+#include <string>
+#include <vector>
+#include <algorithm>
+#include <iostream>
+
+namespace HepMC {
+
+    class GenEventVertexRange;
+    class ConstGenEventVertexRange;
+    class GenEventParticleRange;
+    class ConstGenEventParticleRange;
+
+    //! The GenEvent class is the core of HepMC
+
+    ///
+    /// \class GenEvent 
+    /// HepMC::GenEvent contains information about generated particles.
+    /// GenEvent is structured as a set of vertices which contain the particles.
+    ///
+    class GenEvent {
+       friend class GenParticle;
+       friend class GenVertex;  
+    public:
+        /// default constructor creates null pointers to HeavyIon, PdfInfo, and GenCrossSection
+       GenEvent( int signal_process_id = 0, int event_number = 0,
+                 GenVertex* signal_vertex = 0,
+                 const WeightContainer& weights = std::vector<double>(),
+                 const std::vector<long>& randomstates = std::vector<long>(),
+                 Units::MomentumUnit = Units::default_momentum_unit(), 
+                 Units::LengthUnit = Units::default_length_unit() );
+        /// explicit constructor that takes HeavyIon and PdfInfo
+       GenEvent( int signal_process_id, int event_number,
+                 GenVertex* signal_vertex, const WeightContainer& weights,
+                 const std::vector<long>& randomstates,
+                 const HeavyIon& ion, const PdfInfo& pdf,
+                 Units::MomentumUnit = Units::default_momentum_unit(), 
+                 Units::LengthUnit = Units::default_length_unit() );
+        /// constructor requiring units - all else is default
+       GenEvent( Units::MomentumUnit, Units::LengthUnit,
+                 int signal_process_id = 0, int event_number = 0,
+                 GenVertex* signal_vertex = 0,
+                 const WeightContainer& weights = std::vector<double>(),
+                 const std::vector<long>& randomstates = std::vector<long>() );
+        /// explicit constructor with units first that takes HeavyIon and PdfInfo
+       GenEvent( Units::MomentumUnit, Units::LengthUnit,
+                 int signal_process_id, int event_number,
+                 GenVertex* signal_vertex, const WeightContainer& weights,
+                 const std::vector<long>& randomstates,
+                 const HeavyIon& ion, const PdfInfo& pdf );
+       GenEvent( const GenEvent& inevent );          //!< deep copy
+       GenEvent& operator=( const GenEvent& inevent ); //!< make a deep copy
+       virtual ~GenEvent(); //!<deletes all vertices/particles in this evt
+
+        void swap( GenEvent & other );  //!< swap
+    
+       void print( std::ostream& ostr = std::cout ) const; //!< dumps to ostr
+       void print_version( std::ostream& ostr = std::cout ) const; //!< dumps release version to ostr
+
+        /// assign a barcode to a particle
+       GenParticle* barcode_to_particle( int barCode ) const;
+        /// assign a barcode to a vertex
+       GenVertex*   barcode_to_vertex(   int barCode ) const;
+
+       ////////////////////
+       // access methods //
+       ////////////////////
+
+       int signal_process_id() const; //!<  unique signal process id
+       int event_number() const; //!<  event number
+       int mpi() const;          //!<  number of multi parton interactions
+       double event_scale() const; //!< energy scale, see hep-ph/0109068
+       double alphaQCD() const; //!<  QCD coupling, see hep-ph/0109068
+       double alphaQED() const; //!<  QED coupling, see hep-ph/0109068
+        /// pointer to the vertex containing the signal process
+       GenVertex* signal_process_vertex() const;
+       /// test to see if we have two valid beam particles
+       bool valid_beam_particles() const;
+       /// pair of pointers to the two incoming beam particles
+       std::pair<HepMC::GenParticle*,HepMC::GenParticle*> beam_particles() const;
+       /// check GenEvent for validity
+       /// A GenEvent is presumed valid if it has particles and/or vertices.
+       bool is_valid() const;
+
+       /// direct access to the weights container is allowed. 
+       /// Thus you can use myevt.weights()[2];
+       /// to access element 2 of the weights.
+       /// or use myevt.weights().push_back( mywgt ); to add an element.
+       /// and you can set the weights with myevt.weights() = myvector;
+       WeightContainer&        weights(); //!< direct access to WeightContainer
+       const WeightContainer&  weights() const; //!< direct access to WeightContainer
+
+       /// access the GenCrossSection container if it exists
+       GenCrossSection const *     cross_section() const;
+       GenCrossSection*            cross_section();
+       /// access the HeavyIon container if it exists
+       HeavyIon const *         heavy_ion() const;
+       HeavyIon*                heavy_ion();
+       /// access the PdfInfo container if it exists
+       PdfInfo const *          pdf_info() const;
+       PdfInfo*                 pdf_info();
+
+       /// vector of integers containing information about the random state
+       const std::vector<long>& random_states() const;
+
+        /// how many particle barcodes exist?
+       int     particles_size() const;
+        /// return true if there are no particle barcodes
+       bool    particles_empty() const;
+        /// how many vertex barcodes exist?
+       int     vertices_size() const;
+        /// return true if there are no vertex barcodes
+       bool    vertices_empty() const;
+
+       /// Write the unit information to an output stream.  
+       /// If the output stream is not defined, use std::cout.
+        void write_units( std::ostream & os = std::cout ) const; 
+       /// If the cross section is defined,
+       /// write the cross section information to an output stream.  
+       /// If the output stream is not defined, use std::cout.
+       void write_cross_section( std::ostream& ostr = std::cout ) const;
+
+       /// Units used by the GenParticle momentum FourVector.
+       Units::MomentumUnit momentum_unit() const;
+       /// Units used by the GenVertex position FourVector.
+       Units::LengthUnit   length_unit()   const;
+       
+       std::ostream& write(std::ostream&);
+       std::istream& read(std::istream&);
+
+       /////////////////////
+       // mutator methods //
+       /////////////////////
+
+       bool    add_vertex( GenVertex* vtx );    //!< adds to evt and adopts
+       bool    remove_vertex( GenVertex* vtx ); //!< erases vtx from evt
+       void    clear();                         //!< empties the entire event
+       
+       void set_signal_process_id( int id ); //!< set unique signal process id
+       void set_event_number( int eventno ); //!< set event number
+       void set_mpi( int  ); //!< set number of multi parton interactions
+       void set_event_scale( double scale ); //!< set energy scale
+       void set_alphaQCD( double a ); //!< set QCD coupling
+       void set_alphaQED( double a ); //!< set QED coupling
+
+        /// set pointer to the vertex containing the signal process
+       void set_signal_process_vertex( GenVertex* );
+       /// set incoming beam particles
+       bool set_beam_particles(GenParticle*, GenParticle*);
+        /// use a pair of GenParticle*'s to set incoming beam particles
+       bool set_beam_particles(std::pair<HepMC::GenParticle*,HepMC::GenParticle*> const &);
+       /// provide random state information
+       void set_random_states( const std::vector<long>& randomstates );
+
+       /// provide a pointer to the GenCrossSection container
+       void set_cross_section( const GenCrossSection& );
+       /// provide a pointer to the HeavyIon container
+       void set_heavy_ion( const HeavyIon& ion );
+       /// provide a pointer to the PdfInfo container
+       void set_pdf_info( const PdfInfo& p );
+       
+       /// set the units using enums
+       /// This method will convert momentum and position data if necessary
+       void use_units( Units::MomentumUnit, Units::LengthUnit );
+       /// set the units using strings
+       /// the string must match the enum exactly
+       /// This method will convert momentum and position data if necessary
+        void use_units( std::string&, std::string& );
+       
+       /// set the units using enums
+       /// This method will NOT convert momentum and position data
+       void define_units( Units::MomentumUnit, Units::LengthUnit );
+       /// set the units using strings
+       /// the string must match the enum exactly
+       /// This method will NOT convert momentum and position data
+        void define_units( std::string&, std::string& );
+       
+       /// vertex range
+       GenEventVertexRange vertex_range();
+       /// vertex range
+       ConstGenEventVertexRange vertex_range() const;
+       /// particle range
+       GenEventParticleRange particle_range();
+       /// particle range
+       ConstGenEventParticleRange particle_range() const;
+
+    public:
+       ///////////////////////////////
+       // vertex_iterators          //
+       ///////////////////////////////
+       // Note:  the XXX_iterator is "resolvable" as XXX_const_iterator, but 
+       //  not the reverse, which is consistent with STL, 
+       //  see Musser, Derge, Saini 2ndEd. p. 69,70.
+
+       //!  const vertex iterator
+
+       /// \class  vertex_const_iterator
+       /// HepMC::GenEvent::vertex_const_iterator
+       /// is used to iterate over all vertices in the event.
+       class vertex_const_iterator :
+         public std::iterator<std::forward_iterator_tag,HepMC::GenVertex*,ptrdiff_t>{
+           // Iterates over all vertices in this event
+       public:
+           /// constructor requiring vertex information
+           vertex_const_iterator(
+               const 
+               std::map<int,HepMC::GenVertex*,std::greater<int> >::const_iterator& i)
+               : m_map_iterator(i) {}
+           vertex_const_iterator() {}
+           /// copy constructor
+           vertex_const_iterator( const vertex_const_iterator& i )
+               { *this = i; }
+           virtual ~vertex_const_iterator() {}
+           /// make a copy
+           vertex_const_iterator&  operator=( const vertex_const_iterator& i )
+               { m_map_iterator = i.m_map_iterator; return *this; }
+           /// return a pointer to a GenVertex
+           GenVertex* operator*(void) const { return m_map_iterator->second; }
+           /// Pre-fix increment
+           vertex_const_iterator&  operator++(void)  //Pre-fix increment 
+               { ++m_map_iterator; return *this; }
+           /// Post-fix increment
+           vertex_const_iterator   operator++(int)   //Post-fix increment
+               { vertex_const_iterator out(*this); ++(*this); return out; }
+           /// equality
+           bool  operator==( const vertex_const_iterator& a ) const
+               { return m_map_iterator == a.m_map_iterator; }
+           /// inequality
+           bool  operator!=( const vertex_const_iterator& a ) const
+               { return !(m_map_iterator == a.m_map_iterator); }
+       protected:
+           /// const iterator to a vertex map
+           std::map<int,HepMC::GenVertex*,std::greater<int> >::const_iterator 
+                                                               m_map_iterator;
+       private:
+           /// Pre-fix increment -- is not allowed
+           vertex_const_iterator&  operator--(void);
+           /// Post-fix increment -- is not allowed
+           vertex_const_iterator   operator--(int);
+       };
+       friend class vertex_const_iterator;
+       /// begin vertex iteration
+       vertex_const_iterator      vertices_begin() const
+           { return GenEvent::vertex_const_iterator( 
+               m_vertex_barcodes.begin() ); }
+       /// end vertex iteration
+       vertex_const_iterator      vertices_end() const
+           { return GenEvent::vertex_const_iterator(
+               m_vertex_barcodes.end() ); }
+
+
+       //!  non-const vertex iterator
+
+       /// \class  vertex_iterator
+       /// HepMC::GenEvent::vertex_iterator
+       /// is used to iterate over all vertices in the event.
+       class vertex_iterator :
+         public std::iterator<std::forward_iterator_tag,HepMC::GenVertex*,ptrdiff_t>{
+           // Iterates over all vertices in this event
+       public:
+           /// constructor requiring vertex information
+           vertex_iterator( 
+               const 
+               std::map<int,HepMC::GenVertex*,std::greater<int> >::iterator& i )
+               : m_map_iterator( i ) {}
+           vertex_iterator() {}
+           /// copy constructor
+           vertex_iterator( const vertex_iterator& i ) { *this = i; }
+           virtual ~vertex_iterator() {}
+           /// make a copy
+           vertex_iterator&  operator=( const vertex_iterator& i ) {
+               m_map_iterator = i.m_map_iterator;
+               return *this;
+           }
+           /// const vertex iterator
+           operator vertex_const_iterator() const
+               { return vertex_const_iterator(m_map_iterator); }
+           /// return a pointer to a GenVertex
+           GenVertex*        operator*(void) const
+               { return m_map_iterator->second; }
+           /// Pre-fix increment
+           vertex_iterator&  operator++(void)  //Pre-fix increment 
+               { ++m_map_iterator;     return *this; }
+           /// Post-fix increment
+           vertex_iterator   operator++(int)   //Post-fix increment
+               { vertex_iterator out(*this); ++(*this); return out; }
+           /// equality
+           bool              operator==( const vertex_iterator& a ) const
+               { return m_map_iterator == a.m_map_iterator; }
+           /// inequality
+           bool              operator!=( const vertex_iterator& a ) const
+               { return !(m_map_iterator == a.m_map_iterator); }
+       protected:
+           /// iterator to the vertex map
+           std::map<int,HepMC::GenVertex*,std::greater<int> >::iterator 
+                                                              m_map_iterator;
+       private:
+           /// Pre-fix increment
+           vertex_iterator&  operator--(void);
+           /// Post-fix increment
+           vertex_iterator   operator--(int);
+
+       };
+       friend class vertex_iterator;
+       /// begin vertex iteration
+       vertex_iterator            vertices_begin() 
+           { return GenEvent::vertex_iterator( 
+               m_vertex_barcodes.begin() ); }
+       /// end vertex iteration
+        vertex_iterator            vertices_end()
+           { return GenEvent::vertex_iterator(
+               m_vertex_barcodes.end() ); }
+
+    public:
+       ///////////////////////////////
+       // particle_iterator         //
+       ///////////////////////////////
+       // Example of iterating over all particles in the event:
+       //      for ( GenEvent::particle_const_iterator p = particles_begin();
+       //            p != particles_end(); ++p ) {
+       //         (*p)->print();
+       //      }
+       //
+
+       //!  const particle iterator
+
+       /// \class  particle_const_iterator
+       /// HepMC::GenEvent::particle_const_iterator 
+       /// is used to iterate over all particles in the event.
+       class particle_const_iterator :
+         public std::iterator<std::forward_iterator_tag,HepMC::GenParticle*,ptrdiff_t>{
+           // Iterates over all vertices in this event
+       public:
+           /// iterate over particles
+           particle_const_iterator(
+               const std::map<int,HepMC::GenParticle*>::const_iterator& i )
+               : m_map_iterator(i) {}
+           particle_const_iterator() {}
+           /// copy constructor
+           particle_const_iterator( const particle_const_iterator& i )
+               { *this = i; }
+           virtual ~particle_const_iterator() {}
+           /// make a copy
+           particle_const_iterator& operator=(
+               const particle_const_iterator& i )
+               { m_map_iterator = i.m_map_iterator; return *this; }
+           /// return a pointer to GenParticle
+           GenParticle*        operator*(void) const
+               { return m_map_iterator->second; }
+           /// Pre-fix increment
+           particle_const_iterator&  operator++(void)  //Pre-fix increment 
+               { ++m_map_iterator; return *this; }
+           /// Post-fix increment
+           particle_const_iterator   operator++(int)   //Post-fix increment
+               { particle_const_iterator out(*this); ++(*this); return out; }
+           /// equality
+           bool  operator==( const particle_const_iterator& a ) const
+               { return m_map_iterator == a.m_map_iterator; }
+           /// inequality
+           bool  operator!=( const particle_const_iterator& a ) const
+               { return !(m_map_iterator == a.m_map_iterator); }
+       protected:
+           /// const iterator to the GenParticle map
+           std::map<int,HepMC::GenParticle*>::const_iterator m_map_iterator;
+       private:
+           /// Pre-fix increment
+           particle_const_iterator&  operator--(void);
+           /// Post-fix increment
+           particle_const_iterator   operator--(int);
+       };      
+       friend class particle_const_iterator;
+       /// begin particle iteration
+       particle_const_iterator      particles_begin() const
+           { return GenEvent::particle_const_iterator( 
+               m_particle_barcodes.begin() ); }
+       /// end particle iteration
+       particle_const_iterator      particles_end() const
+           { return GenEvent::particle_const_iterator(
+               m_particle_barcodes.end() ); }
+
+       //!  non-const particle iterator
+
+       /// \class  particle_iterator
+       /// HepMC::GenEvent::particle_iterator 
+       /// is used to iterate over all particles in the event.
+       class particle_iterator :
+         public std::iterator<std::forward_iterator_tag,HepMC::GenParticle*,ptrdiff_t>{
+           // Iterates over all vertices in this event
+       public:
+           /// iterate over particles
+           particle_iterator( const std::map<int,HepMC::GenParticle*>::iterator& i )
+               : m_map_iterator( i ) {}
+           particle_iterator() {}
+           /// copy constructor
+           particle_iterator( const particle_iterator& i ) { *this = i; }
+           virtual ~particle_iterator() {}
+           /// make a copy
+           particle_iterator&  operator=( const particle_iterator& i ) {
+               m_map_iterator = i.m_map_iterator;
+               return *this;
+           }
+           /// const particle iterator
+           operator particle_const_iterator() const
+               { return particle_const_iterator(m_map_iterator); }
+           /// return pointer to GenParticle
+           GenParticle*        operator*(void) const
+               { return m_map_iterator->second; }
+            /// Pre-fix increment
+           particle_iterator&  operator++(void) 
+               { ++m_map_iterator;     return *this; }
+            /// Post-fix increment
+           particle_iterator   operator++(int)   
+               { particle_iterator out(*this); ++(*this); return out; }
+            /// equality
+           bool              operator==( const particle_iterator& a ) const
+               { return m_map_iterator == a.m_map_iterator; }
+            /// inequality
+           bool              operator!=( const particle_iterator& a ) const
+               { return !(m_map_iterator == a.m_map_iterator); }
+       protected:
+           /// iterator for GenParticle map
+           std::map<int,HepMC::GenParticle*>::iterator m_map_iterator;
+       private:
+            /// Pre-fix increment
+           particle_iterator&  operator--(void);
+            /// Post-fix increment
+           particle_iterator   operator--(int);
+       };
+       friend class particle_iterator;
+       /// begin particle iteration
+       particle_iterator particles_begin() 
+           { return GenEvent::particle_iterator(
+               m_particle_barcodes.begin() ); }
+       /// end particle iteration
+        particle_iterator particles_end()
+           { return GenEvent::particle_iterator(
+               m_particle_barcodes.end() ); }
+
+       ////////////////////////////////////////////////
+    protected:
+       //
+       // Following methods intended for use by GenParticle/Vertex classes:
+       // In general there is no reason they should be used elsewhere.
+       /// set the barcode - intended for use by GenParticle
+       bool         set_barcode( GenParticle* p, int suggested_barcode =false );
+       /// set the barcode - intended for use by GenVertex
+       bool         set_barcode( GenVertex*   v, int suggested_barcode =false );
+       ///  intended for use by GenParticle
+       void         remove_barcode( GenParticle* p );
+       ///  intended for use by GenVertex
+       void         remove_barcode( GenVertex*   v );
+
+       void delete_all_vertices(); //!<delete all vertices owned by this event
+
+     private: // methods
+        /// internal method used when converting momentum units
+        bool use_momentum_unit( Units::MomentumUnit );
+        bool use_momentum_unit( std::string& );
+        /// internal method used when converting length units
+       bool use_length_unit( Units::LengthUnit );
+       bool use_length_unit( std::string& );
+       
+       // the following internal methods are used by read() and write()
+
+       /// send the beam particles to ASCII output
+       std::ostream & write_beam_particles( std::ostream &, 
+                            std::pair<HepMC::GenParticle *,HepMC::GenParticle *> );
+       /// send a GenVertex to ASCII output
+       std::ostream & write_vertex( std::ostream &, GenVertex const * );
+       /// send a GenParticle to ASCII output
+       std::ostream & write_particle( std::ostream&, GenParticle const * );
+       /// find the file type
+       std::istream & find_file_type( std::istream & );
+       /// find the key at the end of the block
+       std::istream & find_end_key( std::istream &, int & );
+        /// get unit information from ASCII input
+        std::istream & read_units( std::istream & );
+       /// get weight names from ASCII input
+        std::istream & read_weight_names( std::istream & );
+       /// read the event header line
+        std::istream & process_event_line( std::istream &, int &, int &, int &, int & );
+
+    private: // data members
+       int                   m_signal_process_id;
+       int                   m_event_number;  
+       int                   m_mpi;        // number of multi paricle interactions
+       double                m_event_scale;// energy scale, see hep-ph/0109068
+       double                m_alphaQCD;   // QCD coupling, see hep-ph/0109068
+       double                m_alphaQED;   // QED coupling, see hep-ph/0109068
+       GenVertex*            m_signal_process_vertex;
+       GenParticle*          m_beam_particle_1;
+       GenParticle*          m_beam_particle_2;
+       WeightContainer       m_weights; // weights for this event first weight
+                                        // is used by default for hit and miss
+       std::vector<long> m_random_states; // container of rndm num 
+                                              // generator states
+
+       std::map< int,HepMC::GenVertex*,std::greater<int> >   m_vertex_barcodes;
+       std::map< int,HepMC::GenParticle*,std::less<int> >    m_particle_barcodes;
+       GenCrossSection*         m_cross_section;             // undefined by default
+       HeavyIon*             m_heavy_ion;            // undefined by default
+       PdfInfo*              m_pdf_info;             // undefined by default
+       Units::MomentumUnit   m_momentum_unit;    // default value set by configure switch
+       Units::LengthUnit     m_position_unit;    // default value set by configure switch
+
+    };
+
+
+    ///////////////////////////
+    // IO Free Functions     //
+    ///////////////////////////
+  
+    /// standard streaming IO output operator
+    std::ostream & operator << (std::ostream &, GenEvent &);
+    /// standard streaming IO input operator
+    std::istream & operator >> (std::istream &, GenEvent &);
+    /// set the units for this input stream
+    std::istream & set_input_units(std::istream &, 
+                                   Units::MomentumUnit, Units::LengthUnit);
+    /// Explicitly write the begin block lines that IO_GenEvent uses
+    std::ostream & write_HepMC_IO_block_begin(std::ostream & );
+    /// Explicitly write the end block line that IO_GenEvent uses
+    std::ostream & write_HepMC_IO_block_end(std::ostream & );
+
+
+    ///////////////////////////
+    // INLINE Free Functions //
+    ///////////////////////////
+
+    // Implemented in terms of GenEvent::use_...
+    inline GenEvent& convert_units(GenEvent & evt, Units::MomentumUnit m, Units::LengthUnit l)
+    {
+      evt.use_units(m, l);
+      return evt;
+    }
+
+    ///////////////////////////
+    // INLINE Access Methods //
+    ///////////////////////////
+
+    ///  The integer ID that uniquely specifies this signal
+    ///  process, i.e. MSUB in Pythia. It is necessary to
+    ///  package this with each event rather than with the run
+    ///  because many processes may be generated within one run.
+    inline int GenEvent::signal_process_id() const 
+    { return m_signal_process_id; }
+
+    inline int GenEvent::event_number() const { return m_event_number; }
+
+    /// Returns the number of multi parton interactions in the event.
+    /// This number is -1 if it is not set.
+    inline int GenEvent::mpi() const { return m_mpi; }
+
+    inline double GenEvent::event_scale() const { return m_event_scale; }
+
+    inline double GenEvent::alphaQCD() const { return m_alphaQCD; }
+
+    inline double GenEvent::alphaQED() const { return m_alphaQED; }
+    inline GenVertex* GenEvent::signal_process_vertex() const {
+       /// returns a (mutable) pointer to the signal process vertex
+       return m_signal_process_vertex;
+    }  
+
+    inline WeightContainer& GenEvent::weights() { return m_weights; }
+
+    inline const WeightContainer& GenEvent::weights() const 
+    { return m_weights; }
+
+    inline GenCrossSection const * GenEvent::cross_section() const 
+    { return m_cross_section; }
+
+    inline GenCrossSection*  GenEvent::cross_section()  
+    { return m_cross_section; }
+
+    inline HeavyIon const * GenEvent::heavy_ion() const 
+    { return m_heavy_ion; }
+
+    inline HeavyIon*  GenEvent::heavy_ion()  
+    { return m_heavy_ion; }
+
+    inline PdfInfo const * GenEvent::pdf_info() const 
+    { return m_pdf_info; }
+
+    inline PdfInfo*  GenEvent::pdf_info()  
+    { return m_pdf_info; }
+
+    ///  Vector of integers which specify the random number 
+    ///  generator's state for this event. It is left to the
+    ///  generator to make use of this. We envision a vector of
+    ///  RndmStatesTags to be included with a run class which
+    ///  would specify the meaning of the random_states.
+    inline const std::vector<long>& GenEvent::random_states() const 
+    { return m_random_states; }
+
+    inline void GenEvent::set_signal_process_id( int id )
+    { m_signal_process_id = id; }
+
+    inline void GenEvent::set_event_number( int eventno )
+    { m_event_number = eventno; }
+
+    /// Use this to set the number of multi parton interactions in each event.
+    inline void GenEvent::set_mpi( int nmpi )
+    { m_mpi = nmpi; }
+
+
+    inline void GenEvent::set_event_scale( double sc ) { m_event_scale = sc; }
+
+    inline void GenEvent::set_alphaQCD( double a ) { m_alphaQCD = a; }
+
+    inline void GenEvent::set_alphaQED( double a ) { m_alphaQED = a; }
+
+    inline void GenEvent::set_signal_process_vertex( GenVertex* vtx ) {
+       m_signal_process_vertex = vtx;
+       if ( m_signal_process_vertex ) add_vertex( m_signal_process_vertex );
+    }
+
+    inline void GenEvent::set_cross_section( const GenCrossSection& xs )
+    { 
+        delete m_cross_section;
+        m_cross_section = new GenCrossSection(xs); 
+    }
+
+    inline void GenEvent::set_heavy_ion( const HeavyIon& ion )
+    { 
+        delete m_heavy_ion;
+        m_heavy_ion = new HeavyIon(ion); 
+    }
+
+    inline void GenEvent::set_pdf_info( const PdfInfo& p )
+    { 
+        delete m_pdf_info;
+        m_pdf_info = new PdfInfo(p); 
+    }
+
+    inline void GenEvent::set_random_states( const std::vector<long>&
+                                            randomstates )
+    { m_random_states = randomstates; }
+
+    inline void GenEvent::remove_barcode( GenParticle* p )
+    { m_particle_barcodes.erase( p->barcode() ); }
+
+    inline void GenEvent::remove_barcode( GenVertex* v )
+    { m_vertex_barcodes.erase( v->barcode() ); }
+
+    /// Each vertex or particle has a barcode, which is just an integer which
+    /// uniquely identifies it inside the event (i.e. there is a one to one
+    /// mapping between particle memory addresses and particle barcodes... and 
+    /// the same applied for vertices).
+    ///
+    /// The value of a barcode has NO MEANING and NO ORDER!
+    /// For the user's convenience, when an event is read in via an IO_method
+    /// from an indexed list (like the HEPEVT common block), then the index will
+    /// become the barcode for that particle.
+    ///
+    /// Particle barcodes are always positive integers.
+    /// The barcodes are chosen and set automatically when a vertex or particle
+    /// comes under the ownership of an event (i.e. it is contained in an event).
+    /// 
+    /// Please note that the barcodes are intended for internal use within 
+    /// HepMC as a unique identifier for the particles and vertices.
+    /// Using the barcode to encode extra information is an abuse of 
+    /// the barcode data member and causes confusion among users. 
+    inline GenParticle* GenEvent::barcode_to_particle( int barCode ) const
+    { 
+       std::map<int,HepMC::GenParticle*>::const_iterator i 
+           = m_particle_barcodes.find(barCode);
+       return ( i != m_particle_barcodes.end() ) ? (*i).second : 0;
+    }
+
+    /// Each vertex or particle has a barcode, which is just an integer which
+    /// uniquely identifies it inside the event (i.e. there is a one to one
+    /// mapping between particle memory addresses and particle barcodes... and 
+    /// the same applied for vertices).
+    ///
+    /// The value of a barcode has NO MEANING and NO ORDER!
+    /// For the user's convenience, when an event is read in via an IO_method
+    /// from an indexed list (like the HEPEVT common block), then the index will
+    /// become the barcode for that particle.
+    ///
+    /// Vertex barcodes are always negative integers.
+    /// The barcodes are chosen and set automatically when a vertex or particle
+    /// comes under the ownership of an event (i.e. it is contained in an event).
+    /// 
+    /// Please note that the barcodes are intended for internal use within 
+    /// HepMC as a unique identifier for the particles and vertices.
+    /// Using the barcode to encode extra information is an abuse of 
+    /// the barcode data member and causes confusion among users. 
+    inline GenVertex* GenEvent::barcode_to_vertex( int barCode ) const
+    {
+       std::map<int,GenVertex*,std::greater<int> >::const_iterator i 
+           = m_vertex_barcodes.find(barCode);
+       return ( i != m_vertex_barcodes.end() ) ? (*i).second : 0;
+    }
+
+    inline int GenEvent::particles_size() const {
+       return (int)m_particle_barcodes.size();
+    }
+    inline bool GenEvent::particles_empty() const {
+       return (bool)m_particle_barcodes.empty();
+    }
+    inline int GenEvent::vertices_size() const {
+       return (int)m_vertex_barcodes.size();
+    }
+    inline bool GenEvent::vertices_empty() const {
+       return (bool)m_vertex_barcodes.empty();
+    }
+    
+    // beam particles
+    inline std::pair<HepMC::GenParticle *,HepMC::GenParticle *> GenEvent::beam_particles() const {
+        return std::pair<GenParticle *,GenParticle *> (m_beam_particle_1, m_beam_particle_2);
+    }
+
+    // units
+    inline Units::MomentumUnit GenEvent::momentum_unit() const {
+        return m_momentum_unit; 
+    }
+    inline Units::LengthUnit   GenEvent::length_unit()   const {
+        return m_position_unit; 
+    }
+    
+    inline void GenEvent::use_units( Units::MomentumUnit new_m, Units::LengthUnit new_l ) { 
+       use_momentum_unit( new_m );
+       use_length_unit( new_l );
+    }
+    
+    inline void GenEvent::use_units( std::string& new_m, std::string& new_l ) { 
+       use_momentum_unit( new_m );
+       use_length_unit( new_l );
+    }
+    
+    inline void GenEvent::define_units( Units::MomentumUnit new_m, Units::LengthUnit new_l ) { 
+       m_momentum_unit = new_m; 
+       m_position_unit = new_l; 
+    }
+
+} // HepMC
+
+#endif  // HEPMC_GEN_EVENT_H
+
+//--------------------------------------------------------------------------
+
+
diff --git a/TEvtGen/HepMC/GenEventStreamIO.cc b/TEvtGen/HepMC/GenEventStreamIO.cc
new file mode 100644 (file)
index 0000000..e08b20c
--- /dev/null
@@ -0,0 +1,799 @@
+//--------------------------------------------------------------------------
+//
+// GenEventStreamIO.cc
+// Author:  Lynn Garren
+//
+// Implement operator >> and operator <<
+//
+// ----------------------------------------------------------------------
+
+#include <iostream>
+#include <ostream>
+#include <istream>
+#include <sstream>
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenCrossSection.h"
+#include "HepMC/StreamInfo.h"
+#include "HepMC/StreamHelpers.h"
+#include "HepMC/Version.h"
+#include "HepMC/IO_Exception.h"
+
+namespace HepMC {
+
+// ------------------------- local methods ----------------
+
+/// This method is called by the stream destructor.
+/// It does cleanup on stored user data (StreamInfo)
+/// and is registered by the first call to get_stream_info().
+void HepMCStreamCallback(std::ios_base::event e, std::ios_base& b, int i)
+{
+  // only clean up if the stream object is going away.
+  if(i!=0 && e!= std::ios_base::erase_event) return;
+
+  // retrieve the pointer to the object
+  StreamInfo* hd = (StreamInfo*)b.pword(i);
+  b.pword(i) = 0;
+  b.iword(i) = 0;
+#ifdef HEPMC_DEBUG
+  // the following line is just for sanity checking
+  if(hd) std::cerr << "deleted StreamInfo " << hd->stream_id() << "\n";
+#endif
+  delete hd;
+}
+
+// ------------------------- iomanip ----------------
+
+/// A custom iomanip that allows us to store and access user data (StreamInfo)
+/// associated with the stream.
+/// This method creates the StreamInfo object the first time it is called.
+template <class IO>
+StreamInfo& get_stream_info(IO& iost)
+{
+  if(iost.iword(0) == 0)
+    {
+      // make sure we add the callback if this is the first time through
+      iost.iword(0)=1;
+      iost.register_callback(&HepMCStreamCallback, 0);
+      // this is our special "context" record.
+      // there is one of these at the head of each IO block.
+      // allocate room for a StreamInfo in the userdata area
+      iost.pword(0) = new StreamInfo;
+#ifdef HEPMC_DEBUG
+      // the following line is just for sanity checking
+      std::cerr << "created StreamInfo " << ((StreamInfo*)iost.pword(0))->stream_id() << "\n";
+#endif
+    }
+  return *(StreamInfo*)iost.pword(0);
+}
+       
+// ------------------------- GenEvent member functions ----------------
+
+std::ostream& GenEvent::write( std::ostream& os )
+{
+    /// Writes evt to an output stream.
+
+    //
+    StreamInfo & info = get_stream_info(os);
+    //
+    // if this is the first event, set precision
+    if ( !info.finished_first_event() ) {
+       // precision 16 (# digits following decimal point) is the minimum that
+       //  will capture the full information stored in a double
+        //  However, we let the user set precision, since that is the expected functionality
+       // we use decimal to store integers, because it is smaller than hex!
+       os.setf(std::ios::dec,std::ios::basefield);
+       os.setf(std::ios::scientific,std::ios::floatfield);
+       //
+       info.set_finished_first_event(true);
+    }
+    //
+    // output the event data including the number of primary vertices
+    //  and the total number of vertices
+    //std::vector<long> random_states = random_states();
+    os << 'E';
+    detail::output( os, event_number() );
+    detail::output( os, mpi() );
+    detail::output( os, event_scale() );
+    detail::output( os, alphaQCD() );
+    detail::output( os, alphaQED() );
+    detail::output( os, signal_process_id() );
+    detail::output( os,   ( signal_process_vertex() ?
+               signal_process_vertex()->barcode() : 0 )   );
+    detail::output( os, vertices_size() ); // total number of vertices.
+    write_beam_particles( os, beam_particles() );
+    // random state
+    detail::output( os, (int)m_random_states.size() );
+    for ( std::vector<long>::iterator rs = m_random_states.begin(); 
+         rs != m_random_states.end(); ++rs ) {
+        detail::output( os, *rs );
+    }
+    // weights
+    // we need to iterate over the map so that the weights printed 
+    // here will be in the same order as the names printed next
+    os << ' ' << (int)weights().size() ;
+    for ( WeightContainer::const_map_iterator w = weights().map_begin(); 
+         w != weights().map_end(); ++w ) {
+        detail::output( os, m_weights[w->second] );
+    }
+    detail::output( os,'\n');
+    // now add names for weights
+    // note that this prints a new line if and only if the weight container
+    // is not empty
+    if ( ! weights().empty() ) {
+       os << "N " << weights().size() << " " ;
+       for ( WeightContainer::const_map_iterator w = weights().map_begin(); 
+             w != weights().map_end(); ++w ) {
+           detail::output( os,'"');
+           os << w->first;
+           detail::output( os,'"');
+           detail::output( os,' ');
+       }
+       detail::output( os,'\n');
+    }
+    //
+    // Units
+    os << "U " << name(momentum_unit());
+    os << " " << name(length_unit());
+    detail::output( os,'\n');
+    //
+    // write GenCrossSection if it has been set
+    if( m_cross_section ) m_cross_section->write(os);
+    //
+    // write HeavyIon and PdfInfo if they have been set
+    if( m_heavy_ion ) os << heavy_ion() ;
+    if( m_pdf_info ) os << pdf_info() ;
+    //
+    // Output all of the vertices - note there is no real order.
+    for ( GenEvent::vertex_const_iterator v = vertices_begin();
+         v != vertices_end(); ++v ) {
+       write_vertex(os, *v);
+    }
+    return os;
+}
+
+std::istream& GenEvent::read( std::istream& is )
+{
+    /// read a GenEvent from streaming input
+    //
+    StreamInfo & info = get_stream_info(is);
+    clear();
+    //
+    // search for event listing key before first event only.
+    if ( !info.finished_first_event() ) {
+       //
+       find_file_type(is);
+       info.set_finished_first_event(true);
+    }
+    //
+    // make sure the stream is good
+    if ( !is ) {
+       std::cerr << "streaming input: end of stream found "
+                 << "setting badbit." << std::endl;
+       is.clear(std::ios::badbit); 
+        return is;
+    }
+
+    //
+    // test to be sure the next entry is of type "E" then ignore it
+    if ( is.peek()!='E' ) { 
+       // if the E is not the next entry, then check to see if it is
+       // the end event listing key - if yes, search for another start key
+       int ioendtype;
+       find_end_key(is,ioendtype);
+       if ( ioendtype == info.io_type() ) {
+           find_file_type(is);
+           // are we at the end of the file?
+           if( !is ) return is;
+       } else if ( ioendtype > 0 ) {
+           std::cerr << "streaming input: end key does not match start key "
+                     << "setting badbit." << std::endl;
+           is.clear(std::ios::badbit); 
+           return is;
+       } else if ( !info.has_key() ) {
+           find_file_type(is);
+           // are we at the end of the file?
+           if( !is ) return is;
+       } else {
+           std::cerr << "streaming input: end key not found "
+                     << "setting badbit." << std::endl;
+           is.clear(std::ios::badbit); 
+           return is;
+       }
+    } 
+
+    int signal_process_vertex = 0;
+    int num_vertices = 0, bp1 = 0, bp2 = 0;
+    bool units_line = false;
+    // OK - now ready to start reading the event, so set the header flag
+    info.set_reading_event_header(true);
+    // The flag will be set to false when we reach the end of the header
+    while(info.reading_event_header()) {
+       switch(is.peek()) {
+           case 'E':
+           {   // deal with the event line
+               process_event_line( is, num_vertices, bp1, bp2, signal_process_vertex );
+           } break;
+           case 'N':
+           {   // get weight names 
+               read_weight_names( is );
+           } break;
+           case 'U':
+           {   // get unit information if it exists
+                units_line = true;
+               if( info.io_type() == gen ) {
+                   read_units( is );
+               }
+           } break;
+           case 'C':
+            {  // we have a GenCrossSection line
+               // create cross section
+               GenCrossSection xs;
+               // check for invalid data
+               try {
+                   // read the line
+                   xs.read(is);
+               }
+               catch (IO_Exception& e) {
+                   detail::find_event_end( is );
+               }
+               if(xs.is_set()) { 
+                   set_cross_section( xs );
+               }
+            } break;
+           case 'H':
+           {   // we have a HeavyIon line OR an unexpected HepMC... line
+               if( info.io_type() == gen || info.io_type() == extascii ) {
+                   // get HeavyIon
+                   HeavyIon ion;
+                   // check for invalid data
+                   try {
+                       is >> &ion;
+                   }
+                   catch (IO_Exception& e) {
+                       detail::find_event_end( is );
+                   }
+                   if(ion.is_valid()) { 
+                       set_heavy_ion( ion );
+                   }
+               }
+           } break;
+           case 'F':
+           {   // we have a PdfInfo line
+               if( info.io_type() == gen || info.io_type() == extascii ) {
+                   // get PdfInfo
+                   PdfInfo pdf;
+                   // check for invalid data
+                   try {
+                       is >> &pdf;
+                   }
+                   catch (IO_Exception& e) {
+                       detail::find_event_end( is );
+                   }
+                   if(pdf.is_valid()) { 
+                       set_pdf_info( pdf );
+                   }
+               }
+           } break;
+           case 'V':
+           {   
+               // this should be the first vertex line - exit this loop
+               info.set_reading_event_header(false);
+           } break;
+           case 'P':
+           {   // we should not find this line
+               std::cerr << "streaming input: found unexpected line P" << std::endl;
+               info.set_reading_event_header(false);
+           } break;
+           default:
+               // ignore everything else
+               break;
+       } // switch on line type
+    } // while reading_event_header
+    // before proceeding - did we find a units line?
+    if( !units_line ) {
+       use_units( info.io_momentum_unit(), 
+                      info.io_position_unit() );
+    }
+    //
+    // the end vertices of the particles are not connected until
+    //  after the event is read --- we store the values in a map until then
+    TempParticleMap particle_to_end_vertex;
+    //
+    // read in the vertices
+    for ( int iii = 1; iii <= num_vertices; ++iii ) {
+       GenVertex* v = new GenVertex();
+       try {
+           detail::read_vertex(is,particle_to_end_vertex,v);
+       }
+       catch (IO_Exception& e) {
+           for( TempParticleMap::orderIterator it = particle_to_end_vertex.order_begin(); 
+                it != particle_to_end_vertex.order_end(); ++it ) {
+               GenParticle* p = it->second;
+               // delete particles only if they are not already owned by a vertex
+               if( p->production_vertex() ) {
+               } else if( p->end_vertex() ) {
+               } else {
+                    delete p;
+               }
+           }
+           delete v;
+            detail::find_event_end( is );
+       }
+       add_vertex( v );
+    }
+    // set the signal process vertex
+    if ( signal_process_vertex ) {
+       set_signal_process_vertex( 
+           barcode_to_vertex(signal_process_vertex) );
+    }
+    //
+    // last connect particles to their end vertices
+    GenParticle* beam1(0);
+    GenParticle* beam2(0);
+    for ( TempParticleMap::orderIterator pmap 
+             = particle_to_end_vertex.order_begin(); 
+         pmap != particle_to_end_vertex.order_end(); ++pmap ) {
+       GenParticle* p =  pmap->second;
+       int vtx = particle_to_end_vertex.end_vertex( p );
+       GenVertex* itsDecayVtx = barcode_to_vertex(vtx);
+       if ( itsDecayVtx ) itsDecayVtx->add_particle_in( p );
+       else {
+           std::cerr << "read_io_genevent: ERROR particle points"
+                     << " to null end vertex. " <<std::endl;
+       }
+       // also look for the beam particles
+       if( p->barcode() == bp1 ) beam1 = p;
+       if( p->barcode() == bp2 ) beam2 = p;
+    }
+    set_beam_particles(beam1,beam2);
+    return is;
+}
+
+// ------------------------- operator << and operator >> ----------------
+
+std::ostream & operator << (std::ostream & os, GenEvent & evt)
+{
+    /// Writes evt to an output stream.
+    evt.write(os);
+    return os;
+}
+
+std::istream & operator >> (std::istream & is, GenEvent & evt)
+{
+    evt.read(is);
+    return is;
+}
+
+// ------------------------- set units ----------------
+
+std::istream & set_input_units(std::istream & is, 
+                               Units::MomentumUnit mom,
+                              Units::LengthUnit len )
+{
+    //
+    StreamInfo & info = get_stream_info(is);
+    info.use_input_units( mom, len );
+    return is;
+}
+
+// ------------------------- begin and end block lines ----------------
+
+std::ostream & write_HepMC_IO_block_begin(std::ostream & os )
+{
+    //
+    StreamInfo & info = get_stream_info(os);
+
+    if( !info.finished_first_event() ) {
+    os << "\n" << "HepMC::Version " << versionName();
+    os << "\n";
+    os << info.IO_GenEvent_Key() << "\n";
+    }
+    return os;
+}
+
+std::ostream & write_HepMC_IO_block_end(std::ostream & os )
+{
+    //
+    StreamInfo & info = get_stream_info(os);
+
+    if( info.finished_first_event() ) {
+       os << info.IO_GenEvent_End() << "\n";
+       os << std::flush;
+    }
+    return os;
+}
+
+std::istream & GenEvent::process_event_line( std::istream & is, 
+                                             int & num_vertices,
+                                            int & bp1, int & bp2,
+                                            int & signal_process_vertex )
+{
+    //
+    if ( !is ) {
+       std::cerr << "GenEvent::process_event_line setting badbit." << std::endl;
+       is.clear(std::ios::badbit);
+       return is;
+    } 
+    //
+    StreamInfo & info = get_stream_info(is);
+    std::string line;
+    std::getline(is,line);
+    std::istringstream iline(line);
+    std::string firstc;
+    iline >> firstc;
+    //
+    // read values into temp variables, then fill GenEvent
+    int event_number = 0, signal_process_id = 0,
+       random_states_size = 0, nmpi = -1;
+    double eventScale = 0, alpha_qcd = 0, alpha_qed = 0;
+    iline >> event_number;
+    if(!iline) detail::find_event_end( is );
+    if( info.io_type() == gen || info.io_type() == extascii ) {
+        iline >> nmpi;
+        if(!iline) detail::find_event_end( is );
+        set_mpi( nmpi );
+    }
+    iline >> eventScale ;
+    if(!iline) detail::find_event_end( is );
+    iline >> alpha_qcd ;
+    if(!iline) detail::find_event_end( is );
+    iline >> alpha_qed;
+    if(!iline) detail::find_event_end( is );
+    iline >> signal_process_id ;
+    if(!iline) detail::find_event_end( is );
+    iline >> signal_process_vertex;
+    if(!iline) detail::find_event_end( is );
+    iline >> num_vertices;
+    if(!iline) detail::find_event_end( is );
+    if( info.io_type() == gen || info.io_type() == extascii ) {
+        iline >> bp1 ;
+        if(!iline) detail::find_event_end( is );
+       iline >> bp2;
+        if(!iline) detail::find_event_end( is );
+    }
+    iline >> random_states_size;
+    if(!iline) detail::find_event_end( is );
+    std::vector<long> random_states(random_states_size);
+    for ( int i = 0; i < random_states_size; ++i ) {
+       iline >> random_states[i];
+        if(!iline) detail::find_event_end( is );
+    }
+    WeightContainer::size_type weights_size = 0;
+    iline >> weights_size;
+    if(!iline) detail::find_event_end( is );
+    std::vector<double> wgt(weights_size);
+    for ( WeightContainer::size_type ii = 0; ii < weights_size; ++ii ) {
+        iline >> wgt[ii];
+        if(!iline) detail::find_event_end( is );
+    }
+    // weight names will be added later if they exist
+    if( weights_size > 0 ) m_weights = wgt;
+    // 
+    // fill signal_process_id, event_number, random_states, etc.
+    set_signal_process_id( signal_process_id );
+    set_event_number( event_number );
+    set_random_states( random_states );
+    set_event_scale( eventScale );
+    set_alphaQCD( alpha_qcd );
+    set_alphaQED( alpha_qed );
+    //
+    return is;
+}
+
+std::istream & GenEvent::read_weight_names( std::istream & is )
+{
+    // now check for a named weight line
+    if ( !is ) {
+       std::cerr << "GenEvent::read_weight_names setting badbit." << std::endl;
+       is.clear(std::ios::badbit);
+       return is;
+    } 
+    // Test to be sure the next entry is of type "N"
+    // If we have no named weight line, this is not an error
+    // releases prior to 2.06.00 do not have named weights
+    if ( is.peek() !='N') {
+       return is;
+    } 
+    // now get this line and process it
+    std::string line;
+    std::getline(is,line);
+    std::istringstream wline(line);
+    std::string firstc;
+    WeightContainer::size_type name_size = 0;
+    wline >> firstc >> name_size;
+    if(!wline) detail::find_event_end( is );
+    if( firstc != "N") { 
+        std::cout << "debug: first character of named weights is " << firstc << std::endl;
+        std::cout << "debug: We should never get here" << std::endl;
+       is.clear(std::ios::badbit);
+       return is;
+    }
+    if( m_weights.size() != name_size ) { 
+        std::cout << "debug: weight sizes do not match "<< std::endl;
+        std::cout << "debug: weight vector size is " << m_weights.size() << std::endl;
+        std::cout << "debug: weight name size is " << name_size << std::endl;
+       is.clear(std::ios::badbit);
+       return is;
+    }
+    std::string name;
+    std::string::size_type i1 = line.find("\"");
+    std::string::size_type i2;
+    std::string::size_type len = line.size();
+    WeightContainer namedWeight;
+    for ( WeightContainer::size_type ii = 0; ii < name_size; ++ii ) {
+        // weight names may contain blanks
+        if(i1 >= len) {
+            std::cout << "debug: attempting to read past the end of the named weight line " << std::endl;
+            std::cout << "debug: We should never get here" << std::endl;
+            std::cout << "debug: Looking for the end of this event" << std::endl;
+           detail::find_event_end( is );
+       }
+       i2 = line.find("\"",i1+1);
+       name = line.substr(i1+1,i2-i1-1);
+       namedWeight[name] = m_weights[ii];
+       i1 = line.find("\"",i2+1);
+    }
+    m_weights = namedWeight;
+    return is;
+}
+
+std::istream & GenEvent::read_units( std::istream & is )
+{
+    //
+    if ( !is ) {
+       std::cerr << "GenEvent::read_units setting badbit." << std::endl;
+       is.clear(std::ios::badbit);
+       return is;
+    } 
+    //
+    StreamInfo & info = get_stream_info(is);
+    // test to be sure the next entry is of type "U" then ignore it
+    // if we have no units, this is not an error
+    // releases prior to 2.04.00 did not write unit information
+    if ( is.peek() !='U') {
+       use_units( info.io_momentum_unit(), 
+                      info.io_position_unit() );
+       return is;
+    } 
+    is.ignore();       // ignore the first character in the line
+    std::string mom, pos;
+    is >> mom >> pos;
+    is.ignore(1);      // eat the extra whitespace
+    use_units(mom,pos);
+    //
+    return is;
+}
+
+std::istream & GenEvent::find_file_type( std::istream & istr )
+{
+    //
+    // make sure the stream is good
+    if ( !istr ) return istr;
+
+    //
+    StreamInfo & info = get_stream_info(istr);
+
+    // if there is no input block line, then we assume this stream
+    // is in the IO_GenEvent format
+    if ( istr.peek()=='E' ) {
+       info.set_io_type( gen );
+       info.set_has_key(false);
+        return istr;
+    }
+    
+    std::string line;
+    while ( std::getline(istr,line) ) {
+       //
+       // search for event listing key before first event only.
+       //
+       if( line == info.IO_GenEvent_Key() ) {
+           info.set_io_type( gen );
+           info.set_has_key(true);
+           return istr;
+       } else if( line == info.IO_Ascii_Key() ) {
+           info.set_io_type( ascii );
+           info.set_has_key(true);
+           return istr;
+       } else if( line == info.IO_ExtendedAscii_Key() ) {
+           info.set_io_type( extascii );
+           info.set_has_key(true);
+           return istr;
+       } else if( line == info.IO_Ascii_PDT_Key() ) {
+           info.set_io_type( ascii_pdt );
+           info.set_has_key(true);
+           return istr;
+       } else if( line == info.IO_ExtendedAscii_PDT_Key() ) {
+           info.set_io_type( extascii_pdt );
+           info.set_has_key(true);
+           return istr;
+       }
+    }
+    info.set_io_type( 0 );
+    info.set_has_key(false);
+    return istr;
+}
+
+std::istream & GenEvent::find_end_key( std::istream & istr, int & iotype )
+{
+    iotype = 0;
+    // peek at the first character before proceeding
+    if( istr.peek()!='H' ) return istr;
+    //
+    // we only check the next line
+    std::string line;
+    std::getline(istr,line);
+    //
+    StreamInfo & info = get_stream_info(istr);
+    //
+    // check to see if this is an end key
+    if( line == info.IO_GenEvent_End() ) {
+       iotype = gen;
+    } else if( line == info.IO_Ascii_End() ) {
+       iotype = ascii;
+    } else if( line == info.IO_ExtendedAscii_End() ) {
+       iotype = extascii;
+    } else if( line == info.IO_Ascii_PDT_End() ) {
+       iotype = ascii_pdt;
+    } else if( line == info.IO_ExtendedAscii_PDT_End() ) {
+       iotype = extascii_pdt;
+    }
+    if( iotype != 0 && info.io_type() != iotype ) {
+        std::cerr << "GenEvent::find_end_key: iotype keys have changed" << std::endl;
+    } else {
+        return istr;
+    }
+    //
+    // if we get here, then something has gotten badly confused
+    std::cerr << "GenEvent::find_end_key: MALFORMED INPUT" << std::endl;
+    istr.clear(std::ios::badbit); 
+    return istr;
+}
+
+std::ostream & establish_output_stream_info( std::ostream & os )
+{
+    StreamInfo & info = get_stream_info(os);
+    if ( !info.finished_first_event() ) {
+       // precision 16 (# digits following decimal point) is the minimum that
+       //  will capture the full information stored in a double
+       os.precision(16);
+       // we use decimal to store integers, because it is smaller than hex!
+       os.setf(std::ios::dec,std::ios::basefield);
+       os.setf(std::ios::scientific,std::ios::floatfield);
+    }
+    return os;
+}
+
+std::istream & establish_input_stream_info( std::istream & is )
+{
+    StreamInfo & info = get_stream_info(is);
+    if ( !info.finished_first_event() ) {
+       // precision 16 (# digits following decimal point) is the minimum that
+       //  will capture the full information stored in a double
+       is.precision(16);
+       // we use decimal to store integers, because it is smaller than hex!
+       is.setf(std::ios::dec,std::ios::basefield);
+       is.setf(std::ios::scientific,std::ios::floatfield);
+    }
+    return is;
+}
+
+
+// ------------------------- helper functions ----------------
+
+namespace detail {
+
+// The functions defined here need to use get_stream_info
+
+std::istream & read_particle( std::istream & is, 
+                              TempParticleMap & particle_to_end_vertex, 
+                             GenParticle * p )
+{
+    // get the next line
+    std::string line;
+    std::getline(is,line);
+    std::istringstream iline(line);
+    std::string firstc;
+    iline >> firstc;
+    if( firstc != "P" ) { 
+       std::cerr << "StreamHelpers::detail::read_particle invalid line type: " 
+                 << firstc << std::endl;
+       std::cerr << "StreamHelpers::detail::read_particle setting badbit." 
+                 << std::endl;
+       is.clear(std::ios::badbit); 
+       return is;
+    } 
+    //
+    StreamInfo & info = get_stream_info(is);
+    //testHepMC.cc
+    // declare variables to be read in to, and read everything except flow
+    double px = 0., py = 0., pz = 0., e = 0., m = 0., theta = 0., phi = 0.;
+    int bar_code = 0, id = 0, status = 0, end_vtx_code = 0, flow_size = 0;
+    // check that the input stream is still OK after reading item
+    iline >> bar_code ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> id ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> px ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> py ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> pz ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> e ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    if( info.io_type() != ascii ) {
+       iline >> m ;
+        if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    }
+    iline >> status ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> theta ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> phi ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> end_vtx_code ;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    iline >> flow_size;
+    if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+    //
+    // read flow patterns if any exist
+    Flow flow;
+    int code_index, code;
+    for ( int i = 1; i <= flow_size; ++i ) {
+       iline >> code_index >> code;
+        if(!iline) {  delete p; throw IO_Exception("read_particle input stream encounterd invalid data"); }
+       flow.set_icode( code_index,code);
+    }
+    p->set_momentum( FourVector(px,py,pz,e) );
+    p->set_pdg_id( id );
+    p->set_status( status );
+    p->set_flow( flow );
+    p->set_polarization( Polarization(theta,phi) );
+    if( info.io_type() == ascii ) {
+        p->set_generated_mass( p->momentum().m() );
+    } else {
+        p->set_generated_mass( m );
+    }
+    p->suggest_barcode( bar_code );
+    //
+    // all particles are connected to their end vertex separately 
+    // after all particles and vertices have been created - so we keep
+    // a map of all particles that have end vertices
+    if ( end_vtx_code != 0 ) {
+       particle_to_end_vertex.addEndParticle(p,end_vtx_code);
+    }
+    return is;
+}
+
+std::ostream & establish_output_stream_info( std::ostream & os )
+{
+    StreamInfo & info = get_stream_info(os);
+    if ( !info.finished_first_event() ) {
+       // precision 16 (# digits following decimal point) is the minimum that
+       //  will capture the full information stored in a double
+       os.precision(16);
+       // we use decimal to store integers, because it is smaller than hex!
+       os.setf(std::ios::dec,std::ios::basefield);
+       os.setf(std::ios::scientific,std::ios::floatfield);
+    }
+    return os;
+}
+
+std::istream & establish_input_stream_info( std::istream & is )
+{
+    StreamInfo & info = get_stream_info(is);
+    if ( !info.finished_first_event() ) {
+       // precision 16 (# digits following decimal point) is the minimum that
+       //  will capture the full information stored in a double
+       is.precision(16);
+       // we use decimal to store integers, because it is smaller than hex!
+       is.setf(std::ios::dec,std::ios::basefield);
+       is.setf(std::ios::scientific,std::ios::floatfield);
+    }
+    return is;
+}
+
+} // detail
+
+} // HepMC
diff --git a/TEvtGen/HepMC/GenParticle.cc b/TEvtGen/HepMC/GenParticle.cc
new file mode 100644 (file)
index 0000000..eb9b8f0
--- /dev/null
@@ -0,0 +1,255 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999
+// Updated: 07.02.2000 no longer does particle point to ParticleData, 
+//                     but rather it uses an int id which can be looked up
+// particle within an event coming in/out of a vertex
+//////////////////////////////////////////////////////////////////////////
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenVertex.h"
+#include "HepMC/GenParticle.h"
+#include <iomanip>       // needed for formatted output
+
+namespace HepMC {
+
+    GenParticle::GenParticle( void ) :
+       m_momentum(0), m_pdg_id(0), m_status(0), m_flow(this),
+        m_polarization(0), m_production_vertex(0), m_end_vertex(0),
+        m_barcode(0), m_generated_mass(0.)
+    {}
+    //{
+       //s_counter++;
+    //}
+
+    GenParticle::GenParticle( const FourVector& momentum, 
+                       int pdg_id, int status, 
+                       const Flow& itsflow,
+                       const Polarization& polar ) : 
+       m_momentum(momentum), m_pdg_id(pdg_id), m_status(status), m_flow(this),
+       m_polarization(polar), m_production_vertex(0), m_end_vertex(0),
+        m_barcode(0), m_generated_mass(momentum.m())
+    {
+       // Establishing *this as the owner of m_flow is done above,
+       // then we set it equal to the other flow pattern (subtle)
+       set_flow(itsflow);
+       //s_counter++;
+    }
+
+    GenParticle::GenParticle( const GenParticle& inparticle ) : 
+        m_momentum( inparticle.momentum() ),
+       m_pdg_id( inparticle.pdg_id() ), 
+       m_status( inparticle.status() ), 
+       m_flow(inparticle.flow()),
+       m_polarization( inparticle.polarization() ),
+       m_production_vertex(0), 
+       m_end_vertex(0), 
+       m_barcode(0), 
+        m_generated_mass( inparticle.generated_mass() )
+    {
+       /// Shallow copy: does not copy the vertex pointers
+       /// (note - impossible to copy vertex pointers which having the vertex
+       ///         and particles in/out point-back to one another -- unless you
+       ///         copy the entire tree -- which we don't want to do)
+       set_production_vertex_( 0 );
+       set_end_vertex_( 0 );
+       suggest_barcode( inparticle.barcode() );
+       //s_counter++;
+    }
+
+    GenParticle::~GenParticle() {    
+       if ( parent_event() ) parent_event()->remove_barcode(this);
+       //s_counter--;
+    }
+
+    void GenParticle::swap( GenParticle & other)
+    {
+        // if a container has a swap method, use that for improved performance
+        m_momentum.swap( other.m_momentum );
+       std::swap( m_pdg_id, other.m_pdg_id );
+       std::swap( m_status, other.m_status );
+       m_flow.swap( other.m_flow );
+       m_polarization.swap( other.m_polarization );
+       std::swap( m_production_vertex, other.m_production_vertex );
+       std::swap( m_end_vertex, other.m_end_vertex );
+       std::swap( m_barcode, other.m_barcode );
+       std::swap( m_generated_mass, other.m_generated_mass );
+    }
+
+    GenParticle& GenParticle::operator=( const GenParticle& inparticle ) {
+       /// Shallow: does not copy the vertex pointers
+       /// (note - impossible to copy vertex pointers which having the vertex
+       ///         and particles in/out point-back to one another -- unless you
+       ///         copy the entire tree -- which we don't want to do)
+
+        // best practices implementation
+       GenParticle tmp( inparticle );
+       swap( tmp );
+       return *this;
+    }
+
+    bool GenParticle::operator==( const GenParticle& a ) const {
+       /// consistent with the definition of the copy constructor as a shallow
+       ///  constructor,.. this operator does not test the vertex pointers.
+       ///  Does not compare barcodes.
+       if ( a.momentum() != this->momentum() ) return false;
+        if ( a.generated_mass() != this->generated_mass() ) return false;
+       if ( a.pdg_id() != this->pdg_id() ) return false;
+       if ( a.status() != this->status() ) return false;
+       if ( a.m_flow != this->m_flow ) return false;
+       if ( a.polarization() != this->polarization() ) return false;
+       return true;
+    }
+
+    bool GenParticle::operator!=( const GenParticle& a ) const {
+       return !( a == *this );
+    }
+
+    void GenParticle::print( std::ostream& ostr ) const {
+       /// Dump this particle's full info to ostr, where by default
+       ///  particle.print(); will dump to cout.
+       ostr << "GenParticle: " 
+            << barcode() << " ID:" << pdg_id()
+            << " (P,E)=" << momentum().px() << "," << momentum().py() 
+            << "," << momentum().pz() << "," << momentum().e()
+            << " Stat:" << status();
+       if ( production_vertex() && production_vertex()->barcode()!=0 ) {
+           ostr << " PV:" << production_vertex()->barcode();
+       } else ostr << " PV:" << production_vertex();
+       if ( end_vertex() && end_vertex()->barcode()!=0 ) {
+           ostr << " EV:" << end_vertex()->barcode();
+       } else ostr << " EV:" << end_vertex();
+       ostr << " Pol:" << polarization() << " F:" << m_flow << std::endl;
+    }
+
+    GenEvent* GenParticle::parent_event() const {
+       if ( production_vertex() ) return production_vertex()->parent_event();
+       if ( end_vertex() ) return end_vertex()->parent_event();
+       return 0;
+    }
+
+    void GenParticle::set_production_vertex_( GenVertex* prodvertex )
+    { 
+       GenEvent* its_orig_event = parent_event();
+       m_production_vertex = prodvertex; 
+       GenEvent* its_new_event = parent_event();
+       // Next bit of logic ensures the barcode maps are kept up to date
+       //  in the GenEvent containers.
+       if ( its_orig_event != its_new_event ) {
+           if ( its_new_event ) its_new_event->set_barcode( this, barcode() );
+           if ( its_orig_event ) its_orig_event->remove_barcode( this );
+       }
+    }
+
+    void GenParticle::set_end_vertex_( GenVertex* decayvertex ) 
+    { 
+       GenEvent* its_orig_event = parent_event();
+       m_end_vertex = decayvertex;
+       GenEvent* its_new_event = parent_event();
+       if ( its_orig_event != its_new_event ) {
+           if ( its_new_event ) its_new_event->set_barcode( this, barcode() );
+           if ( its_orig_event ) its_orig_event->remove_barcode( this );
+       }
+    }  
+
+    bool GenParticle::suggest_barcode( int the_bar_code )
+    {
+       /// allows a barcode to be suggested for this particle.
+       /// In general it is better to let the event pick the barcode for
+       /// you, which is automatic.
+       /// Returns TRUE if the suggested barcode has been accepted (i.e. the
+       ///  suggested barcode has not already been used in the event, 
+       ///  and so it was used).
+       /// Returns FALSE if the suggested barcode was rejected, or if the
+       ///  particle is not yet part of an event, such that it is not yet
+       ///  possible to know if the suggested barcode will be accepted).
+       if ( the_bar_code <0 ) {
+           std::cerr << "GenParticle::suggest_barcode WARNING, particle bar "
+                     << "\n codes MUST be positive integers. Negative  "
+                     << "\n integers are reserved for vertices only. Your "
+                     << "\n suggestion has been rejected." << std::endl;
+           return false;
+       }
+       bool success = false;
+       if ( parent_event() ) {
+           success = parent_event()->set_barcode( this, the_bar_code );
+       } else { set_barcode_( the_bar_code ); }
+       return success;
+    }
+
+    /////////////
+    // Static  //
+    /////////////
+    //unsigned int GenParticle::counter() { return s_counter; }
+    //unsigned int GenParticle::s_counter = 0U; 
+
+    /////////////
+    // Friends //
+    /////////////
+
+    /// Dump this particle's full info to ostr
+    std::ostream& operator<<( std::ostream& ostr, const GenParticle& part ) {
+        // find the current stream state
+       std::ios_base::fmtflags orig = ostr.flags();
+       std::streamsize prec = ostr.precision();
+       ostr << " ";
+       ostr.width(9);
+       ostr << part.barcode();
+       ostr.width(9);
+       ostr << part.pdg_id() << " ";
+       ostr.width(9);
+        ostr.precision(2);
+        ostr.setf(std::ios::scientific, std::ios::floatfield);
+       ostr.setf(std::ios_base::showpos);
+       ostr << part.momentum().px() << ",";
+       ostr.width(9);
+       ostr << part.momentum().py() << ",";
+       ostr.width(9);
+       ostr << part.momentum().pz() << ",";
+       ostr.width(9);
+       ostr << part.momentum().e() << " ";
+        ostr.setf(std::ios::fmtflags(0), std::ios::floatfield);
+       ostr.unsetf(std::ios_base::showpos);
+       if ( part.end_vertex() && part.end_vertex()->barcode()!=0 ) {
+           ostr.width(3);
+           ostr << part.status() << " ";
+           ostr.width(9);
+           ostr << part.end_vertex()->barcode();
+       } else if ( !part.end_vertex() ) {
+           // There is no valid end_vertex 
+           // For consistency across different compilers, do not print anything
+           ostr.width(3);
+           ostr << part.status();
+       } else {
+           // In this case the end_vertex does not have a unique 
+           //   barcode assigned, so we choose instead to print its address
+           ostr.width(3);
+           ostr << part.status() << " ";
+           ostr.width(9);
+           ostr << (void*)part.end_vertex();
+       }
+        // restore the stream state
+        ostr.flags(orig);
+        ostr.precision(prec);
+       return ostr;
+    }
+
+
+    double  GenParticle::generated_mass() const {
+        return m_generated_mass;
+    }
+
+    void   GenParticle::set_generated_mass( const double & m ) {
+        m_generated_mass = m;
+    }
+
+    /// scale the momentum vector and generated mass 
+    /// this method is only for use by GenEvent
+    void GenParticle::convert_momentum( const double & f ) {
+       m_momentum = FourVector( f*m_momentum.px(),
+                                f*m_momentum.py(),
+                                f*m_momentum.pz(),
+                                f*m_momentum.e() );
+       if( m_generated_mass > 0. ) m_generated_mass = f*m_generated_mass;
+    }
+
+} // HepMC
+
diff --git a/TEvtGen/HepMC/GenParticle.h b/TEvtGen/HepMC/GenParticle.h
new file mode 100644 (file)
index 0000000..88048d3
--- /dev/null
@@ -0,0 +1,270 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_GEN_PARTICLE_H
+#define HEPMC_GEN_PARTICLE_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// particle within an event coming in/out of a vertex
+// particle is the basic building block or unit of the event record
+//////////////////////////////////////////////////////////////////////////
+//
+// example:
+//      GenParticle* p = new GenParticle( FourVector(1,1,1,3), 11, 1 );
+// creates a particle with 4-vector (p,E)=1,1,1,3 - with pdg id 11 (electron)
+// and give this particle status =1.
+//
+// the pointers to end/production vertices can only be set by the
+//  vertices themselves - thus to set the production vertex for a particle,
+//  you add the particle to that vertex with GenVertex::add_particle_out()
+//
+// We decide not to have a separate 4 vector for the momentum 
+//  at decay time (which MC++ includes to allow dE/dX losses etc). 
+//  If you want that, just add a decay vertex with the
+//  same particle (modified momentum) going out
+//
+
+#include "HepMC/Flow.h"
+#include "HepMC/Polarization.h"
+#include "HepMC/SimpleVector.h"
+#include "HepMC/IteratorRange.h"
+#include <iostream>
+#ifdef _WIN32
+#define hepmc_uint64_t  __int64
+#else
+#include <stdint.h>    // for uint64_t
+#define hepmc_uint64_t   uint64_t
+#endif
+
+namespace HepMC {
+
+    class GenVertex;
+    class GenEvent; 
+
+    class GenParticleProductionRange;
+    class ConstGenParticleProductionRange;
+    class GenParticleEndRange;
+    class ConstGenParticleEndRange;
+
+    //! The GenParticle class contains information about generated particles
+
+    ///
+    /// \class GenParticle 
+    /// HepMC::GenParticle 
+    /// contains momentum, generated mass, particle ID, decay status, 
+    /// flow, polarization, pointers to production and decay vertices
+    /// and a unique barcode identfier.
+    ///
+    class GenParticle {
+
+       friend class GenVertex; // so vertex can set decay/production vertexes
+       friend class GenEvent;  // so event can set the barCodes
+       /// print particle
+       friend std::ostream& operator<<( std::ostream&, const GenParticle& );
+
+    public:
+        /// default constructor
+        GenParticle(void);
+        /// constructor requires momentum and particle ID
+       GenParticle( const FourVector& momentum, int pdg_id,
+                    int status = 0, const Flow& itsflow = Flow(),
+                    const Polarization& polar = Polarization(0,0) );
+       GenParticle( const GenParticle& inparticle ); //!< shallow copy.
+       virtual ~GenParticle();
+
+        void swap( GenParticle & other); //!< swap
+       GenParticle& operator=( const GenParticle& inparticle ); //!< shallow.
+        /// check for equality
+       bool         operator==( const GenParticle& ) const;
+        /// check for inequality
+       bool         operator!=( const GenParticle& ) const;
+
+       /// dump this particle's full info to ostr
+       void       print( std::ostream& ostr = std::cout ) const; 
+
+       operator HepMC::FourVector() const; //!< conversion operator
+
+       ////////////////////
+       // access methods //
+       ////////////////////
+
+       /// standard 4 momentum
+       const FourVector &          momentum() const;
+       /// particle ID
+       int                  pdg_id() const;
+       /// HEPEVT decay status
+       int                  status() const;
+       /// particle flow
+       const Flow &         flow() const;
+       /// particle flow index
+       int                  flow( int code_index ) const;
+        /// polarization information
+       const Polarization & polarization() const;
+       /// pointer to the production vertex
+       GenVertex*           production_vertex() const;
+       /// pointer to the decay vertex
+       GenVertex*           end_vertex() const;
+       /// pointer to the event that owns this particle
+       GenEvent*            parent_event() const;
+
+        /// Because of precision issues, the generated mass is not always the 
+       /// same as the mass calculated from the momentum 4 vector.
+        /// If the generated mass has been set, then generated_mass() 
+       /// returns that value.
+        /// If the generated mass has not been set, then generated_mass() 
+       /// returns the mass calculated from the momentum 4 vector.
+        double               generated_mass() const; //!< mass as generated
+
+       /// generatedMass() is included for backwards compatibility with CLHEP HepMC
+        double               generatedMass() const { return generated_mass(); }
+
+
+       ///
+       /// The barcode is the particle's reference number, every vertex in the
+       /// event has a unique barcode. Particle barcodes are positive numbers,
+       /// vertex barcodes are negative numbers.
+       /// 
+       /// Please note that the barcodes are intended for internal use within 
+       /// HepMC as a unique identifier for the particles and vertices.
+       /// Using the barcode to encode extra information is an abuse of 
+       /// the barcode data member and causes confusion among users. 
+       /// 
+       int                  barcode() const; //!< particle barcode
+       
+       /// Convenience method.  Returns true if status==1
+       bool                 is_undecayed() const;
+       /// Convenience method.  Returns true if status==2
+       bool                 has_decayed() const;
+       /// Convenience method.  Returns true if status==4
+       /// Note that using status 4 for beam particles is a new convention which
+       /// may not have been implemented by the code originating this GenEvent.
+       bool                 is_beam() const;
+
+       /// incoming particle range
+       GenParticleProductionRange particles_in( IteratorRange range = relatives );
+       /// incoming particle range
+       ConstGenParticleProductionRange particles_in( IteratorRange range = relatives ) const;
+       /// outgoing particle range
+       GenParticleEndRange particles_out( IteratorRange range = relatives );
+       /// outgoing particle range
+       ConstGenParticleEndRange particles_out( IteratorRange range = relatives ) const;
+
+       /////////////////////
+       // mutator methods //
+       /////////////////////
+
+       /// In general there is no reason to "suggest_barcode"
+       bool                 suggest_barcode( int the_bar_code );
+
+       void   set_momentum( const FourVector& vec4 ); //!< set standard 4 momentum
+       void   set_pdg_id( int id ); //!< set particle ID
+       void   set_status( int status = 0 ); //!< set decay status
+       void   set_flow( const Flow& f ); //!< set particle flow
+       void   set_flow( int code_index, int code = 0 ); //!< set particle flow index
+       /// set polarization
+       void   set_polarization( const Polarization& pol = Polarization(0,0) );
+        ///  If you do not call set_generated_mass(), then 
+        ///  generated_mass() will simply return the mass calculated from momentum()
+        void   set_generated_mass( const double & m ); //!< define the actual generated mass
+
+       ///  setGeneratedMass() is included for backwards compatibility with CLHEP HepMC
+        void   setGeneratedMass( const double & m )  
+                        { return set_generated_mass(m); }
+
+    protected: // for internal use only by friend GenVertex class
+
+       //static unsigned int counter(); //!< temporary for debugging
+
+        /// set production vertex - for internal use only
+       void   set_production_vertex_( GenVertex* productionvertex = 0);
+        /// set decay vertex - for internal use only
+       void   set_end_vertex_( GenVertex* decayvertex = 0 );
+       void   set_barcode_( int the_bar_code ); //!< for use by GenEvent only
+
+        /// scale the momentum vector and generated mass 
+        /// this method is only for use by GenEvent
+       void convert_momentum( const double& );
+
+    private:
+       FourVector       m_momentum;          // momentum vector
+       int              m_pdg_id;            // id according to PDG convention
+       int              m_status;            // As defined for HEPEVT
+       Flow             m_flow;
+       Polarization     m_polarization;
+       GenVertex*       m_production_vertex; // null if vacuum or beam
+       GenVertex*       m_end_vertex;        // null if not-decayed
+       int              m_barcode;           // unique identifier in the event
+        double           m_generated_mass;    // mass of this particle when it was generated
+
+       //static unsigned int       s_counter;
+    };  
+
+    //////////////
+    // INLINES  //
+    //////////////
+
+    inline GenParticle::operator HepMC::FourVector() const 
+    { return m_momentum; }
+
+    inline const FourVector & GenParticle::momentum() const 
+    { return m_momentum; }
+
+    inline int GenParticle::pdg_id() const { return m_pdg_id; }
+
+    inline int GenParticle::status() const { return m_status; }
+
+    inline GenVertex* GenParticle::production_vertex() const 
+    { return m_production_vertex; }
+
+    inline GenVertex* GenParticle::end_vertex() const { return m_end_vertex; }
+
+    inline const Flow & GenParticle::flow() const { return m_flow; }
+
+    inline int GenParticle::flow( int code_index ) const
+    { return m_flow.icode( code_index ); }
+
+    inline const Polarization & GenParticle::polarization() const 
+    { return m_polarization; }
+
+    inline void GenParticle::set_momentum( const FourVector& vec4 )
+    { m_momentum = vec4; }
+
+    inline void GenParticle::set_pdg_id( int id ) { m_pdg_id = id; }
+
+    inline void GenParticle::set_status( int st ) { m_status = st; }
+
+    inline void GenParticle::set_flow( const Flow& f ) { m_flow = f; }
+
+    inline void GenParticle::set_flow( int code_index, int code ) 
+    {
+       if ( code == 0 ) { 
+           m_flow.set_unique_icode( code_index );
+       } else { 
+           m_flow.set_icode( code_index, code );
+       }
+    }
+
+    inline void GenParticle::set_polarization( const Polarization& polar )
+    { m_polarization = polar; }
+
+    inline int  GenParticle::barcode() const { return m_barcode; }
+
+    inline void GenParticle::set_barcode_( int bc ) { m_barcode = bc; }
+
+    inline bool GenParticle::is_undecayed() const {
+        return ( m_status==1 ) ?  true : false;
+    }
+    inline bool GenParticle::has_decayed() const {
+        return ( m_status==2 ) ?  true : false;
+    }
+    inline bool GenParticle::is_beam() const {
+        return ( m_status==4 ) ?  true : false;
+    }
+
+} // HepMC
+
+#endif  // HEPMC_GEN_PARTICLE_H
+//--------------------------------------------------------------------------
+
diff --git a/TEvtGen/HepMC/GenRanges.cc b/TEvtGen/HepMC/GenRanges.cc
new file mode 100644 (file)
index 0000000..4053d72
--- /dev/null
@@ -0,0 +1,86 @@
+//--------------------------------------------------------------------------
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, March 2010
+// 
+//////////////////////////////////////////////////////////////////////////
+//--------------------------------------------------------------------------
+
+#include <iostream>
+
+#include "HepMC/GenRanges.h"
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenVertex.h"
+
+namespace HepMC {
+
+GenEventVertexRange GenEvent::vertex_range()
+{
+    return GenEventVertexRange(*this);
+}
+
+ConstGenEventVertexRange GenEvent::vertex_range() const
+{
+    return ConstGenEventVertexRange(*this);
+}
+
+GenEventParticleRange GenEvent::particle_range()
+{
+    return GenEventParticleRange(*this);
+}
+
+ConstGenEventParticleRange GenEvent::particle_range() const
+{
+    return ConstGenEventParticleRange(*this);
+}
+
+GenVertexParticleRange GenVertex::particles( IteratorRange range )
+{
+    return GenVertexParticleRange(*this,range);
+}
+
+GenParticleProductionRange GenVertex::particles_in( GenParticle& p, IteratorRange range )
+{
+    return GenParticleProductionRange(p,range);
+}
+
+ConstGenParticleProductionRange GenVertex:: particles_in( GenParticle const & p, IteratorRange range ) const
+{
+    return ConstGenParticleProductionRange(p,range);
+}
+
+GenParticleEndRange GenVertex::particles_out( GenParticle& p, IteratorRange range )
+{
+    return GenParticleEndRange(p,range);
+}
+
+ConstGenParticleEndRange GenVertex::particles_out( GenParticle const & p, IteratorRange range ) const
+{
+    return ConstGenParticleEndRange(p,range);
+}
+
+GenParticleProductionRange GenParticle::particles_in( IteratorRange range )
+{
+    return GenParticleProductionRange(*this,range);
+}
+
+
+ConstGenParticleProductionRange GenParticle::particles_in( IteratorRange range ) const
+{
+    return ConstGenParticleProductionRange(*this,range);
+}
+
+
+GenParticleEndRange GenParticle::particles_out( IteratorRange range )
+{
+    return GenParticleEndRange(*this,range);
+}
+
+
+ConstGenParticleEndRange GenParticle::particles_out( IteratorRange range ) const
+{
+    return ConstGenParticleEndRange(*this,range);
+}
+
+
+
+} // HepMC
diff --git a/TEvtGen/HepMC/GenRanges.h b/TEvtGen/HepMC/GenRanges.h
new file mode 100644 (file)
index 0000000..017674c
--- /dev/null
@@ -0,0 +1,328 @@
+#ifndef HEPMC_GEN_EVENT_ITERATORS_H
+#define HEPMC_GEN_EVENT_ITERATORS_H
+
+//--------------------------------------------------------------------------
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, May 2009
+// 
+//////////////////////////////////////////////////////////////////////////
+//--------------------------------------------------------------------------
+
+#include <stdexcept>
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenVertex.h"
+
+namespace HepMC {
+
+//! GenEventVertexRange acts like a collection of vertices
+
+///
+/// \class  GenEventVertexRange
+/// HepMC::GenEventVertexRange is used to mimic a collection of
+/// vertices for ease of use - especially with utilities such as 
+/// the Boost foreach funtion
+///
+class GenEventVertexRange {
+
+public:
+
+  /// the constructor requires a GenEvent
+  GenEventVertexRange( GenEvent & e ) : m_event(e) {}
+  /// 
+  GenEvent::vertex_iterator begin() { return m_event.vertices_begin(); }
+  GenEvent::vertex_iterator end()   { return m_event.vertices_end(); }
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenEvent::vertex_range().
+  GenEventVertexRange& operator=( GenEventVertexRange & );
+
+private:
+  GenEvent & m_event;
+
+};
+
+//! ConstGenEventVertexRange acts like a collection of vertices
+
+///
+/// \class  ConstGenEventVertexRange
+/// HepMC::ConstGenEventVertexRange is used to mimic a collection of
+/// vertices for ease of use - especially with utilities such as 
+/// the Boost foreach funtion
+/// This is the const partner of GenEventVertexRange
+///
+class ConstGenEventVertexRange {
+
+public:
+
+  /// the constructor requires a const GenEvent
+  ConstGenEventVertexRange( GenEvent const & e ) : m_event(e) {}
+  /// 
+  GenEvent::vertex_const_iterator begin() const { return m_event.vertices_begin(); }
+  GenEvent::vertex_const_iterator end()   const { return m_event.vertices_end(); }
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenEvent::vertex_range().
+  ConstGenEventVertexRange& operator=( ConstGenEventVertexRange & );
+
+private:
+  GenEvent const & m_event;
+
+};
+
+//! GenEventParticleRange acts like a collection of particles
+
+///
+/// \class  GenEventParticleRange
+/// HepMC::GenEventParticleRange is used to mimic a collection of
+/// particles for ease of use - especially with utilities such as 
+/// the Boost foreach funtion
+///
+class GenEventParticleRange {
+
+public:
+
+  /// the constructor requires a GenEvent
+  GenEventParticleRange( GenEvent & e ) : m_event(e) {}
+  /// 
+  GenEvent::particle_iterator begin() { return m_event.particles_begin(); }
+  GenEvent::particle_iterator end()   { return m_event.particles_end(); }
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenEvent::particle_range().
+  GenEventParticleRange& operator=( GenEventParticleRange & );
+
+private:
+  GenEvent & m_event;
+
+};
+
+//! ConstGenEventParticleRange acts like a collection of particles
+
+///
+/// \class  ConstGenEventParticleRange
+/// HepMC::ConstGenEventParticleRange is used to mimic a collection of
+/// particles for ease of use - especially with utilities such as 
+/// the Boost foreach funtion
+/// This is the const partner of GenEventParticleRange
+///
+class ConstGenEventParticleRange {
+
+public:
+
+  /// the constructor requires a const GenEvent
+  ConstGenEventParticleRange( GenEvent const & e ) : m_event(e) {}
+  /// 
+  GenEvent::particle_const_iterator begin() const { return m_event.particles_begin(); }
+  GenEvent::particle_const_iterator end()   const { return m_event.particles_end(); }
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenEvent::particle_range().
+  ConstGenEventParticleRange& operator=( ConstGenEventParticleRange & );
+
+private:
+  GenEvent const & m_event;
+
+};
+
+//! GenVertexParticleRange acts like a collection of particles
+
+///
+/// \class  GenVertexParticleRange
+/// HepMC::GenVertexParticleRange is used to mimic a collection of
+/// particles for ease of use - especially with utilities such as 
+/// the Boost foreach funtion
+///
+class GenVertexParticleRange {
+
+public:
+
+  /// the constructor requires a GenVertex
+  GenVertexParticleRange( GenVertex & v, IteratorRange range = relatives ) 
+  : m_vertex(v),m_range(range) {}
+  /// 
+  GenVertex::particle_iterator begin() { return m_vertex.particles_begin(m_range); }
+  GenVertex::particle_iterator end()   { return m_vertex.particles_end(m_range); }
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenVertex::particles().
+  GenVertexParticleRange& operator=( GenVertexParticleRange & );
+
+private:
+  GenVertex     & m_vertex;
+  IteratorRange   m_range;
+
+};
+
+//! GenParticleProductionRange acts like a collection of particles
+
+///
+/// \class  GenParticleProductionRange
+/// HepMC::GenParticleProductionRange is used to mimic a collection of
+/// particles associated with the particle's production vertex for ease of use 
+/// Utilities such as the Boost foreach funtion will want to use this class.
+///
+class GenParticleProductionRange {
+
+public:
+
+  /// the constructor requires a GenParticle
+  GenParticleProductionRange( GenParticle const & p, IteratorRange range = relatives ) 
+  : m_particle(p),m_range(range) {}
+  /// begin iterator throws an error if the particle production_vertex is undefined
+  GenVertex::particle_iterator begin();
+  /// end iterator throws an error if the particle production_vertex is undefined
+  GenVertex::particle_iterator end(); 
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenVertex::particles_in().
+  GenParticleProductionRange& operator=( GenParticleProductionRange & );
+
+private:
+  GenParticle const & m_particle;
+  IteratorRange       m_range;
+
+};
+
+class ConstGenParticleProductionRange {
+
+public:
+
+  /// the constructor requires a GenParticle
+  ConstGenParticleProductionRange( GenParticle const & p, IteratorRange range = relatives ) 
+  : m_particle(p),m_range(range) {}
+  /// begin iterator throws an error if the particle production_vertex is undefined
+  GenVertex::particle_iterator begin();
+  /// end iterator throws an error if the particle production_vertex is undefined
+  GenVertex::particle_iterator end(); 
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenVertex::particles_in().
+  ConstGenParticleProductionRange& operator=( ConstGenParticleProductionRange & );
+
+private:
+  GenParticle const & m_particle;
+  IteratorRange       m_range;
+
+};
+
+//! GenParticleEndRange acts like a collection of particles
+
+///
+/// \class  GenParticleEndRange
+/// HepMC::GenParticleEndRange is used to mimic a collection of
+/// particles associated with the particle's end vertex for ease of use 
+/// Utilities such as the Boost foreach funtion will want to use this class.
+///
+class GenParticleEndRange {
+
+public:
+
+  /// the constructor requires a GenParticle
+  GenParticleEndRange( GenParticle const & p, IteratorRange range = relatives ) 
+  : m_particle(p),m_range(range) {}
+  /// begin iterator throws an error if the particle end_vertex is undefined
+  GenVertex::particle_iterator begin();
+  /// end iterator throws an error if the particle end_vertex is undefined
+  GenVertex::particle_iterator end(); 
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenVertex::particles_out().
+  GenParticleEndRange& operator=( GenParticleEndRange & );
+
+private:
+  GenParticle const & m_particle;
+  IteratorRange       m_range;
+
+};
+
+class ConstGenParticleEndRange {
+
+public:
+
+  /// the constructor requires a GenParticle
+  ConstGenParticleEndRange( GenParticle const & p, IteratorRange range = relatives ) 
+  : m_particle(p),m_range(range) {}
+  /// begin iterator throws an error if the particle end_vertex is undefined
+  GenVertex::particle_iterator begin();
+  /// end iterator throws an error if the particle end_vertex is undefined
+  GenVertex::particle_iterator end(); 
+
+private:
+  /// Because the class contains a reference, assignments are not allowed.
+  /// However, we need the copy constructor for GenVertex::particles_out().
+  ConstGenParticleEndRange& operator=( ConstGenParticleEndRange & );
+
+private:
+  GenParticle const & m_particle;
+  IteratorRange       m_range;
+
+};
+
+
+inline GenVertex::particle_iterator GenParticleProductionRange::begin() 
+{ 
+    if ( ! m_particle.production_vertex() ) 
+        throw(std::range_error("GenParticleProductionRange: GenParticle has no production_vertex"));
+    return m_particle.production_vertex()->particles_begin(m_range); 
+}
+
+inline GenVertex::particle_iterator GenParticleProductionRange::end()
+{ 
+    if ( ! m_particle.production_vertex() ) 
+        throw(std::range_error("GenParticleProductionRange: GenParticle has no production_vertex"));
+    return m_particle.production_vertex()->particles_end(m_range); 
+}
+
+
+inline GenVertex::particle_iterator ConstGenParticleProductionRange::begin() 
+{ 
+    if ( ! m_particle.production_vertex() ) 
+        throw(std::range_error("ConstGenParticleProductionRange: GenParticle has no production_vertex"));
+    return m_particle.production_vertex()->particles_begin(m_range); 
+}
+
+inline GenVertex::particle_iterator ConstGenParticleProductionRange::end()
+{ 
+    if ( ! m_particle.production_vertex() ) 
+        throw(std::range_error("ConstGenParticleProductionRange: GenParticle has no production_vertex"));
+    return m_particle.production_vertex()->particles_end(m_range); 
+}
+
+inline GenVertex::particle_iterator GenParticleEndRange::begin() 
+{ 
+    if ( ! m_particle.end_vertex() ) 
+        throw(std::range_error("GenParticleEndRange: GenParticle has no end_vertex"));
+    return m_particle.end_vertex()->particles_begin(m_range); 
+}
+inline GenVertex::particle_iterator GenParticleEndRange::end()
+{ 
+    if ( ! m_particle.end_vertex() ) 
+        throw(std::range_error("GenParticleEndRange: GenParticle has no end_vertex"));
+    return m_particle.end_vertex()->particles_end(m_range); 
+}
+
+inline GenVertex::particle_iterator ConstGenParticleEndRange::begin() 
+{ 
+    if ( ! m_particle.end_vertex() ) 
+        throw(std::range_error("ConstGenParticleEndRange: GenParticle has no end_vertex"));
+    return m_particle.end_vertex()->particles_begin(m_range); 
+}
+inline GenVertex::particle_iterator ConstGenParticleEndRange::end()
+{ 
+    if ( ! m_particle.end_vertex() ) 
+        throw(std::range_error("ConstGenParticleEndRange: GenParticle has no end_vertex"));
+    return m_particle.end_vertex()->particles_end(m_range); 
+}
+
+} // HepMC
+
+#endif  // HEPMC_GEN_EVENT_ITERATORS_H
diff --git a/TEvtGen/HepMC/GenVertex.cc b/TEvtGen/HepMC/GenVertex.cc
new file mode 100644 (file)
index 0000000..31f0c97
--- /dev/null
@@ -0,0 +1,925 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999
+// GenVertex within an event
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/GenParticle.h"
+#include "HepMC/GenVertex.h"
+#include "HepMC/GenEvent.h"
+#include "HepMC/SearchVector.h"
+#include <iomanip>       // needed for formatted output
+
+namespace HepMC {
+
+    GenVertex::GenVertex( const FourVector& position,
+                         int id, const WeightContainer& weights ) 
+       : m_position(position), m_id(id), m_weights(weights), m_event(0),
+         m_barcode(0)
+    {}
+    //{
+       //s_counter++;
+    //}
+
+    GenVertex::GenVertex( const GenVertex& invertex ) 
+    : m_position( invertex.position() ),
+      m_particles_in(),
+      m_particles_out(),
+      m_id( invertex.id() ),
+      m_weights( invertex.weights() ),
+      m_event(0),
+      m_barcode(0) 
+    {
+       /// Shallow copy: does not copy the FULL list of particle pointers.
+       /// Creates a copy of  - invertex
+       ///                    - outgoing particles of invertex, but sets the
+       ///                      decay vertex of these particles to NULL
+       ///                    - all incoming particles which do not have a
+       ///                      creation vertex.
+       /// (i.e. it creates copies of all particles which it owns)
+       /// (note - impossible to copy the FULL list of particle pointers 
+       ///         while having the vertex
+       ///         and particles in/out point-back to one another -- unless you
+       ///         copy the entire tree -- which we don't want to do)
+       //
+       for ( particles_in_const_iterator 
+                 part1 = invertex.particles_in_const_begin();
+             part1 != invertex.particles_in_const_end(); ++part1 ) {
+           if ( !(*part1)->production_vertex() ) { 
+               GenParticle* pin = new GenParticle(**part1);
+               add_particle_in(pin);
+           }
+       }
+       for ( particles_out_const_iterator
+                 part2 = invertex.particles_out_const_begin();
+             part2 != invertex.particles_out_const_end(); part2++ ) {
+           GenParticle* pin = new GenParticle(**part2);
+           add_particle_out(pin);
+       }
+       suggest_barcode( invertex.barcode() );
+       //
+       //s_counter++;
+    }
+    
+    GenVertex::~GenVertex() {
+       //
+       // need to delete any particles previously owned by this vertex
+       if ( parent_event() ) parent_event()->remove_barcode(this);
+       delete_adopted_particles();
+       //s_counter--;
+    }
+
+    void GenVertex::swap( GenVertex & other)
+    {
+        m_position.swap( other.m_position );
+       m_particles_in.swap( other.m_particles_in );
+       m_particles_out.swap( other.m_particles_out );
+       std::swap( m_id, other.m_id );
+       m_weights.swap( other.m_weights );
+       std::swap( m_event, other.m_event );
+       std::swap( m_barcode, other.m_barcode );
+    }
+
+    GenVertex& GenVertex::operator=( const GenVertex& invertex ) {
+       /// Shallow: does not copy the FULL list of particle pointers.
+       /// Creates a copy of  - invertex
+       ///                    - outgoing particles of invertex, but sets the
+       ///                      decay vertex of these particles to NULL
+       ///                    - all incoming particles which do not have a
+       ///                      creation vertex.
+       ///                    - it does not alter *this's m_event (!)
+       /// (i.e. it creates copies of all particles which it owns)
+       /// (note - impossible to copy the FULL list of particle pointers 
+       ///         while having the vertex
+       ///         and particles in/out point-back to one another -- unless you
+       ///         copy the entire tree -- which we don't want to do)
+       ///
+
+        // best practices implementation
+       GenVertex tmp( invertex );
+       swap( tmp );
+       return *this;
+    }
+    
+    bool GenVertex::operator==( const GenVertex& a ) const {
+       /// Returns true if the positions and the particles in the lists of a 
+       ///  and this are identical. Does not compare barcodes.
+       /// Note that it is impossible for two vertices to point to the same 
+       ///  particle's address, so we need to do more than just compare the
+       ///  particle pointers
+       //
+       if ( a.position() !=  this->position() ) return false;
+       // if the size of the inlist differs, return false.
+       if ( a.particles_in_size() !=  this->particles_in_size() ) return false;
+       // if the size of the outlist differs, return false.
+       if ( a.particles_out_size() !=  this->particles_out_size() ) return false;
+       // loop over the inlist and ensure particles are identical
+       //   (only do this if the lists aren't empty - we already know
+       //   if one isn't, then other isn't either!)
+       if ( a.particles_in_const_begin() != a.particles_in_const_end() ) {
+           for ( GenVertex::particles_in_const_iterator 
+                     ia = a.particles_in_const_begin(),
+                     ib = this->particles_in_const_begin();
+                 ia != a.particles_in_const_end(); ia++, ib++ ){
+               if ( **ia != **ib ) return false;
+           }
+       }
+       // loop over the outlist and ensure particles are identical
+       //   (only do this if the lists aren't empty - we already know
+       //   if one isn't, then other isn't either!)
+       if ( a.particles_out_const_begin() != a.particles_out_const_end() ) {
+           for ( GenVertex::particles_out_const_iterator 
+                     ia = a.particles_out_const_begin(),
+                     ib = this->particles_out_const_begin();
+                 ia != a.particles_out_const_end(); ia++, ib++ ){
+               if ( **ia != **ib ) return false;
+           }
+       }
+       return true;
+    }
+
+    bool GenVertex::operator!=( const GenVertex& a ) const {
+       // Returns true if the positions and lists of a and this are not equal.
+       return !( a == *this );
+    }  
+
+    void GenVertex::print( std::ostream& ostr ) const {
+        // find the current stream state
+       std::ios_base::fmtflags orig = ostr.flags();
+       std::streamsize prec = ostr.precision();
+       if ( barcode()!=0 ) {
+           if ( position() != FourVector(0,0,0,0) ) {
+               ostr << "Vertex:";
+               ostr.width(9);
+               ostr << barcode();
+               ostr << " ID:";
+               ostr.width(5);
+               ostr << id();
+               ostr << " (X,cT)=";
+               ostr.width(9);
+                ostr.precision(2);
+                ostr.setf(std::ios::scientific, std::ios::floatfield);
+               ostr.setf(std::ios_base::showpos);
+               ostr << position().x() << ",";
+               ostr.width(9);
+               ostr << position().y() << ",";
+               ostr.width(9);
+               ostr << position().z() << ",";
+               ostr.width(9);
+               ostr << position().t();
+                ostr.setf(std::ios::fmtflags(0), std::ios::floatfield);
+               ostr.unsetf(std::ios_base::showpos);
+               ostr << std::endl;
+           } else {
+               ostr << "GenVertex:";
+               ostr.width(9);
+               ostr << barcode();
+               ostr << " ID:";
+               ostr.width(5);
+               ostr << id();
+               ostr << " (X,cT):0";
+               ostr << std::endl;
+           }
+       } else {
+           // If the vertex doesn't have a unique barcode assigned, then
+           //  we print its memory address instead... so that the
+           //  print out gives us a unique tag for the particle.
+           if ( position() != FourVector(0,0,0,0) ) {
+               ostr << "Vertex:";
+               ostr.width(9);
+               ostr << (void*)this;
+               ostr << " ID:";
+               ostr.width(5);
+               ostr << id();
+               ostr << " (X,cT)=";
+               ostr.width(9);
+                ostr.precision(2);
+                ostr.setf(std::ios::scientific, std::ios::floatfield);
+               ostr.setf(std::ios_base::showpos);
+               ostr << position().x();
+               ostr.width(9);
+               ostr << position().y();
+               ostr.width(9);
+               ostr << position().z();
+               ostr.width(9);
+               ostr << position().t();
+                ostr.setf(std::ios::fmtflags(0), std::ios::floatfield);
+               ostr.unsetf(std::ios_base::showpos);
+               ostr << std::endl;
+           } else {
+               ostr << "GenVertex:";
+               ostr.width(9);
+               ostr << (void*)this;
+               ostr << " ID:";
+               ostr.width(5);
+               ostr << id();
+               ostr << " (X,cT):0";
+               ostr << std::endl;
+           }
+       }
+
+       // print the weights if there are any
+       if ( ! weights().empty() ) {
+           ostr << " Wgts(" << weights().size() << ")=";
+           for ( WeightContainer::const_iterator wgt = weights().begin();
+                 wgt != weights().end(); wgt++ ) { ostr << *wgt << " "; }
+           ostr << std::endl;
+       }
+       // print out all the incoming, then outgoing particles
+       for ( particles_in_const_iterator part1 = particles_in_const_begin();
+             part1 != particles_in_const_end(); part1++ ) {
+           if ( part1 == particles_in_const_begin() ) {
+               ostr << " I:";
+               ostr.width(2);
+               ostr << m_particles_in.size();
+           } else { ostr << "     "; }
+           //(*part1)->print( ostr );  //uncomment for long debugging printout
+           ostr << **part1 << std::endl;
+       }
+       for ( particles_out_const_iterator part2 = particles_out_const_begin();
+             part2 != particles_out_const_end(); part2++ ) {
+           if ( part2 == particles_out_const_begin() ) { 
+               ostr << " O:";
+               ostr.width(2);
+               ostr << m_particles_out.size();
+           } else { ostr << "     "; }
+           //(*part2)->print( ostr ); // uncomment for long debugging printout
+           ostr << **part2 << std::endl;
+       }
+        // restore the stream state
+        ostr.flags(orig);
+        ostr.precision(prec);
+    }
+
+    double GenVertex::check_momentum_conservation() const {
+       /// finds the difference between the total momentum out and the total
+       /// momentum in vectors, and returns the magnitude of this vector
+       /// i.e.         returns | vec{p_in} - vec{p_out} |
+       double sumpx = 0, sumpy = 0, sumpz = 0;
+       for ( particles_in_const_iterator part1 = particles_in_const_begin();
+             part1 != particles_in_const_end(); part1++ ) {
+           sumpx   += (*part1)->momentum().px();
+           sumpy   += (*part1)->momentum().py();
+           sumpz   += (*part1)->momentum().pz();
+       }
+       for ( particles_out_const_iterator part2 = particles_out_const_begin();
+             part2 != particles_out_const_end(); part2++ ) {
+           sumpx   -= (*part2)->momentum().px();
+           sumpy   -= (*part2)->momentum().py();
+           sumpz   -= (*part2)->momentum().pz();
+       }
+       return sqrt( sumpx*sumpx + sumpy*sumpy + sumpz*sumpz );
+    }
+
+    void GenVertex::add_particle_in( GenParticle* inparticle ) {
+       if ( !inparticle ) return;
+       // if inparticle previously had a decay vertex, remove it from that
+       // vertex's list
+       if ( inparticle->end_vertex() ) {
+           inparticle->end_vertex()->remove_particle_in( inparticle );
+       }
+       m_particles_in.push_back( inparticle );
+       inparticle->set_end_vertex_( this );
+    }
+
+    void GenVertex::add_particle_out( GenParticle* outparticle ) {
+       if ( !outparticle ) return;
+       // if outparticle previously had a production vertex,
+       // remove it from that vertex's list
+       if ( outparticle->production_vertex() ) {
+           outparticle->production_vertex()->remove_particle_out( outparticle );
+       }
+       m_particles_out.push_back( outparticle );
+       outparticle->set_production_vertex_( this );
+    }
+
+    GenParticle* GenVertex::remove_particle( GenParticle* particle ) {
+       /// this finds *particle in the in and/or out list and removes it from
+       ///  these lists ... it DOES NOT DELETE THE PARTICLE or its relations.
+       /// you could delete the particle too as follows:
+       ///      delete vtx->remove_particle( particle );
+       /// or if the particle has an end vertex, you could:
+       ///      delete vtx->remove_particle( particle )->end_vertex();
+       /// which would delete the particle's end vertex, and thus would
+       /// also delete the particle, since the particle would be 
+       /// owned by the end vertex.
+       if ( !particle ) return 0;
+       if ( particle->end_vertex() == this ) {
+           particle->set_end_vertex_( 0 );
+           remove_particle_in(particle);
+       }
+       if ( particle->production_vertex() == this ) {
+           particle->set_production_vertex_(0);
+           remove_particle_out(particle);
+       }
+       return particle;
+    }
+
+    void GenVertex::remove_particle_in( GenParticle* particle ) {
+       /// this finds *particle in m_particles_in and removes it from that list
+       if ( !particle ) return;
+       m_particles_in.erase( already_in_vector( &m_particles_in, particle ) );
+    }
+
+    void GenVertex::remove_particle_out( GenParticle* particle ) {
+       /// this finds *particle in m_particles_out and removes it from that list
+       if ( !particle ) return;
+       m_particles_out.erase( already_in_vector( &m_particles_out, particle ) );
+    }
+
+    void GenVertex::delete_adopted_particles() {
+       /// deletes all particles which this vertex owns
+       /// to be used by the vertex destructor and operator=
+       //
+       if ( m_particles_out.empty() && m_particles_in.empty() ) return;
+       // 1. delete all outgoing particles which don't have decay vertices.
+       //    those that do become the responsibility of the decay vertex
+       //    and have their productionvertex pointer set to NULL
+       for ( std::vector<GenParticle*>::iterator part1 = m_particles_out.begin();
+             part1 != m_particles_out.end(); ) {
+           if ( !(*part1)->end_vertex() ) {
+               delete *(part1++);
+           } else { 
+               (*part1)->set_production_vertex_(0);
+               ++part1;
+           }
+       }
+       m_particles_out.clear();
+       //
+       // 2. delete all incoming particles which don't have production
+       //    vertices. those that do become the responsibility of the 
+       //    production vertex and have their decayvertex pointer set to NULL
+       for ( std::vector<GenParticle*>::iterator part2 = m_particles_in.begin();
+             part2 != m_particles_in.end(); ) {
+           if ( !(*part2)->production_vertex() ) { 
+               delete *(part2++);
+           } else { 
+               (*part2)->set_end_vertex_(0); 
+               ++part2;
+           }
+       }
+       m_particles_in.clear();
+    }
+
+    bool GenVertex::suggest_barcode( int the_bar_code )
+    {
+       /// allows a barcode to be suggested for this vertex.
+       /// In general it is better to let the event pick the barcode for
+       /// you, which is automatic.
+       /// Returns TRUE if the suggested barcode has been accepted (i.e. the
+       ///  suggested barcode has not already been used in the event, 
+       ///  and so it was used).
+       /// Returns FALSE if the suggested barcode was rejected, or if the
+       ///  vertex is not yet part of an event, such that it is not yet
+       ///  possible to know if the suggested barcode will be accepted).
+       if ( the_bar_code >0 ) {
+           std::cerr << "GenVertex::suggest_barcode WARNING, vertex bar codes"
+                     << "\n MUST be negative integers. Positive integers "
+                     << "\n are reserved for particles only. Your suggestion "
+                     << "\n has been rejected." << std::endl;
+           return false;
+       }
+       bool success = false;
+       if ( parent_event() ) {
+           success = parent_event()->set_barcode( this, the_bar_code );
+       } else { set_barcode_( the_bar_code ); }
+       return success;
+    }
+
+    void GenVertex::set_parent_event_( GenEvent* new_evt ) 
+    { 
+       GenEvent* orig_evt = m_event;
+       m_event = new_evt; 
+       //
+       // every time a vertex's parent event changes, the map of barcodes
+       //   in the new and old parent event needs to be modified to 
+       //   reflect this
+       if ( orig_evt != new_evt ) {
+           if (new_evt) new_evt->set_barcode( this, barcode() );
+           if (orig_evt) orig_evt->remove_barcode( this );
+           // we also need to loop over all the particles which are owned by 
+           //  this vertex, and remove their barcodes from the old event.
+           for ( particles_in_const_iterator part1=particles_in_const_begin();
+                 part1 != particles_in_const_end(); part1++ ) {
+               if ( !(*part1)->production_vertex() ) { 
+                   if ( orig_evt ) orig_evt->remove_barcode( *part1 );
+                   if ( new_evt ) new_evt->set_barcode( *part1, 
+                                                        (*part1)->barcode() );
+               }
+           }
+           for ( particles_out_const_iterator
+                     part2 = particles_out_const_begin();
+                 part2 != particles_out_const_end(); part2++ ) {
+                   if ( orig_evt ) orig_evt->remove_barcode( *part2 );
+                   if ( new_evt ) new_evt->set_barcode( *part2, 
+                                                        (*part2)->barcode() );
+           }
+       }
+    }
+
+    void GenVertex::change_parent_event_( GenEvent* new_evt ) 
+    { 
+       //
+       // this method is for use with swap
+       // particles and vertices have already been exchanged, 
+       // but the backpointer needs to be fixed
+       //GenEvent* orig_evt = m_event;
+       m_event = new_evt; 
+    }
+
+    /////////////
+    // Static  //
+    /////////////
+    //unsigned int GenVertex::counter() { return s_counter; }
+    //unsigned int GenVertex::s_counter = 0; 
+
+    /////////////
+    // Friends //
+    /////////////
+
+    /// send vertex information to ostr for printing
+    std::ostream& operator<<( std::ostream& ostr, const GenVertex& vtx ) {
+       if ( vtx.barcode()!=0 ) ostr << "BarCode " << vtx.barcode();
+       else ostr << "Address " << &vtx;
+       ostr << " (X,cT)=";
+       if ( vtx.position() != FourVector(0,0,0,0)) {
+           ostr << vtx.position().x() << ","
+                << vtx.position().y() << ","
+                << vtx.position().z() << ","
+                << vtx.position().t();
+       } else { ostr << 0; }
+       ostr << " #in:" << vtx.particles_in_size()
+            << " #out:" << vtx.particles_out_size();
+       return ostr;
+    }
+
+    /////////////////////////////
+    // edge_iterator           // (protected - for internal use only)
+    /////////////////////////////
+    // If the user wants the functionality of the edge_iterator, he should
+    // use particle_iterator with IteratorRange = family, parents, or children
+    //
+
+    GenVertex::edge_iterator::edge_iterator() : m_vertex(0), m_range(family), 
+       m_is_inparticle_iter(false), m_is_past_end(true)
+    {}
+
+    GenVertex::edge_iterator::edge_iterator( const GenVertex& vtx, 
+                                         IteratorRange range ) :
+       m_vertex(&vtx), m_range(family) 
+    {
+       // Note: (26.1.2000) the original version of edge_iterator inheritted
+       //       from set<GenParticle*>::const_iterator() rather than using
+       //       composition as it does now.
+       //       The inheritted version suffered from a strange bug, which
+       //       I have not fully understood --- it only occurred after many
+       //       events were processed and only when I called the delete 
+       //       function on past events. I believe it had something to do with
+       //       the past the end values, which are now robustly coded in this
+       //       version as boolean members.
+       //
+       // default range is family, only other choices are children/parents
+       //    descendants/ancestors not allowed & recasted ot children/parents
+       if ( range == descendants || range == children ) m_range = children;
+       if ( range == ancestors   || range == parents  ) m_range = parents;
+       //
+       if ( m_vertex->m_particles_in.empty() &&
+            m_vertex->m_particles_out.empty() ) {
+           // Case: particles_in and particles_out is empty.
+           m_is_inparticle_iter = false;
+           m_is_past_end = true;
+       } else if ( m_range == parents && m_vertex->m_particles_in.empty() ){
+           // Case: particles in is empty and parents is requested.
+           m_is_inparticle_iter = true;
+           m_is_past_end = true;
+       } else if ( m_range == children && m_vertex->m_particles_out.empty() ){
+           // Case: particles out is empty and children is requested.
+           m_is_inparticle_iter = false;
+           m_is_past_end = true;
+       } else if ( m_range == children ) {
+           // Case: particles out is NOT empty, and children is requested
+           m_set_iter = m_vertex->m_particles_out.begin();
+           m_is_inparticle_iter = false;
+           m_is_past_end = false;
+       } else if ( m_range == family && m_vertex->m_particles_in.empty() ) {
+           // Case: particles in is empty, particles out is NOT empty,
+           //       and family is requested. Then skip ahead to partilces out.
+           m_set_iter = m_vertex->m_particles_out.begin();
+           m_is_inparticle_iter = false;
+           m_is_past_end = false;
+       } else {
+           // Normal scenario: start with the first incoming particle
+           m_set_iter = m_vertex->m_particles_in.begin();
+           m_is_inparticle_iter = true;
+           m_is_past_end = false;
+       }
+    }
+
+    GenVertex::edge_iterator::edge_iterator( const edge_iterator& p ) {
+       *this = p;
+    }
+
+    GenVertex::edge_iterator::~edge_iterator() {}
+
+    GenVertex::edge_iterator& GenVertex::edge_iterator::operator=(
+       const edge_iterator& p ) {
+       m_vertex = p.m_vertex;
+       m_range = p.m_range;
+       m_set_iter = p.m_set_iter;
+       m_is_inparticle_iter = p.m_is_inparticle_iter;
+       m_is_past_end = p.m_is_past_end;
+       return *this;
+    }
+
+    GenParticle* GenVertex::edge_iterator::operator*(void) const {
+       if ( !m_vertex || m_is_past_end ) return 0;
+       return *m_set_iter;
+    }
+
+    GenVertex::edge_iterator& GenVertex::edge_iterator::operator++(void){
+       // Pre-fix increment
+       //
+       // increment the set iterator (unless we're past the end value)
+       if ( m_is_past_end ) return *this;
+       ++m_set_iter;
+       // handle cases where m_set_iter points past the end
+       if ( m_range == family && m_is_inparticle_iter &&
+            m_set_iter == m_vertex->m_particles_in.end() ) {
+           // at the end on in particle set, and range is family, so move to
+           // out particle set
+           m_set_iter = m_vertex->m_particles_out.begin();
+           m_is_inparticle_iter = false;
+       } else if ( m_range == parents && 
+                   m_set_iter == m_vertex->m_particles_in.end() ) {
+           // at the end on in particle set, and range is parents only, so
+           // move into past the end state
+           m_is_past_end = true;
+           // might as well bail out now
+           return *this;
+       } 
+       // are we iterating over input or output particles?
+       if( m_is_inparticle_iter ) {
+           // the following is not else if because we might have range=family
+           // with an empty particles_in set.  
+           if ( m_set_iter == m_vertex->m_particles_in.end() ) {
+               //whenever out particles end is reached, go into past the end state
+               m_is_past_end = true;
+           }
+       } else {
+           // the following is not else if because we might have range=family
+           // with an empty particles_out set. 
+           if ( m_set_iter == m_vertex->m_particles_out.end() ) {
+               //whenever out particles end is reached, go into past the end state
+               m_is_past_end = true;
+           }
+       }
+       return *this;
+    }
+
+    GenVertex::edge_iterator GenVertex::edge_iterator::operator++(int){
+       // Post-fix increment
+       edge_iterator returnvalue = *this;
+       ++*this;
+       return returnvalue;
+    }
+
+    bool GenVertex::edge_iterator::is_parent() const {
+       if ( **this && (**this)->end_vertex() == m_vertex ) return true;
+       return false;
+    }
+
+    bool GenVertex::edge_iterator::is_child() const {
+       if ( **this && (**this)->production_vertex() == m_vertex ) return true;
+       return false;
+    }
+
+    int GenVertex::edges_size( IteratorRange range ) const {
+       if ( range == children ) return m_particles_out.size();
+       if ( range == parents ) return m_particles_in.size();
+       if ( range == family ) return m_particles_out.size()
+                                     + m_particles_in.size();
+       return 0;
+    }
+
+    /////////////////////
+    // vertex_iterator //
+    /////////////////////
+    
+    GenVertex::vertex_iterator::vertex_iterator() 
+       : m_vertex(0), m_range(), m_visited_vertices(0), m_it_owns_set(0), 
+         m_recursive_iterator(0)
+    {}
+
+    GenVertex::vertex_iterator::vertex_iterator( GenVertex& vtx_root,
+                                             IteratorRange range )
+       : m_vertex(&vtx_root), m_range(range) 
+    {
+       // standard public constructor
+       //
+       m_visited_vertices = new std::set<const GenVertex*>;
+       m_it_owns_set = 1;
+       m_visited_vertices->insert( m_vertex );
+       m_recursive_iterator = 0;
+       m_edge = m_vertex->edges_begin( m_range );
+       // advance to the first good return value
+       if ( !follow_edge_() &&
+            m_edge != m_vertex->edges_end( m_range )) ++*this;
+    }
+
+    GenVertex::vertex_iterator::vertex_iterator( GenVertex& vtx_root,
+       IteratorRange range, std::set<const HepMC::GenVertex*>& visited_vertices ) :
+       m_vertex(&vtx_root), m_range(range), 
+       m_visited_vertices(&visited_vertices), m_it_owns_set(0),
+       m_recursive_iterator(0) 
+    {
+       // This constuctor is only to be called internally by this class
+        //   for use with its recursive member pointer (m_recursive_iterator).
+        // Note: we do not need to insert m_vertex_root in the vertex - that is
+        //  the responsibility of this iterator's mother, which is normally
+        //  done just before calling this protected constructor.
+       m_edge = m_vertex->edges_begin( m_range );
+       // advance to the first good return value
+       if ( !follow_edge_() &&
+            m_edge != m_vertex->edges_end( m_range )) ++*this;
+     }
+
+    GenVertex::vertex_iterator::vertex_iterator( const vertex_iterator& v_iter)
+       : m_vertex(0), m_visited_vertices(0), m_it_owns_set(0), 
+         m_recursive_iterator(0) 
+    {
+        *this = v_iter;
+    }
+
+    GenVertex::vertex_iterator::~vertex_iterator() {
+       if ( m_recursive_iterator ) delete m_recursive_iterator;
+        if ( m_it_owns_set ) delete m_visited_vertices;
+    }
+
+    GenVertex::vertex_iterator& GenVertex::vertex_iterator::operator=( 
+       const vertex_iterator& v_iter ) 
+    {
+       // Note: when copying a vertex_iterator that is NOT the owner
+       // of its set container, the pointer to the set is copied. Beware!
+       // (see copy_with_own_set() if you want a different set pointed to)
+       // In practise the user never needs to worry
+       // since such iterators are only intended to be used internally.
+       //
+       // destruct data member pointers
+       if ( m_recursive_iterator ) delete m_recursive_iterator;
+       m_recursive_iterator = 0;
+       if ( m_it_owns_set ) delete m_visited_vertices;
+       m_visited_vertices = 0;
+       m_it_owns_set = 0;
+       // copy the target vertex_iterator to this iterator 
+       m_vertex = v_iter.m_vertex;
+       m_range = v_iter.m_range;
+       if ( v_iter.m_it_owns_set ) {
+           // i.e. this vertex will own its set if v_iter points to any
+           // vertex set regardless of whether v_iter owns the set or not!
+           m_visited_vertices = 
+               new std::set<const GenVertex*>(*v_iter.m_visited_vertices);
+           m_it_owns_set = 1;
+       } else {
+           m_visited_vertices = v_iter.m_visited_vertices;
+           m_it_owns_set = 0;
+       }
+       //
+        // Note: m_vertex_root is already included in the set of 
+        //  tv_iter.m_visited_vertices, we do not need to insert it.
+        //
+        m_edge = v_iter.m_edge;
+       copy_recursive_iterator_( v_iter.m_recursive_iterator );
+        return *this;
+    }
+
+    GenVertex* GenVertex::vertex_iterator::operator*(void) const {
+       // de-reference operator
+       //
+       // if this iterator has an iterator_node, then we return the iterator
+        // node.
+        if ( m_recursive_iterator ) return  **m_recursive_iterator;
+       //
+       // an iterator can only return its m_vertex -- any other vertex
+        //  is returned by means of a recursive iterator_node 
+        //  (so this is the only place in the iterator code that a vertex 
+        //   is returned!) 
+        if ( m_vertex ) return m_vertex;
+        return 0;
+    }
+
+    GenVertex::vertex_iterator& GenVertex::vertex_iterator::operator++(void) {
+        // Pre-fix incremental operator
+        //
+        // check for "past the end condition" denoted by m_vertex=0
+        if ( !m_vertex ) return *this;
+       // if at the last edge, move into the "past the end condition"
+       if ( m_edge == m_vertex->edges_end( m_range ) ) {
+           m_vertex = 0;
+           return *this;
+       }
+       // check to see if we need to create a new recursive iterator by
+       // following the current edge only if a recursive iterator doesn't
+       // already exist. If a new recursive_iterator is created, return it.
+       if ( follow_edge_() ) {
+              return *this;
+       }
+       //
+        // if a recursive iterator already exists, increment it, and return its
+        // value (unless the recursive iterator has null root_vertex [its
+        // root vertex is set to null if it has already returned its root] 
+        // - in which case we delete it) 
+        // and return the vertex pointed to by the edge.
+        if ( m_recursive_iterator ) {
+            ++(*m_recursive_iterator);
+            if ( **m_recursive_iterator ) {
+               return *this;
+           } else {
+                delete m_recursive_iterator;
+                m_recursive_iterator = 0;
+           }
+       }
+       //
+        // increment to the next particle edge
+        ++m_edge;
+       // if m_edge is at the end, then we have incremented through all
+       // edges, and it is time to return m_vertex, which we accomplish
+       // by returning *this
+       if ( m_edge == m_vertex->edges_end( m_range ) ) return *this;
+       // otherwise we follow the current edge by recursively ++ing.
+       return ++(*this);
+    }
+
+    GenVertex::vertex_iterator GenVertex::vertex_iterator::operator++(int) {
+       // Post-fix increment
+        vertex_iterator returnvalue(*this);
+        ++(*this);
+        return returnvalue;
+    }
+
+    void GenVertex::vertex_iterator::copy_with_own_set( 
+       const vertex_iterator& v_iter, 
+       std::set<const HepMC::GenVertex*>& visited_vertices ) {
+       /// intended for internal use only. (use with care!)
+       /// this is the same as the operator= method, but it allows the
+       /// user to specify which set container m_visited_vertices points to.
+       /// in all cases, this vertex will NOT own its set.
+       //
+       // destruct data member pointers
+       if ( m_recursive_iterator ) delete m_recursive_iterator;
+       m_recursive_iterator = 0;
+       if ( m_it_owns_set ) delete m_visited_vertices;
+       m_visited_vertices = 0;
+       m_it_owns_set = false;
+       // copy the target vertex_iterator to this iterator 
+       m_vertex = v_iter.m_vertex;
+       m_range = v_iter.m_range;
+       m_visited_vertices = &visited_vertices;
+       m_it_owns_set = false;
+        m_edge = v_iter.m_edge;
+       copy_recursive_iterator_( v_iter.m_recursive_iterator );
+    }
+
+    GenVertex* GenVertex::vertex_iterator::follow_edge_() {
+       // follows the edge pointed to by m_edge by creating a 
+       // recursive iterator for it.
+       //
+       // if a m_recursive_iterator already exists, 
+        // this routine has nothing to do,
+        // if there's no m_vertex, there's no point following anything, 
+       // also there's no point trying to follow a null edge.
+       if ( m_recursive_iterator || !m_vertex || !*m_edge ) return 0;
+       //
+       // if the range is parents, children, or family (i.e. <= family)
+       // then only the iterator which owns the set is allowed to create
+       // recursive iterators (i.e. recursivity is only allowed to go one
+       // layer deep)
+       if ( m_range <= family && m_it_owns_set == 0 ) return 0;
+       //
+       // M.Dobbs 2001-07-16
+       // Take care of the very special-rare case where a particle might
+       // point to the same vertex for both production and end
+       if ( (*m_edge)->production_vertex() == 
+            (*m_edge)->end_vertex() ) return 0;
+       //
+       // figure out which vertex m_edge is pointing to
+       GenVertex* vtx = ( m_edge.is_parent() ? 
+                       (*m_edge)->production_vertex() :
+                       (*m_edge)->end_vertex() );
+        // if the pointed to vertex doesn't exist or has already been visited, 
+        // then return null
+       if ( !vtx || !(m_visited_vertices->insert(vtx).second) ) return 0;
+       // follow that edge by creating a recursive iterator
+       m_recursive_iterator = new vertex_iterator( *vtx, m_range,
+                                                   *m_visited_vertices);
+       // and return the vertex pointed to by m_recursive_iterator 
+       return **m_recursive_iterator;
+    }
+       
+    void GenVertex::vertex_iterator::copy_recursive_iterator_( 
+       const vertex_iterator* recursive_v_iter ) {
+       // to properly copy the recursive iterator, we need to ensure
+       // the proper set container is transfered ... then do this 
+       // operation .... you guessed it .... recursively!
+       //
+       if ( !recursive_v_iter ) return;
+       m_recursive_iterator = new vertex_iterator();
+       m_recursive_iterator->m_vertex = recursive_v_iter->m_vertex;
+       m_recursive_iterator->m_range = recursive_v_iter->m_range;
+       m_recursive_iterator->m_visited_vertices = m_visited_vertices;
+       m_recursive_iterator->m_it_owns_set = 0;
+       m_recursive_iterator->m_edge = recursive_v_iter->m_edge;
+       m_recursive_iterator->copy_recursive_iterator_( 
+           recursive_v_iter->m_recursive_iterator );
+    }
+
+    ///////////////////////////////
+    // particle_iterator         //
+    ///////////////////////////////
+
+    GenVertex::particle_iterator::particle_iterator() {}
+
+    GenVertex::particle_iterator::particle_iterator( GenVertex& vertex_root,
+                                                    IteratorRange range ) {
+       // General Purpose Constructor
+       //
+       if ( range <= family ) {
+           m_edge = GenVertex::edge_iterator( vertex_root, range ); 
+       } else {
+           m_vertex_iterator = GenVertex::vertex_iterator(vertex_root, range);
+           m_edge = GenVertex::edge_iterator( **m_vertex_iterator, 
+                                                 m_vertex_iterator.range() ); 
+       }
+       advance_to_first_();
+    }
+
+    GenVertex::particle_iterator::particle_iterator( 
+       const particle_iterator& p_iter ){
+       *this = p_iter;
+    }
+
+    GenVertex::particle_iterator::~particle_iterator() {}
+
+    GenVertex::particle_iterator& 
+    GenVertex::particle_iterator::operator=( const particle_iterator& p_iter )
+    {
+       m_vertex_iterator = p_iter.m_vertex_iterator;
+       m_edge = p_iter.m_edge;
+       return *this;
+    }
+
+    GenParticle* GenVertex::particle_iterator::operator*(void) const {
+       return *m_edge;
+    }
+
+    GenVertex::particle_iterator& 
+    GenVertex::particle_iterator::operator++(void) {
+       //Pre-fix increment 
+       //
+       if ( *m_edge ) {
+           ++m_edge;
+       } else if ( *m_vertex_iterator ) {      // !*m_edge is implicit
+           // past end of edge, but still have more vertices to visit
+           // increment the vertex, checking that the result is valid
+           if ( !*(++m_vertex_iterator) ) return *this;
+           m_edge = GenVertex::edge_iterator( **m_vertex_iterator, 
+                                                 m_vertex_iterator.range() ); 
+       } else {        // !*m_edge and !*m_vertex_iterator are implicit
+           // past the end condition: do nothing
+           return *this;
+       }
+       advance_to_first_();
+       return *this;
+    }
+
+    GenVertex::particle_iterator GenVertex::particle_iterator::operator++(int){
+       //Post-fix increment
+       particle_iterator returnvalue(*this);
+       ++(*this);
+       return returnvalue;
+    }
+
+    GenParticle* GenVertex::particle_iterator::advance_to_first_() {
+       /// if the current edge is not a suitable return value ( because
+       /// it is a parent of the vertex root that itself belongs to a 
+       /// different vertex ) it advances to the first suitable return value 
+       if ( !*m_edge ) return *(++*this);
+       // if the range is relatives, we need to uniquely assign each particle
+       // to a single vertex so as to guarantee particles are returned
+       // exactly once.
+       if ( m_vertex_iterator.range() == relatives &&
+            m_edge.is_parent() && 
+            (*m_edge)->production_vertex() ) return *(++*this);
+       return *m_edge;
+    }
+
+    /// scale the position vector
+    /// this method is only for use by GenEvent
+    /// convert_position assumes that 4th component of the position vector 
+    /// is ctau rather than time and has units of length-time
+    void GenVertex::convert_position( const double& f ) {
+        m_position = FourVector( f*m_position.x(),
+                                 f*m_position.y(),
+                                 f*m_position.z(),
+                                 f*m_position.t() );
+   }
+
+} // HepMC
diff --git a/TEvtGen/HepMC/GenVertex.h b/TEvtGen/HepMC/GenVertex.h
new file mode 100644 (file)
index 0000000..dd0a646
--- /dev/null
@@ -0,0 +1,542 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_GEN_VERTEX_H
+#define HEPMC_GEN_VERTEX_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// GenVertex within an event
+// A vertex is indirectly (via particle "edges") linked to other 
+//   vertices ("nodes") to form a composite "graph"
+//////////////////////////////////////////////////////////////////////////
+
+// --> HANDLE COMPILER INCONSISTENCIES
+// This pre-compiler directive is included (2002-01-16) to allow compatibility
+// with several compilers.
+// Mar 27, 2004: HepMC is now standard compliant only. 
+//   I've removed forward_iterator, and it will no longer compile on gcc < 3. 
+#ifdef __SUNPRO_CC    // Solaris CC 5.2
+#define NEED_SOLARIS_FRIEND_FEATURE
+#endif // Platform
+
+#include "HepMC/WeightContainer.h"
+#include "HepMC/SimpleVector.h"
+#include "HepMC/IteratorRange.h"
+#include <iostream>
+#include <iterator>
+#include <vector>
+#include <set>
+#include <algorithm>
+#include <cstddef>
+
+namespace HepMC {
+
+    class GenVertexParticleRange;
+    class GenParticleProductionRange;
+    class ConstGenParticleProductionRange;
+    class GenParticleEndRange;
+    class ConstGenParticleEndRange;
+
+    class GenParticle;
+    class GenEvent;
+
+    //! GenVertex contains information about decay vertices.
+
+    ///
+    /// \class GenVertex 
+    /// HepMC::GenVertex contains the position in space and time of a decay.
+    /// It also contains lists of incoming and outgoing particles.  
+    ///
+    class GenVertex {
+
+        /// print vertex information
+       friend std::ostream& operator<<( std::ostream&, const GenVertex& );
+       friend class GenEvent;
+
+#ifdef NEED_SOLARIS_FRIEND_FEATURE
+       // This bit of ugly code is only for CC-5.2 compiler. 
+       // M.Dobbs 2002/02/19 
+       // It is not needed by linux gcc, nor Windows Visual C++.
+    public: 
+       class vertex_iterator;
+       friend class vertex_iterator;
+       class particle_iterator;
+       friend class particle_iterator;
+#endif // NEED_SOLARIS_FRIEND_FEATURE
+
+    public:
+        /// default constructor
+       GenVertex( const FourVector& position =FourVector(0,0,0,0),
+                  int id = 0, 
+                  const WeightContainer& weights = std::vector<double>() );
+       GenVertex( const GenVertex& invertex );            //!< shallow copy
+       virtual    ~GenVertex();
+
+        void swap( GenVertex & other); //!< swap
+       GenVertex& operator= ( const GenVertex& invertex ); //!< shallow
+       bool       operator==( const GenVertex& a ) const; //!< equality
+       bool       operator!=( const GenVertex& a ) const; //!< inequality
+       void       print( std::ostream& ostr = std::cout ) const; //!< print vertex information
+
+       double     check_momentum_conservation() const;//!< |Sum (three_mom_in-three_mom_out)|
+
+       /// add incoming particle
+       void       add_particle_in( GenParticle* inparticle );
+       /// add outgoing particle
+       void       add_particle_out( GenParticle* outparticle );
+       /// remove_particle finds *particle in the in and/or out list and
+       ///  removes it from these lists ... it DOES NOT DELETE THE PARTICLE 
+       ///  or its relations. You could delete the particle too as follows:
+       ///      delete vtx->remove_particle( particle );
+       GenParticle* remove_particle( GenParticle* particle ); //!< remove a particle
+
+       operator    HepMC::FourVector() const; //!< conversion operator
+       operator   HepMC::ThreeVector() const; //!< conversion operator
+
+       ////////////////////
+       // access methods //
+       ////////////////////
+
+       /// pointer to the event that owns this vertex
+       GenEvent*               parent_event() const;
+       /// vertex position
+       ThreeVector             point3d() const;
+       /// vertex position and time
+       const FourVector &      position() const;
+       /// set vertex position and time
+       void                    set_position( const FourVector& position = FourVector(0,0,0,0) );
+       /// we don't define what you use the id for -- but we imagine,
+       /// for example it might code the meaning of the weights()
+       int                     id() const;  //!< vertex ID
+       void                    set_id( int id );  //!< set vertex ID
+
+       ///
+       /// The barcode is the vertex's reference number, every vertex in the
+       /// event has a unique barcode. Vertex barcodes are negative numbers,
+       /// particle barcodes are positive numbers.
+       /// 
+       /// Please note that the barcodes are intended for internal use within 
+       /// HepMC as a unique identifier for the particles and vertices.
+       /// Using the barcode to encode extra information is an abuse of 
+       /// the barcode data member and causes confusion among users. 
+       /// 
+       int                     barcode() const; //!< unique identifier
+
+       /// In general there is no reason to "suggest_barcode"
+       bool                    suggest_barcode( int the_bar_code );
+       
+       /// direct access to the weights container is allowed. 
+       WeightContainer&        weights();
+       /// const direct access to the weights container
+       const WeightContainer&  weights() const;
+
+       /// particle range
+       GenVertexParticleRange particles( IteratorRange range = relatives );
+       /// incoming particle range
+       GenParticleProductionRange particles_in( GenParticle&, IteratorRange range = relatives );
+       /// incoming particle range
+       ConstGenParticleProductionRange particles_in( GenParticle const &, IteratorRange range = relatives ) const;
+       /// outgoing particle range
+       GenParticleEndRange particles_out( GenParticle&, IteratorRange range = relatives );
+       /// outgoing particle range
+       ConstGenParticleEndRange particles_out( GenParticle const &, IteratorRange range = relatives ) const;
+
+       ////////////////////
+       // Iterators      // users should use prefer to use particle_iterator
+       ////////////////////    
+
+       /// const iterator for incoming particles
+       typedef std::vector<HepMC::GenParticle*>::const_iterator 
+       particles_in_const_iterator;
+       /// const iterator for outgoing particles
+       typedef std::vector<HepMC::GenParticle*>::const_iterator 
+       particles_out_const_iterator;
+       /// begin iteration of incoming particles
+       particles_in_const_iterator         particles_in_const_begin() const;
+       /// end iteration of incoming particles
+       particles_in_const_iterator         particles_in_const_end() const;
+       /// begin iteration of outgoing particles
+       particles_out_const_iterator        particles_out_const_begin() const;
+       /// end iteration of outgoing particles
+       particles_out_const_iterator        particles_out_const_end() const;
+       /// number of incoming particles
+       int                                 particles_in_size() const;
+       /// number of outgoing particles
+       int                                 particles_out_size() const;
+
+    protected:
+       //static unsigned int     counter(); //!< temporary for debugging
+
+       /// only the GenEvent (friend) is allowed to set the parent_event,
+       ///  and barcode. It is done automatically anytime you add a 
+       ///  vertex to an event
+       void                    set_parent_event_( GenEvent* evt ); //!< set parent event
+       void                    set_barcode_( int the_bar_code ); //!< set identifier
+       void                    change_parent_event_( GenEvent* evt ); //!< for use with swap
+
+       /////////////////////////////
+       // edge_iterator           // (protected - for internal use only)
+       /////////////////////////////
+       // If the user wants the functionality of the edge_iterator, he should
+       // use particle_iterator with IteratorRange = family, parents, children
+       //
+
+       //!  edge iterator
+
+       /// \class  edge_iterator
+       /// iterate over the family of edges connected to m_vertex begins 
+       /// with parents (incoming particles) then children (outgoing)
+       /// This is not a recursive iterator ... it is a building block
+       /// for the public iterators and is intended for internal use only.
+       /// The acceptable Iterator Ranges are: family, parents, children
+       class edge_iterator :
+         public std::iterator<std::forward_iterator_tag,HepMC::GenParticle*,ptrdiff_t>{
+       public:
+           edge_iterator();
+           /// used to set limits on the iteration
+           edge_iterator( const GenVertex& vtx, IteratorRange range =family );
+           /// copy
+           edge_iterator( const edge_iterator& p );
+           virtual        ~edge_iterator();
+           /// make a copy
+           edge_iterator& operator=( const edge_iterator& p );
+           /// return a pointer to a particle
+           GenParticle*      operator*(void) const;
+           /// Pre-fix increment 
+           edge_iterator& operator++(void); // Pre-fix increment 
+           /// Post-fix increment
+           edge_iterator  operator++(int);   // Post-fix increment
+           /// equality
+           bool           operator==( const edge_iterator& a ) const;
+           /// inequality
+           bool           operator!=( const edge_iterator& a ) const;
+           /// true if parent of root vtx
+           bool           is_parent() const;
+           /// true if child of root vtx
+           bool           is_child() const;
+           /// root vertex of this iteration
+           const GenVertex*  vertex_root() const;
+       private:
+           /// Pre-fix increment -- is not allowed
+           edge_iterator& operator--(void);
+           /// Post-fix increment -- is not allowed
+           edge_iterator  operator--(int);
+       private:
+           const GenVertex*  m_vertex;
+           IteratorRange  m_range;
+           std::vector<HepMC::GenParticle*>::const_iterator m_set_iter;
+           bool           m_is_inparticle_iter;
+           bool           m_is_past_end;
+       };
+       friend class edge_iterator;
+       /// size
+       int              edges_size( IteratorRange range = family ) const;
+       /// begin range
+       edge_iterator    edges_begin( IteratorRange range = family) const;
+       /// end range
+       edge_iterator    edges_end( IteratorRange /* dummy_range */ ) const;
+
+    public:
+       ///////////////////////////////
+       // vertex_iterator           //
+       ///////////////////////////////
+
+       //!  vertex iterator
+
+       /// \class  vertex_iterator
+       /// Iterates over all vertices connected via a graph to this vertex.
+       /// this is made friend to that it can access protected edge
+       /// iterator the range can be IteratorRange= ( parents, children, 
+       /// family, ancestors, descendants, relatives )
+       /// example for range=descendants the iterator 
+       /// will return all vertices
+       /// which are children (connected by an outgoing particle edge),
+       /// grandchildren, great-grandchildren, etc. of this vertex
+       /// In all cases the iterator always returns this vertex
+       /// (returned last).
+       /// The algorithm is accomplished by converting the graph to a tree
+       /// (by "chopping" the edges connecting to an already visited
+       /// vertex) and returning the vertices in POST ORDER traversal.
+       ///
+       class vertex_iterator :
+         public std::iterator<std::forward_iterator_tag,HepMC::GenVertex*,ptrdiff_t>{
+       public:
+           vertex_iterator();
+           /// used to set limits on the iteration
+           vertex_iterator( GenVertex& vtx_root, IteratorRange range );
+           /// next constructor is intended for internal use only
+           vertex_iterator( GenVertex& vtx_root, IteratorRange range,
+                            std::set<const HepMC::GenVertex*>& visited_vertices );
+            /// copy
+           vertex_iterator( const vertex_iterator& v_iter );
+           virtual             ~vertex_iterator();
+           /// make a copy
+           vertex_iterator&    operator=( const vertex_iterator& );
+           /// return a pointer to a vertex
+           GenVertex*          operator*(void) const;
+           /// Pre-fix increment 
+           vertex_iterator&    operator++(void);  //Pre-fix increment 
+           /// Post-fix increment
+           vertex_iterator     operator++(int);   //Post-fix increment
+           /// equality
+           bool                operator==( const vertex_iterator& ) const;
+           /// inequality
+           bool                operator!=( const vertex_iterator& ) const;
+           /// vertex that this iterator begins from
+           GenVertex*          vertex_root() const;
+           /// iterator range
+           IteratorRange       range() const;
+           /// intended for internal use only.
+           void                copy_with_own_set( const vertex_iterator& 
+                                                  v_iter,
+                                                  std::set<const HepMC::GenVertex*>& 
+                                                  visited_vertices );
+
+       protected:                  // intended for internal use only
+           /// non-null if recursive iter. created
+           GenVertex* follow_edge_(); 
+           /// copy recursive iterator
+           void    copy_recursive_iterator_( const vertex_iterator* 
+                                             recursive_v_iter );
+       private:
+           /// Pre-fix increment -- is not allowed 
+           vertex_iterator&    operator--(void);
+           /// Post-fix increment -- is not allowed 
+           vertex_iterator     operator--(int);
+
+       private:
+           GenVertex*       m_vertex;   // the vertex associated to this iter
+           IteratorRange    m_range;
+           std::set<const HepMC::GenVertex*>* m_visited_vertices;
+           bool             m_it_owns_set;  // true if it is responsible for 
+                                            // deleting the visited vertex set
+           edge_iterator    m_edge; // particle edge pointing to return vtx
+           vertex_iterator* m_recursive_iterator;
+       };      
+       friend class vertex_iterator;
+       /// begin vertex range
+       vertex_iterator     vertices_begin( IteratorRange range = relatives );
+       /// end vertex range
+       vertex_iterator     vertices_end( IteratorRange /* dummy_range */ );
+    public:
+       ///////////////////////////////
+       // particle_iterator         //
+       ///////////////////////////////
+
+       //!  particle iterator
+
+       /// \class  particle_iterator
+       /// Iterates over all particles connected via a graph.
+       /// by iterating through all vertices in the m_range. For each
+       /// vertex it returns orphaned parent particles 
+       /// (i.e. parents without production vertices) 
+       /// then children ... in this way each particle is associated
+       /// to exactly one vertex and so it is returned exactly once.
+       /// Is made friend so that it can access protected edge iterator
+       class particle_iterator :
+         public std::iterator<std::forward_iterator_tag,GenParticle*,ptrdiff_t>{
+       public:
+           particle_iterator();
+           /// used to set limits on the iteration
+           particle_iterator( GenVertex& vertex_root, IteratorRange range );
+           /// copy
+           particle_iterator( const particle_iterator& );
+           virtual             ~particle_iterator();
+           /// make a copy
+           particle_iterator&  operator=( const particle_iterator& );
+           /// return a pointer to a particle
+           GenParticle*        operator*(void) const;
+           /// Pre-fix increment 
+           particle_iterator&  operator++(void); 
+           /// Post-fix increment
+           particle_iterator   operator++(int); 
+           /// equality
+           bool                operator==( const particle_iterator& ) const;
+           /// inequality
+           bool                operator!=( const particle_iterator& ) const;
+       protected:
+           GenParticle*        advance_to_first_(); //!< "first" particle
+       private:
+           vertex_iterator     m_vertex_iterator;
+           edge_iterator       m_edge;     // points to the return
+       };
+       friend class particle_iterator;
+       /// begin particle range
+       particle_iterator       particles_begin( IteratorRange range 
+                                                = relatives );
+       /// end particle range
+       particle_iterator       particles_end( IteratorRange 
+                                              /* dummy_range */ );
+
+       ////////////////////////////////////////////////
+    protected: 
+        /// for internal use only
+       void delete_adopted_particles();
+       /// for internal use only - remove particle from incoming list
+       void remove_particle_in( GenParticle* );
+       /// for internal use only - remove particle from outgoing list
+       void remove_particle_out( GenParticle* );
+       /// scale the position vector
+        /// this method is only for use by GenEvent
+       void convert_position( const double& );
+
+    private: // GenVertex data members
+       FourVector              m_position;      //4-vec of vertex [mm]
+       std::vector<HepMC::GenParticle*>  m_particles_in;  //all incoming particles
+       std::vector<HepMC::GenParticle*>  m_particles_out; //all outgoing particles
+       int                  m_id;
+       WeightContainer      m_weights;       // weights for this vtx
+       GenEvent*            m_event;
+       int                  m_barcode;   // unique identifier in the event
+
+       //static unsigned int  s_counter;
+    };  
+
+    ////////////////////////////
+    // INLINES access methods //
+    ////////////////////////////
+
+    inline GenVertex::operator HepMC::FourVector() const { return position(); }
+
+    inline GenVertex::operator HepMC::ThreeVector() const { return point3d(); }
+
+    inline const FourVector & GenVertex::position() const { return m_position; }
+
+    inline GenEvent* GenVertex::parent_event() const { return m_event; }
+
+    inline ThreeVector GenVertex::point3d() const { 
+       return ThreeVector(m_position.x(),m_position.y(),m_position.z()); 
+    }
+
+    inline int GenVertex::id() const { return m_id; }
+
+    inline int  GenVertex::barcode() const { return m_barcode; }
+    inline void GenVertex::set_barcode_( int bc ) { m_barcode = bc; }
+
+    inline WeightContainer& GenVertex::weights() { return m_weights; }
+
+    inline const WeightContainer& GenVertex::weights() const 
+    { return m_weights; }
+
+    inline void GenVertex::set_position( const FourVector& pos ) {
+       m_position = pos;
+    }
+
+    inline void GenVertex::set_id( int pid ) { m_id = pid; }
+
+    //////////////
+    // INLINES  //
+    //////////////
+
+    inline GenVertex::particles_in_const_iterator 
+    GenVertex::particles_in_const_begin() const { 
+       return m_particles_in.begin(); 
+    }
+
+    inline GenVertex::particles_in_const_iterator 
+    GenVertex::particles_in_const_end() const { 
+       return m_particles_in.end(); 
+    }
+
+    inline GenVertex::particles_out_const_iterator 
+    GenVertex::particles_out_const_begin() const { 
+       return m_particles_out.begin();
+    }
+
+    inline GenVertex::particles_out_const_iterator 
+    GenVertex::particles_out_const_end() const {       
+       return m_particles_out.end(); 
+    }
+
+    inline int GenVertex::particles_in_size() const {
+       return m_particles_in.size(); 
+    }
+
+    inline int GenVertex::particles_out_size() const {
+       return m_particles_out.size(); 
+    }  
+
+    inline bool GenVertex::edge_iterator::operator==( 
+       const edge_iterator& a ) const { 
+       return **this == *a; 
+    }
+
+    inline bool GenVertex::edge_iterator::operator!=(
+       const edge_iterator& a ) const { 
+       return !(**this == *a); 
+    }
+
+    inline const GenVertex* GenVertex::edge_iterator::vertex_root() const {
+       return m_vertex;
+    }
+
+    inline GenVertex::edge_iterator GenVertex::edges_begin( IteratorRange 
+                                                     range ) const {
+       return GenVertex::edge_iterator(*this, range);
+    }
+
+    inline GenVertex::edge_iterator GenVertex::edges_end( IteratorRange 
+                                                   /* dummy_range */ ) const {
+       return GenVertex::edge_iterator();
+    }
+
+    inline bool GenVertex::vertex_iterator::operator==( 
+       const vertex_iterator& a ) const {
+       return **this == *a; 
+    }
+
+    inline bool GenVertex::vertex_iterator::operator!=( 
+       const vertex_iterator& a ) const {
+       return !(**this == *a); 
+    }
+
+    inline GenVertex* GenVertex::vertex_iterator::vertex_root() const {
+       return m_vertex; 
+    }
+
+    inline IteratorRange GenVertex::vertex_iterator::range() const {
+       return m_range; 
+    }
+
+    inline GenVertex::vertex_iterator GenVertex::vertices_begin( 
+       IteratorRange range ){
+       // this is not const because the it could return itself
+       return vertex_iterator( *this, range );
+    }
+
+    inline GenVertex::vertex_iterator GenVertex::vertices_end( 
+       IteratorRange /* dummy_range */ ) {
+       return vertex_iterator();
+    }
+
+    inline bool GenVertex::particle_iterator::operator==( 
+       const particle_iterator& a ) const {
+       return **this == *a; 
+    }
+
+    inline bool GenVertex::particle_iterator::operator!=( 
+       const particle_iterator& a ) const {
+       return !(**this == *a); 
+    }
+
+    inline GenVertex::particle_iterator GenVertex::particles_begin( 
+       IteratorRange range ) {
+       return particle_iterator( *this, range );
+    }
+
+    inline GenVertex::particle_iterator GenVertex::particles_end(
+       IteratorRange /* dummy_range */ ){
+       return particle_iterator();
+    }
+
+} // HepMC
+
+#endif  // HEPMC_GEN_VERTEX_H
+//--------------------------------------------------------------------------
+
+
+
+
diff --git a/TEvtGen/HepMC/HEPEVT_Wrapper.cc b/TEvtGen/HepMC/HEPEVT_Wrapper.cc
new file mode 100644 (file)
index 0000000..1f382a8
--- /dev/null
@@ -0,0 +1,228 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH       June 30, 2000
+// Generic Wrapper for the fortran HEPEVT common block
+// 
+// The static data member's initializations must be separate from .h file.
+// 
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/HEPEVT_Wrapper.h"
+
+namespace HepMC {
+
+    ////////////////////////////////////////
+    // static data member initializations //
+    ////////////////////////////////////////
+
+    unsigned int HEPEVT_Wrapper::s_sizeof_int = 4;
+
+    unsigned int HEPEVT_Wrapper::s_sizeof_real = sizeof(double);
+
+    unsigned int HEPEVT_Wrapper::s_max_number_entries = 4000;
+
+    ///////////////////
+    // Print Methods //
+    ///////////////////
+
+    void HEPEVT_Wrapper::print_hepevt( std::ostream& ostr ) 
+    {
+       /// dumps the content of this HEPEVT event to ostr  (Width is 80)
+       ostr << "________________________________________"
+            << "________________________________________" << std::endl;
+       ostr << "***** HEPEVT Common Event#: " 
+            << event_number()
+            << ", " << number_entries() << " particles (max "
+            << max_number_entries() << ") *****";
+       if ( is_double_precision() ) {
+           ostr << " Double Precision" << std::endl;
+       } else {
+           ostr << " Single Precision" << std::endl;
+       }
+       ostr << sizeof_int() << "-byte integers, " 
+            << sizeof_real() << "-byte floating point numbers, "
+            << max_number_entries() << "-allocated entries." 
+            << std::endl;
+       print_legend(ostr);
+       ostr << "________________________________________"
+            << "________________________________________" << std::endl;
+       for ( int i=1; i <= number_entries(); ++i ) {
+           print_hepevt_particle( i, ostr );
+       }
+       ostr << "________________________________________"
+            << "________________________________________" << std::endl;
+    }
+
+    void HEPEVT_Wrapper::print_legend( std::ostream& ostr )
+    {
+       char outline[81];
+       sprintf( outline,"%4s %4s %4s %5s   %10s, %9s, %9s, %9s, %10s",
+                "Indx","Stat","Par-","chil-",
+                "(  P_x","P_y","P_z","Energy","M ) ");
+       ostr << outline << std::endl;
+       sprintf( outline,"%9s %4s %4s    %10s, %9s, %9s, %9s) %9s",
+                "ID ","ents","dren",
+                "Prod (   X","Y","Z","cT", "[mm]");
+       ostr << outline << std::endl;
+    }  
+
+    void HEPEVT_Wrapper::print_hepevt_particle( int i, std::ostream& ostr ) 
+    {
+       /// dumps the content HEPEVT particle entry i   (Width is 120)
+       /// here i is the C array index (i.e. it starts at 0 ... whereas the
+       /// fortran array index starts at 1) So if there's 100 particles, the
+       /// last valid index is 100-1=99
+       char outline[81];
+       sprintf( outline,
+                "%4d %+4d %4d %4d    (%9.3g, %9.3g, %9.3g, %9.3g, %9.3g)"
+                ,i, status(i), first_parent(i), first_child(i),
+                px(i), py(i), pz(i), e(i), m(i) );
+       ostr << outline << "\n";
+       sprintf( outline,"%+9d %4d %4d    (%9.3g, %9.3g, %9.3g, %9.3g)",
+                // old version was:" (%+9.2e, %+9.2e, %+9.2e, %+9.2e)"
+                id(i), last_parent(i), last_child(i), 
+                x(i), y(i), z(i), t(i) );
+       ostr << outline << std::endl;
+    }
+
+
+    bool HEPEVT_Wrapper::check_hepevt_consistency( std::ostream& os )
+    {
+       /// This method inspects the HEPEVT common block and looks for 
+       /// inconsistencies in the mother/daughter pointers
+       bool isConsistent=true;
+        char header[81];
+        sprintf( header,
+                 "\n\n\t**** WARNINGInconsistent HEPEVT input, Event %10d ****"
+                , HEPEVT_Wrapper::event_number() );
+
+       for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) {
+           // 1. check its mothers
+           int moth1 = HEPEVT_Wrapper::first_parent( i );
+           int moth2 = HEPEVT_Wrapper::last_parent( i );
+           if ( moth2<moth1 ) {
+               if ( isConsistent ) {
+                   os << header << std::endl;
+                   isConsistent = false;
+                   print_legend(os);
+               }
+               os << "Inconsistent entry " << i 
+                  << " first parent > last parent " << std::endl;
+               HEPEVT_Wrapper::print_hepevt_particle( i, os );
+           }
+           for ( int m = moth1; m<=moth2 && m!=0; ++m ) {
+               if ( m>HEPEVT_Wrapper::number_entries() || m < 0 ) {
+                   if ( isConsistent ) {
+                       os << header << std::endl;
+                       isConsistent = false;
+                       print_legend(os);
+                   }
+                   os << "Inconsistent entry " << i 
+                      << " mother points out of range " << std::endl;
+                   HEPEVT_Wrapper::print_hepevt_particle( i, os );
+               }
+               int mChild1 = HEPEVT_Wrapper::first_child(m);
+               int mChild2 = HEPEVT_Wrapper::last_child(m);
+               // we don't consider null pointers as inconsistent
+               if ( mChild1==0 && mChild2==0 ) continue;
+               if ( i<mChild1 || i>mChild2 ) {
+                   if ( isConsistent ) {
+                       os << header << std::endl;
+                       isConsistent = false;
+                       print_legend(os);
+                   }
+                   os << "Inconsistent mother-daughter relationship between "
+                      << i << " & " << m 
+                      << " (try !trust_mother)" << std::endl;
+                   HEPEVT_Wrapper::print_hepevt_particle( i, os );
+                   HEPEVT_Wrapper::print_hepevt_particle( m, os );
+               }
+           }
+           // 2. check its daughters
+           int dau1 = HEPEVT_Wrapper::first_child( i );
+           int dau2 = HEPEVT_Wrapper::last_child( i );
+           if ( dau2<dau1 ) {
+               if ( isConsistent ) {
+                   os << header << std::endl;
+                   isConsistent = false;
+                   print_legend(os);
+               }
+               os << "Inconsistent entry " << i 
+                  << " first child > last child " << std::endl;
+               HEPEVT_Wrapper::print_hepevt_particle( i, os );
+           }
+           for ( int d = dau1; d<=dau2 && d!=0; ++d ) {
+               if ( d>HEPEVT_Wrapper::number_entries() || d < 0 ) {
+                   if ( isConsistent ) {
+                       os << header << std::endl;
+                       isConsistent = false;
+                       print_legend(os);
+                   }
+                   os << "Inconsistent entry " << i 
+                      << " child points out of range " << std::endl;
+                   HEPEVT_Wrapper::print_hepevt_particle( i, os );
+               }
+               int d_moth1 = HEPEVT_Wrapper::first_parent(d);
+               int d_moth2 = HEPEVT_Wrapper::last_parent(d);
+               // we don't consider null pointers as inconsistent
+               if ( d_moth1==0 && d_moth2==0 ) continue;
+               if ( i<d_moth1 || i>d_moth2 ) {
+                   if ( isConsistent ) {
+                       os << header << std::endl;
+                       isConsistent = false;
+                       print_legend(os);
+                   }
+                   os << "Inconsistent mother-daughter relationship between "
+                      << i << " & " << d 
+                      << " (try trust_mothers)"<< std::endl;
+                   HEPEVT_Wrapper::print_hepevt_particle( i, os );
+                   HEPEVT_Wrapper::print_hepevt_particle( d, os );
+               }
+           }
+       }
+       if (!isConsistent) {
+           os << "Above lists all the inconsistencies in the HEPEVT common "
+              << "\n block which has been provided as input to HepMC. "
+              << "\n HepMC WILL have trouble interpreting the mother-daughter"
+              << "\n relationships ... but all other information "
+              << "\n (4-vectors etc) will be correctly transferred."
+              << "\n In order for HepMC to be able to interpret the mother/"
+              << "\n daughter hierachy, it MUST be given consistent input."
+              << "\n This is one of the design criteria of HepMC: "
+              << "\n consistency is enforced by the code.";
+           os << "\nThere is a switch in IO_HEPEVT, set-able using "
+              << "\n IO_HEPEVT::set_trust_mothers_before_daughters( bool )"
+              << "\n which you may want to try.";
+           os << "\nNote: if HEPEVT common block has been filled by pythia"
+              << "\n pyhepc, then the switch MSTP(128)=2 should be used in"
+              << "\n pythia, which instructs pythia not to put multiple "
+              << "\n copies of resonances in the event record.\n";
+           os << "To obtain a file summarizing the inconsistency, you should:"
+              << "\n\t ofstream myFile(\"myInconsistentEvent.txt\"); "
+              << "\n\t HEPEVT_Wrapper::check_hepevt_consistency(myFile); "
+              << "\n\t HEPEVT_Wrapper::print_hepevt(myFile); "
+              << "\n[now write the event to HepMC using something like"
+              << "\n\t\t myIO_HEPEVT->write_event(myEvent); ]"
+              << "\n\t myEvent->print( myFile ); "
+              << "      // print event as HepMC sees it"
+              << "\n ------------------------- Thank-you. \n\n" << std::endl;
+       }
+       return isConsistent;
+    }
+
+    void HEPEVT_Wrapper::zero_everything()
+    {
+       set_event_number( 0 );
+        set_number_entries( 0 );
+       for ( int i = 1; i<=max_number_entries(); ++i ) {
+           set_status( i, 0 );
+           set_id( i, 0 );
+           set_parents( i, 0, 0 );
+           set_children( i, 0, 0 );
+           set_momentum( i, 0, 0, 0, 0 );
+           set_mass( i, 0 );
+           set_position( i, 0, 0, 0, 0 );
+       }
+    }
+
+} // HepMC
+
diff --git a/TEvtGen/HepMC/HEPEVT_Wrapper.h b/TEvtGen/HepMC/HEPEVT_Wrapper.h
new file mode 100644 (file)
index 0000000..cc56250
--- /dev/null
@@ -0,0 +1,567 @@
+//--------------------------------------------------------------------------
+
+#ifndef HEPEVT_EntriesAllocation
+#define HEPEVT_EntriesAllocation 10000
+#endif  // HEPEVT_EntriesAllocation
+
+//--------------------------------------------------------------------------
+#ifndef HEPMC_HEPEVT_COMMON_H
+#define HEPMC_HEPEVT_COMMON_H
+//////////////////////////////////////////////////////////////////////////
+//
+//      PARAMETER (NMXHEP=2000) 
+//      COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), 
+//     &        JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
+/**********************************************************/
+/*           D E S C R I P T I O N :                      */
+/*--------------------------------------------------------*/
+/* NEVHEP          - event number (or some special meaning*/
+/*                    (see documentation for details)     */
+/* NHEP            - actual number of entries in current  */
+/*                    event.                              */
+/* ISTHEP[IHEP]    - status code for IHEP'th entry - see  */
+/*                    documentation for details           */
+/* IDHEP [IHEP]    - IHEP'th particle identifier according*/
+/*                    to PDG.                             */
+/* JMOHEP[IHEP][0] - pointer to position of 1st mother    */
+/* JMOHEP[IHEP][1] - pointer to position of 2nd mother    */
+/* JDAHEP[IHEP][0] - pointer to position of 1st daughter  */
+/* JDAHEP[IHEP][1] - pointer to position of 2nd daughter  */
+/* PHEP  [IHEP][0] - X momentum                           */
+/* PHEP  [IHEP][1] - Y momentum                           */
+/* PHEP  [IHEP][2] - Z momentum                           */
+/* PHEP  [IHEP][3] - Energy                               */
+/* PHEP  [IHEP][4] - Mass                                 */
+/* VHEP  [IHEP][0] - X vertex                             */
+/* VHEP  [IHEP][1] - Y vertex                             */
+/* VHEP  [IHEP][2] - Z vertex                             */
+/* VHEP  [IHEP][3] - production time                      */
+/*========================================================*/
+// Remember, array(1) is the first entry in a fortran array, array[0] is the
+//           first entry in a C array.
+//
+// This interface to HEPEVT common block treats the block as
+// an array of bytes --- the precision and number of entries 
+// is determined "on the fly" by the wrapper and used to decode
+// each entry.
+//
+// HEPEVT_EntriesAllocation is the maximum size of the HEPEVT common block 
+//   that can be interfaced.
+//   It is NOT the actual size of the HEPEVT common used in each
+//   individual application. The actual size can be changed on
+//   the fly using HEPEVT_Wrapper::set_max_number_entries().
+// Thus HEPEVT_EntriesAllocation should typically be set
+// to the maximum possible number of entries --- 10000 is a good choice
+// (and is the number used by ATLAS versions of Pythia).
+//
+// Note: a statement like    *( (int*)&hepevt.data[0] )
+//      takes the memory address of the first byte in HEPEVT,
+//      interprets it as an integer pointer, 
+//      and dereferences the pointer.
+//      i.e. it returns an integer corresponding to nevhep
+//
+
+#include <ctype.h>
+
+    const unsigned int hepevt_bytes_allocation = 
+                sizeof(long int) * ( 2 + 6 * HEPEVT_EntriesAllocation )
+                + sizeof(double) * ( 9 * HEPEVT_EntriesAllocation );
+
+
+#ifdef _WIN32 // Platform: Windows MS Visual C++
+struct HEPEVT_DEF{
+        char data[hepevt_bytes_allocation];
+    };
+extern "C" HEPEVT_DEF HEPEVT;
+#define hepevt HEPEVT
+
+#else
+extern "C" {
+    extern struct {
+       char data[hepevt_bytes_allocation];
+    } hepevt_;
+}
+#define hepevt hepevt_
+
+#endif // Platform
+
+#endif  // HEPMC_HEPEVT_COMMON_H
+
+//--------------------------------------------------------------------------
+#ifndef HEPMC_HEPEVT_WRAPPER_H
+#define HEPMC_HEPEVT_WRAPPER_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, April 24, 2000, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// Generic Wrapper for the fortran HEPEVT common block
+// This class is intended for static use only - it makes no sense to 
+// instantiate it.
+// Updated: June 30, 2000 (static initialization moved to separate .cxx file)
+//////////////////////////////////////////////////////////////////////////
+//
+// The index refers to the fortran style index: 
+// i.e. index=1 refers to the first entry in the HEPEVT common block.
+// all indices must be >0
+// number_entries --> integer between 0 and max_number_entries() giving total
+//                    number of sequential particle indices
+// first_parent/child --> index of first mother/child if there is one, 
+//                        zero otherwise
+// last_parent/child --> if number children is >1, address of last parent/child
+//                       if number of children is 1, same as first_parent/child
+//                       if there are no children, returns zero.
+// is_double_precision --> T or F depending if floating point variables 
+//                         are 8 or 4 bytes
+//
+
+#include <iostream>
+#include <cstdio>       // needed for formatted output using sprintf 
+
+namespace HepMC {
+
+    //! Generic Wrapper for the fortran HEPEVT common block
+    
+    /// \class HEPEVT_Wrapper
+    /// This class is intended for static use only - it makes no sense to 
+    /// instantiate it.
+    ///
+    class HEPEVT_Wrapper {
+    public:
+
+        /// write information from HEPEVT common block
+       static void print_hepevt( std::ostream& ostr = std::cout );
+       /// write particle information to ostr
+       static void print_hepevt_particle( int index, 
+                                          std::ostream& ostr = std::cout );
+        static bool is_double_precision();  //!< True if common block uses double
+
+        /// check for problems with HEPEVT common block
+       static bool check_hepevt_consistency( std::ostream& ostr = std::cout );
+
+        /// set all entries in HEPEVT to zero
+       static void zero_everything();
+
+       ////////////////////
+       // Access Methods //
+       ////////////////////
+        static int    event_number();             //!< event number
+        static int    number_entries();           //!< num entries in current evt
+        static int    status( int index );        //!< status code
+        static int    id( int index );            //!< PDG particle id
+        static int    first_parent( int index );  //!< index of 1st mother
+        static int    last_parent( int index );   //!< index of last mother
+       static int    number_parents( int index ); //!< number of parents 
+        static int    first_child( int index );   //!< index of 1st daughter
+        static int    last_child( int index );    //!< index of last daughter
+       static int    number_children( int index ); //!< number of children
+        static double px( int index );            //!< X momentum       
+        static double py( int index );            //!< Y momentum   
+        static double pz( int index );            //!< Z momentum   
+        static double e( int index );             //!< Energy
+        static double m( int index );             //!< generated mass
+        static double x( int index );             //!< X Production vertex
+        static double y( int index );             //!< Y Production vertex
+        static double z( int index );             //!< Z Production vertex
+        static double t( int index );             //!< production time
+
+       ////////////////////
+       // Set Methods    //
+       ////////////////////
+
+       /// set event number
+        static void set_event_number( int evtno );
+       /// set number of entries in HEPEVT
+        static void set_number_entries( int noentries );
+       /// set particle status
+        static void set_status( int index, int status );
+       /// set particle ID
+        static void set_id( int index, int id );
+       /// define parents of a particle
+        static void set_parents( int index, int firstparent, int lastparent );
+       /// define children of a particle
+        static void set_children( int index, int firstchild, int lastchild );
+       /// set particle momentum
+        static void set_momentum( int index, double px, double py,
+                                 double pz, double e );
+       /// set particle mass
+        static void set_mass( int index, double mass );
+       /// set particle production vertex
+        static void set_position( int index, double x, double y, double z, 
+                                 double t );
+       //////////////////////
+       // HEPEVT Floorplan //
+       //////////////////////
+       static unsigned int sizeof_int();  //!< size of integer in bytes
+       static unsigned int sizeof_real(); //!< size of real in bytes
+        static int  max_number_entries();  //!< size of common block
+       static void set_sizeof_int(unsigned int);  //!< define size of integer
+       static void set_sizeof_real(unsigned int); //!< define size of real
+       static void set_max_number_entries(unsigned int); //!< define size of common block
+
+    protected:
+        /// navigate a byte array
+       static double byte_num_to_double( unsigned int );
+        /// navigate a byte array
+       static int    byte_num_to_int( unsigned int );
+        /// pretend common block is an array of bytes
+       static void   write_byte_num( double, unsigned int );
+        /// pretend common block is an array of bytes
+       static void   write_byte_num( int, unsigned int );
+       /// print output legend
+       static void   print_legend( std::ostream& ostr = std::cout );
+
+    private:
+       static unsigned int s_sizeof_int;
+       static unsigned int s_sizeof_real;
+       static unsigned int s_max_number_entries;
+
+    }; 
+
+    //////////////////////////////
+    // HEPEVT Floorplan Inlines //
+    //////////////////////////////
+    inline unsigned int HEPEVT_Wrapper::sizeof_int(){ return s_sizeof_int; }
+
+    inline unsigned int HEPEVT_Wrapper::sizeof_real(){ return s_sizeof_real; }
+
+    inline int HEPEVT_Wrapper::max_number_entries() 
+    { return (int)s_max_number_entries; }
+
+    inline void HEPEVT_Wrapper::set_sizeof_int( unsigned int size ) 
+    {
+       if ( size != sizeof(short int) && size != sizeof(long int) && size != sizeof(int) ) {
+           std::cerr << "HepMC is not able to handle integers "
+                     << " of size other than 2 or 4."
+                     << " You requested: " << size << std::endl;
+       }
+       s_sizeof_int = size;
+    }
+
+    inline void HEPEVT_Wrapper::set_sizeof_real( unsigned int size ) {
+       if ( size != sizeof(float) && size != sizeof(double) ) {
+           std::cerr << "HepMC is not able to handle floating point numbers"
+                     << " of size other than 4 or 8."
+                     << " You requested: " << size << std::endl;
+       }
+       s_sizeof_real = size;
+    }
+
+    inline void HEPEVT_Wrapper::set_max_number_entries( unsigned int size ) {
+       s_max_number_entries = size;
+    }
+
+    inline double HEPEVT_Wrapper::byte_num_to_double( unsigned int b ) {
+       if ( b >= hepevt_bytes_allocation ) std::cerr 
+                 << "HEPEVT_Wrapper: requested hepevt data exceeds allocation"
+                 << std::endl;
+       if ( s_sizeof_real == sizeof(float) ) {
+           float* myfloat = (float*)&hepevt.data[b];
+           return (double)(*myfloat);
+       } else if ( s_sizeof_real == sizeof(double) ) {
+           double* mydouble = (double*)&hepevt.data[b];
+           return (*mydouble);
+       } else {
+           std::cerr 
+               << "HEPEVT_Wrapper: illegal floating point number length." 
+               << s_sizeof_real << std::endl;
+       }
+       return 0;
+    }
+
+    inline int HEPEVT_Wrapper::byte_num_to_int( unsigned int b ) {
+       if ( b >= hepevt_bytes_allocation ) std::cerr 
+                 << "HEPEVT_Wrapper: requested hepevt data exceeds allocation"
+                 << std::endl;
+       if ( s_sizeof_int == sizeof(short int) ) {
+           short int* myshortint = (short int*)&hepevt.data[b];
+           return (int)(*myshortint);
+       } else if ( s_sizeof_int == sizeof(long int) ) {
+           long int* mylongint = (long int*)&hepevt.data[b];
+           return (*mylongint);
+       // on some 64 bit machines, int, short, and long are all different
+       } else if ( s_sizeof_int == sizeof(int) ) {
+           int* myint = (int*)&hepevt.data[b];
+           return (*myint);
+       } else {
+           std::cerr 
+               << "HEPEVT_Wrapper: illegal integer number length." 
+               << s_sizeof_int << std::endl;
+       }
+       return 0;
+    }
+
+    inline void HEPEVT_Wrapper::write_byte_num( double in, unsigned int b ) {
+       if ( b >= hepevt_bytes_allocation ) std::cerr 
+                 << "HEPEVT_Wrapper: requested hepevt data exceeds allocation"
+                 << std::endl;
+       if ( s_sizeof_real == sizeof(float) ) {
+           float* myfloat = (float*)&hepevt.data[b];
+           (*myfloat) = (float)in;
+       } else if ( s_sizeof_real == sizeof(double) ) {
+           double* mydouble = (double*)&hepevt.data[b];
+           (*mydouble) = (double)in;
+       } else {
+           std::cerr 
+               << "HEPEVT_Wrapper: illegal floating point number length." 
+               << s_sizeof_real << std::endl;
+       }
+    }
+
+    inline void HEPEVT_Wrapper::write_byte_num( int in, unsigned int b ) {
+       if ( b >= hepevt_bytes_allocation ) std::cerr 
+                 << "HEPEVT_Wrapper: requested hepevt data exceeds allocation"
+                 << std::endl;
+       if ( s_sizeof_int == sizeof(short int) ) {
+           short int* myshortint = (short int*)&hepevt.data[b];
+           (*myshortint) = (short int)in;
+       } else if ( s_sizeof_int == sizeof(long int) ) {
+           long int* mylongint = (long int*)&hepevt.data[b];
+           (*mylongint) = (int)in;
+       // on some 64 bit machines, int, short, and long are all different
+       } else if ( s_sizeof_int == sizeof(int) ) {
+           int* myint = (int*)&hepevt.data[b];
+           (*myint) = (int)in;
+       } else {
+           std::cerr 
+               << "HEPEVT_Wrapper: illegal integer number length." 
+               << s_sizeof_int << std::endl;
+       }
+    }
+
+    //////////////
+    // INLINES  //
+    //////////////
+
+    inline bool HEPEVT_Wrapper::is_double_precision() 
+    { 
+       // true if 8byte floating point numbers are used in the HepEVT common.
+       return ( sizeof(double) == sizeof_real() );
+    }
+
+    inline int HEPEVT_Wrapper::event_number()
+    { return byte_num_to_int(0); }
+
+    inline int HEPEVT_Wrapper::number_entries() 
+    { 
+       int nhep = byte_num_to_int( 1*sizeof_int() );
+       return ( nhep <= max_number_entries() ?
+                nhep : max_number_entries() );
+    }
+
+    inline int HEPEVT_Wrapper::status( int index )   
+    { return byte_num_to_int( (2+index-1) * sizeof_int() ); }
+
+    inline int HEPEVT_Wrapper::id( int index )
+    { 
+       return byte_num_to_int( (2+max_number_entries()+index-1) 
+                               * sizeof_int() ); 
+    }
+
+    inline int HEPEVT_Wrapper::first_parent( int index )
+    { 
+       int parent = byte_num_to_int( (2+2*max_number_entries()+2*(index-1)) 
+                                     * sizeof_int() ); 
+       return ( parent > 0 && parent <= number_entries() ) ?
+                                        parent : 0; 
+    }
+
+    inline int HEPEVT_Wrapper::last_parent( int index )
+    { 
+       // Returns the Index of the LAST parent in the HEPEVT record
+       // for particle with Index index.
+       // If there is only one parent, the last parent is forced to 
+       // be the same as the first parent.
+       // If there are no parents for this particle, both the first_parent
+       // and the last_parent with return 0.
+       // Error checking is done to ensure the parent is always
+       // within range ( 0 <= parent <= nhep )
+       //
+       int firstparent = first_parent(index);
+       int parent = byte_num_to_int( (2+2*max_number_entries()+2*(index-1)+1) 
+                                     * sizeof_int() ); 
+       return ( parent > firstparent && parent <= number_entries() ) 
+                                                  ? parent : firstparent; 
+    }
+
+    inline int HEPEVT_Wrapper::number_parents( int index ) {
+       int firstparent = first_parent(index);
+       return ( firstparent>0 ) ? 
+           ( 1+last_parent(index)-firstparent ) : 0;
+    }
+
+    inline int HEPEVT_Wrapper::first_child( int index )
+    { 
+       int child = byte_num_to_int( (2+4*max_number_entries()+2*(index-1)) 
+                                    * sizeof_int() ); 
+       return ( child > 0 && child <= number_entries() ) ?
+                                      child : 0; 
+    }
+
+    inline int HEPEVT_Wrapper::last_child( int index )
+    { 
+       // Returns the Index of the LAST child in the HEPEVT record
+       // for particle with Index index.
+       // If there is only one child, the last child is forced to 
+       // be the same as the first child.
+       // If there are no children for this particle, both the first_child
+       // and the last_child with return 0.
+       // Error checking is done to ensure the child is always
+       // within range ( 0 <= parent <= nhep )
+       //
+       int firstchild = first_child(index);
+       int child = byte_num_to_int( (2+4*max_number_entries()+2*(index-1)+1) 
+                                    * sizeof_int() ); 
+       return ( child > firstchild && child <= number_entries() ) 
+                                               ? child : firstchild;
+    }
+
+    inline int HEPEVT_Wrapper::number_children( int index ) 
+    {
+       int firstchild = first_child(index);
+       return ( firstchild>0 ) ? 
+           ( 1+last_child(index)-firstchild ) : 0;
+    }
+
+    inline double HEPEVT_Wrapper::px( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                + (5*(index-1)+0) *sizeof_real() );
+    }
+
+    inline double HEPEVT_Wrapper::py( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                + (5*(index-1)+1) *sizeof_real() );
+    }
+
+
+    inline double HEPEVT_Wrapper::pz( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                + (5*(index-1)+2) *sizeof_real() );
+    }
+
+    inline double HEPEVT_Wrapper::e( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                + (5*(index-1)+3) *sizeof_real() );
+    }
+
+    inline double HEPEVT_Wrapper::m( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                + (5*(index-1)+4) *sizeof_real() );
+    }
+
+    inline double HEPEVT_Wrapper::x( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                  + ( 5*max_number_entries()
+                                      + (4*(index-1)+0) ) *sizeof_real() );
+    }
+
+    inline double HEPEVT_Wrapper::y( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                  + ( 5*max_number_entries()
+                                      + (4*(index-1)+1) ) *sizeof_real() );
+    }
+
+    inline double HEPEVT_Wrapper::z( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                  + ( 5*max_number_entries()
+                                      + (4*(index-1)+2) ) *sizeof_real() );
+    }
+
+    inline double HEPEVT_Wrapper::t( int index )
+    { 
+       return byte_num_to_double( (2+6*max_number_entries())*sizeof_int()
+                                  + ( 5*max_number_entries()
+                                      + (4*(index-1)+3) ) *sizeof_real() );
+    }
+
+    inline void HEPEVT_Wrapper::set_event_number( int evtno ) 
+    { write_byte_num( evtno, 0 ); }
+
+    inline void HEPEVT_Wrapper::set_number_entries( int noentries ) 
+    { write_byte_num( noentries, 1*sizeof_int() ); }
+
+    inline void HEPEVT_Wrapper::set_status( int index, int status ) 
+    {
+        if ( index <= 0 || index > max_number_entries() ) return;
+       write_byte_num( status, (2+index-1) * sizeof_int() );
+    }
+
+    inline void HEPEVT_Wrapper::set_id( int index, int id ) 
+    {
+        if ( index <= 0 || index > max_number_entries() ) return;
+       write_byte_num( id, (2+max_number_entries()+index-1) *sizeof_int() );
+    }
+
+    inline void HEPEVT_Wrapper::set_parents( int index, int firstparent, 
+                                            int lastparent ) 
+    {
+        if ( index <= 0 || index > max_number_entries() ) return;
+       write_byte_num( firstparent, (2+2*max_number_entries()+2*(index-1)) 
+                                    *sizeof_int() );
+       write_byte_num( lastparent, (2+2*max_number_entries()+2*(index-1)+1) 
+                                   * sizeof_int() );
+    }
+    
+    inline void HEPEVT_Wrapper::set_children( int index, int firstchild, 
+                                             int lastchild ) 
+    {
+        if ( index <= 0 || index > max_number_entries() ) return;
+       write_byte_num( firstchild, (2+4*max_number_entries()+2*(index-1)) 
+                                    *sizeof_int() );
+       write_byte_num( lastchild, (2+4*max_number_entries()+2*(index-1)+1) 
+                                   *sizeof_int() );
+    }
+
+    inline void HEPEVT_Wrapper::set_momentum( int index, double px, 
+                                             double py, double pz, double e ) 
+    {
+        if ( index <= 0 || index > max_number_entries() ) return;
+       write_byte_num( px, (2+6*max_number_entries()) *sizeof_int()
+                           + (5*(index-1)+0) *sizeof_real() );
+       write_byte_num( py, (2+6*max_number_entries())*sizeof_int()
+                           + (5*(index-1)+1) *sizeof_real() );
+       write_byte_num( pz, (2+6*max_number_entries())*sizeof_int()
+                           + (5*(index-1)+2) *sizeof_real() );
+       write_byte_num( e,  (2+6*max_number_entries())*sizeof_int()
+                           + (5*(index-1)+3) *sizeof_real() );
+    }
+
+    inline void HEPEVT_Wrapper::set_mass( int index, double mass ) 
+    {
+        if ( index <= 0 || index > max_number_entries() ) return;
+       write_byte_num( mass, (2+6*max_number_entries())*sizeof_int()
+                             + (5*(index-1)+4) *sizeof_real() );
+    }
+
+    inline void HEPEVT_Wrapper::set_position( int index, double x, double y,
+                                             double z, double t ) 
+    {
+        if ( index <= 0 || index > max_number_entries() ) return;
+       write_byte_num( x, (2+6*max_number_entries())*sizeof_int()
+                          + ( 5*max_number_entries()
+                              + (4*(index-1)+0) ) *sizeof_real() );
+       write_byte_num( y, (2+6*max_number_entries())*sizeof_int()
+                          + ( 5*max_number_entries()
+                              + (4*(index-1)+1) ) *sizeof_real() );
+       write_byte_num( z, (2+6*max_number_entries())*sizeof_int()
+                          + ( 5*max_number_entries()
+                              + (4*(index-1)+2) ) *sizeof_real() );
+       write_byte_num( t, (2+6*max_number_entries())*sizeof_int()
+                          + ( 5*max_number_entries()
+                              + (4*(index-1)+3) ) *sizeof_real() );
+    }
+
+} // HepMC
+
+#endif  // HEPMC_HEPEVT_WRAPPER_H
+//--------------------------------------------------------------------------
+
diff --git a/TEvtGen/HepMC/HeavyIon.cc b/TEvtGen/HepMC/HeavyIon.cc
new file mode 100644 (file)
index 0000000..fd2290c
--- /dev/null
@@ -0,0 +1,144 @@
+//--------------------------------------------------------------------------
+//
+// HeavyIon.cc
+// Author:  Lynn Garren
+//
+// Implement operator >> and operator <<
+//
+// ----------------------------------------------------------------------
+
+#include <iostream>
+#include <ostream>
+#include <istream>
+#include <sstream>
+
+#include "HepMC/HeavyIon.h"
+#include "HepMC/StreamHelpers.h"
+#include "HepMC/IO_Exception.h"
+
+namespace HepMC {
+
+/// Write the contents of HeavyIon to an output stream.
+/// GenEvent stores a pointer to a HeavyIon.
+std::ostream & operator << (std::ostream & os, HeavyIon const * ion)
+{
+    if ( !os ) {
+       std::cerr << "HeavyIon output stream !os, "
+                 << " setting badbit" << std::endl;
+       os.clear(std::ios::badbit); 
+       return os;
+    }
+    os << 'H';
+    // HeavyIon* is set to 0 by default
+    if ( !ion  ) {
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0. );
+       detail::output( os, 0. );
+       detail::output( os, 0. );
+       detail::output( os, 0. );
+       detail::output( os,'\n');
+       return os;
+    }
+    //
+    detail::output( os, ion->Ncoll_hard() );
+    detail::output( os, ion->Npart_proj() );
+    detail::output( os, ion->Npart_targ() );
+    detail::output( os, ion->Ncoll() );
+    detail::output( os, ion->spectator_neutrons() );
+    detail::output( os, ion->spectator_protons() );
+    detail::output( os, ion->N_Nwounded_collisions() );
+    detail::output( os, ion->Nwounded_N_collisions() );
+    detail::output( os, ion->Nwounded_Nwounded_collisions() );
+    detail::output( os, ion->impact_parameter() );
+    detail::output( os, ion->event_plane_angle() );
+    detail::output( os, ion->eccentricity() );
+    detail::output( os, ion->sigma_inel_NN() );
+    detail::output( os,'\n');
+
+    return os;
+}
+
+/// Read the contents of HeavyIon from an input stream.
+/// GenEvent stores a pointer to a HeavyIon.
+std::istream & operator >> (std::istream & is, HeavyIon * ion)
+{
+    // make sure the stream is valid
+    if ( !is ) { 
+      std::cerr << "HeavyIon input stream setting badbit." << std::endl;
+      is.clear(std::ios::badbit); 
+      return is; 
+    }
+    // get the HeavyIon line
+    std::string line;
+    std::getline(is,line);
+    std::istringstream iline(line);
+    std::string firstc;
+    iline >> firstc;
+    // test to be sure the next entry is of type "H" 
+    if( firstc != "H" ) { 
+       std::cerr << "HeavyIon input stream invalid line type: " 
+                 << firstc << std::endl;
+       // The most likely problem is that we have found a HepMC block line
+       throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    } 
+    // read values into temp variables, then create a new HeavyIon object
+    int nh =0, np =0, nt =0, nc =0, 
+        neut = 0, prot = 0, nw =0, nwn =0, nwnw =0;
+    float impact = 0., plane = 0., xcen = 0., inel = 0.; 
+    iline >> nh ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> np ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> nt ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> nc ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> neut ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> prot;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> nw ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> nwn ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> nwnw ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> impact ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> plane ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> xcen ;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    iline >> inel;
+    if(!iline) throw IO_Exception("HeavyIon input stream encounterd invalid data");
+    if( nh == 0 ) {
+        return is;
+    }
+    
+    ion->set_Ncoll_hard(nh);
+    ion->set_Npart_proj(np);
+    ion->set_Npart_targ(nt);
+    ion->set_Ncoll(nc);
+    ion->set_spectator_neutrons(neut);
+    ion->set_spectator_protons(prot);
+    ion->set_N_Nwounded_collisions(nw);
+    ion->set_Nwounded_N_collisions(nwn);
+    ion->set_Nwounded_Nwounded_collisions(nwnw);
+    ion->set_impact_parameter(impact);
+    ion->set_event_plane_angle(plane);
+    ion->set_eccentricity(xcen);
+    ion->set_sigma_inel_NN(inel);
+
+    return is;
+}
+
+
+} // HepMC
diff --git a/TEvtGen/HepMC/HeavyIon.h b/TEvtGen/HepMC/HeavyIon.h
new file mode 100644 (file)
index 0000000..1665a05
--- /dev/null
@@ -0,0 +1,280 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_HEAVY_ION_H
+#define HEPMC_HEAVY_ION_H
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, February 2006
+//
+// Additional information storage for Heavy Ion generators
+//////////////////////////////////////////////////////////////////////////
+//
+//      int   Ncoll_hard          // Number of hard scatterings
+//      int   Npart_proj          // Number of projectile participants
+//      int   Npart_targ          // Number of target participants
+//      int   Ncoll               // Number of NN (nucleon-nucleon) collisions
+//      int   N_Nwounded_collisions        // Number of N-Nwounded collisions
+//      int   Nwounded_N_collisions        // Number of Nwounded-N collisons
+//      int   Nwounded_Nwounded_collisions // Number of Nwounded-Nwounded collisions
+//      int   spectator_neutrons           // Number of spectator neutrons
+//      int   spectator_protons            // Number of spectator protons
+//      float impact_parameter        // Impact Parameter(fm) of collision
+//      float event_plane_angle       // Azimuthal angle of event plane
+//      float eccentricity            // eccentricity of participating nucleons
+//                                        in the transverse plane 
+//                                        (as in phobos nucl-ex/0510031) 
+//      float sigma_inel_NN           // nucleon-nucleon inelastic 
+//                                        (including diffractive) cross-section
+//
+//////////////////////////////////////////////////////////////////////////
+// Feb. 17, 2006: adjust names according to suggestions from Heavy Ion users
+// Feb.  7, 2006: first pass at making method names consistent with existing
+//                HepMC code
+//////////////////////////////////////////////////////////////////////////
+
+namespace HepMC {
+
+
+//! The HeavyIon class stores information about heavy ions
+
+///
+/// \class  HeavyIon
+/// HepMC::HeavyIon provides
+/// additional information storage for Heavy Ion generators in GenEvent.
+/// Creation and use of this information is optional. 
+///
+class HeavyIon {
+
+public:
+  // ---  birth/death:
+  //
+  /// default constructor
+  HeavyIon()
+    : m_Ncoll_hard(0), 
+      m_Npart_proj(0),
+      m_Npart_targ(0),
+      m_Ncoll(0),
+      m_spectator_neutrons(0),
+      m_spectator_protons(0),
+      m_N_Nwounded_collisions(0),
+      m_Nwounded_N_collisions(0),
+      m_Nwounded_Nwounded_collisions(0),
+      m_impact_parameter(0),
+      m_event_plane_angle(0),
+      m_eccentricity(0),
+      m_sigma_inel_NN(0)
+    {}
+
+  /// The first 6 values must be provided.
+  HeavyIon( int nh, int np, int nt, int nc, int ns, int nsp,
+                   int nnw=0, int nwn=0, int nwnw=0, 
+                  float im=0., float pl=0., float ec=0., float s=0. );
+
+  ~HeavyIon() {}
+    
+  // ---  copying:
+  //
+  HeavyIon( HeavyIon const & orig );   //!< copy constructor
+  HeavyIon &  operator = ( HeavyIon const & rhs ); //!< make a copy
+  void swap( HeavyIon & other );       //!< swap two HeavyIon objects
+
+  // ---  equivalence:
+  //
+  bool    operator==( const HeavyIon& ) const; //!< check for equality
+  bool    operator!=( const HeavyIon& ) const; //!< check for inequality
+
+  // ---  accessors:
+    /// Number of hard scatterings
+    int   Ncoll_hard()                   const { return m_Ncoll_hard; }
+    /// Number of projectile participants
+    int   Npart_proj()                   const { return m_Npart_proj; }
+    /// Number of target participants
+    int   Npart_targ()                   const { return m_Npart_targ; }
+    /// Number of NN (nucleon-nucleon) collisions
+    int   Ncoll()                        const { return m_Ncoll; }
+    /// Number of spectator neutrons
+    int   spectator_neutrons()           const { return m_spectator_neutrons; }
+    /// Number of spectator protons
+    int   spectator_protons()            const { return m_spectator_protons; }
+    /// Number of N-Nwounded collisions
+    int   N_Nwounded_collisions()        const { return m_N_Nwounded_collisions; }
+    /// Number of Nwounded-N collisons
+    int   Nwounded_N_collisions()        const { return m_Nwounded_N_collisions; }
+    /// Number of Nwounded-Nwounded collisions
+    int   Nwounded_Nwounded_collisions() const { return m_Nwounded_Nwounded_collisions; }
+    /// Impact Parameter(in fm) of collision
+    float impact_parameter()             const { return m_impact_parameter; }
+    /// Azimuthal angle of event plane
+    float event_plane_angle()            const { return m_event_plane_angle; }
+    /// eccentricity of participating nucleons in the transverse plane 
+    /// (as in phobos nucl-ex/0510031)
+    float eccentricity()                 const { return m_eccentricity;  }
+    /// nucleon-nucleon inelastic (including diffractive) cross-section
+    float sigma_inel_NN()                const { return m_sigma_inel_NN; }
+
+    /// verify that the instance contains non-zero information
+    bool  is_valid()                     const;
+
+  // ---  mutators:
+    /// set number of hard scatterings
+    void   set_Ncoll_hard(const int &i)              { m_Ncoll_hard=i; }
+    /// set number of projectile participants
+    void   set_Npart_proj(const int &i)              { m_Npart_proj=i; }
+    /// set number of target participants
+    void   set_Npart_targ(const int &i)              { m_Npart_targ=i; }
+    /// set number of NN (nucleon-nucleon) collisions
+    void   set_Ncoll(const int &i)                   { m_Ncoll=i; }
+    /// set number of spectator neutrons
+    void   set_spectator_neutrons(const int &i)      { m_spectator_neutrons=i; }
+    /// set number of spectator protons
+    void   set_spectator_protons(const int &i)       { m_spectator_protons=i; }
+    /// set number of N-Nwounded collisions
+    void   set_N_Nwounded_collisions(const int &i)   { m_N_Nwounded_collisions=i; }
+    /// set number of Nwounded-N collisons
+    void   set_Nwounded_N_collisions(const int &i)   { m_Nwounded_N_collisions=i; }
+    /// set number of Nwounded-Nwounded collisions
+    void   set_Nwounded_Nwounded_collisions(const int &i) 
+                                          { m_Nwounded_Nwounded_collisions=i; }
+    /// set Impact Parameter in fm
+    void   set_impact_parameter(const float &f)      { m_impact_parameter=f; }
+    /// set azimuthal angle of event plane
+    void   set_event_plane_angle(const float &f)     { m_event_plane_angle=f; }
+    /// set eccentricity of participating nucleons in the transverse plane 
+    void   set_eccentricity(const float &f)          { m_eccentricity=f;  }
+    /// set nucleon-nucleon inelastic cross-section
+    void   set_sigma_inel_NN(const float &f)         { m_sigma_inel_NN=f; }
+
+private: // data members
+    int   m_Ncoll_hard; 
+    int   m_Npart_proj; 
+    int   m_Npart_targ;
+    int   m_Ncoll;
+    int   m_spectator_neutrons;
+    int   m_spectator_protons;
+    int   m_N_Nwounded_collisions;
+    int   m_Nwounded_N_collisions;
+    int   m_Nwounded_Nwounded_collisions;
+    float m_impact_parameter;
+    float m_event_plane_angle;
+    float m_eccentricity; 
+    float m_sigma_inel_NN;
+
+};
+
+// Free Functions
+
+/// Write the contents of HeavyIon to an output stream.
+std::ostream & operator << (std::ostream &, HeavyIon const *);
+/// Read the contents of HeavyIon from an input stream.
+std::istream & operator >> (std::istream &, HeavyIon *);
+
+// inline operators
+  /// Required members are
+  /// the number of hard scatterings,
+  /// the number of projectile participants.
+  /// the number of target participants.
+  /// the number of nucleon-nucleon collisions,
+  /// the number of spectator neutrons, and
+  /// the number of spectator protons.
+inline HeavyIon::HeavyIon( int nh, int np, int nt, int nc, int ns, int nsp,
+                   int nnw, int nwn, int nwnw, 
+                  float im, float pl, float ec, float s )
+    : m_Ncoll_hard(nh), 
+      m_Npart_proj(np),
+      m_Npart_targ(nt),
+      m_Ncoll(nc),
+      m_spectator_neutrons(ns),
+      m_spectator_protons(nsp),
+      m_N_Nwounded_collisions(nnw),
+      m_Nwounded_N_collisions(nwn),
+      m_Nwounded_Nwounded_collisions(nwnw),
+      m_impact_parameter(im),
+      m_event_plane_angle(pl),
+      m_eccentricity(ec),
+      m_sigma_inel_NN(s)
+   {}
+
+inline HeavyIon::HeavyIon( HeavyIon const & orig )
+    : m_Ncoll_hard(orig.m_Ncoll_hard), 
+      m_Npart_proj(orig.m_Npart_proj),
+      m_Npart_targ(orig.m_Npart_targ),
+      m_Ncoll(orig.m_Ncoll),
+      m_spectator_neutrons(orig.m_spectator_neutrons),
+      m_spectator_protons(orig.m_spectator_protons),
+      m_N_Nwounded_collisions(orig.m_N_Nwounded_collisions),
+      m_Nwounded_N_collisions(orig.m_Nwounded_N_collisions),
+      m_Nwounded_Nwounded_collisions(orig.m_Nwounded_Nwounded_collisions),
+      m_impact_parameter(orig.m_impact_parameter),
+      m_event_plane_angle(orig.m_event_plane_angle),
+      m_eccentricity(orig.m_eccentricity),
+      m_sigma_inel_NN(orig.m_sigma_inel_NN)
+   {}
+
+inline HeavyIon &  HeavyIon::operator = ( HeavyIon const & rhs ) 
+{
+  HeavyIon temp( rhs );
+  swap( temp );
+  return *this;
+}
+
+inline void HeavyIon::swap( HeavyIon & other ) 
+{
+  std::swap(m_Ncoll_hard, other.m_Ncoll_hard); 
+  std::swap(m_Npart_proj, other.m_Npart_proj);
+  std::swap(m_Npart_targ, other.m_Npart_targ);
+  std::swap(m_Ncoll, other.m_Ncoll);
+  std::swap(m_N_Nwounded_collisions, other.m_N_Nwounded_collisions);
+  std::swap(m_Nwounded_N_collisions, other.m_Nwounded_N_collisions);
+  std::swap(m_Nwounded_Nwounded_collisions, other.m_Nwounded_Nwounded_collisions);
+  std::swap(m_spectator_neutrons, other.m_spectator_neutrons);
+  std::swap(m_spectator_protons, other.m_spectator_protons);
+  std::swap(m_impact_parameter, other.m_impact_parameter);
+  std::swap(m_event_plane_angle, other.m_event_plane_angle);
+  std::swap(m_eccentricity, other.m_eccentricity);
+  std::swap(m_sigma_inel_NN, other.m_sigma_inel_NN);
+}
+
+inline bool    HeavyIon::operator==( const HeavyIon& a ) const
+{
+    /// equality requires that each member match
+    return ( a.Ncoll_hard() == this->Ncoll_hard() 
+             && a.Npart_proj() == this->Npart_proj() 
+             && a.Npart_targ() == this->Npart_targ() 
+            && a.Ncoll() == this->Ncoll() 
+             && a.N_Nwounded_collisions() == this->N_Nwounded_collisions() 
+            && a.Nwounded_N_collisions() == this->Nwounded_N_collisions() 
+             && a.Nwounded_Nwounded_collisions() == this->Nwounded_Nwounded_collisions() 
+            && a.spectator_neutrons() == this->spectator_neutrons() 
+             && a.spectator_protons() == this->spectator_protons() 
+            && a.impact_parameter() == this->impact_parameter() 
+            && a.event_plane_angle() == this->event_plane_angle()
+            && a.eccentricity() == this->eccentricity() 
+            && a.sigma_inel_NN() == this->sigma_inel_NN() );
+}
+
+inline bool    HeavyIon::operator!=( const HeavyIon& a ) const
+{
+    /// any nonmatching member generates inequality
+    return !( a == *this );
+}
+
+inline bool  HeavyIon::is_valid() const
+{
+    if( m_Ncoll_hard != 0 ) return true;
+    if( m_Npart_proj != 0 ) return true;
+    if( m_Npart_targ != 0 ) return true;
+    if( m_Ncoll != 0 ) return true;
+    if( m_spectator_neutrons != 0 ) return true;
+    if( m_spectator_protons != 0 ) return true;
+    if( m_N_Nwounded_collisions != 0 ) return true;
+    if( m_Nwounded_N_collisions != 0 ) return true;
+    if( m_Nwounded_Nwounded_collisions != 0 ) return true;
+    if( m_impact_parameter != 0 ) return true;
+    if( m_event_plane_angle != 0 ) return true;
+    if( m_eccentricity != 0 ) return true;
+    if( m_sigma_inel_NN != 0 ) return true;
+    return false;
+}
+
+} // HepMC
+
+#endif  // HEPMC_HEAVY_ION_H
diff --git a/TEvtGen/HepMC/HepMCDefs.h b/TEvtGen/HepMC/HepMCDefs.h
new file mode 100644 (file)
index 0000000..6145570
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef HEPMC_DEFS_H
+#define HEPMC_DEFS_H
+// ----------------------------------------------------------------------
+//
+// HepMCDefs.h
+// Author:  Lynn Garren
+//
+//  Define various useful macros
+//  Most allow users to check for various code features
+//
+// ----------------------------------------------------------------------
+
+// the HeavyIon class is available in HepMC  
+#ifndef HEPMC_HAS_HEAVY_ION
+#define HEPMC_HAS_HEAVY_ION
+#endif
+
+// the IO_Ascii class is NOT available in HepMC   
+#ifndef HEPMC_IO_ASCII_REMOVED
+#define HEPMC_IO_ASCII_REMOVED
+#endif
+
+// the ParticleData class is NOT available in HepMC   
+#ifndef HEPMC_PARTICLE_DATA_REMOVED
+#define HEPMC_PARTICLE_DATA_REMOVED
+#endif
+
+// the IO_GenEvent class is available in HepMC   
+#ifndef HEPMC_HAS_IO_GENEVENT
+#define HEPMC_HAS_IO_GENEVENT
+#endif
+
+// the PdfInfo class is available in HepMC  
+#ifndef HEPMC_HAS_PDF_INFO
+#define HEPMC_HAS_PDF_INFO
+#endif
+
+// HepMC uses SimpleVector (FourVector) to store momentum and position  
+#ifndef HEPMC_HAS_SIMPLE_VECTOR
+#define HEPMC_HAS_SIMPLE_VECTOR
+#endif
+
+// units are defined in HepMC  
+#ifndef HEPMC_HAS_UNITS
+#define HEPMC_HAS_UNITS
+#endif
+
+// the GenCrossSection class is available in HepMC  
+#ifndef HEPMC_HAS_CROSS_SECTION
+#define HEPMC_HAS_CROSS_SECTION
+#endif
+
+// the iterator range classes are available in HepMC  
+#ifndef HEPMC_HAS_ITERATOR_RANGES
+#define HEPMC_HAS_ITERATOR_RANGES
+#endif
+
+// the HepMC::WeightContainer class allows named weights
+#ifndef HEPMC_HAS_NAMED_WEIGHTS
+#define HEPMC_HAS_NAMED_WEIGHTS
+#endif
+
+// define the version of HepMC. 
+#ifndef HEPMC_VERSION
+#define HEPMC_VERSION "2.06.08"
+#endif
+
+#endif  // HEPMC_DEFS_H
diff --git a/TEvtGen/HepMC/HerwigWrapper.cc b/TEvtGen/HepMC/HerwigWrapper.cc
new file mode 100644 (file)
index 0000000..5fcdaf5
--- /dev/null
@@ -0,0 +1,40 @@
+//--------------------------------------------------------------------------
+//
+// HerwigWrapper.cc
+// Author:  Lynn Garren
+//
+// ----------------------------------------------------------------------
+
+#ifdef _WIN32 // Platform: Windows MS Visual C++
+
+//  Sorry, there is NO version currently available for Vusual C++.
+
+#else 
+
+#include <cmath>
+
+#include "HepMC/HerwigWrapper.h"
+#include "HepMC/GenCrossSection.h"
+
+// declare the struct here to keep the shared library happy
+struct hwgev hwevnt_;
+
+namespace HepMC {
+
+GenCrossSection getHerwigCrossSection(int ngen) {
+
+  HepMC::GenCrossSection xsec;
+  // set cross section information and convert to pb (HepMC convention)
+  double xsecval = hwevnt.AVWGT * 1000.0;
+  // statistical error
+  // Herwig has a better calculation of the error, 
+  // but that information does not appear to be saved anywhere
+  double xsecerr = xsecval / std::sqrt((double)ngen);
+  // set and return cross section information
+  xsec.set_cross_section(xsecval, xsecerr);
+  return xsec;
+}
+
+} // HepMC
+
+#endif //Platform
diff --git a/TEvtGen/HepMC/HerwigWrapper.h b/TEvtGen/HepMC/HerwigWrapper.h
new file mode 100644 (file)
index 0000000..d4d860d
--- /dev/null
@@ -0,0 +1,166 @@
+//--------------------------------------------------------------------------
+#ifndef HERWIG_WRAPPER_H
+#define HERWIG_WRAPPER_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, November 200July 2002
+// Wrapper for FORTRAN version of Herwig
+// Wrapper written for Herwig 6.4
+//////////////////////////////////////////////////////////////////////////
+
+#include <ctype.h>
+
+// This pre-compiler directive is included (2002-01-16) to allow compatibility
+// with MS Visual C++, which interfaces to fortran in a different manner.
+// For it to work you need to define the _WIN32 variable when compiling.
+#ifdef _WIN32 // Platform: Windows MS Visual C++
+
+//  Sorry, there is NO version currently available for Vusual C++.
+
+#else // Generic version, tested on Linux ecgs/gcc
+
+//--------------------------------------------------------------------------
+// HERWIG Common Block Declarations
+
+//        COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV
+extern "C" {
+    extern struct {
+       double EBEAM1,EBEAM2,PBEAM1,PBEAM2;
+        int IPROC,MAXEV;
+    } hwproc_;
+}
+#define hwproc hwproc_
+
+//      COMMON/HWBEAM/IPART1,IPART2
+extern "C" {
+    extern struct {
+        int IPART1, IPART2;
+    } hwbeam_;
+}
+#define hwbeam hwbeam_
+
+//        CHARACTER*8 PART1,PART2
+//        COMMON/HWBMCH/PART1,PART2
+extern "C" {
+    extern struct {
+       char PART1[8],PART2[8];
+    } hwbmch_;
+}
+#define hwbmch hwbmch_
+
+//  COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM,
+//       & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER,
+//       & NUMERU,NWGTS,GENSOF
+const int herwig_hepevt_size = 4000;
+extern "C" {
+    extern struct hwgev {
+       double AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM;
+       int IDHW[herwig_hepevt_size],IERROR,ISTAT,LWEVT,MAXER,MAXPR;
+       int NOWGT,NRN[2],NUMER,NUMERU,NWGTS;
+       int GENSOF; //Beware! in F77 this is logical
+    } hwevnt_;
+}
+#define hwevnt hwevnt_
+
+//  C Basic parameters (and quantities derived from them)
+//        COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC,
+//       & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH,
+//       & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC,
+//       & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG,
+//       & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT,
+//       & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME,
+//       & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY,
+//       & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT,
+//       & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME,
+//       & PRNDEF,PRNTEX,PRNWEB
+
+extern "C" {
+    extern struct {
+       double AFCH[2][16],ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC,
+           CLMAX,CLPOW,CLSMR[2],CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH,
+           GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL[4],PHIMIX,PIFAC,
+           PRSOF,PSPLT[2],PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH[16],QG,
+           QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH[2][16],VCKM[3][3],VGCUT,VQCUT,
+           VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME;
+       int IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF[2],NBTRY,NCOLO,NCTRY,
+           NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT[2],NPRFMT;
+       int AZSOFT,AZSPIN,CLDIR[2],HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,
+           ZPRIME,PRNDEF,PRNTEX,PRNWEB; //Beware! in F77 these are logical
+    } hwpram_;
+}
+#define hwpram hwpram_
+
+//--------------------------------------------------------------------------
+// HERWIG routines declaration
+
+#define hwigin hwigin_  // initialise other common blocks
+#define hwigup hwigup_  // initialise HepUP run common block
+#define hwuinc hwuinc_  // compute parameter-dependent constants
+#define hwusta hwusta_  // call hwusta to make any particle stable
+#define hweini hweini_  // initialise elementary process
+#define hwuine hwuine_  // initialise event
+#define hwepro hwepro_  // generate HERWIG hard subprocess
+#define hwupro hwupro_  // read USER hard subprocess from HepUP event common
+#define hwbgen hwbgen_  // generate parton cascades
+#define hwdhob hwdhob_  // do heavy object decays
+#define hwcfor hwcfor_  // do cluster hadronization
+#define hwcdec hwcdec_  // do cluster decay
+#define hwdhad hwdhad_  // do unstable particle decays
+#define hwdhvy hwdhvy_  // do heavy flavour decays
+#define hwmevt hwmevt_  // add soft underlying event if needed 
+#define hwufne hwufne_  // event generation completed, wrap up event .... 
+#define hwefin hwefin_  // terminate elementary process
+
+#define hwudpr hwudpr_  // prints out particle/decay properties
+#define hwuepr hwuepr_  // prints out event data
+#define hwupup hwupup_  // prints out HepEUP user common block event data
+#define hwegup hwegup_  // terminal calculations to replace HWEFIN for HepUP
+    extern "C" {
+        void hwigin(void);
+        void hwigup(void);
+        void hwuinc(void);
+        void hwusta(const char*,int);
+        void hweini(void);
+        void hwuine(void);
+        void hwepro(void);
+        void hwupro(void);
+        void hwbgen(void);
+        void hwdhob(void);
+        void hwcfor(void);
+        void hwcdec(void);
+        void hwdhad(void);
+        void hwdhvy(void);
+        void hwmevt(void);
+        void hwufne(void);
+        void hwefin(void);
+        void hwudpr(void);
+        void hwuepr(void);
+       void hwupup(void);
+       void hwegup(void);
+    }
+
+//--------------------------------------------------------------------------
+// HERWIG block data
+// ( with gcc it works to initialize the block data by calling 
+//   "hwudat();" at beginning. )
+
+#define hwudat hwudat_
+extern "C" {
+    void hwudat(void);
+}
+
+
+#include "HepMC/GenCrossSection.h"
+
+namespace HepMC {
+
+/// calculate the Herwig cross section and statistical error
+GenCrossSection getHerwigCrossSection(int ngen);
+
+} // HepMC
+
+#endif // Platform
+
+#endif  // HERWIG_WRAPPER_H
+
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/IO_AsciiParticles.cc b/TEvtGen/HepMC/IO_AsciiParticles.cc
new file mode 100644 (file)
index 0000000..3ec2ed7
--- /dev/null
@@ -0,0 +1,222 @@
+//--------------------------------------------------------------------------
+
+//////////////////////////////////////////////////////////////////////////////
+// Mikhail.Kirsanov@Cern.CH, 2006
+// event input/output in ascii format for eye and machine reading
+//
+// for arguments mostly similar to IO_Ascii. Special value of
+// argument filename in constructor: if it is "cout" the output is to std::cout
+//////////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/IO_AsciiParticles.h"
+#include "HepMC/GenEvent.h"
+#include "HepMC/Version.h"
+
+namespace HepMC {
+
+  IO_AsciiParticles::IO_AsciiParticles( const char* filename, std::ios::openmode mode ) 
+  : m_precision(2),
+    m_mode(mode), m_finished_first_event_io(0)
+  {
+    if(std::string(filename) == std::string("cout")) {
+      m_outstream = &(std::cout);
+      m_file = 0;
+    } else {
+      m_file = new std::fstream(filename, mode);
+      m_outstream = m_file;
+      if ( (m_mode&std::ios::out && m_mode&std::ios::in) ||
+           (m_mode&std::ios::app && m_mode&std::ios::in) ) {
+           std::cerr << "IO_AsciiParticles::IO_AsciiParticles Error, open of file requested "
+                  << "of input AND output type. Not allowed. Closing file."
+                  << std::endl;
+        m_file->close();
+        delete m_file;
+       return;
+      }
+    }
+    // precision 16 (# digits following decimal point) is the minimum that
+    // will capture the full information stored in a double
+    // with precision <= 2 the width of output will be < 80 characters
+    m_outstream->precision(m_precision);
+    // we use decimal to store integers, because it is smaller than hex!
+    m_outstream->setf(std::ios::dec,std::ios::basefield);
+    m_outstream->setf(std::ios::scientific,std::ios::floatfield);
+  }
+
+  IO_AsciiParticles::~IO_AsciiParticles() {
+    if(m_file) {
+       m_file->close();
+       delete m_file;
+    }
+  }
+
+  void IO_AsciiParticles::print( std::ostream& ostr ) const { 
+    ostr << "IO_AsciiParticles: formated ascii file IO for eye and machine reading.\n" 
+         << "\tFile openmode: " << m_mode 
+         << " file state: " << m_outstream->rdstate()
+         << " bad:" << (m_outstream->rdstate()&std::ios::badbit)
+         << " eof:" << (m_outstream->rdstate()&std::ios::eofbit)
+         << " fail:" << (m_outstream->rdstate()&std::ios::failbit)
+         << " good:" << (m_outstream->rdstate()&std::ios::goodbit) << std::endl;
+  }
+
+  void IO_AsciiParticles::write_event( const GenEvent* evt ) {
+  // Writes evt to m_outstream. It does NOT delete the event after writing.
+    //
+       // check the state of m_outstream is good, and that it is in output mode
+       if ( !evt || !m_outstream ) return;
+       if ( !(m_mode&std::ios::out) ) {
+           std::cerr << "HepMC::IO_AsciiParticles::write_event "
+                     << " attempt to write to input file." << std::endl;
+           return;
+       }
+       //
+       // write event listing key before first event only.
+       if ( !m_finished_first_event_io ) {
+           m_finished_first_event_io = 1;
+        *m_outstream << "0 Run  HepMC::IO_AsciiParticles eye-readable events output"
+                     << std::endl;
+        *m_outstream << "#      HepMC::Version " << versionName() << std::endl;
+        *m_outstream <<
+    "  #  stat pdg  moth1   px        py         pz     energy    mass      eta"
+                     << std::endl;
+       }
+       //
+       // output the event data
+       std::vector<long int> random_states = evt->random_states();
+       *m_outstream << evt->event_number() << " Event" << std::endl;
+#if 0
+       *m_outstream << " " << evt->event_scale();
+       output( evt->alphaQCD() );
+       output( evt->alphaQED() );
+       output( evt->signal_process_id() );
+       output(   ( evt->signal_process_vertex() ?
+                   evt->signal_process_vertex()->barcode() : 0 )   );
+       output( evt->vertices_size() ); // total number of vertices.
+       output( (int)random_states.size() );
+       for ( std::vector<long int>::iterator rs = random_states.begin(); 
+             rs != random_states.end(); ++rs ) {
+           output( *rs );
+       }
+       output( (int)evt->weights().size() );
+       for ( WeightContainer::const_iterator w = evt->weights().begin(); 
+             w != evt->weights().end(); ++w ) {
+           output( *w );
+       }
+       output('\n');
+#endif
+       //
+    int nparticles=0, imoth=0, ip=0, istati;
+    double xmassi, etai;
+    *m_outstream << evt->particles_size() << " particles" << std::endl;
+    GenVertex* orig;
+    for(HepMC::GenEvent::particle_const_iterator part = evt->particles_begin();
+        part != evt->particles_end(); ++part ) {
+      //if( (*part)->status() != 1 ) continue;
+      nparticles++;
+      ip++;
+      istati = (*part)->status();
+      if( (*part)->end_vertex() && istati == 1) {
+        std::cout << "final particle with end vertex!" << std::endl;
+        istati = -100;
+      }
+      imoth=0;
+      orig = (*part)->production_vertex();
+      if(orig) {
+        imoth = 0;
+        bool ifound=false;
+        for(HepMC::GenEvent::particle_const_iterator part1 =
+                                                     evt->particles_begin();
+                                                     part1 != part; part1++ ) {
+          imoth++;
+          if( (*part1)->end_vertex() == orig ) { ifound = true; break; }
+        }
+        if(!ifound) imoth = 0;
+      }
+
+      m_outstream->width(4);
+      *m_outstream << ip << " ";
+
+      m_outstream->width(3);
+      *m_outstream << istati << " ";
+
+      m_outstream->width(5);
+      *m_outstream << (*part)->pdg_id() << " ";
+
+      m_outstream->width(3);
+      *m_outstream << imoth << "  ";
+
+      if((*part)->momentum().px() >= 0.) *m_outstream << " ";
+      *m_outstream << (*part)->momentum().px() << " ";
+      if((*part)->momentum().py() >= 0.) *m_outstream << " ";
+      *m_outstream << (*part)->momentum().py() << " ";
+      if((*part)->momentum().pz() >= 0.) *m_outstream << " ";
+      *m_outstream << (*part)->momentum().pz() << " "
+             << (*part)->momentum().e() << " ";
+
+      xmassi = (*part)->generatedMass();
+      if(fabs(xmassi) < 0.0001) xmassi =0.;
+      m_outstream->setf(std::ios::fixed);
+      m_outstream->precision(3);
+      m_outstream->width(8);
+      *m_outstream << xmassi << " ";
+      m_outstream->setf(std::ios::scientific,std::ios::floatfield);
+      m_outstream->precision(m_precision);
+
+      m_outstream->setf(std::ios::fixed);
+      m_outstream->precision(3);
+      m_outstream->width(6);
+      etai = (*part)->momentum().eta();
+      if(etai > 999.)etai = 999.;
+      if(etai < -999.)etai = -999.;
+      *m_outstream << etai << std::endl;
+      m_outstream->setf(std::ios::scientific,std::ios::floatfield);
+      m_outstream->precision(m_precision);
+
+    }
+  }
+
+  bool IO_AsciiParticles::fill_next_event( GenEvent* evt ){
+       //
+       //
+       // test that evt pointer is not null
+       if ( !evt ) {
+           std::cerr 
+               << "IO_AsciiParticles::fill_next_event error - passed null event." 
+               << std::endl;
+           return false;
+       }
+       // check the state of m_outstream is good, and that it is in input mode
+       if ( !m_file )
+      std::cerr << "HepMC::IO_AsciiParticles::fill_next_event "
+                << " no file for input" << std::endl;
+       if ( !(m_mode&std::ios::in) ) {
+           std::cerr << "HepMC::IO_AsciiParticles::fill_next_event "
+                     << " attempt to read from output file" << std::endl;
+           return false;
+       }
+    std::cerr << "IO_AsciiParticles input is not yet implemented" << std::endl;
+    return false;
+  }
+
+  void IO_AsciiParticles::write_comment( const std::string comment ) {
+       // check the state of *m_outstream is good, and that it is in output mode
+       if ( !m_outstream ) return;
+       if ( !(m_mode&std::ios::out) ) {
+           std::cerr << "HepMC::IO_AsciiParticles::write_particle_data_table "
+                     << " attempt to write to input file." << std::endl;
+           return;
+       }
+       // write end of event listing key if events have already been written
+       write_end_listing();
+       // insert the comment key before the comment
+       *m_outstream << "\n" << "HepMC::IO_AsciiParticles-COMMENT\n";
+       *m_outstream << comment << std::endl;
+  }
+
+  bool IO_AsciiParticles::write_end_listing() {
+       return false;
+  }
+
+} // HepMC
+
diff --git a/TEvtGen/HepMC/IO_AsciiParticles.h b/TEvtGen/HepMC/IO_AsciiParticles.h
new file mode 100644 (file)
index 0000000..a62e7f7
--- /dev/null
@@ -0,0 +1,103 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_IO_ASCIIPARTICLES_H
+#define HEPMC_IO_ASCIIPARTICLES_H
+
+//////////////////////////////////////////////////////////////////////////
+// Mikhail.Kirsanov@Cern.CH, 2006
+// event input/output in ascii format for eye and machine reading
+//////////////////////////////////////////////////////////////////////////
+//
+// Strategy for reading or writing events as machine readable
+//  ascii to a file. When instantiating, the mode of file to be created 
+//  must be specified. Options are:
+//      std::ios::in     open file for input 
+//      std::ios::out    open file for output
+//      std::ios::trunc  erase old file when opening (i.e. ios::out|ios::trunc
+//                    removes oldfile, and creates a new one for output )
+//      std::ios::app    append output to end of file
+//  for the purposes of this class, simultaneous input and output mode 
+//  ( std::ios::in | std::ios::out ) is not allowed.
+// 
+// Event listings are preceded by the key:
+//  "HepMC::IO_AsciiParticles-START_EVENT_LISTING\n"
+//  and terminated by the key:
+//  "HepMC::IO_AsciiParticles-END_EVENT_LISTING\n"
+// Comments are allowed. They need not be preceded by anything, though if
+//  a comment is written using write_comment( const string ) then it will be
+//  preceded by "HepMC::IO_AsciiParticles-COMMENT\n"
+// Each event, vertex, particle, particle data is preceded by 
+//  "E ","V ","P ","D "    respectively.
+// Comments may appear anywhere in the file -- so long as they do not contain
+//  any of the 4 start/stop keys.
+//
+
+#include <fstream>
+#include <string>
+#include <map>
+#include <vector>
+#include "HepMC/IO_BaseClass.h"
+
+namespace HepMC {
+
+    class GenEvent;
+    class GenVertex;
+    class GenParticle;
+
+    //! event input/output in ascii format for eye and machine reading
+
+    ///
+    /// \class IO_AsciiParticles
+    /// Strategy for reading or writing events as machine readable
+    ///  ascii to a file. When instantiating, the mode of file to be created 
+    ///  must be specified. 
+    ///
+    class IO_AsciiParticles : public IO_BaseClass {
+    public:
+        /// constructor requiring a file name and std::ios mode
+       IO_AsciiParticles( const char* filename="IO_AsciiParticles.dat", 
+                 std::ios::openmode mode=std::ios::out );
+       virtual       ~IO_AsciiParticles();
+
+        /// write this event
+       void          write_event( const GenEvent* evt );
+        /// get the next event
+       bool          fill_next_event( GenEvent* evt );
+       /// insert a comment directly into the output file --- normally you
+       ///  only want to do this at the beginning or end of the file. All
+       ///  comments are preceded with "HepMC::IO_AsciiParticles-COMMENT\n"
+       void          write_comment( const std::string comment );
+
+        /// set output precision
+        void          setPrecision(int iprec);
+
+       int           rdstate() const;  //!< check the state of the IO stream
+       void          clear();  //!< clear the IO stream
+
+        /// write to ostr
+       void          print( std::ostream& ostr = std::cout ) const;
+
+    protected: // for internal use only
+       /// write end tag
+       bool          write_end_listing();
+    private: // use of copy constructor is not allowed
+       IO_AsciiParticles( const IO_AsciiParticles& ) : IO_BaseClass() {}
+    private: // data members
+    int                 m_precision;
+       std::ios::openmode  m_mode;
+       std::fstream*       m_file;
+    std::ostream*       m_outstream;
+       bool                m_finished_first_event_io;
+    };
+
+    //////////////
+    // Inlines  //
+    //////////////
+
+    inline int  IO_AsciiParticles::rdstate() const { return (int)m_file->rdstate(); }
+    inline void IO_AsciiParticles::clear() { m_file->clear(); }
+    inline void IO_AsciiParticles::setPrecision(int iprec) { m_precision=iprec; }
+
+} // HepMC
+
+#endif  // HEPMC_IO_ASCIIPARTICLES_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/IO_BaseClass.h b/TEvtGen/HepMC/IO_BaseClass.h
new file mode 100644 (file)
index 0000000..802ec22
--- /dev/null
@@ -0,0 +1,116 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_IO_BASECLASS_H
+#define HEPMC_IO_BASECLASS_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, November 1999, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// event input/output base class
+//////////////////////////////////////////////////////////////////////////
+//
+// class from which all input/output classes shall inherit from.
+// i.e.: if you want to write events to hbook ntuples,
+//              then inherit from this class and re-define read_event()
+//              and write_event()
+//
+// (Possible extension: Could make this an input iterator)
+//
+
+#include <iostream>
+#include "HepMC/GenEvent.h"
+
+namespace HepMC {
+
+    //! all input/output classes inherit from IO_BaseClass
+
+    ///
+    /// \class  IO_BaseClass
+    /// If you want to write a new IO class, 
+    /// then inherit from this class and re-define read_event()
+    /// and write_event()
+    ///
+    class IO_BaseClass {
+    public:
+        virtual ~IO_BaseClass() {}
+
+       /// write this GenEvent
+       virtual void write_event( const GenEvent* ) =0;
+       /// fill this GenEvent
+       virtual bool fill_next_event( GenEvent* ) =0;
+       /// write output to ostr
+       virtual void print( std::ostream& ostr = std::cout ) const;
+       //
+       // the read_next_event() differs from
+       // the fill_***() methods in that it creates a new event
+       // before calling the  corresponding fill_*** method
+       // (they are not intended to be over-ridden)
+       GenEvent*    read_next_event();  //!< do not over-ride
+       //
+       // The overloaded stream operators >>,<< are identical to
+       //   read_next_event and write_event methods respectively.
+       //   (or read_particle_data_table and write_particle_data_table)
+       // the event argument for the overloaded stream operators is a pointer,
+       // which is passed by reference.
+       //  i.e.  GenEvent* evt; 
+       //        io >> evt; 
+       // will give the expected result.
+       // (note: I don't see any reason to have separate const and non-const
+       //  versions of operator<<, but the pedantic ansi standard insists 
+       //  on it) 
+       /// the same as read_next_event
+       virtual       GenEvent*& operator>>( GenEvent*& );
+       /// the same as write_event
+       virtual const GenEvent*& operator<<( const GenEvent*& );
+       /// the same as write_event
+       virtual       GenEvent*& operator<<( GenEvent*& );
+    };
+
+    //////////////
+    // Inlines  //
+    //////////////
+
+    inline GenEvent* IO_BaseClass::read_next_event() {
+       /// creates a new event and fills it by calling 
+       /// the sister method read_next_event( GenEvent* )
+       // 
+        // 1. create an empty event container
+        GenEvent* evt = new GenEvent();
+       // 2. fill the evt container - if the read is successful, return the
+       //    pointer, otherwise return null and delete the evt
+       if ( fill_next_event( evt ) ) return evt;
+       // note: the below delete is only reached if read fails
+       //       ... thus there is not much overhead in new then delete 
+       //       since this statement is rarely reached
+       delete evt;
+       return 0;
+    }
+
+    inline void IO_BaseClass::print( std::ostream& ostr ) const { 
+       ostr << "IO_BaseClass: abstract parent I/O class. " <<  std::endl;
+    }
+
+    inline GenEvent*& IO_BaseClass::operator>>( GenEvent*& evt ){
+       evt = read_next_event();
+       return evt;
+    }
+
+    inline const GenEvent*& IO_BaseClass::operator<<(
+                                             const GenEvent*& evt ) {
+       write_event( evt );
+       return evt;
+    }
+
+    inline GenEvent*& IO_BaseClass::operator<<( GenEvent*& evt ) {
+       write_event( evt );
+       return evt;
+    }
+
+} // HepMC
+
+#endif  // HEPMC_IO_BASECLASS_H
+//--------------------------------------------------------------------------
+
+
+
diff --git a/TEvtGen/HepMC/IO_Exception.h b/TEvtGen/HepMC/IO_Exception.h
new file mode 100644 (file)
index 0000000..1e2b510
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef HEPMC_IO_EXCEPTION_H
+#define HEPMC_IO_EXCEPTION_H
+// ----------------------------------------------------------------------
+//
+// IO_Exception.h
+// Author:  Lynn Garren
+//
+// IO exception handling
+// IO_GenEvent, etc. catch the throw and set data members with the error type and message 
+// Some of the messages are constructed with transient information 
+//      (e.g., contents of a bad GenParticle)
+//
+// ----------------------------------------------------------------------
+
+
+
+#include <stdexcept>
+namespace HepMC {
+
+//! IO exception handling
+
+///
+/// \class  IO_Exception
+/// IO_GenEvent, etc. catch the throw and set data members with the error type and message 
+/// Some of the messages are constructed with transient information 
+///      (e.g., contents of a bad GenParticle)
+class IO_Exception : public std::runtime_error {
+public:
+  IO_Exception(const std::string & msg) 
+  : std::runtime_error(msg) { }
+
+  /// IO error types
+  enum ErrorType{ OK,
+                  NullEvent, 
+                  WrongFileType, 
+                  MissingStartKey, 
+                 EndOfStream, 
+                 EndKeyMismatch, 
+                 MissingEndKey, 
+                 InvalidData,
+                  InputAndOutput,
+                 BadOutputStream,
+                 BadInputStream };
+
+};
+
+}      // namespace HepMC
+
+#endif // HEPMC_IO_EXCEPTION_H
diff --git a/TEvtGen/HepMC/IO_GenEvent.cc b/TEvtGen/HepMC/IO_GenEvent.cc
new file mode 100644 (file)
index 0000000..6acae53
--- /dev/null
@@ -0,0 +1,178 @@
+//--------------------------------------------------------------------------
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, July 2006
+// event input/output in ascii format for machine reading
+// IO_GenEvent format contains HeavyIon and PdfInfo classes
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/IO_GenEvent.h"
+#include "HepMC/IO_Exception.h"
+#include "HepMC/GenEvent.h"
+#include "HepMC/StreamHelpers.h"
+
+namespace HepMC {
+
+    IO_GenEvent::IO_GenEvent( const std::string& filename, std::ios::openmode mode ) 
+    : m_mode(mode), 
+      m_file(filename.c_str(), mode), 
+      m_ostr(0),
+      m_istr(0),
+      m_iostr(0),
+      m_have_file(false),
+      m_error_type(IO_Exception::OK),
+      m_error_message()
+    {
+       if ( (m_mode&std::ios::out && m_mode&std::ios::in) ||
+            (m_mode&std::ios::app && m_mode&std::ios::in) ) {
+            m_error_type = IO_Exception::InputAndOutput;
+           m_error_message ="IO_GenEvent::IO_GenEvent Error, open of file requested of input AND output type. Not allowed. Closing file.";
+           std::cerr << m_error_message << std::endl;
+           m_file.close();
+           return;
+       }
+       // now we set the streams
+       m_iostr = &m_file;
+       if ( m_mode&std::ios::in ) {
+           m_istr = &m_file;
+           m_ostr = NULL;
+           detail::establish_input_stream_info(m_file);
+       }
+       if ( m_mode&std::ios::out ) {
+           m_ostr = &m_file;
+           m_istr = NULL;
+           detail::establish_output_stream_info(m_file);
+       }
+       m_have_file = true;
+    }
+
+
+    IO_GenEvent::IO_GenEvent( std::istream & istr ) 
+    : m_ostr(0),
+      m_istr(&istr),
+      m_iostr(&istr),
+      m_have_file(false),
+      m_error_type(IO_Exception::OK),
+      m_error_message()
+    { 
+        detail::establish_input_stream_info( istr );
+    }
+
+    IO_GenEvent::IO_GenEvent( std::ostream & ostr )
+    : m_ostr(&ostr),
+      m_istr(0),
+      m_iostr(&ostr),
+      m_have_file(false),
+      m_error_type(IO_Exception::OK),
+      m_error_message()
+   {
+        detail::establish_output_stream_info( ostr );
+   }
+
+    IO_GenEvent::~IO_GenEvent() {
+       if ( m_ostr != NULL ) {
+           write_HepMC_IO_block_end(*m_ostr);
+       }
+       if(m_have_file) m_file.close();
+    }
+
+    void IO_GenEvent::use_input_units( Units::MomentumUnit mom, 
+                                       Units::LengthUnit len ) {
+        if( m_istr != NULL ) {
+            set_input_units( *m_istr, mom, len );
+       }
+    }
+
+    void IO_GenEvent::print( std::ostream& ostr ) const { 
+       ostr << "IO_GenEvent: unformated ascii file IO for machine reading.\n"; 
+       if(m_have_file)    ostr  << "\tFile openmode: " << m_mode ;
+       ostr << " stream state: " << m_ostr->rdstate()
+            << " bad:" << (m_ostr->rdstate()&std::ios::badbit)
+            << " eof:" << (m_ostr->rdstate()&std::ios::eofbit)
+            << " fail:" << (m_ostr->rdstate()&std::ios::failbit)
+            << " good:" << (m_ostr->rdstate()&std::ios::goodbit) << std::endl;
+    }
+
+    void IO_GenEvent::precision( int size )  { 
+        if( size > 16 ) { 
+           std::cerr << "IO_GenEvent::precision Error, "
+                     << "precision is greater than 16. "
+                     << "Not allowed. Using default precision of 16."
+                     << std::endl;
+            size = 16;
+       }
+        if(m_ostr) {
+           m_ostr->precision(size);
+       }
+    }
+       
+    bool IO_GenEvent::fill_next_event( GenEvent* evt ){
+       //
+       // reset error type
+        m_error_type = IO_Exception::OK;
+       //
+       // test that evt pointer is not null
+       if ( !evt ) {
+            m_error_type = IO_Exception::NullEvent;
+           m_error_message = "IO_GenEvent::fill_next_event error - passed null event.";
+           std::cerr << m_error_message << std::endl;
+           return false;
+       }
+       // make sure the stream is good, and that it is in input mode
+       if ( !(*m_istr) ) return false;
+       if ( !m_istr ) {
+            m_error_type = IO_Exception::WrongFileType;
+           m_error_message = "HepMC::IO_GenEvent::fill_next_event attempt to read from output file.";
+           std::cerr << m_error_message << std::endl;
+           return false;
+       }
+       // use streaming input
+        try {
+           *m_istr >> *evt;
+       }
+        catch (IO_Exception& e) {
+            m_error_type = IO_Exception::InvalidData;
+           m_error_message = e.what();
+           evt->clear();
+           return false;
+        }
+       if( evt->is_valid() ) return true;
+       return false;
+    }
+
+    void IO_GenEvent::write_event( const GenEvent* evt ) {
+       /// Writes evt to output stream. It does NOT delete the event after writing.
+       //
+       // make sure the state is good, and that it is in output mode
+       if ( !evt  ) return;
+       if ( m_ostr == NULL ) {
+            m_error_type = IO_Exception::WrongFileType;
+           m_error_message = "HepMC::IO_GenEvent::write_event attempt to write to input file.";
+           std::cerr << m_error_message << std::endl;
+           return;
+       }
+       //
+       // write event listing key before first event only.
+       write_HepMC_IO_block_begin(*m_ostr);
+       // explicit cast is necessary
+       GenEvent e = *evt;
+       *m_ostr << e ;
+    }
+
+    void IO_GenEvent::write_comment( const std::string comment ) {
+       // make sure the stream is good, and that it is in output mode
+       if ( !(*m_ostr) ) return;
+       if ( m_ostr == NULL ) {
+            m_error_type = IO_Exception::WrongFileType;
+           m_error_message = "HepMC::IO_GenEvent::write_event attempt to write to input file.";
+           std::cerr << m_error_message << std::endl;
+           return;
+       }
+       // write end of event listing key if events have already been written
+       write_HepMC_IO_block_end(*m_ostr);
+       // insert the comment key before the comment
+       *m_ostr << "\n" << "HepMC::IO_GenEvent-COMMENT\n";
+       *m_ostr << comment << std::endl;
+    }
+       
+} // HepMC
diff --git a/TEvtGen/HepMC/IO_GenEvent.h b/TEvtGen/HepMC/IO_GenEvent.h
new file mode 100644 (file)
index 0000000..f2efa16
--- /dev/null
@@ -0,0 +1,152 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_IO_GENEVENT_H
+#define HEPMC_IO_GENEVENT_H
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, July 2007
+// with input from Gavin Salam, salam@lpthe.jussieu.fr
+//
+// event input/output in ascii format for machine reading
+// This class persists all information found in a GenEvent
+//////////////////////////////////////////////////////////////////////////
+
+#include <fstream>
+#include <string>
+#include <map>
+#include <vector>
+#include "HepMC/IO_BaseClass.h"
+#include "HepMC/IO_Exception.h"
+#include "HepMC/Units.h"
+
+namespace HepMC {
+
+class GenEvent;
+class GenVertex;
+class GenParticle;
+class HeavyIon;
+class PdfInfo;
+
+//! IO_GenEvent also deals with HeavyIon and PdfInfo 
+
+///
+/// \class  IO_GenEvent
+/// event input/output in ascii format for machine reading
+/// extended format contains HeavyIon and PdfInfo classes
+///
+/// Strategy for reading or writing events using iostreams
+/// When instantiating with a file name, the mode of file to be created 
+///  must be specified. Options are:
+///      std::ios::in     open file for input 
+///      std::ios::out    open file for output
+///      std::ios::trunc  erase old file when opening (i.e. ios::out|ios::trunc
+///                    removes oldfile, and creates a new one for output )
+///      std::ios::app    append output to end of file
+///  for the purposes of this class, simultaneous input and output mode 
+///  ( std::ios::in | std::ios::out ) is not allowed.
+/// 
+/// Event listings are preceded by the key:
+///  "HepMC::IO_GenEvent-START_EVENT_LISTING\n"
+///  and terminated by the key:
+///  "HepMC::IO_GenEvent-END_EVENT_LISTING\n"
+/// GenParticle Data tables are preceded by the key:
+///  "HepMC::IO_GenEvent-START_PARTICLE_DATA\n"
+///  and terminated by the key:
+///  "HepMC::IO_GenEvent-END_PARTICLE_DATA\n"
+/// Comments are allowed. They need not be preceded by anything, though if
+///  a comment is written using write_comment( const string ) then it will be
+///  preceded by "HepMC::IO_GenEvent-COMMENT\n"
+/// Each event, vertex, particle, particle data, heavy ion, or pdf info line
+///  is preceded by   "E ","V ","P ","D ","H ","F "    respectively.
+/// Comments may appear anywhere in the file -- so long as they do not contain
+///  any of the start/stop keys.
+///
+class IO_GenEvent : public IO_BaseClass {
+public:
+    /// constructor requiring a file name and std::ios mode
+    IO_GenEvent( const std::string& filename="IO_GenEvent.dat", 
+             std::ios::openmode mode=std::ios::out );
+    /// constructor requiring an input stream
+    IO_GenEvent( std::istream & );
+    /// constructor requiring an output stream
+    IO_GenEvent( std::ostream & );
+    virtual       ~IO_GenEvent();
+
+    /// write this event
+    void          write_event( const GenEvent* evt );
+    /// get the next event
+    bool          fill_next_event( GenEvent* evt );
+    /// insert a comment directly into the output file --- normally you
+    ///  only want to do this at the beginning or end of the file. All
+    ///  comments are preceded with "HepMC::IO_GenEvent-COMMENT\n"
+    void          write_comment( const std::string comment );
+
+    int           rdstate() const;  //!< check the state of the IO stream
+    void          clear();  //!< clear the IO stream
+
+    /// write to ostr
+    void          print( std::ostream& ostr = std::cout ) const;
+
+    /// needed when reading a file without units if those units are 
+    /// different than the declared default units 
+    /// (e.g., the default units are MeV, but the file was written with GeV)
+    /// This method is not necessary if the units are written in the file
+    void use_input_units( Units::MomentumUnit, Units::LengthUnit );
+
+    /// set output precision
+    /// The default precision is 16.
+    void precision( int );
+       
+    /// integer (enum) associated with read error
+    int           error_type()    const;
+    /// the read error message string
+    const std::string & error_message() const;
+
+private: // use of copy constructor is not allowed
+    IO_GenEvent( const IO_GenEvent& ) : IO_BaseClass() {}
+
+private: // data members
+    std::ios::openmode  m_mode;
+    std::fstream        m_file;
+    std::ostream *      m_ostr;
+    std::istream *      m_istr;
+    std::ios *          m_iostr;
+    bool                m_have_file;
+    IO_Exception::ErrorType m_error_type;
+    std::string         m_error_message;
+
+};
+
+//////////////
+// Inlines  //
+//////////////
+
+inline int  IO_GenEvent::rdstate() const { 
+    int state;
+    if( m_istr ) {
+       state =  (int)m_istr->rdstate();
+    } else {
+       state =  (int)m_ostr->rdstate();
+    }
+    return state; 
+}
+
+inline void IO_GenEvent::clear() { 
+    if( m_istr ) {
+       m_istr->clear();
+    } else {
+       m_ostr->clear();
+    }
+}
+
+inline int IO_GenEvent::error_type() const {
+    return m_error_type;
+}
+
+inline const std::string & IO_GenEvent::error_message() const {
+    return m_error_message;
+}
+
+} // HepMC
+
+#endif  // HEPMC_IO_GENEVENT_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/IO_HEPEVT.cc b/TEvtGen/HepMC/IO_HEPEVT.cc
new file mode 100644 (file)
index 0000000..d5de1b5
--- /dev/null
@@ -0,0 +1,350 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, January 2000
+// HEPEVT IO class
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/IO_HEPEVT.h"
+#include "HepMC/GenEvent.h"
+#include <cstdio>       // needed for formatted output using sprintf 
+
+namespace HepMC {
+
+    IO_HEPEVT::IO_HEPEVT() : m_trust_mothers_before_daughters(1),
+                            m_trust_both_mothers_and_daughters(0),
+                            m_print_inconsistency_errors(1),
+                            m_trust_beam_particles(true)
+    {}
+
+    IO_HEPEVT::~IO_HEPEVT(){}
+
+    void IO_HEPEVT::print( std::ostream& ostr ) const { 
+        ostr << "IO_HEPEVT: reads an event from the FORTRAN HEPEVT "
+             << "common block. \n" 
+            << " trust_mothers_before_daughters = " 
+            << m_trust_mothers_before_daughters
+            << " trust_both_mothers_and_daughters = "
+            << m_trust_both_mothers_and_daughters
+            << ", print_inconsistency_errors = " 
+            << m_print_inconsistency_errors << std::endl;
+    }
+
+    bool IO_HEPEVT::fill_next_event( GenEvent* evt ) {
+       /// read one event from the HEPEVT common block and fill GenEvent
+       /// return T/F =success/failure
+       ///
+       /// For HEPEVT commons built with the luhepc routine of Pythia 5.7
+       ///  the children pointers are not always correct (i.e. there is 
+       ///  oftentimes an internal inconsistency between the parents and 
+       ///  children pointers). The parent pointers always seem to be correct.
+       /// Thus the switch trust_mothers_before_daughters=1 is appropriate for
+       ///  pythia. NOTE: you should also set the switch MSTP(128) = 2 in 
+       ///                pythia (not the default!), so that pythia doesn't
+       ///                store two copies of resonances in the event record.
+       /// The situation is opposite for the HEPEVT which comes from Isajet
+       /// via stdhep, so then use the switch trust_mothers_before_daughters=0
+       //
+       // 1. test that evt pointer is not null and set event number
+       if ( !evt ) {
+           std::cerr 
+               << "IO_HEPEVT::fill_next_event error - passed null event." 
+               << std::endl;
+           return false;
+       }
+       evt->set_event_number( HEPEVT_Wrapper::event_number() );
+       //
+       // 2. create a particle instance for each HEPEVT entry and fill a map
+       //    create a vector which maps from the HEPEVT particle index to the 
+       //    GenParticle address
+       //    (+1 in size accounts for hepevt_particle[0] which is unfilled)
+       std::vector<GenParticle*> hepevt_particle( 
+                                       HEPEVT_Wrapper::number_entries()+1 );
+       hepevt_particle[0] = 0;
+       for ( int i1 = 1; i1 <= HEPEVT_Wrapper::number_entries(); ++i1 ) {
+           hepevt_particle[i1] = build_particle(i1);
+       }
+       std::set<GenVertex*> new_vertices;
+       //
+       // Here we assume that the first two particles in the list 
+       // are the incoming beam particles.
+       if( trust_beam_particles() ) {
+       evt->set_beam_particles( hepevt_particle[1], hepevt_particle[2] );
+       }
+       //
+       // 3.+4. loop over HEPEVT particles AGAIN, this time creating vertices
+       for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) {
+           // We go through and build EITHER the production or decay 
+           // vertex for each entry in hepevt, depending on the switch
+           // m_trust_mothers_before_daughters (new 2001-02-28)
+           // Note: since the HEPEVT pointers are bi-directional, it is
+           ///      sufficient to do one or the other.
+           //
+           // 3. Build the production_vertex (if necessary)
+           if ( m_trust_mothers_before_daughters || 
+                m_trust_both_mothers_and_daughters ) {
+               build_production_vertex( i, hepevt_particle, evt );
+           }
+           //
+           // 4. Build the end_vertex (if necessary) 
+           //    Identical steps as for production vertex
+           if ( !m_trust_mothers_before_daughters || 
+                m_trust_both_mothers_and_daughters ) {
+               build_end_vertex( i, hepevt_particle, evt );
+           }
+       }
+       // 5.             01.02.2000
+       // handle the case of particles in HEPEVT which come from nowhere -
+       //  i.e. particles without mothers or daughters.
+       //  These particles need to be attached to a vertex, or else they
+       //  will never become part of the event. check for this situation
+       for ( int i3 = 1; i3 <= HEPEVT_Wrapper::number_entries(); ++i3 ) {
+           if ( !hepevt_particle[i3]->end_vertex() && 
+                       !hepevt_particle[i3]->production_vertex() ) {
+               GenVertex* prod_vtx = new GenVertex();
+               prod_vtx->add_particle_out( hepevt_particle[i3] );
+               evt->add_vertex( prod_vtx );
+           }
+       }
+       return true;
+    }
+
+    void IO_HEPEVT::write_event( const GenEvent* evt ) {
+       /// This writes an event out to the HEPEVT common block. The daughters
+       /// field is NOT filled, because it is possible to contruct graphs
+       /// for which the mothers and daughters cannot both be make sequential.
+       /// This is consistent with how pythia fills HEPEVT (daughters are not
+       /// necessarily filled properly) and how IO_HEPEVT reads HEPEVT.
+       //
+       if ( !evt ) return;
+       //
+       // map all particles onto a unique index
+       std::vector<GenParticle*> index_to_particle(
+           HEPEVT_Wrapper::max_number_entries()+1 );
+       index_to_particle[0]=0;
+       std::map<GenParticle*,int> particle_to_index;
+       int particle_counter=0;
+       for ( GenEvent::vertex_const_iterator v = evt->vertices_begin();
+             v != evt->vertices_end(); ++v ) {
+           // all "mothers" or particles_in are kept adjacent in the list
+           // so that the mother indices in hepevt can be filled properly
+           for ( GenVertex::particles_in_const_iterator p1 
+                     = (*v)->particles_in_const_begin();
+                 p1 != (*v)->particles_in_const_end(); ++p1 ) {
+               ++particle_counter;
+               if ( particle_counter > 
+                    HEPEVT_Wrapper::max_number_entries() ) break; 
+               index_to_particle[particle_counter] = *p1;
+               particle_to_index[*p1] = particle_counter;
+           }
+           // daughters are entered only if they aren't a mother of 
+           // another vtx
+           for ( GenVertex::particles_out_const_iterator p2 
+                     = (*v)->particles_out_const_begin();
+                 p2 != (*v)->particles_out_const_end(); ++p2 ) {
+               if ( !(*p2)->end_vertex() ) {
+                   ++particle_counter;
+                   if ( particle_counter > 
+                        HEPEVT_Wrapper::max_number_entries() ) {
+                       break;
+                   }
+                   index_to_particle[particle_counter] = *p2;
+                   particle_to_index[*p2] = particle_counter;
+               }
+           }
+       }
+       if ( particle_counter > HEPEVT_Wrapper::max_number_entries() ) {
+           particle_counter = HEPEVT_Wrapper::max_number_entries();
+       }
+       //      
+       // fill the HEPEVT event record
+       HEPEVT_Wrapper::set_event_number( evt->event_number() );
+       HEPEVT_Wrapper::set_number_entries( particle_counter );
+       for ( int i = 1; i <= particle_counter; ++i ) {
+           HEPEVT_Wrapper::set_status( i, index_to_particle[i]->status() );
+           HEPEVT_Wrapper::set_id( i, index_to_particle[i]->pdg_id() );
+           FourVector m = index_to_particle[i]->momentum();
+           HEPEVT_Wrapper::set_momentum( i, m.px(), m.py(), m.pz(), m.e() );
+           HEPEVT_Wrapper::set_mass( i, index_to_particle[i]->generatedMass() );
+           // there should ALWAYS be particles in any vertex, but some generators
+           // are making non-kosher HepMC events
+           if ( index_to_particle[i]->production_vertex() && 
+                index_to_particle[i]->production_vertex()->particles_in_size()) {
+               FourVector p = index_to_particle[i]->
+                                    production_vertex()->position();
+               HEPEVT_Wrapper::set_position( i, p.x(), p.y(), p.z(), p.t() );
+               int num_mothers = index_to_particle[i]->production_vertex()->
+                                 particles_in_size();
+               int first_mother = find_in_map( particle_to_index,
+                                               *(index_to_particle[i]->
+                                                 production_vertex()->
+                                                 particles_in_const_begin()));
+               int last_mother = first_mother + num_mothers - 1;
+               if ( first_mother == 0 ) last_mother = 0;
+               HEPEVT_Wrapper::set_parents( i, first_mother, last_mother );
+           } else {
+               HEPEVT_Wrapper::set_position( i, 0, 0, 0, 0 );
+               HEPEVT_Wrapper::set_parents( i, 0, 0 );
+           }
+           HEPEVT_Wrapper::set_children( i, 0, 0 );
+       }
+    }
+
+    void IO_HEPEVT::build_production_vertex(int i, 
+                                           std::vector<HepMC::GenParticle*>& 
+                                           hepevt_particle,
+                                           GenEvent* evt ) {
+       /// 
+       /// for particle in HEPEVT with index i, build a production vertex
+       /// if appropriate, and add that vertex to the event
+       GenParticle* p = hepevt_particle[i];
+       // a. search to see if a production vertex already exists
+       int mother = HEPEVT_Wrapper::first_parent(i);
+       GenVertex* prod_vtx = p->production_vertex();
+       while ( !prod_vtx && mother > 0 ) {
+           prod_vtx = hepevt_particle[mother]->end_vertex();
+           if ( prod_vtx ) prod_vtx->add_particle_out( p );
+           // increment mother for next iteration
+           if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0;
+       }
+       // b. if no suitable production vertex exists - and the particle
+       // has atleast one mother or position information to store - 
+       // make one
+       FourVector prod_pos( HEPEVT_Wrapper::x(i), HEPEVT_Wrapper::y(i), 
+                                  HEPEVT_Wrapper::z(i), HEPEVT_Wrapper::t(i) 
+                                ); 
+       if ( !prod_vtx && (HEPEVT_Wrapper::number_parents(i)>0 
+                          || prod_pos!=FourVector(0,0,0,0)) )
+       {
+           prod_vtx = new GenVertex();
+           prod_vtx->add_particle_out( p );
+           evt->add_vertex( prod_vtx );
+       }
+       // c. if prod_vtx doesn't already have position specified, fill it
+       if ( prod_vtx && prod_vtx->position()==FourVector(0,0,0,0) ) {
+           prod_vtx->set_position( prod_pos );
+       }
+       // d. loop over mothers to make sure their end_vertices are
+       //     consistent
+       mother = HEPEVT_Wrapper::first_parent(i);
+       while ( prod_vtx && mother > 0 ) {
+           if ( !hepevt_particle[mother]->end_vertex() ) {
+               // if end vertex of the mother isn't specified, do it now
+               prod_vtx->add_particle_in( hepevt_particle[mother] );
+           } else if (hepevt_particle[mother]->end_vertex() != prod_vtx ) {
+               // problem scenario --- the mother already has a decay
+               // vertex which differs from the daughter's produciton 
+               // vertex. This means there is internal
+               // inconsistency in the HEPEVT event record. Print an
+               // error
+               // Note: we could provide a fix by joining the two 
+               //       vertices with a dummy particle if the problem
+               //       arrises often with any particular generator.
+               if ( m_print_inconsistency_errors ) std::cerr
+                   << "HepMC::IO_HEPEVT: inconsistent mother/daugher "
+                   << "information in HEPEVT event " 
+                   << HEPEVT_Wrapper::event_number()
+                   << ". \n I recommend you try "
+                   << "inspecting the event first with "
+                   << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()"
+                   << "\n This warning can be turned off with the "
+                   << "IO_HEPEVT::print_inconsistency_errors switch."
+                   << std::endl;
+           }
+           if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0;
+       }
+    }
+
+    void IO_HEPEVT::build_end_vertex
+    ( int i, std::vector<HepMC::GenParticle*>& hepevt_particle, GenEvent* evt ) 
+    {
+       /// 
+       /// for particle in HEPEVT with index i, build an end vertex
+       /// if appropriate, and add that vertex to the event
+       //    Identical steps as for build_production_vertex
+       GenParticle* p = hepevt_particle[i];
+       // a.
+       int daughter = HEPEVT_Wrapper::first_child(i);
+       GenVertex* end_vtx = p->end_vertex();
+       while ( !end_vtx && daughter > 0 ) {
+           end_vtx = hepevt_particle[daughter]->production_vertex();
+           if ( end_vtx ) end_vtx->add_particle_in( p );
+           if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0;
+       }
+       // b. (different from 3c. because HEPEVT particle can not know its
+       //        decay position )
+       if ( !end_vtx && HEPEVT_Wrapper::number_children(i)>0 ) {
+           end_vtx = new GenVertex();
+           end_vtx->add_particle_in( p );
+           evt->add_vertex( end_vtx );
+       }
+       // c+d. loop over daughters to make sure their production vertices 
+       //    point back to the current vertex.
+       //    We get the vertex position from the daughter as well.
+       daughter = HEPEVT_Wrapper::first_child(i);
+       while ( end_vtx && daughter > 0 ) {
+           if ( !hepevt_particle[daughter]->production_vertex() ) {
+               // if end vertex of the mother isn't specified, do it now
+               end_vtx->add_particle_out( hepevt_particle[daughter] );
+               // 
+               // 2001-03-29 M.Dobbs, fill vertex the position.
+               if ( end_vtx->position()==FourVector(0,0,0,0) ) {
+                   FourVector prod_pos( HEPEVT_Wrapper::x(daughter), 
+                                              HEPEVT_Wrapper::y(daughter), 
+                                              HEPEVT_Wrapper::z(daughter), 
+                                              HEPEVT_Wrapper::t(daughter) 
+                       );
+                   if ( prod_pos != FourVector(0,0,0,0) ) {
+                       end_vtx->set_position( prod_pos );
+                   }
+               }
+           } else if (hepevt_particle[daughter]->production_vertex() 
+                      != end_vtx){
+               // problem scenario --- the daughter already has a prod
+               // vertex which differs from the mother's end 
+               // vertex. This means there is internal
+               // inconsistency in the HEPEVT event record. Print an
+               // error
+               if ( m_print_inconsistency_errors ) std::cerr
+                   << "HepMC::IO_HEPEVT: inconsistent mother/daugher "
+                   << "information in HEPEVT event " 
+                   << HEPEVT_Wrapper::event_number()
+                   << ". \n I recommend you try "
+                   << "inspecting the event first with "
+                   << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()"
+                   << "\n This warning can be turned off with the "
+                   << "IO_HEPEVT::print_inconsistency_errors switch."
+                   << std::endl;
+           }
+           if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0;
+       }
+       if ( !p->end_vertex() && !p->production_vertex() ) {
+           // Added 2001-11-04, to try and handle Isajet problems.
+           build_production_vertex( i, hepevt_particle, evt );
+       }
+    }
+
+    GenParticle* IO_HEPEVT::build_particle( int index ) {
+       /// Builds a particle object corresponding to index in HEPEVT
+       // 
+       GenParticle* p 
+           = new GenParticle( FourVector( HEPEVT_Wrapper::px(index), 
+                                                HEPEVT_Wrapper::py(index), 
+                                                HEPEVT_Wrapper::pz(index), 
+                                                HEPEVT_Wrapper::e(index) ),
+                              HEPEVT_Wrapper::id(index), 
+                              HEPEVT_Wrapper::status(index) );
+        p->setGeneratedMass( HEPEVT_Wrapper::m(index) );
+       p->suggest_barcode( index );
+       return p;
+    }
+
+    int IO_HEPEVT::find_in_map( const std::map<HepMC::GenParticle*,int>& m, 
+                               GenParticle* p) const {
+        std::map<GenParticle*,int>::const_iterator iter = m.find(p);
+        if ( iter == m.end() ) return 0;
+        return iter->second;
+    }
+
+} // HepMC
+
+
+
diff --git a/TEvtGen/HepMC/IO_HEPEVT.h b/TEvtGen/HepMC/IO_HEPEVT.h
new file mode 100644 (file)
index 0000000..cdb36e8
--- /dev/null
@@ -0,0 +1,141 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_IO_HEPEVT_H
+#define HEPMC_IO_HEPEVT_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, January 2000, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// HEPEVT IO class
+//////////////////////////////////////////////////////////////////////////
+//
+// Important note: This class uses HepMC::HEPEVT_Wrapper which is an
+//                 interface to the fortran77 HEPEVT common block.
+//                 The precision and number of entries in the F77 common 
+//                 block can be specified. See HepMC/HEPEVT_Wrapper.h.
+//                 You will very likely have to specify these values for your
+//                 application.
+//
+//
+
+#include <map>
+#include <vector>
+#include "HepMC/IO_BaseClass.h"
+#include "HepMC/HEPEVT_Wrapper.h"
+
+namespace HepMC {
+
+    class GenEvent;
+    class GenVertex;
+    class GenParticle;
+
+    //! HEPEVT IO class
+
+    ///
+    /// \class  IO_HEPEVT
+    /// IO class for reading the standard HEPEVT common block.
+    ///
+    class IO_HEPEVT : public IO_BaseClass {
+    public:
+       IO_HEPEVT();
+       virtual           ~IO_HEPEVT();
+       bool              fill_next_event( GenEvent* );
+       void              write_event( const GenEvent* );
+       void              print( std::ostream& ostr = std::cout ) const;
+       
+       // see comments below for these switches.
+       /// default is false
+       bool              trust_both_mothers_and_daughters() const;
+       /// default is true
+       bool              trust_mothers_before_daughters() const;
+       /// default is true
+       bool              print_inconsistency_errors() const;
+       /// default is true
+       bool              trust_beam_particles() const;
+        /// define mother daughter trust rules
+       void              set_trust_mothers_before_daughters( bool b = true );
+        /// define mother daughter trust rules
+       void              set_trust_both_mothers_and_daughters( bool b = false );
+       /// Since HEPEVT has bi-directional pointers, it is possible that
+       /// the mother/daughter pointers are inconsistent (though physically
+       /// speaking this should never happen). In practise it happens often.
+       /// When a conflict occurs (i.e. when mother/daughter pointers are in 
+       /// disagreement, where an empty (0) pointer is not considered a 
+       /// disagreement) an error is printed. These errors can be turned off 
+       /// with:            myio_hepevt.set_print_inconsistency_errors(0);
+       /// but it is STRONGLY recommended that you print the HEPEVT 
+       /// common and understand the inconsistency BEFORE you turn off the
+       /// errors. The messages are there for a reason [remember, there is
+       /// no message printed when the information is missing, ... only when
+       /// is it inconsistent. User beware.]
+       /// You can inspect the HEPEVT common block for inconsistencies with
+       ///   HEPEVT_Wrapper::check_hepevt_consistency()
+       ///
+       /// There is a switch controlling whether the mother pointers or
+       /// the daughters are to be trusted.
+       /// For example, in Pythia the mother information is always correctly
+       /// included, but the daughter information is often left unfilled: in
+       /// this case we want to trust the mother pointers and not necessarily
+       /// the daughters. [THIS IS THE DEFAULT]. Unfortunately the reverse
+       /// happens for the stdhep(2001) translation of Isajet, so we need
+       /// an option to toggle the choices.
+       void              set_print_inconsistency_errors( bool b = true );
+        /// declare whether or not beam particles exist
+       void              set_trust_beam_particles( bool b = true );
+
+    protected: // for internal use only
+        /// create a GenParticle
+       GenParticle* build_particle( int index );
+        /// create a production vertex
+       void build_production_vertex( 
+           int i,std::vector<HepMC::GenParticle*>& hepevt_particle, GenEvent* evt );
+        /// create an end vertex
+       void build_end_vertex( 
+           int i, std::vector<HepMC::GenParticle*>& hepevt_particle, GenEvent* evt );
+        /// find this particle in the particle map
+       int  find_in_map( 
+           const std::map<HepMC::GenParticle*,int>& m, GenParticle* p) const;
+
+    private: // use of copy constructor is not allowed
+       IO_HEPEVT( const IO_HEPEVT& ) : IO_BaseClass() {}
+
+    private: // data members
+
+       bool m_trust_mothers_before_daughters;
+       bool m_trust_both_mothers_and_daughters;
+       bool m_print_inconsistency_errors; 
+       bool m_trust_beam_particles;
+    };
+
+    ////////////////////////////
+    // INLINES access methods //
+    ////////////////////////////
+    inline bool IO_HEPEVT::trust_both_mothers_and_daughters() const 
+    { return m_trust_both_mothers_and_daughters; }
+       
+    inline bool IO_HEPEVT::trust_mothers_before_daughters() const 
+    { return m_trust_mothers_before_daughters; }
+
+    inline bool IO_HEPEVT::print_inconsistency_errors() const
+    { return m_print_inconsistency_errors; }
+
+    inline void IO_HEPEVT::set_trust_both_mothers_and_daughters( bool b )
+    { m_trust_both_mothers_and_daughters = b; }
+
+    inline void IO_HEPEVT::set_trust_mothers_before_daughters( bool b )
+    { m_trust_mothers_before_daughters = b; }
+
+    inline void IO_HEPEVT::set_print_inconsistency_errors( bool b  )
+    { m_print_inconsistency_errors = b; }
+
+    inline bool IO_HEPEVT::trust_beam_particles() const
+    { return m_trust_beam_particles; }
+
+    inline void IO_HEPEVT::set_trust_beam_particles( bool b )
+    { m_trust_beam_particles = b; }
+
+} // HepMC
+
+#endif  // HEPMC_IO_HEPEVT_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/IO_HERWIG.cc b/TEvtGen/HepMC/IO_HERWIG.cc
new file mode 100644 (file)
index 0000000..e2f0d8e
--- /dev/null
@@ -0,0 +1,823 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, October 2002
+// Herwig 6.400 IO class
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/IO_HERWIG.h"
+#include "HepMC/GenEvent.h"
+#include <cstdio>       // needed for formatted output using sprintf 
+
+namespace HepMC {
+
+    IO_HERWIG::IO_HERWIG() : m_trust_mothers_before_daughters(false),
+                            m_trust_both_mothers_and_daughters(true),
+                            m_print_inconsistency_errors(true),
+                            m_no_gaps_in_barcodes(true),
+                            m_herwig_to_pdg_id(100,0)
+    {
+       // These arrays are copied from Lynn Garren's stdhep 5.01-5.06.
+       //   see http://cepa.fnal.gov/psm/stdhep/
+       // Translation from HERWIG particle ID's to PDG particle ID's.
+       m_herwig_to_pdg_id[1] =1; 
+       m_herwig_to_pdg_id[2] =2;
+       m_herwig_to_pdg_id[3] =3;
+       m_herwig_to_pdg_id[4] =4;
+       m_herwig_to_pdg_id[5] =5;
+       m_herwig_to_pdg_id[6] =6;
+       m_herwig_to_pdg_id[7] =7;
+       m_herwig_to_pdg_id[8] =8;
+       
+       m_herwig_to_pdg_id[11] =11;
+       m_herwig_to_pdg_id[12] =12;
+       m_herwig_to_pdg_id[13] =13;
+       m_herwig_to_pdg_id[14] =14;
+       m_herwig_to_pdg_id[15] =15;
+       m_herwig_to_pdg_id[16] =16;
+       
+       m_herwig_to_pdg_id[21] =21;
+       m_herwig_to_pdg_id[22] =22;
+       m_herwig_to_pdg_id[23] =23;
+       m_herwig_to_pdg_id[24] =24;
+       m_herwig_to_pdg_id[25] =25;
+       m_herwig_to_pdg_id[26] =51; // <-- H_L0 (redundant with h0(25))
+       
+       m_herwig_to_pdg_id[32] =32;
+       m_herwig_to_pdg_id[35] =35;
+       m_herwig_to_pdg_id[36] =36;
+       m_herwig_to_pdg_id[37] =37;
+       m_herwig_to_pdg_id[39] =39;
+       m_herwig_to_pdg_id[40] =40; //Charybdis Black Hole
+      
+       m_herwig_to_pdg_id[81] =81;
+       m_herwig_to_pdg_id[82] =82;
+       m_herwig_to_pdg_id[83] =83;
+       m_herwig_to_pdg_id[84] =84;
+       m_herwig_to_pdg_id[85] =85;
+       m_herwig_to_pdg_id[86] =86;
+       m_herwig_to_pdg_id[87] =87;
+       m_herwig_to_pdg_id[88] =88;
+       m_herwig_to_pdg_id[89] =89;
+       m_herwig_to_pdg_id[90] =90;
+       
+       m_herwig_to_pdg_id[91] =91;
+       m_herwig_to_pdg_id[92] =92;
+       m_herwig_to_pdg_id[93] =93;
+       m_herwig_to_pdg_id[94] =94;
+       m_herwig_to_pdg_id[95] =95;
+       m_herwig_to_pdg_id[96] =96;
+       m_herwig_to_pdg_id[97] =97;
+       m_herwig_to_pdg_id[98] =9920022; // <-- remnant photon
+       m_herwig_to_pdg_id[99] =9922212; // <-- remnant nucleon
+
+       // These particle ID's have no antiparticle, so aren't allowed.
+       m_no_antiparticles.insert(-21);
+       m_no_antiparticles.insert(-22);
+       m_no_antiparticles.insert(-23);
+       m_no_antiparticles.insert(-25);
+       m_no_antiparticles.insert(-51);
+       m_no_antiparticles.insert(-35);
+       m_no_antiparticles.insert(-36);
+    }
+
+    IO_HERWIG::~IO_HERWIG(){}
+
+    void IO_HERWIG::print( std::ostream& ostr ) const { 
+        ostr << "IO_HERWIG: reads an event from the FORTRAN Herwig HEPEVT "
+             << "common block. \n" 
+            << " trust_mothers_before_daughters = " 
+            << m_trust_mothers_before_daughters
+            << " trust_both_mothers_and_daughters = "
+            << m_trust_both_mothers_and_daughters
+            << " print_inconsistency_errors = " 
+            << m_print_inconsistency_errors << std::endl;
+    }
+
+    bool IO_HERWIG::fill_next_event( GenEvent* evt ) {
+       /// read one event from the Herwig HEPEVT common block and fill GenEvent
+       /// return T/F =success/failure
+       //
+       // 0. Test that evt pointer is not null and set event number
+       if ( !evt ) {
+           std::cerr 
+               << "IO_HERWIG::fill_next_event error - passed null event." 
+               << std::endl;
+           return false;
+       }
+
+       // 1. First we have to fix the HEPEVT input, which is all mucked up for
+       //    herwig.
+       repair_hepevt();
+
+       evt->set_event_number( HEPEVT_Wrapper::event_number() );
+       // Herwig units are GeV and mm
+       // It would be nice to set the units right here,
+       // but this could cause problems with existing code that 
+       // might convert GeV to MeV without calling the appropriate HepMC method
+
+       //
+       // 2. create a particle instance for each HEPEVT entry and fill a map
+       //    create a vector which maps from the HEPEVT particle index to the 
+       //    GenParticle address
+       //    (+1 in size accounts for hepevt_particle[0] which is unfilled)
+       std::vector<GenParticle*> hepevt_particle( 
+                                       HEPEVT_Wrapper::number_entries()+1 );
+       hepevt_particle[0] = 0;
+       for ( int i1 = 1; i1 <= HEPEVT_Wrapper::number_entries(); ++i1 ) {
+           hepevt_particle[i1] = build_particle(i1);
+       }
+       std::set<GenVertex*> new_vertices;
+       //
+       // Here we assume that the first two particles in the list 
+       // are the incoming beam particles.
+       // Best make sure this is done before any rearranging...
+       evt->set_beam_particles( hepevt_particle[1], hepevt_particle[2] );
+       //
+       // 3. We need to take special care with the hard process
+       // vertex.  The problem we are trying to avoid is when the
+       // partons entering the hard process also have daughters from
+       // the parton shower. When this happens, each one can get its
+       // own decay vertex, making it difficult to join them
+       // later. We handle it by joining them together first, then
+       // the other daughters get added on later.
+       // Find the partons entering the hard vertex (status codes 121, 122).
+       int index_121 = 0;
+       int index_122 = 0;
+       for ( int i = 1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+           if ( HEPEVT_Wrapper::status(i)==121 ) index_121=i;
+           if ( HEPEVT_Wrapper::status(i)==122 ) index_122=i;
+           if ( index_121!=0 && index_122!=0 ) break;
+       }
+       if ( index_121 && index_122 ) {
+           GenVertex* hard_vtx = new GenVertex();
+           hard_vtx->add_particle_in( hepevt_particle[index_121] );
+           hard_vtx->add_particle_in( hepevt_particle[index_122] );
+           // evt->add_vertex( hard_vtx ); // not necessary, its done in 
+                                           // set_signal_process_vertex
+           //BPK - Atlas -> index_hard retained if it is a boson
+           int index_hard = 0;
+           for ( int i = 1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+             if ( HEPEVT_Wrapper::status(i)==120 ) index_hard=i;
+             if ( index_hard!=0 ) break;
+           }
+           
+           if ( index_hard!=0) {
+             hard_vtx->add_particle_out( hepevt_particle[index_hard] );
+             GenVertex* hard_vtx2 = new GenVertex();
+             hard_vtx2->add_particle_in( hepevt_particle[index_hard] );
+                 for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) {
+               if (  HEPEVT_Wrapper::first_parent(i)==index_hard ) {
+                 hard_vtx2->add_particle_out( hepevt_particle[i] );
+               }
+             }
+             evt->set_signal_process_vertex( hard_vtx );
+             evt->set_signal_process_vertex( hard_vtx2 );
+           }
+           else {
+             evt->set_signal_process_vertex( hard_vtx );
+           }
+           //BPK - Atlas -<
+       }
+       //
+       // 4. loop over HEPEVT particles AGAIN, this time creating vertices
+       for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) {
+           // We go through and build EITHER the production or decay 
+           // vertex for each entry in hepevt, depending on the switch
+           // m_trust_mothers_before_daughters (new 2001-02-28)
+           // Note: since the HEPEVT pointers are bi-directional, it is
+           ///      sufficient to do one or the other.
+           //
+           // 3. Build the production_vertex (if necessary)
+           if ( m_trust_mothers_before_daughters || 
+                m_trust_both_mothers_and_daughters ) {
+               build_production_vertex( i, hepevt_particle, evt );
+           }
+           //
+           // 4. Build the end_vertex (if necessary) 
+           //    Identical steps as for production vertex
+           if ( !m_trust_mothers_before_daughters || 
+                m_trust_both_mothers_and_daughters ) {
+               build_end_vertex( i, hepevt_particle, evt );
+           }
+       }
+       // 5.             01.02.2000
+       // handle the case of particles in HEPEVT which come from nowhere -
+       //  i.e. particles without mothers or daughters.
+       //  These particles need to be attached to a vertex, or else they
+       //  will never become part of the event. check for this situation.
+       for ( int i3 = 1; i3 <= HEPEVT_Wrapper::number_entries(); ++i3 ) {
+           // Herwig also has some non-physical entries in HEPEVT
+           // like CMS, HARD, and CONE. These are flagged by
+           // repair_hepevt by making their status and id zero. We
+           // delete those particles here.
+           if ( hepevt_particle[i3] && !hepevt_particle[i3]->parent_event()
+                && !hepevt_particle[i3]->pdg_id()
+                && !hepevt_particle[i3]->status() ) {
+               //std::cout << "IO_HERWIG::fill_next_event is deleting null "
+               //        << "particle" << std::endl;
+               //hepevt_particle[i3]->print();
+               delete hepevt_particle[i3];
+           } else if ( hepevt_particle[i3] && 
+                       !hepevt_particle[i3]->end_vertex() && 
+                       !hepevt_particle[i3]->production_vertex() ) {
+               GenVertex* prod_vtx = new GenVertex();
+               prod_vtx->add_particle_out( hepevt_particle[i3] );
+               evt->add_vertex( prod_vtx );
+           }
+       }
+       return true;
+    }
+
+    void IO_HERWIG::build_production_vertex(int i, 
+                                           std::vector<GenParticle*>& 
+                                           hepevt_particle,
+                                           GenEvent* evt ) {
+       /// 
+       /// for particle in HEPEVT with index i, build a production vertex
+       /// if appropriate, and add that vertex to the event
+       GenParticle* p = hepevt_particle[i];
+       // a. search to see if a production vertex already exists
+       int mother = HEPEVT_Wrapper::first_parent(i);
+       GenVertex* prod_vtx = p->production_vertex();
+       while ( !prod_vtx && mother > 0 ) {
+           prod_vtx = hepevt_particle[mother]->end_vertex();
+           if ( prod_vtx ) prod_vtx->add_particle_out( p );
+           // increment mother for next iteration
+           if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0;
+       }
+       // b. if no suitable production vertex exists - and the particle
+       // has atleast one mother or position information to store - 
+       // make one
+       FourVector prod_pos( HEPEVT_Wrapper::x(i), HEPEVT_Wrapper::y(i), 
+                                  HEPEVT_Wrapper::z(i), HEPEVT_Wrapper::t(i) 
+                                ); 
+       if ( !prod_vtx && (HEPEVT_Wrapper::number_parents(i)>0 
+                          || prod_pos!=FourVector(0,0,0,0)) )
+       {
+           prod_vtx = new GenVertex();
+           prod_vtx->add_particle_out( p );
+           evt->add_vertex( prod_vtx ); 
+       }
+       // c. if prod_vtx doesn't already have position specified, fill it
+       if ( prod_vtx && prod_vtx->position()==FourVector(0,0,0,0) ) {
+           prod_vtx->set_position( prod_pos );
+       }
+       // d. loop over mothers to make sure their end_vertices are
+       //     consistent
+       mother = HEPEVT_Wrapper::first_parent(i);
+       while ( prod_vtx && mother > 0 ) {
+           if ( !hepevt_particle[mother]->end_vertex() ) {
+               // if end vertex of the mother isn't specified, do it now
+               prod_vtx->add_particle_in( hepevt_particle[mother] );
+           } else if (hepevt_particle[mother]->end_vertex() != prod_vtx ) {
+               // problem scenario --- the mother already has a decay
+               // vertex which differs from the daughter's produciton 
+               // vertex. This means there is internal
+               // inconsistency in the HEPEVT event record. Print an
+               // error
+               // Note: we could provide a fix by joining the two 
+               //       vertices with a dummy particle if the problem
+               //       arrises often with any particular generator.
+               if ( m_print_inconsistency_errors ) {
+                 std::cerr
+                   << "HepMC::IO_HERWIG: inconsistent mother/daugher "
+                   << "information in HEPEVT event " 
+                   << HEPEVT_Wrapper::event_number()
+                   << ". \n I recommend you try "
+                   << "inspecting the event first with "
+                   << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()"
+                   << "\n This warning can be turned off with the "
+                   << "IO_HERWIG::print_inconsistency_errors switch."
+                   << std::endl;
+                 hepevt_particle[mother]->print(std::cerr);
+                 std::cerr
+                   << "problem vertices are: (prod_vtx, mother)" << std::endl;
+                 if ( prod_vtx ) prod_vtx->print(std::cerr);
+                 hepevt_particle[mother]->end_vertex()->print(std::cerr);
+               }
+           }
+           if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0;
+       }
+    }
+
+    void IO_HERWIG::build_end_vertex
+    ( int i, std::vector<GenParticle*>& hepevt_particle, GenEvent* evt ) 
+    {
+       /// 
+       /// for particle in HEPEVT with index i, build an end vertex
+       /// if appropriate, and add that vertex to the event
+       //    Identical steps as for build_production_vertex
+       GenParticle* p = hepevt_particle[i];
+       // a.
+       int daughter = HEPEVT_Wrapper::first_child(i);
+       GenVertex* end_vtx = p->end_vertex();
+       while ( !end_vtx && daughter > 0 ) {
+           end_vtx = hepevt_particle[daughter]->production_vertex();
+           if ( end_vtx ) end_vtx->add_particle_in( p );
+           if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0;
+       }
+       // b. (different from 3c. because HEPEVT particle can not know its
+       //        decay position )
+       if ( !end_vtx && HEPEVT_Wrapper::number_children(i)>0 ) {
+           end_vtx = new GenVertex();
+           end_vtx->add_particle_in( p );
+           evt->add_vertex( end_vtx );
+       }
+       // c+d. loop over daughters to make sure their production vertices 
+       //    point back to the current vertex.
+       //    We get the vertex position from the daughter as well.
+       daughter = HEPEVT_Wrapper::first_child(i);
+       while ( end_vtx && daughter > 0 ) {
+           if ( !hepevt_particle[daughter]->production_vertex() ) {
+               // if end vertex of the mother isn't specified, do it now
+               end_vtx->add_particle_out( hepevt_particle[daughter] );
+               // 
+               // 2001-03-29 M.Dobbs, fill vertex the position.
+               if ( end_vtx->position()==FourVector(0,0,0,0) ) {
+                   FourVector prod_pos( HEPEVT_Wrapper::x(daughter), 
+                                              HEPEVT_Wrapper::y(daughter), 
+                                              HEPEVT_Wrapper::z(daughter), 
+                                              HEPEVT_Wrapper::t(daughter) 
+                       );
+                   if ( prod_pos != FourVector(0,0,0,0) ) {
+                       end_vtx->set_position( prod_pos );
+                   }
+               }
+           } else if (hepevt_particle[daughter]->production_vertex() 
+                      != end_vtx){
+               // problem scenario --- the daughter already has a prod
+               // vertex which differs from the mother's end 
+               // vertex. This means there is internal
+               // inconsistency in the HEPEVT event record. Print an
+               // error
+               if ( m_print_inconsistency_errors ) std::cerr
+                   << "HepMC::IO_HERWIG: inconsistent mother/daugher "
+                   << "information in HEPEVT event " 
+                   << HEPEVT_Wrapper::event_number()
+                   << ". \n I recommend you try "
+                   << "inspecting the event first with "
+                   << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()"
+                   << "\n This warning can be turned off with the "
+                   << "IO_HERWIG::print_inconsistency_errors switch."
+                   << std::endl;
+           }
+           if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0;
+       }
+       if ( !p->end_vertex() && !p->production_vertex() ) {
+           // Added 2001-11-04, to try and handle Isajet problems.
+           build_production_vertex( i, hepevt_particle, evt );
+       }
+    }
+
+    GenParticle* IO_HERWIG::build_particle( int index ) {
+       /// Builds a particle object corresponding to index in HEPEVT
+       // 
+       GenParticle* p 
+           = new GenParticle( FourVector( HEPEVT_Wrapper::px(index), 
+                                                HEPEVT_Wrapper::py(index), 
+                                                HEPEVT_Wrapper::pz(index), 
+                                                HEPEVT_Wrapper::e(index) ),
+                              HEPEVT_Wrapper::id(index), 
+                              HEPEVT_Wrapper::status(index) );
+        p->setGeneratedMass( HEPEVT_Wrapper::m(index) );
+       p->suggest_barcode( index );
+       return p;
+    }
+
+    int IO_HERWIG::find_in_map( const std::map<GenParticle*,int>& m, 
+                               GenParticle* p) const {
+        std::map<GenParticle*,int>::const_iterator iter = m.find(p);
+        if ( iter == m.end() ) return 0;
+        return iter->second;
+    }
+
+    void IO_HERWIG::repair_hepevt() const {
+       ///  This routine takes the HEPEVT common block as used in HERWIG,
+       ///  and converts it into the HEPEVT common block in the standard format
+       ///
+       ///  This means it:
+       ///    - removes the color structure, which herwig overloads 
+       ///      into the mother/daughter fields
+       ///    - zeros extra entries for hard subprocess, etc.
+       ///
+       ///
+       /// Special HERWIG status codes
+       ///   101,102   colliding beam particles
+       ///   103       beam-beam collision CMS vector
+       ///   120       hard subprocess CMS vector
+       ///   121,122   hard subprocess colliding partons
+       ///   123-129   hard subprocess outgoing particles
+       ///   141-149   (ID=94) mirror image of hard subrpocess particles
+       ///   100       (ID=0 cone)
+       ///
+       /// Special HERWIG particle id's
+       ///   91 clusters
+       ///   94 jets
+       ///   0  others with no pdg code
+
+       // Make sure hepvt isn't empty.
+       if ( HEPEVT_Wrapper::number_entries() <= 0 ) return;
+
+       // Find the index of the beam-beam collision and of the hard subprocess
+       // Later we will assume that 
+       //              101 ---> 121 \. 
+       //                             X  Hard subprocess
+       //              102 ---> 122 /
+       // 
+       int index_collision = 0;
+       int index_hard = 0;
+       int index_101 = 0;
+       int index_102 = 0;
+       int index_121 = 0;
+       int index_122 = 0;
+
+       for ( int i = 1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+           if ( HEPEVT_Wrapper::status(i)==101 ) index_101=i;
+           if ( HEPEVT_Wrapper::status(i)==102 ) index_102=i;
+           if ( HEPEVT_Wrapper::status(i)==103 ) index_collision=i;
+           if ( HEPEVT_Wrapper::status(i)==120 ) index_hard=i;
+           if ( HEPEVT_Wrapper::status(i)==121 ) index_121=i;
+           if ( HEPEVT_Wrapper::status(i)==122 ) index_122=i;
+           if ( index_collision!=0 && index_hard!=0 && index_101!=0 && 
+                index_102!=0 && index_121!=0 && index_122!=0 ) break;
+       }
+
+       // The mother daughter information for the hard subprocess entry (120)
+       // IS correct, whereas the information for the particles participating
+       // in the hard subprocess contains instead the color flow relationships
+       // Transfer the hard subprocess info onto the other particles
+       // in the hard subprocess.
+       //
+       // We cannot specify daughters of the incoming hard process particles
+       // because they have some daughters (their showered versions) which 
+       // are not adjacent in the particle record, so we cannot properly 
+       // set the daughter indices in hepevt.
+       //
+       if (index_121) HEPEVT_Wrapper::set_parents(index_121, index_101, 0 );
+       if (index_121) HEPEVT_Wrapper::set_children( index_121, 0, 0 );
+       if (index_122) HEPEVT_Wrapper::set_parents(index_122, index_102, 0 );
+       if (index_122) HEPEVT_Wrapper::set_children( index_122, 0, 0 );
+
+       for ( int i = HEPEVT_Wrapper::first_child(index_hard);
+             i <= HEPEVT_Wrapper::last_child(index_hard); i++ ) {
+           //BPK - Atlas ->
+           if (index_hard && HEPEVT_Wrapper::id(index_hard) == 0 ) {
+             HEPEVT_Wrapper::set_parents( 
+                 i, HEPEVT_Wrapper::first_parent(index_hard), 
+                 HEPEVT_Wrapper::last_parent(index_hard) );
+            //BPK -> inconsistency in HWHGUP, desc from hard vert should point to it.
+            } else if (  HEPEVT_Wrapper::first_parent(i)!=index_hard) {
+              HEPEVT_Wrapper::set_parents(i,index_hard,HEPEVT_Wrapper::last_parent(i) );
+           }
+           //BPK - Atlas -<
+
+           // When the direct descendants of the hard process are hadrons,
+           // then the 2nd child contains color flow information, and so
+           // we zero it.
+           // However, if the direct descendant is status=195, then it is
+           // a non-hadron, and so the 2nd child does contain real mother
+           // daughter relationships. ( particularly relevant for H->WW,
+           //                           April 18, 2003 )
+            // BPK - part of the inconsistency in HWHGUP problem
+            if ( HEPEVT_Wrapper::status(i) != 195 && HEPEVT_Wrapper::status(i) != 155 ) {
+              HEPEVT_Wrapper::set_children(i,HEPEVT_Wrapper::first_child(i),0);
+            }
+       }
+
+       // now zero the collision and hard entries.
+       //BPK - Atlas ->
+       if (index_hard && HEPEVT_Wrapper::id(index_hard) == 0 ) zero_hepevt_entry(index_hard);
+       if (index_hard && HEPEVT_Wrapper::id(index_collision) == 0  ) zero_hepevt_entry(index_collision);
+       //BPK - Atlas -<
+
+       //     Loop over the particles individually and handle oddities
+       for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+
+           //       ----------- Fix ID codes ----------
+           //       particles with ID=94 are mirror images of their mothers:
+           if ( HEPEVT_Wrapper::id(i)==94 ) {
+               HEPEVT_Wrapper::set_id( 
+                   i, HEPEVT_Wrapper::id( HEPEVT_Wrapper::first_parent(i) ) );
+           }
+
+           //     ----------- fix STATUS codes ------
+           //     status=100 particles are "cones" which carry only color info
+           //     throw them away
+           if ( HEPEVT_Wrapper::status(i)==100 ) zero_hepevt_entry(i);
+
+
+           // NOTE: status 101,102 particles are the beam particles.
+           //       status 121,129 particles are the hard subprocess particles
+           // we choose to allow the herwig particles to have herwig
+           // specific codes, and so we don't bother to change these
+           // to status =3.
+
+
+
+
+           //  ----------- fix some MOTHER/DAUGHTER relationships
+           //  Whenever the mother points to the hard process, it is referring
+           //  to a color flow, so we zero it.
+           if ( HEPEVT_Wrapper::last_parent(i)==index_hard ) {
+               HEPEVT_Wrapper::set_parents( 
+                   i, HEPEVT_Wrapper::first_parent(i), 0 );
+           }
+
+           // It makes no sense to have a mother that is younger than you are!
+
+           if ( HEPEVT_Wrapper::first_parent(i) >= i ) {
+               HEPEVT_Wrapper::set_parents( i, 0, 0 );
+           }
+           if ( HEPEVT_Wrapper::last_parent(i) >= i ) {
+               HEPEVT_Wrapper::set_parents( 
+                   i, HEPEVT_Wrapper::first_parent(i), 0 );
+           }
+
+           // Whenever the second mother/daughter has a lower index than the
+           // first, it means the second mother/daughter contains color
+           // info. Purge it.
+           if ( HEPEVT_Wrapper::last_parent(i) <= 
+                HEPEVT_Wrapper::first_parent(i) ) {
+               HEPEVT_Wrapper::set_parents( 
+                   i, HEPEVT_Wrapper::first_parent(i), 0 );
+           }
+
+           if ( HEPEVT_Wrapper::last_child(i) <= 
+                HEPEVT_Wrapper::first_child(i) ) {
+               HEPEVT_Wrapper::set_children(
+                   i, HEPEVT_Wrapper::first_child(i), 0 );
+           }
+
+           // The mothers & daughters of a soft centre of mass (stat=170) seem
+           // to be correct, but they are out of sequence. The information is
+           // elsewhere in the event record, so zero it.
+           //
+           if ( HEPEVT_Wrapper::status(i) == 170 ) {
+               HEPEVT_Wrapper::set_parents( i, 0, 0 );
+               HEPEVT_Wrapper::set_children( i, 0, 0 );
+           }
+
+           // Recognise clusters.
+           // Case 1: cluster has particle parents.  
+           // Clusters normally DO point to its two
+           // correct mothers, but those 2 mothers are rarely adjacent in the
+           // event record ... so the mother information might say something
+           // like 123,48 where index123 and index48 really are the correct
+           // mothers... however the hepevt standard states that the mother
+           // pointers should give the index range. So we would have to
+           // reorder the event record and add entries if we wanted to use
+           // it. Instead we just zero the mothers, since all of that
+           // information is contained in the daughter information of the
+           // mothers.
+           // Case 2: cluster has a soft process centre of mass (stat=170)
+           // as parent. This is ok, keep it.
+           //
+           // Note if we were going directly to HepMC, then we could 
+           //  use this information properly!
+
+           if ( HEPEVT_Wrapper::id(i)==91 ) {
+               // if the cluster comes from a SOFT (id=0,stat=170)
+               if ( HEPEVT_Wrapper::status(HEPEVT_Wrapper::first_parent(i)) 
+                    == 170 ) {
+                   ; // In this case the mothers are ok
+               } else {
+                   HEPEVT_Wrapper::set_parents( i, 0, 0 );
+               }
+           }
+       }
+       
+       //     ---------- Loop over the particles individually and look 
+       //                for mother/daughter inconsistencies.
+       // We consider a mother daughter relationship to be valid
+       // ONLy when the mother points to the daughter AND the
+       // daughter points back (true valid bidirectional
+       // pointers) OR when a one thing points to the other, but
+       // the other points to zero. If this isn't true, we zero
+       // the offending relationship.
+
+       for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+           // loop over parents
+           int ifirst = HEPEVT_Wrapper::first_parent(i);
+           int ilast = HEPEVT_Wrapper::last_parent(i);
+           if ( ilast == 0 ) ilast = HEPEVT_Wrapper::first_parent(i);
+           bool first_is_acceptable = true;
+           bool last_is_acceptable = true;
+           // check for out of range.
+           if ( ifirst>=i || ifirst<0 ) first_is_acceptable = false;
+           if ( ilast>=i || ilast<ifirst || ilast<0 )last_is_acceptable=false;
+           if ( first_is_acceptable ) {
+               for ( int j = ifirst; j<=ilast; j++ ) {
+                   // these are the acceptable outcomes
+                   if ( HEPEVT_Wrapper::first_child(j)==i ) {;} 
+                   // watch out
+                   else if ( HEPEVT_Wrapper::first_child(j) <=i && 
+                             HEPEVT_Wrapper::last_child(j) >=i ) {;}
+                   else if ( HEPEVT_Wrapper::first_child(j) ==0 && 
+                             HEPEVT_Wrapper::last_child(j) ==0 ) {;}
+
+                   // Error Condition:
+                   // modified by MADobbs@lbl.gov April 21, 2003
+                   // we distinguish between the first parent and all parents
+                   //  being incorrect
+                   else if (j==ifirst) { first_is_acceptable = false; break; }
+                   else { last_is_acceptable = false; break; }
+               }
+           }
+           // if any one of the mothers gave a bad outcome, zero all mothers
+           //BPK - Atlas ->
+           // do not disconnect photons (most probably from photos)
+           if ( HEPEVT_Wrapper::id(i) == 22 && HEPEVT_Wrapper::status(i) == 1 )
+             { first_is_acceptable = true; }
+           //BPK - Atlas -<
+           if ( !first_is_acceptable ) {
+             HEPEVT_Wrapper::set_parents( i, 0, 0 );
+           } else if ( !last_is_acceptable ) {
+             HEPEVT_Wrapper::set_parents(i,HEPEVT_Wrapper::first_parent(i),0);
+           }
+       }
+       // Note: it's important to finish the mother loop, before
+       // starting the daughter loop ... since many mother relations
+       // will be zero'd which will validate the daughters.... i.e.,
+       // we want relationships like:
+       //      IHEP    ID      IDPDG IST MO1 MO2 DA1 DA2
+       //        27 TQRK           6   3  26  26  30  30
+       //        30 TQRK           6 155  26  11  31  32
+       // to come out right.
+
+       for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+           // loop over daughters
+           int ifirst = HEPEVT_Wrapper::first_child(i);
+           int ilast = HEPEVT_Wrapper::last_child(i);
+           if ( ilast==0 ) ilast = HEPEVT_Wrapper::first_child(i);
+           bool is_acceptable = true;
+           // check for out of range.
+           if ( ifirst<=i || ifirst<0 ) is_acceptable = false;
+           if ( ilast<=i || ilast<ifirst || ilast<0 ) is_acceptable = false;
+           if ( is_acceptable ) {
+               for ( int j = ifirst; j<=ilast; j++ ) {
+                   // these are the acceptable outcomes
+                   if ( HEPEVT_Wrapper::first_parent(j)==i ) {;} 
+                   else if ( HEPEVT_Wrapper::first_parent(j) <=i && 
+                             HEPEVT_Wrapper::last_parent(j) >=i ) {;}
+                   else if ( HEPEVT_Wrapper::first_parent(j) ==0 && 
+                             HEPEVT_Wrapper::last_parent(j) ==0 ) {;}
+                   else { is_acceptable = false; } // error condition 
+               }
+           }
+           // if any one of the children gave a bad outcome, zero all children
+           if ( !is_acceptable ) HEPEVT_Wrapper::set_children( i, 0, 0 );
+       }
+
+       // fixme
+
+       for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+           HEPEVT_Wrapper::set_id(
+               i, translate_herwig_to_pdg_id(HEPEVT_Wrapper::id(i)) );
+       }
+
+
+       if ( m_no_gaps_in_barcodes ) remove_gaps_in_hepevt();
+    }
+
+    void IO_HERWIG::remove_gaps_in_hepevt() const {
+       /// in this scenario, we do not allow there to be zero-ed
+       /// entries in the HEPEVT common block, and so be reshuffle
+       /// the common block, removing the zeero-ed entries as we
+       /// go and making sure we keep the mother/daughter
+       /// relationships appropriate
+       std::vector<int> mymap(HEPEVT_Wrapper::number_entries()+1,0);
+       int ilast = 0;
+       for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) {
+           if (HEPEVT_Wrapper::status(i)==0 && HEPEVT_Wrapper::id(i)==0) {
+               // we remove all entries for which stat=0, id=0
+               mymap[i]=0;
+           } else {
+               ilast += 1;
+               if ( ilast != i ) {
+                   HEPEVT_Wrapper::set_status(ilast, 
+                                              HEPEVT_Wrapper::status(i) );
+                   HEPEVT_Wrapper::set_id(ilast, HEPEVT_Wrapper::id(i) );
+                   HEPEVT_Wrapper::set_parents(
+                       ilast, 
+                       HEPEVT_Wrapper::first_parent(i),
+                       HEPEVT_Wrapper::last_parent(i) );
+                   HEPEVT_Wrapper::set_children(
+                       ilast, 
+                       HEPEVT_Wrapper::first_child(i),
+                       HEPEVT_Wrapper::last_child(i) );
+                   HEPEVT_Wrapper::set_momentum(
+                       ilast, 
+                       HEPEVT_Wrapper::px(i), HEPEVT_Wrapper::py(i),
+                       HEPEVT_Wrapper::pz(i), HEPEVT_Wrapper::e(i)  );
+                   HEPEVT_Wrapper::set_mass(ilast, HEPEVT_Wrapper::m(i) );
+                   HEPEVT_Wrapper::set_position(
+                       ilast, HEPEVT_Wrapper::x(i),HEPEVT_Wrapper::y(i),
+                       HEPEVT_Wrapper::z(i),HEPEVT_Wrapper::t(i) );
+               }
+               mymap[i]=ilast;
+           }
+       }
+
+       // M. Dobbs (from Borut) - April 26, to fix tauolo/herwig past
+       // the end problem with daughter pointers: 
+       // HEPEVT_Wrapper::set_number_entries( ilast );
+
+       // Finally we need to re-map the mother/daughter pointers.      
+       for ( int i=1; i <=ilast; i++ ) {
+
+           HEPEVT_Wrapper::set_parents(
+               i, 
+               mymap[HEPEVT_Wrapper::first_parent(i)],
+               mymap[HEPEVT_Wrapper::last_parent(i)] );
+           HEPEVT_Wrapper::set_children(
+               i, 
+               mymap[HEPEVT_Wrapper::first_child(i)],
+               mymap[HEPEVT_Wrapper::last_child(i)] );
+       }
+       // M. Dobbs (from Borut, part B) - April 26, to fix tauolo/herwig past
+       // the end problem with daughter pointers: 
+       HEPEVT_Wrapper::set_number_entries( ilast );
+    }
+
+    void IO_HERWIG::zero_hepevt_entry( int i ) const {
+      if ( i <=0 || i > HepMC::HEPEVT_Wrapper::max_number_entries() ) return;
+      HEPEVT_Wrapper::set_status( i, 0 );
+      HEPEVT_Wrapper::set_id( i, 0 );
+      HEPEVT_Wrapper::set_parents( i, 0, 0 );
+      HEPEVT_Wrapper::set_children( i, 0, 0 );
+      HEPEVT_Wrapper::set_momentum( i, 0, 0, 0, 0 );
+      HEPEVT_Wrapper::set_mass( i, 0 );
+      HEPEVT_Wrapper::set_position( i, 0, 0, 0, 0 );
+    }
+
+    int IO_HERWIG::translate_herwig_to_pdg_id( int id ) const {
+       /// This routine is copied from Lynn Garren's stdhep 5.01.
+       ///   see http:///cepa.fnal.gov/psm/stdhep/
+                                              // example -9922212
+       int hwtran = id;                       //         -9922212
+       int ida    = abs(id);                  //          9922212
+       int j1     = ida%10;                   //                2
+       int i1     = (ida/10)%10;              //               1
+       int i2     = (ida/100)%10;             //              2
+       int i3     = (ida/1000)%10;            //             2
+       //int i4     =(ida/10000)%10;          //            2
+       //int i5     =(ida/100000)%10;         //           9
+       //int k99    = (ida/100000)%100;       //          9
+       int ksusy  = (ida/1000000)%10;         //         0
+       //int ku     = (ida/10000000)%10;      //        0
+       int kqn    = (ida/1000000000)%10;      //       0
+
+       if ( kqn==1 ) {
+           //  ions not recognized
+           hwtran=0;
+           if ( m_print_inconsistency_errors ) {
+               std::cerr << "IO_HERWIG::translate_herwig_to_pdg_id " << id
+                         << "nonallowed ion" << std::endl;
+           }
+       } 
+       else if (ida < 100) {
+           // Higgs, etc.
+           hwtran = m_herwig_to_pdg_id[ida];
+           if ( id < 0 ) hwtran *= -1;
+           // check for illegal antiparticles
+           if ( id < 0 ) {
+               if ( hwtran>=-99 && hwtran<=-81) hwtran=0;
+               if ( m_no_antiparticles.count(hwtran) ) hwtran=0;
+           }
+       }
+       else if ( ksusy==1 || ksusy==2 ) { ; }
+       //  SUSY
+       else if ( i1!=0 && i3!=0 && j1==2 ) {;}
+       // spin 1/2 baryons
+       else if ( i1!=0 && i3!=0 && j1==4 ) {;}
+       // spin 3/2 baryons
+       else if ( i1!=0 && i2!=0 && i3==0 ) {
+           // mesons 
+           // check for illegal antiparticles
+           if ( i1==i2 && id<0) hwtran=0;
+       } 
+       else if ( i2!=0 && i3!=0 && i1==0 ) {;}
+       // diquarks
+       else {
+           // undefined
+           hwtran=0;
+       }
+
+       // check for illegal anti KS, KL
+       if ( id==-130 || id==-310 ) hwtran=0;
+
+       if ( hwtran==0 && ida!=0 && m_print_inconsistency_errors ) {
+           std::cerr 
+               << "IO_HERWIG::translate_herwig_to_pdg_id HERWIG particle " 
+               << id << " translates to zero." << std::endl;
+       }
+
+       return hwtran;
+    }
+
+} // HepMC
+
+
+
+
diff --git a/TEvtGen/HepMC/IO_HERWIG.h b/TEvtGen/HepMC/IO_HERWIG.h
new file mode 100644 (file)
index 0000000..8bfcc75
--- /dev/null
@@ -0,0 +1,160 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_IO_HERWIG_H
+#define HEPMC_IO_HERWIG_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, October 2002, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// IO class for reading the (non-standard) HEPEVT common block from 
+//  the Herwig monte carlo program.
+// Notes:
+//   - The HERWIG HEPEVT common block is non-standard, primarily because it 
+//     contains some color flow information. When you call IO_HERWIG, the 
+//     HEPEVT common block is transformed to the standard. THIS CHANGES THE
+//     CONTENT of HEPEVT!.
+//   - The HERWIG HEPEVT common block has some EXTRA non-physical ENTRIES 
+//     (such as CMS frame, HARD subprocess, and CONE).
+//     These are removed by IO_HERWIG. Thus the HepMC event will APPEAR
+//     to have fewer particles in it that herwig did.
+//     There is a switch m_no_gaps_in_barcodes. For
+//       true  - then the extra particles are removed from HEPEVT, with 
+//               the result that the HepMC barcodes will be sequential, with 
+//               no gaps.
+//       false - the barcodes will correspond directly to the HEPEVT index, but
+//               there will be gaps ... ie some barcodes will be unassigned.
+//       this switch requested by I Hinchliffe, October 31, 2002
+//   - some of the Herwig GLUON SPLITTING products are not properly documented
+//     in hepevt. I was unable to repair this in a simple and robust way. 
+//     Therefore some of the gluon splitting products will be orphans 
+//     in the HepMC output. 
+//   - Herwig uses      HEPEVT_Wrapper::set_max_number_entries(4000);
+//                     HEPEVT_Wrapper::set_sizeof_real(8);
+//     which are the defaults for HEPEVT_Wrapper.
+//////////////////////////////////////////////////////////////////////////
+//
+
+#include <set>
+#include <vector>
+#include "HepMC/IO_BaseClass.h"
+#include "HepMC/HEPEVT_Wrapper.h"
+
+namespace HepMC {
+
+    class GenEvent;
+    class GenVertex;
+    class GenParticle;
+
+    //! IO_HERWIG is used to get Herwig information
+
+    ///
+    /// \class  IO_HERWIG
+    /// IO class for reading the HEPEVT common block from 
+    ///  the Herwig monte carlo program.
+    ///
+    class IO_HERWIG : public IO_BaseClass {
+    public:
+       IO_HERWIG();
+       virtual           ~IO_HERWIG();
+        /// get the next event
+       bool              fill_next_event( GenEvent* );
+        /// write to ostr
+       void              print( std::ostream& ostr = std::cout ) const;
+        /// this information is dubious
+       double            interfaces_to_version_number() const {return 6.400;}
+               
+       // see comments below for these switches.
+       /// default is true
+       bool              print_inconsistency_errors() const;
+       /// decide whether or not to print inconsistency errors
+       void              set_print_inconsistency_errors( bool b = true );
+
+        /// ask how to deal with extra non-physical pseudo particles
+       bool              no_gaps_in_barcodes() const 
+                            { return m_no_gaps_in_barcodes; }
+       /// The HERWIG HEPEVT common block has some EXTRA non-physical ENTRIES 
+       /// (such as CMS frame, HARD subprocess, and CONE).
+       /// These are removed by IO_HERWIG. Thus the HepMC event will APPEAR
+       /// to have fewer particles in it that herwig did.
+       /// There is a switch m_no_gaps_in_barcodes. For
+       ///   true  - then the extra particles are removed from HEPEVT, with 
+       ///             the result that the HepMC barcodes will be sequential, with 
+       ///             no gaps.
+       ///   false - the barcodes will correspond directly to the HEPEVT index, but
+       ///             there will be gaps ... ie some barcodes will be unassigned.
+       ///   this switch requested by I Hinchliffe, October 31, 2002
+       void              set_no_gaps_in_barcodes( bool a ) 
+                            { m_no_gaps_in_barcodes=a; }
+
+    protected: // for internal use only
+        /// default is true
+       bool              trust_both_mothers_and_daughters() const;
+        /// default is false
+       bool              trust_mothers_before_daughters() const;
+        /// define mother daughter trust rules
+       void              set_trust_mothers_before_daughters( bool b = true );
+        /// define mother daughter trust rules
+       void              set_trust_both_mothers_and_daughters( bool b = false );
+
+        /// make a particle
+       GenParticle* build_particle( int index );
+       /// make a production vertex
+       void         build_production_vertex( 
+           int i,std::vector<GenParticle*>& hepevt_particle, GenEvent* evt );
+       /// make a decay vertex
+       void         build_end_vertex( 
+           int i, std::vector<GenParticle*>& hepevt_particle, GenEvent* evt );
+        /// find this particle in the map
+       int          find_in_map( 
+           const std::map<GenParticle*,int>& m, GenParticle* p) const;
+
+        /// make the HERWIG HEPEVT common block look like the standard
+       void repair_hepevt() const;
+       /// deal with artifacts of repairing HEPEVT
+       void remove_gaps_in_hepevt() const;
+       /// zero out a HEPEVT pseudo particle
+       void zero_hepevt_entry( int i ) const;
+       /// translate particle ID
+       int  translate_herwig_to_pdg_id( int i ) const;
+
+    private: // following are not implemented for Herwig
+       virtual void write_event( const GenEvent* ){}
+
+    private: // use of copy constructor is not allowed
+       IO_HERWIG( const IO_HERWIG& ) : IO_BaseClass() {}
+
+    private: // data members
+       bool              m_trust_mothers_before_daughters;
+       bool              m_trust_both_mothers_and_daughters;
+       bool              m_print_inconsistency_errors; 
+       bool              m_no_gaps_in_barcodes;
+       std::vector<int>  m_herwig_to_pdg_id;
+       std::set<int>     m_no_antiparticles;
+    };
+
+    ////////////////////////////
+    // INLINES access methods //
+    ////////////////////////////
+    inline bool IO_HERWIG::trust_both_mothers_and_daughters() const 
+    { return m_trust_both_mothers_and_daughters; }
+       
+    inline bool IO_HERWIG::trust_mothers_before_daughters() const 
+    { return m_trust_mothers_before_daughters; }
+
+    inline bool IO_HERWIG::print_inconsistency_errors() const
+    { return m_print_inconsistency_errors; }
+
+    inline void IO_HERWIG::set_trust_both_mothers_and_daughters( bool b )
+    { m_trust_both_mothers_and_daughters = b; }
+
+    inline void IO_HERWIG::set_trust_mothers_before_daughters( bool b )
+    { m_trust_mothers_before_daughters = b; }
+
+    inline void IO_HERWIG::set_print_inconsistency_errors( bool b  )
+    { m_print_inconsistency_errors = b; }
+
+} // HepMC
+
+#endif  // HEPMC_IO_HERWIG_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/IteratorRange.h b/TEvtGen/HepMC/IteratorRange.h
new file mode 100644 (file)
index 0000000..ece3536
--- /dev/null
@@ -0,0 +1,22 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_ITERATOR_RANGE_H
+#define HEPMC_ITERATOR_RANGE_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// Iterator ranges used by GenVertex
+//////////////////////////////////////////////////////////////////////////
+
+
+namespace HepMC {
+
+    /// type of iteration
+    enum IteratorRange { parents, children, family, 
+                        ancestors, descendants, relatives };
+} // HepMC
+
+#endif  // HEPMC_ITERATOR_RANGE_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/PdfInfo.cc b/TEvtGen/HepMC/PdfInfo.cc
new file mode 100644 (file)
index 0000000..1dc2bc1
--- /dev/null
@@ -0,0 +1,121 @@
+//--------------------------------------------------------------------------
+//
+// PdfInfo.cc
+// Author:  Lynn Garren
+//
+// Implement operator >> and operator <<
+//
+// ----------------------------------------------------------------------
+
+#include <iostream>
+#include <ostream>
+#include <istream>
+#include <sstream>
+
+#include "HepMC/PdfInfo.h"
+#include "HepMC/StreamHelpers.h"
+#include "HepMC/IO_Exception.h"
+
+namespace HepMC {
+
+std::ostream & operator << ( std::ostream & os, PdfInfo const * pdf)
+{
+    if ( !os ) {
+       std::cerr << "operator << for PdfInfo: !os, "
+                 << " setting badbit" << std::endl;
+       os.clear(std::ios::badbit); 
+       return os;
+    }
+    os << 'F';
+    // PdfInfo* is set to 0 by default
+    if ( !pdf ) {
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os, 0. );
+       detail::output( os, 0. );
+       detail::output( os, 0. );
+       detail::output( os, 0. );
+       detail::output( os, 0. );
+       detail::output( os, 0 );
+       detail::output( os, 0 );
+       detail::output( os,'\n');
+       return os;
+    }
+    //
+    detail::output( os, pdf->id1() );
+    detail::output( os, pdf->id2() );
+    detail::output( os, pdf->x1() );
+    detail::output( os, pdf->x2() );
+    detail::output( os, pdf->scalePDF() );
+    detail::output( os, pdf->pdf1() );
+    detail::output( os, pdf->pdf2() );
+    detail::output( os, pdf->pdf_id1() );
+    detail::output( os, pdf->pdf_id2() );
+    detail::output( os,'\n');
+
+    return os;
+}
+
+std::istream & operator >> (std::istream & is, PdfInfo * pdf)
+{
+    // make sure the stream is valid
+    if ( !is ) {
+       std::cerr << "PdfInfo input stream setting badbit." << std::endl;
+       is.clear(std::ios::badbit); 
+       return is;
+    } 
+    //
+    // get the PdfInfo line
+    std::string line;
+    std::getline(is,line);
+    std::istringstream iline(line);
+    std::string firstc;
+    iline >> firstc;
+    // test to be sure the next entry is of type "F" then ignore it
+    if ( firstc != "F" ) {
+       std::cerr << "PdfInfo input stream invalid line type: " 
+                 << firstc << std::endl;
+       // this is non-recoverable, so throw here 
+       throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    } 
+    // read values into temp variables, then create a new PdfInfo object
+    int id1 =0, id2 =0, pdf_id1=0, pdf_id2=0;
+    double  x1 = 0., x2 = 0., scale = 0., pdf1 = 0., pdf2 = 0.; 
+    iline >> id1 ;
+    if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    // check now for empty PdfInfo line
+    if( id1 == 0 ) return is;
+    // continue reading
+    iline >> id2 ;
+    if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    iline >> x1 ;
+    if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    iline >> x2 ;
+    if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    iline >> scale ;
+    if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    iline >> pdf1 ;
+    if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    iline >> pdf2;
+    if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    // check to see if we are at the end of the line
+    if( !iline.eof() ) {
+        iline >> pdf_id1 ;
+        if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+       iline >> pdf_id2;
+        if(!iline) throw IO_Exception("PdfInfo input stream encounterd invalid data");
+    }
+    pdf->set_id1( id1 );
+    pdf->set_id2( id2 );
+    pdf->set_pdf_id1( pdf_id1 );
+    pdf->set_pdf_id2( pdf_id2 );
+    pdf->set_x1( x1 );
+    pdf->set_x2( x2 );
+    pdf->set_scalePDF( scale );
+    pdf->set_pdf1( pdf1 );
+    pdf->set_pdf2( pdf2 );
+
+    return is;
+}
+
+} // HepMC
diff --git a/TEvtGen/HepMC/PdfInfo.h b/TEvtGen/HepMC/PdfInfo.h
new file mode 100644 (file)
index 0000000..a554c22
--- /dev/null
@@ -0,0 +1,218 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_PDF_INFO_H
+#define HEPMC_PDF_INFO_H
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, July 2006
+//
+// Additional PDF information
+//////////////////////////////////////////////////////////////////////////
+
+namespace HepMC {
+
+//! The PdfInfo class stores PDF information
+
+///
+/// \class  PdfInfo
+/// HepMC::PdfInfo stores additional PDF information for a GenEvent.
+/// Creation and use of this information is optional. 
+///
+///   - int id1;       // flavour code of first parton
+///   - int id2;       // flavour code of second parton 
+///   - int pdf_id1;   // LHAPDF set id of first parton (zero by default)
+///   - int pdf_id2;   // LHAPDF set id of second parton  (zero by default)
+///   - double x1;     // fraction of beam momentum carried by first parton ("beam side") 
+///   - double x2;     // fraction of beam momentum carried by second parton ("target side") 
+///   - double scalePDF;  //  Q-scale used in evaluation of PDF's   (in GeV) 
+///   - double pdf1;   // PDF (id1, x1, Q) 
+///   - double pdf2;   // PDF (id2, x2, Q)   
+/// 
+/// Input parton flavour codes id1 & id2 are expected to obey the 
+/// PDG code conventions, especially g = 21.
+/// 
+/// The contents of pdf1 and pdf2 are expected to be x*f(x).
+/// The LHAPDF set ids are the entries in the first column of
+/// http:///projects.hepforge.org/lhapdf/PDFsets.index
+///
+class PdfInfo {
+
+public:
+  // ---  birth/death:
+  //
+  /// default constructor
+  PdfInfo()
+    : m_id1(0), 
+      m_id2(0),
+      m_pdf_id1(0),
+      m_pdf_id2(0),
+      m_x1(0),
+      m_x2(0),
+      m_scalePDF(0),
+      m_pdf1(0),
+      m_pdf2(0)
+    {}
+
+  /// all values EXCEPT pdf_id1 and pdf_id2 must be provided
+  PdfInfo( int i1, int i2, double x1, double x2,
+           double q, double p1, double p2,
+          int pdf_id1 = 0, int pdf_id2 = 0 );
+
+  ~PdfInfo() {}
+    
+  // ---  copying:
+  //
+  PdfInfo( PdfInfo const & orig );     //!< copy constructor
+  PdfInfo &  operator = ( PdfInfo const & rhs ); //!< make a copy
+  void swap( PdfInfo & other );        //!< swap two PdfInfo objects
+
+  // ---  equivalence:
+  //
+  bool    operator==( const PdfInfo& ) const; //!< check for equality
+  bool    operator!=( const PdfInfo& ) const; //!< check for inequality
+
+  // ---  accessors:
+    /// flavour code of first parton
+    int   id1()                   const { return m_id1; }
+    /// flavour code of second parton 
+    int   id2()                   const { return m_id2; }
+    /// LHAPDF set id of first parton
+    int   pdf_id1()                   const { return m_pdf_id1; }
+    /// LHAPDF set id of second parton
+    int   pdf_id2()                   const { return m_pdf_id2; }
+    /// fraction of beam momentum carried by first parton ("beam side") 
+    double x1()                   const { return m_x1; } 
+    /// fraction of beam momentum carried by second parton ("target side") 
+    double x2()                   const { return m_x2; }
+    ///  Q-scale used in evaluation of PDF's   (in GeV) 
+    double scalePDF()             const { return m_scalePDF;  }
+    /// PDF (id1, x1, Q) - x*f(x)
+    double pdf1()                 const { return m_pdf1; }
+    /// PDF (id2, x2, Q) - x*f(x)
+    double pdf2()                 const { return m_pdf2; }
+
+    /// verify that the instance contains non-zero information
+    bool  is_valid()                     const;
+
+  // ---  mutators:
+    /// set flavour code of first parton
+    void   set_id1(const int &i)              { m_id1=i; }
+    /// set flavour code of second parton 
+    void   set_id2(const int &i)              { m_id2=i; }
+    /// set LHAPDF set id of first parton
+    void   set_pdf_id1(const int &i)              { m_pdf_id1=i; }
+    /// set LHAPDF set id of second parton 
+    void   set_pdf_id2(const int &i)              { m_pdf_id2=i; }
+    /// set fraction of beam momentum carried by first parton ("beam side") 
+    void   set_x1(const double &f)            { m_x1=f; }
+    /// set fraction of beam momentum carried by second parton ("target side") 
+    void   set_x2(const double &f)            { m_x2=f; }
+    /// set Q-scale used in evaluation of PDF's   (in GeV) 
+    void   set_scalePDF(const double &f)      { m_scalePDF=f;  }
+    /// set x*f(x) of first parton
+    void   set_pdf1(const double &f)          { m_pdf1=f; }
+    /// set x*f(x) of second parton
+    void   set_pdf2(const double &f)          { m_pdf2=f; }
+
+private: // data members
+    int   m_id1; 
+    int   m_id2; 
+    int   m_pdf_id1; 
+    int   m_pdf_id2; 
+    double m_x1;
+    double m_x2;
+    double m_scalePDF; 
+    double m_pdf1;
+    double m_pdf2;
+
+};
+
+// Free Functions
+
+// IO
+std::ostream & operator << (std::ostream &, PdfInfo const *);
+std::istream & operator >> (std::istream &, PdfInfo *);
+
+// inline operators
+inline PdfInfo::PdfInfo( int i1, int i2, double xin1, double xin2,
+                        double q, double p1, double p2,
+                        int pid1, int pid2 )
+    : m_id1(i1), 
+      m_id2(i2),
+      m_pdf_id1(pid1),
+      m_pdf_id2(pid2),
+      m_x1(xin1),
+      m_x2(xin2),
+      m_scalePDF(q),
+      m_pdf1(p1),
+      m_pdf2(p2)
+   {}
+
+inline PdfInfo::PdfInfo( PdfInfo const & orig )
+    : m_id1(orig.m_id1), 
+      m_id2(orig.m_id2),
+      m_pdf_id1(orig.m_pdf_id1), 
+      m_pdf_id2(orig.m_pdf_id2),
+      m_x1(orig.m_x1),
+      m_x2(orig.m_x2),
+      m_scalePDF(orig.m_scalePDF),
+      m_pdf1(orig.m_pdf1),
+      m_pdf2(orig.m_pdf2)
+   {}
+
+inline PdfInfo &  PdfInfo::operator = ( PdfInfo const & rhs ) 
+{
+  PdfInfo temp( rhs );
+  swap( temp );
+  return *this;
+}
+
+inline void PdfInfo::swap( PdfInfo & other ) 
+{
+  std::swap(m_id1, other.m_id1); 
+  std::swap(m_id2, other.m_id2);
+  std::swap(m_pdf_id1, other.m_pdf_id1); 
+  std::swap(m_pdf_id2, other.m_pdf_id2);
+  std::swap(m_x1, other.m_x1);
+  std::swap(m_x2, other.m_x2);
+  std::swap(m_scalePDF, other.m_scalePDF);
+  std::swap(m_pdf1, other.m_pdf1);
+  std::swap(m_pdf2, other.m_pdf2);
+}
+
+inline bool    PdfInfo::operator==( const PdfInfo& a ) const
+{
+    /// equality requires that each member match
+    return (    a.id1() == this->id1() 
+             && a.id2() == this->id2() 
+             && a.pdf_id1() == this->pdf_id1() 
+             && a.pdf_id2() == this->pdf_id2() 
+            && a.x1() == this->x1() 
+            && a.x2() == this->x2()
+            && a.scalePDF() == this->scalePDF() 
+            && a.pdf1() == this->pdf1()
+            && a.pdf2() == this->pdf2() );
+}
+
+inline bool    PdfInfo::operator!=( const PdfInfo& a ) const
+{
+    /// any nonmatching member generates inequality
+    return !( a == *this );
+}
+
+inline bool  PdfInfo::is_valid() const
+{
+    if( m_id1 != 0 ) return true;
+    if( m_id2 != 0 ) return true;
+    if( m_pdf_id1 != 0 ) return true;
+    if( m_pdf_id2 != 0 ) return true;
+    if( m_x1 != 0 ) return true;
+    if( m_x2 != 0 ) return true;
+    if( m_scalePDF != 0 ) return true;
+    if( m_pdf1 != 0 ) return true;
+    if( m_pdf2 != 0 ) return true;
+    return false;
+}
+
+} // HepMC
+
+#endif  // HEPMC_PDF_INFO_H
diff --git a/TEvtGen/HepMC/Polarization.cc b/TEvtGen/HepMC/Polarization.cc
new file mode 100644 (file)
index 0000000..3f33705
--- /dev/null
@@ -0,0 +1,136 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999
+//
+// Polarization object for a particle. All angles are in radians.
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/Polarization.h"
+
+namespace HepMC {
+
+    Polarization::Polarization( )
+    : m_theta( 0. ),
+      m_phi( 0. ),
+      m_defined( false )
+    { }
+
+    Polarization::Polarization( double theta, double phi )
+    : m_theta( valid_theta(theta) ),
+      m_phi  ( valid_phi(phi) ),
+      m_defined( true )
+    { }
+
+    Polarization::Polarization( const Polarization& inpolar )
+    : m_theta( valid_theta( inpolar.theta() ) ),
+      m_phi  ( valid_phi(   inpolar.phi()   ) ),
+      m_defined( inpolar.is_defined() )
+    { }
+
+    Polarization::Polarization( const ThreeVector& vec3in ) 
+    : m_theta( valid_theta( vec3in.theta() ) ),
+      m_phi  ( valid_phi(   vec3in.phi()   ) ),
+      m_defined( true )
+    { }
+
+    void Polarization::swap( Polarization & other)
+    {
+       std::swap( m_theta, other.m_theta );
+       std::swap( m_phi,   other.m_phi   );
+       std::swap( m_defined, other.m_defined );
+    }
+
+    Polarization& Polarization::operator=( const Polarization& inpolar ) {
+        /// best practices implementation
+       Polarization tmp( inpolar );
+       swap( tmp ); 
+       return *this;
+    }
+
+    void Polarization::print( std::ostream& ostr ) const {
+       ostr << "Polarization: " << *this << std::endl;
+    }
+
+    ////////////////////
+    // access methods //
+    ////////////////////
+
+    ThreeVector  Polarization::normal3d() const {
+       // unit Hep3Vector for easy manipulation
+       ThreeVector outvec(0,0,1);      // makes unit vector along Z
+       outvec.setTheta( theta() ); // sets phi keeping mag and theta constant
+       outvec.setPhi( phi() );     // sets theta keeping mag and phi constant
+       return outvec;
+    }
+
+    double Polarization::set_theta( double theta ) {
+       /// Theta is restricted to be between 0 --> pi
+       /// if an out of range value is given, it is translated to this range.
+       return m_theta = valid_theta( theta );
+    }
+
+    double Polarization::set_phi( double phi ) {
+       /// Phi is restricted to be between 0 --> 2pi
+       /// if an out of range value is given, it is translated to this range.
+       return m_phi = valid_phi( phi );
+    }
+    
+    bool Polarization::is_defined( ) const {
+        return m_defined;
+    }
+    
+    void Polarization::set_undefined() {
+        m_defined = false;
+       m_theta = 0.;
+       m_phi = 0.;
+    }
+
+    void Polarization::set_theta_phi( double theta, double phi ) {
+       set_theta( theta );
+       set_phi( phi ) ;
+       m_defined = true;
+    }
+
+    ThreeVector Polarization::set_normal3d( const ThreeVector& vec3in ) {
+       set_theta( vec3in.theta() );
+       set_phi( vec3in.phi() );
+       m_defined = true;
+       return vec3in;
+    }
+
+    /////////////////////
+    // private methods //
+    /////////////////////
+
+    double Polarization::valid_theta( double theta ) {
+        // this is just absolute value.
+       theta = ( theta>0 ? theta : -theta );
+       // translate to 0 < theta < 2pi
+       theta = ( theta/(2*HepMC_pi) - int(theta/(2*HepMC_pi)) ) 
+               * 2*HepMC_pi;
+        // now translate to 0 < theta < pi
+       if ( theta > HepMC_pi ) theta = 2*HepMC_pi - theta;
+       return theta;
+    }
+
+    double Polarization::valid_phi( double phi ) {
+       //
+       // translate to -2pi < phi < 2pi
+       phi = ( phi/(2*HepMC_pi) - int(phi/(2*HepMC_pi)) ) * 2*HepMC_pi;
+       // translates to 0 < phi < 2pi
+       if ( phi < 0 ) phi = 2*HepMC_pi + phi;
+       return phi;
+    }
+
+    /////////////
+    // Friends //
+    /////////////
+
+    /// write theta and phi to the output stream
+    std::ostream& operator<<( std::ostream& ostr, const Polarization& polar ) {
+       return ostr << "(" << polar.theta() 
+                   << ","  << polar.phi() << ")";
+    }
+    
+} // HepMC
+
+
diff --git a/TEvtGen/HepMC/Polarization.h b/TEvtGen/HepMC/Polarization.h
new file mode 100644 (file)
index 0000000..cc483be
--- /dev/null
@@ -0,0 +1,112 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_POLARIZATION_H
+#define HEPMC_POLARIZATION_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, September 1999, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// Polarization object for a particle. All angles are in radians.
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/SimpleVector.h"
+#include <iostream>
+#include <cmath>
+
+namespace HepMC {
+
+    static const double HepMC_pi = 3.14159265358979323846;  // copy of pi from CLHEP
+    
+    //! The Polarization class stores theta and phi for a GenParticle
+
+    ///
+    /// \class  Polarization
+    /// HepMC::Polarization stores a particle's theta and phi in radians.
+    /// Use of this information is optional. 
+    /// By default, the polarization is set to zero.
+    ///
+    class Polarization {
+
+        /// print polarization information
+       friend std::ostream& operator<<( std::ostream&, const Polarization& );
+
+    public:
+        /// default constructor
+       Polarization( );
+       /// constructor requiring at least one value
+       Polarization( double theta, double phi = 0 );
+       /// construct from another polarization object
+       Polarization( const Polarization& inpolar );
+       /// construct using the polar and azimuthal angles from a ThreeVector
+       Polarization( const ThreeVector& vec3in );
+       virtual       ~Polarization() {}
+
+        /// swap
+        void swap( Polarization & other);
+       /// make a copy
+       Polarization& operator=( const Polarization& inpolar );
+       /// equality requires that theta and phi are equal
+       bool          operator==( const Polarization& ) const;
+       /// inequality results if either theta or phi differ
+       bool          operator!=( const Polarization& ) const;
+
+        /// print theta and phi
+       void          print( std::ostream& ostr = std::cout ) const;
+    
+       ////////////////////
+       // access methods //
+       ////////////////////
+       double        theta() const;    //!< returns polar angle in radians
+       double        phi() const;      //!< returns azimuthal angle in radians
+       ThreeVector   normal3d() const; //!< unit 3 vector for easy manipulation
+       bool          is_defined() const;   //!< returns true if the Polarization has been defined
+
+        /// set polar angle in radians 
+       double        set_theta( double theta );
+        /// set azimuthal angle in radians 
+       double        set_phi( double phi );
+       /// set both polar and azimuthal angles in radians
+       void          set_theta_phi( double theta, double phi );
+       /// sets polarization according to direction of 3 vec
+       ThreeVector   set_normal3d( const ThreeVector& vec3in ); 
+       /// declares the Polarization as undefined and zeros the values
+       void          set_undefined();
+
+    private:
+       /// private method to return a polar angle in the correct range
+       double valid_theta( double theta );
+       /// private method to return an azimuthal angle in the correct range
+       double valid_phi( double phi );
+
+    private:
+       double m_theta; //polar angle of polarization in radians 0< theta <pi
+       double m_phi;   //azimuthal angle of polarization in rad. 0< phi <2pi
+       bool   m_defined; //used to flag if the Polarization has been defined
+    };
+
+    ///////////////////////////
+    // INLINE Access Methods //
+    ///////////////////////////
+
+    inline double Polarization::theta() const { return m_theta; }
+    inline double Polarization::phi() const { return m_phi; }
+
+    ///////////////////////////
+    // INLINE Operators      //
+    ///////////////////////////
+
+    inline bool Polarization::operator==( const Polarization& a ) const 
+    {
+       return ( a.theta() == this->theta() && a.phi() == this->phi() && a.is_defined() == this->is_defined() );
+    }
+
+    inline bool Polarization::operator!=(const Polarization& a ) const 
+    {
+       return !( a == *this );
+    }
+
+} // HepMC
+
+#endif  // HEPMC_POLARIZATION_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/PythiaWrapper.h b/TEvtGen/HepMC/PythiaWrapper.h
new file mode 100644 (file)
index 0000000..ad361bc
--- /dev/null
@@ -0,0 +1,47 @@
+//--------------------------------------------------------------------------
+#ifndef PYTHIA_WRAPPER_H
+#define PYTHIA_WRAPPER_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, November 2000
+// Just a link to whichever pythia version is current.
+//////////////////////////////////////////////////////////////////////////
+
+// This pre-compiler directive is included (2002-01-16) to allow compatibility
+// with MS Visual C++, which interfaces to fortran in a different manner.
+// For it to work you need to define the _WIN32 variable when compiling.
+#ifdef _WIN32 // Platform: Windows MS Visual C++
+#include "HepMC/PythiaWrapper6_4_WIN32.h"
+
+#else // Generic version, tested on Linux ecgs/gcc
+#include "HepMC/PythiaWrapper6_4.h"
+
+#endif // Platform
+
+#include <cmath>
+
+#include "HepMC/GenCrossSection.h"
+
+namespace HepMC {
+
+/// calculate the Pythia cross section and statistical error
+inline GenCrossSection getPythiaCrossSection() {
+
+  GenCrossSection xsec;
+  // xsec(0,2) contains the sum of differential cross sections in mb
+  // ngen(0,2) contains the combined number of generated events
+  // convert to pb (HepMC convention)
+  double xsecval = pyint5.xsec[2][0] * 1.0e9;
+  // statistical error
+  double xsecerr = xsecval / std::sqrt( (double)pyint5.ngen[2][0] );
+  // set and return cross section information
+  xsec.set_cross_section(xsecval, xsecerr);
+  return xsec;
+}
+
+
+
+} // HepMC
+
+#endif  // PYTHIA_WRAPPER_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/PythiaWrapper6_4.h b/TEvtGen/HepMC/PythiaWrapper6_4.h
new file mode 100644 (file)
index 0000000..228c1cf
--- /dev/null
@@ -0,0 +1,281 @@
+//--------------------------------------------------------------------------
+#ifndef PYTHIA_WRAPPER_6_H
+#define PYTHIA_WRAPPER_6_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, November 2000
+// Version 6.200 update October 2001
+// Wrapper for FORTRAN version of Pythia 
+// This wrapper is NOT intended as a part of HepMC - it is only supplied
+// for your convenience.
+//////////////////////////////////////////////////////////////////////////
+// 
+// A simple example of calling Pythia from C++ using this header file is
+// given in test/test_PythiaWrapper.cxx
+//
+// Note the pyhepc routine is used by Pythia to fill
+// the HEPEVT common block uses double precision and 4000 entries.
+//
+
+#include <ctype.h>
+#include <cstring>
+
+//--------------------------------------------------------------------------
+// Initialization routine
+
+
+extern "C" {
+    void initpydata(void);
+}
+#define initpydata initpydata_
+
+//--------------------------------------------------------------------------
+// PYTHIA Common Block Declarations
+
+const int pyjets_maxn =4000;
+extern "C" {
+    extern struct {
+       int n, npad, k[5][pyjets_maxn];
+       double p[5][pyjets_maxn], v[5][pyjets_maxn];
+    } pyjets_;
+}
+#define pyjets pyjets_
+
+extern "C" {
+    extern struct {
+        int mstu[200];
+        double paru[200];
+        int mstj[200];
+        double parj[200];
+    } pydat1_;
+}
+#define pydat1 pydat1_
+
+extern "C" {
+    extern struct {
+       int kchg[4][500];
+       double pmas[4][500], parf[2000], vckm[4][4];  
+    } pydat2_;
+}
+#define pydat2 pydat2_
+
+extern "C" {
+    extern struct {
+       int mdcy[3][500], mdme[2][8000];
+       double brat[8000];
+       int kfdp[5][8000];
+    } pydat3_;
+}
+#define pydat3 pydat3_
+
+extern "C" {
+    extern struct {
+       int mrpy[6];
+       double rrpy[100];
+    } pydatr_;
+}
+#define pydatr pydatr_
+
+extern "C" {
+    extern struct {
+       int msel, mselpd, msub[500], kfin[81][2];
+       double ckin[200];
+    } pysubs_;
+}
+#define pysubs pysubs_
+
+extern "C" {
+    extern struct {
+       int mstp[200];
+       double parp[200];
+       int msti[200];
+       double pari[200];
+    } pypars_;
+}
+#define pypars pypars_
+
+extern "C" {
+    extern struct {
+       int mint[400];
+       double vint[400];
+    } pyint1_;
+}
+#define pyint1 pyint1_
+
+extern "C" {
+    extern struct {
+       int iset[500], kfpr[2][500];
+       double coef[20][500];
+       int icol[2][4][40];
+    } pyint2_;
+}
+#define pyint2 pyint2_
+
+extern "C" {
+    extern struct pin3 {
+        double xsfx[81][2];    // Fortran is xsfx(2,-40:40)
+       int isig[3][1000];
+       double sigh[1000];
+    } pyint3_;
+}
+#define pyint3 pyint3_
+
+extern "C" {
+    extern struct {
+        int mwid[500];
+       double wids[5][500];
+    } pyint4_;
+}
+#define pyint4 pyint4_
+
+extern "C" {
+    extern struct pin5 {
+       int ngenpd, ngen[3][501];       // Fortran is ngen(0:500,3)
+       double xsec[3][501];            // Fortran is xsec(0:500,3)
+    } pyint5_;
+}
+#define pyint5 pyint5_
+
+extern "C" {
+    extern struct pin7 {
+        double sigt[6][7][7];  // Fortran is sigt(0:6,0:6,0:5)
+    } pyint7_;
+}
+#define pyint7 pyint7_
+
+extern "C" {
+    extern struct pin8 {
+       double xpvmd[13];       // Fortran is xpvmd(-6:6)
+       double xpanl[13];       // Fortran is xpanl(-6:6)
+       double xpanh[13];       // Fortran is xpanh(-6:6)
+       double xpbeh[13];       // Fortran is xpbeh(-6:6)
+       double xpdir[13];       // Fortran is xpdir(-6:6)
+    } pyint8_;
+}
+#define pyint8 pyint8_
+
+extern "C" {
+    extern struct pin9 {
+       double vxpvmd[13];      // Fortran is vxpvmd(-6:6)
+       double vxpanl[13];      // Fortran is vxpanl(-6:6)
+       double vxpanh[13];      // Fortran is vxpanh(-6:6)
+       double vxpdgm[13];      // Fortran is vxpdgm(-6:6)
+    } pyint9_;
+}
+#define pyint9 pyint9_
+
+extern "C" {
+    extern struct pssm {
+       int imss[100];          // Fortran is imss(0:99)
+       double rmss[100];       // Fortran is rmss(0:99)
+    } pyssm_;
+}
+#define pyssm pyssm_
+
+extern "C" {
+    extern struct {
+        double zmix[4][4];
+       double umix[2][2];
+       double vmix[2][2];
+       double smz[4];
+       double smw[2];
+       double sfmix[4][16];
+        double zmixi[4][4];
+       double umixi[2][2];
+       double vmixi[2][2];
+    } pyssmt_;
+}
+#define pyssmt pyssmt_
+
+extern "C" {
+    extern struct {
+        double rvlam[3][3][3];
+        double rvlamp[3][3][3];
+        double rvlamb[3][3][3];
+    } pymsrv_;
+}
+#define pymsrv pymsrv_
+
+extern "C" {
+    extern struct prvnv {
+        double ab[2][16][2];
+       double rms[4];          // Fortran is rms(0:3)
+       double res[5][6];
+       int idr;
+       int idr2;
+       double dcmass;
+       int kfr[3];
+    } pyrvnv_;
+}
+#define pyrvnv pyrvnv_
+
+extern "C" {
+    extern struct prvpm {
+        double rm[4];          // Fortran is rm(0:3)
+       double a[2];
+       double b[2];
+       double resm[2];
+       double resw[2];
+       bool mflag;
+    } pyrvpm_;
+}
+#define pyrvpm pyrvpm_
+
+extern "C" {
+    extern struct {
+        double xxm[20];
+    } pyints_;
+}
+#define pyints pyints_
+
+extern "C" {
+    extern struct {
+        double x1;
+    } pyg2dx_;
+}
+#define pyg2dx pyg2dx_
+
+//--------------------------------------------------------------------------
+// PYTHIA routines declaration
+
+#define pyhepc pyhepc_ 
+#define pyinit pyinit_
+#define pylist pylist_
+#define pystat pystat_
+#define pyevnt pyevnt_
+#define upinit upinit_
+#define upevnt upevnt_
+    extern "C" {
+       void pyhepc(int*);
+       void pyinit(const char*,const char*,const char*,double*,int,int,int);
+       void pylist(int*);
+       void pystat(int*);
+       void pyevnt();
+       void upinit();
+       void upevnt();
+    }
+
+// define methods to hide the subtle syntax necessary to call fortran from C++
+inline void call_pyhepc( int mode ){ pyhepc( &mode ); }
+inline void call_pyinit( const char* frame, const char* beam, const char* target,
+                 double win ) 
+{ pyinit( frame,beam,target,&win,strlen(frame),strlen(beam),strlen(target) ); }
+inline void call_pylist( int mode ){ pylist( &mode ); }
+inline void call_pystat( int mode ){ pystat( &mode ); }
+inline void call_pyevnt(){ pyevnt(); }
+
+
+//--------------------------------------------------------------------------
+// PYTHIA block data
+// ( with gcc it works to initialize the block data by calling 
+//   "pydata();" at beginning, but this fails for f77, so the fortran routine
+//   initpydata.f is supplied ... call it instead for platform independent
+//   behaviour )
+
+#define pydata pydata_
+extern "C" {
+    void pydata(void);
+}
+
+#endif  // PYTHIA_WRAPPER_6_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/PythiaWrapper6_4_WIN32.h b/TEvtGen/HepMC/PythiaWrapper6_4_WIN32.h
new file mode 100644 (file)
index 0000000..7269897
--- /dev/null
@@ -0,0 +1,164 @@
+//--------------------------------------------------------------------------
+#ifdef  _WIN32  // This version is for Windows MS Visual C++ only.
+#ifndef PYTHIA_WRAPPER_6_H
+#define PYTHIA_WRAPPER_6_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, November 2000
+// Version 6.200 update October 2001
+// Wrapper for FORTRAN version of Pythia 
+// The _WIN32 version is provided by Witold Pokorski 
+//       <Witold.Pokorski@Cern.CH>, 2002-01-22, and is the version 
+//       which should be used when compiling on Windows MS Visual C++.
+// This wrapper is NOT intended as a part of HepMC - it is only supplied
+// for your convenience.
+//////////////////////////////////////////////////////////////////////////
+// 
+// A simple example of calling Pythia from C++ using this header file is
+// given in test/test_PythiaWrapper.cxx
+//
+// Note the pyhepc routine is used by Pythia to fill
+// the HEPEVT common block uses double precision and 4000 entries.
+//
+
+#include <ctype.h>
+#include <string.h>
+
+//--------------------------------------------------------------------------
+// Initialization routine
+
+
+extern "C" {
+    void INITPYDATA(void);
+}
+#define initpydata INITPYDATA
+
+
+//--------------------------------------------------------------------------
+// PYTHIA Common Block Declarations
+
+const int pyjets_maxn =4000;
+struct PYJETS_DEF {
+       int n, npad, k[5][pyjets_maxn];
+       double p[5][pyjets_maxn], v[5][pyjets_maxn];
+};
+
+struct PYDAT1_DEF{
+        int mstu[200];
+        double paru[200];
+        int mstj[200];
+        double parj[200];
+};
+
+struct PYDAT2_DEF{
+       int kchg[4][500];
+       double pmas[4][500], parf[2000], vckm[4][4];  
+};
+
+struct PYDAT3_DEF{
+       int mdcy[3][500], mdme[2][8000];
+       double brat[8000];
+       int kfdp[5][8000];
+};
+
+struct PYDATR_DEF{
+       int mrpy[6];
+       double rrpy[100];
+    };
+
+struct PYSUBS_DEF{
+       int msel, mselpd, msub[500], kfin[81][2];
+       double ckin[200];
+};
+
+struct PYPARS_DEF{
+       int mstp[200];
+       double parp[200];
+       int msti[200];
+       double pari[200];
+};
+
+struct PYINT1_DEF{
+       int mint[400];
+       double vint[400];
+};
+
+struct PYINT2_DEF{
+       int iset[500], kfpr[2][500];
+       double coef[20][500];
+       int icol[2][4][40];       // was [320] was [40][4][2]
+};
+
+struct PYINT5_DEF{
+       int ngenpd, ngen[3][501];
+       double xsec[3][501];
+};
+
+
+extern "C" PYSUBS_DEF PYSUBS;
+extern "C" PYJETS_DEF PYJETS;
+extern "C" PYDAT1_DEF PYDAT1;
+extern "C" PYDAT2_DEF PYDAT2;
+extern "C" PYPARS_DEF PYPARS;
+extern "C" PYDATR_DEF PYDATR;
+extern "C" PYDAT3_DEF PYDAT3;
+extern "C" PYINT1_DEF PYINT1;
+extern "C" PYINT2_DEF PYINT2;
+extern "C" PYINT5_DEF PYINT5;
+
+
+#define pysubs PYSUBS
+#define pyjets PYJETS
+#define pydat1 PYDAT1
+#define pydat2 PYDAT2
+#define pypars PYPARS
+#define pydatr PYDATR
+#define pydat3 PYDAT3
+#define pyint1 PYINT1
+#define pyint2 PYINT2
+#define pyint5 PYINT5
+
+
+
+//--------------------------------------------------------------------------
+// PYTHIA routines declaration
+
+
+extern "C" {
+       void __stdcall PYHEPC(int*);
+       void __stdcall PYINIT(const char*,int,const char*,int,const char*,int,double*);
+       void __stdcall PYLIST(int*);
+       void __stdcall PYSTAT(int*);
+       void __stdcall PYEVNT();
+       void __stdcall UPINIT();
+       void __stdcall UPEVNT();
+}
+
+//--------------------------------------------------------------------------
+// PYTHIA block data
+// ( with gcc it works to initialize the block data by calling 
+//   "pydata();" at beginning, but this fails for f77, so the fortran routine
+//   initpydata.f is supplied ... call it instead for platform independent
+//   behaviour )
+
+
+extern "C" {
+    void __stdcall PYDATA(void);
+}
+
+inline void call_pyhepc( int mode ){ PYHEPC( &mode ); }
+inline void call_pyinit( const char* frame, const char* beam, const char* target,
+                 double win ) 
+{ PYINIT( frame,strlen(frame),beam,strlen(beam),target,strlen(target),&win); }
+inline void call_pylist( int mode ){ PYLIST( &mode ); }
+inline void call_pystat( int mode ){ PYSTAT( &mode ); }
+inline void call_pyevnt(){ PYEVNT(); }
+inline void call_upinit(){ UPINIT(); }
+inline void call_upevnt(){ UPEVNT(); }
+
+
+
+
+#endif  // PYTHIA_WRAPPER_6_H
+#endif  // _WIN32
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/SearchVector.cc b/TEvtGen/HepMC/SearchVector.cc
new file mode 100644 (file)
index 0000000..0dd7af7
--- /dev/null
@@ -0,0 +1,29 @@
+//////////////////////////////////////////////////////////////////////////
+// Author: Lynn Garren
+// search vectors for a GenParicle* instance
+//////////////////////////////////////////////////////////////////////////
+
+#include "HepMC/SearchVector.h"
+
+namespace HepMC {
+
+  
+bool not_in_vector( std::vector<GenParticle*>* v, GenParticle* p )
+{
+    if( already_in_vector(v,p) == v->end()  ) return true;
+    return false;
+}
+
+/// returns true if GenParticle is in the vector
+std::vector<HepMC::GenParticle*>::iterator already_in_vector( std::vector<GenParticle*>* v, GenParticle* p )
+{
+    // if the vectors are mostly large, the search should be coded differently
+    std::vector<GenParticle*>::iterator it;
+    for( it = v->begin(); it != v->end(); ++it ) {
+        // bail as soon as we find a match
+        if( (*it) == p ) return it;
+    }
+    return v->end();
+}
+
+}      // HepMC
diff --git a/TEvtGen/HepMC/SearchVector.h b/TEvtGen/HepMC/SearchVector.h
new file mode 100644 (file)
index 0000000..4be1e3f
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef SearchVector_h
+#define SearchVector_h
+// ----------------------------------------------------------------------
+//
+// SearchVector.h
+// Author: Lynn Garren
+//
+// Utilities to search std::vector<GenParticle*> a GenParticle instance
+// ----------------------------------------------------------------------
+
+#include "HepMC/GenVertex.h"
+#include "HepMC/GenParticle.h"
+
+namespace HepMC {
+  
+/// returns true if it cannot find GenParticle* in the vector
+bool not_in_vector( std::vector<HepMC::GenParticle*>*, GenParticle* );
+
+/// Returns the index of a GenParticle* within a vector.
+/// Returns -1 if GenParticle* is not in the vector.
+std::vector<HepMC::GenParticle*>::iterator already_in_vector( std::vector<HepMC::GenParticle*>*, GenParticle* );
+
+}      // HepMC
+
+#endif // SearchVector_h
diff --git a/TEvtGen/HepMC/SimpleVector.h b/TEvtGen/HepMC/SimpleVector.h
new file mode 100644 (file)
index 0000000..1f5beaa
--- /dev/null
@@ -0,0 +1,193 @@
+//////////////////////////////////////////////////////////////////////////
+// SimpleVector.h
+//////////////////////////////////////////////////////////////////////////
+#ifndef  HEPMC_SIMPLEVECTOR_H
+#define  HEPMC_SIMPLEVECTOR_H
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, July 2006
+//
+// This header provides a place to hold the doubles which are part of one of 
+// three types of physics vectors:
+//    momentum 4 vector 
+//    position or displacement 4 vector
+//    position or displacement 3 vector
+//
+// For compatibility with existing code, 
+// the basic expected geometrical access methods are povided 
+// Also, both FourVector and ThreeVector have a templated constructor that will 
+// take another vector (HepLorentzVector, GenVector, ...)
+//    --> this vector must have the following methods: x(), y(), z()
+//    -->  FourVector also requires the t() method
+//
+//////////////////////////////////////////////////////////////////////////
+
+
+#include "HepMC/enable_if.h"
+#include "HepMC/is_arithmetic.h"
+
+
+namespace HepMC {
+
+//! FourVector is a simple representation of a physics 4 vector
+
+///
+/// \class  FourVector
+/// For compatibility with existing code, 
+/// the basic expected geometrical access methods are povided.
+/// Also, there is a templated constructor that will 
+/// take another vector (HepLorentzVector, GenVector, ...)
+/// which must have the following methods: x(), y(), z(), t().
+///
+class FourVector {
+
+public:
+
+  /// constructor requiring at least x, y, and z
+  FourVector( double xin, double yin, double zin, double tin=0) 
+  : m_x(xin), m_y(yin), m_z(zin), m_t(tin) {}
+
+  /// constructor requiring only t 
+  FourVector(double tin)
+  : m_x(0), m_y(0), m_z(0), m_t(tin) {}
+
+  FourVector() 
+  : m_x(0), m_y(0), m_z(0), m_t(0) {}
+
+  /// templated constructor
+  /// this is used ONLY if T is not arithmetic
+  template <class T >
+  FourVector( const T& v,
+         typename detail::disable_if< detail::is_arithmetic<T>::value, void >::type * = 0 )
+  : m_x(v.x()), m_y(v.y()), m_z(v.z()), m_t(v.t()) {}
+
+  /// copy constructor
+  FourVector(const FourVector & v)
+  : m_x(v.x()), m_y(v.y()), m_z(v.z()), m_t(v.t()) {}
+
+  void swap( FourVector & other );  //!< swap
+
+  double px() const { return m_x; }  //!< return px
+  double py() const { return m_y; }  //!< return py
+  double pz() const { return m_z; }  //!< return pz
+  double e()  const { return m_t; }  //!< return E
+
+  double x() const { return m_x; }  //!< return x
+  double y() const { return m_y; }  //!< return y
+  double z() const { return m_z; }  //!< return z
+  double t() const { return m_t; }  //!< return t
+
+  double m2() const;  //!< Invariant mass squared.
+  double m() const;   //!< Invariant mass. If m2() is negative then -sqrt(-m2()) is returned.
+
+  double perp2() const;  //!< Transverse component of the spatial vector squared.
+  double perp() const;   //!< Transverse component of the spatial vector (R in cylindrical system).
+
+  // Get spatial vector components in spherical coordinate system.
+  double theta() const;  //!< The polar angle.
+  double phi() const;  //!< The azimuth angle.
+  double rho() const;  //!< spatial vector component magnitude
+
+  FourVector & operator = (const FourVector &); //!< make a copy
+
+  bool operator == (const FourVector &) const; //!< equality
+  bool operator != (const FourVector &) const; //!< inequality
+
+  double pseudoRapidity() const;  //!< Returns the pseudo-rapidity, i.e. -ln(tan(theta/2))
+  double eta() const;             //!< Pseudorapidity (of the space part)
+
+  /// set x, y, z, and t
+  void set        (double x, double y, double z, double  t);
+
+  void setX(double xin) { m_x=xin; }  //!< set x
+  void setY(double yin) { m_y=yin; }  //!< set y
+  void setZ(double zin) { m_z=zin; }  //!< set z
+  void setT(double tin) { m_t=tin; }  //!< set t
+
+  void setPx(double xin) { m_x=xin; }  //!< set px
+  void setPy(double yin) { m_y=yin; }  //!< set py
+  void setPz(double zin) { m_z=zin; }  //!< set pz
+  void setE(double tin)  { m_t=tin; }  //!< set E
+
+private:
+
+  double m_x;
+  double m_y;
+  double m_z;
+  double m_t;
+  
+};
+
+//! ThreeVector is a simple representation of a position or displacement 3 vector
+
+///
+/// \class  ThreeVector
+/// For compatibility with existing code, 
+/// the basic expected geometrical access methods are povided.
+/// Also, there is a templated constructor that will 
+/// take another vector (HepLorentzVector, GenVector, ...)
+/// which must have the following methods: x(), y(), z().
+///
+class ThreeVector {
+
+public:
+
+  /// construct using x, y, and z (only x is required)
+  ThreeVector( double xin, double yin =0, double zin =0 ) 
+  : m_x(xin), m_y(yin), m_z(zin) {}
+
+  ThreeVector( ) 
+  : m_x(0), m_y(0), m_z(0) {}
+  
+  /// templated constructor
+  /// this is used ONLY if T is not arithmetic
+  template <class T >
+  ThreeVector( const T& v,
+         typename detail::disable_if< detail::is_arithmetic<T>::value, void >::type * = 0 )
+  : m_x(v.x()), m_y(v.y()), m_z(v.z()) {}
+
+  /// copy constructor
+  ThreeVector(const ThreeVector & v)
+  : m_x(v.x()), m_y(v.y()), m_z(v.z()) {}
+
+  void swap( ThreeVector & other );  //!< swap
+
+  double x() const { return m_x; }  //!< return x
+  double y() const { return m_y; }  //!< return y
+  double z() const { return m_z; }  //!< return z
+
+  void setX(double xin) { m_x=xin; }  //!< set x
+  void setY(double yin) { m_y=yin; }  //!< set y
+  void setZ(double zin) { m_z=zin; }  //!< set z
+  void set( double x, double y, double z);   //!< set x, y, and z
+
+  double phi()   const;  //!< The azimuth angle.
+  double theta() const;  //!< The polar angle.
+  double r()     const;  //!< The magnitude
+
+  void setPhi(double);  //!< Set phi keeping magnitude and theta constant (BaBar).
+  void setTheta(double);  //!< Set theta keeping magnitude and phi constant (BaBar).
+
+  double perp2() const;  //!< The transverse component squared (rho^2 in cylindrical coordinate system).
+  double perp() const;  //!< The transverse component (rho in cylindrical coordinate system).
+
+  ThreeVector & operator = (const ThreeVector &); //!< make a copy
+
+  bool operator == (const ThreeVector &) const; //!< equality
+  bool operator != (const ThreeVector &) const; //!< inequality
+
+private:
+
+  double m_x;
+  double m_y;
+  double m_z;
+
+};  
+
+
+} // HepMC
+
+#include "HepMC/SimpleVector.icc"
+
+#endif  // HEPMC_SIMPLEVECTOR_H
+
diff --git a/TEvtGen/HepMC/SimpleVector.icc b/TEvtGen/HepMC/SimpleVector.icc
new file mode 100644 (file)
index 0000000..dbbcd01
--- /dev/null
@@ -0,0 +1,148 @@
+//////////////////////////////////////////////////////////////////////////
+// SimpleVector.icc
+//////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, July 2006
+//
+//
+//////////////////////////////////////////////////////////////////////////
+
+#include <cmath>
+#include <algorithm>   // for swap
+
+namespace HepMC {
+
+//////////////////////////////////////////////////////////////////////////
+//  FourVector inline methods
+//////////////////////////////////////////////////////////////////////////
+
+inline void FourVector::swap( FourVector & other ) {
+    std::swap( m_x, other.m_x );
+    std::swap( m_y, other.m_y );
+    std::swap( m_z, other.m_z );
+    std::swap( m_t, other.m_t );
+}
+
+inline FourVector & FourVector::operator=(const FourVector & v) {
+  m_x = v.x();
+  m_y = v.y();
+  m_z = v.z();
+  m_t = v.t();
+  return *this;
+}
+
+inline void FourVector::set(double xin, double yin, double zin, double  tin) {
+  m_x = xin;
+  m_y = yin;
+  m_z = zin;
+  m_t = tin;
+}
+
+inline double FourVector::m2() const {
+  return m_t*m_t - (m_x*m_x + m_y*m_y + m_z*m_z);
+}
+
+inline double FourVector::m() const {
+  double mm = m2();
+  return mm < 0.0 ? -std::sqrt(-mm) : std::sqrt(mm);
+}
+
+inline double FourVector::perp2() const { return m_x*m_x + m_y*m_y; }
+
+inline double FourVector::perp() const { return std::sqrt(perp2()); }
+
+inline double FourVector::theta() const         {
+  return m_x == 0.0 && m_y == 0.0 && m_z == 0.0 ? 0.0 : std::atan2(perp(),m_z);
+}
+
+inline double FourVector::phi() const {
+  return m_x == 0.0 && m_y == 0.0 ? 0.0 : std::atan2(m_y,m_x);
+}
+
+inline double  FourVector::rho() const { 
+return std::sqrt( m_x*m_x + m_y*m_y + m_z*m_z );
+}
+
+inline bool FourVector::operator == (const FourVector & v) const {
+  return (v.x()==x() && v.y()==y() && v.z()==z() && v.t()==t()) ? true : false;
+}
+
+inline bool FourVector::operator != (const FourVector & v) const {
+  return (v.x()!=x() || v.y()!=y() || v.z()!=z() || v.t()!=t()) ? true : false;
+}
+
+inline double FourVector::pseudoRapidity() const {
+  double m1 = std::sqrt( m_x*m_x + m_y*m_y + m_z*m_z );
+  if ( m1==  0   ) return  0.0;   
+  if ( m1==  z() ) return  1.0E72;
+  if ( m1== -z() ) return -1.0E72;
+  return 0.5*log( (m1+z())/(m1-z()) );
+}
+
+inline double FourVector::eta()    const { return pseudoRapidity();}
+
+
+//////////////////////////////////////////////////////////////////////////
+//  ThreeVector inline methods
+//////////////////////////////////////////////////////////////////////////
+
+inline void ThreeVector::swap( ThreeVector & other ) {
+    std::swap( m_x, other.m_x );
+    std::swap( m_y, other.m_y );
+    std::swap( m_z, other.m_z );
+}
+
+inline double ThreeVector::theta() const        {
+  return m_x == 0.0 && m_y == 0.0 && m_z == 0.0 ? 0.0 : std::atan2(perp(),m_z);
+}
+
+inline double ThreeVector::phi() const {
+  return m_x == 0.0 && m_y == 0.0 ? 0.0 : std::atan2(m_y,m_x);
+}
+
+inline double ThreeVector::r()    const { 
+return std::sqrt( m_x*m_x + m_y*m_y + m_z*m_z );
+}
+
+inline void ThreeVector::set(double xin, double yin, double zin) {
+  m_x = xin;
+  m_y = yin;
+  m_z = zin;
+}
+
+inline void ThreeVector::setPhi(double ph) { 
+  double xy   = perp();
+  setX(xy*std::cos(ph));
+  setY(xy*std::sin(ph));
+}
+
+inline void ThreeVector::setTheta(double th) { 
+  double ma   = r();
+  double ph   = phi();
+  setX(ma*std::sin(th)*std::cos(ph));
+  setY(ma*std::sin(th)*std::sin(ph));
+  setZ(ma*std::cos(th));
+}
+
+inline double ThreeVector::perp2() const { return m_x*m_x + m_y*m_y; }
+
+inline double ThreeVector::perp() const { return std::sqrt(perp2()); }
+
+inline ThreeVector & ThreeVector::operator = (const ThreeVector & p) {
+  m_x = p.x();
+  m_y = p.y();
+  m_z = p.z();
+  return *this;
+}
+
+
+inline bool ThreeVector::operator == (const ThreeVector& v) const {
+  return (v.x()==x() && v.y()==y() && v.z()==z()) ? true : false;
+}
+
+inline bool ThreeVector::operator != (const ThreeVector& v) const {
+  return (v.x()!=x() || v.y()!=y() || v.z()!=z()) ? true : false;
+}
+
+} // HepMC
diff --git a/TEvtGen/HepMC/StreamHelpers.cc b/TEvtGen/HepMC/StreamHelpers.cc
new file mode 100644 (file)
index 0000000..8a56089
--- /dev/null
@@ -0,0 +1,123 @@
+//--------------------------------------------------------------------------
+//
+// GenEventStreamIO.cc
+// Author:  Lynn Garren
+//
+// helper functions used by streaming IO
+//
+// ----------------------------------------------------------------------
+
+#include <ostream>
+#include <istream>
+#include <sstream>
+
+#include "HepMC/GenVertex.h"
+#include "HepMC/GenParticle.h"
+#include "HepMC/StreamHelpers.h"
+#include "HepMC/IO_Exception.h"
+
+namespace HepMC {
+
+namespace detail {
+
+std::istream & read_vertex( std::istream & is, 
+                            TempParticleMap & particle_to_end_vertex, 
+                           GenVertex * v )
+{
+    //
+    // make sure the stream is valid
+    if ( !is ) {
+       std::cerr << "StreamHelpers::detail::read_vertex setting badbit." << std::endl;
+       is.clear(std::ios::badbit); 
+       return is;
+    } 
+    //
+    // get the vertex line
+    std::string line;
+    std::getline(is,line);
+    std::istringstream iline(line);
+    std::string firstc;
+    iline >> firstc;
+    //
+    // test to be sure the next entry is of type "V" 
+    if ( firstc != "V"  ) {
+       std::cerr << "StreamHelpers::detail::read_vertex invalid line type: " 
+                 << firstc << std::endl;
+       std::cerr << "StreamHelpers::detail::read_vertex setting badbit." << std::endl;
+       is.clear(std::ios::badbit); 
+       return is;
+    } 
+    // read values into temp variables, then create a new GenVertex object
+    int identifier =0, id =0, num_orphans_in =0, 
+        num_particles_out = 0, weights_size = 0;
+    double x = 0., y = 0., z = 0., t = 0.; 
+    iline >> identifier ;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> id ;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> x ;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> y ;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> z ;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> t;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> num_orphans_in ;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> num_particles_out ;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    iline >> weights_size;
+    if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    WeightContainer weights(weights_size);
+    for ( int i1 = 0; i1 < weights_size; ++i1 ) {
+        iline >> weights[i1];
+        if(!iline) { throw IO_Exception("read_vertex input stream encounterd invalid data"); }
+    }
+    v->set_position( FourVector(x,y,z,t) );
+    v->set_id( id );
+    v->weights() = weights;
+    v->suggest_barcode( identifier );
+    //
+    // read and create the associated particles. outgoing particles are
+    //  added to their production vertices immediately, while incoming
+    //  particles are added to a map and handled later.
+    for ( int i2 = 1; i2 <= num_orphans_in; ++i2 ) {
+        GenParticle* p1 = new GenParticle( ); 
+       detail::read_particle(is,particle_to_end_vertex,p1);
+    }
+    for ( int i3 = 1; i3 <= num_particles_out; ++i3 ) {
+        GenParticle* p2 = new GenParticle( ); 
+       detail::read_particle(is,particle_to_end_vertex,p2);
+       v->add_particle_out( p2 );
+    }
+
+    return is;
+}
+
+std::istream & find_event_end( std::istream & is ) {
+    // since there is no end of event flag, 
+    // read one line at time until we find the next event 
+    // or the end of event block
+    // don't throw until we find the end of the event
+    std::string line, firstc;
+    while ( is ) { 
+       is >> firstc;
+        if( firstc=="E" ) {    // next event
+           is.unget();
+            throw IO_Exception("input stream encountered invalid data");
+           return is;
+       } else if( firstc.size() > 1 ) { // no more events in this block
+            throw IO_Exception("input stream encountered invalid data, now at end of event block");
+           return is;
+       }
+        std::getline(is,line);
+    }
+    // the stream is bad 
+    throw IO_Exception("input stream encountered invalid data, stream is now corrupt");
+    return is;
+}
+
+} // detail
+
+} // HepMC
diff --git a/TEvtGen/HepMC/StreamHelpers.h b/TEvtGen/HepMC/StreamHelpers.h
new file mode 100644 (file)
index 0000000..cfb5eb0
--- /dev/null
@@ -0,0 +1,102 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_STREAM_HELPERS_H
+#define HEPMC_STREAM_HELPERS_H
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, March 2009
+//
+// This header contains helper functions used by streaming IO
+//////////////////////////////////////////////////////////////////////////
+
+#include <ostream>
+#include <istream>
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/TempParticleMap.h"
+
+namespace HepMC {
+
+namespace detail {
+
+/// used by IO_GenEvent constructor
+std::ostream & establish_output_stream_info( std::ostream & );
+/// used by IO_GenEvent constructor
+std::istream & establish_input_stream_info( std::istream & );
+
+/// get a GenVertex from ASCII input
+/// TempParticleMap is used to track the associations of particles with vertices
+std::istream & read_vertex( std::istream &, TempParticleMap &, GenVertex * );
+
+/// get a GenParticle from ASCII input
+/// TempParticleMap is used to track the associations of particles with vertices
+std::istream & read_particle( std::istream&, TempParticleMap &, GenParticle * );
+
+/// write a double - for internal use by streaming IO
+inline std::ostream & output( std::ostream & os, const double& d ) {
+    if( os  ) {
+       if ( d == 0. ) {
+           os << ' ' << (int)0;
+       } else {
+           os << ' ' << d;
+       }
+    }
+    return os;
+}
+
+/// write a float - for internal use by streaming IO
+inline std::ostream & output( std::ostream & os, const float& d ) {
+    if( os  ) {
+       if ( d == 0. ) {
+           os << ' ' << (int)0;
+       } else {
+           os << ' ' << d;
+       }
+    }
+    return os;
+}
+
+/// write an int - for internal use by streaming IO
+inline std::ostream & output( std::ostream & os, const int& i ) { 
+    if( os  ) {
+       if ( i == 0. ) {
+           os << ' ' << (int)0;
+       } else {
+            os << ' ' << i; 
+       }
+    }
+    return os;
+}
+
+/// write a long - for internal use by streaming IO
+inline std::ostream & output( std::ostream & os, const long& i ) {
+    if( os  ) {
+       if ( i == 0. ) {
+           os << ' ' << (int)0;
+       } else {
+            os << ' ' << i; 
+       }
+    }
+    return os;
+}
+
+/// write a single char - for internal use by streaming IO
+inline std::ostream & output( std::ostream & os, const char& c ) {
+    if( os  ) {
+       if ( c ) {
+            os << c; 
+       } else {
+           os << ' ' ;
+       }
+    }
+    return os;
+}
+
+/// used to read to the end of a bad event
+std::istream & find_event_end( std::istream & );
+
+} // detail
+
+} // HepMC
+
+#endif  // HEPMC_STREAM_HELPERS_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/StreamInfo.cc b/TEvtGen/HepMC/StreamInfo.cc
new file mode 100644 (file)
index 0000000..2077578
--- /dev/null
@@ -0,0 +1,59 @@
+//--------------------------------------------------------------------------
+//
+// StreamInfo.cc
+// Author:  Lynn Garren
+//
+// ----------------------------------------------------------------------
+
+#include <string>
+#include "HepMC/StreamInfo.h"
+
+namespace HepMC {
+
+StreamInfo::StreamInfo( )
+: m_finished_first_event_io(false),
+  m_io_genevent_start("HepMC::IO_GenEvent-START_EVENT_LISTING"),
+  m_io_ascii_start("HepMC::IO_Ascii-START_EVENT_LISTING"),
+  m_io_extendedascii_start("HepMC::IO_ExtendedAscii-START_EVENT_LISTING"),
+  m_io_genevent_end("HepMC::IO_GenEvent-END_EVENT_LISTING"),
+  m_io_ascii_end("HepMC::IO_Ascii-END_EVENT_LISTING"),
+  m_io_extendedascii_end("HepMC::IO_ExtendedAscii-END_EVENT_LISTING"),
+  m_io_ascii_pdt_start("HepMC::IO_Ascii-START_PARTICLE_DATA"),
+  m_io_extendedascii_pdt_start("HepMC::IO_ExtendedAscii-START_PARTICLE_DATA"),
+  m_io_ascii_pdt_end("HepMC::IO_Ascii-END_PARTICLE_DATA"),
+  m_io_extendedascii_pdt_end("HepMC::IO_ExtendedAscii-END_PARTICLE_DATA"),
+  m_io_type(0),
+  m_has_key(true),
+  m_io_momentum_unit(Units::default_momentum_unit()),
+  m_io_position_unit(Units::default_length_unit()),
+  m_stream_id(m_stream_counter),
+  m_reading_event_header(false)
+{
+    ++m_stream_counter;
+}
+
+/// static counter 
+unsigned int StreamInfo::m_stream_counter = 0; 
+
+void StreamInfo::use_input_units( Units::MomentumUnit mom, Units::LengthUnit len ) {
+    m_io_momentum_unit = mom;
+    m_io_position_unit = len;
+}
+
+void StreamInfo::set_io_type( int io ) {
+    m_io_type = io;
+}
+
+void StreamInfo::set_has_key( bool io ) {
+    m_has_key = io;
+}
+
+bool StreamInfo::reading_event_header() {
+    return m_reading_event_header;
+}
+
+void StreamInfo::set_reading_event_header(bool tf) {
+    m_reading_event_header = tf;
+}
+
+} // HepMC
diff --git a/TEvtGen/HepMC/StreamInfo.h b/TEvtGen/HepMC/StreamInfo.h
new file mode 100644 (file)
index 0000000..518b8b2
--- /dev/null
@@ -0,0 +1,128 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_STREAM_INFO_H
+#define HEPMC_STREAM_INFO_H
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, March 2009
+//
+// This class contains the extra information needed when using streaming IO
+//////////////////////////////////////////////////////////////////////////
+
+#include <string>
+#include "HepMC/Units.h"
+
+namespace HepMC {
+
+/// The known_io enum is used to track which type of input is being read
+enum known_io { gen=1, ascii, extascii, ascii_pdt, extascii_pdt };
+
+//! StreamInfo contains extra information needed when using streaming IO.
+
+///
+/// \class  StreamInfo
+/// This class contains the extra information needed when using streaming IO
+/// to process HepMC GenEvents
+///
+class StreamInfo {
+public:
+    /// default constructor
+    StreamInfo( );
+    /// destructor
+    ~StreamInfo() {}
+
+    /// IO_GenEvent begin event block key
+    std::string IO_GenEvent_Key()          const { return m_io_genevent_start; }
+    /// IO_GenEvent end event block key
+    std::string IO_GenEvent_End()          const { return m_io_genevent_end; }
+
+    /// IO_Ascii begin event block key
+    /// IO_Ascii has been removed, but we want to be able to read 
+    /// existing files written by IO_Ascii
+    std::string IO_Ascii_Key()             const { return m_io_ascii_start; }
+    /// IO_Ascii end event block key
+    std::string IO_Ascii_End()             const { return m_io_ascii_end; }
+    /// IO_Ascii begin particle data block key
+    std::string IO_Ascii_PDT_Key()             const { return m_io_ascii_pdt_start; }
+    /// IO_Ascii end particle data block key
+    std::string IO_Ascii_PDT_End()             const { return m_io_ascii_pdt_end; }
+
+    /// IO_ExtendedAscii begin event block key
+    /// IO_ExtendedAscii has been removed, but we want to be able to read 
+    /// existing files written by IO_ExtendedAscii
+    std::string IO_ExtendedAscii_Key()     const { return m_io_extendedascii_start; }
+    /// IO_ExtendedAscii end event block key
+    std::string IO_ExtendedAscii_End()     const { return m_io_extendedascii_end; }
+    /// IO_ExtendedAscii begin particle data block key
+    std::string IO_ExtendedAscii_PDT_Key()             const { return m_io_extendedascii_pdt_start; }
+    /// IO_ExtendedAscii end particle data block key
+    std::string IO_ExtendedAscii_PDT_End()             const { return m_io_extendedascii_pdt_end; }
+
+    /// get IO type
+    int io_type() const { return m_io_type; }
+    /// set IO type
+    void set_io_type( int );
+
+    /// true if the stream has a file type key
+    /// has_key is true by default
+    bool has_key() const { return m_has_key; }
+    /// set to false if the stream does not have a file type key
+    void set_has_key( bool );
+    
+    /// get the I/O momentum units
+    Units::MomentumUnit io_momentum_unit() const { return m_io_momentum_unit; }
+    /// get the I/O length units
+    Units::LengthUnit io_position_unit() const { return m_io_position_unit; }
+
+    /// get the I/O stream id
+    /// This is used for sanity checking.
+    int stream_id() const { return m_stream_id; }
+    
+    /// Special information is processed the first time we use the IO
+    bool finished_first_event() const { return m_finished_first_event_io; }
+    /// Special information is processed the first time we use the IO
+    void set_finished_first_event( bool b ) { m_finished_first_event_io = b; }
+
+    /// needed when reading a file without units if those units are 
+    /// different than the declared default units 
+    /// (e.g., the default units are MeV, but the file was written with GeV)
+    /// This method is not necessary if the units are written in the file
+    void use_input_units( Units::MomentumUnit, Units::LengthUnit );
+    
+    /// reading_event_header will return true when streaming input is 
+    /// processing the GenEvent header information
+    bool reading_event_header();
+    /// set the reading_event_header flag
+    void set_reading_event_header(bool);
+
+private: // data members
+    bool        m_finished_first_event_io;
+    // GenEvent I/O method keys
+    std::string m_io_genevent_start;
+    std::string m_io_ascii_start;
+    std::string m_io_extendedascii_start;
+    std::string m_io_genevent_end;
+    std::string m_io_ascii_end;
+    std::string m_io_extendedascii_end;
+    // particle data I/O method keys
+    std::string m_io_ascii_pdt_start;
+    std::string m_io_extendedascii_pdt_start;
+    std::string m_io_ascii_pdt_end;
+    std::string m_io_extendedascii_pdt_end;
+    // io information
+    int         m_io_type;
+    bool        m_has_key;
+    // default io units - used only when reading a file with no units
+    Units::MomentumUnit m_io_momentum_unit;
+    Units::LengthUnit   m_io_position_unit;
+    // used to keep identify the I/O stream
+    unsigned int m_stream_id;
+    static unsigned int m_stream_counter;
+    // used to keep track when reading event
+    bool m_reading_event_header;
+
+};
+
+} // HepMC
+
+#endif  // HEPMC_STREAM_INFO_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/TempParticleMap.h b/TEvtGen/HepMC/TempParticleMap.h
new file mode 100644 (file)
index 0000000..180e006
--- /dev/null
@@ -0,0 +1,67 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_TempParticleMap_H
+#define HEPMC_TempParticleMap_H
+
+//////////////////////////////////////////////////////////////////////////
+// garren@fnal.gov, October 2007
+//
+// Used by IO classes
+//////////////////////////////////////////////////////////////////////////
+
+#include <map>
+
+namespace HepMC {
+
+    class GenParticle;
+
+    //! TempParticleMap is a temporary GenParticle* container used during input.
+
+    ///
+    /// \class  TempParticleMap
+    /// Used by IO classes for recoverable particle ordering.
+    /// Map GenParticle* against both outgoing vertex and particle order.
+    ///
+    class TempParticleMap {
+    public:
+        typedef std::map<HepMC::GenParticle*,int> TempMap;
+        typedef std::map<int,HepMC::GenParticle*> TempOrderMap;
+       typedef TempMap::iterator     TempMapIterator;
+       typedef TempOrderMap::iterator  orderIterator;
+       
+       TempParticleMap() 
+       : m_particle_to_end_vertex(), m_particle_order() {}
+       
+       ~TempParticleMap() {}
+       
+       TempMapIterator begin() { return m_particle_to_end_vertex.begin(); }
+       TempMapIterator end() { return m_particle_to_end_vertex.end(); }
+       orderIterator order_begin() { return m_particle_order.begin(); }
+       orderIterator order_end() { return m_particle_order.end(); }
+       
+       int end_vertex( GenParticle* );
+       
+       void addEndParticle( GenParticle*, int& );
+       
+    private:
+        TempMap       m_particle_to_end_vertex;
+       TempOrderMap  m_particle_order;
+    };
+    
+    inline int TempParticleMap::end_vertex( GenParticle* p )
+    { 
+        //return m_particle_to_end_vertex[p]->second; 
+       TempMapIterator it = m_particle_to_end_vertex.find(p);
+       if( it == end() ) return 0;
+       return m_particle_to_end_vertex[p];
+    }
+
+    inline void TempParticleMap::addEndParticle( GenParticle* p, int& end_vtx_code )
+    {
+       m_particle_order[p->barcode()] = p;
+        m_particle_to_end_vertex[p] = end_vtx_code;
+    }        
+
+} // HepMC
+
+#endif  // HEPMC_TempParticleMap_H
+//--------------------------------------------------------------------------
diff --git a/TEvtGen/HepMC/Units.cc b/TEvtGen/HepMC/Units.cc
new file mode 100644 (file)
index 0000000..d001115
--- /dev/null
@@ -0,0 +1,66 @@
+//--------------------------------------------------------------------------
+// Units.cc
+// Author:  A. Buckley, D. Grellscheid
+//
+// units used by a GenEvent
+// The default units are set here at compile time.
+//--------------------------------------------------------------------------
+
+#include "HepMC/Units.h"
+
+namespace HepMC {
+
+  namespace Units {
+
+   // helper functions
+    std::string name(MomentumUnit m) {
+      switch (m) {
+        case MEV : return "MEV";
+        case GEV : return "GEV";
+       default  : return "badValue";
+      } 
+    }
+
+    std::string name(LengthUnit l) {
+      switch (l) {
+        case MM : return "MM";
+        case CM : return "CM";
+       default : return "badValue";
+     } 
+    }
+
+    double conversion_factor(MomentumUnit from, MomentumUnit to) 
+    {
+      if ( from == to )
+       return 1.0;
+      else if ( from == MEV && to == GEV )
+       return 0.001;
+      else
+       return 1000.0;
+    }
+
+    double conversion_factor(LengthUnit from, LengthUnit to) 
+    {
+      if ( from == to )
+       return 1.0;
+      else if ( from == MM && to == CM )
+       return 0.1;
+      else
+       return 10.0;
+    }
+
+    // if this function fails to compile, rerun configure using --with-length_units
+    LengthUnit default_length_unit() {
+      //return @HEPMC_DEFAULT_LEN_UNIT@ ;
+      return MM ;
+    }
+
+    // if this function fails to compile, rerun configure using --with-momentum_units
+    MomentumUnit default_momentum_unit() {
+      //return @HEPMC_DEFAULT_MOM_UNIT@ ;
+      return MEV ;
+    }
+
+  }    // Units
+
+}      // HepMC
diff --git a/TEvtGen/HepMC/Units.h b/TEvtGen/HepMC/Units.h
new file mode 100644 (file)
index 0000000..1d42655
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef HEPMC_UNITS_H
+#define HEPMC_UNITS_H
+
+//--------------------------------------------------------------------------
+// Units.h
+// Author:  A. Buckley, D. Grellscheid
+//
+// units used by a GenEvent
+// The default units are set by a configure switch at compile time in Units.cc.
+//--------------------------------------------------------------------------
+
+#include <iostream>
+#include <string>
+
+namespace HepMC {
+
+  ///
+  /// \namespace Units
+  /// Allow units to be specified within HepMC.
+  /// The default units are set at compile time. 
+  ///
+  namespace Units {
+
+    // Convention: if both types are passed, MomentumUnit always goes first.
+    enum MomentumUnit { MEV, GEV };    //!< momentum units
+    enum LengthUnit   { MM, CM };      //!< position units
+    
+    LengthUnit   default_length_unit();                //!< default unit is defined by configure
+    MomentumUnit default_momentum_unit();      //!< default unit is defined by configure
+
+    // helper functions
+    std::string name( MomentumUnit );  //!< convert enum to string
+    std::string name( LengthUnit );    //!< convert enum to string
+
+    /// scaling factor relative to MeV
+    double conversion_factor( MomentumUnit from, MomentumUnit to ); 
+    double conversion_factor( LengthUnit from, LengthUnit to );
+
+  }    // Units
+}      // HepMC
+
+#endif // HEPMC_UNITS_H
diff --git a/TEvtGen/HepMC/Version.h b/TEvtGen/HepMC/Version.h
new file mode 100644 (file)
index 0000000..9ca0ad7
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef HEPMC_VERSION_H
+#define HEPMC_VERSION_H
+// ----------------------------------------------------------------------
+//
+// Version.h
+// Author:  Lynn Garren
+//
+//  for now, these are free functions
+//
+// ----------------------------------------------------------------------
+
+#include <string>
+#include <iostream>
+#include "HepMC/HepMCDefs.h"
+
+namespace HepMC {
+
+void version( std::ostream & os = std::cout );                 //!< print HepMC version
+void writeVersion( std::ostream & os );        //!< write HepMC version to os
+std::string versionName( );    //!< return HepMC version
+
+inline std::string versionName( )
+{
+    return HEPMC_VERSION;
+}
+
+inline void version( std::ostream & os )
+{
+    os << " --------------- HepMC Version " << versionName()
+       << " --------------- " << std::endl;
+}
+
+inline void writeVersion( std::ostream & os )
+{
+    os << "             HepMC Version: " << versionName() << std::endl;
+}
+
+}      // HepMC
+
+#endif // HEPMC_VERSION_H
diff --git a/TEvtGen/HepMC/WeightContainer.cc b/TEvtGen/HepMC/WeightContainer.cc
new file mode 100644 (file)
index 0000000..d32bad9
--- /dev/null
@@ -0,0 +1,139 @@
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, November 2000, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// Container for the Weights associated with an event or vertex.
+// Basically just an interface to STL vector with extra map-like attributes
+//////////////////////////////////////////////////////////////////////////
+
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+#include <vector>
+#include <string>
+#include <map>
+#include <stdexcept>
+
+#include "HepMC/WeightContainer.h"
+
+namespace HepMC {
+
+WeightContainer::WeightContainer( size_type n, double value ) 
+    : m_weights(n,value), m_names()
+{ set_default_names(n); }
+
+WeightContainer::WeightContainer( const std::vector<double>& wgts )
+    : m_weights(wgts), m_names()
+{ set_default_names(size()); }
+
+void WeightContainer::set_default_names( size_type n )
+{
+    // internal program used by the constructors
+    std::ostringstream name;
+    for ( size_type count = 0; count<n; ++count ) 
+    { 
+       name.str(std::string());
+       name << count;
+       m_names[name.str()] = count;
+    }
+}
+
+void WeightContainer::push_back( const double& value) 
+{ 
+    size_type count = m_weights.size();
+    m_weights.push_back(value); 
+    std::ostringstream name;
+    name << count;
+    m_names[name.str()] = count;
+}
+
+void WeightContainer::pop_back() 
+{
+    // this needs to remove the last entry in the vector 
+    // and ALSO the associated map entry
+    size_type vit = size() - 1;
+    for ( map_iterator m = m_names.begin(); m != m_names.end(); ++m ) 
+    { 
+        if( m->second == vit ) { 
+           m_names.erase(m->first); 
+           continue;
+       }
+    }
+    m_weights.pop_back(); 
+}
+
+double& WeightContainer::operator[]( const std::string& s ) 
+{ 
+    const_map_iterator m = m_names.find(s);
+    if( m != m_names.end() ) {
+        return m_weights[m->second]; 
+    }
+    // doesn't exist - have to create it
+    size_type count = m_weights.size();
+    m_weights.push_back(0); 
+    m_names[s] = count;
+    return m_weights.back(); 
+}
+
+
+const double& WeightContainer::operator[]( const std::string& s ) const
+{ 
+    const_map_iterator m = m_names.find(s);
+    if( m != m_names.end() ) {
+        return m_weights[m->second]; 
+    }
+    // doesn't exist and we cannot create it
+    // note that std::map does not support this (const) operator
+    // throw an appropriate error, we choose the error thrown by std::vector
+    throw std::out_of_range("const WeightContainer::operator[] ERROR: string "+s+" not found in  WeightContainer" );
+}
+
+bool WeightContainer::operator==( const WeightContainer & other ) const
+{
+   if( size() != other.size() ) { return false; }
+   if( m_names != other.m_names ) { return false; }
+   if( m_weights != other.m_weights ) { return false; }
+   return true;
+}
+
+bool WeightContainer::operator!=( const WeightContainer & other ) const
+{
+   return !(*this == other );
+}
+
+bool WeightContainer::has_key( const std::string& s ) const
+{
+    // look up the name in the map
+    return m_names.find(s) != m_names.end();
+}
+
+void WeightContainer::print( std::ostream& ostr ) const 
+{ 
+    // print a name, weight pair
+    for ( const_map_iterator m = map_begin(); m != map_end(); ++m )
+    {
+       ostr << "(" << m->first << "," << m_weights[m->second] << ") ";
+    }
+    ostr << std::endl; 
+}
+
+void WeightContainer::write( std::ostream& ostr ) const 
+{ 
+    size_type count = 0;
+    for ( const_iterator w = begin(); w != end(); ++w ) 
+    { 
+       std::string name;
+       for ( const_map_iterator m = map_begin(); m != map_end(); ++m )
+       {
+           if( m->second == count ) name = m->first;
+       }
+       ostr << "Weight " << std::setw(4) << count 
+            << " with name " << std::setw(10) <<  name
+            << " is " << *w << std::endl;
+       ++count;
+    }
+}
+
+} // HepMC
+
diff --git a/TEvtGen/HepMC/WeightContainer.h b/TEvtGen/HepMC/WeightContainer.h
new file mode 100644 (file)
index 0000000..980f75b
--- /dev/null
@@ -0,0 +1,225 @@
+//--------------------------------------------------------------------------
+#ifndef HEPMC_WEIGHT_CONTAINER_H
+#define HEPMC_WEIGHT_CONTAINER_H
+
+//////////////////////////////////////////////////////////////////////////
+// Matt.Dobbs@Cern.CH, November 2000, refer to:
+// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for
+// High Energy Physics", Computer Physics Communications (to be published).
+//
+// Container for the Weights associated with an event or vertex.
+//
+// This implementation adds a map-like interface in addition to the 
+// vector-like interface.
+//////////////////////////////////////////////////////////////////////////
+
+#include <iostream>
+#include <vector>
+#include <string>
+#include <map>
+
+namespace HepMC {
+
+    //! Container for the Weights associated with an event or vertex.
+
+    ///
+    /// \class  WeightContainer
+    /// This class has both map-like and vector-like functionality.
+    /// Named weights are now supported.
+    class WeightContainer {
+       friend class GenEvent;
+
+    public:
+        /// defining the size type used by vector and map
+       typedef std::size_t size_type;
+        /// iterator for the weight container
+       typedef std::vector<double>::iterator iterator;
+        /// const iterator for the weight container
+       typedef std::vector<double>::const_iterator const_iterator;
+       
+        /// default constructor
+       explicit WeightContainer( size_type n = 0, double value = 0. );
+        /// construct from a vector of weights
+       WeightContainer( const std::vector<double>& weights );
+        /// copy
+       WeightContainer( const WeightContainer& in );
+       ~WeightContainer();
+
+        /// swap
+        void swap( WeightContainer & other);
+        /// copy assignment
+       WeightContainer& operator=( const WeightContainer& );
+        /// alternate assignment using a vector of doubles
+       WeightContainer& operator=( const std::vector<double>& in );
+
+        /// print weights
+       void          print( std::ostream& ostr = std::cout ) const;
+        /// write weights in a readable table
+       void          write( std::ostream& ostr = std::cout ) const;
+
+        /// size of weight container
+       size_type     size() const;
+       /// return true if weight container is empty
+       bool          empty() const;
+       /// push onto weight container
+       void          push_back( const double& );
+       /// pop from weight container
+       void          pop_back();
+       /// clear the weight container
+       void          clear();
+
+       /// check to see if a name exists in the map
+       bool          has_key( const std::string& s ) const;
+
+        /// access the weight container
+       double&       operator[]( size_type n );  // unchecked access
+        /// access the weight container
+       const double& operator[]( size_type n ) const;
+        /// access the weight container
+       double&       operator[]( const std::string& s );  // unchecked access
+        /// access the weight container
+       const double& operator[]( const std::string& s ) const;
+
+        /// equality
+       bool operator==( const WeightContainer & ) const;
+        /// inequality
+       bool operator!=( const WeightContainer & ) const;
+       
+       /// returns the first element
+       double&       front();
+       /// returns the first element
+       const double& front() const;   
+       /// returns the last element
+       double&       back();
+       /// returns the last element
+       const double& back() const;
+
+       /// begining of the weight container
+       iterator            begin();
+       /// end of the weight container
+       iterator            end();
+       /// begining of the weight container
+       const_iterator      begin() const;
+       /// end of the weight container
+       const_iterator      end() const;
+
+    private:
+        // for internal use only
+
+        /// maplike iterator for the weight container
+       /// for internal use only
+       typedef std::map<std::string,size_type>::iterator       map_iterator;
+        /// const iterator for the weight container
+       /// for internal use only
+       typedef std::map<std::string,size_type>::const_iterator const_map_iterator;
+       /// begining of the weight container
+       /// for internal use only
+       map_iterator            map_begin();
+       /// end of the weight container
+       /// for internal use only
+       map_iterator            map_end();
+       /// begining of the weight container
+       /// for internal use only
+       const_map_iterator      map_begin() const;
+       /// end of the weight container
+       /// for internal use only
+       const_map_iterator      map_end() const;
+       
+       /// used by the constructors to set initial names
+       /// for internal use only
+       void set_default_names( size_type n );
+       
+    private:
+       std::vector<double>          m_weights;
+       std::map<std::string,size_type> m_names;
+    };
+
+    ///////////////////////////
+    // INLINES               //
+    ///////////////////////////
+
+    inline WeightContainer::WeightContainer( const WeightContainer& in )
+       : m_weights(in.m_weights), m_names(in.m_names)
+    {}
+
+    inline WeightContainer::~WeightContainer() {}
+
+    inline void WeightContainer::swap( WeightContainer & other)
+    { 
+        m_weights.swap( other.m_weights ); 
+        m_names.swap( other.m_names ); 
+    }
+
+    inline WeightContainer& WeightContainer::operator=
+    ( const WeightContainer& in ) {
+        /// best practices implementation
+       WeightContainer tmp( in );
+       swap( tmp );
+       return *this;
+    }
+
+    inline WeightContainer& WeightContainer::operator=
+    ( const std::vector<double>& in ) {
+        /// best practices implementation
+       WeightContainer tmp( in );
+       swap( tmp );
+       return *this;
+    }
+
+    inline WeightContainer::size_type WeightContainer::size() const { return m_weights.size(); }
+
+    inline bool WeightContainer::empty() const { return m_weights.empty(); }
+
+    inline void WeightContainer::clear() 
+    { 
+       m_weights.clear(); 
+       m_names.clear(); 
+    }
+
+    inline double& WeightContainer::operator[]( size_type n ) 
+    { return m_weights[n]; }
+
+    inline const double& WeightContainer::operator[]( size_type n ) const
+    { return m_weights[n]; }
+
+    inline double& WeightContainer::front() { return m_weights.front(); }
+
+    inline const double& WeightContainer::front() const 
+    { return m_weights.front(); }
+
+    inline double& WeightContainer::back() { return m_weights.back(); }
+
+    inline const double& WeightContainer::back() const 
+    { return m_weights.back(); }
+
+    inline WeightContainer::iterator WeightContainer::begin() 
+    { return m_weights.begin(); }
+
+    inline WeightContainer::iterator WeightContainer::end() 
+    { return m_weights.end(); }
+
+    inline WeightContainer::const_iterator WeightContainer::begin() const 
+    { return m_weights.begin(); }
+
+    inline WeightContainer::const_iterator WeightContainer::end() const 
+    { return m_weights.end(); }
+
+    inline WeightContainer::map_iterator WeightContainer::map_begin() 
+    { return m_names.begin(); }
+
+    inline WeightContainer::map_iterator WeightContainer::map_end() 
+    { return m_names.end(); }
+
+    inline WeightContainer::const_map_iterator WeightContainer::map_begin() const 
+    { return m_names.begin(); }
+
+    inline WeightContainer::const_map_iterator WeightContainer::map_end() const 
+    { return m_names.end(); }
+
+} // HepMC
+
+#endif  // HEPMC_WEIGHT_CONTAINER_H
+//--------------------------------------------------------------------------
+
+
+
diff --git a/TEvtGen/HepMC/enable_if.h b/TEvtGen/HepMC/enable_if.h
new file mode 100644 (file)
index 0000000..1c64790
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef ENABLE_IF_H
+#define ENABLE_IF_H
+// author: Walter Brown
+
+// ----------------------------------------------------------------------
+// prolog
+
+namespace HepMC  {
+namespace detail {
+
+
+// ----------------------------------------------------------------------
+// enable_if<>
+
+/// internal - used to decide if a class is arithmetic
+template< bool, class >
+struct enable_if
+{ };
+
+/// internal - use if class T is arithmetic
+template< class T >
+struct enable_if<true, T>
+{
+  typedef  T  type;    //!< check type of class T
+};
+
+
+// ----------------------------------------------------------------------
+// disable_if<>
+
+/// internal - used by SimpleVector to decide if a class is arithmetic
+template< bool, class >
+struct disable_if
+{ };
+
+/// internal - used by SimpleVector to decide if a class is arithmetic
+template< class T >
+struct disable_if<false, T>
+{
+  typedef  T  type;    //!< check type of class T
+};
+
+
+// ----------------------------------------------------------------------
+// epilog
+
+}  // namespace detail
+}  // namespace HepMC
+
+#endif  // ENABLE_IF_H
diff --git a/TEvtGen/HepMC/filterEvent.cc b/TEvtGen/HepMC/filterEvent.cc
new file mode 100644 (file)
index 0000000..60d20ae
--- /dev/null
@@ -0,0 +1,82 @@
+// from Andy Buckley
+
+#include "HepMC/GenEvent.h"
+
+  void filterEvent(HepMC::GenEvent* ge) {
+    // We treat beam particles a bit specially
+    const std::pair<HepMC::GenParticle*, HepMC::GenParticle*> beams = ge->beam_particles();
+
+    // Make list of non-physical particle entries
+    std::vector<HepMC::GenParticle*> unphys_particles;
+    for (HepMC::GenEvent::particle_const_iterator pi = ge->particles_begin(); 
+         pi != ge->particles_end(); ++pi) {
+      // Beam particles might not have status = 4, but we want them anyway
+      if (beams.first == *pi || beams.second == *pi) continue;
+      // Filter by status
+      const int status = (*pi)->status();
+      if (status != 1 && status != 2 && status != 4) {
+        unphys_particles.push_back(*pi);
+      }      
+    }
+
+    // Remove each unphysical particle from the list
+    while (unphys_particles.size()) {
+      HepMC::GenParticle* gp = unphys_particles.back();
+
+      // Get start and end vertices
+      HepMC::GenVertex* vstart = gp->production_vertex();
+      HepMC::GenVertex* vend = gp->end_vertex();
+
+      if (vend == vstart) {
+        // Deal with loops
+        vstart->remove_particle(gp);
+      } else {
+
+        // Connect decay particles from end vertex to start vertex
+        /// @todo Have to build a list, since the GV::add_particle_out method modifies the end vertex!
+        if (vend && vend->particles_out_size()) {
+          std::vector<HepMC::GenParticle*> end_particles;
+          for (HepMC::GenVertex::particles_out_const_iterator gpe = vend->particles_out_const_begin(); 
+               gpe != vend->particles_out_const_end(); ++gpe) {
+            end_particles.push_back(*gpe);
+          }
+          // Reset production vertices of child particles to bypass unphysical particle
+          for (std::vector<HepMC::GenParticle*>::const_iterator gpe = end_particles.begin();
+               gpe != end_particles.end(); ++gpe) {
+            //std::cout << vstart << ", " << vend << std::endl;
+            if (vstart) vstart->add_particle_out(*gpe);
+          }
+        } else {
+          // If null end_vertex... stable unphysical particle?
+        }
+
+        // Delete unphysical particle and its orphaned end vertex
+        delete vend;
+        if (vstart) {
+          delete vstart->remove_particle(gp);
+        }// else {
+        /// @todo Why does this cause an error?
+        //  delete gp;
+        //}
+      }
+
+      // Remove deleted particle from list
+      unphys_particles.pop_back();
+      //std::cout << unphys_particles.size() << std::endl;
+    }
+
+    // Delete any orphaned vertices
+    std::vector<HepMC::GenVertex*> orphaned_vtxs;
+    for (HepMC::GenEvent::vertex_const_iterator vi = ge->vertices_begin(); 
+         vi != ge->vertices_end(); ++vi) {
+      if ((*vi)->particles_in_size() == 0 && (*vi)->particles_out_size() == 0) {
+        orphaned_vtxs.push_back(*vi);
+      }
+    }
+    while (orphaned_vtxs.size()) {
+      delete orphaned_vtxs.back();
+      orphaned_vtxs.pop_back();
+    }
+  }
+
+
diff --git a/TEvtGen/HepMC/is_arithmetic.h b/TEvtGen/HepMC/is_arithmetic.h
new file mode 100644 (file)
index 0000000..ff2d0da
--- /dev/null
@@ -0,0 +1,94 @@
+#ifndef IS_ARITHMETIC
+#define IS_ARITHMETIC
+// author: Walter Brown
+
+// ----------------------------------------------------------------------
+// prolog
+
+namespace HepMC  {
+
+///
+/// \namespace detail
+/// internal namespace
+///
+namespace detail  {
+
+
+// ----------------------------------------------------------------------
+// is_arithmetic<>
+
+/// undefined and therefore non-arithmetic
+template< class T >
+  struct is_arithmetic
+{
+  static  bool const  value = false;
+};
+
+/// character is arithmetic
+template<>
+  struct is_arithmetic<char>
+{ static  bool const  value = true; };
+
+/// unsigned character is arithmetic
+template<>
+  struct is_arithmetic<unsigned char>
+{ static  bool const  value = true; };
+
+/// signed character is arithmetic
+template<>
+  struct is_arithmetic<signed char>
+{ static  bool const  value = true; };
+
+/// short is arithmetic
+template<>
+  struct is_arithmetic<short>
+{ static  bool const  value = true; };
+
+/// unsigned short is arithmetic
+template<>
+  struct is_arithmetic<unsigned short>
+{ static  bool const  value = true; };
+
+/// int is arithmetic
+template<>
+  struct is_arithmetic<int>
+{ static  bool const  value = true; };
+
+/// unsigned int is arithmetic
+template<>
+  struct is_arithmetic<unsigned int>
+{ static  bool const  value = true; };
+
+/// long is arithmetic
+template<>
+  struct is_arithmetic<long>
+{ static  bool const  value = true; };
+
+/// unsigned long is arithmetic
+template<>
+  struct is_arithmetic<unsigned long>
+{ static  bool const  value = true; };
+
+/// float is arithmetic
+template<>
+  struct is_arithmetic<float>
+{ static  bool const  value = true; };
+
+/// double is arithmetic
+template<>
+  struct is_arithmetic<double>
+{ static  bool const  value = true; };
+
+/// long double is arithmetic
+template<>
+  struct is_arithmetic<long double>
+{ static  bool const  value = true; };
+
+
+// ----------------------------------------------------------------------
+// epilog
+
+}  // namespace detail
+}  // namespace HepMC
+
+#endif  // IS_ARITHMETIC
diff --git a/TEvtGen/PHOTOS/CMakeLists.txt b/TEvtGen/PHOTOS/CMakeLists.txt
deleted file mode 100644 (file)
index cb49e20..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- mode: cmake -*-
-# Create a library called "lib<name>" which includes the source files given in
-# the array .
-# The extension is already found.  Any number of sources could be listed here.
-
-set(INCLUDE_DIRECTORIES
-${CMAKE_SOURCE_DIR}/PHOTOS
-#${CMAKE_SOURCE_DIR}/MICROCERN/kerngen
-${ROOT_INCLUDE_DIR}
-)
-
-include_directories( ${INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-${ROOT_LIBRARY_DIR}
-) 
-
-link_directories( ${LINK_DIRECTORIES})
-
-ADD_DEFINITIONS( ${CLIBDEFS} )
-
-SetModule()
-
-include(CMake_libPHOTOS.txt)
-
diff --git a/TEvtGen/PHOTOS/CMake_libPHOTOS.txt b/TEvtGen/PHOTOS/CMake_libPHOTOS.txt
deleted file mode 100644 (file)
index d339d46..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# -*- mode: cmake -*-
-
-Set(SRCS)
-
-set(CSRCS
-#geteni.c
-#fchput.c
-#fchtak.c
-#dummies.c
-)
-
-set(FSRCS
-phcork.F
-phint.F
-phint1.F
-phlupa.F
-phoan1.F
-phoan2.F
-phobo3.F
-phobos.F
-phocha.F
-phochk.F
-phocin.F
-phocor.F
-phodo.F
-phoene.F
-phoerr.F
-phofac.F
-phoin.F
-phoinf.F
-phoini.F
-phomak.F
-phooma.F
-phoout.F
-phopre.F
-phoran.F
-phorep.F
-phorin.F
-phoro2.F
-phoro3.F
-phospi.F
-photos.F
-photos_get.F
-photos_make.F
-photos_set.F
-photri.F
-photwo.F
-phtype.F
-)
-
-
-# fill list of header files from list of source files
-# by exchanging the file extension
-String(REPLACE ".cxx" ".h" HDRS "${SRCS}")
-
-Set(SRCS ${SRCS} ${FSRCS} ${CSRCS})
-
-AddLibrary(photos "${SRCS}" "${HDRS}")
-
diff --git a/TEvtGen/PHOTOS/module.mk b/TEvtGen/PHOTOS/module.mk
deleted file mode 100644 (file)
index bb917ca..0000000
+++ /dev/null
@@ -1,545 +0,0 @@
-#**************************************************************************
-#**** This file is automatically generated from the mkmodules script  *****
-#****          DO NOT EDIT!!                                          *****
-#**************************************************************************
-#-*- Mode: Makefile -*-
-
-#********** This part is for package photos ***********
-
-#Determine if it's a library or a executable
-TYPE=lib
-
-# Package head directory, source and include directories
-MODDIR:=PHOTOS
-MODDIRS:=$(MODDIR)
-MODDIRI:=$(MODDIR)
-MODDIRO:=$(MODDIR)/tgt_$(ALICE_TARGET)
-MODDIRC:=$(MODDIR)/check
-MODDIRZ:=$(MODDIR)/smell
-PHOTOSDIRO:=PHOTOS/tgt_$(ALICE_TARGET)
-
-# Reseting variables before importing pkg-file
-SRCS:=
-HDRS:=
-FSRCS:=
-DHDR:=
-CSRCS:=
-CHDRS:=
-EINCLUDE:=
-EDEFINE:=
-ELIBS:=
-ELIBSDIR:=
-PACKFFLAGS:=
-PACKCXXFLAGS:=
-PACKCFLAGS:=
-PACKDYFLAGS:=
-PACKSOFLAGS:=
-PACKLDFLAGS:=
-PACKBLIBS:=
-EXPORT:=
-EHDRS:=
-CINTHDRS:=
-CINTAUTOLINK:=
-ARLIBS:=
-SHLIBS:=
-
-#-*- Mode: Makefile -*-
-
-FSRCS= phcork.F phint.F phint1.F phlupa.F phoan1.F phoan2.F phobo3.F \
-phobos.F phocha.F phochk.F phocin.F phocor.F phodo.F phoene.F phoerr.F \
-phofac.F phoin.F phoinf.F phoini.F phomak.F phooma.F phoout.F phopre.F \
-phoran.F phorep.F phorin.F phoro2.F phoro3.F phospi.F photos.F photos_get.F \
-photos_make.F photos_set.F photri.F photwo.F phtype.F
-
-#CSRCS= geteni.c fchput.c fchtak.c dummies.c
-
-#ifneq (,$(findstring macosx,$(ALICE_TARGET)))
-#CSRCS+=lnblnk.c
-#endif 
-
-EINCLUDE:= 
-
-#PACKFFLAGS := $(FFLAGS) -IMICROCERN/kerngen
-PACKFFLAGS := $(FFLAGS) -IPYTHIA6  -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET) -lpythia6
-
-
-#-*- Mode: Makefile -*-
-
-
-ifndef PACKFFLAGS
-photosFFLAGS:=$(FFLAGS)
-else
-photosFFLAGS:=$(PACKFFLAGS)
-endif
-
-ifndef PACKCFLAGS
-photosCFLAGS:=$(CFLAGS)
-else
-photosCFLAGS:=$(PACKCFLAGS)
-endif
-
-ifndef PACKCXXFLAGS
-photosCXXFLAGS:=$(CXXFLAGS)
-else
-photosCXXFLAGS:=$(PACKCXXFLAGS)
-endif
-
-ifndef PACKSOFLAGS
-photosSOFLAGS:=$(SOFLAGS)
-else
-photosSOFLAGS:=$(PACKSOFLAGS)
-endif
-
-ifdef DYEXT
-ifndef PACKDYFLAGS
-photosDYFLAGS:=$(DYFLAGS)
-else
-photosDYFLAGS:=$(PACKDYFLAGS)
-endif
-endif
-
-ifndef PACKLDFLAGS
-photosLDFLAGS:=$(LDFLAGS)
-else
-photosLDFLAGS:=$(PACKLDFLAGS)
-endif
-
-ifndef PACKDCXXFLAGS
-photosDCXXFLAGS:=$(CXXFLAGSNO)
-else
-photosDCXXFLAGS:=$(PACKDCXXFLAGS)
-endif
-
-ifndef PACKBLIBS
-photosBLIBS:=$(LIBS)
-else
-photosBLIBS:=$(PACKBLIBS)
-endif
-
-WITHDICT=
-ifneq ($(DHDR),)
-WITHDICT=YES
-else
-ifneq ($(CINTAUTOLINK),)
-WITHDICT=YES
-endif
-endif
-
-# Headerfiles exported to common place:
-photosEXPORT:=$(EXPORT)
-photosEXPORTDEST:=$(patsubst %,$(EXPORTDIR)/%,$(EXPORT))
-
-
-#Extra include,libs, defines etc.
-
-photosDEFINE:=$(EDEFINE) -D_MODULE_=\"PHOTOS\"
-
-photosINC:=$(patsubst %,-I%,$(EINCLUDE)) -IPHOTOS
-
-photosELIBS:=$(patsubst %,-l%,$(ELIBS))
-photosELIBSDEP:=$(patsubst %,lib/tgt_$(ALICE_TARGET)/lib%.$(SOEXT),$(ELIBS))
-photosELIBSDIR:=$(patsubst %,-L%,$(ELIBSDIR))
-
-#c sources and headers
-
-photosCS:=$(patsubst %,$(MODDIR)/%,$(CSRCS))
-photosCH:=$(patsubst %,$(MODDIR)/%,$(CHDRS))
-
-#Fortran sources 
-photosFS:=$(patsubst %,$(MODDIR)/%,$(FSRCS))
-
-#c++ sources and header
-photosS:=$(patsubst %,$(MODDIR)/%,$(SRCS))
-photosH:=$(patsubst %,$(MODDIR)/%,$(HDRS)) $(EHDRS)
-
-#############################################################################
-#
-#            If special rootcint headerfiles is specified use them
-#                         else use all headers
-
-ifndef CINTHDRS
-photosCINTHDRS:=$(photosH)
-else
-photosCINTHDRS:=$(CINTHDRS:%=PHOTOS/%)
-#photosCINTHDRS:=$(pathsubst %,PHOTOS/%,$(CINTHDRS))
-endif
-photosCINTCLASSES:=$(patsubst %.h,%,$(notdir $(photosCINTHDRS)))
-#############################################################################
-
-# Package Dictionary 
-ifneq ($(DHDR),)
-photosDH:=$(MODDIR)/$(DHDR)
-else
-photosDH:=
-endif
-ifneq ($(CINTAUTOLINK),)
-photosDAL:=$(MODDIRO)/G__photosAutoLinkDef.h
-photosDH+=$(photosDAL)
-endif
-
-#All objects
-photosCXXO:=$(patsubst %,$(MODDIRO)/%, $(SRCS:.cxx=.o))
-photosCO:=$(patsubst %,$(MODDIRO)/%, $(CSRCS:.c=.o))
-photosSMALLFO:=$(patsubst %.f,$(MODDIRO)/%.o, $(filter %.f, $(FSRCS)))
-photosCAPITFO:=$(patsubst %.F,$(MODDIRO)/%.o, $(filter %.F, $(FSRCS)))
-photosFO:=$(photosSMALLFO) $(photosCAPITFO)
-photosO:= $(photosCXXO) $(photosFO) $(photosCO)
-photosCHV:=$(patsubst %,$(MODDIRC)/%, $(SRCS:.cxx=.viol))
-photosSML:=$(sort $(patsubst %,$(MODDIRZ)/%, $(filter $(SRCS:.cxx=.smell),$(HDRS:.h=.smell))))
-
-
-ifdef WITHDICT
-  photosDS:=$(MODDIRO)/G__photos.cxx
-  photosDO:=$(MODDIRO)/G__photos.o
-  photosDDEP:=$(photosDO:.o=.d)
-  photosDEP:=$(photosO:.o=.d) $(photosDDEP)
-else
-  photosDS:=
-  photosDO:=
-  photosDDEP:=
-  photosDEP:=$(photosO:.o=.d)
-endif
-
-
-#The actual library file
-
-photosLIB:=$(LIBPATH)/libphotos.$(SOEXT)
-
-ifneq ($(DYEXT),)
-photosDLIB:=$(LIBPATH)/libphotos.$(DYEXT)
-endif
-
-photosALIB:=$(LIBPATH)/libphotos.$(AEXT)
-
-#Add this to the modules libs
-ifeq ($(TYPE),lib)
-PHOTOSLIBS += $(photosLIB)
-PHOTOSALIBS += $(photosALIB)
-ifneq ($(DYEXT),)
-PHOTOSDLIBS += $(photosDLIB)
-endif
-endif
-
-#The actual binary file
-
-photosBIN:=$(BINPATH)/photos
-
-#Add to modules list of binaries
-PHOTOSBINS += $(photosBIN)
-
-# Use in the main Makefile
-
-ifeq ($(TYPE),lib)
-ALLLIBS += $(photosLIB)
-ALLALIBS += $(photosALIB)
-ifneq ($(DYEXT),)
-ALLLIBS += $(photosDLIB)
-endif
-BINLIBS += -lphotos
-else
-ALLEXECS += $(photosBIN)
-endif
-
-ifeq ($(DYEXT),)
-photosLIB := $(photosLIB)
-else
-photosLIB := $(photosLIB)
-endif
-
-# include all dependence files
-INCLUDEFILES +=$(photosDEP)
-
-EXPORTFILES += $(photosEXPORTDEST)
-
-#local rules
-
-#The exportfiles only include if any!!
-
-ifdef photosEXPORT
-#$(photosEXPORTDEST): $(patsubst %,PHOTOS/%,$(photosEXPORT))
-
-$(photosEXPORTDEST): $(EXPORTDIR)/%.h: PHOTOS/%.h
-ifndef ALIQUIET
-         @echo "***** Copying file $^ to $@ *****"
-endif
-         @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-         @cp $^ $@     
-endif
-
-#------------------------------------------------------------------------
-
-ifneq (,$(findstring macosx,$(ALICE_TARGET)))
-$(photosLIB): $(photosDLIB) $(photosO) $(photosDO) PHOTOS/module.mk
-ifndef ALIQUIET
-         @echo "***** Linking library $@ *****"
-endif
-         $(MUTE)rm -f $@; cd $(dir $@); ln -s $(notdir $(photosDLIB)) $(notdir $@)
-else
-$(photosLIB):$(photosO) $(photosDO) PHOTOS/module.mk
-ifndef ALIQUIET
-         @echo "***** Linking library $@ *****"
-endif
-         \rm -f "$(CURDIR)"/$@ ;\
-         cd $(PHOTOSDIRO) ;\
-         $(SHLD) $(photosSOFLAGS) -o "$(CURDIR)"/$@ $(patsubst $(PHOTOSDIRO)/%,%,$(photosO) $(photosDO))  $(photosELIBSDIR) $(photosELIBS) $(SHLIB);\
-         chmod a-w "$(CURDIR)"/$@ ;\
-         cd $(ALICE_ROOT)
-endif
-
-ifneq ($(DYEXT),)
-$(photosDLIB):$(photosO) $(photosDO) PHOTOS/module.mk
-ifndef ALIQUIET
-         @echo "***** Linking library $@ *****"
-endif
-         \rm -f "$(CURDIR)"/$@ ;\
-         cd $(PHOTOSDIRO) ;\
-         $(DYLD) $(photosDYFLAGS) -o "$(CURDIR)"/$@ $(patsubst $(PHOTOSDIRO)/%,%,$(photosO) $(photosDO))  $(photosELIBSDIR) $(photosELIBS) $(DYLIB);\
-         chmod a-w "$(CURDIR)"/$@ ;\
-         cd $(ALICE_ROOT) 
-endif
-
-#------------------------------------------------------------------------
-
-$(photosALIB):$(photosO) $(photosDO) PHOTOS/module.mk
-ifndef ALIQUIET
-         @echo "***** Linking static library $@ *****"
-endif
-         \rm -f "$(CURDIR)"/$@ ;\
-         cd $(PHOTOSDIRO) ;\
-         $(ALLD) $(ALFLAGS) "$(CURDIR)"/$@ $(patsubst $(PHOTOSDIRO)/%,%,$(photosO) $(photosDO))  $(photosELIBSDIR) $(photosELIBS) $(ALLIB);\
-          cd $(ALICE_ROOT)
-
-
-$(photosBIN):$(photosO) $(photosDO) PHOTOS/module.mk
-ifndef ALIQUIET
-         @echo "***** Making executable $@ *****"
-endif
-ifeq ($(ALIPROFILE),YES)
-       $(MUTE)$(LD) $(photosLDFLAGS) $(photosO) $(ARLIBS) $(SHLIBS) $(photosBLIBS) $(EXEFLAGS) -o $@
-else
-         $(MUTE)$(LD) $(photosLDFLAGS) $(photosO) $(photosDO) $(BINLIBDIRS) $(photosELIBSDIR) $(photosELIBS) $(photosBLIBS) $(EXEFLAGS) -o $@
-endif
-
-$(photosDAL): $(photosCINTHDRS) PHOTOS/module.mk
-ifndef ALIQUIET
-        @echo "***** Creating $@ *****";
-endif
-       $(MUTE)echo '//automatically generated ROOT DICT definition' > $@
-       $(MUTE)echo '//!!! DO NOT EDIT THIS FILE !!!' >> $@
-       $(MUTE)echo '#ifdef __CINT__' >> $@
-       $(MUTE)echo '#pragma link off all globals;' >> $@
-       $(MUTE)echo '#pragma link off all classes;' >> $@
-       $(MUTE)echo '#pragma link off all functions;' >> $@
-       $(MUTE)$(foreach i, $(photosCINTCLASSES), \
-          echo "#pragma link C++ class $(i)+;" >> $@ ;)
-       $(MUTE)echo '#endif' >> $@
-
-$(photosDS): $(photosCINTHDRS) $(photosDH) PHOTOS/module.mk
-ifndef ALIQUIET
-        @echo "***** Creating $@ *****";
-endif
-        @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-        @\rm -f $(patsubst %.cxx,%.d, $@)
-        $(MUTE)rootcint -f $@ -c $(photosDEFINE) $(CINTFLAGS) $(photosINC) $(photosCINTHDRS) $(photosDH)
-
-$(photosDO): $(photosDS) 
-ifndef ALIQUIET
-               @echo "***** Compiling $< *****";
-endif
-               $(MUTE)$(CXX) $(photosDEFINE) -c $(photosINC)  -I$(ALICE_ROOT) $< -o $@ $(photosDCXXFLAGS)
-
-
-#Different targets for the module
-
-ifeq ($(TYPE),lib)
-all-PHOTOS: $(photosLIB)
-ifneq ($(DYEXT),)
-all-PHOTOS: $(photosDLIB)
-endif
-else
-all-PHOTOS: $(photosBIN)
-endif
-
-
-depend-photos: $(photosDEP)
-
-# determination of object files
-$(photosCXXO): $(MODDIRO)/%.o: $(MODDIR)/%.cxx $(MODDIRO)/%.d 
-ifndef ALIQUIET
-       @echo "***** Compiling $< *****";
-endif
-       @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-       $(MUTE)$(CXX) $(photosDEFINE) -c $(photosINC)   $< -o $@ $(photosCXXFLAGS)
-
-$(photosCAPITFO): $(MODDIRO)/%.o: $(MODDIR)/%.F $(MODDIRO)/%.d 
-ifndef ALIQUIET
-       @echo "***** Compiling $< *****";
-endif
-       @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-       $(MUTE)$(F77) -c $(photosINC)  $< -o $@ $(photosFFLAGS)
-
-$(photosSMALLFO): $(MODDIRO)/%.o: $(MODDIR)/%.f $(MODDIRO)/%.d 
-ifndef ALIQUIET
-       @echo "***** Compiling $< *****";
-endif
-       @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-       $(MUTE)$(F77) -c $(photosINC)  $< -o $@ $(photosFFLAGS)
-
-$(photosCO): $(MODDIRO)/%.o: $(MODDIR)/%.c $(MODDIRO)/%.d 
-ifndef ALIQUIET
-       @echo "***** Compiling $< *****";
-endif
-       @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-       $(MUTE)$(CC) $(photosDEFINE) -c  $(photosINC)  $< -o $@   $(photosCFLAGS)
-
-$(photosDDEP): $(photosDS)
-ifndef ALIQUIET
-               @echo "***** Making dependences for $< *****";
-endif
-               @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-               @share/alibtool depend "$(photosELIBSDIR) $(photosINC) $(DEPINC)  $<" > $@
-
-$(photosCXXO:.o=.d): $(MODDIRO)/%.d: $(MODDIRS)/%.cxx
-ifndef ALIQUIET
-               @echo "***** Making dependences for $< *****";
-endif
-               @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-               @share/alibtool depend "$(photosDEFINE) $(photosELIBSDIR) $(photosINC) $(DEPINC)  $<" > $@
-
-$(photosSMALLFO:.o=.d): $(MODDIRO)/%.d: $(MODDIRS)/%.f
-ifndef ALIQUIET
-               @echo "***** Making dependences for $< *****";
-endif
-               @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-               @share/alibtool dependF "$(photosELIBSDIR) $(photosINC) $(DEPINC)  $<" > $@
-
-$(photosCAPITFO:.o=.d): $(MODDIRO)/%.d: $(MODDIRS)/%.F
-ifndef ALIQUIET
-               @echo "***** Making dependences for $< *****";
-endif
-               @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-               $(MUTE)share/alibtool dependF "$(photosELIBSDIR) $(photosINC) $(DEPINC)  $<" > $@
-
-$(photosCO:.o=.d): $(MODDIRO)/%.d: $(MODDIRS)/%.c
-ifndef ALIQUIET
-               @echo "***** Making dependences for $< *****";
-endif
-               @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
-               @share/alibtool depend "$(photosDEFINE) $(photosELIBSDIR) $(photosINC) $(DEPINC) $<" > $@
-
-.PRECIOUS: $(patsubst %.cxx,$(MODDIRO)/%.d,$(SRCS))
-.PRECIOUS: $(patsubst %.c,$(MODDIRO)/%.d,$(CSRCS))
-.PRECIOUS: $(patsubst %.F,$(MODDIRO)/%.d,$(patsubst %.f,$(MODDIRO)/%.d,$(FSRCS)))
-
-check-PHOTOS: $(photosCHV)
-
-# IRST coding rule check 
-$(photosCHV:.viol=.i): $(MODDIRC)/%.i: $(MODDIR)/%.cxx $(MODDIRO)/%.d
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       $(MUTE)$(CXX) -E $(photosDEFINE) $(photosINC) -I. $< > $@ $(photosCXXFLAGS)
-       @cd $(dir $@) ; $(IRST_INSTALLDIR)/patch/patch4alice.prl $(notdir $@)
-
-# IRST coding rule check
-$(photosCHV): $(MODDIRC)/%.viol: $(MODDIRC)/%.i
-       $(MUTE)echo $@ ; $(CODE_CHECK) $< $(shell echo $(dir $<) | sed -e 's:/check::') > $@
-
-.SECONDARY: $(photosCHV:.viol=.i) $(photosCHI:.viol=.ii)
-
-PACKREVENG += $(photosCHV:.viol=.ii)
-
-# IRST code smell checker
-
-smell-PHOTOS: $(photosSML)
-
-$(photosSML:.smell=_cxx.ml) : $(MODDIRZ)/%_cxx.ml : $(MODDIR)/%.cxx
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       $(MUTE)src2srcml $< $@
-
-$(photosSML:.smell=_h.ml) : $(MODDIRZ)/%_h.ml : $(MODDIR)/%.h
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       $(MUTE)src2srcml $< $@
-
-$(photosSML) : $(MODDIRZ)/%.smell : $(MODDIRZ)/%_cxx.ml $(MODDIRZ)/%_h.ml
-       $(MUTE)echo smelling $@
-       $(MUTE)java -classpath $(SMELL_DETECTOR_DIR):$(SMELL_DETECTOR_DIR)/xom-1.1.jar -Xmx500m SmellDetector $^ > $@
-       $(MUTE)[ -s $@ ] || touch $@
-
-.SECONDARY: $(photosSML:.smell=_cxx.ml) $(photosSML:.smell=_h.ml)
-
-# targets to create .par archives (jgrosseo)
-photos.par: $(patsubst %,PHOTOS/photos/%,$(filter-out dict.%, $(HDRS) $(SRCS) $(DHDR) $(PKGFILE) $(FSRCS) Makefile Makefile.arch libphotos.pkg PROOF-INF))
-       @echo "Creating archive" $@ ...
-       @cd PHOTOS; (tar cfzh ../$@ photos 2> /dev/null && echo "package" $@ "created in" $(PWD)/$@) || (tar cfzh /tmp/$@ photos 2> /dev/null && echo "package" $@ "created in /tmp/"$@)
-       @rm -rf PHOTOS/photos
-
-PHOTOS/photos/Makefile: PHOTOS/Makefile
-       @echo Copying $< to $@ with transformations
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @sed 's/include \$$(ROOTSYS)\/test\/Makefile.arch/include Makefile.arch/; s/PACKAGE = .*/PACKAGE = photos/' < $^ > $@
-
-PHOTOS/photos/Makefile.arch: $(ROOTSYS)/test/Makefile.arch
-       @echo Copying $< to $@
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @cp -pR $^ $@
-
-PHOTOS/photos/PROOF-INF: PHOTOS/PROOF-INF.photos
-       @echo Copying $< to $@
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @cp -pR $^ $@
-
-PHOTOS/photos/%: PHOTOS/%
-       @echo Copying $< to $@
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @cp -pR $< $@
-
-test-photos.par: photos.par
-       @echo "INFO: The file $< is now tested, in case of an error check in par-tmp/photos."
-       @mkdir -p par-tmp
-       @cd par-tmp; tar xfz ../$<;     cd $(subst .par,,$<); PROOF-INF/BUILD.sh
-       @rm -rf par-tmp/photos
-       @echo "INFO: Testing succeeded (already cleaned up)"
-#-*- Mode: Makefile -*-
-
-
-reveng-PHOTOS:         PHOTOS/check/classDiagram.dot
-
-PHOTOS/check/classDiagram.dot: $(PACKREVENG)
-       @$(REV_ENG) $^
-       @-mv classDiagram.dot $@
-
-revdisp-PHOTOS:        reveng-PHOTOS
-       @echo revdisp for PHOTOS
-       @cd PHOTOS/check ; \
-      $(IRST_INSTALLDIR)/webreveng/create-class-diagram-pages.sh
-       @sed -e "s/STEER/PHOTOS/g" < $(IRST_INSTALLDIR)/webreveng/WWW/STEER/HomePage.html > PHOTOS/check/HomePage.html
-
-PACKREVENG =
-
-#  Clean option for the whole module
-clean-PHOTOS:
-ifndef ALIQUIET
-               @echo "***** Cleaning PHOTOS *****"
-endif
-               $(MUTE)rm PHOTOS/module.mk
-               $(MUTE)rm -rf PHOTOS/tgt_$(ALICE_TARGET) 
-               $(MUTE)rm -f $(PHOTOSLIBS)
-               $(MUTE)rm -f $(PHOTOSBINS)
-
-clean-check-PHOTOS:
-ifndef ALIQUIET
-               @echo "***** Cleaning code check for PHOTOS *****"
-endif
-               $(MUTE)rm -f `find PHOTOS/check -name '*.i'` `find PHOTOS/check -name '*.ii'` `find PHOTOS/check -name '*.viol'`
-
-clean-smell-PHOTOS:
-ifndef ALIQUIET
-               @echo "***** Cleaning code smell for PHOTOS *****"
-endif
-               $(MUTE)rm -f `find PHOTOS/check -name '*.ml'` `find PHOTOS/check -name '*.smell'`
-
-clean-reveng-PHOTOS:
-ifndef ALIQUIET
-               @echo "***** Cleaning reverse engineering files for PHOTOS *****"
-endif
-               $(MUTE)rm -f `find PHOTOS/check -name '*.dot'`
-
diff --git a/TEvtGen/PHOTOS/phcork.F b/TEvtGen/PHOTOS/phcork.F
deleted file mode 100644 (file)
index 9eaaa73..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-
-
-
-      SUBROUTINE PHCORK(MODCOR)
-      implicit none
-C.----------------------------------------------------------------------
-C.
-C.    PHCORK: corrects kinmatics of subbranch needed if host program
-C.            produces events with the shaky momentum conservation
-C
-C.    Input Parameters:   Common /PHOEVT/, MODCOR
-C.                        MODCOR >0 type of action
-C.                               =1 no action
-C.                               =2 corrects energy from mass
-C.                               =3 corrects mass from energy
-C.                               =4 corrects energy from mass for 
-C.                                  particles up to .4 GeV mass, 
-C.                                  for heavier ones corrects mass,
-C.                               =0 execution mode 
-C.
-C.    Output Parameters:  corrected /PHOEVT/
-C.
-C.    Author(s):  P.Golonka, Z. Was               Created at:  01/02/99
-C.                                               Modified  :  08/02/99
-C.----------------------------------------------------------------------
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      
-      REAL*8 M,P2,PX,PY,PZ,E,EN,MCUT
-      INTEGER MODCOR,MODOP,I,IEV,IPRINT
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-
-      INTEGER PHLUN
-      COMMON/PHOLUN/PHLUN
-
-      COMMON /PHNUM/ IEV
-      SAVE MODOP
-      DATA MODOP  /0/
-      SAVE IPRINT
-      DATA IPRINT /0/
-      SAVE MCUT
-      IF (MODCOR.NE.0) THEN 
-C       INITIALIZATION
-        MODOP=MODCOR
-
-        WRITE(PHLUN,*) 'Message from PHCORK(MODCOR):: initialization'
-        IF     (MODOP.EQ.1) THEN
-          WRITE(PHLUN,*) 'MODOP=1 -- no corrections on event: DEFAULT' 
-        ELSEIF (MODOP.EQ.2) THEN
-          WRITE(PHLUN,*) 'MODOP=2 -- corrects Energy from mass'
-        ELSEIF (MODOP.EQ.3) THEN
-          WRITE(PHLUN,*) 'MODOP=3 -- corrects mass from Energy'
-        ELSEIF (MODOP.EQ.4) THEN
-          WRITE(PHLUN,*) 'MODOP=4 -- corrects Energy from mass to Mcut'
-          WRITE(PHLUN,*) '           and mass from  energy above  Mcut '
-          MCUT=0.4
-          WRITE(PHLUN,*) 'Mcut=',MCUT,'GeV'
-        ELSE
-          WRITE(PHLUN,*) 'PHCORK wrong MODCOR=',MODCOR
-          STOP
-        ENDIF
-        RETURN
-      ENDIF
-
-      IF (MODOP.EQ.0.AND.MODCOR.EQ.0) THEN
-        WRITE(PHLUN,*) 'PHCORK lack of initialization'
-        STOP
-      ENDIF
-
-C execution mode
-C ==============
-C ============== 
-
-     
-        PX=0
-        PY=0
-        PZ=0
-        E =0
-
-      IF    (MODOP.EQ.1) THEN
-C     -----------------------
-C       In this case we do nothing
-        RETURN
-      ELSEIF(MODOP.EQ.2) THEN
-C     -----------------------
-CC      lets loop thru all daughters and correct their energies 
-CC      according to E^2=p^2+m^2
-
-       DO I=3,NPHO
-         
-         PX=PX+PPHO(1,I)
-         PY=PY+PPHO(2,I)
-         PZ=PZ+PPHO(3,I)
-
-         P2=PPHO(1,I)**2+PPHO(2,I)**2+PPHO(3,I)**2
-
-         EN=SQRT( PPHO(5,I)**2 + P2)
-         
-         IF (IPRINT.EQ.1)
-     &   WRITE(PHLUN,*) 'CORRECTING ENERGY OF ',I,':',
-     &        PPHO(4,I),'=>',EN
-
-         PPHO(4,I)=EN
-         E = E+PPHO(4,I)
-
-       ENDDO
-      
-      ELSEIF(MODOP.EQ.3) THEN
-C     -----------------------
-
-CC      lets loop thru all daughters and correct their masses 
-CC      according to E^2=p^2+m^2
-
-       DO I=3,NPHO
-         
-         PX=PX+PPHO(1,I)
-         PY=PY+PPHO(2,I)
-         PZ=PZ+PPHO(3,I)
-         E = E+PPHO(4,I)
-
-         P2=PPHO(1,I)**2+PPHO(2,I)**2+PPHO(3,I)**2
-
-         M=SQRT(ABS( PPHO(4,I)**2 - P2))
-
-         IF (IPRINT.EQ.1)
-     &   WRITE(PHLUN,*) 'CORRECTING MASS OF ',I,':',
-     &        PPHO(5,I),'=>',M
-
-         PPHO(5,I)=M
-
-       ENDDO
-      
-
-      ELSEIF(MODOP.EQ.4) THEN
-C     -----------------------
-            
-CC      lets loop thru all daughters and correct their masses 
-CC      or energies according to E^2=p^2+m^2
-
-       DO I=3,NPHO
-         
-         PX=PX+PPHO(1,I)
-         PY=PY+PPHO(2,I)
-         PZ=PZ+PPHO(3,I)
-
-         P2=PPHO(1,I)**2+PPHO(2,I)**2+PPHO(3,I)**2
-
-         M=SQRT(ABS( PPHO(4,I)**2 - P2))
-
-         IF (M.GT.MCUT) THEN
-          IF (IPRINT.EQ.1)
-     &    WRITE(PHLUN,*) 'CORRECTING MASS OF ',I,':',
-     &         PPHO(5,I),'=>',M
-          PPHO(5,I)=M
-          E = E+PPHO(4,I)
-         ELSE
-
-          EN=SQRT( PPHO(5,I)**2 + P2)
-
-         IF (IPRINT.EQ.1)
-     &    WRITE(PHLUN,*) 'CORRECTING ENERGY OF ',I,':',
-     &        PPHO(4,I),'=>',EN
-
-          PPHO(4,I)=EN
-          E = E+PPHO(4,I)
-         ENDIF
-
-       ENDDO
-      ENDIF
-C     -----
-
-       IF (IPRINT.EQ.1) THEN
-        WRITE(PHLUN,*) 'CORRECTING MOTHER'
-        WRITE(PHLUN,*) 'PX:',PPHO(1,1),'=>',PX-PPHO(1,2)
-        WRITE(PHLUN,*) 'PY:',PPHO(2,1),'=>',PY-PPHO(2,2)
-        WRITE(PHLUN,*) 'PZ:',PPHO(3,1),'=>',PZ-PPHO(3,2)
-        WRITE(PHLUN,*) ' E:',PPHO(4,1),'=>',E-PPHO(4,2)
-       ENDIF
-
-       PPHO(1,1)=PX-PPHO(1,2)
-       PPHO(2,1)=PY-PPHO(2,2)
-       PPHO(3,1)=PZ-PPHO(3,2)
-       PPHO(4,1)=E -PPHO(4,2)
-
-       P2=PPHO(1,1)**2+PPHO(2,1)**2+PPHO(3,1)**2
-
-       IF (PPHO(4,1)**2.GT.P2) THEN
-          M=SQRT( PPHO(4,1)**2 - P2 )
-          IF (IPRINT.EQ.1)
-     &    WRITE(PHLUN,*) ' M:',PPHO(5,1),'=>',M
-          PPHO(5,1)=M
-       ENDIF
-
-      CALL PHLUPA(25)
-
-      END
diff --git a/TEvtGen/PHOTOS/phint.F b/TEvtGen/PHOTOS/phint.F
deleted file mode 100644 (file)
index 7cdb11a..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-
-      FUNCTION PHINT(IDUM)
-C.----------------------------------------------------------------------
-C.
-C.    PHINT:   PHotos INTerference
-C.
-C.    Purpose:  Calculates interference between emission of photons from
-C.              different possible chaged daughters stored in
-C.              the  HEP common /PHOEVT/. 
-C.
-C.    Input Parameter:    commons /PHOEVT/ /PHOMOM/ /PHOPHS/
-C.    
-C.
-C.    Output Parameters:  
-C.                        
-C.
-C.    Author(s):  Z. Was,                         Created at:  10/08/93
-C.                                                Last Update: 
-C.
-C.----------------------------------------------------------------------
-
-      IMPLICIT NONE
-      REAL*8 PHINT,phint1
-      REAL*8 PHOCHA
-      INTEGER IDUM
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      DOUBLE PRECISION MCHSQR,MNESQR
-      REAL*8 PNEUTR
-      COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
-      DOUBLE PRECISION COSTHG,SINTHG
-      REAL*8 XPHMAX,XPHOTO
-      COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
-      REAL*8 MPASQR,XX,BETA,PQ1(4),PQ2(4),PPHOT(4)
-      REAL*8 SS,PP2,PP,E1,E2,Q1,Q2,COSTHE
-      LOGICAL IFINT
-      INTEGER K,IDENT 
-C
-      DO  K=JDAPHO(2,1),JDAPHO(1,1),-1
-         IF(IDPHO(K).NE.22) THEN
-           IDENT=K
-           GOTO 20
-         ENDIF
-      ENDDO
- 20   CONTINUE
-C check if there is a photon
-      IFINT= NPHO.GT.IDENT
-C check if it is two body + gammas reaction
-      IFINT= IFINT.AND.(IDENT-JDAPHO(1,1)).EQ.1
-C check if two body was particle antiparticle (we improve on it !
-C      IFINT= IFINT.AND.IDPHO(JDAPHO(1,1)).EQ.-IDPHO(IDENT)
-C check if particles were charged
-      IFINT= IFINT.AND.abs(PHOCHA(IDPHO(IDENT))).GT.0.01D0
-C check if they have both charge
-      IFINT= IFINT.AND.
-     $       abs(PHOCHA(IDPHO(JDAPHO(1,1)))).gt.0.01D0
-C calculates interference weight contribution
-      IF(IFINT) THEN
-        MPASQR = PPHO(5,1)**2
-        XX=4.D0*MCHSQR/MPASQR*(1.-XPHOTO)/(1.-XPHOTO+(MCHSQR-MNESQR)/
-     &     MPASQR)**2
-         BETA=SQRT(1.D0-XX)
-         PHINT  = 2D0/(1D0+COSTHG**2*BETA**2)
-         SS =MPASQR*(1.D0-XPHOTO)
-         PP2=((SS-MCHSQR-MNESQR)**2-4*MCHSQR*MNESQR)/SS/4
-         PP =SQRT(PP2)
-         E1 =SQRT(PP2+MCHSQR)
-         E2 =SQRT(PP2+MNESQR)
-         PHINT= (E1+E2)**2/((E2+COSTHG*PP)**2+(E1-COSTHG*PP)**2)
-C
-      q1=PHOCHA(IDPHO(JDAPHO(1,1)))
-      q2=PHOCHA(IDPHO(IDENT))
-      do k=1,4
-       pq1(k)=ppho(k,JDAPHO(1,1))
-       pq2(k)=ppho(k,JDAPHO(1,1)+1)
-       pphot(k)=ppho(k,npho)
-      enddo
-       costhe=(pphot(1)*pq1(1)+pphot(2)*pq1(2)+pphot(3)*pq1(3))
-       costhe=costhe/sqrt(pq1(1)**2+pq1(2)**2+pq1(3)**2)
-       costhe=costhe/sqrt(pphot(1)**2+pphot(2)**2+pphot(3)**2)
-C
-! --- this IF checks whether JDAPHO(1,1) was MCH or MNE. 
-! --- COSTHG angle (and in-generation variables) may be better choice 
-! --- than costhe. note that in the formulae below amplitudes were 
-! --- multiplied by (E2+COSTHG*PP)*(E1-COSTHG*PP). 
-        IF (costhg*costhe.GT.0) then
-
-         PHINT= (q1*(E2+COSTHG*PP)-q2*(E1-COSTHG*PP))**2
-     &         /(q1**2*(E2+COSTHG*PP)**2+q2**2*(E1-COSTHG*PP)**2)
-        ELSE
-
-         PHINT= (q1*(E1-COSTHG*PP)-q2*(E2+COSTHG*PP))**2
-     &         /(q1**2*(E1-COSTHG*PP)**2+q2**2*(E2+COSTHG*PP)**2)
-        ENDIF
-      ELSE
-         PHINT  = 1D0
-      ENDIF
-         phint1=1
-      END
diff --git a/TEvtGen/PHOTOS/phint1.F b/TEvtGen/PHOTOS/phint1.F
deleted file mode 100644 (file)
index c2cd49d..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-      FUNCTION PHINT1(IDUM)
-C.----------------------------------------------------------------------
-C.
-C.    PHINT:   PHotos INTerference (Old version kept for tests only.
-C.
-C.    Purpose:  Calculates interference between emission of photons from
-C.              different possible chaged daughters stored in
-C.              the  HEP common /PHOEVT/.  
-C.
-C.    Input Parameter:    commons /PHOEVT/ /PHOMOM/ /PHOPHS/
-C.    
-C.
-C.    Output Parameters:  
-C.                        
-C.
-C.    Author(s):  Z. Was,                         Created at:  10/08/93
-C.                                                Last Update: 15/03/99
-C.
-C.----------------------------------------------------------------------
-
-      IMPLICIT NONE
-      REAL*8 PHINT,phint1
-      REAL*8 PHOCHA
-      INTEGER IDUM
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      DOUBLE PRECISION MCHSQR,MNESQR
-      REAL*8 PNEUTR
-      COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
-      DOUBLE PRECISION COSTHG,SINTHG
-      REAL*8 XPHMAX,XPHOTO
-      COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
-      REAL*8 MPASQR,XX,BETA
-      LOGICAL IFINT
-      INTEGER K,IDENT 
-C
-      DO  K=JDAPHO(2,1),JDAPHO(1,1),-1
-         IF(IDPHO(K).NE.22) THEN
-           IDENT=K
-           GOTO 20
-         ENDIF
-      ENDDO
- 20   CONTINUE
-C check if there is a photon
-      IFINT= NPHO.GT.IDENT
-C check if it is two body + gammas reaction
-      IFINT= IFINT.AND.(IDENT-JDAPHO(1,1)).EQ.1
-C check if two body was particle antiparticle
-      IFINT= IFINT.AND.IDPHO(JDAPHO(1,1)).EQ.-IDPHO(IDENT)
-C check if particles were charged
-      IFINT= IFINT.AND.PHOCHA(IDPHO(IDENT)).NE.0
-C calculates interference weight contribution
-      IF(IFINT) THEN
-        MPASQR = PPHO(5,1)**2
-        XX=4.D0*MCHSQR/MPASQR*(1.D0-XPHOTO)/(1.D0-XPHOTO+(MCHSQR-MNESQR)
-     &     /MPASQR)**2
-         BETA=SQRT(1.D0-XX)
-         PHINT  = 2D0/(1D0+COSTHG**2*BETA**2)
-      ELSE
-         PHINT  = 1D0
-      ENDIF
-       phint1=1
-      END
diff --git a/TEvtGen/PHOTOS/phlupa.F b/TEvtGen/PHOTOS/phlupa.F
deleted file mode 100644 (file)
index 2e2da71..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-      SUBROUTINE PHLUPA(IPOINT)
-C.----------------------------------------------------------------------
-C.
-C.    PHLUPA:   debugging tool
-C.
-C.    Purpose:  NONE, eventually may printout content of the 
-C.              /PHOEVT/ common
-C.
-C.    Input Parameters:   Common /PHOEVT/ and /PHNUM/ 
-C.                        latter may have number of the event. 
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  Z. Was                          Created at:  30/05/93
-C.                                                Last Update: 10/08/93
-C.
-C.----------------------------------------------------------------------
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      COMMON /PHNUM/ IEV
-      INTEGER PHLUN
-      COMMON/PHOLUN/PHLUN
-      DIMENSION SUM(5)
-      IF (IPOINT.LT.3000) RETURN
-      IOUT=56
-      IF (IEV.LT.1000) THEN
-      DO I=1,5
-        SUM(I)=0.0D0
-      ENDDO 
-      WRITE(PHLUN,*) 'EVENT NR=',IEV,
-     $            'WE ARE TESTING /PHOEVT/ at IPOINT=',IPOINT
-      WRITE(PHLUN,10)
-      I=1
-      WRITE(PHLUN,20) IDPHO(I),PPHO(1,I),PPHO(2,I),PPHO(3,I),
-     $                      PPHO(4,I),PPHO(5,I),JDAPHO(1,I),JDAPHO(2,I)
-      I=2
-      WRITE(PHLUN,20) IDPHO(I),PPHO(1,I),PPHO(2,I),PPHO(3,I),
-     $                      PPHO(4,I),PPHO(5,I),JDAPHO(1,I),JDAPHO(2,I)
-      WRITE(PHLUN,*) ' '
-      DO I=3,NPHO
-      WRITE(PHLUN,20) IDPHO(I),PPHO(1,I),PPHO(2,I),PPHO(3,I),
-     $                      PPHO(4,I),PPHO(5,I),JMOPHO(1,I),JMOPHO(2,I)
-        DO J=1,4
-          SUM(J)=SUM(J)+PPHO(J,I)
-        ENDDO
-      ENDDO
-      SUM(5)=SQRT(ABS(SUM(4)**2-SUM(1)**2-SUM(2)**2-SUM(3)**2))
-      WRITE(PHLUN,30) SUM
- 10   FORMAT(1X,'  ID      ','p_x      ','p_y      ','p_z      ',
-     $                   'E        ','m        ',
-     $                   'ID-MO_DA1','ID-MO DA2' )
- 20   FORMAT(1X,I4,5(F9.3),2I9)
- 30   FORMAT(1X,' SUM',5(F9.3))
-      ENDIF
-      END
diff --git a/TEvtGen/PHOTOS/phoan1.F b/TEvtGen/PHOTOS/phoan1.F
deleted file mode 100644 (file)
index 072b36e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-      FUNCTION PHOAN1(X,Y)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays calculation of ANgle '1'
-C.
-C.    Purpose:  Calculate angle from X and Y
-C.
-C.    Input Parameters:  X, Y
-C.
-C.    Output Parameter:  Function value
-C.
-C.    Author(s):  S. Jadach                       Created at:  01/01/89
-C.                B. van Eijk                     Last Update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION PHOAN1
-      REAL*8 X,Y
-      REAL*8 PI,TWOPI
-      COMMON/PHPICO/PI,TWOPI
-      IF (ABS(Y).LT.ABS(X)) THEN
-        PHOAN1=ATAN(ABS(Y/X))
-        IF (X.LE.0.D0) PHOAN1=PI-PHOAN1
-      ELSE
-        PHOAN1=ACOS(X/SQRT(X**2+Y**2))
-      ENDIF
-      IF (Y.LT.0.D0) PHOAN1=TWOPI-PHOAN1
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phoan2.F b/TEvtGen/PHOTOS/phoan2.F
deleted file mode 100644 (file)
index d997e11..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-      FUNCTION PHOAN2(X,Y)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays calculation of ANgle '2'
-C.
-C.    Purpose:  Calculate angle from X and Y
-C.
-C.    Input Parameters:  X, Y
-C.
-C.    Output Parameter:  Function value
-C.
-C.    Author(s):  S. Jadach                       Created at:  01/01/89
-C.                B. van Eijk                     Last Update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION PHOAN2
-      REAL*8 X,Y
-      REAL*8 PI,TWOPI
-      COMMON/PHPICO/PI,TWOPI
-      IF (ABS(Y).LT.ABS(X)) THEN
-        PHOAN2=ATAN(ABS(Y/X))
-        IF (X.LE.0.D0) PHOAN2=PI-PHOAN2
-      ELSE
-        PHOAN2=ACOS(X/SQRT(X**2+Y**2))
-      ENDIF
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phobo3.F b/TEvtGen/PHOTOS/phobo3.F
deleted file mode 100644 (file)
index 7bcdca0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-      SUBROUTINE PHOBO3(ANGLE,PVEC)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays BOost routine '3'
-C.
-C.    Purpose:  Boost  vector PVEC  along z-axis where ANGLE = EXP(ETA),
-C.              ETA is the hyperbolic velocity.
-C.
-C.    Input Parameters:  ANGLE, PVEC
-C.
-C.    Output Parameter:  PVEC
-C.
-C.    Author(s):  S. Jadach                       Created at:  01/01/89
-C.                B. van Eijk                     Last Update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION QPL,QMI,ANGLE
-      REAL*8 PVEC(4)
-      QPL=(PVEC(4)+PVEC(3))*ANGLE
-      QMI=(PVEC(4)-PVEC(3))/ANGLE
-      PVEC(3)=(QPL-QMI)/2.D0
-      PVEC(4)=(QPL+QMI)/2.D0
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phobos.F b/TEvtGen/PHOTOS/phobos.F
deleted file mode 100644 (file)
index 2ce1ed8..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-      SUBROUTINE PHOBOS(IP,PBOOS1,PBOOS2,FIRST,LAST)
-C.----------------------------------------------------------------------
-C.
-C.    PHOBOS:   PHOton radiation in decays BOoSt routine
-C.
-C.    Purpose:  Boost particles  in  cascade decay  to parent rest frame
-C.              and boost back with modified boost vector.
-C.
-C.    Input Parameters:       IP:  pointer of particle starting chain
-C.                                 to be boosted
-C.                        PBOOS1:  Boost vector to rest frame,
-C.                        PBOOS2:  Boost vector to modified frame,
-C.                        FIRST:   Pointer to first particle to be boos-
-C.                                 ted (/PH_HEPEVT/),
-C.                        LAST:    Pointer to last  particle to be boos-
-C.                                 ted (/PH_HEPEVT/).
-C.
-C.    Output Parameters:  Common /PH_HEPEVT/.
-C.
-C.    Author(s):  B. van Eijk                     Created at:  13/02/90
-C.                Z. Was                          Last Update: 16/11/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION BET1(3),BET2(3),GAM1,GAM2,PB,DATA
-      INTEGER I,J,FIRST,LAST,MAXSTA,NSTACK,IP
-      PARAMETER (MAXSTA=10000)
-      INTEGER STACK(MAXSTA)
-      REAL*8 PBOOS1(5),PBOOS2(5)
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      IF ((LAST.EQ.0).OR.(LAST.LT.FIRST)) RETURN
-      NSTACK=0
-      DO 10 J=1,3
-        BET1(J)=-PBOOS1(J)/PBOOS1(5)
-   10 BET2(J)=PBOOS2(J)/PBOOS2(5)
-      GAM1=PBOOS1(4)/PBOOS1(5)
-      GAM2=PBOOS2(4)/PBOOS2(5)
-C--
-C--   Boost vector to parent rest frame...
-   20 DO 50 I=FIRST,LAST
-        PB=BET1(1)*PHEP(1,I)+BET1(2)*PHEP(2,I)+BET1(3)*PHEP(3,I)
-        IF (JMOHEP(1,I).EQ.IP) THEN
-         DO 30 J=1,3
-   30    PHEP(J,I)=PHEP(J,I)+BET1(J)*(PHEP(4,I)+PB/(GAM1+1.D0))
-         PHEP(4,I)=GAM1*PHEP(4,I)+PB
-C--
-C--    ...and boost back to modified parent frame.
-         PB=BET2(1)*PHEP(1,I)+BET2(2)*PHEP(2,I)+BET2(3)*PHEP(3,I)
-         DO 40 J=1,3
-   40    PHEP(J,I)=PHEP(J,I)+BET2(J)*(PHEP(4,I)+PB/(GAM2+1.D0))
-         PHEP(4,I)=GAM2*PHEP(4,I)+PB
-         IF (JDAHEP(1,I).NE.0) THEN
-           NSTACK=NSTACK+1
-C--
-C--    Check on stack length...
-           IF (NSTACK.GT.MAXSTA) THEN
-             DATA=NSTACK
-             CALL PHOERR(7,'PHOBOS',DATA)
-           ENDIF
-           STACK(NSTACK)=I
-         ENDIF
-        ENDIF
-   50 CONTINUE
-      IF (NSTACK.NE.0) THEN
-C--
-C--   Now go one step further in the decay tree...
-        FIRST=JDAHEP(1,STACK(NSTACK))
-        LAST=JDAHEP(2,STACK(NSTACK))
-        IP=STACK(NSTACK)
-        NSTACK=NSTACK-1
-        GOTO 20
-      ENDIF
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phocha.F b/TEvtGen/PHOTOS/phocha.F
deleted file mode 100644 (file)
index ce6d603..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-      FUNCTION PHOCHA(IDHEP)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays CHArge determination
-C.
-C.    Purpose:  Calculate the charge  of particle  with code IDHEP.  The
-C.              code  of the  particle  is  defined by the Particle Data
-C.              Group in Phys. Lett. B204 (1988) 1.
-C.
-C.    Input Parameter:   IDHEP
-C.
-C.    Output Parameter:  Funtion value = charge  of  particle  with code
-C.                       IDHEP
-C.
-C.    Author(s):  E. Barberio and B. van Eijk     Created at:  29/11/89
-C.                                                Last update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      REAL*8 PHOCHA
-      INTEGER IDHEP,IDABS,Q1,Q2,Q3
-C--
-C--   Array 'CHARGE' contains the charge  of the first 101 particles ac-
-C--   cording  to  the PDG particle code... (0 is added for convenience)
-      REAL*8 CHARGE(0:100)
-      DATA CHARGE/ 0.D0,
-     &-0.3333333333D0,  0.6666666667D0, -0.3333333333D0, 0.6666666667D0,
-     &-0.3333333333D0,  0.6666666667D0, -0.3333333333D0, 0.6666666667D0,
-     & 2*0.D0, -1.D0, 0.D0, -1.D0, 0.D0, -1.D0, 0.D0, -1.D0, 6*0.D0, 
-     & 1.D0, 12*0.D0, 1.D0, 63*0.D0/
-      IDABS=ABS(IDHEP)
-      IF (IDABS.LE.100) THEN
-C--
-C--   Charge of quark, lepton, boson etc....
-        PHOCHA = CHARGE(IDABS)
-      ELSE
-C--
-C--   Check on particle build out of quarks, unpack its code...
-        Q3=MOD(IDABS/1000,10)
-        Q2=MOD(IDABS/100,10)
-        Q1=MOD(IDABS/10,10)
-        IF (Q3.EQ.0) THEN
-C--
-C--   ...meson...
-          IF(MOD(Q2,2).EQ.0) THEN
-            PHOCHA=CHARGE(Q2)-CHARGE(Q1)
-          ELSE
-            PHOCHA=CHARGE(Q1)-CHARGE(Q2)
-          ENDIF
-        ELSE
-C--
-C--   ...diquarks or baryon.
-          PHOCHA=CHARGE(Q1)+CHARGE(Q2)+CHARGE(Q3)
-        ENDIF
-      ENDIF
-C--
-C--   Find the sign of the charge...
-      IF (IDHEP.LT.0.D0) PHOCHA=-PHOCHA
-      IF (PHOCHA**2.lt.1d-6) PHOCHA=0.D0
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phochk.F b/TEvtGen/PHOTOS/phochk.F
deleted file mode 100644 (file)
index 0cfdabc..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-      SUBROUTINE PHOCHK(JFIRST)
-C.----------------------------------------------------------------------
-C.
-C.    PHOCHK:   checking branch.
-C.
-C.    Purpose:  checks whether particles in the common block /PHOEVT/
-C.              can be served by PHOMAK. 
-C.              JFIRST is the position in /PH_HEPEVT/ (!) of the first 
-C.              daughter of sub-branch under action.
-C.
-C.
-C.    Author(s):  Z. Was                           Created at: 22/10/92
-C.                                                Last Update: 16/10/93
-C.
-C.----------------------------------------------------------------------
-C     ********************
-      IMPLICIT NONE
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      LOGICAL CHKIF
-      COMMON/PHOIF/CHKIF(NMXPHO)
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      LOGICAL QEDRAD
-      COMMON/PHOQED/QEDRAD(NMXHEP)
-      INTEGER JFIRST
-      LOGICAL F
-      INTEGER IDABS,NLAST,I,IPPAR
-      LOGICAL INTERF,ISEC,IFTOP
-      REAL*8 FINT,FSEC
-      COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
-      LOGICAL IFRAD
-      INTEGER IDENT,K
-C these are OK .... if you do not like somebody else, add here.
-      F(IDABS)=
-     &     ( ((IDABS.GT.9).AND.(IDABS.LE.40)) .OR. (IDABS.GT.100) )
-     & .AND.(IDABS.NE.21)
-     $ .AND.(IDABS.NE.2101).AND.(IDABS.NE.3101).AND.(IDABS.NE.3201)
-     & .AND.(IDABS.NE.1103).AND.(IDABS.NE.2103).AND.(IDABS.NE.2203)
-     & .AND.(IDABS.NE.3103).AND.(IDABS.NE.3203).AND.(IDABS.NE.3303)
-C
-      NLAST = NPHO
-C
-      IPPAR=1
-C checking for good particles
-      DO 10 I=IPPAR,NLAST
-      IDABS    = ABS(IDPHO(I))
-C possibly call on PHZODE is a dead (to be omitted) code. 
-      CHKIF(I)= F(IDABS)       .AND.F(ABS(IDPHO(1)))
-     &  .AND.   (IDPHO(2).EQ.0)
-      IF(I.GT.2) CHKIF(I)=CHKIF(I).AND.QEDRAD(JFIRST+I-IPPAR-2)
- 10   CONTINUE
-C--
-C now we go to special cases, where CHKIF(I) will be overwritten
-C--
-      IF(IFTOP) THEN
-C special case of top pair production
-        DO  K=JDAPHO(2,1),JDAPHO(1,1),-1
-           IF(IDPHO(K).NE.22) THEN
-             IDENT=K
-             GOTO 15
-           ENDIF
-        ENDDO
- 15     CONTINUE
-        IFRAD=((IDPHO(1).EQ.21).AND.(IDPHO(2).EQ.21))
-     &  .OR. ((ABS(IDPHO(1)).LE.6).AND.((IDPHO(2)).EQ.(-IDPHO(1))))
-        IFRAD=IFRAD
-     &        .AND.(ABS(IDPHO(3)).EQ.6).AND.((IDPHO(4)).EQ.(-IDPHO(3)))
-     &        .AND.(IDENT.EQ.4)   
-        IF(IFRAD) THEN    
-           DO 20 I=IPPAR,NLAST
-           CHKIF(I)= .TRUE.
-           IF(I.GT.2) CHKIF(I)=CHKIF(I).AND.QEDRAD(JFIRST+I-IPPAR-2)
- 20        CONTINUE
-        ENDIF
-      ENDIF
-C--
-C--
-      IF(IFTOP) THEN
-C special case of top decay
-        DO  K=JDAPHO(2,1),JDAPHO(1,1),-1
-           IF(IDPHO(K).NE.22) THEN
-             IDENT=K
-             GOTO 25
-           ENDIF
-        ENDDO
- 25     CONTINUE
-        IFRAD=((ABS(IDPHO(1)).EQ.6).AND.(IDPHO(2).EQ.0))
-        IFRAD=IFRAD
-     &        .AND.((ABS(IDPHO(3)).EQ.24).AND.(ABS(IDPHO(4)).EQ.5)
-     &        .OR.(ABS(IDPHO(3)).EQ.5).AND.(ABS(IDPHO(4)).EQ.24))
-     &        .AND.(IDENT.EQ.4)   
-        IF(IFRAD) THEN    
-           DO 30 I=IPPAR,NLAST
-           CHKIF(I)= .TRUE.
-           IF(I.GT.2) CHKIF(I)=CHKIF(I).AND.QEDRAD(JFIRST+I-IPPAR-2)
- 30        CONTINUE
-        ENDIF
-      ENDIF
-C--
-C--
-      END
diff --git a/TEvtGen/PHOTOS/phocin.F b/TEvtGen/PHOTOS/phocin.F
deleted file mode 100644 (file)
index d0385d4..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-      SUBROUTINE PHOCIN(ISEEDF,ISEEDS)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton Common INitialisation
-C.
-C.    Purpose:  Initialisation of parameters in common blocks.
-C.
-C.    Input Parameters:   None
-C.
-C.    Output Parameters:  Commons /PHOLUN/, /PHOPHO/, /PHOCOP/, /PHPICO/
-C.                                and /PHSEED/.
-C.
-C.    Author(s):  B. van Eijk                     Created at:  26/11/89
-C.                Z. Was                          Last Update: 10/08/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER ISEEDF, ISEEDS
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      LOGICAL QEDRAD
-      COMMON/PHOQED/QEDRAD(NMXHEP)
-      INTEGER PHLUN
-      COMMON/PHOLUN/PHLUN
-      REAL*8 ALPHA,XPHCUT
-      COMMON/PHOCOP/ALPHA,XPHCUT
-      REAL*8 PI,TWOPI
-      COMMON/PHPICO/PI,TWOPI
-      INTEGER ISEED,I97,J97
-      REAL*8 URAN,CRAN,CDRAN,CMRAN
-      COMMON/PHSEED/ISEED(2),I97,J97,URAN(97),CRAN,CDRAN,CMRAN
-      INTEGER PHOMES
-      PARAMETER (PHOMES=10)
-      INTEGER STATUS
-      COMMON/PHOSTA/STATUS(PHOMES)
-      LOGICAL INTERF,ISEC,IFTOP
-      REAL*8 FINT,FSEC
-      COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
-      INTEGER INIT,I
-      SAVE INIT
-      DATA INIT/ 0/
-C--
-C--   Return if already initialized...
-      IF (INIT.NE.0) RETURN
-      INIT=1
-C--
-C--   Preset switch  for  photon emission to 'TRUE' for each particle in
-C--   /PH_HEPEVT/, this interface is needed for KORALB and KORALZ...
-      DO 10 I=1,NMXHEP
-   10 QEDRAD(I)=.TRUE.
-C--
-C--   Logical output unit for printing of PHOTOS error messages
-      PHLUN=6
-C--
-C--   Set cut parameter for photon radiation
-      XPHCUT=0.01D0
-C--
-C--   Define some constants
-      ALPHA=0.00729735039D0
-      PI=3.14159265358979324D0
-      TWOPI=6.28318530717958648D0
-C--
-C--   Default seeds Marsaglia and Zaman random number generator
-C      ISEED(1)=1802
-C      ISEED(2)=9373
-C      updated on 23.08.2012 to introduce proper random number sequence
-       ISEED(1)=ISEEDF
-       ISEED(2)=ISEEDS
-C--
-C--   Iitialization for extra options
-C--   (1)
-C--   Interference weight for two body symmetric channels only. 
-      INTERF=.TRUE.
-C--   (2)
-C--   Second order - double photon switch
-      ISEC=.TRUE.
-C--   (3)
-C--   Emision in the hard process g g (q qbar) --> t tbar 
-C--                                 t          --> W b
-      IFTOP=.TRUE.
-C--
-C--   further initialization done automatically
-      IF (INTERF) THEN
-C--   best choice is if FINT=2**N where N+1 is maximal number 
-C--   of charged daughters
-C--   see report on overweihted events
-        FINT=2.0D0
-      ELSE
-        FINT=1.0D0
-      ENDIF
-C--   Initialise status counter for warning messages
-      DO 20 I=1,PHOMES
-   20 STATUS(I)=0
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phocor.F b/TEvtGen/PHOTOS/phocor.F
deleted file mode 100644 (file)
index da51db7..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-      FUNCTION PHOCOR(MPASQR,MCHREN,ME)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays CORrection weight from
-C.              matrix elements
-C.
-C.    Purpose:  Calculate  photon  angle.  The reshaping functions  will
-C.              have  to  depend  on the spin S of the charged particle.
-C.              We define:  ME = 2 * S + 1 !
-C.
-C.    Input Parameters:  MPASQR:  Parent mass squared,
-C.                       MCHREN:  Renormalised mass of charged system,
-C.                       ME:      2 * spin + 1 determines matrix element
-C.
-C.    Output Parameter:  Function value.
-C.
-C.    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
-C.                                                Last Update: 21/03/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION MPASQR,MCHREN,BETA,XX,YY,DATA
-      INTEGER ME
-      REAL*8 PHOCOR,PHOFAC,WT1,WT2,WT3
-      DOUBLE PRECISION MCHSQR,MNESQR
-      REAL*8 PNEUTR
-      COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
-      DOUBLE PRECISION COSTHG,SINTHG
-      REAL*8 XPHMAX,XPHOTO
-      COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
-      INTEGER IREP
-      REAL*8 PROBH,CORWT,XF
-      COMMON/PHOPRO/PROBH,CORWT,XF,IREP
-C--
-C--   Shaping (modified by ZW)...
-      XX=4.D0*MCHSQR/MPASQR*(1.D0-XPHOTO)/(1.D0-XPHOTO+(MCHSQR-MNESQR)/
-     &MPASQR)**2
-      IF (ME.EQ.1) THEN
-        YY=1.D0
-        WT3=(1.D0-XPHOTO/XPHMAX)/((1.D0+(1.D0-XPHOTO/XPHMAX)**2)/2.D0)
-      ELSEIF (ME.EQ.2) THEN
-        YY=0.5D0*(1.D0-XPHOTO/XPHMAX+1.D0/(1.D0-XPHOTO/XPHMAX))
-        WT3=1.D0
-      ELSEIF ((ME.EQ.3).OR.(ME.EQ.4).OR.(ME.EQ.5)) THEN
-        YY=1.D0
-        WT3=(1.D0+(1.D0-XPHOTO/XPHMAX)**2-(XPHOTO/XPHMAX)**3)/
-     &  (1.D0+(1.D0-XPHOTO/XPHMAX)** 2)
-      ELSE
-        DATA=(ME-1.D0)/2.D0
-        CALL PHOERR(6,'PHOCOR',DATA)
-        YY=1.D0
-        WT3=1.D0
-      ENDIF
-      BETA=SQRT(1.D0-XX)
-      WT1=(1.D0-COSTHG*SQRT(1.D0-MCHREN))/(1.D0-COSTHG*BETA)
-      WT2=(1.D0-XX/YY/(1.D0-BETA**2*COSTHG**2))*(1.D0+COSTHG*BETA)/2.D0
-      WT2=WT2*PHOFAC(1)
-      PHOCOR=WT1*WT2*WT3
-      CORWT=PHOCOR
-      IF (PHOCOR.GT.1.D0) THEN
-        DATA=PHOCOR
-        CALL PHOERR(3,'PHOCOR',DATA)
-      ENDIF
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phodo.F b/TEvtGen/PHOTOS/phodo.F
deleted file mode 100644 (file)
index 500c863..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-      SUBROUTINE PHODO(IP,NCHARB,NEUDAU)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in  decays DOing of KINematics
-C.
-C.    Purpose:  Starting  from   the  charged  particle energy/momentum,
-C.              PNEUTR, photon  energy  fraction and photon  angle  with
-C.              respect  to  the axis formed by charged particle energy/
-C.              momentum  vector  and PNEUTR, scale the energy/momentum,
-C.              keeping the original direction of the neutral system  in
-C.              the lab. frame untouched.
-C.
-C.    Input Parameters:   IP:      Pointer  to   decaying  particle   in
-C.                                 /PHOEVT/  and   the   common   itself
-C.                        NCHARB:  pointer to the charged radiating
-C.                                 daughter in /PHOEVT/.
-C.                        NEUDAU:  pointer to the first neutral daughter
-C.    Output Parameters:  Common /PHOEVT/, with photon added.
-C.
-C.    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
-C.                                                Last Update: 27/05/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION PHOAN1,PHOAN2,ANGLE,FI1,FI3,FI4,FI5,TH1,TH3,TH4
-      DOUBLE PRECISION PARNE,QNEW,QOLD,DATA
-      INTEGER IP,FI3DUM,I,J,NEUDAU,FIRST,LAST
-      INTEGER NCHARB
-      REAL*8 EPHOTO,PMAVIR,PHOTRI
-      REAL*8 GNEUT,PHORAN,CCOSTH,SSINTH,PVEC(4)
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      DOUBLE PRECISION MCHSQR,MNESQR
-      REAL*8 PNEUTR
-      COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
-      DOUBLE PRECISION COSTHG,SINTHG
-      REAL*8 XPHMAX,XPHOTO
-      COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
-      REAL*8 PI,TWOPI
-      COMMON/PHPICO/PI,TWOPI
-C--
-      EPHOTO=XPHOTO*PPHO(5,IP)/2.D0
-      PMAVIR=SQRT(PPHO(5,IP)*(PPHO(5,IP)-2.D0*EPHOTO))
-C--
-C--   Reconstruct  kinematics  of  charged particle  and  neutral system
-      FI1=PHOAN1(PNEUTR(1),PNEUTR(2))
-C--
-C--   Choose axis along  z of  PNEUTR, calculate  angle  between x and y
-C--   components  and z  and x-y plane and  perform Lorentz transform...
-      TH1=PHOAN2(PNEUTR(3),SQRT(PNEUTR(1)**2+PNEUTR(2)**2))
-      CALL PHORO3(-FI1,PNEUTR(1))
-      CALL PHORO2(-TH1,PNEUTR(1))
-C--
-C--   Take  away  photon energy from charged particle and PNEUTR !  Thus
-C--   the onshell charged particle  decays into virtual charged particle
-C--   and photon.  The virtual charged  particle mass becomes:
-C--   SQRT(PPHO(5,IP)*(PPHO(5,IP)-2*EPHOTO)).  Construct  new PNEUTR mo-
-C--   mentum in the rest frame of the parent:
-C--   1) Scaling parameters...
-      QNEW=PHOTRI(PMAVIR,PNEUTR(5),PPHO(5,NCHARB))
-      QOLD=PNEUTR(3)
-      GNEUT=(QNEW**2+QOLD**2+MNESQR)/(QNEW*QOLD+SQRT((QNEW**2+MNESQR)*
-     &(QOLD**2+MNESQR)))
-      IF (GNEUT.LT.1.D0) THEN
-        DATA=0.D0
-        CALL PHOERR(4,'PHOKIN',DATA)
-      ENDIF
-      PARNE=GNEUT-SQRT(MAX(GNEUT**2-1.0D0,0.D0))
-C--
-C--   2) ...reductive boost...
-      CALL PHOBO3(PARNE,PNEUTR)
-C--
-C--   ...calculate photon energy in the reduced system...
-      NPHO=NPHO+1
-      ISTPHO(NPHO)=1
-      IDPHO(NPHO) =22
-C--   Photon mother and daughter pointers !
-      JMOPHO(1,NPHO)=IP
-      JMOPHO(2,NPHO)=0
-      JDAPHO(1,NPHO)=0
-      JDAPHO(2,NPHO)=0
-      PPHO(4,NPHO)=EPHOTO*PPHO(5,IP)/PMAVIR
-C--
-C--   ...and photon momenta
-      CCOSTH=-COSTHG
-      SSINTH=SINTHG
-      TH3=PHOAN2(CCOSTH,SSINTH)
-      FI3=TWOPI*PHORAN(FI3DUM)
-      PPHO(1,NPHO)=PPHO(4,NPHO)*SINTHG*COS(FI3)
-      PPHO(2,NPHO)=PPHO(4,NPHO)*SINTHG*SIN(FI3)
-C--
-C--   Minus sign because axis opposite direction of charged particle !
-      PPHO(3,NPHO)=-PPHO(4,NPHO)*COSTHG
-      PPHO(5,NPHO)=0.D0
-C--
-C--   Rotate in order to get photon along z-axis
-      CALL PHORO3(-FI3,PNEUTR(1))
-      CALL PHORO3(-FI3,PPHO(1,NPHO))
-      CALL PHORO2(-TH3,PNEUTR(1))
-      CALL PHORO2(-TH3,PPHO(1,NPHO))
-      ANGLE=EPHOTO/PPHO(4,NPHO)
-C--
-C--   Boost to the rest frame of decaying particle
-      CALL PHOBO3(ANGLE,PNEUTR(1))
-      CALL PHOBO3(ANGLE,PPHO(1,NPHO))
-C--
-C--   Back in the parent rest frame but PNEUTR not yet oriented !
-      FI4=PHOAN1(PNEUTR(1),PNEUTR(2))
-      TH4=PHOAN2(PNEUTR(3),SQRT(PNEUTR(1)**2+PNEUTR(2)**2))
-      CALL PHORO3(FI4,PNEUTR(1))
-      CALL PHORO3(FI4,PPHO(1,NPHO))
-C--
-        DO 60 I=2,4
-   60   PVEC(I)=0.D0
-        PVEC(1)=1.D0
-        CALL PHORO3(-FI3,PVEC)
-        CALL PHORO2(-TH3,PVEC)
-        CALL PHOBO3(ANGLE,PVEC)
-        CALL PHORO3(FI4,PVEC)
-        CALL PHORO2(-TH4,PNEUTR)
-        CALL PHORO2(-TH4,PPHO(1,NPHO))
-        CALL PHORO2(-TH4,PVEC)
-        FI5=PHOAN1(PVEC(1),PVEC(2))
-C--
-C--   Charged particle restores original direction
-        CALL PHORO3(-FI5,PNEUTR)
-        CALL PHORO3(-FI5,PPHO(1,NPHO))
-        CALL PHORO2(TH1,PNEUTR(1))
-        CALL PHORO2(TH1,PPHO(1,NPHO))
-        CALL PHORO3(FI1,PNEUTR)
-        CALL PHORO3(FI1,PPHO(1,NPHO))
-C--   See whether neutral system has multiplicity larger than 1...
-      IF ((JDAPHO(2,IP)-JDAPHO(1,IP)).GT.1) THEN
-C--   Find pointers to components of 'neutral' system
-C--
-        FIRST=NEUDAU
-        LAST=JDAPHO(2,IP)
-        DO 70 I=FIRST,LAST
-          IF (I.NE.NCHARB.AND.(JMOPHO(1,I).EQ.IP)) THEN
-C--
-C--   Reconstruct kinematics...
-            CALL PHORO3(-FI1,PPHO(1,I))
-            CALL PHORO2(-TH1,PPHO(1,I))
-C--
-C--   ...reductive boost
-            CALL PHOBO3(PARNE,PPHO(1,I))
-C--
-C--   Rotate in order to get photon along z-axis
-            CALL PHORO3(-FI3,PPHO(1,I))
-            CALL PHORO2(-TH3,PPHO(1,I))
-C--
-C--   Boost to the rest frame of decaying particle
-            CALL PHOBO3(ANGLE,PPHO(1,I))
-C--
-C--   Back in the parent rest-frame but PNEUTR not yet oriented.
-            CALL PHORO3(FI4,PPHO(1,I))
-            CALL PHORO2(-TH4,PPHO(1,I))
-C--
-C--   Charged particle restores original direction
-            CALL PHORO3(-FI5,PPHO(1,I))
-            CALL PHORO2(TH1,PPHO(1,I))
-            CALL PHORO3(FI1,PPHO(1,I))
-          ENDIF
-   70   CONTINUE
-      ELSE
-C--
-C--   ...only one 'neutral' particle in addition to photon!
-        DO 80 J=1,4
-   80   PPHO(J,NEUDAU)=PNEUTR(J)
-      ENDIF
-C--
-C--   All 'neutrals' treated, fill /PHOEVT/ for charged particle...
-      DO 90 J=1,3
-   90 PPHO(J,NCHARB)=-(PPHO(J,NPHO)+PNEUTR(J))
-      PPHO(4,NCHARB)=PPHO(5,IP)-(PPHO(4,NPHO)+PNEUTR(4))
-C--
-      END
diff --git a/TEvtGen/PHOTOS/phoene.F b/TEvtGen/PHOTOS/phoene.F
deleted file mode 100644 (file)
index 98b2614..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-      SUBROUTINE PHOENE(MPASQR,MCHREN,BETA,IDENT)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays calculation  of photon ENErgy
-C.              fraction
-C.
-C.    Purpose:  Subroutine  returns  photon  energy fraction (in (parent
-C.              mass)/2 units) for the decay bremsstrahlung.
-C.
-C.    Input Parameters:  MPASQR:  Mass of decaying system squared,
-C.                       XPHCUT:  Minimum energy fraction of photon,
-C.                       XPHMAX:  Maximum energy fraction of photon.
-C.
-C.    Output Parameter:  MCHREN:  Renormalised mass squared,
-C.                       BETA:    Beta factor due to renormalisation,
-C.                       XPHOTO:  Photon energy fraction,
-C.                       XF:      Correction factor for PHOFAC.
-C.
-C.    Author(s):  S. Jadach, Z. Was               Created at:  01/01/89
-C.                B. van Eijk                     Last Update: 26/03/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION MPASQR,MCHREN,BIGLOG,BETA,DATA
-      INTEGER IWT1,IRN,IWT2
-      REAL*8 PRSOFT,PRHARD,PHORAN,PHOFAC
-      DOUBLE PRECISION MCHSQR,MNESQR
-      REAL*8 PNEUTR
-      INTEGER IDENT
-      REAL*8 PHOCHA
-      COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
-      DOUBLE PRECISION COSTHG,SINTHG
-      REAL*8 XPHMAX,XPHOTO
-      COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
-      REAL*8 ALPHA,XPHCUT
-      COMMON/PHOCOP/ALPHA,XPHCUT
-      REAL*8 PI,TWOPI
-      COMMON/PHPICO/PI,TWOPI
-      INTEGER IREP
-      REAL*8 PROBH,CORWT,XF
-      COMMON/PHOPRO/PROBH,CORWT,XF,IREP
-      LOGICAL INTERF,ISEC,IFTOP
-      REAL*8 FINT,FSEC
-      COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
-C--
-      IF (XPHMAX.LE.XPHCUT) THEN
-        XPHOTO=0.0D0
-        RETURN
-      ENDIF
-C--   Probabilities for hard and soft bremstrahlung...
-      MCHREN=4.D0*MCHSQR/MPASQR/(1.D0+MCHSQR/MPASQR)**2
-      BETA=SQRT(1.D0-MCHREN)
-      BIGLOG=LOG(MPASQR/MCHSQR*(1.D0+BETA)**2/4.D0*
-     &          (1.D0+MCHSQR/MPASQR)**2)
-      PRHARD=ALPHA/PI/BETA*BIGLOG*(LOG(XPHMAX/XPHCUT)-.75D0+XPHCUT/
-     &XPHMAX-.25D0*XPHCUT**2/XPHMAX**2)
-      PRHARD=PRHARD*PHOCHA(IDENT)**2*FINT*FSEC
-      IF (IREP.EQ.0) PROBH=0.D0
-      PRHARD=PRHARD*PHOFAC(0)
-      PROBH=PRHARD
-      PRSOFT=1.D0-PRHARD
-C--
-C--   Check on kinematical bounds
-      IF (PRSOFT.LT.0.1D0) THEN
-        DATA=PRSOFT
-        CALL PHOERR(2,'PHOENE',DATA)
-      ENDIF
-      IF (PHORAN(IWT1).LT.PRSOFT) THEN
-C--
-C--   No photon... (ie. photon too soft)
-        XPHOTO=0.D0
-      ELSE
-C--
-C--   Hard  photon... (ie.  photon  hard enough).
-C--   Calculate  Altarelli-Parisi Kernel
-   10   XPHOTO=EXP(PHORAN(IRN)*LOG(XPHCUT/XPHMAX))
-        XPHOTO=XPHOTO*XPHMAX
-        IF (PHORAN(IWT2).GT.((1.D0+(1.D0-XPHOTO/XPHMAX)**2)/2.D0)) 
-     &                            GOTO 10
-      ENDIF
-C--
-C--   Calculate parameter for PHOFAC function
-      XF=4.D0*MCHSQR*MPASQR/(MPASQR+MCHSQR-MNESQR)**2
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phoerr.F b/TEvtGen/PHOTOS/phoerr.F
deleted file mode 100644 (file)
index b74f83c..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-      SUBROUTINE PHOERR(IMES,TEXT,DATA)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays ERRror handling
-C.
-C.    Purpose:  Inform user  about (fatal) errors and warnings generated
-C.              by either the user or the program.
-C.
-C.    Input Parameters:   IMES, TEXT, DATA
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  B. van Eijk                     Created at:  29/11/89
-C.                                                Last Update: 10/01/92
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION DATA
-      INTEGER IMES,IERROR
-      REAL*8 SDATA
-      INTEGER PHLUN
-      COMMON/PHOLUN/PHLUN
-      INTEGER PHOMES
-      PARAMETER (PHOMES=10)
-      INTEGER STATUS
-      COMMON/PHOSTA/STATUS(PHOMES)
-      CHARACTER TEXT*(*)
-      SAVE IERROR
-C--   security STOP switch  
-      LOGICAL ISEC
-      SAVE ISEC
-      DATA ISEC /.TRUE./
-      DATA IERROR/ 0/
-      IF (IMES.LE.PHOMES) STATUS(IMES)=STATUS(IMES)+1
-C--
-C--   Count number of non-fatal errors...
-      IF ((IMES.EQ. 6).AND.(STATUS(IMES).GE.2)) RETURN
-      IF ((IMES.EQ.10).AND.(STATUS(IMES).GE.2)) RETURN
-      SDATA=DATA
-      WRITE(PHLUN,9000)
-      WRITE(PHLUN,9120)
-      GOTO (10,20,30,40,50,60,70,80,90,100),IMES
-      WRITE(PHLUN,9130) IMES
-      GOTO 120
-   10 WRITE(PHLUN,9010) TEXT,INT(SDATA)
-      GOTO 110
-   20 WRITE(PHLUN,9020) TEXT,SDATA
-      GOTO 110
-   30 WRITE(PHLUN,9030) TEXT,SDATA
-      GOTO 110
-   40 WRITE(PHLUN,9040) TEXT
-      GOTO 110
-   50 WRITE(PHLUN,9050) TEXT,INT(SDATA)
-      GOTO 110
-   60 WRITE(PHLUN,9060) TEXT,SDATA
-      GOTO 130
-   70 WRITE(PHLUN,9070) TEXT,INT(SDATA)
-      GOTO 110
-   80 WRITE(PHLUN,9080) TEXT,INT(SDATA)
-      GOTO 110
-   90 WRITE(PHLUN,9090) TEXT,INT(SDATA)
-      GOTO 110
-  100 WRITE(PHLUN,9100) TEXT,SDATA
-      GOTO 130
-  110 CONTINUE
-      WRITE(PHLUN,9140)
-      WRITE(PHLUN,9120)
-      WRITE(PHLUN,9000)
-      IF (ISEC) THEN 
-        STOP
-      ELSE
-        GOTO 130
-      ENDIF
-  120 IERROR=IERROR+1
-      IF (IERROR.GE.10) THEN
-        WRITE(PHLUN,9150)
-        WRITE(PHLUN,9120)
-        WRITE(PHLUN,9000)
-        IF (ISEC) THEN 
-          STOP
-        ELSE
-          GOTO 130
-        ENDIF
-      ENDIF
-  130 WRITE(PHLUN,9120)
-      WRITE(PHLUN,9000)
-      RETURN
- 9000 FORMAT(1H ,80('*'))
- 9010 FORMAT(1H ,'* ',A,': Too many charged Particles, NCHARG =',I6,T81,
-     &'*')
- 9020 FORMAT(1H ,'* ',A,': Too much Bremsstrahlung required, PRSOFT = ',
-     &F15.6,T81,'*')
- 9030 FORMAT(1H ,'* ',A,': Combined Weight is exceeding 1., Weight = ',
-     &F15.6,T81,'*')
- 9040 FORMAT(1H ,'* ',A,
-     &': Error in Rescaling charged and neutral Vectors',T81,'*')
- 9050 FORMAT(1H ,'* ',A,
-     &': Non matching charged Particle Pointer, NCHARG = ',I5,T81,'*')
- 9060 FORMAT(1H ,'* ',A,
-     &': Do you really work with a Particle of Spin: ',F4.1,' ?',T81,
-     &'*')
- 9070 FORMAT(1H ,'* ',A, ': Stack Length exceeded, NSTACK = ',I5 ,T81,
-     &'*')
- 9080 FORMAT(1H ,'* ',A,
-     &': Random Number Generator Seed(1) out of Range: ',I8,T81,'*')
- 9090 FORMAT(1H ,'* ',A,
-     &': Random Number Generator Seed(2) out of Range: ',I8,T81,'*')
- 9100 FORMAT(1H ,'* ',A,
-     &': Available Phase Space below Cut-off: ',F15.6,' GeV/c^2',T81,
-     &'*')
- 9120 FORMAT(1H ,'*',T81,'*')
- 9130 FORMAT(1H ,'* Funny Error Message: ',I4,' ! What to do ?',T81,'*')
- 9140 FORMAT(1H ,'* Fatal Error Message, I stop this Run !',T81,'*')
- 9150 FORMAT(1H ,'* 10 Error Messages generated, I stop this Run !',T81,
-     &'*')
-      END
diff --git a/TEvtGen/PHOTOS/phofac.F b/TEvtGen/PHOTOS/phofac.F
deleted file mode 100644 (file)
index de114d9..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-      FUNCTION PHOFAC(MODE)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays control FACtor
-C.
-C.    Purpose:  This is the control function for the photon spectrum and
-C.              final weighting.  It is  called  from PHOENE for genera-
-C.              ting the raw photon energy spectrum (MODE=0) and in PHO-
-C.              COR to scale the final weight (MODE=1).  The factor con-
-C.              sists of 3 terms.  Addition of  the factor FF which mul-
-C.              tiplies PHOFAC for MODE=0 and divides PHOFAC for MODE=1,
-C.              does not affect  the results for  the MC generation.  An
-C.              appropriate choice  for FF can speed up the calculation.
-C.              Note that a too small value of FF may cause weight over-
-C.              flow in PHOCOR  and will generate a warning, halting the
-C.              execution.  PRX  should  be  included for repeated calls
-C.              for  the  same event, allowing more particles to radiate
-C.              photons.  At  the  first  call IREP=0, for  more  than 1
-C.              charged  decay  products, IREP >= 1.  Thus,  PRSOFT  (no
-C.              photon radiation  probability  in  the  previous  calls)
-C.              appropriately scales the strength of the bremsstrahlung.
-C.
-C.    Input Parameters:  MODE, PROBH, XF
-C.
-C.    Output Parameter:  Function value
-C.
-C.    Author(s):  S. Jadach, Z. Was               Created at:  01/01/89
-C.                B. van Eijk                     Last Update: 13/02/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      REAL*8 PHOFAC,FF,PRX
-      INTEGER MODE
-      INTEGER IREP
-      REAL*8 PROBH,CORWT,XF
-      COMMON/PHOPRO/PROBH,CORWT,XF,IREP
-      SAVE PRX,FF
-      DATA PRX,FF/ 0.D0, 0.D0/
-      IF (MODE.EQ.0) THEN
-        IF (IREP.EQ.0) PRX=1.D0
-        PRX=PRX/(1.D0-PROBH)
-        FF=1.D0
-C--
-C--   Following options are not considered for the time being...
-C--   (1) Good choice, but does not save very much time:
-C--       FF=(1.0D0-SQRT(XF)/2.0D0)/(1.0+SQRT(XF)/2.0D0)
-C--   (2) Taken from the blue, but works without weight overflows...
-C--       FF=(1.D0-XF/(1-(1-SQRT(XF))**2))*(1+(1-SQRT(XF))/SQRT(1-XF))/2
-        PHOFAC=FF*PRX
-      ELSE
-        PHOFAC=1.D0/FF
-      ENDIF
-      END
diff --git a/TEvtGen/PHOTOS/phoin.F b/TEvtGen/PHOTOS/phoin.F
deleted file mode 100644 (file)
index 7e07b1b..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-      SUBROUTINE PHOIN(IP,BOOST,NHEP0)
-C.----------------------------------------------------------------------
-C.
-C.    PHOIN:   PHOtos INput
-C.
-C.    Purpose:  copies IP branch of the common /PH_HEPEVT/ into /PHOEVT/
-C.              moves branch into its CMS system.
-C.
-C.    Input Parameters:       IP:  pointer of particle starting branch
-C.                                 to be copied
-C.                        BOOST:   Flag whether boost to CMS was or was 
-C     .                            not performed.
-C.
-C.    Output Parameters:  Commons: /PHOEVT/, /PHOCMS/
-C.
-C.    Author(s):  Z. Was                          Created at:  24/05/93
-C.                                                Last Update: 16/11/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      INTEGER IP,IP2,I,FIRST,LAST,LL,NA
-      LOGICAL BOOST
-      INTEGER J,NHEP0
-      DOUBLE PRECISION BET(3),GAM,PB
-      COMMON /PHOCMS/ BET,GAM
-      LOGICAL INTERF,ISEC,IFTOP
-      REAL*8 FINT,FSEC
-      COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
-C--
-C let's calculate size of the little common entry
-        FIRST=JDAHEP(1,IP)
-        LAST =JDAHEP(2,IP)
-        NPHO=3+LAST-FIRST+NHEP-NHEP0
-        NEVPHO=NPHO
-C let's take in decaying particle
-           IDPHO(1)=IDHEP(IP)
-           JDAPHO(1,1)=3
-           JDAPHO(2,1)=3+LAST-FIRST
-           DO I=1,5
-             PPHO(I,1)=PHEP(I,IP)
-           ENDDO
-C let's take in eventual second mother
-         IP2=JMOHEP(2,JDAHEP(1,IP))
-         IF((IP2.NE.0).AND.(IP2.NE.IP)) THEN 
-           IDPHO(2)=IDHEP(IP2)
-           JDAPHO(1,2)=3
-           JDAPHO(2,2)=3+LAST-FIRST
-           DO I=1,5
-             PPHO(I,2)=PHEP(I,IP2)
-           ENDDO
-         ELSE
-           IDPHO(2)=0
-           DO I=1,5
-             PPHO(I,2)=0.0D0
-           ENDDO
-         ENDIF
-C let's take in daughters
-        DO LL=0,LAST-FIRST
-           IDPHO(3+LL)=IDHEP(FIRST+LL)
-           JMOPHO(1,3+LL)=JMOHEP(1,FIRST+LL)
-           IF (JMOHEP(1,FIRST+LL).EQ.IP) JMOPHO(1,3+LL)=1
-           DO I=1,5
-             PPHO(I,3+LL)=PHEP(I,FIRST+LL)
-           ENDDO
-        ENDDO
-        IF (NHEP.GT.NHEP0) THEN
-C let's take in illegitimate daughters
-        NA=3+LAST-FIRST 
-        DO LL=1,NHEP-NHEP0
-           IDPHO(NA+LL)=IDHEP(NHEP0+LL)
-           JMOPHO(1,NA+LL)=JMOHEP(1,NHEP0+LL)
-           IF (JMOHEP(1,NHEP0+LL).EQ.IP) JMOPHO(1,NA+LL)=1
-           DO I=1,5
-             PPHO(I,NA+LL)=PHEP(I,NHEP0+LL)
-           ENDDO
-        ENDDO
-C--        there is NHEP-NHEP0 daugters more.
-           JDAPHO(2,1)=3+LAST-FIRST+NHEP-NHEP0
-        ENDIF
-        CALL PHLUPA(1)
-        CALL PHCORK(0)
-C special case of t tbar production process
-        IF(IFTOP) CALL PHOTWO(0)
-        BOOST=.FALSE.
-C--   Check whether parent is in its rest frame...
-      IF (     (ABS(PPHO(4,1)-PPHO(5,1)).GT.PPHO(5,1)*1.D-8)
-     $    .AND.(PPHO(5,1).NE.0))                            THEN
-        BOOST=.TRUE.
-C--
-C--   Boost daughter particles to rest frame of parent...
-C--   Resultant neutral system already calculated in rest frame !
-        DO 10 J=1,3
-   10   BET(J)=-PPHO(J,1)/PPHO(5,1)
-        GAM=PPHO(4,1)/PPHO(5,1)
-        DO 30 I=JDAPHO(1,1),JDAPHO(2,1)
-          PB=BET(1)*PPHO(1,I)+BET(2)*PPHO(2,I)+BET(3)*PPHO(3,I)
-          DO 20 J=1,3
-   20     PPHO(J,I)=PPHO(J,I)+BET(J)*(PPHO(4,I)+PB/(GAM+1.D0))
-   30   PPHO(4,I)=GAM*PPHO(4,I)+PB
-C--    Finally boost mother as well
-          I=1   
-          PB=BET(1)*PPHO(1,I)+BET(2)*PPHO(2,I)+BET(3)*PPHO(3,I)
-          DO J=1,3
-            PPHO(J,I)=PPHO(J,I)+BET(J)*(PPHO(4,I)+PB/(GAM+1.D0))
-          ENDDO
-          PPHO(4,I)=GAM*PPHO(4,I)+PB
-      ENDIF
-C special case of t tbar production process
-        IF(IFTOP) CALL PHOTWO(1)
-      CALL PHLUPA(2)
-      END 
diff --git a/TEvtGen/PHOTOS/phoinf.F b/TEvtGen/PHOTOS/phoinf.F
deleted file mode 100644 (file)
index bcdfa14..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-      SUBROUTINE PHOINF
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays general INFo
-C.
-C.    Purpose:  Print PHOTOS info
-C.
-C.    Input Parameters:   PHOLUN
-C.
-C.    Output Parameters:  PHOVN1, PHOVN2
-C.
-C.    Author(s):  B. van Eijk                     Created at:  12/04/90
-C.                                                Last Update: 02/10/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER IV1,IV2,IV3
-      INTEGER PHOVN1,PHOVN2
-      COMMON/PHOVER/PHOVN1,PHOVN2
-      INTEGER PHLUN
-      COMMON/PHOLUN/PHLUN
-      LOGICAL INTERF,ISEC,IFTOP
-      REAL*8 FINT,FSEC
-      COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
-      REAL*8 ALPHA,XPHCUT
-      COMMON/PHOCOP/ALPHA,XPHCUT
-C--
-C--   PHOTOS version number and release date
-      PHOVN1=202
-      PHOVN2=150399
-C--
-C--   Print info
-      WRITE(PHLUN,9000)
-      WRITE(PHLUN,9020)
-      WRITE(PHLUN,9010)
-      WRITE(PHLUN,9030)
-      IV1=PHOVN1/100
-      IV2=PHOVN1-IV1*100
-      WRITE(PHLUN,9040) IV1,IV2
-      IV1=PHOVN2/10000
-      IV2=(PHOVN2-IV1*10000)/100
-      IV3=PHOVN2-IV1*10000-IV2*100
-      WRITE(PHLUN,9050) IV1,IV2,IV3
-      WRITE(PHLUN,9030)
-      WRITE(PHLUN,9010)
-      WRITE(PHLUN,9060) 
-      WRITE(PHLUN,9010)
-      WRITE(PHLUN,9070)
-      WRITE(PHLUN,9010)
-      WRITE(PHLUN,9020)
-      WRITE(PHLUN,9010)
-      WRITE(PHLUN,9064) INTERF,ISEC,IFTOP,ALPHA,XPHCUT
-      WRITE(PHLUN,9010)
-      IF (INTERF) WRITE(PHLUN,9061)
-      IF (ISEC)   WRITE(PHLUN,9062)
-      IF (IFTOP)  WRITE(PHLUN,9063)
-      WRITE(PHLUN,9080)
-      WRITE(PHLUN,9010)
-      WRITE(PHLUN,9020)
-      RETURN
- 9000 FORMAT(1H1)
- 9010 FORMAT(1H ,'*',T81,'*')
- 9020 FORMAT(1H ,80('*'))
- 9030 FORMAT(1H ,'*',26X,26('='),T81,'*')
- 9040 FORMAT(1H ,'*',28X,'PHOTOS, Version: ',I2,'.',I2,T81,'*')
- 9050 FORMAT(1H ,'*',28X,'Released at:  ',I2,'/',I2,'/',I2,T81,'*')
- 9060 FORMAT(1H ,'*',18X,'PHOTOS QED Corrections in Particle Decays',
-     &T81,'*')
- 9061 FORMAT(1H ,'*',18X,'option with interference is active       ',
-     &T81,'*')
- 9062 FORMAT(1H ,'*',18X,'option with double photons is active     ',
-     &T81,'*')
- 9063 FORMAT(1H ,'*',18X,'emision in t tbar production is active   ',
-     &T81,'*')
- 9064 FORMAT(1H ,'*',18X,'Internal input parameters:',T81,'*'
-     &,/,    1H ,'*',T81,'*'
-     &,/,    1H ,'*',18X,'INTERF=',L2,'  ISEC=',L2,'  IFTOP=',L2,T81,'*'
-     &,/,    1H ,'*',18X,'ALPHA_QED=',F8.5,'   XPHCUT=',F8.5,T81,'*')
- 9070 FORMAT(1H ,'*',9X,'Monte Carlo Program - by E. Barberio, B. van Ei
-     &jk and Z. Was',T81,'*',/,
-     &      1H ,'*',9X,'From version 2.0 on - by E.B. and Z.W.',T81,'*')
- 9080 FORMAT( 1H ,'*',9X,' ',T81,'*',/,
-     &  1H ,'*',9X,
-     & ' WARNING (1): /HEPEVT/ is not anymore the standard common block'
-     & ,T81,'*',/,
-     &  1H ,'*',9X,' ',T81,'*',/,
-     &  1H ,'*',9X,
-     & ' PHOTOS expects /HEPEVT/ to have REAL*4 variables. To change to'
-     & ,T81,'*',/,  1H ,'*',9X,
-     & ' REAL*8 modify its declaration in subr. PHOTOS_GET PHOTOS_SET:'
-     & ,T81,'*',/,  1H ,'*',9X,
-     & '      REAL*8  d_h_phep,  d_h_vhep'
-     & ,T81,'*',/,  1H ,'*',9X,
-     & ' WARNING (2): check dims. of /hepevt/ /phoqed/ /ph_hepevt/.'
-     & ,T81,'*',/,  1H ,'*',9X,
-     & ' HERE:                     d_h_nmxhep=4000  and  NMXHEP=10000'
-     & ,T81,'*')
-      END
diff --git a/TEvtGen/PHOTOS/phoini.F b/TEvtGen/PHOTOS/phoini.F
deleted file mode 100644 (file)
index fef1fb8..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-*/////////////////////////////////////////////////////////////////////////////////////
-*//                                                                                 //
-*//  !!!!!!! WARNING!!!!!   This source may be  agressive !!!!                      //
-*//                                                                                 //
-*//  Due to short common block names it may owerwrite variables in other parts      //
-*//  of the code.                                                                   //
-*//                                                                                 //
-*//  One should add suffix c_Photos_ to names of all commons as soon as possible!!  //
-*//                                                                                 //
-*/////////////////////////////////////////////////////////////////////////////////////
-
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOtos CDE's
-C.
-C.    Purpose:  Keep definitions  for PHOTOS QED correction Monte Carlo.
-C.
-C.    Input Parameters:   None
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  Z. Was, B. van Eijk             Created at:  29/11/89
-C.                                                Last Update: 10/08/93
-C.
-C. =========================================================
-C.    General Structure Information:                       =
-C. =========================================================
-C:   ROUTINES:
-C.             1) INITIALIZATION:
-C.                                      PHOCDE
-C.                                      PHOINI
-C.                                      PHOCIN
-C.                                      PHOINF
-C.             2) GENERAL INTERFACE:
-C.                                      PHOTOS
-C.                                      PHOTOS_GET
-C.                                      PHOTOS_SET
-C.                                      PHOTOS_MAKE
-C.                                      PHOBOS
-C.                                      PHOIN
-C.                                      PHOTWO (specific interface
-C.                                      PHOOUT
-C.                                      PHOCHK
-C.                                      PHTYPE (specific interface
-C.                                      PHOMAK (specific interface
-C.             3) QED PHOTON GENERATION:
-C.                                      PHINT
-C.                                      PHOPRE
-C.                                      PHOOMA
-C.                                      PHOENE
-C.                                      PHOCOR
-C.                                      PHOFAC
-C.                                      PHODO
-C.             4) UTILITIES:
-C.                                      PHOTRI
-C.                                      PHOAN1
-C.                                      PHOAN2
-C.                                      PHOBO3
-C.                                      PHORO2
-C.                                      PHORO3
-C.                                      PHORIN
-C.                                      PHORAN
-C.                                      PHOCHA
-C.                                      PHOSPI
-C.                                      PHOERR
-C.                                      PHOREP
-C.                                      PHLUPA
-C.                                      PHCORK
-C.   COMMONS:
-C.   NAME     USED IN SECT. # OF OCC.     Comment
-C.   PHOQED   1) 2)            3      Flags whether emisson to be gen. 
-C.   PHOLUN   1) 4)            6      Output device number
-C.   PHOCOP   1) 3)            4      photon coupling & min energy
-C.   PHPICO   1) 3) 4)         5      PI & 2*PI
-C.   PHSEED   1) 4)            3      RN seed 
-C.   PHOSTA   1) 4)            3      Status information
-C.   PHOKEY   1) 2) 3)         7      Keys for nonstandard application
-C.   PHOVER   1)               1      Version info for outside
-C.   HEPEVT   2)               2      PDG common
-C.   PH_HEPEVT2)               8      PDG common internal
-C.   PHOEVT   2) 3)           10      PDG branch
-C.   PHOIF    2) 3)            2      emission flags for PDG branch 
-C.   PHOMOM   3)               5      param of char-neutr system
-C.   PHOPHS   3)               5      photon momentum parameters
-C.   PHOPRO   3)               4      var. for photon rep. (in branch)
-C.   PHOCMS   2)               3      parameters of boost to branch CMS
-C.   PHNUM    4)               1      event number from outside         
-C.----------------------------------------------------------------------
-      SUBROUTINE PHOINI(ISEEDF,ISEEDS)
-
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays INItialisation
-C.
-C.    Purpose:  Initialisation  routine  for  the  PHOTOS  QED radiation
-C.              package.  Should be called  at least once  before a call
-C.              to the steering program 'PHOTOS' is made.
-C.
-C.    Input Parameters:   None
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
-C.                                                Last Update: 12/04/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER ISEEDF, ISEEDS
-      INTEGER INIT
-      SAVE INIT
-      DATA INIT/ 0/
-C--
-C--   Return if already initialized...
-      IF (INIT.NE.0) RETURN
-      INIT=1
-C--
-C--   Preset parameters in PHOTOS commons
-      CALL PHOCIN(ISEEDF,ISEEDS)
-C--
-C--   Print info
-      CALL PHOINF
-C--
-C--   Initialization of kinematic correction against rounding errors.
-C--   Default parameter is 1 (no correction) optionally 2, 3, 4
-      CALL PHCORK(1)
-C--
-C--   Initialize Marsaglia and Zaman random number generator
-      CALL PHORIN
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phomak.F b/TEvtGen/PHOTOS/phomak.F
deleted file mode 100644 (file)
index bb66fb9..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-      SUBROUTINE PHOMAK(IPPAR,NHEP0)
-C.----------------------------------------------------------------------
-C.
-C.    PHOMAK:   PHOtos MAKe
-C.
-C.    Purpose:  Single or double bremstrahlung radiative corrections  
-C.              are generated in  the decay of the IPPAR-th particle in 
-C.              the  HEP common /PH_HEPEVT/. Example of the use of 
-C.              general tools.
-C.
-C.    Input Parameter:    IPPAR:  Pointer   to   decaying  particle  in
-C.                                /PH_HEPEVT/ and the common itself
-C.
-C.    Output Parameters:  Common  /PH_HEPEVT/, either  with  or  without
-C.                                particles added.
-C.
-C.    Author(s):  Z. Was,                         Created at:  26/05/93
-C.                                                Last Update: 
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION DATA
-      REAL*8 PHORAN
-      INTEGER IP,IPPAR,NCHARG
-      INTEGER WTDUM,IDUM,NHEP0
-      INTEGER NCHARB,NEUDAU
-      REAL*8 RN,WT,PHINT
-      LOGICAL BOOST
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      LOGICAL INTERF,ISEC,IFTOP
-      REAL*8 FINT,FSEC
-      COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
-C--
-      IP=IPPAR
-      IDUM=1
-      NCHARG=0
-C--
-        CALL PHOIN(IP,BOOST,NHEP0)
-        CALL PHOCHK(JDAHEP(1,IP))
-        WT=0.0D0
-        CALL PHOPRE(1,WT,NEUDAU,NCHARB)
-        IF (WT.EQ.0.0D0) RETURN
-        RN=PHORAN(WTDUM)
-C PHODO is caling PHORAN, thus change of series if it is moved before if
-        CALL PHODO(1,NCHARB,NEUDAU)
-        IF (INTERF) WT=WT*PHINT(IDUM)/FINT
-        DATA=WT 
-        IF (WT.GT.1.0D0) CALL PHOERR(3,'WT_INT',DATA)
-      IF (RN.LE.WT) THEN 
-        CALL PHOOUT(IP,BOOST,NHEP0)
-      ENDIF
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phooma.F b/TEvtGen/PHOTOS/phooma.F
deleted file mode 100644 (file)
index 849ab48..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-      SUBROUTINE PHOOMA(IFIRST,ILAST,POINTR)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays Order MAss vector
-C.
-C.    Purpose:  Order  the  contents  of array 'POINTR' according to the
-C.              decreasing value in the array 'MASS'.
-C.
-C.    Input Parameters:  IFIRST, ILAST:  Pointers  to  the  vector loca-
-C.                                       tion be sorted,
-C.                       POINTR:         Unsorted array with pointers to
-C.                                       /PHOEVT/.
-C.
-C.    Output Parameter:  POINTR:         Sorted arrays  with  respect to
-C.                                       particle mass 'PPHO(5,*)'.
-C.
-C.    Author(s):  B. van Eijk                     Created at:  28/11/89
-C.                                                Last Update: 27/05/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      INTEGER IFIRST,ILAST,I,J,BUFPOI,POINTR(NMXPHO)
-      REAL*8 BUFMAS,MASS(NMXPHO)
-      IF (IFIRST.EQ.ILAST) RETURN
-C--
-C--   Copy particle masses
-      DO 10 I=IFIRST,ILAST
-   10 MASS(I)=PPHO(5,POINTR(I))
-C--
-C--   Order the masses in a decreasing series
-      DO 30 I=IFIRST,ILAST-1
-        DO 20 J=I+1,ILAST
-          IF (MASS(J).LE.MASS(I)) GOTO 20
-          BUFPOI=POINTR(J)
-          POINTR(J)=POINTR(I)
-          POINTR(I)=BUFPOI
-          BUFMAS=MASS(J)
-          MASS(J)=MASS(I)
-          MASS(I)=BUFMAS
-   20   CONTINUE
-   30 CONTINUE
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phoout.F b/TEvtGen/PHOTOS/phoout.F
deleted file mode 100644 (file)
index 9915189..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-      SUBROUTINE PHOOUT(IP,BOOST,NHEP0)
-C.----------------------------------------------------------------------
-C.
-C.    PHOOUT:   PHOtos OUTput
-C.
-C.    Purpose:  copies back IP branch of the common /PH_HEPEVT/ from 
-C.              /PHOEVT/ moves branch back from its CMS system.
-C.
-C.    Input Parameters:       IP:  pointer of particle starting branch
-C.                                 to be given back.
-C.                        BOOST:   Flag whether boost to CMS was or was 
-C     .                            not performed.
-C.
-C.    Output Parameters:  Common /PHOEVT/, 
-C.
-C.    Author(s):  Z. Was                          Created at:  24/05/93
-C.                                                Last Update:
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      INTEGER IP,LL,FIRST,LAST,I
-      LOGICAL BOOST
-      INTEGER NN,J,K,NHEP0,NA
-      DOUBLE PRECISION BET(3),GAM,PB
-      COMMON /PHOCMS/ BET,GAM
-      IF(NPHO.EQ.NEVPHO) RETURN
-C--   When parent was not in its rest-frame, boost back...
-      CALL PHLUPA(10)
-      IF (BOOST) THEN
-        DO 110 J=JDAPHO(1,1),JDAPHO(2,1)
-          PB=-BET(1)*PPHO(1,J)-BET(2)*PPHO(2,J)-BET(3)*PPHO(3,J)
-          DO 100 K=1,3
-  100     PPHO(K,J)=PPHO(K,J)-BET(K)*(PPHO(4,J)+PB/(GAM+1.D0))
-  110   PPHO(4,J)=GAM*PPHO(4,J)+PB
-C--   ...boost photon, or whatever else has shown up
-        DO NN=NEVPHO+1,NPHO
-          PB=-BET(1)*PPHO(1,NN)-BET(2)*PPHO(2,NN)-BET(3)*PPHO(3,NN)
-          DO 120 K=1,3
-  120     PPHO(K,NN)=PPHO(K,NN)-BET(K)*(PPHO(4,NN)+PB/(GAM+1.D0))
-          PPHO(4,NN)=GAM*PPHO(4,NN)+PB
-        ENDDO
-      ENDIF
-        FIRST=JDAHEP(1,IP)
-        LAST =JDAHEP(2,IP)
-C let's take in original daughters
-        DO LL=0,LAST-FIRST
-         IDHEP(FIRST+LL) = IDPHO(3+LL)
-           DO I=1,5
-             PHEP(I,FIRST+LL) = PPHO(I,3+LL)
-           ENDDO
-        ENDDO
-C let's take newcomers to the end of HEPEVT.
-        NA=3+LAST-FIRST
-        DO LL=1,NPHO-NA
-         IDHEP(NHEP0+LL) = IDPHO(NA+LL)
-         ISTHEP(NHEP0+LL)=ISTPHO(NA+LL)
-         JMOHEP(1,NHEP0+LL)=IP
-         JMOHEP(2,NHEP0+LL)=JMOHEP(2,JDAHEP(1,IP))
-         JDAHEP(1,NHEP0+LL)=0
-         JDAHEP(2,NHEP0+LL)=0
-           DO I=1,5
-             PHEP(I,NHEP0+LL) = PPHO(I,NA+LL)
-           ENDDO
-        ENDDO
-        NHEP=NHEP+NPHO-NEVPHO
-        CALL PHLUPA(20)
-      END 
diff --git a/TEvtGen/PHOTOS/phopre.F b/TEvtGen/PHOTOS/phopre.F
deleted file mode 100644 (file)
index 022e5df..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-
-
-      SUBROUTINE PHOPRE(IPARR,WT,NEUDAU,NCHARB)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   Photon radiation in decays
-C.
-C.    Purpose:  Order (alpha) radiative corrections  are  generated  in
-C.              the decay of the IPPAR-th particle in the HEP-like
-C.              common /PHOEVT/.  Photon radiation takes place from one
-C.              of the charged daughters of the decaying particle IPPAR
-C.              WT is calculated, eventual rejection will be performed
-C.              later after inclusion of interference weight.
-C.
-C.    Input Parameter:    IPPAR:  Pointer   to   decaying  particle  in
-C.                                /PHOEVT/ and the common itself,
-C.
-C.    Output Parameters:  Common  /PHOEVT/, either  with  or  without a
-C.                                photon(s) added.
-C.                        WT      weight of the configuration 
-C.
-C.    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
-C.                                                Last Update: 26/05/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION MINMAS,MPASQR,MCHREN
-      DOUBLE PRECISION BETA,EPS,DEL1,DEL2,DATA
-      REAL*8 PHOCHA,PHOSPI,PHORAN,PHOCOR,MASSUM
-      INTEGER IP,IPARR,IPPAR,I,J,ME,NCHARG,NEUPOI,NLAST,THEDUM
-      INTEGER IDABS,IDUM
-      INTEGER NCHARB,NEUDAU
-      REAL*8 WT
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      LOGICAL CHKIF
-      COMMON/PHOIF/CHKIF(NMXPHO)
-      INTEGER CHAPOI(NMXPHO)
-      DOUBLE PRECISION MCHSQR,MNESQR
-      REAL*8 PNEUTR
-      COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
-      DOUBLE PRECISION COSTHG,SINTHG
-      REAL*8 XPHMAX,XPHOTO
-      COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
-      REAL*8 ALPHA,XPHCUT
-      COMMON/PHOCOP/ALPHA,XPHCUT
-      INTEGER IREP
-      REAL*8 PROBH,CORWT,XF
-      COMMON/PHOPRO/PROBH,CORWT,XF,IREP
-C--
-      IPPAR=IPARR
-C--   Store pointers for cascade treatement...
-      IP=IPPAR
-      NLAST=NPHO
-      IDUM=1
-C--
-C--   Check decay multiplicity..
-      IF (JDAPHO(1,IP).EQ.0) RETURN
-C--
-C--   Loop over daughters, determine charge multiplicity
-   10 NCHARG=0
-      IREP=0
-      MINMAS=0.D0
-      MASSUM=0.D0
-      DO 20 I=JDAPHO(1,IP),JDAPHO(2,IP)
-C--
-C--
-C--   Exclude marked particles, quarks and gluons etc...
-        IDABS=ABS(IDPHO(I))
-        IF (CHKIF(I-JDAPHO(1,IP)+3)) THEN
-          IF (PHOCHA(IDPHO(I)).NE.0) THEN
-            NCHARG=NCHARG+1
-            IF (NCHARG.GT.NMXPHO) THEN
-              DATA=NCHARG
-              CALL PHOERR(1,'PHOTOS',DATA)
-            ENDIF
-            CHAPOI(NCHARG)=I
-          ENDIF
-          MINMAS=MINMAS+PPHO(5,I)**2
-        ENDIF
-        MASSUM=MASSUM+PPHO(5,I)
-   20 CONTINUE
-      IF (NCHARG.NE.0) THEN
-C--
-C--   Check that sum of daughter masses does not exceed parent mass
-        IF ((PPHO(5,IP)-MASSUM)/PPHO(5,IP).GT.2.D0*XPHCUT) THEN
-C--
-C--   Order  charged  particles  according  to decreasing mass, this  to
-C--   increase efficiency (smallest mass is treated first).
-          IF (NCHARG.GT.1) CALL PHOOMA(1,NCHARG,CHAPOI)
-C--
-   30       CONTINUE
-            DO 70 J=1,3
-   70       PNEUTR(J)=-PPHO(J,CHAPOI(NCHARG))
-            PNEUTR(4)=PPHO(5,IP)-PPHO(4,CHAPOI(NCHARG))
-C--
-C--   Calculate  invariant  mass of 'neutral' etc. systems
-          MPASQR=PPHO(5,IP)**2
-          MCHSQR=PPHO(5,CHAPOI(NCHARG))**2
-          IF ((JDAPHO(2,IP)-JDAPHO(1,IP)).EQ.1) THEN
-            NEUPOI=JDAPHO(1,IP)
-            IF (NEUPOI.EQ.CHAPOI(NCHARG)) NEUPOI=JDAPHO(2,IP)
-            MNESQR=PPHO(5,NEUPOI)**2
-            PNEUTR(5)=PPHO(5,NEUPOI)
-          ELSE
-            MNESQR=PNEUTR(4)**2-PNEUTR(1)**2-PNEUTR(2)**2-PNEUTR(3)**2
-            MNESQR=MAX(MNESQR,MINMAS-MCHSQR)
-            PNEUTR(5)=SQRT(MNESQR)
-          ENDIF
-C--
-C--   Determine kinematical limit...
-          XPHMAX=(MPASQR-(PNEUTR(5)+PPHO(5,CHAPOI(NCHARG)))**2)/MPASQR
-C--
-C--   Photon energy fraction...
-          CALL PHOENE(MPASQR,MCHREN,BETA,IDPHO(CHAPOI(NCHARG)))
-C--
-C--   Energy fraction not too large (very seldom) ? Define angle.
-          IF ((XPHOTO.LT.XPHCUT).OR.(XPHOTO.GT.XPHMAX)) THEN
-C--
-C--   No radiation was accepted, check  for more daughters  that may ra-
-C--   diate and correct radiation probability...
-            NCHARG=NCHARG-1
-            IF (NCHARG.GT.0) THEN
-              IREP=IREP+1
-              GOTO 30
-            ENDIF
-          ELSE
-C--
-C--   Angle is generated  in  the  frame defined  by  charged vector and
-C--   PNEUTR, distribution is taken in the infrared limit...
-            EPS=MCHREN/(1.D0+BETA)
-C--
-C--   Calculate sin(theta) and cos(theta) from interval variables
-            DEL1=(2.D0-EPS)*(EPS/(2.D0-EPS))**PHORAN(THEDUM)
-            DEL2=2.D0-DEL1
-            COSTHG=(1.D0-DEL1)/BETA
-            SINTHG=SQRT(DEL1*DEL2-MCHREN)/BETA
-C--
-C--   Determine spin of  particle and construct code  for matrix element
-            ME=2.D0*PHOSPI(IDPHO(CHAPOI(NCHARG)))+1.D0
-C--
-C--   Weighting procedure with 'exact' matrix element, reconstruct kine-
-C--   matics for photon, neutral and charged system and update /PHOEVT/.
-C--   Find pointer to the first component of 'neutral' system
-      DO  I=JDAPHO(1,IP),JDAPHO(2,IP)
-        IF (I.NE.CHAPOI(NCHARG)) THEN
-          NEUDAU=I
-          GOTO 51
-        ENDIF
-      ENDDO
-C--
-C--   Pointer not found...
-      DATA=NCHARG
-      CALL PHOERR(5,'PHOKIN',DATA)
- 51   CONTINUE
-      NCHARB=CHAPOI(NCHARG)
-      NCHARB=NCHARB-JDAPHO(1,IP)+3
-      NEUDAU=NEUDAU-JDAPHO(1,IP)+3
-        WT=PHOCOR(MPASQR,MCHREN,ME)
-
-          ENDIF
-        ELSE
-          DATA=PPHO(5,IP)-MASSUM
-          CALL PHOERR(10,'PHOTOS',DATA)
-        ENDIF
-      ENDIF
-C--
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phoran.F b/TEvtGen/PHOTOS/phoran.F
deleted file mode 100644 (file)
index fce6360..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-      FUNCTION PHORAN(IDUM)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays RANdom number generator based
-C.              on Marsaglia Algorithm
-C.
-C.    Purpose:  Generate  uniformly  distributed  random numbers between
-C.              0 and 1.  Super long period:  2**144.  See also:
-C.              G. Marsaglia and A. Zaman,  FSU-SCR-87-50,  for seed mo-
-C.              difications  to  this version  see:  F. James DD-Report,
-C.              November 1988.  The generator  has  to be initialized by
-C.              a call to PHORIN.
-C.
-C.    Input Parameters:   IDUM (integer dummy)
-C.
-C.    Output Parameters:  Function value
-C.
-C.    Author(s):  B. van Eijk, G. Marsaglia and   Created at:  27/09/89
-C.                A. Zaman                        Last Update: 27/09/89
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      REAL*8 PHORAN
-      INTEGER IDUM
-      INTEGER ISEED,I97,J97
-      REAL*8 URAN,CRAN,CDRAN,CMRAN
-      COMMON/PHSEED/ISEED(2),I97,J97,URAN(97),CRAN,CDRAN,CMRAN
-   10 PHORAN=URAN(I97)-URAN(J97)
-      IF (PHORAN.LT.0.D0) PHORAN=PHORAN+1.D0
-      URAN(I97)=PHORAN
-      I97=I97-1
-      IF (I97.EQ.0) I97=97
-      J97=J97-1
-      IF (J97.EQ.0) J97=97
-      CRAN=CRAN-CDRAN
-      IF (CRAN.LT.0.D0) CRAN=CRAN+CMRAN
-      PHORAN=PHORAN-CRAN
-      IF (PHORAN.LT.0.D0) PHORAN=PHORAN+1.D0
-      IF (PHORAN.LE.0.D0) GOTO 10
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phorep.F b/TEvtGen/PHOTOS/phorep.F
deleted file mode 100644 (file)
index dab17cf..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-      SUBROUTINE PHOREP
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays run summary REPort
-C.
-C.    Purpose:  Inform user about success and/or restrictions of PHOTOS
-C.              encountered during execution.
-C.
-C.    Input Parameters:   Common /PHOSTA/
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  B. van Eijk                     Created at:  10/01/92
-C.                                                Last Update: 10/01/92
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER PHLUN
-      COMMON/PHOLUN/PHLUN
-      INTEGER PHOMES
-      PARAMETER (PHOMES=10)
-      INTEGER STATUS
-      COMMON/PHOSTA/STATUS(PHOMES)
-      INTEGER I
-      LOGICAL ERROR
-      ERROR=.FALSE.
-      WRITE(PHLUN,9000)
-      WRITE(PHLUN,9010)
-      WRITE(PHLUN,9020)
-      WRITE(PHLUN,9030)
-      WRITE(PHLUN,9040)
-      WRITE(PHLUN,9030)
-      WRITE(PHLUN,9020)
-      DO 10 I=1,PHOMES
-        IF (STATUS(I).EQ.0) GOTO 10
-        IF ((I.EQ.6).OR.(I.EQ.10)) THEN
-          WRITE(PHLUN,9050) I,STATUS(I)
-        ELSE
-          ERROR=.TRUE.
-          WRITE(PHLUN,9060) I,STATUS(I)
-        ENDIF
-   10 CONTINUE
-      IF (.NOT.ERROR) WRITE(PHLUN,9070)
-      WRITE(PHLUN,9020)
-      WRITE(PHLUN,9010)
-      RETURN
- 9000 FORMAT(1H1)
- 9010 FORMAT(1H ,80('*'))
- 9020 FORMAT(1H ,'*',T81,'*')
- 9030 FORMAT(1H ,'*',26X,25('='),T81,'*')
- 9040 FORMAT(1H ,'*',30X,'PHOTOS Run Summary',T81,'*')
- 9050 FORMAT(1H ,'*',22X,'Warning #',I2,' occured',I6,' times',T81,'*')
- 9060 FORMAT(1H ,'*',23X,'Error #',I2,' occured',I6,' times',T81,'*')
- 9070 FORMAT(1H ,'*',16X,'PHOTOS Execution has successfully terminated',
-     &T81,'*')
-      END
diff --git a/TEvtGen/PHOTOS/phorin.F b/TEvtGen/PHOTOS/phorin.F
deleted file mode 100644 (file)
index 1994297..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-      SUBROUTINE PHORIN
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation  in decays RANdom number generator init
-C.
-C.    Purpose:  Initialse PHORAN  with  the user  specified seeds in the
-C.              array ISEED.  For details  see also:  F. James  CERN DD-
-C.              Report November 1988.
-C.
-C.    Input Parameters:   ISEED(*)
-C.
-C.    Output Parameters:  URAN, CRAN, CDRAN, CMRAN, I97, J97
-C.
-C.    Author(s):  B. van Eijk and F. James        Created at:  27/09/89
-C.                                                Last Update: 22/02/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION DATA
-      REAL*8 S,T
-      INTEGER I,IS1,IS2,IS3,IS4,IS5,J
-      INTEGER ISEED,I97,J97
-      REAL*8 URAN,CRAN,CDRAN,CMRAN
-      COMMON/PHSEED/ISEED(2),I97,J97,URAN(97),CRAN,CDRAN,CMRAN
-C--
-C--   Check value range of seeds
-      IF ((ISEED(1).LT.0).OR.(ISEED(1).GE.31328)) THEN
-        DATA=ISEED(1)
-        CALL PHOERR(8,'PHORIN',DATA)
-      ENDIF
-      IF ((ISEED(2).LT.0).OR.(ISEED(2).GE.30081)) THEN
-        DATA=ISEED(2)
-        CALL PHOERR(9,'PHORIN',DATA)
-      ENDIF
-C--
-C--   Calculate Marsaglia and Zaman seeds (by F. James)
-      IS1=MOD(ISEED(1)/177,177)+2
-      IS2=MOD(ISEED(1),177)+2
-      IS3=MOD(ISEED(2)/169,178)+1
-      IS4=MOD(ISEED(2),169)
-      DO 20 I=1,97
-        S=0.D0
-        T=0.5D0
-        DO 10 J=1,24
-          IS5=MOD (MOD(IS1*IS2,179)*IS3,179)
-          IS1=IS2
-          IS2=IS3
-          IS3=IS5
-          IS4=MOD(53*IS4+1,169)
-          IF (MOD(IS4*IS5,64).GE.32) S=S+T
-   10   T=0.5D0*T
-   20 URAN(I)=S
-      CRAN=362436.D0/16777216.D0
-      CDRAN=7654321.D0/16777216.D0
-      CMRAN=16777213.D0/16777216.D0
-      I97=97
-      J97=33
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phoro2.F b/TEvtGen/PHOTOS/phoro2.F
deleted file mode 100644 (file)
index a216372..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-      SUBROUTINE PHORO2(ANGLE,PVEC)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays ROtation routine '2'
-C.
-C.    Purpose:  Rotate  x and z components  of vector PVEC  around angle
-C.              'ANGLE'.
-C.
-C.    Input Parameters:  ANGLE, PVEC
-C.
-C.    Output Parameter:  PVEC
-C.
-C.    Author(s):  S. Jadach                       Created at:  01/01/89
-C.                B. van Eijk                     Last Update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION CS,SN,ANGLE
-      REAL*8 PVEC(4)
-      CS=COS(ANGLE)*PVEC(1)+SIN(ANGLE)*PVEC(3)
-      SN=-SIN(ANGLE)*PVEC(1)+COS(ANGLE)*PVEC(3)
-      PVEC(1)=CS
-      PVEC(3)=SN
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phoro3.F b/TEvtGen/PHOTOS/phoro3.F
deleted file mode 100644 (file)
index aac7ca7..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-      SUBROUTINE PHORO3(ANGLE,PVEC)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays ROtation routine '3'
-C.
-C.    Purpose:  Rotate  x and y components  of vector PVEC  around angle
-C.              'ANGLE'.
-C.
-C.    Input Parameters:  ANGLE, PVEC
-C.
-C.    Output Parameter:  PVEC
-C.
-C.    Author(s):  S. Jadach                       Created at:  01/01/89
-C.                B. van Eijk                     Last Update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION CS,SN,ANGLE
-      REAL*8 PVEC(4)
-      CS=COS(ANGLE)*PVEC(1)-SIN(ANGLE)*PVEC(2)
-      SN=SIN(ANGLE)*PVEC(1)+COS(ANGLE)*PVEC(2)
-      PVEC(1)=CS
-      PVEC(2)=SN
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/phospi.F b/TEvtGen/PHOTOS/phospi.F
deleted file mode 100644 (file)
index c55f709..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-      FUNCTION PHOSPI(IDHEP)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation  in decays function for SPIn determina-
-C.              tion
-C.
-C.    Purpose:  Calculate  the spin  of particle  with  code IDHEP.  The
-C.              code  of the particle  is  defined  by the Particle Data
-C.              Group in Phys. Lett. B204 (1988) 1.
-C.
-C.    Input Parameter:   IDHEP
-C.
-C.    Output Parameter:  Funtion  value = spin  of  particle  with  code
-C.                       IDHEP
-C.
-C.    Author(s):  E. Barberio and B. van Eijk     Created at:  29/11/89
-C.                                                Last update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      REAL*8 PHOSPI
-      INTEGER IDHEP,IDABS
-C--
-C--   Array 'SPIN' contains the spin  of  the first 100 particles accor-
-C--   ding to the PDG particle code...
-      REAL*8 SPIN(100)
-      DATA SPIN/ 8*.5D0, 1.D0, 0.D0, 8*.5D0, 2*0.D0, 4*1.D0, 76*0.D0/
-      IDABS=ABS(IDHEP)
-C--
-C--   Spin of quark, lepton, boson etc....
-      IF (IDABS.LE.100) THEN
-        PHOSPI=SPIN(IDABS)
-      ELSE
-C--
-C--   ...other particles, however...
-        PHOSPI=(MOD(IDABS,10)-1.D0)/2.D0
-C--
-C--   ...K_short and K_long are special !!
-        PHOSPI=MAX(PHOSPI,0.D0)
-      ENDIF
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/photos.F b/TEvtGen/PHOTOS/photos.F
deleted file mode 100644 (file)
index 8b3b43e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-      SUBROUTINE PHOTOS(ID)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:  General search routine + _GET + _SET
-C.
-C.    Purpose:  /HEPEVT/ is not anymore a standard at least 
-C.              REAL*8 REAL*4 are in use. PHOTOS_GET and PHOTOS_SET
-C.              were to be introduced.
-C.              
-C.
-C.    Input Parameters:   ID see routine PPHOTOS_MAKE
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  Z. Was                          Created at:  21/07/98
-C.                                                Last Update: 21/07/98
-C.
-C.----------------------------------------------------------------------
-      CALL PHOTOS_GET
-      CALL PHOTOS_MAKE(ID)
-      CALL PHOTOS_SET
-      END
diff --git a/TEvtGen/PHOTOS/photos_get.F b/TEvtGen/PHOTOS/photos_get.F
deleted file mode 100644 (file)
index ee4ebb6..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-      SUBROUTINE  PHOTOS_GET
-C.----------------------------------------------------------------------
-C.
-C.    Getter for PHOTOS:   
-C.
-C.    Purpose:  Copies /HEPEVT/ into /PH_HEPEVT/
-C.              
-C.
-C.    Input Parameters:   None
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  Z. Was                          Created at:  21/07/98
-C.                                                Last Update: 21/07/98
-C.
-C.----------------------------------------------------------------------
-
-      IMPLICIT NONE
-      INTEGER  d_h_nmxhep         ! maximum number of particles
-      PARAMETER ( d_h_nmxhep=4000)
-      REAL*8  d_h_phep,  d_h_vhep ! to be real*4 or *8  depending on host
-      INTEGER d_h_nevhep,d_h_nhep,d_h_isthep,d_h_idhep,d_h_jmohep,
-     $        d_h_jdahep
-      COMMON /hepevt/
-     $      d_h_nevhep,               ! serial number
-     $      d_h_nhep,                 ! number of particles
-     $      d_h_isthep(d_h_nmxhep),   ! status code
-     $      d_h_idhep(d_h_nmxhep),    ! particle ident KF
-     $      d_h_jmohep(2,d_h_nmxhep), ! parent particles
-     $      d_h_jdahep(2,d_h_nmxhep), ! childreen particles
-     $      d_h_phep(5,d_h_nmxhep),   ! four-momentum, mass [GeV]
-     $      d_h_vhep(4,d_h_nmxhep)    ! vertex [mm]
-* ----------------------------------------------------------------------
-!      LOGICAL d_h_qedrad
-!      COMMON /phoqed/ 
-!     $     d_h_qedrad(d_h_nmxhep)    ! Photos flag
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      LOGICAL QEDRAD
-      COMMON/PHOQED/QEDRAD(NMXHEP)
-      integer k,l
-         nevhep=  d_h_nevhep             ! serial number
-         nhep  =  d_h_nhep               ! number of particles
-         DO K=1,nhep
-           isthep(k)    =d_h_isthep(k)   ! status code
-           idhep(k)     =d_h_idhep(k)    ! particle ident KF
-           jmohep(1,k)  =d_h_jmohep(1,k) ! parent particles
-           jdahep(1,k)  =d_h_jdahep(1,k) ! childreen particles
-           jmohep(2,k)  =d_h_jmohep(2,k) ! parent particles
-           jdahep(2,k)  =d_h_jdahep(2,k) ! childreen particles
-           DO l=1,4
-           phep(l,k)    =d_h_phep(l,k)   ! four-momentum, mass [GeV]
-           vhep(l,k)    =d_h_vhep(l,k)   ! vertex [mm]
-           ENDDO
-           phep(5,k)    =d_h_phep(5,k)   ! four-momentum, mass [GeV]
-         ENDDO
-      END
diff --git a/TEvtGen/PHOTOS/photos_make.F b/TEvtGen/PHOTOS/photos_make.F
deleted file mode 100644 (file)
index 2c2077b..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-      SUBROUTINE PHOTOS_MAKE(IPARR)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS_MAKE:   General search routine
-C.
-C.    Purpose:  Search through the /PH_HEPEVT/ standard HEP common, sta-
-C.              rting from  the IPPAR-th  particle.  Whenevr  branching 
-C.              point is found routine PHTYPE(IP) is called.
-C.              Finally if calls on PHTYPE(IP) modified entries, common
-C               /PH_HEPEVT/ is ordered.
-C.
-C.    Input Parameter:    IPPAR:  Pointer   to   decaying  particle  in
-C.                                /PH_HEPEVT/ and the common itself,
-C.
-C.    Output Parameters:  Common  /PH_HEPEVT/, either with or without 
-C.                                new particles added.
-C.
-C.    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
-C.                                                Last Update: 30/08/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      REAL*8 PHOTON(5)
-      INTEGER IP,IPARR,IPPAR,I,J,K,L,NLAST
-      DOUBLE PRECISION DATA
-      INTEGER MOTHER,POSPHO
-      LOGICAL CASCAD
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      LOGICAL QEDRAD
-      COMMON/PHOQED/QEDRAD(NMXHEP)
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER ISTACK(0:NMXPHO),NUMIT,NTRY,KK,LL,II,NA,FIRST,LAST
-      INTEGER FIRSTA,LASTA,IPP,IDA1,IDA2,MOTHER2,IDPHO,ISPHO
-      REAL*8 PORIG(5,NMXPHO)
-C--
-      IPPAR=ABS(IPARR)
-C--   Store pointers for cascade treatement...
-      IP=IPPAR
-      NLAST=NHEP
-      CASCAD=.FALSE.
-C--
-C--   Check decay multiplicity and minimum of correctness..
-      IF ((JDAHEP(1,IP).EQ.0).OR.(JMOHEP(1,JDAHEP(1,IP)).NE.IP)) RETURN
-C--
-C-- single branch mode 
-C-- we start looking for the decay points in the cascade 
-C-- IPPAR is original position where the program was called
-      ISTACK(0)=IPPAR
-C--   NUMIT denotes number of secondary decay branches
-      NUMIT=0
-C--   NTRY denotes number of secondary branches already checked for 
-C--        for existence of further branches 
-      NTRY=0
-C-- let's search if IPARR does not prevent searching. 
-      IF (IPARR.GT.0)  THEN
- 30    CONTINUE
-         DO I=JDAHEP(1,IP),JDAHEP(2,IP)
-          IF (JDAHEP(1,I).NE.0.AND.JMOHEP(1,JDAHEP(1,I)).EQ.I) THEN
-            NUMIT=NUMIT+1
-              IF (NUMIT.GT.NMXPHO) THEN
-               DATA=NUMIT
-               CALL PHOERR(7,'PHOTOS',DATA)
-              ENDIF
-            ISTACK(NUMIT)=I
-          ENDIF
-         ENDDO
-      IF(NUMIT.GT.NTRY) THEN
-       NTRY=NTRY+1
-       IP=ISTACK(NTRY)
-       GOTO 30
-      ENDIF
-      ENDIF
-C-- let's do generation
-      DO 25 KK=0,NUMIT
-        NA=NHEP
-        FIRST=JDAHEP(1,ISTACK(KK))
-        LAST=JDAHEP(2,ISTACK(KK))
-        DO II=1,LAST-FIRST+1
-         DO LL=1,5
-          PORIG(LL,II)=PHEP(LL,FIRST+II-1) 
-         ENDDO
-        ENDDO
-C--
-        CALL PHTYPE(ISTACK(KK))
-C--
-C--  Correct energy/momentum of cascade daughters
-        IF(NHEP.GT.NA) THEN 
-        DO II=1,LAST-FIRST+1
-          IPP=FIRST+II-1
-          FIRSTA=JDAHEP(1,IPP)
-          LASTA=JDAHEP(2,IPP)
-          IF(JMOHEP(1,IPP).EQ.ISTACK(KK))
-     $      CALL PHOBOS(IPP,PORIG(1,II),PHEP(1,IPP),FIRSTA,LASTA) 
-        ENDDO
-        ENDIF
- 25   CONTINUE
-C--
-C--   rearrange  /PH_HEPEVT/  to get correct order..
-        IF (NHEP.GT.NLAST) THEN
-          DO 160 I=NLAST+1,NHEP
-C--
-C--   Photon mother and position...
-            MOTHER=JMOHEP(1,I)
-            POSPHO=JDAHEP(2,MOTHER)+1
-C--   Intermediate save of photon energy/momentum and pointers
-              DO 90 J=1,5
-   90         PHOTON(J)=PHEP(J,I)
-              ISPHO =ISTHEP(I)
-              IDPHO =IDHEP(I)
-              MOTHER2 =JMOHEP(2,I)
-              IDA1 =JDAHEP(1,I)
-              IDA2 =JDAHEP(2,I)
-C--
-C--   Exclude photon in sequence !
-            IF (POSPHO.NE.NHEP) THEN
-C--
-C--
-C--   Order /PH_HEPEVT/
-              DO 120 K=I,POSPHO+1,-1
-                ISTHEP(K)=ISTHEP(K-1)
-                QEDRAD(K)=QEDRAD(K-1)
-                IDHEP(K)=IDHEP(K-1)
-                DO 100 L=1,2
-                JMOHEP(L,K)=JMOHEP(L,K-1)
-  100           JDAHEP(L,K)=JDAHEP(L,K-1)
-                DO 110 L=1,5
-  110           PHEP(L,K)=PHEP(L,K-1)
-                DO 120 L=1,4
-  120         VHEP(L,K)=VHEP(L,K-1)
-C--
-C--   Correct pointers assuming most dirty /PH_HEPEVT/...
-              DO 130 K=1,NHEP
-                DO 130 L=1,2
-                  IF ((JMOHEP(L,K).NE.0).AND.(JMOHEP(L,K).GE.
-     &            POSPHO)) JMOHEP(L,K)=JMOHEP(L,K)+1
-                  IF ((JDAHEP(L,K).NE.0).AND.(JDAHEP(L,K).GE.
-     &            POSPHO)) JDAHEP(L,K)=JDAHEP(L,K)+1
-  130         CONTINUE
-C--
-C--   Store photon energy/momentum
-              DO 140 J=1,5
-  140         PHEP(J,POSPHO)=PHOTON(J)
-            ENDIF
-C--
-C--   Store pointers for the photon...
-            JDAHEP(2,MOTHER)=POSPHO
-            ISTHEP(POSPHO)=ISPHO
-            IDHEP(POSPHO)=IDPHO
-            JMOHEP(1,POSPHO)=MOTHER
-            JMOHEP(2,POSPHO)=MOTHER2
-            JDAHEP(1,POSPHO)=IDA1
-            JDAHEP(2,POSPHO)=IDA2
-C--
-C--   Get photon production vertex position
-            DO 150 J=1,4
-  150       VHEP(J,POSPHO)=VHEP(J,POSPHO-1)
-  160     CONTINUE
-        ENDIF
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/photos_set.F b/TEvtGen/PHOTOS/photos_set.F
deleted file mode 100644 (file)
index 431e5eb..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-      SUBROUTINE PHOTOS_SET
-C.----------------------------------------------------------------------
-C.
-C.    Setter for PHOTOS:   
-C.
-C.    Purpose:  Copies /PH_HEPEVT/ into /HEPEVT/
-C.              
-C.
-C.    Input Parameters:   None
-C.
-C.    Output Parameters:  None
-C.
-C.    Author(s):  Z. Was                          Created at:  21/07/98
-C.                                                Last Update: 21/07/98
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER  d_h_nmxhep         ! maximum number of particles
-      PARAMETER ( d_h_nmxhep=4000)
-      REAL*8  d_h_phep,  d_h_vhep ! to be real*4 or *8  depending on host
-      INTEGER d_h_nevhep,d_h_nhep,d_h_isthep,d_h_idhep,d_h_jmohep,
-     $        d_h_jdahep
-      COMMON /hepevt/
-     $      d_h_nevhep,               ! serial number
-     $      d_h_nhep,                 ! number of particles
-     $      d_h_isthep(d_h_nmxhep),   ! status code
-     $      d_h_idhep(d_h_nmxhep),    ! particle ident KF
-     $      d_h_jmohep(2,d_h_nmxhep), ! parent particles
-     $      d_h_jdahep(2,d_h_nmxhep), ! childreen particles
-     $      d_h_phep(5,d_h_nmxhep),   ! four-momentum, mass [GeV]
-     $      d_h_vhep(4,d_h_nmxhep)    ! vertex [mm]
-* ----------------------------------------------------------------------
-!      LOGICAL d_h_qedrad
-!      COMMON /phoqed/ 
-!     $     d_h_qedrad(d_h_nmxhep)    ! Photos flag
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      LOGICAL QEDRAD
-      COMMON/PHOQED/QEDRAD(NMXHEP)
-      INTEGER K,L
-
-         d_h_nevhep=  nevhep             ! serial number
-         d_h_nhep  =  nhep               ! number of particles
-         DO K=1,nhep
-           d_h_isthep(k)    =isthep(k)   ! status code
-           d_h_idhep(k)     =idhep(k)    ! particle ident KF
-           d_h_jmohep(1,k)  =jmohep(1,k) ! parent particles
-           d_h_jdahep(1,k)  =jdahep(1,k) ! childreen particles
-           d_h_jmohep(2,k)  =jmohep(2,k) ! parent particles
-           d_h_jdahep(2,k)  =jdahep(2,k) ! childreen particles
-           DO l=1,4
-           d_h_phep(l,k)    =phep(l,k)   ! four-momentum, mass [GeV]
-           d_h_vhep(l,k)    =vhep(l,k)   ! vertex [mm]
-           ENDDO
-           d_h_phep(5,k)    =phep(5,k)   ! four-momentum, mass [GeV]
-         ENDDO
-      END
diff --git a/TEvtGen/PHOTOS/photri.F b/TEvtGen/PHOTOS/photri.F
deleted file mode 100644 (file)
index 8a2f806..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-      FUNCTION PHOTRI(A,B,C)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTOS:   PHOton radiation in decays calculation of TRIangle fie
-C.
-C.    Purpose:  Calculation of triangle function for phase space.
-C.
-C.    Input Parameters:  A, B, C (Virtual) particle masses.
-C.
-C.    Output Parameter:  Function value =
-C.                       SQRT(LAMBDA(A**2,B**2,C**2))/(2*A)
-C.
-C.    Author(s):  B. van Eijk                     Created at:  15/11/89
-C.                                                Last Update: 02/01/90
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      DOUBLE PRECISION DA,DB,DC,DAPB,DAMB,DTRIAN
-      REAL*8 A,B,C,PHOTRI
-      DA=A
-      DB=B
-      DC=C
-      DAPB=DA+DB
-      DAMB=DA-DB
-      DTRIAN=SQRT((DAMB-DC)*(DAPB+DC)*(DAMB+DC)*(DAPB-DC))
-      PHOTRI=DTRIAN/(DA+DA)
-      RETURN
-      END
diff --git a/TEvtGen/PHOTOS/photwo.F b/TEvtGen/PHOTOS/photwo.F
deleted file mode 100644 (file)
index 8bb9229..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-      SUBROUTINE PHOTWO(MODE)
-C.----------------------------------------------------------------------
-C.
-C.    PHOTWO:   PHOtos but TWO mothers allowed
-C.
-C.    Purpose:  Combines two mothers into one in /PHOEVT/
-C.              necessary eg in case of g g (q qbar) --> t tbar 
-C.
-C.    Input Parameters: Common /PHOEVT/ (/PHOCMS/)
-C.
-C.    Output Parameters:  Common /PHOEVT/, (stored mothers)
-C.
-C.    Author(s):  Z. Was                          Created at:  5/08/93
-C.                                                Last Update:10/08/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER NMXPHO
-      PARAMETER (NMXPHO=10000)
-      INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
-      REAL*8 PPHO,VPHO
-      COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
-     &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
-      DOUBLE PRECISION BET(3),GAM
-      COMMON /PHOCMS/ BET,GAM
-      INTEGER I,MODE
-      REAL*8 MPASQR
-      LOGICAL IFRAD
-C logical IFRAD is used to tag cases when two mothers may be 
-C merged to the sole one. 
-C So far used in case:
-C                      1) of t tbar production
-C
-C t tbar case
-      IF(MODE.EQ.0) THEN
-       IFRAD=(IDPHO(1).EQ.21).AND.(IDPHO(2).EQ.21)
-       IFRAD=IFRAD.OR.(IDPHO(1).EQ.-IDPHO(2).AND.ABS(IDPHO(1)).LE.6)
-       IFRAD=IFRAD
-     &       .AND.(ABS(IDPHO(3)).EQ.6).AND.(ABS(IDPHO(4)).EQ.6)
-        MPASQR= (PPHO(4,1)+PPHO(4,2))**2-(PPHO(3,1)+PPHO(3,2))**2
-     &          -(PPHO(2,1)+PPHO(2,2))**2-(PPHO(1,1)+PPHO(1,2))**2
-       IFRAD=IFRAD.AND.(MPASQR.GT.0.0D0)
-       IF(IFRAD) THEN
-c.....combining first and second mother
-            DO I=1,4
-            PPHO(I,1)=PPHO(I,1)+PPHO(I,2)
-            ENDDO
-            PPHO(5,1)=SQRT(MPASQR)
-c.....removing second mother, 
-            DO I=1,5
-              PPHO(I,2)=0.0D0
-            ENDDO
-       ENDIF
-      ELSE
-C boosting of the mothers to the reaction frame not implemented yet.
-C to do it in mode 0 original mothers have to be stored in new comon (?)
-C and in mode 1 boosted to cms. 
-      ENDIF
-      END 
diff --git a/TEvtGen/PHOTOS/phtype.F b/TEvtGen/PHOTOS/phtype.F
deleted file mode 100644 (file)
index e6bc108..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-      SUBROUTINE PHTYPE(ID)
-C.----------------------------------------------------------------------
-C.
-C.    PHTYPE:   Central manadgement routine.              
-C.
-C.    Purpose:   defines what kind of the 
-C.              actions will be performed at point ID. 
-C.
-C.    Input Parameters:       ID:  pointer of particle starting branch
-C.                                 in /PH_HEPEVT/ to be treated.
-C.
-C.    Output Parameters:  Common /PH_HEPEVT/.
-C.
-C.    Author(s):  Z. Was                          Created at:  24/05/93
-C.                                                Last Update: 01/10/93
-C.
-C.----------------------------------------------------------------------
-      IMPLICIT NONE
-      INTEGER NMXHEP
-      PARAMETER (NMXHEP=10000)
-      INTEGER IDHEP,ISTHEP,JDAHEP,JMOHEP,NEVHEP,NHEP
-      REAL*8 PHEP,VHEP
-      COMMON/PH_HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      LOGICAL INTERF,ISEC,IFTOP
-      REAL*8 FINT,FSEC
-      COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
-      INTEGER ID,NHEP0
-      LOGICAL IPAIR
-      REAL*8 RN,PHORAN
-      INTEGER WTDUM
-C--
-      IPAIR=.TRUE.
-C--   Check decay multiplicity..
-      IF (JDAHEP(1,ID).EQ.0) RETURN
-C      IF (JDAHEP(1,ID).EQ.JDAHEP(2,ID)) RETURN
-C--
-      NHEP0=NHEP
-C--
-      IF(ISEC) THEN
-C-- double photon emission
-        FSEC=1.0D0
-        RN=PHORAN(WTDUM)
-        IF (RN.GE.0.5D0) THEN
-          CALL PHOMAK(ID,NHEP0)
-          CALL PHOMAK(ID,NHEP0)
-        ENDIF
-      ELSE
-C-- single photon emission
-        FSEC=1.0D0
-        CALL PHOMAK(ID,NHEP0)
-      ENDIF
-C--
-C-- electron positron pair (coomented out for a while
-C      IF (IPAIR) CALL PHOPAR(ID,NHEP0)
-      END  
diff --git a/TEvtGen/Photos/Log.cxx b/TEvtGen/Photos/Log.cxx
new file mode 100644 (file)
index 0000000..d13f75f
--- /dev/null
@@ -0,0 +1,338 @@
+#include <fstream>
+#include "Log.h"
+using std::streambuf;
+using std::stringstream;
+using std::ostream;
+using std::cout;
+using std::cerr;
+using std::endl;
+
+namespace Photospp
+{
+
+void (*PHOERR)(int,const char*,double) = Log::PHOERR;
+void (*PHOREP)()                       = Log::PHOREP;
+
+list<Log::Pointer*> *Log::PointerList = NULL;
+
+streambuf   *Log::bCout=cout.rdbuf(),*Log::bCerr=cerr.rdbuf();
+ostream     *Log::out=&cout;
+stringstream Log::buf;
+int  Log::warnLimit=100;
+int  Log::decays[4] = {0};
+int  Log::dCount =0,Log::dRangeS =65535,Log::dRangeE =65534;
+int  Log::faCount=0,Log::faRangeS=65535,Log::faRangeE=65534;
+int  Log::iCount =0,Log::wCount =0,Log::eCount =0,Log::asCount=0, Log::asFailedCount=0;
+bool Log::iAction=1,Log::wAction=1,Log::eAction=1,Log::asAction=1,Log::rAction=1;
+
+void Log::AddDecay(int type)
+{
+       decays[type]++;
+}
+
+ostream& Log::Debug(unsigned short int code, bool count)
+{
+       if(count) ++dCount;
+       if(code>=dRangeS && code<=dRangeE ) return *out<<"DEBUG("<<code<<") from PHOTOS:"<<endl;
+       return buf.seekp(0);
+}
+
+
+ostream& Log::Info(bool count)
+{
+       if(count) ++iCount;
+       if(iAction) return *out<<"INFO from PHOTOS:"<<endl;
+       return buf.seekp(0);
+}
+
+
+ostream& Log::Warning(bool count)
+{
+       if(count) ++wCount;
+       if(warnLimit>0 && wCount>=warnLimit)
+       {
+               if(wAction)
+               {
+                       *out<<"WARNING from PHOTOS:"<<endl<<"Limit reached ("<<warnLimit<<"). Warnings suppressed."<<endl;
+                       wAction=false;
+               }
+               return buf.seekp(0);
+       }
+       if(wAction && count) return *out<<"WARNING from PHOTOS:"<<endl;
+       if(wAction)          return *out;
+       return buf.seekp(0);
+}
+
+
+ostream& Log::Error(bool count)
+{
+       if(count) ++eCount;
+       if(eAction) return *out<<"ERROR from PHOTOS:"<<endl;
+       buf.seekp(0);
+       return buf;
+}
+
+void Log::Assert(bool check, char *text)
+{
+       ++asCount;
+       if(check) return;
+       ++asFailedCount;
+       if(text==NULL)  *out<<"ASSERT from PHOTOS:"<<endl<<"Assertion failed. "<<endl;
+       else *out<<"ASSERT from PHOTOS:"<<endl<<"Assertion failed: "<<text<<endl;
+       if(asAction) exit(-1);
+}
+
+void Log::Fatal(string text,unsigned short code)
+{
+       ++faCount;
+       if(text.size()==0) *out<<"FATAL ERROR from PHOTOS:"<<endl<<"Terminated by a call to Log::Exit();"<<endl;
+       else *out<<"FATAL ERROR from PHOTOS: "<<endl<<text<<endl;
+       if(code<faRangeS || code>faRangeE) exit(-1);
+}
+
+void Log::RedirectOutput(void (*func)(), ostream& where)
+{
+
+       if(!rAction) { func(); return; }
+       cout.rdbuf(where.rdbuf());
+       cerr.rdbuf(where.rdbuf());
+       where<<endl;
+       func();
+       cout.rdbuf(bCout);
+       cerr.rdbuf(bCerr);
+}
+
+void Log::RedirectOutput(ostream& where)
+{
+       if(!rAction) return;
+       cout.rdbuf(where.rdbuf());
+       cerr.rdbuf(where.rdbuf());
+       where<<endl;
+}
+
+void Log::Summary()
+{
+       *out<<"---------------------------- Photos Log Summary ------------------------------"<<endl;
+       *out<<" Debug:   \t";
+       if(dRangeS>dRangeE) *out<<"(OFF)";
+       *out<<"\t\t"<<dCount<<"\t";
+       if(dRangeS<=dRangeE) *out<<"Debug range: "<<dRangeS<<" - "<<dRangeE;
+       *out<<endl;
+       *out<<" Info:    \t";
+       if(!iAction) *out<<"(OFF)";
+       *out<<"\t\t"<<iCount<<"\t"<<endl;
+       *out<<" Warnings:\t";
+       if(!wAction) if(warnLimit>0 && wCount>warnLimit) *out<<"(SUPP.)"; else *out<<"(OFF)";
+       *out<<"\t\t"<<wCount<<"\t"<<endl;
+       *out<<" Errors:  \t";
+       if(!eAction) *out<<"(OFF)";
+       *out<<"\t\t"<<eCount<<"\t"<<endl;
+       if(asCount || !asAction || faRangeS<faRangeE) cout<<"-----------------------------------"<<endl;
+       if(asCount>0) *out<<" Asserts:\t\t\t"<<asCount<<endl;
+       if(!asAction) *out<<" Failed asserts ignored:\t"<<asFailedCount<<endl;
+       if(faRangeS<=faRangeE) *out<<" Fatal errors ignored:  \t"<<faCount<<endl;
+       cout<<"-----------------------------------"<<endl;
+       if(decays[3]) cout<<" Normal decays:                        "<<decays[3]<<endl;
+       if(decays[2]) cout<<" Decays without mother:                "<<decays[2]<<endl;
+       if(decays[1]) cout<<" Decays without mother & grandmothers: "<<decays[1]<<endl;
+       if(decays[0]) cout<<" Decayed using Tauola gun:             "<<decays[0]<<endl;
+       *out<<"------------------------------------------------------------------------------"<<endl;
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays ERRror handling
+//
+//    Purpose:  Inform user  about (fatal) errors and warnings generated
+//              by either the user or the program.
+//
+//    Input Parameters:   IMES, TEXT, DATA
+//
+//    Output Parameters:  None
+//
+//    Author(s):  B. van Eijk                     Created at:  29/11/89
+//                                                Last Update: 18/06/13
+//
+//----------------------------------------------------------------------
+void Log::PHOERR(int IMES,const char *TEXT,double DATA){
+
+  static int IERROR=0;
+  double  SDATA;
+  static int PHOMES=10;
+  static int i=1;
+  char star80[81]= "********************************************************************************";
+
+  if (IMES<=PHOMES) phosta_.status[IMES-i]=phosta_.status[IMES-i]+1;
+// 
+//    Count number of non-fatal errors...
+  if ((IMES ==  6) && (phosta_.status[IMES-i]>=2)) return;
+  if ((IMES == 10) && (phosta_.status[IMES-i]>=2)) return;
+  SDATA=DATA;
+  //  int PHLUN=(int)pholun_.phlun;
+  bool IFSTOP=phosta_.ifstop;
+  FILE *PHLUN = stdout;
+  int furthA=0;
+  fprintf(PHLUN,"%s\n",star80);
+  fprintf(PHLUN,"*\n");  //9120
+  //      GOTO (10,20,30,40,50,60,70,80,90,100),IMES
+
+  switch(IMES){
+  case 1:
+    fprintf(PHLUN,"* %s: Too many charged Particles, NCHARG = %6i\n", TEXT,(int)SDATA);   //I6
+    furthA= 110;
+    break;
+  case 2:
+    fprintf(PHLUN,"* %s: Too much Bremsstrahlung required, PRSOFT = %15.6f\n", TEXT,SDATA);//F15.6
+    furthA= 110;
+    break;
+  case 3:
+    fprintf(PHLUN,"* %s: Combined Weight is exceeding 1., Weight = %15.6f\n", TEXT,SDATA);   //F15.6
+    furthA= 110;
+    break;
+  case 4:
+    fprintf(PHLUN,"* %s: Error in Rescaling charged and neutral Vectors\n", TEXT);
+    furthA= 110;
+    break;
+  case 5:
+    fprintf(PHLUN,"* %s: Non matching charged Particle Pointer, NCHARG = %5i\n", TEXT,(int)SDATA);  //I5
+    furthA= 110;
+    break;
+  case 6:
+    fprintf(PHLUN,"* %s: Do you really work with a Particle of Spin: %4.1f\n", TEXT,SDATA);   //F4.1
+    furthA= 130;
+    break;
+  case 7:
+    fprintf(PHLUN,"* %s: Stack Length exceeded, NSTACK = %5i\n", TEXT,(int)(SDATA));//I5
+    furthA= 110;
+    break;
+  case 8:
+    fprintf(PHLUN,"* %s: Random Number Generator Seed(1) out of Range: %8i\n", TEXT,(int)SDATA);//I8
+    furthA= 110;
+    break;
+  case 9:
+    fprintf(PHLUN,"* %s: Random Number Generator Seed(2) out of Range: %8i\n", TEXT,(int)SDATA);//I8
+    furthA= 110;
+    break;
+  case 10:
+    fprintf(PHLUN,"* %s: Available Phase Space below Cut-off: %15.6f GeV/c^2\n", TEXT,SDATA);//F15.6
+    furthA= 130;
+    break;
+  default:
+    fprintf(PHLUN,"* Funny Error Message: %4i ! What to do ?\n", IMES);//I4
+    furthA= 120;
+    break;
+  }
+
+ switch(furthA){
+ case 110:
+   fprintf(PHLUN,"* Fatal Error Message, I stop this Run !\n");
+   fprintf(PHLUN,"*\n"); //9120
+   fprintf(PHLUN,"%s\n",star80);
+   if (IFSTOP){ 
+     exit(0);
+   }
+   else{
+     fprintf(PHLUN,"*\n"); //9120
+     fprintf(PHLUN,"%s\n",star80);
+     break;
+   }      
+ case 120:
+   IERROR=IERROR+1;
+   if (IERROR>=10){
+     fprintf(PHLUN,"* 10 Error Messages generated, I stop this Run !\n");
+     fprintf(PHLUN,"*\n");//9120
+     fprintf(PHLUN,"%s\n",star80);
+     if (IFSTOP){
+       exit(0);
+     }
+     else{
+       fprintf(PHLUN,"*\n"); //9120
+       fprintf(PHLUN,"%s\n",star80);
+       break;
+     }
+   }  
+ case 130:
+  fprintf(PHLUN,"*\n");  //9120
+  fprintf(PHLUN,"%s\n",star80);
+  break;
+ }
+ return;
+
+
+ //9120 FORMAT(1H ,'*',T81,'*')
+ // 9140 FORMAT(1H ,'* Fatal Error Message, I stop this Run !',T81,'*')
+ // 9150 FORMAT(1H ,'* 10 Error Messages generated, I stop this Run !',T81,
+ //     &'*')
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays run summary REPort
+//
+//    Purpose:  Inform user about success and/or restrictions of PHOTOS
+//              encountered during execution.
+//
+//    Input Parameters:   Common /PHOSTA/
+//
+//    Output Parameters:  None
+//
+//    Author(s):  B. van Eijk                     Created at:  10/01/92
+//                                                Last Update: 18/06/13
+//
+//----------------------------------------------------------------------
+void Log::PHOREP(){
+  static int PHOMES=10;
+  int I;
+  bool ERROR=false;
+  //  int PHLUN=(int)pholun_.phlun;
+  char star80[81]= "********************************************************************************";
+  char X26[27] = "                          ";
+  char EQ25[26]= "=========================";
+  char X30[31] = "                              ";
+  char X22[23] = "                      ";
+  char X23[24 ]= "                       ";
+  char X16[17] = "                ";
+  FILE *PHLUN = stdout;
+  fprintf(PHLUN," \n");
+  fprintf(PHLUN,"%s\n",star80);
+  fprintf(PHLUN,"*\n");
+  fprintf(PHLUN,"* %s %s\n",X26,EQ25);
+  fprintf(PHLUN,"* %s PHOTOS Run Summary\n",X30);
+  fprintf(PHLUN,"* %s %s\n",X26,EQ25);
+  fprintf(PHLUN,"*\n");
+  for(I=1;I<=PHOMES;I++){
+
+    if (phosta_.status[I-1] == 0) break;
+    if ((I == 6)|| (I == 10)){
+      fprintf(PHLUN,"* %s Warning # %2i  occured %6i times\n",X22, I,phosta_.status[I-1]); // I2 I6 
+    }
+    else{
+      ERROR=true;
+      fprintf(PHLUN,"* %s Error # %2i occured %6i  times\n",X23, I,phosta_.status[I-1]);// I2 I6
+    }        
+  }
+
+  if (!ERROR) fprintf(PHLUN,"* %s PHOTOS Execution has successfully terminated\n",X16);
+  fprintf(PHLUN,"*\n");
+  fprintf(PHLUN,"%s\n",star80);
+  return;
+
+//      RETURN
+// 9000 FORMAT(1H1)
+// 9010 FORMAT(1H ,80('*'))
+// 9020 FORMAT(1H ,'*',T81,'*')
+// 9030 FORMAT(1H ,'*',26X,25('='),T81,'*')
+// 9040 FORMAT(1H ,'*',30X,'PHOTOS Run Summary',T81,'*')
+// 9050 FORMAT(1H ,'*',22X,'Warning #',I2,' occured',I6,' times',T81,'*')
+// 9060 FORMAT(1H ,'*',23X,'Error #',I2,' occured',I6,' times',T81,'*')
+// 9070 FORMAT(1H ,'*',16X,'PHOTOS Execution has successfully terminated',
+//     &T81,'*')
+}
+
+
+
+
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/Log.h b/TEvtGen/Photos/Log.h
new file mode 100644 (file)
index 0000000..d935a91
--- /dev/null
@@ -0,0 +1,245 @@
+#ifndef __PHOTOS_LOG_CLASS_HEADER__
+#define __PHOTOS_LOG_CLASS_HEADER__
+
+/**
+ * This file contains class for logging and filtering output.
+ * This header file also includes a debug macro which
+ * tracks any possible memory leaks within the program.
+ *
+ * @author Tomasz Przedzinski
+ * @date 14 November 2009
+ */
+
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <stdlib.h>
+#include <list>
+#include "Photos.h"
+// TEMPORARY
+#include "f_Init.h"
+
+using std::stringstream;
+using std::string;
+using std::streambuf;
+using std::ostream;
+using std::list;
+using std::cout;
+using std::endl;
+
+namespace Photospp
+{
+
+extern void (*PHOERR)(int,const char*,double);
+extern void (*PHOREP)();
+
+class Log
+{
+public:
+       /** Shows the summary of all messages. */
+       static void Summary();
+
+       /** Shows the summary at the end of the program. */
+       static void SummaryAtExit()              { atexit(Summary);      }
+
+       /** Adds the decay to the counter. The type is:
+           0 - gun, 1 - no mothers & grandmothers, 2 - no mothers, 3 - ok. */
+       static void AddDecay(int type);
+
+       /** Four logging entries. Usage:
+            Log::Info()<<"Logging some info: "<<8<<" > "<<7.9<<endl;
+           Use Log::Info(false) if You don't want the message to be counted.*/
+       static ostream& Debug(unsigned short int code=0, bool count=true);
+       static ostream& Info(bool count=true);
+       static ostream& Warning(bool count=true);
+       static ostream& Error(bool count=true);
+
+       /** Turns off or on particular types of messages
+           By default, only debugging messages are turned off. */
+       static void LogInfo   (bool flag=true)  { iAction=flag;         }
+       static void LogWarning(bool flag=true)  { wAction=flag;         }
+       static void LogError  (bool flag=true)  { eAction=flag;         }
+
+       static void LogAll    (bool flag=true)  { iAction=wAction=eAction=flag; dRangeS=0; dRangeE=65535; }
+
+       // TEMPORARY
+       static void LogPhlupa(int from, int to)  { phlupy_.ipoinm=from; phlupy_.ipoin=to; }
+
+        /** Sets the range of debug codes that will be printed.
+            By default, the debug messages are turned off. */
+       static void LogDebug(unsigned short s=0,unsigned short e=65535)         { dRangeS=s; dRangeE=e;   }
+
+       /** Asserts logical value. If the assertion fails, the default message or 'text'
+            will be printed and the program will terminate.
+            Program termination can be suppressed by Log::IgnoreFailedAsserts(); */
+       static void Assert(bool check, char *text=NULL);
+
+       /** Terminates the program with added default message or 'text'.
+            It can be suppressed by Log::IgnoreFatal(); */
+       static void Fatal(string text, unsigned short int code=0);
+       static void Fatal(unsigned short int code=0)                            { Fatal(NULL,code);       }
+
+       /** Redirects output to log. Redirection can be done for a block of code
+           or for one function only. Redirection can be turned off by using
+           Log::IgnoreRedirection(); If the target is one of the log streams
+           (for example): Log::RedirectOutput( someFunction, Log::Info() );
+           You can turn the function's messages off by turning the apropriate
+           log entries off. The redirected code will still be executed,
+           only messages are redirected. */
+       static void RedirectOutput(void (*func)(), ostream& where=*out);
+       static void RedirectOutput(ostream& where=*out);
+       /** WARNING! If You're redirecting more than one function, do not forget
+           to use RevertOutput() afterwards. */
+       static void RevertOutput()                      { std::cout.rdbuf(bCout); std::cerr.rdbuf(bCerr); }
+
+       /** Do not exit when Log::Assert() check is false.
+           The number of failed asserts will be listed in the summary. */
+       static void IgnoreFailedAssert(bool flag=true)                           { asAction=!flag;        }
+
+       /** Ignores redirections of functions' output.
+           The function will still be called in a normal way. */
+       static void IgnoreRedirection(bool flag=true)                            { rAction=!flag;         }
+
+       /** Do not exit when Log::Fatal() with the code within the provided range is called.
+            The number of ignored fatal errors will be listed in the summary. */
+       static void IgnoreFatal(unsigned short s=0,unsigned short e=65535) { faRangeS=s; faRangeE=e; }
+
+       /** Change the output of the logged messages.
+           Log::SetOutput(cerr);                    //changes the output to cerr
+           Log::SetOutput(new ofstream("log.txt")); //changes the output to a file "log.txt" */
+       static void SetOutput(ostream *newOut)                                    { out=newOut;           }
+       static void SetOutput(ostream &newOut)                                    { out=&newOut;          }
+
+       /** Change the limit of warnings that will be displayed. Set to 0 for no limit. */
+       static void SetWarningLimit(int x)                                        { warnLimit=x;          }
+
+       /**  Warnings on errors from internal part of PHOTOS (originally in F77) */
+       static void PHOERR(int IMES,const char *TEXT,double DATA);
+
+       /**  Final report of warnings from internal part of PHOTOS (originally in F77) */
+       static void PHOREP();
+
+protected:
+       static streambuf *bCout,*bCerr;
+       static ostream *out;
+       static stringstream buf;
+       static int  warnLimit;
+       static int  decays[4];
+       static int  dCount,dRangeS,dRangeE,faCount,faRangeS,faRangeE;
+       static int  iCount, wCount, eCount, asCount, asFailedCount;
+       static bool iAction,wAction,eAction,asAction,rAction;
+/**
+       Memory leak tracking section. Compile with #define _LOG_DEBUG_MODE_ to turn it on.
+       WARNING! Increases execution time significantly. Usefull only for debug purposes.
+*/
+protected:
+       typedef struct
+       {
+               unsigned long address;
+               unsigned long size;
+               char  file[64];
+               unsigned long line;
+       } Pointer;
+       static list<Pointer*> *PointerList;
+public:
+#ifdef _LOG_DEBUG_MODE_
+       static void NewPointer(unsigned long address,  unsigned long size,  const char *file, unsigned long line)
+       {
+               if(!PointerList)
+               {
+                       PointerList = new list<Pointer *>();
+                       atexit(PrintAllocatedPointers);
+               }
+               Pointer *info = new Pointer();
+               info->address = address;
+               info->size    = size;
+               info->line    = line;
+               strncpy(info->file, file, 63);
+               PointerList->push_front(info);
+       }
+       static void DeletePointer(unsigned long address)
+       {
+               if(!PointerList) return;
+               for(list<Pointer*>::iterator i = PointerList->begin(); i!=PointerList->end(); i++)
+               {
+                       if((*i)->address == address)
+                       {
+                               PointerList->remove((*i));
+                               break;
+                       }
+               }
+       }
+       static bool PointerCompare(Pointer *one, Pointer *two)
+       {
+               int eq = strcmp(one->file,two->file);
+               if(eq<0) return true;
+               else if(eq>0) return false;
+               return (one->line <= two->line);
+       }
+       static void PrintAllocatedPointers()
+       {
+               if(!PointerList) return;
+               int pointers=0,buf=0;
+               unsigned long total=0;
+               char *lastS=" ";
+               unsigned int lastL=0;
+               if(PointerList->size()==0)
+               {
+                       cout<<"----------------------------UNFREED MEMORY POINTERS----------------------------\n";
+                       cout<<"                                 ... NONE ...\n";
+                       cout<<"-------------------------------------------------------------------------------\n";
+                       return;
+               }
+               PointerList->sort(PointerCompare);
+               cout<<"---------------------------UNFREED MEMORY POINTERS---------------------------\n";
+               for(list<Pointer*>::iterator i = PointerList->begin(); i!=PointerList->end(); i++)
+               {
+                       total+=(*i)->size;
+                       ++pointers;
+                       if(strcmp(lastS,(*i)->file)==0)
+                       {
+                               if(lastL==(*i)->line)
+                               {
+                                       printf("%56s%10lub (%lu)\n"," ",(*i)->size,(*i)->address);
+                                       continue;
+                               }
+                       }
+                       lastS=(*i)->file;
+                       lastL=(*i)->line;
+                       printf("%s%n:",(*i)->file,&buf);
+                       printf("%-*lu%10lub (%lu)\n",55-buf,(*i)->line,(*i)->size,(*i)->address);
+               }
+               cout<<endl<<total<<"\tbytes"<<endl;
+               cout<<pointers<<"\tpointers"<<endl;
+               cout<<"-------------------------------------------------------------------------------\n";
+       };
+#endif //_LOG_DEBUG_MODE_
+};
+
+#ifdef _LOG_DEBUG_MODE_
+
+/**
+    Redeclare new and delete to use the tracking feature.
+    To use __FILE__ and __LINE__ macro efficiently this header file
+    should be included in all separately compiled libraries.
+*/
+
+inline void* operator new(long unsigned int size, const char *filename, int line)
+{
+       void *ptr = (void *)malloc(size);
+       Photos::Log::NewPointer((unsigned long)ptr, size, filename, line);
+       return(ptr);
+}
+
+inline void  operator delete(void *p)
+{
+       Photos::Log::DeletePointer((unsigned long)p);
+       free(p);
+}
+
+#define new new(__FILE__, __LINE__)
+
+#endif //_LOG_DEBUG_MODE_
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/PH_HEPEVT_Interface.cxx b/TEvtGen/Photos/PH_HEPEVT_Interface.cxx
new file mode 100644 (file)
index 0000000..a2ee92c
--- /dev/null
@@ -0,0 +1,524 @@
+#include <vector>
+#include <cmath>
+#include "PhotosBranch.h"
+#include "PhotosParticle.h"
+#include "PH_HEPEVT_Interface.h"
+#include "Log.h"
+using namespace std;
+
+namespace Photospp
+{
+
+vector<PhotosParticle*> PH_HEPEVT_Interface::m_particle_list;
+int PH_HEPEVT_Interface::ME_channel=0;
+int PH_HEPEVT_Interface::decay_idx=0;
+
+void PH_HEPEVT_Interface::clear(){
+
+  m_particle_list.clear();
+
+  hep.nevhep=0; 
+  hep.nhep=0;
+  
+
+  /**  for(int i=0; i < NMXHEP; i++){
+
+    hep.isthep[i]=0;
+    hep.idhep[i]=0;
+    
+    for(int j=0; j<2; j++){
+      hep.jmohep[i][j]=0;
+      hep.jdahep[i][j]=0;
+    }
+    
+    for(int j=0; j<5; j++)
+      hep.phep[i][j]=0;
+    
+    for(int j=0; j<4; j++)
+      hep.vhep[i][j]=0;
+  
+      ph_phoqed_.qedrad[i]=0;
+  
+      }**/
+}
+
+void PH_HEPEVT_Interface::add_particle(int i,PhotosParticle * particle,
+                                      int first_mother, int last_mother,
+                                      int first_daughter, int last_daughter){
+
+  if(i>0)
+    i--; //account for fortran indicies begining at 1
+  else
+    Log::Warning()<<"Index given to PH_HEPEVT_Interface::add_particle "
+                 <<"is too low (it must be > 0)."<<endl;
+
+  //add to our internal list of pointer/index pairs
+  m_particle_list.push_back(particle);
+
+  //now set the element of PH_HEPEVT
+  hep.nevhep=0; //dummy
+  hep.nhep=hep.nhep++;
+  hep.isthep[i]=particle->getStatus();
+  hep.idhep[i]=particle->getPdgID();
+
+  hep.jmohep[i][0]=first_mother;
+  hep.jmohep[i][1]=last_mother;
+
+  hep.jdahep[i][0]=first_daughter;
+  hep.jdahep[i][1]=last_daughter;
+
+  hep.phep[i][0]=particle->getPx();
+  hep.phep[i][1]=particle->getPy();
+  hep.phep[i][2]=particle->getPz();
+  hep.phep[i][3]=particle->getE();
+  
+  // if massFrom4Vector=true (default) - get sqrt(e^2-p^2)
+  // otherwise - get mass from event record
+  if(!Photos::massFrom4Vector) hep.phep[i][4]=particle->getMass();
+  else                         hep.phep[i][4]=particle->getVirtuality();
+
+  int pdgid = abs(particle->getPdgID());
+
+  // if 'forceMass' for this PDGID was used - overwrite mass
+  if(Photos::forceMassList)
+  {
+    for(unsigned int j=0;j<Photos::forceMassList->size();j++)
+    {
+      if(pdgid == abs(Photos::forceMassList->at(j)->first))
+      {
+        double mass = Photos::forceMassList->at(j)->second;
+        
+        // when 'forceMass' is used the mass provided is larger than 0.0
+        // when 'forceMassFromEventRecord' is used mass is -1.0
+        // in this case - get mass from event record
+        if(mass<0.0) mass = particle->getMass();
+        hep.phep[i][4] = mass;
+      }
+    }
+  }
+
+  hep.vhep[i][0]=0;
+  hep.vhep[i][1]=0;
+  hep.vhep[i][2]=0;
+  hep.vhep[i][3]=0;
+
+  hep.qedrad[i]=1;
+
+}
+
+int PH_HEPEVT_Interface::set(PhotosBranch *branch)
+{
+       PH_HEPEVT_Interface::clear();
+       int idx=1;
+
+       //get mothers
+       vector<PhotosParticle *> mothers = branch->getMothers();
+       int nmothers=mothers.size();
+
+       //check if mid-particle exist
+       decay_idx=0;
+       PhotosParticle *decay_particle = branch->getDecayingParticle();
+       if(decay_particle) decay_idx=nmothers+1;
+
+       //get daughters
+       vector<PhotosParticle *> daughters = branch->getDaughters();
+       int ndaughters=daughters.size();
+
+       for(int i=0;i<nmothers;i++)
+       {
+               if(decay_idx)
+                       add_particle(idx++,mothers.at(i),
+                                    0,0, //mothers
+                                    decay_idx,decay_idx); //daughters
+               else
+                       add_particle(idx++,mothers.at(i),
+                                    0,0, //mothers
+                                    nmothers+1,nmothers+ndaughters); //daughters
+       }
+
+       if(decay_particle)
+               add_particle(idx++,decay_particle,
+                            1,nmothers, //mothers
+                            nmothers+2,nmothers+1+ndaughters); //daughters
+
+       for(int i=0;i<ndaughters;i++)
+       {
+               if(decay_idx)
+                       add_particle(idx++,daughters.at(i),
+                                    decay_idx,decay_idx, //mothers
+                                    0,0); //daughters
+               else
+                       add_particle(idx++,daughters.at(i),
+                                    1,nmothers, //mothers
+                                    0,0); //daughters
+       }
+       //Log::RedirectOutput( phodmp_ , Log::Debug(1000) );
+       Log::Debug(1000,false)<<"PH_HEPEVT returning: "<<( (decay_idx) ? decay_idx : 1 )<<" from "<<idx-1<<" particles."<<endl;
+       return (decay_idx) ? decay_idx : 1;
+}
+
+void PH_HEPEVT_Interface::get(){
+
+  int index = 0;
+
+  //if no photons have been added to the event record, do nothing.
+  if(hep.nhep == (int) m_particle_list.size())
+    return;
+
+  //phodmp_();
+
+  int  particle_count  = m_particle_list.size();
+  int  daughters_start = hep.jmohep[hep.nhep-1][0];
+  int  photons         = hep.nhep - m_particle_list.size();
+  bool isPhotonCreated = (photons>0);
+  
+  std::vector<PhotosParticle*> photon_list; // list of added photons
+                                            // which need kinematical treatment
+                                            // in special case
+
+  // we decipher daughters_start from  last entry 
+  // that is last daughter in  ph_hepevt_
+  // another option of this functionality may be 
+  // hep.jdahep[ hep.jmohep[hep.nhep-1][0]-1][0];
+  // Update daughters_start if there are two mothers
+  // NOTE: daughters_start is index for C++ arrays, while hep.jmohep
+  //       contains indices for Fortran arrays.
+  if(hep.jmohep[hep.nhep-1][1]>0)
+    daughters_start = hep.jmohep[hep.nhep-1][1];
+  
+  index = particle_count;
+
+  // Add extra photons
+  for(;photons>0; photons--, index++){
+    
+    if(hep.idhep[index]!=PhotosParticle::GAMMA)
+      Log::Fatal("PH_HEPEVT_Interface::get(): Extra particle added to the PH_HEPEVT common block in not a photon!",6);
+    
+    //create a new particle
+    PhotosParticle * new_photon;
+    new_photon = m_particle_list.at(0)->createNewParticle(hep.idhep[index],
+                                                         hep.isthep[index],
+                                                         hep.phep[index][4],
+                                                         hep.phep[index][0],
+                                                         hep.phep[index][1],
+                                                         hep.phep[index][2],
+                                                         hep.phep[index][3]);
+    
+    //add into the event record
+    //get mother particle of photon
+    PhotosParticle * mother =  m_particle_list.at(hep.jmohep[index][0]-1);
+    mother->addDaughter(new_photon);
+    
+    //add to list of photons
+    photon_list.push_back(new_photon);
+  }
+
+  // Before we update particles, we check for special cases
+  // At this step, particles are yet unmodified
+  // but photons are already in the event record
+  bool special=false;
+  PhotosParticle *p1 = NULL;
+  PhotosParticle *p2 = NULL;
+
+  if( isPhotonCreated )
+  {
+    std::vector<PhotosParticle*> daughters;
+
+    // in the following we create list of   daughters,
+    // later  we calculate bool special which is true only if all
+    // daughters self-decay
+    // at peresent warning for  mixed self-decay and not self decay 
+    // daughters is not printed.
+
+    for(int i=daughters_start;i<particle_count;i++)
+    {
+      PhotosParticle *p = m_particle_list.at(i);
+
+      daughters.push_back(p);
+    }
+
+    // Check if this is a special case
+    special = true;
+    
+    if(daughters.size()==0) special = false;
+    
+    // special = false if there is a stable particle on the list
+    //                 or there is a particle without self-decay
+    for(unsigned int i=0;i<daughters.size();i++)
+    {
+      if(daughters[i]->getStatus()==1)
+      {
+        special = false;
+        break;
+      }
+      
+      // NOTE: We can use 'getDaughters' here, because vertices
+      //       of daughters are not being modified by Photos right now
+      //       (so there will be no caching)
+      std::vector<PhotosParticle*> daughters2 = daughters[i]->getDaughters();
+      
+      if(daughters2.size()!=1 || 
+         daughters2[0]->getPdgID() != daughters[i]->getPdgID() )
+      {
+        special = false;
+        break;
+      }
+    }
+
+    if( special )
+    {
+      double px1=0.0, py1=0.0, pz1=0.0, e1=0.0;
+      double px2=0.0, py2=0.0, pz2=0.0, e2=0.0;
+
+      // get sum of 4-momenta of unmodified particles
+      for(unsigned int i=0;i<daughters.size();i++)
+      {
+        // ignore photons
+        if(daughters[i]->getPdgID()==22) continue;
+
+        px1+=daughters[i]->getPx();
+        py1+=daughters[i]->getPy();
+        pz1+=daughters[i]->getPz();
+        e1 +=daughters[i]->getE();
+      }
+
+      // get sum of 4-momenta of particles in self-decay vertices
+      for(unsigned int i=0;i<daughters.size();i++)
+      {
+        // ignore photons
+        if(daughters[i]->getPdgID()==22) continue;
+
+        // since 'allDaughtersSelfDecay()' is true
+        // each of these particles has exactly one daughter
+        px2 += daughters[i]->getDaughters().at(0)->getPx();
+        py2 += daughters[i]->getDaughters().at(0)->getPy();
+        pz2 += daughters[i]->getDaughters().at(0)->getPz();
+        e2  += daughters[i]->getDaughters().at(0)->getE();
+      }
+
+      //cout<<"ORIG: "<<px1<<" "<<py1<<" "<<pz1<<" "<<e1<<endl;
+      //cout<<"SELF: "<<px2<<" "<<py2<<" "<<pz2<<" "<<e2<<endl;
+
+      p1 = m_particle_list.at(0)->createNewParticle(0,-1,0.0,px1,py1,pz1,e1);
+      p2 = m_particle_list.at(0)->createNewParticle(0,-2,0.0,px2,py2,pz2,e2);
+
+      // Finaly, boost photons to appropriate frame
+      for(unsigned int i=0;i<photon_list.size();i++)
+      {
+        PhotosParticle *boosted = photon_list[i]->createNewParticle( 22, 1,
+                                    0.0,
+                                    photon_list[i]->getPx(),
+                                    photon_list[i]->getPy(),
+                                    photon_list[i]->getPz(),
+                                    photon_list[i]->getE()   );
+                
+        boosted->boostToRestFrame(p1);
+        boosted->boostFromRestFrame(p2);
+        
+        photon_list[i]->createSelfDecayVertex(boosted);
+        
+        delete boosted;
+      }
+
+      Log::Warning()<<"Hidden interaction, all daughters self decay."
+          <<"Potentially over simplified solution applied."<<endl;
+    }
+  }
+
+  //otherwise loop over particles which are already in the
+  //event record and modify their 4 momentum
+  //4.03.2012: Fix to prevent kinematical trap in vertex of simultaneous:
+  //           z-collinear and non-conservation pf E,p for dauthters of grandmothers
+  for(index=daughters_start; index < particle_count && index < (int) m_particle_list.size(); index++){
+
+    PhotosParticle * particle = m_particle_list.at(index);
+
+    if(hep.idhep[index]!=particle->getPdgID())
+      Log::Fatal("PH_HEPEVT_Interface::get(): Something is wrong with the PH_HEPEVT common block",5);
+
+    // If photons were added - for each daughter create a history entry
+    if(isPhotonCreated && Photos::isCreateHistoryEntries)
+    {
+      particle->createHistoryEntry();
+    }
+    
+    //check to see if this particle's 4-momentum has been modified
+    bool   update=false;
+
+    // don't update particle if difference lower than THRESHOLD * particle energy (default threshold = 10e-8)
+    double threshold = NO_BOOST_THRESHOLD*hep.phep[index][3];
+    if( fabs(hep.phep[index][0]-particle->getPx()) > threshold ||
+        fabs(hep.phep[index][1]-particle->getPy()) > threshold ||
+        fabs(hep.phep[index][2]-particle->getPz()) > threshold ||
+        fabs(hep.phep[index][3]-particle->getE())  > threshold    ) update=true;
+
+    if(update)
+    {
+
+      //modify this particle's momentum and it's daughters momentum
+      //Steps 1., 2. and 3. must be executed in order.
+
+      //1. boost the particles daughters into it's (old) rest frame
+      particle->boostDaughtersToRestFrame(particle);
+
+      //2. change this particles 4 momentum
+      particle->setPx(hep.phep[index][0]);
+      particle->setPy(hep.phep[index][1]);
+      particle->setPz(hep.phep[index][2]);
+      particle->setE(hep.phep[index][3]);
+
+      //3. boost the particles daughters back into the lab frame
+      particle->boostDaughtersFromRestFrame(particle);
+
+      if(special && particle->getDaughters().size()>0){
+
+      // Algorithm for special case:
+      // a. get self-daughter of 'particle'
+      PhotosParticle *particled = particle->getDaughters().at(0);
+
+      // b. boost 'particled' daughters to rest frame
+      particled->boostDaughtersToRestFrame(particled);
+
+      // c. copy four momentum of 'particle' into four momentum of
+      //    its self-daughter 'particled'
+
+      particled->setPx( particle->getPx() );
+      particled->setPy( particle->getPy() );
+      particled->setPz( particle->getPz() );
+      particled->setE ( particle->getE()  );
+
+      // d. boost self daughter to rest-frame of <e1>
+      //    boost self daughter from rest-frame of <e2>
+
+      particled->boostToRestFrame(p1);
+      particled->boostFromRestFrame(p2);
+
+      // e. boost the 'particled' daughters back into the lab frame
+      particled->boostDaughtersFromRestFrame(particled);
+      }
+
+    }
+  }
+  
+  // cleanup
+  if(p1) delete p1;
+  if(p2) delete p2;
+}
+
+void PH_HEPEVT_Interface::prepare()
+{
+       check_ME_channel();
+}
+
+void PH_HEPEVT_Interface::complete()
+{
+
+}
+
+void PH_HEPEVT_Interface::check_ME_channel()
+{
+       ME_channel=0;
+
+// Check mothers:
+
+       if(decay_idx==2)                              return; // Only one mother present
+       if(hep.idhep[0]*hep.idhep[1]>0) return; // Mothers have same sign
+
+       Log::Debug(900)<<"ME_channel: Mothers PDG:  "<<hep.idhep[0]<<" "<<hep.idhep[1]<<endl;
+       if(decay_idx)
+               Log::Debug(900,false)<<"            Intermediate: "<<hep.idhep[decay_idx-1]<<endl;
+
+       int              firstDaughter=3;
+       if(decay_idx==0) firstDaughter=2; // if no intermediate particle - daughters start at idx 2
+
+       // Are mothers in range +/- 1-6; +/- 11-16?
+       int mother1 = abs(hep.idhep[0]);
+       int mother2 = abs(hep.idhep[1]);
+       if( mother1<1 || (mother1>6 && mother1<11) || mother1>16 ) return;
+       if( mother2<1 || (mother2>6 && mother2<11) || mother2>16 ) return;
+
+//Check daughters
+
+       // Z: check for pairs 11 -11 ; 13 -13 ; 15 -15
+       // -------------------------------------------
+       int firstPDG =0;
+       int secondPDG=0;
+       for(int i=firstDaughter; i<hep.nhep;i++)
+       {
+               int pdg = abs(hep.idhep[i]);
+               if(pdg==11 || pdg==13 || pdg==15)
+               {
+                       if(firstPDG==0) firstPDG=hep.idhep[i];
+                       else
+                       {
+                               secondPDG=hep.idhep[i];
+                               // Just in case two pairs are genereted - verify that we have a pair with oposite signs
+                               if(firstPDG*secondPDG>0) secondPDG=0;
+                               break;
+                       }
+               }
+       }
+
+       if( ME_channel==0 && firstPDG!=0 && secondPDG!=0 &&
+           firstPDG==-secondPDG ) ME_channel=1;
+
+       // W: check for pairs 11 -12; -11 12; 13 -14; -13 14; 15 -16; -15 16
+       // -----------------------------------------------------------------
+       firstPDG =0;
+       secondPDG=0;
+       for(int i=firstDaughter; i<hep.nhep;i++)
+       {
+               int pdg = abs(hep.idhep[i]);
+               if(pdg>=11 && pdg<=16)
+               {
+                       if(firstPDG==0) firstPDG=hep.idhep[i];
+                       else
+                       {
+                               secondPDG=hep.idhep[i];
+                               // Just in case two pairs are genereted - verify that we have a pair with oposite signs
+                               if(firstPDG*secondPDG>0) secondPDG=0;
+                               break;
+                       }
+               }
+       }
+
+       firstPDG =abs(firstPDG);
+       secondPDG=abs(secondPDG);
+
+       if(  ME_channel==0 && firstPDG!=0 && secondPDG!=0 &&
+          ( ( firstPDG==11 && secondPDG==12 ) || (firstPDG == 12 && secondPDG == 11) ||
+            ( firstPDG==13 && secondPDG==14 ) || (firstPDG == 14 && secondPDG == 13) ||
+            ( firstPDG==15 && secondPDG==16 ) || (firstPDG == 16 && secondPDG == 15)
+          )
+         ) ME_channel=2;
+
+       Log::Debug(901)<<"ME_channel: Found ME_channel: "<<ME_channel<<endl;
+
+// Check intermediate particle (if exists):
+
+       // Verify that intermediate particle PDG matches ME_channel found
+       if(ME_channel>0 && decay_idx)
+       {
+               int pdg=hep.idhep[decay_idx-1];
+
+               if(ME_channel==1 && !(pdg==22 || pdg==23) ) ME_channel=0; //gamma/Z
+               if(ME_channel==2 && !(pdg==24 || pdg==-24)) ME_channel=0; //W+/W-
+
+               if(ME_channel==0)
+                       Log::Debug(901,false)<<"            but set to 0: wrong intermediate particle: "<<pdg<<endl;
+       }
+
+// Check flags
+
+       switch(ME_channel)
+       {
+               case  0: break; // Ok - no channel found
+               case  1: if(!Photos::meCorrectionWtForZ) ME_channel=0; break;
+               case  2: if(!Photos::meCorrectionWtForW) ME_channel=0; break;
+               default: Log::Error()<<"Unimplemented ME channel: "<<ME_channel<<endl; break;
+       }
+       Log::Debug(902)<<"ME_channel: Finally, after flag check, ME_channel is: "<<ME_channel<<endl;
+}
+
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PH_HEPEVT_Interface.h b/TEvtGen/Photos/PH_HEPEVT_Interface.h
new file mode 100644 (file)
index 0000000..82c40a7
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _PH_HEPEVT_Interface_included_
+#define _PH_HEPEVT_Interface_included_
+
+#include <vector>
+#include "PhotosBranch.h"
+#include "PhotosParticle.h"
+#include "f_Init.h"
+
+namespace Photospp
+{
+  // const static int NMXHEP = 10000; at present NMXHEP is defined in f_Init.h
+const static double NO_BOOST_THRESHOLD=1.0e-8;
+
+class PH_HEPEVT_Interface
+{
+public:
+       /** Convert PhotosBranch to HEPEVT */
+       static int  set(PhotosBranch* branch);
+
+       /** Update event record with data from HEPEVT */
+       static void get();
+
+       /** Prepare particles for processing */
+       static void prepare();
+
+       /** Check channel for complete matrix element calculation */
+       static void check_ME_channel();
+
+       /** Finalize processing */
+       static void complete();
+
+       /** Clear HEPEVT */
+       static void clear();
+public:
+       /** Index of decaying particle*/
+       static int decay_idx;
+       /** Number of channel to be used - flag for fortran routines */
+       static int ME_channel;
+private:
+       /** Add single particle to HEPEVT */
+       static void add_particle(int i, PhotosParticle * particle,
+                                int first_mother, int last_mother,
+                                int first_daughter, int last_daughter);
+
+       /** List of particles added to HEPEVT */
+       static std::vector<PhotosParticle*> m_particle_list;
+};
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/Photos.cxx b/TEvtGen/Photos/Photos.cxx
new file mode 100644 (file)
index 0000000..a9659df
--- /dev/null
@@ -0,0 +1,452 @@
+#include <stdarg.h>
+#include <iostream>
+#include <vector>
+
+#include "PhotosRandom.h"
+#include "PhotosEvent.h"
+#include "Photos.h"
+#include "Log.h"
+
+
+using std::vector;
+using std::cout;
+using std::endl;
+using std::ios_base;
+
+namespace Photospp
+{
+
+Photos Photos::_instance;
+
+vector<vector<int>* >    *Photos::supBremList    = 0;
+vector<vector<int>* >    *Photos::forceBremList  = 0;
+vector<pair<int,double>* > *Photos::forceMassList = 0;
+vector<int>              *Photos::ignoreStatusCodeList = 0;
+bool Photos::isSuppressed=false;
+bool Photos::massFrom4Vector=true;
+double Photos::momentum_conservation_threshold   = 0.1;
+bool Photos::meCorrectionWtForZ=false;
+bool Photos::meCorrectionWtForW=false;
+bool Photos::meCorrectionWtForScalar=false;
+bool Photos::isCreateHistoryEntries=false;
+int  Photos::historyEntriesStatus = 3;
+double (*Photos::randomDouble)() = PhotosRandom::randomReal;
+
+Photos::Photos()
+{
+       setAlphaQED           (0.00729735039);
+       setInfraredCutOff     (0.01);
+       setInterference       (true);
+       setDoubleBrem         (true);
+       setQuatroBrem         (false);
+       setTopProcessRadiation(true);
+       setCorrectionWtForW   (true);
+
+       // setExponentiation(true) moved to initialize() due to communication
+       // problems with Fortran under MacOS.
+       phokey_.iexp = 1;
+}
+
+void Photos::initialize()
+{
+// Should return if already initialized?
+
+/*******************************************************************************
+  All the following parameter setters can be called after PHOINI.
+  Initialization of kinematic correction against rounding errors.
+  The set values will be used later if called with zero.
+  Default parameter is 1 (no correction) optionally 2, 3, 4
+  In case of exponentiation new version 5 is needed in most cases.
+  Definition given here will be thus overwritten in such a case
+  below in routine PHOCIN
+*******************************************************************************/
+       if(!phokey_.iexp) initializeKinematicCorrections(1);
+       else              setExponentiation(true);
+
+// Initialize status counter for warning messages
+       for(int i=0;i<10;i++) phosta_.status[i]=0;
+// elementary security level, should remain 1 but we may want to have a method to change.
+       phosta_.ifstop=1; 
+
+       pholun_.phlun=6; // Logical output unit for printing error messages
+
+// Further initialization done automatically
+// see places with - VARIANT A - VARIANT B - all over to switch between options
+
+#ifndef VARIANTB
+//----------- SLOWER VARIANT A, but stable ------------------
+//--- it is limiting choice for small XPHCUT in fixed orer
+//--- modes of operation
+
+// Best choice is if FINT=2**N where N+1 is maximal number
+// of charged daughters
+// see report on overweihted events
+       if(phokey_.interf) maxWtInterference(2.0);
+       else               maxWtInterference(1.0);
+#else
+
+//----------- FASTER VARIANT B  ------------------
+//-- it is good for tests of fixed order and small XPHCUT
+//-- but is less promising for more complex cases of interference
+//-- sometimes fails because of that
+
+       if(phokey_.interf) maxWtInterference(1.8);
+       else               maxWtInterference(0.0);
+#endif
+//------------END VARIANTS A B -----------------------
+
+//------------------------------------------------------------------------------
+// Print PHOTOS header
+//------------------------------------------------------------------------------
+       int                coutPrec = cout.precision(6);
+       ios_base::fmtflags flags    = cout.setf(ios_base::floatfield);
+       cout<<endl;
+       cout<<"********************************************************************************"<<endl<<endl;
+
+       cout<<"                            ========================="<<endl;
+       cout<<"                              PHOTOS, Version:  "<<VER_MAJOR<<"."<<VER_MINOR<<endl;
+       cout<<"                              Released at:  "<<DAT_DAY<<"/"<<DAT_MONTH<<"/"<<DAT_YEAR<<endl;
+       cout<<"                            ========================="<<endl<<endl;
+
+       cout<<"                     Photos QED corrections in Particle Decays"<<endl<<endl;
+
+       cout<<"           Monte Carlo Program - by E. Barberio, B. van Eijk and Z. Was"<<endl;
+       cout<<"           From version 2.09   - by P. Golonka and Z. Was"<<endl;
+       cout<<"           From version 3.00   - by N. Davidson, T. Przedzinski and Z. Was"<<endl;
+
+       cout<<"********************************************************************************"<<endl<<endl;
+
+       cout<<"                  Internal (default) input parameters: "<<endl<<endl;
+       cout<<"                    INTERF= "<<phokey_.interf<<" ISEC= " <<phokey_.isec <<" ITRE= "<<phokey_.itre
+                            <<" IEXP= "  <<phokey_.iexp  <<" IFTOP= "<<phokey_.iftop<<" IFW= " <<phokey_.ifw <<endl;
+       cout<<"                    ALPHA_QED= "<<phocop_.alpha<<" XPHCUT= "<<phocop_.xphcut<<endl<<endl;
+
+       if(phokey_.interf) cout<<"                    Option with interference is active"<<endl;
+       if(phokey_.isec)   cout<<"                    Option with double photons is active"<<endl;
+       if(phokey_.itre)   cout<<"                    Option with triple/quatric photons is active"<<endl;
+       if(phokey_.iexp)   cout<<"                    Option with exponentiation is active EPSEXP="<<phokey_.expeps<<endl;
+       if(phokey_.iftop)  cout<<"                    Emision in t tbar production is active"<<endl;
+       if(phokey_.ifw)    cout<<"                    Correction wt in decay of W is active"<<endl;
+       if(meCorrectionWtForZ)    cout<<"                    ME in decay of Z is active"<<endl;
+       if(meCorrectionWtForW)    cout<<"                    ME in decay of W is active"<<endl;
+       cout<<endl<<"          WARNING:  /HEPEVT/ is not anymore used."<<endl<<endl;
+/*
+       cout<<endl<<"            WARNING (1): /HEPEVT/ is not anymore the standard common block"<<endl<<endl;
+
+       cout<<"            PHOTOS expects /HEPEVT/ to have REAL*8 variables. To change to"<<endl;
+       cout<<"            REAL*4 modify its declaration in subr. PHOTOS_GET PHOTOS_SET:"<<endl;
+       cout<<"                 REAL*8  d_h_phep,  d_h_vhep"<<endl;
+       cout<<"            WARNING (2): check dims. of /hepevt/ /phoqed/ /ph_hepevt/."<<endl;
+       cout<<"            HERE:                     d_h_nmxhep=10000 and  NMXHEP=10000"<<endl<<endl;
+*/
+       cout<<"********************************************************************************"<<endl;
+       // Revert output stream flags and precision
+       cout.precision(coutPrec);
+       cout.flags    (flags);
+
+       // Add reggeon, pomeron and its diffractive states to the list
+       // of decays where bremsstrahlung is suppressed
+       Photos::suppressBremForDecay(0,110);
+       Photos::suppressBremForDecay(0,990);
+       Photos::suppressBremForDecay(0,9902110);
+       Photos::suppressBremForDecay(0,9902210);
+       Photos::suppressBremForDecay(0,9900110);
+       Photos::suppressBremForDecay(0,9900210);
+       Photos::suppressBremForDecay(0,9900220);
+       Photos::suppressBremForDecay(0,9900330);
+       Photos::suppressBremForDecay(0,9900440);
+
+  // Set suppression of all pi0 decays and K_L -> gamma e+ e- ...
+  // Previously initialization in Fortran IPHEKL(i) routine and used in PHOCHK 
+  // i=1 was emission allowed, i=2 was blocked 0 was when the option was used.
+  // now in IPHEKL_setPi0KLnoEmmision we have only 1 to allow emissions 
+  // and 2 to block.
+  // Can be overriden by using 'Photos::IPHEKL_setPi0KLnoEmmision(0)'
+  // method several times use Photos::forceBremForDecay() and can be 
+  // over-ruled in part. 
+
+  Photos::IPHEKL_setPi0KLnoEmission(2); // Blocks emission in  pi0  and in Kl to gamma e+ e- if parameter is !1 (enables otherwise)
+  Photos::IPHQRK_setQarknoEmission (1,0);// Blocks emission from quarks if buf=1 (default); enables if buf=2
+                                        //  option 2 is not realistic and for tests only
+
+// Initialize Marsaglia and Zaman random number generator
+       PhotosRandom::initialize();
+}
+void Photos::iniInfo()
+{
+// prints infomation like Photos::initialize; may be called after reinitializations.
+
+/*******************************************************************************
+  Once  parameter setters are called after PHOINI one may want to know and write
+  into output info including all reinitializations.
+*******************************************************************************/
+
+
+//------------------------------------------------------------------------------
+// Print PHOTOS header again
+//------------------------------------------------------------------------------
+       int                coutPrec = cout.precision(6);
+       ios_base::fmtflags flags    = cout.setf(ios_base::floatfield);
+       cout<<endl;
+       cout<<"********************************************************************************"<<endl<<endl;
+       cout<<"                            ========================================="<<endl;
+       cout<<"                            PHOTOS, information routine"<<endl;
+       cout<<"                            Input parameters after reinitialization: "<<endl<<endl;
+       cout<<"                            ========================================="<<endl<<endl;
+       cout<<"********************************************************************************"<<endl<<endl;
+       cout<<"                    INTERF= "<<phokey_.interf<<" ISEC= " <<phokey_.isec <<" ITRE= "<<phokey_.itre
+                            <<" IEXP= "  <<phokey_.iexp  <<" IFTOP= "<<phokey_.iftop<<" IFW= " <<phokey_.ifw <<endl;
+       cout<<"                    ALPHA_QED= "<<phocop_.alpha<<" XPHCUT= "<<phocop_.xphcut<<endl<<endl;
+
+       if(phokey_.interf) cout<<"                    Option with interference is active"<<endl;
+       if(phokey_.isec)   cout<<"                    Option with double photons is active"<<endl;
+       if(phokey_.itre)   cout<<"                    Option with triple/quatric photons is active"<<endl;
+       if(phokey_.iexp)   cout<<"                    Option with exponentiation is active EPSEXP="<<phokey_.expeps<<endl;
+       if(phokey_.iftop)  cout<<"                    Emision in t tbar production is active"<<endl;
+       if(phokey_.ifw)    cout<<"                    Correction wt in decay of W is active"<<endl;
+       if(meCorrectionWtForZ)    cout<<"                    ME in decay of Z is active"<<endl;
+       if(meCorrectionWtForW)    cout<<"                    ME in decay of W is active"<<endl;
+       if(meCorrectionWtForScalar)    cout<<"                    ME in decay of Scalar is active"<<endl;
+
+       cout<<endl<<"          WARNING:  /HEPEVT/ is not anymore used."<<endl<<endl;
+       // Revert output stream flags and precision
+       cout.precision(coutPrec);
+       cout.flags    (flags);
+}
+
+void Photos::processParticle(PhotosParticle *p)
+{
+       PhotosBranch b(p);
+       if(!b.getSuppressionStatus()) b.process();
+}
+
+void Photos::processBranch(PhotosParticle *p)
+{
+       vector<PhotosParticle *> particles = p->getDecayTree();
+       vector<PhotosBranch *>   branches = PhotosBranch::createBranches(particles);
+       for(int i=0;i<(int)branches.size();i++) branches.at(i)->process();
+}
+
+void Photos::suppressBremForDecay(int count, int motherID, ... )
+{
+       va_list arg;
+       va_start(arg, motherID);
+       vector<int> *v = new vector<int>();
+       v->push_back(motherID);
+       for(int i = 0;i<count;i++)
+       {
+               v->push_back(va_arg(arg,int));
+       }
+       va_end(arg);
+       v->push_back(0);
+       if(!supBremList) supBremList = new vector< vector<int>* >();
+       supBremList->push_back(v);
+}
+
+void Photos::suppressBremForBranch(int count, int motherID, ... )
+{
+       va_list arg;
+       va_start(arg, motherID);
+       vector<int> *v = new vector<int>();
+       v->push_back(motherID);
+       for(int i = 0;i<count;i++)
+       {
+               v->push_back(va_arg(arg,int));
+       }
+       va_end(arg);
+       v->push_back(1);
+       if(!supBremList) supBremList = new vector< vector<int>* >();
+       supBremList->push_back(v);
+}
+
+void Photos::forceBremForDecay(int count, int motherID, ... )
+{
+       va_list arg;
+       va_start(arg, motherID);
+       vector<int> *v = new vector<int>();
+       v->push_back(motherID);
+       for(int i = 0;i<count;i++)
+       {
+               v->push_back(va_arg(arg,int));
+       }
+       va_end(arg);
+       v->push_back(0);
+       if(!forceBremList) forceBremList = new vector< vector<int>* >();
+       forceBremList->push_back(v);
+}
+
+void Photos::forceBremForBranch(int count, int motherID, ... )
+{
+       va_list arg;
+       va_start(arg, motherID);
+       vector<int> *v = new vector<int>();
+       v->push_back(motherID);
+       for(int i = 0;i<count;i++)
+       {
+               v->push_back(va_arg(arg,int));
+       }
+       va_end(arg);
+       v->push_back(1);
+       if(!forceBremList) forceBremList = new vector< vector<int>* >();
+       forceBremList->push_back(v);
+}
+
+  // Previously this functionality was encoded in FORTRAN routine
+  // PHOCHK which was having some other functionality as well
+void Photos::IPHEKL_setPi0KLnoEmission(int m)
+{
+  if(m==1)
+  {
+    cout << "MODOP=1 -- enables emission in pi0 to gamma e+e- : TEST " << endl ;
+    cout << "MODOP=1 -- enables emission in Kl  to gamma e+e- : TEST " << endl ;
+    Photos::forceBremForDecay(0,111);
+    Photos::forceBremForDecay(3, 130,22,11,-11);
+    Photos::forceBremForDecay(3,-130,22,11,-11);
+  }
+  else if(m!=1)
+  {
+    cout << "MODOP=2 -- blocks emission in Kl  to gamma e+e-: DEFAULT" << endl ;
+    cout << "MODOP=2 -- blocks emission in pi0 to gamma e+e-: DEFAULT" << endl ;
+    Photos::suppressBremForDecay(0,111);
+    Photos::suppressBremForDecay(3, 130,22,11,-11);
+    Photos::suppressBremForDecay(3,-130,22,11,-11);
+  }
+}
+
+  // Previously this functionality was encoded in FORTRAN routine
+  // PHOCHK which was having some other functionality as well
+bool Photos::IPHQRK_setQarknoEmission(int MODCOR, int PDGID)
+{
+  static int IPHQRK_MODOP=-1;
+  if(IPHQRK_MODOP==-1 && MODCOR==0){
+    cout << "stop from IPHQRK_setQarknoEmission lack of initialization" << endl ;
+    exit(0);
+  }
+  else if (MODCOR != 0){
+    IPHQRK_MODOP = MODCOR;
+    if(MODCOR ==1) cout << " IPHQRK_setQarknoEmission MODOP=1 -- blocks emission from light quarks:  DEFAULT" << endl ;
+    if(MODCOR !=1) cout << " IPHQRK_setQarknoEmission MODOP=2 -- emission from light quarks allowed: TEST   " << endl ;
+  }
+  if(IPHQRK_MODOP!=1) return true;
+  
+  return PDGID>9;
+}
+
+void Photos::createHistoryEntries(bool flag, int status)
+{
+  if(status<3)
+  {
+    Log::Warning()<<"Photos::createHistoryEntries: status must be >=3"<<endl;
+    return;
+  }
+
+  isCreateHistoryEntries = flag;
+  historyEntriesStatus   = status;
+  ignoreParticlesOfStatus(status);
+}
+
+void Photos::ignoreParticlesOfStatus(int status)
+{
+  if(status<3)
+  {
+    Log::Warning()<<"Photos::ignoreParticlesOfStatus: status must be >=3"<<endl;
+    return;
+  }
+  
+  if(!ignoreStatusCodeList) ignoreStatusCodeList = new vector<int>();
+
+  // Do not add duplicate entries to the list
+  for(unsigned int i=0;i<ignoreStatusCodeList->size();i++)
+    if( status==ignoreStatusCodeList->at(i) ) return;
+  
+  ignoreStatusCodeList->push_back(status);
+}
+
+void Photos::deIgnoreParticlesOfStatus(int status)
+{
+  if(!ignoreStatusCodeList) return;
+
+  for(unsigned int i=0;i<ignoreStatusCodeList->size();i++)
+  {
+    if( status==ignoreStatusCodeList->at(i) )
+    {
+      ignoreStatusCodeList->erase(ignoreStatusCodeList->begin()+i);
+      return;
+    }
+  }
+}
+
+bool Photos::isStatusCodeIgnored(int status)
+{
+  if(!ignoreStatusCodeList) return false;
+
+  for(unsigned int i=0;i<ignoreStatusCodeList->size();i++)
+    if( status==ignoreStatusCodeList->at(i) ) return true;
+
+  return false;
+}
+
+void Photos::setRandomGenerator( double (*gen)() )
+{
+  if(gen==NULL) randomDouble = PhotosRandom::randomReal;
+  else          randomDouble = gen;
+}
+
+void Photos::setExponentiation(bool expo)
+{
+       phokey_.iexp = (int) expo;
+       if(expo)
+       {
+               setDoubleBrem(false);
+               setQuatroBrem(false);
+               setInfraredCutOff(0.0000001);
+               initializeKinematicCorrections(5);
+               phokey_.expeps=0.0001;
+       }
+}
+
+void Photos::setMeCorrectionWtForW(bool corr)
+{
+       meCorrectionWtForW=corr;
+}
+
+void Photos::setMeCorrectionWtForZ(bool corr)
+{
+       meCorrectionWtForZ=corr;
+}
+void Photos::setMeCorrectionWtForScalar(bool corr)
+{
+       meCorrectionWtForScalar=corr;
+}
+
+void Photos::setStopAtCriticalError(bool stop)
+{
+       phosta_.ifstop=(int)stop;
+       if(!stop)
+       {
+               Log::Info()<<"PHOTOS production mode. Elementary test of data flow from event record disabled. "<<endl
+                          <<"Prior checks of the complete configuration "<<endl
+                          <<"(for the particular set of input parameters) must have been done! "<<endl;
+       }
+}
+
+
+void Photos::forceMassFromEventRecord(int pdgid)
+{
+  if(!forceMassList) forceMassList = new vector<pair<int,double>* >();
+  forceMassList->push_back( new pair<int,double>(pdgid, -1.0) );
+}
+
+void Photos::forceMass(int pdgid, double mass)
+{
+  if(mass<0.0)
+  {
+    Log::Warning()<<"Photos::forceMass: Mass must be > 0.0"<<endl;
+    return;
+  }
+  
+  if(!forceMassList) forceMassList = new vector<pair<int,double>* >();
+  forceMassList->push_back( new pair<int,double>(pdgid, mass) );
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/Photos.h b/TEvtGen/Photos/Photos.h
new file mode 100644 (file)
index 0000000..cf97ea8
--- /dev/null
@@ -0,0 +1,217 @@
+#ifndef _Photos_h_included_
+#define _Photos_h_included_
+
+/**
+ * @class Photos
+ *
+ * @brief Controls the configuration and initialization of Photos.
+ *
+ * This is the main configuration class for Photos C++ Interface.
+ * It is also used for invoking methods for processing single particle or branch.
+ *
+ * @author Nadia Davidson
+ * @date 16th June 2008
+ *
+ */
+#include <stdarg.h>
+#include <vector>
+#include "PhotosParticle.h"
+#include "PhotosRandom.h"
+#include "f_Init.h"
+// WARNING: VARIANT B of phase space generation was not tested in C++ for all
+// options of the program initialization.. 
+//#define VARIANTB true
+using std::vector;
+using std::pair;
+
+namespace Photospp
+{
+
+class PhotosParticle;
+
+class Photos
+{
+public:
+       static const int VER_MAJOR=3, VER_MINOR=54;
+       static const int DAT_DAY  =2, DAT_MONTH=12,DAT_YEAR=13;
+public:
+
+       /** Initalize Photos with the parameters previously set via the
+          setter methods */
+       static void initialize();
+
+       /** Prints info on  Photos initialization (reinitialization)
+          status */
+       static void iniInfo();
+
+       /** Process decay of single particle */
+       static void processParticle(PhotosParticle *p);
+       /** Process decay of whole decay branch starting from given particle */
+       static void processBranch(PhotosParticle *p);
+
+       /** Suppress processing of a single decay */
+       static void suppressBremForDecay (int count, int motherID, ... );
+       /** Suppress processing of whole decay branch */
+       static void suppressBremForBranch(int count, int motherID, ... );
+
+       /** Suppress all processing. Only forced decays will be processed. */
+       static void suppressAll()                      { isSuppressed=true; }
+
+       /** Force processing of a single decay */
+       static void forceBremForDecay (int count, int motherID, ... );
+
+       /** Force processing of a whole decay branch */
+       static void forceBremForBranch(int count, int motherID, ... );
+
+  /** Block emissions id decays pi0 and K_L -> gamma e+ e- 
+      1           = no suppression
+      2 (default) = suppressed emissions in K_L -> gamma e+ e- ... and all pi0 decays */
+  static void IPHEKL_setPi0KLnoEmission(int m);
+
+  static bool IPHQRK_setQarknoEmission(int MODCOR, int PDGID);
+  
+  /** If event record allows it, create history entries of particles
+      before Photos processing */
+  static void createHistoryEntries(bool flag, int status);
+
+  /** Ignore particles with given status code */
+  static void ignoreParticlesOfStatus(int status);
+
+  /** Remove 'status' from the list of ignored status codes */
+  static void deIgnoreParticlesOfStatus(int status);
+  
+  /** Returns 'true' if status code is ignored */
+  static bool isStatusCodeIgnored(int status);
+public:
+  /** Substitute build-in generator with external one */
+  static void setRandomGenerator( double (*gen)() );
+
+       /** Seed for RANMAR used by fortran part of the Photos */
+       static void setSeed(int iseed1, int iseed2)    { PhotosRandom::setSeed(iseed1,iseed2); }
+
+       /** Maximum interference weight */
+       static void maxWtInterference(double interference) { phokey_.fint=interference; }
+
+       /** Minimal energy (in units of decaying particle mass) for photons to be explicitly generated */
+       static void setInfraredCutOff(double cut_off)  { phocop_.xphcut=cut_off; }
+
+       /** Coupling constant alpha QED */
+       static void setAlphaQED(double alpha)          { phocop_.alpha=alpha; }
+
+       /** Key for interference, matrix element weight */
+       static void setInterference(bool interference) { phokey_.interf=(int)interference; }
+
+       /** Set double bremsstrahlung generation */
+       static void setDoubleBrem(bool doub)           { phokey_.isec=(int)doub; }
+
+       /** Set bremsstrahlung generation up to multiplicity of 4 */
+       static void setQuatroBrem(bool quatroBrem)     { phokey_.itre=(int)quatroBrem; }
+
+       /* Key for partial effects of  matrix element (in leptonic W decays) */
+       static void setCorrectionWtForW(bool corr) { phokey_.ifw=(int)corr; }
+
+       /** Set exponentiation mode */
+       static void setExponentiation(bool expo);
+
+       /** Switch for complete effects of matrix element (in  scalar  to 2 scalars decays) */
+       static void setMeCorrectionWtForScalar(bool corr);
+
+       /** Switch for complete effects of matrix element (in leptonic W decays) */
+       static void setMeCorrectionWtForW(bool corr);
+
+       /** Switch for complete effects of matrix element (in leptonic Z decays) */
+       static void setMeCorrectionWtForZ(bool corr);
+
+       /** Set photon emission in top pair production in quark (gluon) pair annihilation */
+       static void setTopProcessRadiation(bool top)         { phokey_.iftop=(int)top; }
+
+       /* Set if PHOTOS should stop at critical error. True by default.
+          WARNING: These stops are an essential source of debugging information flow
+                    from event record to PHOTOS algorithm. Never switch it off! The only exception:
+                   you have checked your set-up including particular physics initialization
+                    with the substantially large sample and you submit large production. */
+       static void setStopAtCriticalError(bool stop);
+
+       /** Initialize kinematic corrections */
+       static void initializeKinematicCorrections(int flag) { PHCORK(flag); }
+
+       /** Force mass value to be sqrt(e^2-p^2) for all particle momenta
+           taken from event record. May be important for numerical stability.
+               May lead to faulty results due to rounding errors for
+               hiper-relativistic electron, for example. */
+       static void forceMassFrom4Vector(bool flag) { massFrom4Vector=flag; }
+       
+  /** When particles with PDGID and -PDGID will be processed by Photos,
+      their mass value will be taken from event record instead of being
+      calculated from 4-vector.
+
+      This works only if 'forceMassFrom4Vector' is set to 'true' (default)      
+      This routine may be executed several times with different PDGID values. */
+  static void forceMassFromEventRecord(int pdgid);
+
+  /** When particles with PDGID and -PDGID will be processed by Photos,
+      their mass value will be given by user instead of being calculated
+      from 4-vector.
+
+      This works only if 'forceMassFrom4Vector' is set to 'true' (default)
+      This routine may be executed several times with different PDGID values. */  
+  static void forceMass(int pdgid, double mass);
+
+       /** set energy momentum conservation threshold */
+       static void setMomentumConservationThreshold(double threshold){momentum_conservation_threshold=threshold; }
+
+public:
+       /** Is in suppressed mode */
+       static bool isSuppressed;
+
+       /** Is mass from 4-vector or from event record */
+       static bool massFrom4Vector;
+       
+       /** List of suppressed decays */
+       static vector<vector<int>* >    *supBremList;
+
+       /** List of forced decays */
+       static vector<vector<int>* >    *forceBremList;
+
+       /** List of forced mass values */
+       static vector<pair<int,double>* > *forceMassList;
+  
+  /** List of ignored status codes */
+       static vector<int >             *ignoreStatusCodeList;
+
+       /** Threshold for momentum conservation check */
+       static double momentum_conservation_threshold;
+
+       /** Flag for complete effects of matrix element (in scalars decays) */
+       static bool meCorrectionWtForScalar;
+
+       /** Flag for complete effects of matrix element (in leptonic Z decays) */
+       static bool meCorrectionWtForZ;
+       
+       /** Flag for complete effects of matrix element (in leptonic W decays) */
+       static bool meCorrectionWtForW;
+  
+  /** Flag for creating historic entries */
+  static bool isCreateHistoryEntries;
+
+  /** Status of history entries */
+  static int  historyEntriesStatus;
+
+  /** Pointer to random generator function */
+  static double (*randomDouble)();
+public:
+       /** Get instance of Photos */
+       Photos& getInstance() { return _instance; }
+private:
+       /* Singleton: only one instance allowed.
+          Constructor sets default values of PHOTOS parameters */
+        Photos();
+       ~Photos() {}
+       Photos(const Photos&);
+       Photos& operator=(const Photos&);
+       static Photos _instance;
+};
+
+} // namespace Photospp
+#endif
+
diff --git a/TEvtGen/Photos/PhotosBranch.cxx b/TEvtGen/Photos/PhotosBranch.cxx
new file mode 100644 (file)
index 0000000..8263b58
--- /dev/null
@@ -0,0 +1,267 @@
+#include <vector>
+#include <list>
+#include "PH_HEPEVT_Interface.h"
+#include "PhotosParticle.h"
+#include "PhotosBranch.h"
+#include "Photos.h"
+#include "Log.h"
+using std::vector;
+using std::list;
+using std::endl;
+
+namespace Photospp
+{
+
+PhotosBranch::PhotosBranch(PhotosParticle* p)
+{
+       daughters = p->getDaughters();
+
+       //Suppress if somehow got stable particle
+       if(daughters.size()==0)
+       {
+               Log::Debug(1)<<"Stable particle."<<endl;
+               suppression = 1;
+               forcing     = 0;
+               particle    = NULL;
+               return;
+       }
+       else if(daughters.at(0)->getMothers().size()==1)
+       {
+               // Regular case - one mother
+               Log::Debug(1)<<"Regular case."<<endl;
+               particle  = p;
+               mothers   = p->findProductionMothers();
+       }
+       else
+       {
+               // Advanced case - branch with multiple mothers - no mid-particle
+               Log::Debug(1)<<"Advanced case."<<endl;
+               particle  = NULL;
+               mothers   = daughters.at(0)->getMothers();
+       }
+
+  //--------------------------------------------------
+  // Finalize suppression/forcing checks
+  // NOTE: if user forces decay of specific particle,
+  //       this overrides any suppresion
+  //--------------------------------------------------
+
+       forcing = checkForcingLevel();
+       if(!forcing) suppression = checkSuppressionLevel();
+       else         suppression = 0;
+
+       // Even if forced or passed suppression check, we still have to check few things
+       if(!suppression)
+       {
+               // Check momentum conservation
+               suppression=!checkMomentumConservation();
+               if(suppression) Log::Warning()<<"Branching ignored due to 4-momentum non conservation"<<endl;
+
+               // Check if advanced case has only one daughter
+               if(!particle && daughters.size()==1) suppression=-1;
+
+               // If any of special cases is true, we're not forcing this branch
+               if(suppression) forcing=0;
+       }
+}
+
+void PhotosBranch::process()
+{
+       Log::Debug(703)<<"   Processing barcode: "<<( (particle) ? particle->getBarcode() : ( (mothers.size()) ? mothers.at(0)->getBarcode() : -1) )<<endl;
+       /*
+       cout<<"Particles send to photos (with barcodes in brackets):"<<endl;
+       vector<PhotosParticle *> get = getParticles();
+       for(int i=0;i<(int)get.size();i++) cout<<"ID: "<<get.at(i)->getPdgID()<<" ("<<get.at(i)->getBarcode()<<"), "; cout<<endl;
+       */
+       int index = PH_HEPEVT_Interface::set(this);
+       PH_HEPEVT_Interface::prepare();
+       PHOTOS_MAKE_C(index);
+       PH_HEPEVT_Interface::complete();
+       PH_HEPEVT_Interface::get();
+       checkMomentumConservation();
+}
+
+vector<PhotosParticle *> PhotosBranch::getParticles()
+{
+       vector<PhotosParticle *> ret = mothers;
+       if(particle) ret.push_back(particle);
+       ret.insert(ret.end(),daughters.begin(),daughters.end());
+       return ret;
+}
+
+bool PhotosBranch::checkMomentumConservation()
+{
+       if(particle)           return particle->checkMomentumConservation();
+       if(mothers.size()>0)   return mothers.at(0)->checkMomentumConservation();
+       return true;
+}
+
+vector<PhotosBranch *> PhotosBranch::createBranches(vector<PhotosParticle *> particles)
+{
+       Log::Debug(700)<<"PhotosBranch::createBranches - filtering started"<<endl;
+       list<PhotosParticle *> list(particles.begin(),particles.end());
+       vector<PhotosBranch *> branches;
+
+       // First - add all forced decays
+       if(Photos::forceBremList)
+       {
+               std::list<PhotosParticle *>::iterator it;
+               for(it=list.begin();it!=list.end();it++)
+               {
+                       PhotosBranch *branch = new PhotosBranch(*it);
+                       int forcing = branch->getForcingStatus();
+                       if(forcing)
+                       {
+                               Log::Debug(701)<<" Forced: "<<(*it)->getPdgID()<<" (barcode: "<<(*it)->getBarcode()<<") with forcing status= "<<forcing<<endl;
+                               branches.push_back(branch);
+                               it = list.erase(it);
+                               --it;
+                               // If forcing consecutive decays
+                               if(forcing==2)
+                               {
+                                       PhotosParticle *p = branch->getDecayingParticle();
+                                       if(!p)
+                                       {
+                                               if(branch->getMothers().size()>0) p = branch->getMothers().at(0);
+                                               else continue;
+                                       }
+                                       vector<PhotosParticle *> tree = p->getDecayTree();
+                                       //Add branches for all particles from the list - max O(n*m)
+                                       std::list<PhotosParticle *>::iterator it2;
+                                       for(it2=list.begin();it2!=list.end();it2++)
+                                       {
+                                               for(int i=0;i<(int)tree.size();i++)
+                                               {
+                                                       if(tree.at(i)->getBarcode()==(*it2)->getBarcode())
+                                                       {
+                                                               PhotosBranch *b = new PhotosBranch(*it2);
+                                                               branches.push_back(b);
+                                                               // If we were to delete our next particle in line
+                                                               if(it==it2) --it;
+                                                               it2 = list.erase(it2);
+                                                               --it2;
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       else delete branch;
+               }
+       }
+       // Quit if we're suppressing everything
+       if(Photos::isSuppressed) return branches;
+       // Now - check if remaining decays are suppressed
+       while(!list.empty())
+       {
+               PhotosParticle *particle = list.front();
+               list.pop_front();
+               if(!particle) continue;
+
+               PhotosBranch *branch = new PhotosBranch(particle);
+               int suppression = branch->getSuppressionStatus();
+               if(!suppression) branches.push_back(branch);
+               else
+               {
+                       Log::Debug(702)<<"  Suppressed: "<<particle->getPdgID()<<" (barcode: "<<particle->getBarcode()<<") with suppression status= "<<suppression<<endl;
+                       //If suppressing consecutive decays
+                       if(suppression==2)
+                       {
+                               PhotosParticle *p = branch->getDecayingParticle();
+                               if(!p)
+                               {
+                                       if(branch->getMothers().size()>0) p = branch->getMothers().at(0);
+                                       else continue;
+                               }
+                               vector<PhotosParticle *> tree = p->getDecayTree();
+                               //Remove all particles from the list - max O(n*m)
+                               std::list<PhotosParticle *>::iterator it;
+                               for(it=list.begin();it!=list.end();it++)
+                               {
+                                       for(int i=0;i<(int)tree.size();i++)
+                                       {
+                                               if(tree.at(i)->getBarcode()==(*it)->getBarcode())
+                                               {
+                                                       it = list.erase(it);
+                                                       --it;
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       delete branch;
+                       continue;
+               }
+
+               //In case we don't have mid-particle erase rest of the mothers from list
+               if(!branch->getDecayingParticle())
+               {
+                       vector<PhotosParticle *> mothers = branch->getMothers();
+                       for(int i=0;i<(int)mothers.size();i++)
+                       {
+                               PhotosParticle *m = mothers.at(i);
+                               if(m->getBarcode()==particle->getBarcode()) continue;
+                               std::list<PhotosParticle *>::iterator it;
+                               for(it=list.begin();it!=list.end();it++)
+                                       if(m->getBarcode()==(*it)->getBarcode())
+                                       {
+                                               it = list.erase(it);
+                                               break;
+                                       }
+                       }
+               }
+       }
+       return branches;
+}
+
+int PhotosBranch::checkList(bool forceOrSuppress)
+{
+       vector< vector<int>* > *list = (forceOrSuppress) ? Photos::forceBremList : Photos::supBremList;
+       if(!list) return 0;
+
+       // Can't check without pdgid
+       int motherID;
+       if(particle) motherID = particle->getPdgID();
+       else
+       {
+               if(mothers.size()==0) return 0;
+               motherID = mothers.at(0)->getPdgID();
+       }
+
+       // Create list of daughters
+       vector<int> dID;
+       for(int j=0;j<(int)daughters.size();j++) dID.push_back(daughters[j]->getPdgID());
+
+       vector< vector<int> *> &patternList = *list;
+
+       // Check if the mother and list of daughters matches any of the declared patterns
+       for(int j=0; j<(int)patternList.size();j++)
+       {
+               // Skip patterns that don't have our mother
+               if(motherID!=(*patternList[j])[0]) continue;
+
+               // Compare decay daughters with pattern - max O(n*m)
+               vector<int> &pattern = *patternList[j];
+               bool fullMatch=true;
+               for(int k = 1; k<(int)pattern.size()-1; k++)
+               {
+                       bool oneMatch=false;
+                       for(int l=0;l<(int)dID.size(); l++)
+                               if(pattern[k]==dID[l]) { oneMatch=true; break; }
+                       if(!oneMatch) { fullMatch=false; break; }
+               }
+               // Check if the matching pattern is set for consecutive suppression
+               /*
+                 Currently minimal matching is used.
+                 If e.g. 25 -> -15 is suppressed, then 25 -> 15,-15 and 25 -> 15,-15,22 etc. is suppressed too
+                 For exact matching (then suppress 25 -> 15,-15 ; 25 -> 15,-15,22 etc. must be done separately) uncoment line ...:
+               */
+               // if(pattern.size()<=2 || (fullMatch && dID.size()==pattern.size()-2) )
+               // ...and comment out line:
+               if(pattern.size()<=2 || fullMatch)
+                       return (pattern.back()==1) ? 2 : 1;
+       }
+       return 0;
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosBranch.h b/TEvtGen/Photos/PhotosBranch.h
new file mode 100644 (file)
index 0000000..f467659
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _PhotosBranch_h_included_
+#define _PhotosBranch_h_included_
+
+/**
+ * @class PhotosBranch
+ *
+ * @brief Single branching point
+ *
+ * Contains information about daughters and mothers of a single branch.
+ * Each branch will be converted to HEPEVT and processed by photos.
+ *
+ * @author Tomasz Przedzinski
+ * @date 8 July 2010
+ */
+
+#include <vector>
+#include "PhotosParticle.h"
+using std::vector;
+
+namespace Photospp
+{
+
+class PhotosBranch
+{
+public:
+       /** Create branch out of decaying particle */
+       PhotosBranch(PhotosParticle* p);
+
+       /** Return decaying particle. NULL if branching does not have mid-particle */
+       PhotosParticle*          getDecayingParticle() { return particle;  }
+
+       /** Get list of mothers */
+       vector<PhotosParticle *> getMothers()          { return mothers;   }
+
+       /** Get list of daughters */
+       vector<PhotosParticle *> getDaughters()        { return daughters; }
+
+       /** Get list of all particles used by branch */
+       vector<PhotosParticle *> getParticles();
+
+       /** Check if branch is suppressed */
+       int getSuppressionStatus() { return suppression; }
+
+       /** Check if branch is forced */
+       int getForcingStatus()     { return forcing; }
+
+       /** Checks momentum conservation of decaying particle.
+           If it does not exist, checks momentum of first mother passed to photos */
+       bool checkMomentumConservation();
+
+       /** Process single branch */
+       void process();
+
+       /** Create branches from particles list */
+       static vector<PhotosBranch *> createBranches(vector<PhotosParticle *> particles);
+private:
+       /** Checks if branching is suppressed by PHOTOS. */
+       int checkSuppressionLevel() { return checkList(false); }
+
+       /** Checks if branching is forced by PHOTOS. */
+       int checkForcingLevel()     { return checkList(true);  }
+
+       /** Algorithm used for suppression/forcing check */
+       int checkList(bool forceOrSuppress);
+private:
+       /** State of branching suppression*/
+       int suppression;
+       /** State of branching forcing*/
+       int forcing;
+       /** Decaying particle */
+       PhotosParticle          *particle;
+       /** List of mothers   */
+       vector<PhotosParticle *> mothers;
+       /** List of daughters */
+       vector<PhotosParticle *> daughters;
+};
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/PhotosDebugRandom.cxx b/TEvtGen/Photos/PhotosDebugRandom.cxx
new file mode 100644 (file)
index 0000000..4f99fda
--- /dev/null
@@ -0,0 +1,67 @@
+#include <iostream>
+#include "PhotosDebugRandom.h"
+#include "Log.h"
+using std::ios_base;
+
+namespace Photospp
+{
+
+int    PhotosDebugRandom::i97_saved      = 0;
+int    PhotosDebugRandom::j97_saved      = 0;
+double PhotosDebugRandom::uran_saved[97] = { 0 };
+double PhotosDebugRandom::cran_saved     = 0;
+
+void PhotosDebugRandom::saveState()
+{
+  i97_saved=i97;
+       j97_saved=j97;
+  cran_saved=cran;
+
+       for(int i=0;i<97;i++) uran_saved[i]=uran[i];
+}
+
+void PhotosDebugRandom::restoreState()
+{
+  i97=i97_saved;
+       j97=j97_saved;
+  cran=cran_saved;
+
+       for(int i=0;i<97;i++) uran[i]=uran_saved[i];
+}
+
+void PhotosDebugRandom::setState(int i, int j, double c, double list[97])
+{
+  i97=i;
+  j97=j;
+  cran=c;
+  for(int i=0;i<97;i++) uran[i]=list[i];
+}
+
+void PhotosDebugRandom::setSaveState(int i, int j, double c, double list[97])
+{
+  i97_saved=i;
+  j97_saved=j;
+  cran_saved=c;
+  for(int i=0;i<97;i++) uran_saved[i]=list[i];
+}
+
+void PhotosDebugRandom::print()
+{
+  int                coutPrec = cout.precision(18);
+       ios_base::fmtflags flags    = cout.setf(ios_base::floatfield);
+
+  Log::RedirectOutput(Log::Info());
+
+  cout<<"double uran_state[97] = { ";
+  for(int i=0;i<96;i++) cout<<uran[i]<<", ";
+  cout<<uran[96]<<" };"<<endl<<endl;
+  cout<<"PhotosDebugRandom::setState( "<<i97<<", "<<j97<<", "<<cran<<", uran_state );"<<endl;
+
+  Log::RevertOutput();
+
+       // Revert output stream flags and precision
+       cout.precision(coutPrec);
+       cout.flags    (flags);
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosDebugRandom.h b/TEvtGen/Photos/PhotosDebugRandom.h
new file mode 100644 (file)
index 0000000..294f821
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef _PhotosDebugRandom_included_
+#define _PhotosDebugRandom_included_
+/**
+ * @class PhotosDebugRandom
+ *
+ * @brief Random generator for debugging purposes
+ *
+ * Random generator with ability to save and restore state, set custom
+ * state and print current state. This class extends PhotosRandom class.
+ * PhotosRandom is a static class, therefore this extension works
+ * automatically for FORTRAN code without any changes.
+ * Our random generator is the C++ follow-up of FORTRAN generator by 
+ * F. James DD-Report, November 1988. and  G. Marsaglia and A. Zaman,  
+ * FSU-SCR-87-50,
+ *
+ * @author Tomasz Przedzinski
+ * @date 28th June 2012
+ */
+#include "PhotosRandom.h"
+
+namespace Photospp
+{
+
+class PhotosDebugRandom : PhotosRandom
+{
+public:
+  /* Save current state */
+  static void saveState();
+  
+  /* Restore state from save */
+  static void restoreState();
+
+  /* Set current state provided by user */
+  static void setState(int i, int j, double c, double list[97]);
+
+  /* Save state provided by user */
+  static void setSaveState(int i, int j, double c, double list[97]);
+  
+  /* Print state in a form that can be easily copied into the code */
+  static void print();
+
+private:
+  static int i97_saved;
+  static int j97_saved;
+  static double uran_saved[97];
+  static double cran_saved;
+};
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/PhotosEvent.cxx b/TEvtGen/Photos/PhotosEvent.cxx
new file mode 100644 (file)
index 0000000..94156a3
--- /dev/null
@@ -0,0 +1,56 @@
+#include <vector>
+#include "PhotosParticle.h"
+#include "PhotosBranch.h"
+#include "PhotosEvent.h"
+#include "Log.h"
+using std::vector;
+
+namespace Photospp
+{
+
+PhotosEvent::~PhotosEvent()
+{
+       while(m_branch_points.size()!=0)
+       {
+               PhotosBranch *temp = m_branch_points.back();
+               m_branch_points.pop_back();
+               delete temp;
+       }
+}
+
+void PhotosEvent::process()
+{
+       //print();
+       vector<PhotosParticle*> particles = filterParticles( getParticleList() );
+       m_branch_points = PhotosBranch::createBranches(particles);
+
+       for(int i=0;i<(int)m_branch_points.size();i++)
+               m_branch_points.at(i)->process();
+       //print();
+}
+
+vector<PhotosParticle *> PhotosEvent::filterParticles(vector<PhotosParticle *> particles)
+{
+       vector<PhotosParticle *> filtered;
+       for(int i=0;i<(int)particles.size();i++)
+       {
+               PhotosParticle *p = particles.at(i);
+               if(!p) continue;
+
+               //check that the particle decays
+               if(p->getStatus()==PhotosParticle::STABLE) continue;
+
+               //check for self decays
+               vector<PhotosParticle *> daughters = p->getDaughters();
+               int j=0;
+               for(j=0;j<(int)daughters.size();j++)
+                       if(daughters.at(j)->getPdgID()==p->getPdgID()) break;
+               if(j!=(int)daughters.size()) continue;
+
+               Log::Debug(2)<<"Passed particle filter"<<endl;
+               filtered.push_back(p);
+       }
+       return filtered;
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosEvent.h b/TEvtGen/Photos/PhotosEvent.h
new file mode 100644 (file)
index 0000000..7f0fa36
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef _PhotosEvent_h_included_
+#define _PhotosEvent_h_included_
+
+/**
+ * @class PhotosEvent
+ *
+ * @brief Abstract base class for containing the event information.
+ *
+ * PhotosEvent contains virtual methods, which need to be implemented
+ * by the appropriate interface class to the event record. An object of
+ * PhotosEvent type should be created by the user and processed
+ * via the process() method.
+ *
+ * @author Nadia Davidson
+ * @date 16 June 2008
+ */
+
+#include <vector>
+#include "PhotosBranch.h"
+#include "PhotosParticle.h"
+using std::vector;
+
+namespace Photospp
+{
+
+class PhotosEvent
+{
+public:
+       virtual ~PhotosEvent();
+
+       /** Get an unfiltered list of particles from the event record */
+       virtual vector<PhotosParticle*> getParticleList() = 0;
+
+       /** Print informations about the event */
+       virtual void print() = 0;
+
+       /** Process event */
+       void process();
+private:
+       /** Filter suppressed and invalid particles. */
+       vector<PhotosParticle *> filterParticles(vector<PhotosParticle *> particles);
+
+       /** branch points which should be given to PHOTOS */
+       vector<PhotosBranch *> m_branch_points;
+};
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/PhotosHEPEVTEvent.cxx b/TEvtGen/Photos/PhotosHEPEVTEvent.cxx
new file mode 100644 (file)
index 0000000..c7556c7
--- /dev/null
@@ -0,0 +1,144 @@
+#include "PhotosHEPEVTEvent.h"
+#include "Log.h"
+
+const static int fortranNMXHEP = 10000;
+
+/** Definition of the HEPEVT common block  it can be adapted to user env of F77*/
+struct HEPEVT
+{
+  int    nevhep;
+  int    nhep;
+  int    isthep[fortranNMXHEP];
+  int    idhep[fortranNMXHEP];
+  int    jmohep[fortranNMXHEP][2];
+  int    jdahep[fortranNMXHEP][2];
+  double phep[fortranNMXHEP][5];
+  double vhep[fortranNMXHEP][4];
+  //      NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
+  //  JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
+  //   int qedrad[NMXHEP]  was an add up
+  //   for  HEPEVT in F77 times. Separate common PH_PHOQED
+  //   also phoif_.chkif[NMXPHO] was add up for PHOEVT
+  //   now it is pho.qedrad
+} hepevt_;
+
+struct PHOQED
+{
+  int qedrad[fortranNMXHEP]; // Photos flag
+} phoqed_;
+
+namespace Photospp
+{
+
+PhotosHEPEVTEvent::~PhotosHEPEVTEvent()
+{
+  for(unsigned int i=0;i<particle_list.size();i++) delete particle_list[i];
+}
+
+PhotosHEPEVTEvent::PhotosHEPEVTEvent() {}
+
+void PhotosHEPEVTEvent::addParticle(PhotosHEPEVTParticle *p)
+{
+  p->setEvent(this);
+
+  p->setBarcode(particle_list.size());
+  particle_list.push_back(p);
+}
+
+PhotosHEPEVTParticle *PhotosHEPEVTEvent::getParticle(int i)
+{
+  if( i<0 || i>=(int)particle_list.size() ) return NULL;
+  return particle_list[i];
+}
+
+void PhotosHEPEVTEvent::setParticle(int i, PhotosHEPEVTParticle *p)
+{
+  if( i<0 || i>=(int)particle_list.size() ) return;
+  particle_list[i] = p;
+}
+
+int PhotosHEPEVTEvent::getParticleCount()
+{
+  return particle_list.size();
+}
+
+std::vector<PhotosParticle*> PhotosHEPEVTEvent::getParticleList()
+{
+  std::vector<PhotosParticle*> ret;
+
+  for(unsigned int i=0;i<particle_list.size();i++) ret.push_back( (PhotosParticle*)particle_list[i] );
+
+  return ret;
+}
+
+void PhotosHEPEVTEvent::print()
+{
+  Log::Info()<<"PhotosHEPEVTEvent"<<endl<<"-----------------"<<endl;
+  for(unsigned int i=0;i<particle_list.size();i++) particle_list[i]->print();
+}
+
+void PhotosHEPEVTEvent::clear()
+{
+  for(unsigned int i=0;i<particle_list.size();i++) delete particle_list[i];
+  particle_list.clear();
+}
+
+void PhotosHEPEVTEvent::read_event_from_HEPEVT(PhotosHEPEVTEvent *evt)
+// vertex info is not needed, but what about info for write_event_to_HEPEVT?
+// need to be fixed later.
+{
+  if(evt==NULL) return;
+  
+  for(int i=0; i<hepevt_.nhep; i++)
+  {
+    PhotosHEPEVTParticle *p = new PhotosHEPEVTParticle
+    (
+      hepevt_.idhep [i],
+      hepevt_.isthep[i],
+      hepevt_.phep  [i][0],
+      hepevt_.phep  [i][1],
+      hepevt_.phep  [i][2],
+      hepevt_.phep  [i][3],
+      hepevt_.phep  [i][4],
+      hepevt_.jmohep[i][0]-1,
+      hepevt_.jmohep[i][1]-1,
+      hepevt_.jdahep[i][0]-1,
+      hepevt_.jdahep[i][1]-1
+    );
+    evt->addParticle(p);
+  }
+}
+
+void PhotosHEPEVTEvent::write_event_to_HEPEVT(PhotosHEPEVTEvent *evt)
+// vertex info is needed, for photons it should be as of other sisters 
+// taken at  read_event_from_HEPEVT
+// need to be fixed later.
+
+{
+  if(evt==NULL) return;
+  
+  hepevt_.nhep = evt->getParticleCount();
+  
+  for(int i=0; i<hepevt_.nhep; i++)
+  {
+    PhotosHEPEVTParticle *p = evt->getParticle(i);
+    
+    hepevt_.idhep [i]   =p->getPdgID();
+    hepevt_.isthep[i]   =p->getStatus();
+    hepevt_.phep  [i][0]=p->getPx();
+    hepevt_.phep  [i][1]=p->getPy();
+    hepevt_.phep  [i][2]=p->getPz();
+    hepevt_.phep  [i][3]=p->getE();
+    hepevt_.phep  [i][4]=p->getMass();
+    hepevt_.jmohep[i][0]=p->getFirstMotherIndex()  +1;
+    hepevt_.jmohep[i][1]=p->getSecondMotherIndex() +1;
+    hepevt_.jdahep[i][0]=p->getDaughterRangeStart()+1;
+    hepevt_.jdahep[i][1]=p->getDaughterRangeEnd()  +1;
+    hepevt_.vhep  [i][0]=0.0;
+    hepevt_.vhep  [i][1]=0.0;
+    hepevt_.vhep  [i][2]=0.0;
+    hepevt_.vhep  [i][3]=0.0;
+  }
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosHEPEVTEvent.h b/TEvtGen/Photos/PhotosHEPEVTEvent.h
new file mode 100644 (file)
index 0000000..1802c9d
--- /dev/null
@@ -0,0 +1,74 @@
+#ifndef _PhotosHEPEVTEvent_h_included_
+#define _PhotosHEPEVTEvent_h_included_
+
+/**
+ * @class PhotosHEPEVTParticle
+ *
+ * @brief Single particle of HEPEVT event record
+ *
+ * This class implements the virtual methods of
+ * PhotosEvent. In this way it provides an
+ * interface between the generic PhotosEvent class
+ * and information stored in HEPEVT event record.
+ *
+ * @author Tomasz Przedzinski
+ * @date 24 November 2011
+ */
+
+#include <iostream>
+#include "f_Init.h"
+#include "PhotosEvent.h"
+#include "PhotosParticle.h"
+#include "PhotosHEPEVTParticle.h"
+
+namespace Photospp
+{
+
+class PhotosHEPEVTParticle;
+
+class PhotosHEPEVTEvent : public PhotosEvent {
+
+ public:
+
+  /** Default destructor */
+  ~PhotosHEPEVTEvent();
+
+  /** Default constructor */
+  PhotosHEPEVTEvent();
+
+  /** Add particle at the end of event record */
+  void addParticle(PhotosHEPEVTParticle *p);
+
+  /** Get particle at index 'i' */
+  PhotosHEPEVTParticle *getParticle(int i);
+
+  /** Set particle at index 'i' */
+  void setParticle(int i, PhotosHEPEVTParticle *p);
+
+  /** Get higher-most index of the particles in event (nhep) */
+  int getParticleCount();
+
+  /** Get an unfiltered list of particles from the event record */
+  std::vector<PhotosParticle*> getParticleList();
+
+  /** Print out list of particles in the event */
+  void print();
+  
+  /** Remove all particles from the event */
+  void clear();
+
+  /** Fill PhotosHEPEVTEvent from HEPEVT common block */
+  static void read_event_from_HEPEVT(PhotosHEPEVTEvent *evt);
+  
+  /** Write to HEPEVT common block content of PhotosHEPEVTEvent */
+  static void write_event_to_HEPEVT(PhotosHEPEVTEvent *evt);
+
+ private:
+
+  /** List of all particles */
+  std::vector<PhotosHEPEVTParticle*> particle_list;
+};
+
+} // namespace Photospp
+#endif
+
diff --git a/TEvtGen/Photos/PhotosHEPEVTParticle.cxx b/TEvtGen/Photos/PhotosHEPEVTParticle.cxx
new file mode 100644 (file)
index 0000000..1627359
--- /dev/null
@@ -0,0 +1,420 @@
+#include "PhotosHEPEVTParticle.h"
+#include "Log.h"
+
+namespace Photospp
+{
+
+PhotosHEPEVTParticle::~PhotosHEPEVTParticle()
+{
+  // Cleanup particles that do not belong to event
+  for(unsigned int i=0;i<cache.size();i++)
+    if(cache[i]->m_barcode<0)
+      delete cache[i];
+}
+
+PhotosHEPEVTParticle::PhotosHEPEVTParticle(int pdgid, int status, double px, double py, double pz, double e, double m, int ms, int me, int ds, int de){
+  m_px = px;
+  m_py = py;
+  m_pz = pz;
+  m_e  = e;
+  m_generated_mass = m;
+
+  m_pdgid  = pdgid;
+  m_status = status;
+
+  m_first_mother   = ms;
+  m_second_mother  = me;
+  m_daughter_start = ds;
+  m_daughter_end   = de;
+
+  m_barcode = -1;
+  m_event = NULL;
+}
+
+/** Add a new daughter to this particle */
+void PhotosHEPEVTParticle::addDaughter(PhotosParticle* daughter)
+{
+  if(!m_event) Log::Fatal("PhotosHEPEVTParticle::addDaughter - particle not in event record");
+
+  std::vector<PhotosParticle*> mothers = daughter->getMothers();
+  
+  mothers.push_back( (PhotosParticle*)this );
+
+  daughter->setMothers(mothers);
+  
+  int bc = daughter->getBarcode();
+
+  if(m_daughter_end < 0)
+  {
+    m_daughter_start = bc;
+    m_daughter_end   = bc;
+  }
+  // if it's in the middle of the event record
+  else if(m_daughter_end != bc-1)
+  {
+    PhotosHEPEVTParticle *newPart = m_event->getParticle(bc);
+    
+    // Move all particles one spot down the list, to make place for new particle
+    for(int i=bc-1;i>m_daughter_end;i--)
+    {
+      PhotosHEPEVTParticle *move = m_event->getParticle(i);
+      move->setBarcode(i+1);
+      m_event->setParticle(i+1,move);
+    }
+
+    m_daughter_end++;
+    newPart->setBarcode(m_daughter_end);
+    m_event->setParticle(m_daughter_end,newPart);
+    
+    // Now: correct all pointers before new particle
+    for(int i=0;i<m_daughter_end;i++)
+    {
+      PhotosHEPEVTParticle *check = m_event->getParticle(i);
+      int m = check->getDaughterRangeEnd();
+      if(m!=-1 && m>m_daughter_end)
+      {
+        check->setDaughterRangeEnd(m+1);
+        check->setDaughterRangeStart(check->getDaughterRangeStart()+1);
+      }
+    }
+  }
+  else m_daughter_end = bc;
+}
+
+void PhotosHEPEVTParticle::setMothers(vector<PhotosParticle*> mothers){
+
+  // If this particle has not yet been added to the event record
+  // then add it to the mothers' event record
+  if(m_barcode<0 && mothers.size()>0)
+  {
+    PhotosHEPEVTEvent *evt = ((PhotosHEPEVTParticle*)mothers[0])->m_event;
+    evt->addParticle(this);
+  }
+
+  if(mothers.size()>2) Log::Fatal("PhotosHEPEVTParticle::setMothers: HEPEVT does not allow more than two mothers!");
+  
+  if(mothers.size()>0) m_first_mother  = mothers[0]->getBarcode();
+  if(mothers.size()>1) m_second_mother = mothers[1]->getBarcode();
+}
+
+void PhotosHEPEVTParticle::setDaughters(vector<PhotosParticle*> daughters){
+
+  // This particle must be inside some event record to be able to add daughters
+  if(m_event==NULL) Log::Fatal("PhotosHEPEVTParticle::setDaughters: particle not inside event record.");
+
+  int beg = 65535, end = -1;
+
+  for(unsigned int i=0;i<daughters.size();i++)
+  {
+    int bc = daughters[i]->getBarcode();
+    if(bc<0) Log::Fatal("PhotosHEPEVTParticle::setDaughters: all daughters has to be in event record first");
+    if(bc<beg) beg = bc;
+    if(bc>end) end = bc;
+  }
+  if(end == -1) beg = -1;
+
+  m_daughter_start = beg;
+  m_daughter_end   = end;
+}
+
+std::vector<PhotosParticle*> PhotosHEPEVTParticle::getMothers(){
+
+  std::vector<PhotosParticle*> mothers;
+
+  PhotosParticle *p1 = NULL;
+  PhotosParticle *p2 = NULL;
+
+  // 21.XI.2013: Some generators set same mother ID in both indices if there is only one mother  
+  if(m_first_mother == m_second_mother) m_second_mother = -1;
+
+  if(m_first_mother>=0)  p1 = m_event->getParticle(m_first_mother);
+  if(m_second_mother>=0) p2 = m_event->getParticle(m_second_mother);
+
+  if(p1) mothers.push_back(p1);
+  if(p2) mothers.push_back(p2);
+
+  return mothers;
+}
+
+// WARNING: this method also corrects daughter indices 
+//          if such were not defined
+std::vector<PhotosParticle*> PhotosHEPEVTParticle::getDaughters(){
+
+  std::vector<PhotosParticle*> daughters;
+
+  if(!m_event) return daughters;
+
+  // Check if m_daughter_start and m_daughter_end are set
+  // If not - try to get list of daughters from event
+  if(m_daughter_end<0)
+  {
+    int min_d=65535, max_d=-1;
+    for(int i=0;i<m_event->getParticleCount();i++)
+    {
+      if(m_event->getParticle(i)->isDaughterOf(this))
+      {
+        if(i<min_d) min_d = i;
+        if(i>max_d) max_d = i;
+      }
+    }
+    if(max_d>=0)
+    {
+      m_daughter_start = min_d;
+      m_daughter_end   = max_d;
+      m_status         = 2;
+    }
+  }
+
+  // If m_daughter_end is still not set - there are no daughters
+  // Otherwsie - get daughters
+  if(m_daughter_end>=0)
+  {
+    for(int i=m_daughter_start;i<=m_daughter_end;i++)
+    {
+      PhotosParticle *p = m_event->getParticle(i);
+      if(p==NULL)
+      {
+        Log::Warning()<<"PhotosHEPEVTParticle::getDaughters(): No particle with index "<<i<<endl;
+        return daughters;
+      }
+
+      daughters.push_back(p);
+    }
+  }
+
+  return daughters;
+}
+
+std::vector<PhotosParticle*> PhotosHEPEVTParticle::getAllDecayProducts()
+{
+  std::vector<PhotosParticle*> list;
+
+  if(!hasDaughters()) // if this particle has no daughters
+    return list;
+
+  std::vector<PhotosParticle*> daughters = getDaughters();
+  
+  // copy daughters to list of all decay products
+  list.insert(list.end(),daughters.begin(),daughters.end());
+  
+  // Now, get all daughters recursively, without duplicates.
+  // That is, for each daughter:
+  // 1)  get list of her daughters
+  // 2)  for each particle on this list:
+  //  a) check if it is already on the list
+  //  b) if it's not, add her to the end of the list
+  for(unsigned int i=0;i<list.size();i++)
+  {
+    std::vector<PhotosParticle*> daughters2 = list[i]->getDaughters();
+
+    if(!list[i]->hasDaughters()) continue;
+    for(unsigned int j=0;j<daughters2.size();j++)
+    {
+      bool add=true;
+      for(unsigned int k=0;k<list.size();k++)
+        if( daughters2[j]->getBarcode() == list[k]->getBarcode() )
+        {
+          add=false;
+          break;
+        }
+
+      if(add) list.push_back(daughters2[j]);
+    }
+  }
+
+  return list;
+}
+
+bool PhotosHEPEVTParticle::checkMomentumConservation(){
+
+  if(!m_event)           return true;
+  if(m_daughter_end < 0) return true;
+
+  PhotosHEPEVTParticle *buf = m_event->getParticle(m_daughter_start);
+
+  int first_mother_idx  = buf->getFirstMotherIndex();
+  int second_mother_idx = buf->getSecondMotherIndex();
+
+  double px =0.0, py =0.0, pz =0.0, e =0.0;
+  double px2=0.0, py2=0.0, pz2=0.0, e2=0.0;
+
+  for(int i=m_daughter_start;i<=m_daughter_end;i++)
+  {
+    buf = m_event->getParticle(i);
+    px += buf->getPx();
+    py += buf->getPy();
+    pz += buf->getPz();
+    e  += buf->getE ();
+  }
+
+  if(first_mother_idx>=0)
+  {
+    buf = m_event->getParticle(first_mother_idx);
+    px2 += buf->getPx();
+    py2 += buf->getPy();
+    pz2 += buf->getPz();
+    e2  += buf->getE();
+  }
+  
+  if(second_mother_idx>=0)
+  {
+    buf = m_event->getParticle(second_mother_idx);
+    px2 += buf->getPx();
+    py2 += buf->getPy();
+    pz2 += buf->getPz();
+    e2  += buf->getE();
+  }
+  // 3-momentum  // test HepMC style
+  double dp = sqrt( (px-px2)*(px-px2) + (py-py2)*(py-py2) + (pz-pz2)*(pz-pz2) );
+  // virtuality test as well.
+  double m1 = sqrt( fabs( e*e   - px*px   - py*py   - pz*pz   ) );
+  double m2 = sqrt( fabs( e2*e2 - px2*px2 - py2*py2 - pz2*pz2 ) );
+
+  if( fabs(m1-m2) > 0.0001 || dp > 0.0001*(e+e2))
+  {
+    Log::RedirectOutput( Log::Warning()<<"Momentum not conserved in vertex: " );
+    if(first_mother_idx >=0) m_event->getParticle(first_mother_idx) ->print();
+    if(second_mother_idx>=0) m_event->getParticle(second_mother_idx)->print();
+    cout<<"  TO: "<<endl;
+    for(int i=m_daughter_start;i<=m_daughter_end;i++) m_event->getParticle(i)->print();
+    Log::RevertOutput();
+    return false;
+  }
+  
+  return true;
+}
+
+PhotosHEPEVTParticle * PhotosHEPEVTParticle::createNewParticle(
+                        int pdg_id, int status, double mass,
+                        double px, double py, double pz, double e){
+
+  // New particles created using this method are added to cache
+  // They will be deleted when this particle will be deleted
+
+  cache.push_back(new PhotosHEPEVTParticle(pdg_id,status,px,py,pz,e,mass,-1,-1,-1,-1));
+  return cache.back();
+}
+
+void PhotosHEPEVTParticle::createHistoryEntry()
+{
+  Log::Warning()<<"PhotosParticle::createHistoryEntry() not implemented for HEPEVT."<<endl;
+}
+
+void PhotosHEPEVTParticle::createSelfDecayVertex(PhotosParticle *out)
+{
+  Log::Warning()<<"PhotosHEPEVTParticle::createSelfDecayVertex() not implemented for HEPEVT."<<endl;
+}
+
+bool PhotosHEPEVTParticle::isDaughterOf(PhotosHEPEVTParticle *p)
+{
+  int bc = p->getBarcode();
+  if(bc==m_first_mother || bc==m_second_mother) return true;
+
+  return false;
+}
+
+bool PhotosHEPEVTParticle::isMotherOf  (PhotosHEPEVTParticle *p)
+{
+  int bc = p->getBarcode();
+  if(bc>=m_daughter_start && bc<=m_daughter_end) return true;
+
+  return false;
+}
+
+void PhotosHEPEVTParticle::print(){
+  char buf[256];
+  sprintf(buf,"P: (%2i) %6i %2i | %11.4e %11.4e %11.4e %11.4e | %11.4e | M: %2i %2i | D: %2i %2i\n",
+          m_barcode, m_pdgid, m_status, m_px, m_py, m_pz, m_e, m_generated_mass,
+          m_first_mother, m_second_mother,   m_daughter_start, m_daughter_end);
+
+  cout<<buf;
+}
+
+/******** Getter and Setter methods: ***********************/
+
+void PhotosHEPEVTParticle::setPdgID(int pdg_id){
+  m_pdgid = pdg_id;
+}
+
+void PhotosHEPEVTParticle::setStatus(int status){
+  m_status = status;
+}
+
+void PhotosHEPEVTParticle::setMass(double mass){
+  m_generated_mass = mass;
+}
+
+int PhotosHEPEVTParticle::getPdgID(){
+  return m_pdgid;
+}
+
+int PhotosHEPEVTParticle::getStatus(){
+  return m_status;
+}
+
+double PhotosHEPEVTParticle::getMass(){
+  return m_generated_mass;
+}
+
+inline double PhotosHEPEVTParticle::getPx(){
+  return m_px;
+}
+
+inline double PhotosHEPEVTParticle::getPy(){
+  return m_py;
+}
+
+double PhotosHEPEVTParticle::getPz(){
+  return m_pz;
+}
+
+double PhotosHEPEVTParticle::getE(){
+  return m_e;
+}
+
+void PhotosHEPEVTParticle::setPx(double px){
+  m_px = px;
+}
+
+void PhotosHEPEVTParticle::setPy(double py){
+  m_py = py;
+}
+
+
+void PhotosHEPEVTParticle::setPz(double pz){
+  m_pz = pz;
+}
+
+void PhotosHEPEVTParticle::setE(double e){
+  m_e = e;
+}
+
+int PhotosHEPEVTParticle::getBarcode(){
+  return m_barcode;
+}
+
+void PhotosHEPEVTParticle::setBarcode(int barcode){
+  m_barcode = barcode;
+}
+
+void PhotosHEPEVTParticle::setEvent(PhotosHEPEVTEvent *event){
+  m_event = event;
+}
+
+int PhotosHEPEVTParticle::getFirstMotherIndex(){
+  return m_first_mother;
+}
+
+int PhotosHEPEVTParticle::getSecondMotherIndex(){
+  return m_second_mother;
+}
+
+int PhotosHEPEVTParticle::getDaughterRangeStart(){
+  return m_daughter_start;
+}
+
+int PhotosHEPEVTParticle::getDaughterRangeEnd(){
+  return m_daughter_end;
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosHEPEVTParticle.h b/TEvtGen/Photos/PhotosHEPEVTParticle.h
new file mode 100644 (file)
index 0000000..8594a86
--- /dev/null
@@ -0,0 +1,192 @@
+#ifndef _PhotosHEPEVTParticle_h_included_
+#define _PhotosHEPEVTParticle_h_included_
+
+/**
+ * @class PhotosHEPEVTParticle
+ *
+ * @brief Single particle of HEPEVT event record
+ *
+ * This class implements the virtual methods of
+ * PhotosParticle. In this way it provides an
+ * interface between the generic PhotosParticle class
+ * and information stored in HEPEVT event record.
+ *
+ * @author Tomasz Przedzinski
+ * @date 24 November 2011
+ */
+
+#include <iostream>
+#include <vector>
+#include <cmath>
+#include <cstdio>
+
+#include "Photos.h"
+#include "PhotosParticle.h"
+#include "PhotosHEPEVTEvent.h"
+
+namespace Photospp
+{
+
+class PhotosHEPEVTEvent;
+
+class PhotosHEPEVTParticle: public PhotosParticle {
+
+ public:
+  /** Default destructor */
+  ~PhotosHEPEVTParticle();
+
+  /** Default constructor */
+  PhotosHEPEVTParticle(int pdgid, int status, double px, double py, double pz, double e, double m, int ms, int me, int ds, int de);
+
+  /** Add a new daughter to this particle */
+  void addDaughter(PhotosParticle* daughter);
+
+  /** Set the mothers of this particle via a vector of PhotosParticle*/
+  void setMothers(std::vector<PhotosParticle*> mothers);
+
+  /** Set the daughters of this particle via a vector of PhotosParticle*/
+  void setDaughters(std::vector<PhotosParticle*> daughters);
+
+  /** Returns the mothers of this particle via a vector of PhotosParticle */
+  std::vector<PhotosParticle*> getMothers();
+
+  /** Returns the daughters of this particle via a vector of PhotosParticle */
+  std::vector<PhotosParticle*> getDaughters();
+
+  /** Returns all particles in the decay tree of this particle
+      via a vector of PhotosParticle */
+  std::vector<PhotosParticle*> getAllDecayProducts();
+
+  /** Check that the 4 momentum in conserved in the decay of this particle */
+  bool checkMomentumConservation();
+
+  /** Creates a new particle of type PhotosHEPEVTParticle, with the given
+      properties. The new particle bares no relations to this 
+      particle, but `this particle' provides only a way of creating an instance of
+      this derived class. eg. createNewParticle() is used inside
+      filhep_() so that a PhotosHEPEVTParticle can be created without
+      the method having explicit knowledge of the PhotosHEPEVTParticle
+      class */
+  PhotosHEPEVTParticle * createNewParticle(int pdg_id, int status, double mass,
+                                          double px, double py,
+                                          double pz, double e);
+
+  /** Creating history entries not implemented in HEPEVT */
+  void createHistoryEntry();
+
+  /** Create a self-decay vertex for this particle
+      with 'out' being the outgoing particle in new vertex */
+  void createSelfDecayVertex(PhotosParticle *out);
+
+  /** Check if particle 'p' is daughter of this particle */
+  bool isDaughterOf(PhotosHEPEVTParticle *p);
+
+  /** Check if particle 'p' is mother of this particle */
+  bool isMotherOf  (PhotosHEPEVTParticle *p);
+
+  /** Print information on this particle into standard output */
+  void print();
+
+  /** Set the PDG ID code of this particle */
+  void setPdgID(int pdg_id);
+
+  /** Set the status of this particle */
+  void setStatus(int statu);
+
+  /** Set the mass of this particle */
+  void setMass(double mass);
+
+  /** Get the PDG ID code of this particle */
+  int getPdgID();
+
+  /** Get the status of this particle */
+  int getStatus();
+
+  /** Get the mass stored (i.e. not calculated from four vector) at generation step */
+  double getMass();
+
+  /** Returns the px component of the four vector*/
+  double getPx();
+
+  /** Returns the py component of the four vector */
+  double getPy();
+
+  /** Returns the pz component of the four vector */
+  double getPz();
+
+  /** Returns the energy component of the four vector */
+  double getE();
+
+  /** Set the px component of the four vector */
+  void setPx( double px );
+
+  /** Set the px component of the four vector */
+  void setPy( double py );
+
+  /** Set the pz component of the four vector */
+  void setPz( double pz );
+
+  /** Set the energy component of the four vector */
+  void setE( double e );
+
+  /** Get the barcode (position in list) of this particle */
+  int getBarcode();
+
+  /** Set barcode (position in  list) of this particle */
+  void setBarcode(int barcode);
+
+  /** Set event of this particle */
+  void setEvent(PhotosHEPEVTEvent *event);
+  
+  /** Get index of first mother */
+  int getFirstMotherIndex();
+  
+  /** Get index of second mother */
+  int getSecondMotherIndex();
+
+  /** Get index of first daughter */
+  int getDaughterRangeStart();
+
+  /** Get index of last daughter */
+  int getDaughterRangeEnd();  
+
+private:
+
+  /** Set index of first daughter */
+  void setDaughterRangeStart(int i) { m_daughter_start=i; }
+  
+  /** Set index of last daughter */
+  void setDaughterRangeEnd(int i)   { m_daughter_end  =i; }
+
+  /** Event from which this particle is taken */
+  PhotosHEPEVTEvent *m_event;
+
+  /** Position in the event record */
+  int m_barcode;
+
+  /** Indexes of mothers (-1 if do not have mothers) */
+  int m_first_mother, m_second_mother;
+
+  /** Range of indexes of daughters (-1 if do not have daughters) */
+  int m_daughter_start, m_daughter_end;
+
+  /** PDG ID */
+  int m_pdgid;
+
+  /** Status (stable, decayed) */
+  int m_status;
+
+  /** Momentum */
+  double m_px, m_py, m_pz, m_e;
+
+  /** Mass saved at generation step */
+  double m_generated_mass;
+
+  /** List of created particles - if they are not in the event, they
+      will be deleted when no longer needed */
+  vector<PhotosHEPEVTParticle*> cache;
+};
+
+} // namespace Photospp
+#endif
+
diff --git a/TEvtGen/Photos/PhotosHepMCEvent.cxx b/TEvtGen/Photos/PhotosHepMCEvent.cxx
new file mode 100644 (file)
index 0000000..b89bb51
--- /dev/null
@@ -0,0 +1,47 @@
+#include <vector>
+#include "PhotosHepMCParticle.h"
+#include "PhotosHepMCEvent.h"
+#include "Log.h"
+using namespace std;
+
+namespace Photospp
+{
+
+PhotosHepMCEvent::PhotosHepMCEvent(HepMC::GenEvent * event)
+{
+       m_event=event;
+       HepMC::GenEvent::particle_const_iterator part_itr = m_event->particles_begin();
+       for( ; part_itr!=m_event->particles_end(); part_itr++)
+       {
+               PhotosParticle *particle = new PhotosHepMCParticle(*part_itr);
+               particles.push_back(particle);
+       }
+}
+
+PhotosHepMCEvent::~PhotosHepMCEvent()
+{
+       while(particles.size())
+       {
+               PhotosParticle *p = particles.back();
+               particles.pop_back();
+               if(p) delete p;
+       }
+}
+
+HepMC::GenEvent * PhotosHepMCEvent::getEvent()
+{
+       return m_event;
+}
+
+void PhotosHepMCEvent::print()
+{
+       if(!m_event) return;
+       m_event->print();
+}
+
+vector<PhotosParticle*> PhotosHepMCEvent::getParticleList()
+{
+       return particles;
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosHepMCEvent.h b/TEvtGen/Photos/PhotosHepMCEvent.h
new file mode 100644 (file)
index 0000000..a74ad06
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef _PhotosHepMCEvent_h_included_
+#define _PhotosHepMCEvent_h_included_
+
+/**
+ * @class PhotosHepMCEvent
+ *
+ * @brief Interface to HepMC::GenEvent objects
+ *
+ * This class implements the virtual methods of
+ * PhotosEvent. In this way it provides an
+ * interface between the generic PhotosEvent class
+ * and a HepMC::GenEvent object.
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ *
+ * This code is licensed under GNU General Public Licence.
+ * For more informations, see: http://www.gnu.org/licenses/
+ */
+
+#include <vector>
+#include "HepMC/GenEvent.h"
+#include "PhotosEvent.h"
+#include "PhotosParticle.h"
+
+namespace Photospp
+{
+
+class PhotosHepMCEvent : public PhotosEvent
+{
+public:
+       ~PhotosHepMCEvent();
+
+       /** Constructor which keeps a pointer to the HepMC::GenEvent*/
+       PhotosHepMCEvent(HepMC::GenEvent * event);
+
+       /** Returns the HepMC::GenEvent */
+       HepMC::GenEvent * getEvent();
+
+       /** Returns the list of particles */
+       std::vector<PhotosParticle*> getParticleList();
+
+       /** Prints event summary */
+       void print();
+private:
+       /** The event */
+       HepMC::GenEvent * m_event;
+       /** Particle list */
+       std::vector<PhotosParticle *> particles;
+};
+
+} // namespace Photospp
+#endif  
diff --git a/TEvtGen/Photos/PhotosHepMCParticle.cxx b/TEvtGen/Photos/PhotosHepMCParticle.cxx
new file mode 100644 (file)
index 0000000..aceb29c
--- /dev/null
@@ -0,0 +1,409 @@
+#include "HepMC/GenEvent.h"
+#include "PhotosHepMCParticle.h"
+#include "Log.h"
+#include "Photos.h"
+
+namespace Photospp
+{
+
+PhotosHepMCParticle::PhotosHepMCParticle(){
+  m_particle = new HepMC::GenParticle();
+}
+
+PhotosHepMCParticle::PhotosHepMCParticle(int pdg_id, int status, double mass){
+  m_particle = new HepMC::GenParticle();
+  m_particle->set_pdg_id(pdg_id);
+  m_particle->set_status(status);
+  m_particle->set_generated_mass(mass);
+}
+
+PhotosHepMCParticle::PhotosHepMCParticle(HepMC::GenParticle * particle){
+  m_particle = particle;
+}
+
+PhotosHepMCParticle::~PhotosHepMCParticle(){
+  clear(m_mothers);
+  clear(m_daughters);
+  //  clear(m_created_particles);
+
+  // Delete HepMC particle if it's not attached to any vertex
+  if( m_particle &&
+     !m_particle->production_vertex() &&
+     !m_particle->end_vertex()) delete m_particle;
+}
+
+//delete the TauolaHepMCParticle objects
+void PhotosHepMCParticle::clear(std::vector<PhotosParticle*> v){
+  while(v.size()!=0){
+    PhotosParticle * temp = v.back();
+    v.pop_back();
+    delete temp;
+  }
+}
+
+HepMC::GenParticle * PhotosHepMCParticle::getHepMC(){
+  return m_particle;
+}
+
+void PhotosHepMCParticle::setMothers(vector<PhotosParticle*> mothers){
+
+  /******** Deal with mothers ***********/
+
+  clear(m_mothers);
+
+  //If there are mothers
+  if(mothers.size()>0){
+
+    HepMC::GenParticle * part;
+    part=dynamic_cast<PhotosHepMCParticle*>(mothers.at(0))->getHepMC();
+
+    //Use end vertex of first mother as production vertex for particle
+    HepMC::GenVertex * production_vertex = part->end_vertex();
+    HepMC::GenVertex * orig_production_vertex = production_vertex;
+
+    if(!production_vertex){ //if it does not exist create it
+      production_vertex = new HepMC::GenVertex();
+      part->parent_event()->add_vertex(production_vertex);
+    }
+
+    //Loop over all mothers to check that the end points to the right place
+    vector<PhotosParticle*>::iterator mother_itr;
+    for(mother_itr = mothers.begin(); mother_itr != mothers.end();
+        mother_itr++){
+
+      HepMC::GenParticle * moth;
+      moth = dynamic_cast<PhotosHepMCParticle*>(*mother_itr)->getHepMC();
+
+      if(moth->end_vertex()!=orig_production_vertex)
+        Log::Fatal("PhotosHepMCParticle::setMothers(): Mother production_vertices point to difference places. Can not override. Please delete vertices first.",1);
+      else
+        production_vertex->add_particle_in(moth);
+
+      //update status info
+      if(moth->status()==PhotosParticle::STABLE)
+        moth->set_status(PhotosParticle::DECAYED);
+    }
+    production_vertex->add_particle_out(m_particle);
+  }
+}
+
+
+
+void PhotosHepMCParticle::addDaughter(PhotosParticle* daughter){
+
+  //add to this classes internal list as well.
+  m_daughters.push_back(daughter);
+
+  //this assumes there is already an end vertex for the particle
+
+  if(!m_particle->end_vertex())
+    Log::Fatal("PhotosHepMCParticle::addDaughter(): This method assumes an end_vertex exists. Maybe you really want to use setDaughters.",2);
+
+  HepMC::GenParticle * daugh = (dynamic_cast<PhotosHepMCParticle*>(daughter))->getHepMC();
+  m_particle->end_vertex()->add_particle_out(daugh);
+  
+}
+
+void PhotosHepMCParticle::setDaughters(vector<PhotosParticle*> daughters){
+
+  if(!m_particle->parent_event())
+    Log::Fatal("PhotosHepMCParticle::setDaughters(): New particle needs the event set before it's daughters can be added",3);
+
+  clear(m_daughters);
+
+  //If there are daughters
+  if(daughters.size()>0){
+
+    //Use production vertex of first daughter as end vertex for particle
+    HepMC::GenParticle * first_daughter;
+    first_daughter = (dynamic_cast<PhotosHepMCParticle*>(daughters.at(0)))->getHepMC();
+
+    HepMC::GenVertex * end_vertex;
+    end_vertex=first_daughter->production_vertex();
+    HepMC::GenVertex * orig_end_vertex = end_vertex;
+
+    if(!end_vertex){ //if it does not exist create it
+      end_vertex = new HepMC::GenVertex();
+      m_particle->parent_event()->add_vertex(end_vertex);
+    }
+
+    //Loop over all daughters to check that the end points to the right place
+    vector<PhotosParticle*>::iterator daughter_itr;
+    for(daughter_itr = daughters.begin(); daughter_itr != daughters.end();
+        daughter_itr++){
+
+      HepMC::GenParticle * daug;
+      daug = dynamic_cast<PhotosHepMCParticle*>(*daughter_itr)->getHepMC();
+
+
+      if(daug->production_vertex()!=orig_end_vertex)
+        Log::Fatal("PhotosHepMCParticle::setDaughters(): Daughter production_vertices point to difference places. Can not override. Please delete vertices first.",4);
+      else
+        end_vertex->add_particle_out(daug);
+    }
+    end_vertex->add_particle_in(m_particle);
+  }
+
+}
+
+std::vector<PhotosParticle*> PhotosHepMCParticle::getMothers(){
+
+  if(m_mothers.size()==0&&m_particle->production_vertex()){
+
+    HepMC::GenVertex::particles_in_const_iterator pcle_itr;
+    pcle_itr=m_particle->production_vertex()->particles_in_const_begin();
+    
+    HepMC::GenVertex::particles_in_const_iterator pcle_itr_end;
+    pcle_itr_end=m_particle->production_vertex()->particles_in_const_end();
+    
+    for(;pcle_itr != pcle_itr_end; pcle_itr++){
+      m_mothers.push_back(new PhotosHepMCParticle(*pcle_itr));
+    }
+  }
+  return m_mothers;
+}
+
+std::vector<PhotosParticle*> PhotosHepMCParticle::getDaughters(){
+
+  if(m_daughters.size()==0&&m_particle->end_vertex()){
+    HepMC::GenVertex::particles_out_const_iterator pcle_itr;
+    pcle_itr=m_particle->end_vertex()->particles_out_const_begin();
+    
+    HepMC::GenVertex::particles_out_const_iterator pcle_itr_end;
+    pcle_itr_end=m_particle->end_vertex()->particles_out_const_end();
+    
+    for(;pcle_itr != pcle_itr_end; pcle_itr++){
+
+      // ommit particles if their status code is ignored by Photos
+      if( Photos::isStatusCodeIgnored( (*pcle_itr)->status() ) ) continue;
+
+      m_daughters.push_back(new PhotosHepMCParticle(*pcle_itr));
+    }
+  }
+  return m_daughters;
+
+}
+
+std::vector<PhotosParticle*> PhotosHepMCParticle::getAllDecayProducts(){
+
+  m_decay_products.clear();
+
+  if(!hasDaughters()) // if this particle has no daughters
+    return m_decay_products;
+
+  std::vector<PhotosParticle*> daughters = getDaughters();
+  
+  // copy daughters to list of all decay products
+  m_decay_products.insert(m_decay_products.end(),daughters.begin(),daughters.end());
+  
+  // Now, get all daughters recursively, without duplicates.
+  // That is, for each daughter:
+  // 1)  get list of her daughters
+  // 2)  for each particle on this list:
+  //  a) check if it is already on the list
+  //  b) if it's not, add her to the end of the list
+  for(unsigned int i=0;i<m_decay_products.size();i++)
+  {
+    std::vector<PhotosParticle*> daughters2 = m_decay_products[i]->getDaughters();
+
+    if(!m_decay_products[i]->hasDaughters()) continue;
+    for(unsigned int j=0;j<daughters2.size();j++)
+    {
+      bool add=true;
+      for(unsigned int k=0;k<m_decay_products.size();k++)
+        if( daughters2[j]->getBarcode() == m_decay_products[k]->getBarcode() )
+        {
+          add=false;
+          break;
+        }
+
+      if(add) m_decay_products.push_back(daughters2[j]);
+    }
+  }
+
+  return m_decay_products;
+}
+
+bool PhotosHepMCParticle::checkMomentumConservation(){
+
+  if(!m_particle->end_vertex()) return true;
+  
+  // HepMC version of check_momentum_conservation
+  // Ommitting history entries (status == 3)
+
+  double sumpx = 0, sumpy = 0, sumpz = 0, sume = 0;
+  for( HepMC::GenVertex::particles_in_const_iterator part1 = m_particle->end_vertex()->particles_in_const_begin();
+       part1 != m_particle->end_vertex()->particles_in_const_end(); part1++ ){
+
+    if( Photos::isStatusCodeIgnored((*part1)->status()) ) continue;
+
+    sumpx += (*part1)->momentum().px();
+    sumpy += (*part1)->momentum().py();
+    sumpz += (*part1)->momentum().pz();
+    sume  += (*part1)->momentum().e();
+  }
+  
+  for( HepMC::GenVertex::particles_out_const_iterator part2 = m_particle->end_vertex()->particles_out_const_begin();
+       part2 != m_particle->end_vertex()->particles_out_const_end(); part2++ ){
+
+    if( Photos::isStatusCodeIgnored((*part2)->status()) ) continue;
+
+    sumpx -= (*part2)->momentum().px();
+    sumpy -= (*part2)->momentum().py();
+    sumpz -= (*part2)->momentum().pz();
+    sume  -= (*part2)->momentum().e();
+  }
+
+  if( sqrt( sumpx*sumpx + sumpy*sumpy + sumpz*sumpz + sume*sume) > Photos::momentum_conservation_threshold ) {
+    Log::Warning()<<"Momentum not conserved in the vertex:"<<endl;
+    Log::RedirectOutput(Log::Warning(false));
+    m_particle->end_vertex()->print();
+    Log::RevertOutput();
+    return false;
+  }
+  
+  return true;
+}
+
+void PhotosHepMCParticle::setPdgID(int pdg_id){
+  m_particle->set_pdg_id(pdg_id);
+}
+
+void PhotosHepMCParticle::setMass(double mass){
+  m_particle->set_generated_mass(mass);
+}
+
+void PhotosHepMCParticle::setStatus(int status){
+  m_particle->set_status(status);
+}
+
+int PhotosHepMCParticle::getPdgID(){
+  return m_particle->pdg_id();
+}
+
+int PhotosHepMCParticle::getStatus(){
+  return m_particle->status();
+}
+
+int PhotosHepMCParticle::getBarcode(){
+  return m_particle->barcode();
+}
+
+
+PhotosHepMCParticle * PhotosHepMCParticle::createNewParticle(
+                        int pdg_id, int status, double mass,
+                        double px, double py, double pz, double e){
+
+  PhotosHepMCParticle * new_particle = new PhotosHepMCParticle();
+  new_particle->getHepMC()->set_pdg_id(pdg_id);
+  new_particle->getHepMC()->set_status(status);
+  new_particle->getHepMC()->set_generated_mass(mass);
+
+  HepMC::FourVector momentum(px,py,pz,e);
+  new_particle->getHepMC()->set_momentum(momentum);
+
+  m_created_particles.push_back(new_particle);
+  return new_particle;
+}
+
+void PhotosHepMCParticle::createHistoryEntry(){
+
+  if(!m_particle->production_vertex())
+  {
+    Log::Warning()<<"PhotosHepMCParticle::createHistoryEntry(): particle without production vertex."<<endl;
+    return;
+  }
+  
+  HepMC::GenParticle *part = new HepMC::GenParticle(*m_particle);
+  part->set_status(Photos::historyEntriesStatus);
+  m_particle->production_vertex()->add_particle_out(part);
+}
+
+void PhotosHepMCParticle::createSelfDecayVertex(PhotosParticle *out)
+{
+  if(m_particle->end_vertex())
+  {
+    Log::Error()<<"PhotosHepMCParticle::createSelfDecayVertex: particle already has end vertex!"<<endl;
+    return;
+  }
+
+  if(getHepMC()->parent_event()==NULL)
+  {
+    Log::Error()<<"PhotosHepMCParticle::createSelfDecayVertex: particle not in the HepMC event!"<<endl;
+    return;
+  }
+
+  // Add new vertex and new particle to HepMC
+  HepMC::GenParticle *outgoing = new HepMC::GenParticle( *(dynamic_cast<PhotosHepMCParticle*>(out)->m_particle) );
+  HepMC::GenVertex   *v        = new HepMC::GenVertex();
+  
+  // Copy vertex position from parent vertex
+  v->set_position( m_particle->production_vertex()->position() );
+  
+  v->add_particle_in (m_particle);
+  v->add_particle_out(outgoing);
+  
+  getHepMC()->parent_event()->add_vertex(v);
+  
+  // If this particle was stable, set its status to 2
+  if(getStatus()==1) setStatus(2);
+}
+
+void PhotosHepMCParticle::print(){
+  m_particle->print();
+}
+
+
+/******** Getter and Setter methods: ***********************/
+
+inline double PhotosHepMCParticle::getPx(){
+  return m_particle->momentum().px();
+}
+
+inline double PhotosHepMCParticle::getPy(){
+  return m_particle->momentum().py();
+}
+
+double PhotosHepMCParticle::getPz(){
+  return m_particle->momentum().pz();
+}
+
+double PhotosHepMCParticle::getE(){
+  return m_particle->momentum().e();
+}
+
+void PhotosHepMCParticle::setPx(double px){
+  //make new momentum as something is wrong with
+  //the HepMC momentum setters
+
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setPx(px);
+  m_particle->set_momentum(momentum);
+}
+
+void PhotosHepMCParticle::setPy(double py){
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setPy(py);
+  m_particle->set_momentum(momentum);
+}
+
+
+void PhotosHepMCParticle::setPz(double pz){
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setPz(pz);
+  m_particle->set_momentum(momentum);
+}
+
+void PhotosHepMCParticle::setE(double e){
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setE(e);
+  m_particle->set_momentum(momentum);
+}
+
+double PhotosHepMCParticle::getMass()
+{
+       return m_particle->generated_mass();
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosHepMCParticle.h b/TEvtGen/Photos/PhotosHepMCParticle.h
new file mode 100644 (file)
index 0000000..ad1e655
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _PhotosHepMCParticle_h_included_
+#define _PhotosHepMCParticle_h_included_
+
+/**
+ * @class PhotosHepMCParticle
+ *
+ * @brief Interface to HepMC::GenParticle objects
+ *
+ * This class implements the virtual methods of
+ * PhotosParticle. In this way it provides an
+ * interface between the generic PhotosParticle class
+ * and a HepMC::GenParticle object.
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ *
+ * This code is licensed under GNU General Public Licence.
+ * For more informations, see: http://www.gnu.org/licenses/
+ */
+
+#include <vector>
+
+#include "HepMC/GenParticle.h"
+#include "PhotosParticle.h"
+
+using namespace std;
+
+namespace Photospp
+{
+
+class PhotosHepMCParticle: public PhotosParticle{
+
+ public:
+  /** General constructor */
+  PhotosHepMCParticle();
+
+  /** Constructor which keeps a pointer to the HepMC::GenParticle*/
+  PhotosHepMCParticle(HepMC::GenParticle * particle); 
+
+  /** Constructor which creates a new HepMC::GenParticle and
+       sets the properties pdg_id, statu and mass. */
+  PhotosHepMCParticle(int pdg_id, int status, double mass);
+
+  /** Destructor */
+  ~PhotosHepMCParticle();
+  
+  /** return the HepMC::GenParticle */
+  HepMC::GenParticle * getHepMC();
+
+  /** Set the mothers of this particle via a vector of PhotosParticle*/
+  void setMothers(std::vector<PhotosParticle*> mothers);
+
+  /** Set the daughters of this particle via a vector of PhotosParticle*/
+  void setDaughters(std::vector<PhotosParticle*> daughters);
+
+  /** Add a new daughter to the end vertex of this particle */ 
+  void addDaughter(PhotosParticle* daughter);
+
+  /** Returns the mothers of this particle via a vector of PhotosParticle */
+  std::vector<PhotosParticle*> getMothers();
+
+  /** Returns the daughters of this particle via a vector of PhotosParticle
+      IMPORTANT: this method will remeber list from the first call. Particles
+      (e.g. photons) added later will be ignored */
+  std::vector<PhotosParticle*> getDaughters();
+
+  /** Returns all particles in the decay tree of this particle
+      via a vector of PhotosParticle */
+  std::vector<PhotosParticle*> getAllDecayProducts();
+
+  /** Set the PDG ID code of this particle */
+  void setPdgID(int pdg_id);
+
+  /** Set the status of this particle */
+  void setStatus(int statu);
+
+  /** Set the mass of this particle */
+  void setMass(double mass);
+
+  /** Get the PDG ID code of this particle */
+  int getPdgID();
+
+  /** Get the status of this particle */
+  int getStatus();
+
+  /** Get the barcode of this particle */
+  int getBarcode();
+
+  /** check that the 4 momentum in conserved at the vertices producing
+      and ending this particle */
+  bool checkMomentumConservation();
+
+  /** Create a new particle of type PhotosHepMCParticle, with the given
+      properties. The new particle bares no relations to this
+      particle, but it provides a way of creating a instance of
+      this derived class. eg. createNewParticle() is used inside
+      filhep_() so that a PhotosHepMCParticle can be created without
+      the method having explicit knowledge of the PhotosHepMCParticle 
+      class */
+  PhotosHepMCParticle * createNewParticle(int pdg_id, int status, double mass,
+                                      double px, double py,
+                                      double pz, double e);
+
+  /** Create history entry for HepMC event record.
+      Creates copy of this particle with status = 3 */
+  void createHistoryEntry();
+
+  /** Create a self-decay vertex for this particle
+      with 'out' being the outgoing particle in new vertex */
+  void createSelfDecayVertex(PhotosParticle *out);
+
+  /** Print some information about this particle to standard output */
+  void print();
+
+  /** Returns the px component of the four vector*/
+  double getPx();
+
+  /** Returns the py component of the four vector */
+  double getPy();
+
+  /** Returns the pz component of the four vector */
+  double getPz();
+
+  /** Returns the energy component of the four vector */
+  double getE();
+
+  /** Returns the mass taken from event record */
+  double getMass();
+
+  /** Set the px component of the four vector */
+  void setPx( double px );
+
+  /** Set the px component of the four vector */
+  void setPy( double py );
+
+  /** Set the pz component of the four vector */
+  void setPz( double pz );
+
+  /** Set the energy component of the four vector */
+  void setE( double e );
+
+ private:
+  /** Internal function used to clear particles from the vector */
+  void clear(std::vector<PhotosParticle*> v);
+
+  /** A pointer to the HepMC::GenParticle particle */
+  HepMC::GenParticle * m_particle;
+
+  /** A vector of this particles mothers */
+  std::vector<PhotosParticle*> m_mothers;
+
+  /** A vector of this particles daughters */
+  std::vector<PhotosParticle*> m_daughters;
+
+  /** A vector of all decay products of this particle */
+  std::vector<PhotosParticle*> m_decay_products;
+
+  /** list to keep track of new particles which have been
+      created from this one, so we can call their destructor later */
+  std::vector<PhotosParticle*> m_created_particles;
+
+};
+
+} // namespace Photospp
+#endif  
+
diff --git a/TEvtGen/Photos/PhotosParticle.cxx b/TEvtGen/Photos/PhotosParticle.cxx
new file mode 100644 (file)
index 0000000..5ea6190
--- /dev/null
@@ -0,0 +1,222 @@
+#include <vector>
+#include <math.h>
+#include "PhotosParticle.h"
+#include "Log.h"
+using std::vector;
+
+namespace Photospp
+{
+
+bool PhotosParticle::hasDaughters()
+{
+       if(getDaughters().size()==0) return false;
+       else                         return true;
+}
+
+PhotosParticle * PhotosParticle::findLastSelf()
+{
+       vector<PhotosParticle*> daughters = getDaughters();
+       vector<PhotosParticle*>::iterator pcl_itr = daughters.begin();
+
+       //get all daughters and look for stable with same pgd id
+       for(;pcl_itr != daughters.end();pcl_itr++)
+       {
+               if((*pcl_itr)->getPdgID()==this->getPdgID())
+               return (*pcl_itr)->findLastSelf();
+       }
+
+       return this;
+}
+
+vector<PhotosParticle*> PhotosParticle::findProductionMothers()
+{
+       vector<PhotosParticle*> mothers = getMothers();
+       vector<PhotosParticle*>::iterator pcl_itr = mothers.begin();
+
+       //get all mothers and check none have pdg id of this one
+       for(;pcl_itr != mothers.end();pcl_itr++)
+       {
+               if((*pcl_itr)->getPdgID()==this->getPdgID())
+               return (*pcl_itr)->findProductionMothers();
+       }
+       return mothers;
+}
+
+vector<PhotosParticle *> PhotosParticle::getDecayTree()
+{
+       vector<PhotosParticle *> particles;
+       particles.push_back(this);
+       vector<PhotosParticle *> daughters = getDaughters();
+       for(int i=0;i<(int)daughters.size();i++)
+       {
+               // Check if we are the first mother of each daughters
+               // If not - skip this daughter
+               PhotosParticle *p = daughters.at(i);
+               vector<PhotosParticle *> mothers = p->getMothers();
+               if(mothers.size()>1 && mothers.at(0)->getBarcode()!=getBarcode()) continue;
+               vector<PhotosParticle *> tree = p->getDecayTree();
+               particles.insert(particles.end(),tree.begin(),tree.end());
+       }
+       return particles;
+}
+
+void PhotosParticle::boostDaughtersFromRestFrame(PhotosParticle * tau_momentum)
+{
+       if(!hasDaughters()) //if there are no daughters
+       return;
+
+       // get all daughters, granddaughters, etc. then rotate and boost them
+       vector<PhotosParticle*> list = getAllDecayProducts();
+       vector<PhotosParticle*>::iterator pcl_itr = list.begin();
+
+       for(;pcl_itr != list.end();pcl_itr++)
+       {
+               (*pcl_itr)->boostFromRestFrame(tau_momentum);
+       }
+
+       //checkMomentumConservation();
+}
+
+void PhotosParticle::boostDaughtersToRestFrame(PhotosParticle * tau_momentum)
+{
+       if(!hasDaughters()) //if there are no daughters
+       return;
+
+       // get all daughters, granddaughters, etc. then rotate and boost them
+       vector<PhotosParticle*> list = getAllDecayProducts();
+       vector<PhotosParticle*>::iterator pcl_itr = list.begin();
+
+       for(;pcl_itr != list.end();pcl_itr++)
+       {
+               (*pcl_itr)->boostToRestFrame(tau_momentum);
+       }
+
+       //checkMomentumConservation();
+}
+
+
+void PhotosParticle::boostToRestFrame(PhotosParticle * tau_momentum)
+{
+       double theta = tau_momentum->getRotationAngle(Y_AXIS);
+       tau_momentum->rotate(Y_AXIS,theta);
+
+       double phi = tau_momentum->getRotationAngle(X_AXIS);
+       tau_momentum->rotate(Y_AXIS,-theta);
+
+       //Now rotate coordinates to get boost in Z direction.
+       rotate(Y_AXIS,theta);
+       rotate(X_AXIS,phi);
+       boostAlongZ(-1*tau_momentum->getP(),tau_momentum->getE());
+       rotate(X_AXIS,-phi);
+       rotate(Y_AXIS,-theta);
+}
+
+void PhotosParticle::boostFromRestFrame(PhotosParticle * tau_momentum)
+{
+       //get the rotation angles
+       //and boost z
+
+       double theta = tau_momentum->getRotationAngle(Y_AXIS);
+       tau_momentum->rotate(Y_AXIS,theta);
+
+       double phi = tau_momentum->getRotationAngle(X_AXIS);
+       tau_momentum->rotate(Y_AXIS,-theta);
+
+       //Now rotate coordinates to get boost in Z direction.
+       rotate(Y_AXIS,theta);
+       rotate(X_AXIS,phi);
+       boostAlongZ(tau_momentum->getP(),tau_momentum->getE());
+       rotate(X_AXIS,-phi);
+       rotate(Y_AXIS,-theta);
+}
+
+/** Get the angle needed to rotate the 4 momentum vector so that
+    the x (y) component disapears. (and the Z component is > 0) */
+double PhotosParticle::getRotationAngle(int axis, int second_axis)
+{
+       /**if(getP(axis)==0){
+       if(getPz()>0)
+       return 0; //no rotaion required
+       else
+       return M_PI;
+       }**/
+       if(getP(second_axis)==0)
+       {
+               if(getP(axis)>0) return -M_PI/2.0;
+               else             return  M_PI/2.0;
+       }
+       if(getP(second_axis)>0) return     -atan(getP(axis)/getP(second_axis));
+       else                    return M_PI-atan(getP(axis)/getP(second_axis));
+
+}
+
+/** Boost this vector along the Z direction.
+    Assume no momentum components in the X or Y directions. */
+void PhotosParticle::boostAlongZ(double boost_pz, double boost_e)
+{
+       // Boost along the Z axis
+       double m_tau=sqrt(boost_e*boost_e-boost_pz*boost_pz);
+
+       double p=getPz();
+       double e=getE();
+
+       setPz((boost_e*p + boost_pz*e)/m_tau);
+       setE((boost_pz*p + boost_e*e )/m_tau);
+}
+
+/** Rotation around an axis X or Y */
+void PhotosParticle::rotate(int axis,double theta, int second_axis)
+{
+       double temp_px=getP(axis);
+       double temp_pz=getP(second_axis);
+       setP(axis,cos(theta)*temp_px + sin(theta)*temp_pz);
+       setP(second_axis,-sin(theta)*temp_px + cos(theta)*temp_pz);
+}
+
+void PhotosParticle::rotateDaughters(int axis,double theta, int second_axis)
+{
+       if(!hasDaughters()) //if there are no daughters
+       return;
+
+       vector<PhotosParticle*> daughters = getDaughters();
+       vector<PhotosParticle*>::iterator pcl_itr = daughters.begin();
+
+       //get all daughters then rotate and boost them.
+       for(;pcl_itr != daughters.end();pcl_itr++)
+       {
+               (*pcl_itr)->rotate(axis,theta,second_axis);
+               (*pcl_itr)->rotateDaughters(axis,theta,second_axis);
+       }
+       //checkMomentumConservation();
+}
+
+double PhotosParticle::getVirtuality()
+{
+       double e_sq=getE()*getE();
+       double p_sq=getP()*getP();
+
+       if(e_sq>p_sq) return    sqrt(e_sq-p_sq);
+       else          return -1*sqrt(p_sq-e_sq); //if it's negative
+}
+
+double PhotosParticle::getP()
+{
+       return sqrt(getPx()*getPx()+getPy()*getPy()+getPz()*getPz());
+}
+
+double PhotosParticle::getP(int axis)
+{
+       if(axis==X_AXIS) return getPx();
+       if(axis==Y_AXIS) return getPy();
+       if(axis==Z_AXIS) return getPz();
+       return 0;
+}
+
+void PhotosParticle::setP(int axis, double p_component)
+{
+       if(axis==X_AXIS) setPx(p_component);
+       if(axis==Y_AXIS) setPy(p_component);
+       if(axis==Z_AXIS) setPz(p_component);
+}
+
+} // namespace Photospp
diff --git a/TEvtGen/Photos/PhotosParticle.h b/TEvtGen/Photos/PhotosParticle.h
new file mode 100644 (file)
index 0000000..c322fef
--- /dev/null
@@ -0,0 +1,283 @@
+#ifndef _PhotosParticle_h_included_
+#define _PhotosParticle_h_included_
+
+/**
+ * @class PhotosParticle
+ *
+ * @brief Abstract base class for particle in the event. This class also
+ * handles boosting.
+ *
+ * PhotosParticle is a Photos representation of a particle. It has virtual
+ * getter and setter methods that need to be implemented by a derived class.
+ * An example of this is PhotosHepMCParticle. In this way it provides an
+ * interface to the information in the Event Record.
+ * 
+ * @author Nadia Davidson
+ * @date 16 June 2008
+ */
+
+#include <vector>
+#include "Photos.h"
+
+namespace Photospp
+{
+
+class PhotosParticle
+{
+public:
+       /** Stable particle status */
+       static const int STABLE=1;
+
+       /** Decayed particle status */
+       static const int DECAYED=2;
+
+       /** History particle status */
+       static const int HISTORY=3;
+
+       /** X Axis */
+       static const int X_AXIS=1;
+
+       /** Y Axis */
+       static const int Y_AXIS=2;
+
+       /** Z Axis */
+       static const int Z_AXIS=3;
+
+       /** Z0 particle */
+       static const int Z0 = 23;
+
+       /** H particle */
+       static const int HIGGS = 25;
+
+       /** H0 particle */
+       static const int HIGGS_H = 35;
+
+       /** A0 particle */
+       static const int HIGGS_A = 36;
+
+       /** H+ particle */
+       static const int HIGGS_PLUS = 37;
+
+       /** H- particle */
+       static const int HIGGS_MINUS = -37;
+
+       /** W+ particle */
+       static const int W_PLUS = 24;
+
+       /** W- particle */
+       static const int W_MINUS = -24;
+
+       /** photon */
+       static const int GAMMA = 22;
+
+       /** tau+ particle */
+       static const int TAU_PLUS = -15;
+
+       /** tau- particle */
+       static const int TAU_MINUS = 15;
+
+       /** tau neutrino particle */
+       static const int TAU_NEUTRINO = 16;
+
+       /** tau antineutrino particle */
+       static const int TAU_ANTINEUTRINO = -16;
+
+       /** muon+ particle */
+       static const int MUON_PLUS = -13;
+
+       /** muon- particle */
+       static const int MUON_MINUS = 13;
+
+       /** muon neutrino particle */
+       static const int MUON_NEUTRINO = 14;
+
+       /** muon antineutrino particle */
+       static const int MUON_ANTINEUTRINO = -14;
+
+       /** e+ particle */
+       static const int POSITRON = -11;
+
+       /** e- particle */
+       static const int ELECTRON = 11;
+
+       /** e neutrino particle */
+       static const int ELECTRON_NEUTRINO = 12;
+
+       /** e antineutrino particle */
+       static const int ELECTRON_ANTINEUTRINO = -12;
+
+       /** up quark */
+       static const int UP = 2;
+
+       /** anti-up quark */
+       static const int ANTIUP = -2;
+
+       /** down quark */
+       static const int DOWN = 1;
+
+       /** anti-down quark */
+       static const int ANTIDOWN = -1;
+
+       /** All other particle types*/
+       static const int OTHER = 0;
+
+public:
+       virtual ~PhotosParticle(){};
+
+       /** Return whether the particle has any chidren */
+       bool hasDaughters();
+
+       /** Traverse the event structure and find the final version
+           of this particle which does not have a particle of it's own type
+           as it's daughter. eg. Generally the final stable copy */
+       PhotosParticle * findLastSelf();
+
+       /** Traverse the event structure and find the first set of mothers
+           which are not of the same type as this particle. */
+       std::vector<PhotosParticle *> findProductionMothers();
+
+       /** Return whole decay tree starting from this particle */
+       std::vector<PhotosParticle *> getDecayTree();
+
+       /** Transform this particles four momentum from the lab frome
+           into the rest frame of the paramter PhotosParticle. */
+       void boostToRestFrame(PhotosParticle * boost);
+
+       /** Transform the four momentum of all the daughters recursively
+           into the frame of the "particle" PhotosParticle. */
+       void boostDaughtersToRestFrame(PhotosParticle * boost);
+
+       /** Transform this particles four momentum from the rest frame of
+           the paramter PhotosParticle, back into the lab frame. */
+       void boostFromRestFrame(PhotosParticle * boost);
+
+       /** Transform this particles four momentum from the lab frame to
+           the rest frame of the parameter PhotosParticle. */
+       void boostDaughtersFromRestFrame(PhotosParticle * boost);
+
+       /** Do a Lorenz transformation along the Z axis. */
+       void boostAlongZ(double pz, double e);
+
+       /** rotate this particles 4-momentum by an angle phi from
+           the axisis "axis" towards the axis "second_axis". */
+       void rotate(int axis, double phi, int second_axis=Z_AXIS);
+
+       /** rotate 4-momentum of daughters of this particle by an angle phi from
+           the axisis "axis" towards the axis "second_axis". */
+       void rotateDaughters(int axis, double phi, int second_axis=Z_AXIS);
+
+       /** Returns the angle around the axis "axis" needed to rotate
+           the four momenum is such a way that the non-Z component
+           disappears and Z>0. This is used to in rotating the coordinate
+           system into a frame with only a Z component before calling
+           boostAlongZ(). */
+       double getRotationAngle(int axis, int second_axis=Z_AXIS);
+
+       /** Get scalar momentum */
+       double getP();
+
+       /** Get momentum component in the direction of "axis" (x,y,z) */
+       double getP(int axis);
+
+       /** Set momentum component in the direction of "axis" (x,y,z) */
+       void  setP(int axis, double p_component);
+
+       /** Get sqrt(e^2-p^2) */
+       virtual double getVirtuality();
+
+public:
+       /** check that the 4 momentum in conserved at the vertices producing
+           and ending this particle */
+       virtual bool checkMomentumConservation()=0;
+
+       /** Returns the px component of the four vector */
+       virtual double getPx()=0;
+
+       /** Returns the py component of the four vector */
+       virtual double getPy()=0;
+
+       /** Returns the pz component of the four vector */
+       virtual double getPz()=0;
+
+       /** Returns the energy component of the four vector */
+       virtual double getE()=0;
+       
+       /** Get the invariant mass from the event record*/
+       virtual double getMass() = 0;
+
+       /** Set the px component of the four vector */
+       virtual void setPx( double px )=0;
+
+       /** Set the px component of the four vector */
+       virtual void setPy( double py )=0;
+
+       /** Set the pz component of the four vector */
+       virtual void setPz( double pz )=0;
+
+       /** Set the energy component of the four vector */
+       virtual void setE( double e )=0;
+
+       /** Set the mothers of this particle via a vector of PhotosParticle */
+       virtual void setMothers(std::vector<PhotosParticle*> mothers)=0;
+
+       /** Set the daughters of this particle via a vector of PhotosParticle */
+       virtual void setDaughters(std::vector<PhotosParticle*> daughters)=0;
+
+       /** Add a new daughter to this particle */
+       virtual void addDaughter(PhotosParticle* daughter)=0;
+
+       /** Returns the mothers of this particle via a vector of PhotosParticle */
+       virtual std::vector<PhotosParticle*> getMothers()=0;
+
+       /** Returns the daughters of this particle via a vector of PhotosParticle */
+       virtual std::vector<PhotosParticle*> getDaughters()=0;
+
+       /** Returns all particles in the decay tree of this particle
+           via a vector of PhotosParticle */
+       virtual std::vector<PhotosParticle*> getAllDecayProducts()=0;
+
+       /** Set the PDG ID code of this particle */
+       virtual void setPdgID(int pdg_id)=0;
+
+       /** Set the mass of this particle */
+       virtual void setMass(double mass)=0;
+
+       /** Set the status of this particle */
+       virtual void setStatus(int status)=0;
+
+       /** Get the PDG ID code of this particle */
+       virtual int getPdgID()=0;
+
+       /** Get the status of this particle */
+       virtual int getStatus()=0;
+
+       /** Get the barcode of this particle */
+       virtual int getBarcode()=0;
+
+       /** Create a new particle of the same type, with the given
+           properties. The new particle bares no relations to this
+           particle, but it provides a way of creating a intance of
+           the derived class. eg. createNewParticle() is used inside
+           filhep_() so that an eg. PhotosHepMCParticle is created without
+           the method having explicit knowledge of the PhotosHepMCParticle
+           class */
+       virtual PhotosParticle * createNewParticle(int pdg_id, int status,
+                                                  double mass, double px,
+                                                  double py, double pz,
+                                                  double e)=0;
+
+  /** Create history entry of this particle before modifications
+      of PHOTOS. Implementation of this method depends strongly
+      on the event record. */
+  virtual void createHistoryEntry()=0;
+  
+       /** Create a self-decay vertex for this particle
+           with 'out' being the outgoing particle in new vertex */
+       virtual void createSelfDecayVertex(PhotosParticle *out)=0;
+
+       /** Print some information about this particle to standard output */
+       virtual void print()=0;
+};
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/PhotosRandom.cxx b/TEvtGen/Photos/PhotosRandom.cxx
new file mode 100644 (file)
index 0000000..056a419
--- /dev/null
@@ -0,0 +1,107 @@
+#include <iostream>
+#include "PhotosRandom.h"
+#include "Photos.h"
+#include "Log.h"
+
+namespace Photospp
+{
+
+bool         PhotosRandom::init    = false;
+int          PhotosRandom::iseed[2]= { 1802, 9373 };
+int          PhotosRandom::i97     = 96;
+int          PhotosRandom::j97     = 32;
+double       PhotosRandom::uran[97]= { 0.0 };
+double       PhotosRandom::cran    = 362436.0  /16777216.0;
+const double PhotosRandom::cdran   = 7654321.0 /16777216.0;
+const double PhotosRandom::cmran   = 16777213.0/16777216.0;
+
+void PhotosRandom::setSeed(int s1,int s2)
+{
+       if(s1<0 || s1>31327) Log::Fatal("PhotosRandom::setSeed(): Seed(1) out of range [0,31327]",8);
+       if(s2<0 || s2>30080) Log::Fatal("PhotosRandom::setSeed(): Seed(2) out of range [0,30080]",9);
+       iseed[0]=s1;
+       iseed[1]=s2;
+}
+
+/*******************************************************************************
+  PHORIN:   PHOton radiation  in decays RANdom number generator init
+
+  Purpose:  Initialse PHORAN  with  the user  specified seeds in the
+            array iseed.  For details  see also:  F. James  CERN DD-
+            Report November 1988.
+
+  Author(s):  B. van Eijk and F. James        Created at:  27/09/89
+                                              Last Update: 22/02/90
+                                         Rewritten to C++: 18/10/10
+                                         by T. Przedzinski  (tprzedzi@cern.ch)
+*******************************************************************************/
+void PhotosRandom::initialize()
+{
+       long IS1,IS2,IS3,IS4,IS5;
+       double S,T;
+
+// Calculate Marsaglia and Zaman seeds (by F. James)
+       IS1=(iseed[0]/177)%177+2;
+       IS2= iseed[0]%177+2;
+       IS3=(iseed[1]/169)%178+1;
+       IS4= iseed[1]%169;
+       for(int i=0;i<97;i++)
+       {
+               S=0.0;
+               T=0.5;
+               for(int j=0;j<24;j++)
+               {
+                       IS5=( ((IS1*IS2)%179)*IS3 )%179;
+                       IS1=IS2;
+                       IS2=IS3;
+                       IS3=IS5;
+                       IS4=(53*IS4+1)%169;
+                       if( (IS4*IS5)%64>=32) S=S+T;
+                       T=0.5*T;
+               }
+               uran[i]=S;
+       }
+       init=true;
+       Log::Debug(0)<<"PhotosRandom::inititalize(): seed: "<<iseed[0]<<", "<<iseed[1]<<std::endl;
+}
+
+/*******************************************************************************
+  PHORAN:   PHOton radiation in decays ret number generator based
+            on Marsaglia Algorithm
+
+  Purpose:  Generate  uniformly  distributed  random numbers between
+            0 and 1.  Super long period:  2**144.  See also:
+            G. Marsaglia and A. Zaman,  FSU-SCR-87-50,  for seed mo-
+            difications  to  this version  see:  F. James DD-Report,
+            November 1988.  The generator  has  to be initialized by
+            a call to PHORIN ( C++ version: initialize() ).
+
+  Author(s):  B. van Eijk, G. Marsaglia and   Created at:  27/09/89
+              A. Zaman                        Last Update: 27/09/89
+                                         Rewritten to C++: 18/10/10
+                                         by T. Przedzinski  (tprzedzi@cern.ch)
+*******************************************************************************/
+double PhotosRandom::randomReal()
+{
+       if(!init) Log::Fatal("PhotosRandom::randomReal(): generator not initialized",1);
+       double ret=0.0;
+       while(true)
+       {
+               ret = uran[i97]-uran[j97];
+               if(ret<0.0) ret+=1.;
+               uran[i97]=ret;
+               i97--;
+               if(i97<0) i97=96;
+               j97--;
+               if(j97<0) j97=96;
+               cran-=cdran;
+               if(cran<0.0) cran+=cmran;
+               ret-=cran;
+               if(ret<0.0) ret+=1.0;
+               if(ret>0.0) break;
+       }
+       return ret;
+}
+
+} // namespace Photospp
+
diff --git a/TEvtGen/Photos/PhotosRandom.h b/TEvtGen/Photos/PhotosRandom.h
new file mode 100644 (file)
index 0000000..e5b0d10
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef _PhotosRandom_included_
+#define _PhotosRandom_included_
+
+/**
+ * @class PhotosRandom
+ *
+ * @brief Photos random number generator rewritten from PHOTOS FORTRAN
+ *
+ * Generates uniformly distributed random numbers between 0 and 1.
+ * Must be initialized by call to PhotosRandom::initialize().
+ * Original authors: B. van Eijk, F. James, G. Marsaglia and A. Zaman
+ *
+ * @author Tomasz Przedzinski
+ * @date 18th October 2010
+ */
+
+namespace Photospp
+{
+
+class PhotosRandom
+{
+public:
+       /* Change the seed. Default is s1=1802 and s2=9373
+          These values must be in range [0,31327] and [0,30080] respectively */
+       static void setSeed(int s1,int s2);
+
+       /* Initialization routine. Must be called at least once before
+          the generator can be used. */
+       static void initialize();
+
+       /* Uniform distribution between 0 and 1 */
+       static double randomReal();
+
+protected:
+       static bool init;
+       static int iseed[2];
+       static int i97;
+       static int j97;
+       static double uran[97];
+       static double cran;
+       static const double cdran;
+       static const double cmran;
+};
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/PhotosUtilities.cxx b/TEvtGen/Photos/PhotosUtilities.cxx
new file mode 100644 (file)
index 0000000..afbe412
--- /dev/null
@@ -0,0 +1,428 @@
+#include "PhotosUtilities.h"
+#include <cstdlib>
+#include <cstdio>
+using std::max;
+
+namespace Photospp
+{
+
+namespace PhotosUtilities
+{
+
+
+void fill_val(int beg, int end, double* array, double value) 
+{
+  for (int i = beg; i < end; i++)
+    array[i] = value;
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOEPS:   PHOeps vector product (normalized to unity)
+//
+//    Purpose:  calculates vector product, then normalizes its length.
+//              used to generate orthogonal vectors, i.e. to
+//              generate polarimetric vectors for photons.
+//
+//    Input Parameters:  VEC1,VEC2 - input 4-vectors
+//                                          
+//    Output Parameters: EPS - normalized 4-vector, orthogonal to
+//                             VEC1 and VEC2
+//
+//    Author(s):  Z. Was, P.Golonka               Created at:  19/01/05
+//                                                Last Update: 10/06/13
+//
+//----------------------------------------------------------------------
+
+void PHOEPS(double vec1[4], double vec2[4], double eps[4]){
+  double xn;
+  int j=1;  // convention of indices of Riemann space must be preserved.
+
+  eps[1-j]=vec1[2-j]*vec2[3-j] - vec1[3-j]*vec2[2-j];
+  eps[2-j]=vec1[3-j]*vec2[1-j] - vec1[1-j]*vec2[3-j];      
+  eps[3-j]=vec1[1-j]*vec2[2-j] - vec1[2-j]*vec2[1-j];
+  eps[4-j]=0.0;
+      
+  xn=sqrt( eps[1-j]*eps[1-j] + eps[2-j]*eps[2-j] + eps[3-j]*eps[3-j]);
+      
+  eps[1-j]=eps[1-j]/xn;
+  eps[2-j]=eps[2-j]/xn;
+  eps[3-j]=eps[3-j]/xn;
+
+}
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation  in decays function for SPIn determina-
+//              tion
+//
+//    Purpose:  Calculate  the spin  of particle  with  code IDHEP.  The
+//              code  of the particle  is  defined  by the Particle Data
+//              Group in Phys. Lett. B204 (1988) 1.
+//
+//    Input Parameter:   IDHEP
+//
+//    Output Parameter:  Funtion  value = spin  of  particle  with  code
+//                       IDHEP
+//
+//    Author(s):  E. Barberio and B. van Eijk     Created at:  29/11/89
+//                                                Last update: 10/06/13
+//
+//----------------------------------------------------------------------
+double PHOSPI(int idhep){
+  static double SPIN[100] = { 0 };
+  static int j=0;  
+  //--
+  //--   Array 'SPIN' contains the spin  of  the first 100 particles accor-
+  //--   ding to the PDG particle code...
+
+  if(j==0) // initialization
+    {   
+      j=1;
+      fill_val(0 ,  8, SPIN, 0.5);
+      fill_val(8 ,  9, SPIN, 1.0);
+      fill_val(9 , 10, SPIN, 0.0);
+      fill_val(10, 18, SPIN, 0.5);
+      fill_val(18, 20, SPIN, 0.0);
+      fill_val(20, 24, SPIN, 1.0);
+      fill_val(24,100, SPIN, 0.0);
+    }
+
+  int idabs=abs(idhep);
+  //--
+  //--   Spin of quark, lepton, boson etc....
+  if (idabs-1<100) return SPIN[idabs-1];
+
+  //--   ...other particles, however...
+  double xx=((idabs % 10)-1.0)/2.0;
+  //--
+  //--   ...K_short and K_long are special !!
+  xx=max(xx,0.0);
+  return xx;
+}
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays CHArge determination
+//
+//    Purpose:  Calculate the charge  of particle  with code IDHEP.  The
+//              code  of the  particle  is  defined by the Particle Data
+//              Group in Phys. Lett. B204 (1988) 1.
+//
+//    Input Parameter:   IDHEP
+//
+//    Output Parameter:  Funtion value = charge  of  particle  with code
+//                       IDHEP
+//
+//    Author(s):  E. Barberio and B. van Eijk     Created at:  29/11/89
+//                                                Last update: 11/06/13
+//
+//----------------------------------------------------------------------
+double PHOCHA(int idhep){
+  static double CHARGE[101] = { 0 };
+  static int j=0;  
+  //--
+  //--   Array 'SPIN' contains the spin  of  the first 100 particles accor-
+  //--   ding to the PDG particle code...
+
+  if(j==0) // initialization
+    {   
+      j=1;
+      fill_val(0 ,  1, CHARGE, 0.0         );
+      fill_val(1 ,  2, CHARGE,-0.3333333333);
+      fill_val(2 ,  3, CHARGE, 0.6666666667);
+      fill_val(3 ,  4, CHARGE,-0.3333333333);
+      fill_val(4 ,  5, CHARGE, 0.6666666667);
+      fill_val(5 ,  6, CHARGE,-0.3333333333);
+      fill_val(6 ,  7, CHARGE, 0.6666666667);
+      fill_val(7 ,  8, CHARGE,-0.3333333333);
+      fill_val(8 ,  9, CHARGE, 0.6666666667);
+      fill_val(9 , 11, CHARGE, 0.0         );
+      fill_val(11 ,12, CHARGE,-1.0         );
+      fill_val(12 ,13, CHARGE, 0.0         );
+      fill_val(13 ,14, CHARGE,-1.0         );
+      fill_val(14, 15, CHARGE, 0.0         );
+      fill_val(15 ,16, CHARGE,-1.0         );
+      fill_val(16, 17, CHARGE, 0.0         );
+      fill_val(17 ,18, CHARGE,-1.0         );
+      fill_val(18, 24, CHARGE, 0.0         );
+      fill_val(24, 25, CHARGE, 1.0         );
+      fill_val(25, 37, CHARGE, 0.0         );
+      fill_val(37, 38, CHARGE, 1.0         );
+      fill_val(38,101, CHARGE, 0.0         );
+    }
+
+  int idabs=abs(idhep);
+  double phoch=0.0;
+
+  //--
+  //--   Charge of quark, lepton, boson etc....
+  if (idabs<=100) phoch=CHARGE[idabs];
+  else {
+    int Q3= idabs/1000 % 10;
+    int Q2= idabs/100  % 10;
+    int Q1= idabs/10   % 10;
+    if (Q3==0){
+      //--
+      //-- ...meson...
+      if(Q2 % 2==0) phoch=CHARGE[Q2]-CHARGE[Q1];
+      else          phoch=CHARGE[Q1]-CHARGE[Q2];
+    }
+    else{
+      //--
+      //--   ...diquarks or baryon.
+      phoch=CHARGE[Q1]+CHARGE[Q2]+CHARGE[Q3];
+    }
+  }
+  //--
+  //--   Find the sign of the charge...
+  if (idhep<0.0) phoch=-phoch;
+  if (phoch*phoch<0.000001) phoch=0.0;
+  
+  return phoch;
+}
+
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays calculation of TRIangle fie
+//
+//    Purpose:  Calculation of triangle function for phase space.
+//
+//    Input Parameters:  A, B, C (Virtual) particle masses.
+//
+//    Output Parameter:  Function value =
+//                       SQRT(LAMBDA(A**2,B**2,C**2))/(2*A)
+//
+//    Author(s):  B. van Eijk                     Created at:  15/11/89
+//                                                Last Update: 12/06/13
+//
+//----------------------------------------------------------------------
+double PHOTRI(double A,double B,double C){
+  double DA,DB,DC,DAPB,DAMB,DTRIAN;
+  DA=A;
+  DB=B;
+  DC=C;
+  DAPB=DA+DB;
+  DAMB=DA-DB;
+  DTRIAN=sqrt((DAMB-DC)*(DAPB+DC)*(DAMB+DC)*(DAPB-DC));
+  return DTRIAN/(DA+DA);
+}
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays calculation of ANgle '1'
+//
+//    Purpose:  Calculate angle from X and Y
+//
+//    Input Parameters:  X, Y
+//
+//    Output Parameter:  Function value
+//
+//    Author(s):  S. Jadach                       Created at:  01/01/89
+//                B. van Eijk                     Last Update: 12/06/13
+//
+//----------------------------------------------------------------------
+double PHOAN1(double X,double Y){
+
+  double phoan1 = 0.0;
+  
+  static double PI=3.14159265358979324, TWOPI=6.28318530717958648;
+  if (fabs(Y)<fabs(X)){
+    phoan1=atan(fabs(Y/X));
+    if (X<0.0) phoan1=PI-phoan1;
+  }
+  else phoan1=acos(X/sqrt(X*X+Y*Y));
+  //
+  if (Y<0.0) phoan1=TWOPI-phoan1;
+  return phoan1;
+}
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays calculation of ANgle '2'
+//
+//    Purpose:  Calculate angle from X and Y
+//
+//    Input Parameters:  X, Y
+//
+//    Output Parameter:  Function value
+//
+//    Author(s):  S. Jadach                       Created at:  01/01/89
+//                B. van Eijk                     Last Update: 12/06/13
+//
+//----------------------------------------------------------------------
+double PHOAN2(double X,double Y){
+
+  double phoan2 = 0.0;
+
+  static double PI=3.14159265358979324; //, TWOPI=6.28318530717958648;
+
+  if (fabs(Y)<fabs(X)){
+    phoan2=atan(fabs(Y/X));
+    if (X<0.0) phoan2=PI-phoan2;
+  }
+  else phoan2=acos(X/sqrt(X*X+Y*Y));
+  return phoan2;
+}
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays ROtation routine '2'
+//
+//    Purpose:  Rotate  x and z components  of vector PVEC  around angle
+//              'ANGLE'.
+//
+//    Input Parameters:  ANGLE, PVEC
+//
+//    Output Parameter:  PVEC
+//
+//    Author(s):  S. Jadach                       Created at:  01/01/89
+//                B. van Eijk                     Last Update: 12/06/13
+//
+//----------------------------------------------------------------------
+void PHORO2(double ANGLE,double PVEC[4]){
+  int j=1;  // convention of indices of Riemann space must be preserved.
+
+  double CS,SN;
+  CS= cos(ANGLE)*PVEC[1-j]+sin(ANGLE)*PVEC[3-j];
+  SN=-sin(ANGLE)*PVEC[1-j]+cos(ANGLE)*PVEC[3-j];
+  PVEC[1-j]=CS;
+  PVEC[3-j]=SN;
+}
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays ROtation routine '3'
+//
+//    Purpose:  Rotate  x and y components  of vector PVEC  around angle
+//              'ANGLE'.
+//
+//    Input Parameters:  ANGLE, PVEC
+//
+//    Output Parameter:  PVEC
+//
+//    Author(s):  S. Jadach     RO                 Created at:  01/01/89
+//                B. van Eijk                     Last Update: 12/06/13
+//
+//----------------------------------------------------------------------
+void PHORO3(double ANGLE,double PVEC[4]){
+  int j=1;  // convention of indices of Riemann space must be preserved.
+  double CS,SN;
+  CS=cos(ANGLE)*PVEC[1-j]-sin(ANGLE)*PVEC[2-j];
+  SN=sin(ANGLE)*PVEC[1-j]+cos(ANGLE)*PVEC[2-j];
+  PVEC[1-j]=CS;
+  PVEC[2-j]=SN;
+}
+
+//----------------------------------------------------------------------
+//
+//
+//    PHOB:     PHotosBoost
+//
+//    Purpose:  Boosts VEC to (MODE=1)  rest frame of PBOOS1;  
+//              or back (MODE=1)
+//
+//    Input Parameters:   MODE,PBOOS1,VEC
+//
+//    Output Parameters:  VEC
+//
+//    Author(s):                                  Created at:  08/12/05
+//                Z. Was                          Last Update: 13/06/13
+//
+//----------------------------------------------------------------------
+
+void PHOB(int MODE,double PBOOS1[4],double vec[4]){
+  double BET1[3],GAM1,PB;
+  static int j0=1;
+  int J;
+
+
+  PB=sqrt(PBOOS1[4-j0]*PBOOS1[4-j0]-PBOOS1[3-j0]*PBOOS1[3-j0]-PBOOS1[2-j0]*PBOOS1[2-j0]-PBOOS1[1-j0]*PBOOS1[1-j0]);
+  for( J=1; J<4;J++){
+    if (MODE==1) BET1[J-j0]=-PBOOS1[J-j0]/PB;
+    else BET1[J-j0]= PBOOS1[J-j0]/PB;
+  }
+
+  GAM1=PBOOS1[4-j0]/PB;
+
+  //--
+  //--   Boost vector 
+
+  PB=BET1[1-j0]*vec[1-j0]+BET1[2-j0]*vec[2-j0]+BET1[3-j0]*vec[3-j0];
+
+  for( J=1; J<4;J++) vec[J-j0]=vec[J-j0]+BET1[J-j0]*(vec[4-j0]+PB/(GAM1+1.0));
+  vec[4-j0]=GAM1*vec[4-j0]+PB;
+  //--
+}
+
+
+//     *******************************
+// Boost along arbitrary axis (as implemented by Ronald Kleiss).
+// The method is described in book of Bjorken and Drell
+// p boosted into r  from actual frame to rest frame of q
+// forth (mode = 1) or back (mode = -1).
+// q must be a timelike, p may be arbitrary.
+void bostdq(int mode,double qq[4],double pp[4],double r[4]){
+  double q[4],p[4],amq,fac;
+  static int i=1;
+  int k;
+
+  for(k=1;k<=4;k++){
+    p[k-i]=pp[k-i];
+    q[k-i]=qq[k-i];
+  }
+  amq =sqrt(q[4-i]*q[4-i]-q[1-i]*q[1-i]-q[2-i]*q[2-i]-q[3-i]*q[3-i]);
+
+  if    (mode == -1){
+    r[4-i] = (p[1-i]*q[1-i]+p[2-i]*q[2-i]+p[3-i]*q[3-i]+p[4-i]*q[4-i])/amq;
+    fac  = (r[4-i]+p[4-i])/(q[4-i]+amq);
+  }
+  else if(mode ==  1){
+    r[4-i] =(-p[1-i]*q[1-i]-p[2-i]*q[2-i]-p[3-i]*q[3-i]+p[4-i]*q[4-i])/amq;
+    fac  =-(r[4-i]+p[4-i])/(q[4-i]+amq);
+  }
+  else{
+    cout << " ++++++++ wrong mode in boostdq " << endl;
+    exit(0);
+  }
+  r[1-i]=p[1-i]+fac*q[1-i];
+  r[2-i]=p[2-i]+fac*q[2-i];
+  r[3-i]=p[3-i]+fac*q[3-i];
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays BOost routine '3'
+//
+//    Purpose:  Boost  vector PVEC  along z-axis where ANGLE = EXP(ETA),
+//              ETA is the hyperbolic velocity.
+//
+//    Input Parameters:  ANGLE, PVEC
+//
+//    Output Parameter:  PVEC
+//
+//    Author(s):  S. Jadach                       Created at:  01/01/89
+//                B. van Eijk                     Last Update: 12/06/13
+//
+//----------------------------------------------------------------------
+void PHOBO3(double ANGLE,double PVEC[4]){
+  int j=1;  // convention of indices of Riemann space must be preserved.
+  double QPL,QMI;
+  QPL=(PVEC[4-j]+PVEC[3-j])*ANGLE;
+  QMI=(PVEC[4-j]-PVEC[3-j])/ANGLE;
+  PVEC[3-j]=(QPL-QMI)/2.0;
+  PVEC[4-j]=(QPL+QMI)/2.0;
+}
+
+} // namespace PhotosUtilities
+       
+} // namespace Photospp
+
diff --git a/TEvtGen/Photos/PhotosUtilities.h b/TEvtGen/Photos/PhotosUtilities.h
new file mode 100644 (file)
index 0000000..a840487
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _PhotosUtilities_h_included_
+#define _PhotosUtilities_h_included_
+#include <cmath>
+#include <iostream>
+using std::cout;
+using std::endl;
+/**
+ * @class PhotosUtilities
+ *
+ * @brief Support functions
+ *
+ * Functions for boosting, rotation, ...
+ *
+ * @author Tomasz Przedzinski, Zbigniew Was
+ * @date 29 June 2013
+ */
+namespace Photospp
+{
+
+namespace PhotosUtilities
+{
+  /** PHOton radiation in decays calculation of TRIangle fie */
+  double PHOTRI(double A,double B,double C);
+
+  /** PHOton radiation in decays Calculate ANgle from X and Y */
+  double PHOAN1(double X,double Y);
+
+  /** PHOton radiation in decays Calculate ANgle from X and Y equiv to PHOAN1 */
+  double PHOAN2(double X,double Y);
+
+  /** PHOton radiation in decays ROtation routine around 2-nd axis */
+  void PHORO2(double ANGLE,double PVEC[4]);
+
+
+  /** PHOton radiation in decays ROtation routine around 3-rd axis */
+  void PHORO3(double ANGLE,double PVEC[4]);
+
+  /** Boot to-from restr frame of PBOOS1 */
+  void PHOB(int MODE,double PBOOS1[4],double vec[4]);
+
+  /** PHOton radiation in decays BOost routine along arbitrary axis axis */
+  void bostdq(int mode,double qq[4],double pp[4],double r[4]);
+
+
+  /** PHOton radiation in decays BOost routine along 3-rd axis */
+  void PHOBO3(double ANGLE,double PVEC[4]);
+
+  /** trivial method to fill value into array on positions beg to end */
+  void fill_val(int beg, int end, double* array, double value); 
+
+ /** PHOeps vector product (normalized to unity) */
+  void PHOEPS(double vec1[4], double vec2[4], double eps[4]);
+
+ /** PHOton radiation  in decays function for SPIn determination */
+  double PHOSPI(int idhep);
+
+ /**  PHOton radiation in decays CHArge determination */
+  double PHOCHA(int idhep);
+
+} // namespace PhotosUtilities
+
+} // namespace Photospp
+#endif
+
diff --git a/TEvtGen/Photos/f_Init.h b/TEvtGen/Photos/f_Init.h
new file mode 100644 (file)
index 0000000..b2fe5c7
--- /dev/null
@@ -0,0 +1,165 @@
+#ifndef _f_Init_included_
+#define _f_Init_included_
+
+namespace Photospp
+{
+
+const static int NMXHEP = 10000;
+const static double PI    = 3.14159265358979324;
+const static double TWOPI = 6.28318530717958648;
+
+
+// extern "C"
+//{
+
+       /** Definition of the PHOEVT common block */
+       extern struct HEPEVT
+       {
+               int    nevhep;
+               int    nhep;
+               int    isthep[NMXHEP];
+               int    idhep[NMXHEP];
+               int    jmohep[NMXHEP][2];
+               int    jdahep[NMXHEP][2];
+               double phep[NMXHEP][5];
+               double vhep[NMXHEP][4];
+               int    qedrad[NMXHEP];  // to be bool once compatibility with F77 removed       
+               const static int nmxhep=NMXHEP;
+               //      NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
+               //  JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
+               //   int qedrad[NMXHEP]  was an add up 
+                //   for  HEPEVT in F77 times. Separate common PH_PHOQED
+               //   also phoif_.chkif[NMXPHO] was add up for PHOEVT
+                //   now it is pho.qedrad
+       } hep,pho;
+        //ph_hepevt_,phoevt_;
+
+
+
+       extern struct PHOCOP
+       {
+               double alpha;
+               double xphcut;
+       } phocop_;
+
+       extern struct PHNUM
+       {
+               double iev;
+       } phnum_;
+
+
+
+       extern struct PHOKEY
+       {
+               double fsec;
+               double fint;
+               double expeps;
+               int interf;
+               int isec;
+               int itre;
+               int iexp;
+               int iftop;
+               int ifw;
+       } phokey_;
+
+       extern struct PHOSTA
+       {
+               int status[10];
+               int ifstop;
+       } phosta_;
+
+       extern struct PHOLUN
+       {
+               int phlun;
+       } pholun_;
+
+       extern struct PHOPHS
+       {
+               double xphmax;
+               double xphoto;
+               double costhg;
+               double sinthg;
+
+       } phophs_;
+       extern struct TOFROM
+       {
+               double QQ[4];
+               double XM;
+               double th1;
+               double fi1;
+
+       } tofrom_;
+
+       extern struct PHOPRO
+       {
+               double probh;
+               double corwt;
+               double xf;
+               int irep;
+       } phopro_;
+
+       extern struct PHOREST
+       {
+               double fi3;
+               double fi1;
+               double th1;
+               int irep;     //    provably line to be removed
+
+       } phorest_;
+
+       extern struct PHWT
+       {
+               double beta;
+               double wt1;
+               double wt2;
+               double wt3;
+
+       } phwt_;
+       extern struct PHOCORWT
+       {
+               double phocorwt3;
+               double phocorwt2;
+               double phocorwt1;
+
+       } phocorwt_;
+
+       extern struct PHOMOM
+       {
+               double mchsqr;
+               double mnesqr;
+               double pneutr[5];
+       } phomom_;
+       extern struct PHOCMS
+       {
+               double bet[3];
+               double gam;
+       } phocms_;
+
+       extern struct PHOEXP
+       {
+               const static int NX = 10;
+               double pro[NX];
+               int nchan;
+               int expini;    // bool
+       } phoexp_;
+
+       //debug mode on if ipoin <  1 and ipoinm > 1
+       extern struct PHLUPY
+       {
+               int ipoin;
+               int ipoinm;
+       } phlupy_;
+
+       /** Initialize kinematic corrections */
+       void PHCORK(int modcor);
+
+       /** Single branch processing */
+       void PHOTOS_MAKE_C(int id);
+
+       /* Central management routine. Defines what action
+          will be performed at point ID. */
+       void PHTYPE(int ID);
+// }
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/forW-MEc.cxx b/TEvtGen/Photos/forW-MEc.cxx
new file mode 100644 (file)
index 0000000..54f5648
--- /dev/null
@@ -0,0 +1,1014 @@
+#include "forW-MEc.h"
+#include "Photos.h"
+#include "f_Init.h"
+#include "PH_HEPEVT_Interface.h"
+#include <cstdlib>
+#include<iostream>
+using std::cout;
+using std::endl;
+
+namespace Photospp
+{
+
+// COMMON /Kleiss_Stirling/spV,bet
+double PhotosMEforW::spV[4],PhotosMEforW::bet[4];
+
+// COMMON /mc_parameters/pi,sw,cw,alphaI,qb,mb,mf1,mf2,qf1,qf2,vf,af,mcLUN
+double PhotosMEforW::pi,PhotosMEforW::sw,PhotosMEforW::cw,PhotosMEforW::alphaI,PhotosMEforW::qb,PhotosMEforW::mb,PhotosMEforW::mf1,PhotosMEforW::mf2,PhotosMEforW::qf1,PhotosMEforW::qf2,PhotosMEforW::vf,PhotosMEforW::af,PhotosMEforW::mcLUN;
+
+//////////////////////////////////////////////////////////////////
+//         small s_{+,-}(p1,p2) for massless case:              //
+//                 p1^2 = p2^2 = 0                              // 
+//                                                              //
+//     k0(0) = 1.d0                                             //
+//     k0(1) = 1.d0                                             //
+//     k0(2) = 0.d0  Kleisse_Stirling k0 points to X-axis       // 
+//     k0(3) = 0.d0                                             //
+//                                                              //
+//////////////////////////////////////////////////////////////////
+complex<double> PhotosMEforW::InProd_zero(double p1[4],int l1,double p2[4],int l2){
+
+
+  double  forSqrt1,forSqrt2,sqrt1,sqrt2;
+  complex<double>    Dcmplx;
+  static complex<double>    i_= complex<double>(0.0,1.0);
+  bool           equal;
+
+
+
+  equal = true;  
+  for (int i = 0; i < 4; i++){
+    if (p1[i]!=p2[i])  equal = equal && false ;
+  }               
+
+
+  if ( (l1==l2) || equal ) return complex<double>(0.0,0.0);
+
+  else if ( (l1==+1) && (l2==-1) ){
+
+    forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);
+    forSqrt2 = 1.0/forSqrt1;
+    sqrt1    = sqrt(forSqrt2);
+    sqrt2    = sqrt(forSqrt1);
+
+    return (p1[2]+i_*p1[3])*sqrt1 -
+          (p2[2]+i_*p2[3])*sqrt2 ;
+  }
+  else if ( (l1==-1) && (l2==+1) ){
+
+    forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);
+    forSqrt2 = 1.0/forSqrt1;
+    sqrt1    = sqrt(forSqrt2);
+    sqrt2    = sqrt(forSqrt1);
+
+    return (p2[2]-i_*p2[3])*sqrt2 -
+           (p1[2]-i_*p1[3])*sqrt1 ;
+  }
+  else{
+                 
+
+    cout << " "<<endl;             
+    cout << " ERROR IN InProd_zero:"<<endl;
+    cout << "   WRONG VALUES FOR l1,l2: l1,l2 = -1,+1 "<<endl;
+    cout << " "  <<endl;           
+    exit(0);
+  }
+}
+
+double PhotosMEforW::InSqrt(double p[4],double q[4]){
+            
+  return sqrt( (p[0]-p[1]) / (q[0]-q[1]) );
+}
+    
+//////////////////////////////////////////////////////////////////
+//                                                              //
+//  Inner product for massive spinors: Ub(p1,m1,l1)*U(p2,m2,l2) //
+//                                                              //
+//////////////////////////////////////////////////////////////////
+
+complex<double> PhotosMEforW::InProd_mass(double p1[4],double m1,int l1,double p2[4],double m2,int l2){
+  double sqrt1,sqrt2,forSqrt1;
+
+
+  if ((l1==+1)&&(l2==+1)) {               
+    forSqrt1    = (p1[0]-p1[1])/(p2[0]-p2[1]);
+    sqrt1       = sqrt(forSqrt1);
+    sqrt2       = 1.0/sqrt1;
+    return complex<double>(m1*sqrt2+m2*sqrt1,0.0);
+  }
+  else if  ((l1==+1)&&(l2==-1))                              
+    return InProd_zero(p1,+1,p2,-1);
+
+  else if ((l1==-1)&&(l2==+1))                         
+    return  InProd_zero(p1,-1,p2,+1);               
+
+  else if ((l1==-1)&&(l2==-1)){                             
+    forSqrt1    = (p1[0]-p1[1])/(p2[0]-p2[1]);
+    sqrt1       = sqrt(forSqrt1);
+    sqrt2       = 1.0/sqrt1;
+    return complex<double>(m1*sqrt2+m2*sqrt1,0.0);
+  }
+  else {        
+    cout <<" " <<endl;            
+    cout <<" ERROR IN InProd_mass.."<<endl;
+    cout <<"       WRONG VALUES FOR l1,l2"<<endl;
+    cout <<" " <<endl;            
+    exit(0);
+  }
+}
+
+/////////////////////////////////////////////////////////////////////
+//                                                                 //
+//  this is small B_{s}(k,p) function when TrMartix is diaagonal!! //
+//                                                                 //
+/////////////////////////////////////////////////////////////////////
+complex<double> PhotosMEforW::BsFactor(int s,double k[4],double p[4],double m){
+    double forSqrt1,sqrt1;
+    complex<double>  inPr1;
+
+  if ( s==1 ){ 
+
+    inPr1    = InProd_zero(k,+1,p,-1);
+    forSqrt1 = (p[0]-p[1])/(k[0]-k[1]);
+    sqrt1    = sqrt(2.0*forSqrt1);  
+    //BsFactor = 
+    return inPr1*sqrt1;
+  }
+
+  else if ( s==-1 ){
+
+    inPr1    = InProd_zero(k,-1,p,+1);
+    forSqrt1 = (p[0]-p[1])/(k[0]-k[1]);
+    sqrt1    = sqrt(2.0*forSqrt1); 
+    //BsFactor = 
+    return inPr1*sqrt1;
+  }
+  else{
+
+    cout << " "<<endl;             
+    cout << " ERROR IN BsFactor: "<<endl;
+    cout << "       WRONG VALUES FOR s : s = -1,+1"<<endl;
+    cout << " "  <<endl;           
+    exit(0);
+  }
+}
+
+
+
+
+//====================================================================== 
+//     
+// Eikonal factor of decay W->l_1+l_2+\gamma in terms of K&S objects !
+// 
+//   EikFactor = q1*eps.p1/k.p1 + q2*eps.p2/k.p2 - q3*eps.p3/k.p3
+//
+//   indices 1,2 are for charged decay products
+//   index 3 is for W
+//   
+//   q - charge
+//    
+//======================================================================
+complex<double> PhotosMEforW::WDecayEikonalKS_1ph(double p3[4],double p1[4],double p2[4],double k[4],int s){
+
+  double scalProd1,scalProd2,scalProd3;
+  complex<double> wdecayeikonalks_1ph,BSoft1,BSoft2;  
+
+  scalProd1 = p1[0]*k[0]-p1[1]*k[1]-p1[2]*k[2]-p1[3]*k[3];
+  scalProd2 = p2[0]*k[0]-p2[1]*k[1]-p2[2]*k[2]-p2[3]*k[3];
+  scalProd3 = p3[0]*k[0]-p3[1]*k[1]-p3[2]*k[2]-p3[3]*k[3];
+
+
+  BSoft1  = BsFactor(s,k,p1,mf1);
+  BSoft2  = BsFactor(s,k,p2,mf2);
+  //WDecayEikonalKS_1ph =   
+   return sqrt(pi/alphaI)*(-(qf1/scalProd1+qb/scalProd3)*BSoft1   
+                           +(qf2/scalProd2-qb/scalProd3)*BSoft2);
+
+}
+
+//======================================================================
+//
+//       Gauge invariant soft factor for decay!!
+//       Gmass2 -- photon mass square       
+// 
+//======================================================================
+complex<double>  PhotosMEforW::SoftFactor(int s,double k[4],double p1[4],double m1,double p2[4],double m2,double Gmass2){
+
+  double ScalProd1,ScalProd2;
+  complex<double>  BsFactor2,BsFactor1;
+           
+
+  ScalProd1 = k[0]*p1[0]-k[1]*p1[1]-k[2]*p1[2]-k[3]*p1[3];
+  ScalProd2 = k[0]*p2[0]-k[1]*p2[1]-k[2]*p2[2]-k[3]*p2[3];
+          
+  BsFactor1 = BsFactor(s,k,p1,m1);
+  BsFactor2 = BsFactor(s,k,p2,m2);
+
+  return + BsFactor2/2.0/(ScalProd2-Gmass2)
+        - BsFactor1/2.0/(ScalProd1-Gmass2);
+}
+
+//############################################################################# 
+//                                                                            #
+//                         \ eps(k,0,s)                                       # 
+//                         /                                                  #   
+//                        _\                                                  # 
+//                         /\                                                 #
+//                         \                                                  #
+//                         /                                                  #
+//           ---<----------\-------------<---                                 #
+//       Ub(p1,m1,l1)                  U(p2,m2,l2)                            #
+//                                                                            #
+//                                                                            #
+//             definition of arbitrary light-like vector beta!!               #
+//                                                                            #
+//              bet[0] = 1.d0                                                 #
+//              bet[1] = 1.d0                                                 #
+//              bet[2] = 0.d0      <==> bet == k0  expression becomes easy!!  #
+//              bet[3] = 0.d0                                                 #
+//#############################################################################
+
+complex<double> PhotosMEforW::TrMatrix_zero(double p1[4],double m1,int l1,double k[4],int s,double p2[4],double m2,int l2){
+
+  double forSqrt1,forSqrt2;
+  //                            double p1_1[4],p2_1[4];
+  double sqrt1,sqrt2;        //       ,scalProd1,scalProd2;
+  complex<double>   inPr1,inPr2,inPr3;
+  bool          equal;
+
+  equal = true;    
+  for (int i = 0; i < 4; i++) 
+    if (p1[i] != p2[i])  equal = equal&&false;
+
+                    
+
+  if ( (m1==m2)&&(equal) ){
+    //..          
+    //..             when:  p1=p2=p <=> m1=m2 TrMatrix_zero is diagonal
+    //..               
+    if ( (l1==+1)&&(l2==+1) ){ 
+
+      inPr1    = InProd_zero(k,+s,p1,-s);
+      forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]); 
+      sqrt1    = sqrt(2.0*forSqrt1);
+
+      return sqrt1*inPr1;
+    }  
+    else if ( (l1==+1)&&(l2==-1) ){                
+
+      return complex<double>(0.0,0.0);}
+                     
+
+    else if ( (l1==-1)&&(l2==+1) ){               
+
+      return complex<double>(0.0,0.0);
+    } 
+
+    else if ( (l1==-1)&&(l2==-1) ){                
+
+      inPr1    = InProd_zero(k,+s,p1,-s);
+      forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]); 
+      sqrt1    = sqrt(2.0*forSqrt1);
+
+      return sqrt1*inPr1;
+    }  
+          
+    else{ 
+        
+      cout << ""  <<endl;           
+      cout << " ERROR IN  TrMatrix_zero: " <<endl;
+      cout << "       WRONG VALUES FOR l1,l2,s" <<endl; 
+      cout <<  "" <<endl;             
+      exit(0);
+
+    }       
+
+  }
+
+  if ( (l1==+1)&&(l2==+1)&&(s==+1) ){
+
+    inPr1    = InProd_zero(k,+1,p1,-1);
+    forSqrt1 = (p2[0]-p2[1])/(k[0]-k[1]);
+    sqrt1    = sqrt(2.0*forSqrt1);                   
+    return sqrt1*inPr1;
+  }
+  else if ( (l1==+1)&&(l2==-1)&&(s==+1) ) {
+    return complex<double>(0.0,0.0);
+  }
+
+  else if( (l1==-1)&&(l2==+1)&&(s==+1) ){
+  
+    forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);             
+    forSqrt2 = 1.0/forSqrt1;
+    sqrt1    = sqrt(2.0*forSqrt1);                   
+    sqrt2    = sqrt(2.0*forSqrt2);                   
+                     
+    return complex<double>(m2*sqrt1-m1*sqrt2,0.0);
+  }
+  else if ( (l1==-1)&&(l2==-1)&&(s==+1) ){ 
+
+    inPr1    = InProd_zero(k,+1,p2,-1);
+    forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]);
+    sqrt1    = sqrt(2.0*forSqrt1);                   
+  
+    return inPr1*sqrt1;
+  }
+
+  else if ( (l1==+1)&&(l2==+1)&&(s==-1) ){
+    inPr1    = -InProd_zero(k,-1,p2,+1);
+    forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]);
+    sqrt1    = sqrt(2.0*forSqrt1);                   
+    return   -sqrt1*inPr1;
+  }
+
+  else if ( (l1==+1)&&(l2==-1)&&(s==-1) ){ 
+           
+    forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);     
+    forSqrt2 = 1.0/forSqrt1;
+    sqrt1    = sqrt(2.0*forSqrt1);                   
+    sqrt2    = sqrt(2.0*forSqrt2);                   
+                     
+    return complex<double>(m2*sqrt1-m1*sqrt2,0.0);
+  }
+
+  else if ( (l1==-1)&&(l2==+1)&&(s==-1) ){ 
+
+    return complex<double>(0.0,0.0);
+  }
+
+  else if( (l1==-1)&&(l2==-1)&&(s==-1) ){ 
+
+    inPr1    = -InProd_zero(k,-1,p1,+1);
+    forSqrt1 = (p2[0]-p2[1])/(k[0]-k[1]);
+    sqrt1    = sqrt(2.0*forSqrt1);                   
+  
+    return -inPr1*sqrt1;
+  }
+  else {     
+
+    cout << "" << endl;
+    cout << " ERROR IN TrMatrix_zero: " << endl;
+    cout << "    WRONG VALUES FOR l1,l2,s" << endl;
+    cout << "" << endl;             
+    exit(0);
+  }
+
+}
+
+
+
+////////////////////////////////////////////////////////////////
+//          transition matrix for massive boson               //
+//                                                            // 
+//                                                            //
+//                         \ eps(k,m,s)                       //
+//                         /                                  // 
+//                        _\                                  //
+//                         /\ k                               // 
+//                         \                                  //
+//             <-- p1      /         <-- p2                   //                       
+//           ---<----------\----------<---                    //
+//       Ub(p1,m1,l1)                  U(p2,m2,l2)            //
+//                                                            // 
+////////////////////////////////////////////////////////////////                         
+complex<double> PhotosMEforW::TrMatrix_mass(double p1[4],double m1,int l1,double k[4],double m,int s,double p2[4],double m2,int l2){
+
+
+  double forSqrt1,forSqrt2;
+  double k_1[4],k_2[4];
+  double forSqrt3,forSqrt4,sqrt3,sqrt1,sqrt2,sqrt4;
+  complex<double>   inPr1,inPr2,inPr3,inPr4;
+
+  for (int i = 0; i < 4; i++) {
+    k_1[i] = 1.0/2.0*(k[i] - m*spV[i]);
+    k_2[i] = 1.0/2.0*(k[i] + m*spV[i]);                                
+  }
+
+  if ( (l1==+1)&&(l2==+1)&&(s==0) ){ 
+                
+    inPr1 = InProd_zero(p1,+1,k_2,-1);
+    inPr2 = InProd_zero(p2,-1,k_2,+1);
+    inPr3 = InProd_zero(p1,+1,k_1,-1);
+    inPr4 = InProd_zero(p2,-1,k_1,+1);
+    sqrt1 = sqrt(p1[0]-p1[1]);
+    sqrt2 = sqrt(p2[0]-p2[1]);
+    sqrt3 = m1*m2/sqrt1/sqrt2;
+
+              return                 
+                            (inPr1*inPr2-inPr3*inPr4)*(vf+af)/m 
+               + (k_1[0]-k_2[0]-k_1[1]+k_2[1])*sqrt3*(vf-af)/m; 
+  }       
+                 
+  else if ( (l1==+1)&&(l2==-1)&&(s==0) ){
+
+    inPr1 = InProd_zero(p1,+1,k_1,-1);
+    inPr2 = InProd_zero(p1,+1,k_2,-1);
+    inPr3 = InProd_zero(p2,+1,k_2,-1);
+    inPr4 = InProd_zero(p2,+1,k_1,-1);
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);
+    forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
+    forSqrt3 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);
+    forSqrt4 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
+    sqrt1 = sqrt(forSqrt1);
+    sqrt2 = sqrt(forSqrt2);
+    sqrt3 = sqrt(forSqrt3);
+    sqrt4 = sqrt(forSqrt4);     
+
+              return 
+                  (inPr1*sqrt1 - inPr2*sqrt2)*(vf+af)*m2/m
+               + (inPr3*sqrt3 - inPr4*sqrt4)*(vf-af)*m1/m;
+  }
+  else if ( (l1==-1)&&(l2==+1)&&(s==0) ){ 
+
+    inPr1 = InProd_zero(p1,-1,k_1,+1);
+    inPr2 = InProd_zero(p1,-1,k_2,+1);
+    inPr3 = InProd_zero(p2,-1,k_2,+1);
+    inPr4 = InProd_zero(p2,-1,k_1,+1);
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);
+    forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
+    forSqrt3 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);
+    forSqrt4 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
+    sqrt1 = sqrt(forSqrt1);
+    sqrt2 = sqrt(forSqrt2);
+    sqrt3 = sqrt(forSqrt3);
+    sqrt4 = sqrt(forSqrt4);     
+        
+              return 
+                  (inPr1*sqrt1 - inPr2*sqrt2)*(vf-af)*m2/m
+               + (inPr3*sqrt3 - inPr4*sqrt4)*(vf+af)*m1/m;
+  }
+  else if  ( (l1==-1)&&(l2==-1)&&(s==0) ){ 
+
+    inPr1 = InProd_zero(p2,+1,k_2,-1);
+    inPr2 = InProd_zero(p1,-1,k_2,+1);
+    inPr3 = InProd_zero(p2,+1,k_1,-1);
+    inPr4 = InProd_zero(p1,-1,k_1,+1);
+    sqrt1 = sqrt(p1[0]-p1[1]);
+    sqrt2 = sqrt(p2[0]-p2[1]);
+    sqrt3 = m1*m2/sqrt1/sqrt2;
+
+             return                    
+                         (inPr1*inPr2 - inPr3*inPr4)*(vf-af)/m  
+              + (k_1[0]-k_2[0]-k_1[1]+k_2[1])*sqrt3*(vf+af)/m;
+  }
+  else if ( (l1==+1)&&(l2==+1)&&(s==+1) ){ 
+
+    inPr1 = InProd_zero(p1,+1,k_1,-1);
+    inPr2 = InProd_zero(k_2,-1,p2,+1);
+    inPr3 = inPr1*inPr2;
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);                       
+    forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);  
+    sqrt1 = sqrt(forSqrt1);                   
+    sqrt2 = sqrt(forSqrt2);                   
+    sqrt3 = m1*m2*sqrt1*sqrt2;
+
+             return
+              sqrt(2.0)/m*(inPr3*(vf+af)+sqrt3*(vf-af));
+  }
+
+  else if ( (l1==+1)&&(l2==-1)&&(s==+1) ){
+
+    inPr1 = InProd_zero(p1,+1,k_1,-1);
+    inPr2 = InProd_zero(p2,+1,k_1,-1); 
+
+    forSqrt1 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);                      
+    forSqrt2 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);                       
+    sqrt1 = m2*sqrt(forSqrt1);                   
+    sqrt2 = m1*sqrt(forSqrt2);                                     
+                     
+              return
+                      sqrt(2.0)/m*( + inPr1*sqrt1*(vf+af)
+                                    - inPr2*sqrt2*(vf-af)
+                                 );
+  }
+  else if  ( (l1==-1)&&(l2==+1)&&(s==+1) ){
+
+    inPr1 = InProd_zero(k_2,-1,p2,+1);
+    inPr2 = InProd_zero(k_2,-1,p1,+1);
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);                       
+    forSqrt2 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);                       
+    sqrt1 = m1*sqrt(forSqrt1);                   
+    sqrt2 = m2*sqrt(forSqrt2);                                     
+                     
+              return
+                      sqrt(2.0)/m*( + inPr1*sqrt1*(vf+af)
+                                    - inPr2*sqrt2*(vf-af)
+                                 );
+  }
+  else if ( (l1==-1)&&(l2==-1)&&(s==+1) ){ 
+
+    inPr1 = InProd_zero(p2,+1,k_1,-1);
+    inPr2 = InProd_zero(k_2,-1,p1,+1);
+    inPr3 = inPr1*inPr2;
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);                       
+    forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);  
+    sqrt1 = sqrt(forSqrt1);                  
+    sqrt2 = sqrt(forSqrt2);                   
+    sqrt3 = m1*m2*sqrt1*sqrt2;
+
+              return 
+               sqrt(2.0)/m*(inPr3*(vf-af)+sqrt3*(vf+af));
+  }
+
+  else if ( (l1==+1)&&(l2==+1)&&(s==-1) ){ 
+
+    inPr1 = InProd_zero(p2,-1,k_1,+1);
+    inPr2 = InProd_zero(k_2,+1,p1,-1);
+    inPr3 = inPr1*inPr2;
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);                       
+    forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);  
+    sqrt1 = sqrt(forSqrt1);                   
+    sqrt2 = sqrt(forSqrt2);                   
+    sqrt3 = m1*m2*sqrt1*sqrt2;
+
+             return               
+              sqrt(2.0)/m*(inPr3*(vf+af)+sqrt3*(vf-af));
+  }
+  else if ( (l1==+1)&&(l2==-1)&&(s==-1) ){ 
+
+    inPr1 = InProd_zero(k_2,+1,p2,-1);
+    inPr2 = InProd_zero(k_2,+1,p1,-1);
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);                       
+    forSqrt2 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);                       
+    sqrt1 = m1*sqrt(forSqrt1);                   
+    sqrt2 = m2*sqrt(forSqrt2);                                     
+                     
+              return
+                      sqrt(2.0)/m*(+ inPr1*sqrt1*(vf-af)
+                                   - inPr2*sqrt2*(vf+af)
+                                 );
+  }
+  else if ( (l1==-1)&&(l2==+1)&&(s==-1) ){
+
+    inPr1 = InProd_zero(p1,-1,k_1,+1);
+    inPr2 = InProd_zero(p2,-1,k_1,+1);
+
+    forSqrt1 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);                       
+    forSqrt2 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);                       
+    sqrt1 = m2*sqrt(forSqrt1);                   
+    sqrt2 = m1*sqrt(forSqrt2);                                     
+                     
+              return
+                      sqrt(2.0)/m*(+ inPr1*sqrt1*(vf-af)
+                                   - inPr2*sqrt2*(vf+af) 
+                                 );
+  }
+  else if ( (l1==-1)&&(l2==-1)&&(s==-1) ){ 
+
+    inPr1 = InProd_zero(p1,-1,k_1,+1);
+    inPr2 = InProd_zero(k_2,+1,p2,-1);
+    inPr3 = inPr1*inPr2;
+
+    forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);                       
+    forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);  
+    sqrt1 = sqrt(forSqrt1);                   
+    sqrt2 = sqrt(forSqrt2);                   
+    sqrt3 = m1*m2*sqrt1*sqrt2;
+
+             return 
+              sqrt(2.0)/m*(inPr3*(vf-af)+sqrt3*(vf+af));
+  }
+
+  else{ 
+
+    cout << " "<< endl;             
+    cout << " TrMatrix_mass: Wrong values for l1,l2,s:"<< endl;
+    cout << "          l1,l2 = -1,+1; s = -1,0,1 "<< endl;
+    cout << " "<< endl;             
+    exit(0);
+
+  } 
+         
+}
+
+
+              
+//======================================================================                 
+//                                                                     =
+//                            p1,mf1,l1                                =
+//                           /                                         =
+//                         \/_                                         = 
+//                         /                                           =
+//        p3,mb,l3        /                                            =
+//              \/\/\/\/\/\      ------> g_(mu,1)*(1+g5_(1))           =
+//                         \                                           =
+//                         _\/                                         = 
+//                           \                                         =
+//                            p2,mf2,l2                                =
+// INPUT : p1,m1,l1; p2,m2,l2; p3,m3,l3  -- momenta,mass and helicity  =
+//                                                                     =
+// OUTPUT: value of functions            -- decay amplitude            =
+//                                                                     =
+//======================================================================
+complex<double> PhotosMEforW::WDecayBornAmpKS_1ph(double p3[4],int l3,double p1[4],int l1,double p2[4],int l2){
+
+  double coeff;
+
+  coeff = sqrt(pi/alphaI/2.0)/sw;      // vertex: g/2/sqrt(2)
+
+  return coeff*TrMatrix_mass(p2,mf2,l2,p3,mb,l3,p1,-mf1,-l1);
+}        
+
+
+//======================================================================                 
+//                k,0,l                                                =
+//                   \        p1,mf1,l1                                =
+//                   /       /                                         =
+//                   \     \/_                                         = 
+//                   /     /                                           =
+//        p3,mb,l3   \    /                                            =
+//              \/\/\/\/\/\      ------> g_(mu,1)*(1+g5_(1))           =
+//                         \                                           =
+//                         _\/                                         = 
+//                           \                                         =
+//                            p2,mf2,l2                                =
+//           { + }                                                     =
+//                            p1,mf1,l1                                =
+//                           /                                         = 
+//                         \/_~~~~~~~ k,0,s                            = 
+//                         /                                           =
+//        p3,mb,l3        /                                            =
+//              \/\/\/\/\/\      ------> g_(mu,1)*(1+g5_(1))           =
+//                         \                                           =
+//                         _\/                                         = 
+//                           \                                         =
+//                            p2,mf2,l2                                =
+//           { + }                                                     =
+//                            p1,mf1,l1                                =
+//                           /                                         =
+//                         \/_                                         =
+//                         /                                           =
+//        p3,mb,l3        /                                            =
+//              \/\/\/\/\/\      ------> g_(mu,1)*(1+g5_(1))           =
+//                         \                                           =
+//                         _\/ ~~~~~~~ k,0,s                           =
+//                           \                                         =
+//                             p2,mf2,l2                               =
+//                                                                     =
+//                   all momentas, exept k are incoming !!!            =
+//                                                                     =
+// This function culculates The W-ff\gamma decay amplitude into permion=
+// pair and one photon using Kleisse&Stirling method for helicity      =
+// amplitudes, which includes three above feynman diagramms..          = 
+//                                                                     =
+// INPUT : p1,m1,l1; p2,m2,l2; p3,m3,l3  -- momenta,mass and helicity  =
+//                                                                     =
+// OUTPUT: value of functions            -- decay amplitude            =
+//                                                                     =
+//======================================================================
+
+complex<double> PhotosMEforW::WDecayAmplitudeKS_1ph(double p3[4],int l3,double p1[4],int l1,double p2[4],int l2,double k[4],int s){
+  double scalProd1,scalProd2,scalProd3,coeff;  //,theta3,ph3;
+  complex<double>  bornAmp,TrMx1,TrMx2;
+  complex<double>  BSoft1,BSoft2;  
+
+  coeff = sqrt(2.0)*pi/sw/alphaI;      // vertex: g/2/sqrt[2] * e
+
+  scalProd1 = p1[0]*k[0]-p1[1]*k[1]-p1[2]*k[2]-p1[3]*k[3];
+  scalProd2 = p2[0]*k[0]-p2[1]*k[1]-p2[2]*k[2]-p2[3]*k[3];
+  scalProd3 = p3[0]*k[0]-p3[1]*k[1]-p3[2]*k[2]-p3[3]*k[3];
+
+  BSoft1  = BsFactor(s,k,p1,mf1);
+  BSoft2  = BsFactor(s,k,p2,mf2);
+  bornAmp = TrMatrix_mass(p2,mf2,l2,p3,mb,l3,p1,-mf1,-l1);
+  TrMx1   = complex<double>(0.0,0.0);  
+  TrMx2   = complex<double>(0.0,0.0);  
+  for (int la1 = -1; la1< 3 ; la1+=2) {
+    //      DO la1=-1,1,2            
+    TrMx1 = TrMx1 + TrMatrix_zero(k,0.0,-la1,k,s,p1,-mf1,-l1)*
+                   TrMatrix_mass(p2,mf2,l2,p3,mb,l3,k,0.0,-la1);
+    TrMx2 = TrMx2 + TrMatrix_zero(p2,mf2,l2,k,s,k,0.0,la1)*
+                   TrMatrix_mass(k,0.0,la1,p3,mb,l3,p1,-mf1,-l1);
+  }
+
+    return coeff * (        
+            + (-(qf1/scalProd1+qb/scalProd3)*BSoft1              // IR-divergent part of amplitude      
+                +(qf2/scalProd2-qb/scalProd3)*BSoft2)/2.0*bornAmp
+            //
+            - (qf1/scalProd1+qb/scalProd3)*TrMx1/2.0             // IR-finite part of amplitude            
+             + (qf2/scalProd2-qb/scalProd3)*TrMx2/2.0
+                   ); 
+}
+
+
+
+//========================================================
+//        The squared eikonal factor for W decay         =
+//        into fermion pair and one photon               =
+//  INPUT :                                              =
+//                                                       =
+//  OUTPUT:                                              =
+//========================================================       
+
+double PhotosMEforW::WDecayEikonalSqrKS_1ph(double p3[4],double p1[4],double p2[4],double k[4]){
+  double spinSumAvrg;
+  complex<double>  wDecAmp;
+
+  spinSumAvrg = 0.0;
+  for (int s = -1; s< 3 ; s+=2) {
+    wDecAmp     = WDecayEikonalKS_1ph(p3,p1,p2,k,s);
+    spinSumAvrg = spinSumAvrg + real(wDecAmp*conj(wDecAmp)); 
+  }
+  return spinSumAvrg;
+}
+             
+//========================================================
+//        The squared eikonal factor for W decay         =
+//        into fermion pair and one photon               =
+//  INPUT :                                              =
+//                                                       =
+//  OUTPUT:                                              =
+//========================================================       
+
+double PhotosMEforW::WDecayBornAmpSqrKS_1ph(double p3[4],double p1[4],double p2[4]){
+  double spinSumAvrg;
+  complex<double> wDecAmp;
+
+  spinSumAvrg = 0.0;
+  for (int l3 = -1; l3< 2 ; l3++) {
+    for (int l1 = -1; l1< 3 ; l1+=2) {
+      for (int l2 = -1; l2< 3 ; l2+=2) {
+       wDecAmp     = WDecayBornAmpKS_1ph(p3,l3,p1,l1,p2,l2);
+       spinSumAvrg = spinSumAvrg + real(wDecAmp*conj(wDecAmp)); 
+      }
+    }
+  }
+  return spinSumAvrg;
+}
+
+
+
+//========================================================
+//        The squared amplitude for W decay              =
+//        into fermion pair and one photon               =
+//  INPUT :                                              =
+//                                                       =
+//  OUTPUT:                                              =
+//========================================================       
+
+double PhotosMEforW::WDecayAmplitudeSqrKS_1ph(double p3[4],double p1[4],double p2[4], double k[4]){
+
+  double spinSumAvrg;
+  complex<double> wDecAmp;
+
+  spinSumAvrg = 0.0;
+  for (int l3 = -1; l3< 2 ; l3++) {
+    for (int l1 = -1; l1< 3 ; l1+=2) {
+      for (int l2 = -1; l2< 3 ; l2+=2) {
+       for (int s  = -1; s < 3 ;  s+=2) {
+         wDecAmp     = WDecayAmplitudeKS_1ph(p3,l3,p1,l1,p2,l2,k,s);
+         spinSumAvrg = spinSumAvrg + real(wDecAmp*conj(wDecAmp)); 
+       }
+      }
+    }
+  }
+  return spinSumAvrg;
+      
+
+
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$
+//$$$   WffGammaME.f  ends above: 
+//$$$
+//$$$
+//$$$
+//$$$
+}
+
+
+
+//C========================================================== ==
+//C========================================================== ==
+//C these will be public for PHOTOS functions of W_ME class   ==
+//C========================================================== ==
+//C========================================================== ==
+
+double PhotosMEforW::SANC_WT(double PW[4],double PNE[4],double PMU[4],double PPHOT[4],double B_PW[4],double B_PNE[4],double B_PMU[4]){
+
+
+  //..        Exact amplitude square      
+  double AMPSQR=WDecayAmplitudeSqrKS_1ph(PW,PNE,PMU,PPHOT);
+
+  double EIKONALFACTOR=WDecayBornAmpSqrKS_1ph(B_PW,B_PNE,B_PMU)
+                       *WDecayEikonalSqrKS_1ph(PW,PNE,PMU,PPHOT);
+      
+    //..        New weight
+
+    //           cout << 'B_pne=',B_PNE  << endl;
+    //           cout << 'B_PMU=',B_PMU  << endl;
+    //           cout << 'bornie=',WDecayBornAmpSqrKS_1ph(B_PW,B_PNE,B_PMU)  << endl;
+
+    //           cout << ' '  << endl;
+    //           cout << '  pne=',pne  << endl;
+    //           cout << '  pmu=',pmu  << endl;
+    //           cout << 'pphot=',pphot  << endl;
+    //           cout << ' '  << endl;
+    //           cout << '  b_pw=',B_PW  << endl;
+    //           cout << '  b_pne=',B_PNE  << endl;
+    //           cout << 'b_pmu=',B_PMU  << endl;
+    //          cout << 'cori=',AMPSQR/EIKONALFACTOR,AMPSQR,EIKONALFACTOR  << endl;
+  return AMPSQR/EIKONALFACTOR;
+    //           
+    //          return (1-8*EMU*XPH*(1-COSTHG*BETA)*     
+    //                 (MCHREN+2*XPH*SQRT(MPASQR))/
+    //                 MPASQR**2/(1-MCHREN/MPASQR)/(4-MCHREN/MPASQR)) 
+}
+
+
+void PhotosMEforW::SANC_INIT1(double QB0,double QF20,double MF10,double MF20,double MB0){
+  qb =QB0;
+  qf2=QF20;
+  mf1=MF10;
+  mf2=MF20;
+  mb =MB0;
+}
+
+void PhotosMEforW::SANC_INIT(double ALPHA,int PHLUN){
+
+
+  static int SANC_MC_INIT=-123456789;
+
+  //...       Initialization of the W->l\nu\gamma 
+  //...       decay Matrix Element parameters 
+  if (SANC_MC_INIT==-123456789){
+    SANC_MC_INIT=1;
+
+    pi=4*atan(1.0);
+    qf1=0.0;                           // neutrino charge
+    mf1=1.0e-10;                       // newutrino mass
+    vf=1.0;                            // V&A couplings
+    af=1.0;
+    alphaI=1.0/ALPHA;
+    cw=0.881731727;                    // Weak Weinberg angle
+    sw=0.471751166;
+           
+
+    //...          An auxilary K&S vectors
+    bet[0]= 1.0;
+    bet[1]= 0.0722794881816159;
+    bet[2]=-0.994200045099866;
+    bet[3]= 0.0796363353729248; 
+
+    spV[0]= 0.0; 
+    spV[1]= 7.22794881816159e-2;
+    spV[2]=-0.994200045099866;     
+    spV[3]= 7.96363353729248e-2;
+
+    mcLUN = PHLUN;
+  } 
+}
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOtos Boson W correction weight
+//
+//    Purpose:  calculates correction weight due to amplitudes of 
+//              emission from W boson. It is ecact, but not verified
+//              for exponentiation yet.
+//              
+//              
+//              
+//
+//    Input Parameters:  Common /PHOEVT/, with photon added.
+//                       wt  to be corrected
+//                       
+//                       
+//                       
+//    Output Parameters: wt
+//
+//    Author(s):  G. Nanava, Z. Was               Created at:  13/03/03
+//                                                Last Update: 22/06/13
+//
+//----------------------------------------------------------------------
+void PhotosMEforW::PHOBWnlo(double *WT){
+  //  FILE *PHLUN = stdout;  // printouts from matrix element calculations
+  //                            directed with phlun still
+  int phlun=6;
+  double EMU,MCHREN,BETA,COSTHG,MPASQR,XPH;
+  double  PW[4],PMU[4],PPHOT[4],PNE[4];
+  double  B_PW[4],B_PNE[4],B_PMU[4]; //,AMPSQR;
+  static int i=1;
+  int I,IJ,I3,I4,JJ;
+  double MB,MF1,MF2,QB,QF2;
+  //  double  pi,sw,cw,alphaI,qb,mb,mf1,mf2,qf1,qf2,vf,af;
+
+
+  //!      write(*,*) 'IDPHOs=',IDPHO(1),IDPHO(2),IDPHO(3),IDPHO(4),IDPHO(5)
+  //!      write(*,*) 'IDPHOs=',pho.jdahep[1-i][1-i],npho
+  //!      write(*,*) 'hep.IDPHOs=',hep.IDhep(1),hep.IDhep(2),hep.IDhep(3),hep.IDhep(4),hep.IDhep(5)
+
+  //--
+        if(abs(pho.idhep[1-i])==24&&
+           abs(pho.idhep[pho.jdahep[1-i][1-i]-i  ])>=11&&
+           abs(pho.idhep[pho.jdahep[1-i][1-i]-i  ])<=16&&
+           abs(pho.idhep[pho.jdahep[1-i][1-i]-i+1])>=11&&
+           abs(pho.idhep[pho.jdahep[1-i][1-i]-i+1])<=16     ){
+
+         if(
+            abs(pho.idhep[pho.jdahep[1-i][1-i]-i  ])==11||
+            abs(pho.idhep[pho.jdahep[1-i][1-i]-i  ])==13||
+            abs(pho.idhep[pho.jdahep[1-i][1-i]-i  ])==15    ){
+           I=pho.jdahep[1-i][1-i];
+         }
+         else{
+           I=pho.jdahep[1-i][1-i]+1;
+         }
+         //..        muon energy   
+         EMU=pho.phep[I-i][4-i];
+         //..        muon mass square
+         MCHREN=fabs(pho.phep[I-i][4-i]*pho.phep[I-i][4-i]-pho.phep[I-i][3-i]*pho.phep[I-i][3-i]
+                    -pho.phep[I-i][2-i]*pho.phep[I-i][2-i]-pho.phep[I-i][1-i]*pho.phep[I-i][1-i]);
+         BETA=sqrt(1- MCHREN/ pho.phep[I-i][4-i]*pho.phep[I-i][4-i]);
+          COSTHG=((pho.phep[I-i][3-i]*pho.phep[pho.nhep-i][3-i]+pho.phep[I-i][2-i]*pho.phep[pho.nhep-i][2-i]
+                 +pho.phep[I-i][1-i]*pho.phep[pho.nhep-i][1-i])/
+                  sqrt(pho.phep[I-i][3-i]*pho.phep[I-i][3-i]+pho.phep[I-i][2-i]*pho.phep[I-i][2-i]+pho.phep[I-i][1-i]*pho.phep[I-i][1-i])   /
+                 sqrt(pho.phep[pho.nhep-i][3-i]*pho.phep[pho.nhep-i][3-i]+pho.phep[pho.nhep-i][2-i]*pho.phep[pho.nhep-i][2-i]+pho.phep[pho.nhep-i][1-i]*pho.phep[pho.nhep-i][1-i]));
+         MPASQR=pho.phep[1-i][4-i]*pho.phep[1-i][4-i];
+         XPH=pho.phep[pho.nhep-i][4-i];
+
+         //...       Initialization of the W->l\nu\gamma 
+         //...       decay Matrix Element parameters 
+         SANC_INIT(phocop_.alpha,phlun);
+
+
+         MB=pho.phep[1-i][4-i];//                      ! W boson mass
+         MF2=sqrt(MCHREN);//                 ! muon mass
+         I3=-1;
+         for(IJ=1;IJ<=hep.nhep;IJ++){
+            if(abs(hep.idhep[IJ-i])==24){ I3=IJ;} //! position of W 
+         }
+          if(I3==-1) {cout << " ERROR IN PHOBWnlo of PHOTS W-ME: I3= &2i"<<I3<<endl;}
+           if(
+              abs(hep.idhep[hep.jdahep[I3-i][1-i]-i  ])==11||
+              abs(hep.idhep[hep.jdahep[I3-i][1-i]-i  ])==13||
+              abs(hep.idhep[hep.jdahep[I3-i][1-i]-i  ])==15    ){ 
+            I4=hep.jdahep[I3-i][1-i];} //              ! position of lepton
+           else{
+            I4=hep.jdahep[I3-i][1-i]+1 ;  //         ! position of lepton
+          }
+
+          if (hep.idhep[I3-i]==-24) QB=-1.0;//  ! W boson charge
+          if (hep.idhep[I3-i]==+24) QB=+1.0;//   
+          if (hep.idhep[I4-i]>0.0) QF2=-1.0; // ! lepton charge
+          if (hep.idhep[I4-i]<0.0) QF2=+1.0;
+
+
+          //...          Particle momenta before foton radiation; effective Born level
+          for( JJ=1; JJ<=4;JJ++){
+            B_PW [(JJ % 4)]=hep.phep[I3-i][JJ-i];//  ! W boson
+            B_PNE[(JJ % 4)]=hep.phep[I3-i][JJ-i]-hep.phep[I4-i][JJ-i];// ! neutrino
+            B_PMU[(JJ % 4)]=hep.phep[I4-i][JJ-i]; // ! muon
+          }
+
+          //..        Particle monenta after photon radiation
+          for( JJ=1; JJ<=4;JJ++){
+             PW   [(JJ % 4)]=pho.phep[1-i][JJ-i];
+             PMU  [(JJ % 4)]=pho.phep[I-i][JJ-i];          
+             PPHOT[(JJ % 4)]=pho.phep[pho.nhep-i][JJ-i];
+             PNE  [(JJ % 4)]=pho.phep[1-i][JJ-i]-pho.phep[I-i][JJ-i]-pho.phep[pho.nhep-i][JJ-i];
+           }
+
+          // two options of calculating neutrino (spectator) mass
+           MF1=sqrt(fabs(B_PNE[0]*B_PNE[0]*-B_PNE[1]*B_PNE[1]-B_PNE[2]*B_PNE[2]-B_PNE[3]*B_PNE[3]));
+           MF1=sqrt(fabs(  PNE[0]*PNE[0]-  PNE[1]*PNE[1]-  PNE[2]*PNE[2]-  PNE[3]*PNE[3]));
+
+          SANC_INIT1(QB,QF2,MF1,MF2,MB);
+          *WT=(*WT)*SANC_WT(PW,PNE,PMU,PPHOT,B_PW,B_PNE,B_PMU);
+        }
+       //      write(*,*)   'AMPSQR/EIKONALFACTOR= ',   AMPSQR/EIKONALFACTOR
+}
+
+} // namespace Photospp
+
diff --git a/TEvtGen/Photos/forW-MEc.h b/TEvtGen/Photos/forW-MEc.h
new file mode 100644 (file)
index 0000000..d4fbdbd
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _forW_MEc_h_included_
+#define _forW_MEc_h_included_
+#include <complex>
+using std::complex;
+
+namespace Photospp
+{
+
+class PhotosMEforW
+{
+public:
+  static void   PHOBWnlo(double *WT);
+
+private:
+  static double WDecayEikonalSqrKS_1ph(double p3[4],double p1[4],double p2[4],double k[4]);
+  static double WDecayBornAmpSqrKS_1ph(double p3[4],double p1[4],double p2[4]);
+  static double WDecayAmplitudeSqrKS_1ph(double p3[4],double p1[4],double p2[4],double k[4]);
+  static double SANC_WT(double PW[4],double PNE[4],double PMU[4],double PPHOT[4],double B_PW[4],double B_PNE[4],double B_PMU[4]);
+  static void   SANC_INIT1(double QB0,double QF20,double MF10,double MF20,double MB0);
+  static void   SANC_INIT(double ALPHA,int PHLUN);
+
+private:
+  static complex<double> InProd_zero(double p1[4],int l1,double p2[4],int l2);
+  static double          InSqrt(double p[4],double q[4]);
+  static complex<double> InProd_mass(double p1[4],double m1,int l1,double p2[4],double m2,int l2);
+  static complex<double> BsFactor(int s,double k[4],double p[4],double m);
+  static complex<double> WDecayEikonalKS_1ph(double p3[4],double p1[4],double p2[4],double k[4],int s);
+  static complex<double> SoftFactor(int s,double k[4],double p1[4],double m1,double p2[4],double m2,double Gmass2);
+  static complex<double> TrMatrix_zero(double p1[4],double m1,int l1,double k[4],int s,double p2[4],double m2,int l2);
+  static complex<double> TrMatrix_mass(double p1[4],double m1,int l1,double k[4],double m,int s,double p2[4],double m2,int l2);
+  static complex<double> WDecayBornAmpKS_1ph(double p3[4],int l3,double p1[4],int l1,double p2[4],int l2);
+  static complex<double> WDecayAmplitudeKS_1ph(double p3[4],int l3,double p1[4],int l1,double p2[4],int l2,double k[4],int s);
+
+private:
+  // COMMON /Kleiss_Stirling/spV,bet
+  static double spV[4],bet[4];
+
+  // COMMON /mc_parameters/pi,sw,cw,alphaI,qb,mb,mf1,mf2,qf1,qf2,vf,af,mcLUN
+  static double pi,sw,cw,alphaI,qb,mb,mf1,mf2,qf1,qf2,vf,af,mcLUN;
+};
+
+} // namespace Photospp
+#endif
diff --git a/TEvtGen/Photos/forZ-MEc.cxx b/TEvtGen/Photos/forZ-MEc.cxx
new file mode 100644 (file)
index 0000000..2072346
--- /dev/null
@@ -0,0 +1,528 @@
+#include "forZ-MEc.h"
+#include "Photos.h"
+#include "PhotosUtilities.h"
+#include "PH_HEPEVT_Interface.h"
+#include "f_Init.h"
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <iostream>
+using std::cout;
+using std::endl;
+using namespace Photospp;
+using namespace PhotosUtilities;
+
+namespace Photospp
+{
+
+// from photosC.cxx
+
+extern void PHODMP();
+extern double PHINT(int idumm);
+// ----------------------------------------------------------------------
+// PROVIDES ELECTRIC CHARGE AND WEAK IZOSPIN OF A FAMILY FERMION
+// IDFERM=1,2,3,4 DENOTES NEUTRINO, LEPTON, UP AND DOWN QUARK
+// NEGATIVE IDFERM=-1,-2,-3,-4, DENOTES ANTIPARTICLE
+// IHELIC=+1,-1 DENOTES RIGHT AND LEFT HANDEDNES ( CHIRALITY)
+// SIZO3 IS THIRD PROJECTION OF WEAK IZOSPIN (PLUS MINUS HALF)
+// AND CHARGE IS ELECTRIC CHARGE IN UNITS OF ELECTRON CHARGE
+// KOLOR IS A QCD COLOUR, 1 FOR LEPTON, 3 FOR QUARKS
+//
+//     called by : EVENTE, EVENTM, FUNTIH, .....
+// ----------------------------------------------------------------------
+
+void PhotosMEforZ::GIVIZO(int IDFERM,int IHELIC,double *SIZO3,double *CHARGE,int *KOLOR) {
+  //
+  int IH, IDTYPE, IC, LEPQUA, IUPDOW; 
+  if (IDFERM==0 || abs(IDFERM)>4 || abs(IHELIC)!=1){
+    cout << "STOP IN GIVIZO: WRONG PARAMS" << endl;
+    exit(0);
+   }
+
+  IH  =IHELIC;
+  IDTYPE =abs(IDFERM);
+  IC  =IDFERM/IDTYPE;
+  LEPQUA=(int)(IDTYPE*0.4999999);
+  IUPDOW=IDTYPE-2*LEPQUA-1;
+  *CHARGE  =(-IUPDOW+2.0/3.0*LEPQUA)*IC;
+  *SIZO3   =0.25*(IC-IH)*(1-2*IUPDOW);
+  *KOLOR=1+2*LEPQUA;
+  //** NOTE THAT CONVENTIONALY Z0 COUPLING IS
+  //** XOUPZ=(SIZO3-CHARGE*SWSQ)/SQRT(SWSQ*(1-SWSQ))
+  return;
+}
+
+
+////////////////////////////////////////////////////////////////////////////
+///                                                                       //
+/// This routine provides unsophisticated Born differential cross section //
+/// at the crude x-section level, with Z and gamma s-chanel exchange.     //
+///////////////////////////////////////////////////////////////////////////
+double PhotosMEforZ::PHBORNM(double svar,double costhe,double T3e,double qe,double T3f,double qf,int NCf){
+
+  double   s,Sw2,MZ,MZ2,GammZ,AlfInv,GFermi;  // t,MW,MW2,
+  double   Ve,Ae,thresh;          //  sum,deno,
+  double   xe,yf,xf,ye,ff0,ff1,amx2,amfin,Vf,Af;
+  double   ReChiZ,SqChiZ,RaZ;     //,RaW,ReChiW,SqChiW;
+  double   Born;                  //, BornS;
+  //  int  KeyZet,HadMin,KFbeam;
+  //  int  i,ke,KFfin,kf,IsGenerated,iKF;
+  int  KeyWidFix;
+  AlfInv= 137.0359895;
+  GFermi=1.16639e-5;
+
+  //--------------------------------------------------------------------
+  s = svar;
+  //------------------------------
+  //     EW paratemetrs taken from BornV
+  MZ=91.187;
+  GammZ=2.50072032;
+  Sw2=.22276773;
+  //------------------------------
+  // Z and gamma couplings to beams (electrons)
+  // Z and gamma couplings to final fermions
+  // Loop over all flavours defined in m_xpar(400+i)
+
+
+  //------ incoming fermion
+  Ve=  2*T3e -4*qe*Sw2;
+  Ae=  2*T3e;
+  //------ final fermion couplings
+  amfin = 0.000511; //  m_xpar(kf+6)
+  Vf =  2*T3f -4*qf*Sw2;
+  Af =  2*T3f;
+  if(fabs(costhe) > 1.0){
+    cout << "+++++STOP in PHBORN: costhe>0 =" << costhe << endl;
+    exit(0);
+  }
+  MZ2  = MZ*MZ;
+  RaZ  = (GFermi *MZ2 *AlfInv  )/( sqrt(2.0) *8.0 *PI); //
+  RaZ  = 1/(16.0*Sw2*(1.0-Sw2));
+  KeyWidFix = 1;       // fixed width
+  KeyWidFix = 0;       // variable width
+  if( KeyWidFix == 0 ){
+    ReChiZ=(s-MZ2)*s/((s-MZ2)*(s-MZ2)+(GammZ*s/MZ)*(GammZ*s/MZ)) *RaZ;     // variable width
+    SqChiZ=      s*s/((s-MZ2)*(s-MZ2)+(GammZ*s/MZ)*(GammZ*s/MZ)) *RaZ*RaZ; // variable width
+  }
+  else{
+      ReChiZ=(s-MZ2)*s/((s-MZ2)*(s-MZ2)+(GammZ*MZ)*(GammZ*MZ)) *RaZ;     // fixed width
+      SqChiZ=      s*s/((s-MZ2)*(s-MZ2)+(GammZ*MZ)*(GammZ*MZ)) *RaZ*RaZ; // fixed width
+  }
+  xe= Ve*Ve +Ae*Ae;
+  xf= Vf*Vf +Af*Af;
+  ye= 2*Ve*Ae;
+  yf= 2*Vf*Af;
+  ff0= qe*qe*qf*qf +2*ReChiZ*qe*qf*Ve*Vf +SqChiZ*xe*xf;
+  ff1=             +2*ReChiZ*qe*qf*Ae*Af +SqChiZ*ye*yf;
+  Born    = (1.0+ costhe*costhe)*ff0 +2.0*costhe*ff1;
+  // Colour factor
+  Born = NCf*Born;
+  // Crude method of correcting threshold, cos(theta) depencence incorrect!!!
+  if(    svar <  4.0*amfin*amfin){ 
+    thresh=0.0;
+  }
+  else if(svar < 16.0*amfin*amfin){
+    amx2=4.0*amfin*amfin/svar;
+    thresh=sqrt(1.0-amx2)*(1.0+amx2/2.0);
+  }
+  else{
+    thresh=1.0;
+  }
+
+  Born= Born*thresh;
+  return Born;
+}
+
+
+// ----------------------------------------------------------------------
+// THIS ROUTINE CALCULATES  BORN ASYMMETRY.
+// IT EXPLOITS THE FACT THAT BORN X. SECTION = A + B*C + D*C**2
+//
+//     called by : EVENTM
+// ----------------------------------------------------------------------
+//
+double PhotosMEforZ::AFBCALC(double SVAR,int IDEE,int IDFF){
+  int KOLOR,KOLOR1;
+  double T3e,qe,T3f,qf,A,B;
+  GIVIZO(IDEE,-1,&T3e,&qe,&KOLOR);
+  GIVIZO(IDFF,-1,&T3f,&qf,&KOLOR1);
+
+  A=PHBORNM(SVAR,0.5,T3e,qe,T3f,qf,KOLOR*KOLOR1);
+  B=PHBORNM(SVAR,-0.5,T3e,qe,T3f,qf,KOLOR*KOLOR1);
+  return (A-B)/(A+B)*5.0/2.0 *3.0/8.0;
+}
+
+
+int PhotosMEforZ::GETIDEE(int IDE){
+
+  int IDEE;
+  IDEE=-555;
+  if((IDE==11)       || (IDE== 13) || (IDE== 15)){
+    IDEE=2;
+  }
+  else if((IDE==-11) || (IDE==-13) || (IDE==-15)){
+    IDEE=-2;
+  }
+  else if((IDE== 12) || (IDE== 14) || (IDE== 16)){
+    IDEE=1;
+  }
+  else if((IDE==-12) || (IDE==-14) || (IDE==-16)){
+    IDEE=-1;
+  }
+  else if((IDE==  1) || (IDE==  3) || (IDE==  5)){
+    IDEE=4;
+  }
+  else if((IDE== -1) || (IDE== -3) || (IDE== -5)){
+    IDEE=-4;
+  }
+  else if((IDE==  2) || (IDE==  4) || (IDE==  6)){
+    IDEE=3;
+  }
+  else if((IDE==- 2) || (IDE== -4) || (IDE== -6)){
+    IDEE=-3;
+  }
+  if(IDEE==-555) {cout << " ERROR IN GETIDEE of PHOTS Z-ME: I3= &4i"<<IDEE<<endl;}
+  return IDEE;
+}
+
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHASYZ:   PHotosASYmmetry of Z
+//
+//    Purpose:  Calculates born level asymmetry for Z
+//              between distributions (1-C)**2 and (1+C)**2
+//              At present dummy, requrires effective Z and gamma 
+//              Couplings and also spin polarization states
+//              For initial and final states.
+//              To be correct this function need to be tuned
+//              to host generator. Axes orientation polarisation
+//              conventions etc etc. 
+//              Modularity of PHOTOS would break. 
+//
+//    Input Parameters:   SVAR
+//
+//    Output Parameters:  Function value
+//
+//    Author(s):  Z. Was                          Created at:  10/12/05
+//                                                Last Update: 19/06/13
+//
+//----------------------------------------------------------------------
+double PhotosMEforZ::PHASYZ(double SVAR,int IDE, int IDF){
+
+  double AFB;
+  int IDEE,IDFF;
+
+  IDEE=abs(GETIDEE(IDE));
+  IDFF=abs(GETIDEE(IDF));
+  AFB= -AFBCALC(SVAR,IDEE,IDFF);
+  //      AFB=0
+  return 4.0/3.0*AFB;
+  //      write(*,*) 'IDE=',IDE,'  IDF=',IDF,'  SVAR=',SVAR,'AFB=',AFB
+}
+
+//----------------------------------------------------------------------
+//
+//    PHWTNLO:   PHotosWTatNLO
+//
+//    Purpose:  calculates instead of interference weight
+//              complete NLO weight for vector boson decays
+//              of pure vector (or pseudovector) couplings
+//              Proper orientation of beams required.
+//              This is not standard in PHOTOS.
+//              At NLO more tuning than in standard is needed.
+//               
+//              
+//
+//    Input Parameters:   as in function declaration
+//
+//    Output Parameters:  Function value
+//
+//    Author(s):  Z. Was                          Created at:  08/12/05
+//                                                Last Update: 20/06/13
+//
+//----------------------------------------------------------------------
+double PhotosMEforZ::Zphwtnlo(double svar,double xk,int IDHEP3,int IREP,double qp[4],double qm[4],double ph[4],double pp[4],double pm[4],double COSTHG,double BETA,double th1,int IDE,int IDF){
+  double C,s,xkaM,xkaP,t,u,t1,u1,BT,BU;
+  double waga,wagan2;
+  static int i=1;
+  int IBREM;
+
+
+  // IBREM is spurious but it numbers branches of MUSTRAAL
+  IBREM=1;
+  if (IREP==1)  IBREM=-1;
+
+  // we calculate C and S, note that TH1 exists in MUSTRAAL as well. 
+
+  C=cos(th1); // this parameter is calculated outside of the class
+
+  // from off line application we had:
+  if(IBREM==-1) C=-C;
+  // ... we may want to re-check it. 
+  s=sqrt(1.0-C*C);
+
+  if (IBREM==1){
+    xkaM=(qp[4-i]*ph[4-i]-qp[3-i]*ph[3-i]-qp[2-i]*ph[2-i]-qp[1-i]*ph[1-i])/xk;
+    xkaP=(qm[4-i]*ph[4-i]-qm[3-i]*ph[3-i]-qm[2-i]*ph[2-i]-qm[1-i]*ph[1-i])/xk;
+  }
+  else{
+    xkaP=(qp[4-i]*ph[4-i]-qp[3-i]*ph[3-i]-qp[2-i]*ph[2-i]-qp[1-i]*ph[1-i])/xk;
+    xkaM=(qm[4-i]*ph[4-i]-qm[3-i]*ph[3-i]-qm[2-i]*ph[2-i]-qm[1-i]*ph[1-i])/xk;
+  }   
+
+  //        XK=2*PHEP(4,nhep)/PHEP(4,1)/xphmax   ! it is not used becuse here
+  //                                             ! order of emissions is meaningless
+  //
+  //        DELTA=2*PHEP(5,4)**2/svar/(1+(1-XK)**2)*(xKAP/xKAM+xKAM/xKAP)
+  //        waga=svar/4./xkap
+  //        waga=waga*(1.D0-COSTHG*BETA) ! sprawdzone 1= svar/xKAp/4   * (1.D0-COSTHG*BETA)
+  //        waga=waga*(1-delta) /wt2 ! sprawdzone ze to jest =2/(1.D0+COSTHG*BETA)
+  //                                 ! czyli ubija de-interferencje
+
+  // this is true only for intermediate resonances with afb=0!
+  t =2*(qp[4-i]*pp[4-i]-qp[3-i]*pp[3-i]-qp[2-i]*pp[2-i]-qp[1-i]*pp[1-i]);
+  u =2*(qm[4-i]*pp[4-i]-qm[3-i]*pp[3-i]-qm[2-i]*pp[2-i]-qm[1-i]*pp[1-i]);
+  u1=2*(qp[4-i]*pm[4-i]-qp[3-i]*pm[3-i]-qp[2-i]*pm[2-i]-qp[1-i]*pm[1-i]);
+  t1=2*(qm[4-i]*pm[4-i]-qm[3-i]*pm[3-i]-qm[2-i]*pm[2-i]-qm[1-i]*pm[1-i]);
+
+  // basically irrelevant lines  ...
+  t =t - (qp[4-i]*qp[4-i]-qp[3-i]*qp[3-i]-qp[2-i]*qp[2-i]-qp[1-i]*qp[1-i]);
+  u =u - (qm[4-i]*qm[4-i]-qm[3-i]*qm[3-i]-qm[2-i]*qm[2-i]-qm[1-i]*qm[1-i]);
+  u1=u1- (qp[4-i]*qp[4-i]-qp[3-i]*qp[3-i]-qp[2-i]*qp[2-i]-qp[1-i]*qp[1-i]);
+  t1=t1- (qm[4-i]*qm[4-i]-qm[3-i]*qm[3-i]-qm[2-i]*qm[2-i]-qm[1-i]*qm[1-i]);
+
+  // we adjust to what is f-st,s-nd beam flavour 
+  if (IDE*IDHEP3>0){
+    BT=1.0+PHASYZ(svar,IDE,IDF);
+    BU=1.0-PHASYZ(svar,IDE,IDF);
+  }
+  else{
+    BT=1.0-PHASYZ(svar,IDE,IDF);
+    BU=1.0+PHASYZ(svar,IDE,IDF);
+  }  
+  wagan2=2*(BT*t*t+BU*u*u+BT*t1*t1+BU*u1*u1)
+    /(1+(1-xk)*(1-xk))* 2.0/(BT*(1-C)*(1-C)+BU*(1+C)*(1+C))/svar/svar;
+
+  //!        waga=waga*wagan2
+  //!        waga=waga*(1-delta) /wt2 ! sprawdzone ze to jest =2/(1.D0+COSTHG*BETA)
+  waga=2/(1.0+COSTHG*BETA)*wagan2;  
+  //!     %       * svar/4./xkap*(1.D0-COSTHG*BETA)*sqrt(1.0-xk)
+
+  if(wagan2<=3.8) return waga;
+
+  // 
+  // exceptional case  wagan2>3.8
+  // it should correspond to extremely high bremssthahlung in multiphot conf.  
+  //
+  FILE *PHLUN = stdout;
+
+
+  //         fprintf(PHLUN,"") 'phwtnlo= ',phwtnlo
+  //         fprintf(PHLUN,"") 'idhepy= ',IDHEP[1-i],IDHEP[2-i],IDHEP[3-i],IDHEP[4-i],IDHEP(5)
+  fprintf(PHLUN," IDE= %i  IDF= %i",IDE,IDF);
+  fprintf(PHLUN,"bt,bu,bt+bu= %f %f %f",BT,BU,BT+BU);
+  PHODMP();  // we will activate this once PHODMP(); is re-written
+
+  fprintf(PHLUN," "); 
+  fprintf(PHLUN,"%i %i <-- IREP,IBREM", IREP,IBREM);
+  //!        fprintf(PHLUN,"%f %f %f %f %f") 'pneutr= ',phomom_.pneutr[0],phomom_.pneutr[1],phomom_.pneutr[2],phomom_.pneutr[3],phomom_.pneutr[4];
+  fprintf(PHLUN,"%f %f %f %f  qp    = ",qp[0],qp[1],qp[2],qp[3]);
+  fprintf(PHLUN,"%f %f %f %f  qm    = ",qm[0],qm[1],qm[2],qm[3]);
+  fprintf(PHLUN," ");
+  fprintf(PHLUN,"%f %f %f %f  ph    = ",ph[0],ph[1],ph[2],ph[3]);
+  //        fprintf(PHLUN,"") 'p1= ',PHEP(1,1),PHEP(2,1),PHEP(3,1),PHEP(4,1)
+  //        fprintf(PHLUN,"") 'p2= ',PHEP(1,2),PHEP(2,2),PHEP(3,2),PHEP(4,2)
+  //        fprintf(PHLUN,"") 'p3= ',PHEP(1,3),PHEP(2,3),PHEP(3,3),PHEP(4,3)
+  //        fprintf(PHLUN,"") 'p4= ',PHEP(1,4),PHEP(2,4),PHEP(3,4),PHEP(4,4)
+  //        fprintf(PHLUN,"") 'p5= ',PHEP(1,5),PHEP(2,5),PHEP(3,5),PHEP(4,5)
+
+  fprintf(PHLUN," c= %f theta= %f",C,th1);
+  //         fprintf(PHLUN,"")  'photos waga daje ... IBREM=',IBREM,' waga=',waga
+  //         fprintf(PHLUN,"") 'xk,COSTHG,c',xk,COSTHG,c
+  //         fprintf(PHLUN,"") svar/4./xkap*(1.D0-COSTHG*BETA), 
+  //     $   (1-delta) /wt2 *(1.D0+COSTHG*BETA)/2, wagan2
+  //         fprintf(PHLUN,"") ' delta, wt2,beta',  delta, wt2,beta
+  fprintf(PHLUN,"   -  ");
+  fprintf(PHLUN,"t,u       = %f %f",t,u);
+  fprintf(PHLUN,"t1,u1     = %f %f",t1,u1);
+  fprintf(PHLUN,"sredniaki = %f %f",svar*(1-C)/2,svar*(1+C)/2);
+  //      !         fprintf(PHLUN,"") 'xk= %f c= %f COSTHG=  %f' ,xk,c,COSTHG
+  fprintf(PHLUN,"PHASYZ(svar)=',%f,' svar= %f',' waga= %f",PHASYZ(svar,IDE,IDF),svar,waga);
+  fprintf(PHLUN,"  -  ");
+  fprintf(PHLUN,"BT-part= %f BU-part= %f",
+                 2*(BT*t*t+BT*t1*t1)
+                   /(1+(1-xk)*(1-xk))* 2.0/(BT*(1-C)*(1-C))/svar/svar,
+                 2*(BU*u*u+BU*u1*u1)
+                  /(1+(1-xk)*(1-xk))* 2.0/(BU*(1+C)*(1+C))/svar/svar);
+  fprintf(PHLUN,"BT-part*BU-part= %f wagan2= %f",
+                 2*(BT*t*t+BT*t1*t1)
+                   /(1+(1-xk)*(1-xk))* 2.0/(BT*(1-C)*(1-C))/svar/svar
+                *2*(BU*u*u+BU*u1*u1)
+                  /(1+(1-xk)*(1-xk))* 2.0/(BU*(1+C)*(1+C))/svar/svar,  wagan2);
+
+  fprintf(PHLUN,"wagan2= %f",wagan2);
+  fprintf(PHLUN," ###################  ");
+
+
+  wagan2=3.8; //  ! overwrite 
+  waga=2/(1.0+COSTHG*BETA)*wagan2 ; 
+          //     %       * svar/4./xkap*(1.D0-COSTHG*BETA)*sqrt(1.0-xk)
+
+  return waga;
+
+}
+
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHWTNLO:   PHotosWTatNLO
+//
+//    Purpose:  calculates instead of interference weight
+//              complete NLO weight for vector boson decays
+//              of pure vector (or pseudovector) couplings
+//              Proper orientation of beams required.
+//              Uses Zphwtnlo encapsulating actual matrix element
+//              At NLO more tuning on kinematical conf.
+//              than in standard is needed.
+//              Works with KORALZ and KKM// 
+//              Note some commented out commons from MUSTAAL, KORALZ
+//
+//    Input Parameters:   Common /PHOEVT/ /PHOPS/ /PHOREST/ /PHOPRO/
+//
+//    Output Parameters:  Function value
+//
+//    Author(s):  Z. Was                          Created at:  08/12/05
+//                                                Last Update: 23/06/13
+//
+//----------------------------------------------------------------------
+
+double PhotosMEforZ::phwtnlo(){
+  // fi3 orientation of photon, fi1,th1 orientation of neutral
+
+      //      COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
+
+      //      COMMON /PHOREST/ FI3,fi1,th1
+      //      COMMON /PHWT/ BETA,WT1,WT2,WT3
+      //      COMMON/PHOPRO/PROBH,CORWT,XF,IREP
+  //      COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
+  //  static double PI=3.141592653589793238462643;
+  static int i=1;
+  int K,L,IDHEP3,IDUM=0;
+  int IDE,IDF;
+  double  QP[4],QM[4],PH[4],QQ[4],PP[4],PM[4],QQS[4];
+  double XK,ENE,svar;
+
+       //      REAL*8 s,c,svar,xkaM,xkaP,xk,phwtnlo,xdumm,PHINT
+       //      REAL*8 ENE,a,t,u,t1,u1,wagan2,waga,PHASYZ,BT,BU,ENEB
+       //      INTEGER IBREM,K,L,IREP,IDUM,IDHEP3
+       //      integer icont,ide,idf
+       //      REAL*8 delta
+
+/////////////////////
+//         phlupa(299500);
+
+
+/////////////////////
+//        phlupa(299500);
+
+  XK=2.0*pho.phep[pho.nhep-i][4-i]/pho.phep[1-i][4-i];
+
+//  XK=2.0*pho.phep[pho.nhep-i][4-i]/pho.phep[1-i][4-i]/phophs_.xphmax;  // it is not used becuse here
+                                                               //order of emissions is meaningless
+  if(pho.nhep<=4) XK=0.0;
+  // the mother must be Z or gamma*  !!!!
+      
+  if (XK>1.0e-10 &&(pho.idhep[1-i]==22 || pho.idhep[1-i]==23)){
+
+    //        write(*,*) 'nhep=',nhep
+    //      DO K=1,3 ENDDO
+    //      IF (K.EQ.1) IBREM= 1
+    //      IF (K.EQ.2) IBREM=-1
+    //      ICONT=ICONT+1
+    //      IBREM=IBREX        ! that will be input parameter.
+    //      IBREM=IBREY        ! that IS now   input parameter.
+
+    // We initialize twice 4-vectors, here and again later after boost 
+    // must be the same way. Important is how the reduction procedure will work.
+    // It seems at present that the beams must be translated to be back to back.
+    // this may be done after initialising, thus on 4-vectors.
+
+    for( K=1;K<5;K++){
+      PP[K-i]=pho.phep[1-i][K-i];
+      PM[K-i]=pho.phep[2-i][K-i];
+      QP[K-i]=pho.phep[3-i][K-i];
+      QM[K-i]=pho.phep[4-i][K-i];
+      PH[K-i]=pho.phep[pho.nhep-i][K-i];
+      QQ[K-i]=0.0;
+      QQS[K-i]=QP[K-i]+QM[K-i];
+    }
+
+
+    PP[4-i]=(pho.phep[1-i][4-i]+pho.phep[2-i][4-i])/2.0;
+    PM[4-i]=(pho.phep[1-i][4-i]+pho.phep[2-i][4-i])/2.0;
+    PP[3-i]= PP[4-i];
+    PM[3-i]=-PP[4-i];
+        
+    for(L=5;L<=pho.nhep-1;L++){
+      for( K=1;K<5;K++){      
+       QQ [K-i]=QQ [K-i]+ pho.phep[L-i][K-i];
+       QQS[K-i]=QQS[K-i]+ pho.phep[L-i][K-i];
+      }
+    }       
+
+    // go to the restframe of 3        
+    PHOB(1,QQS,QP);
+    PHOB(1,QQS,QM);
+    PHOB(1,QQS,QQ);
+    ENE=(QP[4-i]+QM[4-i]+QQ[4-i])/2;
+
+    // preserve direction of emitting particle and wipeout QQ 
+    if (phopro_.irep==1){
+    double  a=sqrt(ENE*ENE-pho.phep[3-i][5-i]*pho.phep[3-i][5-i])/sqrt(QM[4-i]*QM[4-i]-pho.phep[3-i][5-i]*pho.phep[3-i][5-i]);
+      QM[1-i]= QM[1-i]*a;
+      QM[2-i]= QM[2-i]*a;
+      QM[3-i]= QM[3-i]*a;
+      QP[1-i]=-QM[1-i];
+      QP[2-i]=-QM[2-i];
+      QP[3-i]=-QM[3-i];
+    }
+    else{
+    double  a=sqrt(ENE*ENE-pho.phep[3-i][5-i]*pho.phep[3-i][5-i])/sqrt(QP[4-i]*QP[4-i]-pho.phep[3-i][5-i]*pho.phep[3-i][5-i]);
+      QP[1-i]= QP[1-i]*a;
+      QP[2-i]= QP[2-i]*a;
+      QP[3-i]= QP[3-i]*a;
+      QM[1-i]=-QP[1-i];
+      QM[2-i]=-QP[2-i];
+      QM[3-i]=-QP[3-i];
+    }
+    QP[4-i]=ENE;
+    QM[4-i]=ENE;
+    // go back to reaction frame (QQ eliminated) 
+    PHOB(-1,QQS,QP);
+    PHOB(-1,QQS,QM);
+    PHOB(-1,QQS,QQ);
+
+    svar=pho.phep[1-i][4-i]*pho.phep[1-i][4-i];
+
+    IDE=hep.idhep[1-i];
+    IDF=hep.idhep[4-i];
+    if(abs(hep.idhep[4-i])==abs(hep.idhep[3-i])) IDF=hep.idhep[3-i];
+
+    IDHEP3=pho.idhep[3-i];
+    return Zphwtnlo(svar,XK,IDHEP3,phopro_.irep,QP,QM,PH,PP,PM,phophs_.costhg,phwt_.beta,phorest_.th1,IDE,IDF);
+  }
+  else{
+      // in other cases we just use default setups.
+    return PHINT(IDUM);
+  }
+}
+
+} // namespace Photospp
+
diff --git a/TEvtGen/Photos/forZ-MEc.h b/TEvtGen/Photos/forZ-MEc.h
new file mode 100644 (file)
index 0000000..514f702
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef _forZ_MEc_h_included_
+#define _forZ_MEc_h_included_
+
+namespace Photospp
+{
+
+class PhotosMEforZ
+{
+public:
+  static double phwtnlo();
+
+private:
+  static void   GIVIZO(int idferm,int ihelic,double *sizo3,double *charge,int *kolor);
+  static double PHBORNM(double svar,double costhe,double T3e,double qe,double T3f,double qf,int Ncf);
+  static double AFBCALC(double SVAR,int IDEE,int IDFF);
+  static int    GETIDEE(int IDE);
+  static double PHASYZ(double SVAR, int IDE, int IDF);
+  static double Zphwtnlo(double svar,double xk, int IDHEP3, int IREP, double qp[4], double qm[4],double ph[4], double pp[4], double pm[4], double COSTHG, double BETA, double th1, int IDE, int IDF);
+};
+
+} // namespace Photospp
+
+#endif
diff --git a/TEvtGen/Photos/photosC.cxx b/TEvtGen/Photos/photosC.cxx
new file mode 100644 (file)
index 0000000..0b12581
--- /dev/null
@@ -0,0 +1,2399 @@
+#include "Photos.h"
+#include "forW-MEc.h"
+#include "forZ-MEc.h"
+#include "Log.h"
+#include <cstdio>
+#include <cmath>
+#include <iostream>
+#include "f_Init.h"
+#include "PH_HEPEVT_Interface.h"
+#include "PhotosUtilities.h"
+
+using std::cout;
+using std::endl;
+using std::max;
+using namespace Photospp;
+using namespace PhotosUtilities;
+
+namespace Photospp
+{
+
+// Declaration of structs defined in f_Init.h
+struct PHOSTA phosta_;
+struct PHLUPY phlupy_;
+struct TOFROM tofrom_;
+struct PHNUM  phnum_;
+struct PHOLUN pholun_;
+struct PHOREST phorest_;
+struct PHOCMS  phocms_;
+struct PHOMOM  phomom_;
+struct PHOPHS  phophs_;
+struct PHOCORWT phocorwt_;
+struct PHOPRO  phopro_;
+struct PHOCOP  phocop_;
+struct PHWT    phwt_;
+struct PHOKEY  phokey_;
+struct PHOEXP  phoexp_;
+
+
+struct HEPEVT hep;
+struct HEPEVT pho;
+
+/** Logical function used deep inside algorithm to check if emitted
+    particles are to emit. For mother it blocks the vertex, 
+    but for daughters individually: bad sisters will not prevent electron to emit.
+    top quark has further exception method. */
+bool F(int m, int i)
+{ 
+  return Photos::IPHQRK_setQarknoEmission(0,i) && (i<= 41 || i>100)
+     && i != 21 
+     && i != 2101 && i !=3101 && i !=3201 
+     && i != 1103 && i !=2103 && i !=2203 
+     && i != 3103 && i !=3203 && i !=3303;
+}
+
+
+// --- can be used with  VARIANT A. For B use  PHINT1 or 2 --------------
+//----------------------------------------------------------------------
+//
+//    PHINT:   PHotos universal INTerference correction weight
+//
+//    Purpose:  calculates correction weight as expressed by
+//               formula (17) from CPC 79 (1994), 291. 
+//
+//    Input Parameters:  Common /PHOEVT/, with photon added.
+//                                          
+//    Output Parameters: correction weight
+//
+//    Author(s):  Z. Was, P.Golonka               Created at:  19/01/05
+//                                                Last Update: 23/06/13
+//
+//----------------------------------------------------------------------
+
+double PHINT(int IDUM){
+
+  double PHINT2;
+  double EPS1[4],EPS2[4],PH[4],PL[4];
+  static int i=1;
+  int K,L;
+  //      DOUBLE PRECISION EMU,MCHREN,BETA,phophs_.costhg,MPASQR,XPH, XC1, XC2
+  double  XNUM1,XNUM2,XDENO,XC1,XC2;
+
+  //      REAL*8 PHOCHA
+  //--
+
+  //       Calculate polarimetric vector: ph, eps1, eps2 are orthogonal
+
+  for( K=1;K<=4;K++){
+    PH[K-i]= pho.phep[pho.nhep-i][K-i];
+    EPS2[K-i]=1.0;
+  }
+
+
+  PHOEPS(PH,EPS2,EPS1);
+  PHOEPS(PH,EPS1,EPS2);
+    
+  XNUM1=0.0;
+  XNUM2=0.0;
+  XDENO=0.0;
+
+  for( K=pho.jdahep[1-i][1-i]; K<=pho.nhep-1;K++){  //! or jdahep[1-i][2-i]
+      
+    // momenta of charged particle in PL
+
+    for( L=1;L<=4;L++) PL[L-i]=pho.phep[K-i][L-i]; 
+
+    // scalar products: epsilon*p/k*p
+
+    XC1 = - PHOCHA(pho.idhep[K-i]) * 
+         ( PL[1-i]*EPS1[1-i] + PL[2-i]*EPS1[2-i] + PL[3-i]*EPS1[3-i] ) / 
+        ( PH[4-i]*PL[4-i]   - PH[1-i]*PL[1-i]   - PH[2-i]*PL[2-i] - PH[3-i]*PL[3-i] );
+     
+    XC2 = - PHOCHA(pho.idhep[K-i]) * 
+         ( PL[1-i]*EPS2[1-i] + PL[2-i]*EPS2[2-i] + PL[3-i]*EPS2[3-i] ) / 
+        ( PH[4-i]*PL[4-i]   - PH[1-i]*PL[1-i]   - PH[2-i]*PL[2-i] - PH[3-i]*PL[3-i] );
+       
+
+    // accumulate the currents
+    XNUM1  = XNUM1+XC1;
+    XNUM2  = XNUM2+XC2;
+
+    XDENO = XDENO + XC1*XC1 + XC2*XC2;
+  }
+
+  PHINT2=(XNUM1*XNUM1 + XNUM2*XNUM2) / XDENO;
+  return (XNUM1*XNUM1 + XNUM2*XNUM2) / XDENO;
+
+}
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHINT:   PHotos INTerference (Old version kept for tests only.
+//
+//    Purpose:  Calculates interference between emission of photons from
+//              different possible chaged daughters stored in
+//              the  HEP common /PHOEVT/.  
+//
+//    Input Parameter:    commons /PHOEVT/ /PHOMOM/ /PHOPHS/
+//    
+//
+//    Output Parameters:  
+//                        
+//
+//    Author(s):  Z. Was,                         Created at:  10/08/93
+//                                                Last Update: 15/03/99
+//
+//----------------------------------------------------------------------
+
+double PHINT1(int IDUM){
+
+  double PHINT;
+
+  /*
+      DOUBLE PRECISION phomom_.mchsqr,phomom_.mnesqr
+      REAL*8 PNEUTR
+      COMMON/PHOMOM/phomom_.mchsqr,phomom_.mnesqr,PNEUTR(5)
+      DOUBLE PRECISION phophs_.costhg,SINTHG
+      REAL*8 XPHMAX,phophs_.xphoto
+      COMMON/PHOPHS/XPHMAX,phophs_.xphoto,phophs_.costhg,SINTHG
+
+  */
+  double MPASQR,XX,BETA;
+  bool IFINT;
+  int K,IDENT; 
+  static int i=1;
+  IDENT=pho.nhep;
+  //
+  for(K=pho.jdahep[1-i][2-i]; K>=pho.jdahep[1-i][1-i];K--){
+    if(pho.idhep[K-i]!=22){
+      IDENT=K;
+      break;
+    }
+  }
+
+  // check if there is a photon
+  IFINT= pho.nhep>IDENT;
+  // check if it is two body + gammas reaction
+  IFINT= IFINT && (IDENT-pho.jdahep[1-i][1-i])==1;
+  // check if two body was particle antiparticle
+  IFINT= IFINT && pho.idhep[pho.jdahep[1-i][1-i]-i] == -pho.idhep[IDENT-i];
+  // check if particles were charged
+  IFINT= IFINT && PHOCHA(pho.idhep[IDENT-i]) != 0;
+  // calculates interference weight contribution
+  if(IFINT){
+    MPASQR = pho.phep[1-i][5-i]*pho.phep[1-i][5-i];
+    XX=4.0*phomom_.mchsqr/MPASQR*(1.0-phophs_.xphoto)/(1.0-phophs_.xphoto+(phomom_.mchsqr-phomom_.mnesqr)/MPASQR)/(1.0-phophs_.xphoto+(phomom_.mchsqr-phomom_.mnesqr)/MPASQR);
+    BETA=sqrt(1.0-XX);
+    PHINT  = 2.0/(1.0+phophs_.costhg*phophs_.costhg*BETA*BETA);
+  }
+  else{
+    PHINT  = 1.0;
+  }
+
+  return  PHINT;
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHINT:   PHotos INTerference
+//
+//    Purpose:  Calculates interference between emission of photons from
+//              different possible chaged daughters stored in
+//              the  HEP common /PHOEVT/. 
+//
+//    Input Parameter:    commons /PHOEVT/ /PHOMOM/ /PHOPHS/
+//    
+//
+//    Output Parameters:  
+//                        
+//
+//    Author(s):  Z. Was,                         Created at:  10/08/93
+//                                                Last Update: 
+//
+//----------------------------------------------------------------------
+
+double PHINT2(int IDUM){
+
+
+  /*
+      DOUBLE PRECISION phomom_.mchsqr,phomom_.mnesqr
+      REAL*8 PNEUTR
+      COMMON/PHOMOM/phomom_.mchsqr,phomom_.mnesqr,PNEUTR(5)
+      DOUBLE PRECISION phophs_.costhg,SINTHG
+      REAL*8 XPHMAX,phophs_.xphoto
+      COMMON/PHOPHS/XPHMAX,phophs_.xphoto,phophs_.costhg,SINTHG
+  */
+  double MPASQR,XX,BETA,pq1[4],pq2[4],pphot[4];
+  double SS,PP2,PP,E1,E2,q1,q2,costhe,PHINT;
+  bool IFINT;
+  int K,k,IDENT; 
+  static int i=1;
+  IDENT=pho.nhep;
+  //
+  for(K=pho.jdahep[1-i][2-i]; K>=pho.jdahep[1-i][1-i];K--){
+    if(pho.idhep[K-i]!=22){
+      IDENT=K;
+      break;
+    }
+  }
+
+  // check if there is a photon
+  IFINT= pho.nhep>IDENT;
+  // check if it is two body + gammas reaction
+  IFINT= IFINT&&(IDENT-pho.jdahep[1-i][1-i])==1;
+  // check if two body was particle antiparticle (we improve on it !
+  //      IFINT= IFINT.AND.pho.idhep(JDAPHO(1,1)).EQ.-pho.idhep(IDENT)
+  // check if particles were charged
+  IFINT= IFINT&&fabs(PHOCHA(pho.idhep[IDENT-i]))>0.01;
+  // check if they have both charge
+  IFINT= IFINT&&fabs(PHOCHA(pho.idhep[pho.jdahep[1-i][1-i]-i]))>0.01;
+  // calculates interference weight contribution
+  if(IFINT){
+    MPASQR = pho.phep[1-i][5-i]*pho.phep[1-i][5-i];
+    XX=4.0*phomom_.mchsqr/MPASQR*(1.0-phophs_.xphoto)/pow(1.-phophs_.xphoto+(phomom_.mchsqr-phomom_.mnesqr)/MPASQR,2);
+    BETA=sqrt(1.0-XX);
+    PHINT  = 2.0/(1.0+phophs_.costhg*phophs_.costhg*BETA*BETA);
+    SS =MPASQR*(1.0-phophs_.xphoto);
+    PP2=((SS-phomom_.mchsqr-phomom_.mnesqr)*(SS-phomom_.mchsqr-phomom_.mnesqr)-4*phomom_.mchsqr*phomom_.mnesqr)/SS/4;
+    PP =sqrt(PP2);
+    E1 =sqrt(PP2+phomom_.mchsqr);
+    E2 =sqrt(PP2+phomom_.mnesqr);
+    PHINT= (E1+E2)*(E1+E2)/((E2+phophs_.costhg*PP)*(E2+phophs_.costhg*PP)+(E1-phophs_.costhg*PP)*(E1-phophs_.costhg*PP));
+    // return PHINT;
+    //
+    q1=PHOCHA(pho.idhep[pho.jdahep[1-i][1-i]-i]);
+    q2=PHOCHA(pho.idhep[IDENT-i]);
+    for( k=1;k<=4;k++){
+      pq1[k-i]=pho.phep[pho.jdahep[1-i][1-i]-i][k-i];
+      pq2[k-i]=pho.phep[pho.jdahep[1-i][1-i]+1-i][k-i];
+      pphot[k-i]=pho.phep[pho.nhep-i][k-i];
+    }
+    costhe=(pphot[1-i]*pq1[1-i]+pphot[2-i]*pq1[2-i]+pphot[3-i]*pq1[3-i]);
+    costhe=costhe/sqrt(pq1[1-i]*pq1[1-i]+pq1[2-i]*pq1[2-i]+pq1[3-i]*pq1[3-i]);
+    costhe=costhe/sqrt(pphot[1-i]*pphot[1-i]+pphot[2-i]*pphot[2-i]+pphot[3-i]*pphot[3-i]);
+    //
+    // --- this IF checks whether JDAPHO(1,1) was MCH or MNE. 
+    // --- phophs_.costhg angle (and in-generation variables) may be better choice 
+    // --- than costhe. note that in the formulae below amplitudes were 
+    // --- multiplied by (E2+phophs_.costhg*PP)*(E1-phophs_.costhg*PP). 
+    if(phophs_.costhg*costhe>0){
+
+      PHINT= pow(q1*(E2+phophs_.costhg*PP)-q2*(E1-phophs_.costhg*PP),2)/(q1*q1*(E2+phophs_.costhg*PP)*(E2+phophs_.costhg*PP)+q2*q2*(E1-phophs_.costhg*PP)*(E1-phophs_.costhg*PP));
+    }
+    else{
+
+      PHINT= pow(q1*(E1-phophs_.costhg*PP)-q2*(E2+phophs_.costhg*PP),2)/(q1*q1*(E1-phophs_.costhg*PP)*(E1-phophs_.costhg*PP)+q2*q2*(E2+phophs_.costhg*PP)*(E2+phophs_.costhg*PP));
+    }
+  }
+  else{
+    PHINT  = 1.0;
+  }
+  return PHINT;
+}
+
+
+//*****************************************************************
+//*****************************************************************
+//*****************************************************************
+// beginning of the class of methods reading from  PH_HEPEVT
+//*****************************************************************
+//*****************************************************************
+//*****************************************************************
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays event DuMP routine
+//
+//    Purpose:  Print event record.
+//
+//    Input Parameters:   Common /PH_HEPEVT/
+//
+//    Output Parameters:  None
+//
+//    Author(s):  B. van Eijk                     Created at:  05/06/90
+//                                                Last Update: 20/06/13
+//
+//----------------------------------------------------------------------
+void PHODMP(){
+
+  double  SUMVEC[5];
+  int I,J;
+  static int i=1;
+  const char eq80[81]  = "================================================================================";
+  const char X29[30] = "                             ";
+  const char X23[24 ]= "                       ";
+  const char X1[2] = " ";
+  const char X2[3] = "  ";
+  const char X3[4] = "   ";
+  const char X4[5] = "    ";
+  const char X6[7] = "      ";
+  const char X7[8] = "       ";
+  FILE *PHLUN = stdout;
+
+  for(I=0;I<5;I++)  SUMVEC[I]=0.0;
+  //--
+  //--   Print event number...
+  fprintf(PHLUN,"%s",eq80);
+  fprintf(PHLUN,"%s Event No.: %10i\n",X29,hep.nevhep);
+  fprintf(PHLUN,"%s Particle Parameters\n",X6);
+  fprintf(PHLUN,"%s Nr %s Type %s Parent(s) %s Daughter(s) %s Px %s Py %s Pz %s E %s Inv. M.\n",X1,X3,X3,X2,X6,X7,X7,X7,X4);
+  for(I=1;I<=hep.nhep;I++){ 
+    //--
+    //--   For 'stable particle' calculate vector momentum sum
+    if (hep.jdahep[I-i][1-i]==0){
+      for(J=1; J<=4;J++){
+       SUMVEC[J-i]=SUMVEC[J-i]+hep.phep[I-i][J-i];
+      }
+      if (hep.jmohep[I-i][2-i]==0){
+       fprintf(PHLUN,"%4i %7i %s %4i %s Stable %9.2f %9.2f %9.2f %9.2f %9.2f\n" ,  I,hep.idhep[I-i],X3,hep.jmohep[I-i][1-i],X7,hep.phep[I-i][1-i],hep.phep[I-i][2-i],hep.phep[I-i][3-i],hep.phep[I-i][4-i],hep.phep[I-i][5-i]);
+      }
+      else{
+       fprintf(PHLUN,"%4i %7i %4i - %4i %s Stable %9.2f %9.2f %9.2f %9.2f %9.2f\n",I,hep.idhep[I-i],hep.jmohep[I-i][1-i],hep.jmohep[I-i][2-i], X4,hep.phep[I-i][1-i],hep.phep[I-i][2-i],hep.phep[I-i][3-i],hep.phep[I-i][4-i],hep.phep[I-i][5-i]);
+      }
+    }
+    else{
+      if(hep.jmohep[I-i][2-i]==0){
+       fprintf(PHLUN,"%4i %7i %s %4i %s %4i - %4i %9.2f %9.2f %9.2f %9.2f %9.2f\n" ,  I,hep.idhep[I-i],X3,hep.jmohep[I-i][1-i],X2,hep.jdahep[I-i][1-i],hep.jdahep[I-i][2-i],hep.phep[I-i][1-i],hep.phep[I-i][2-i],hep.phep[I-i][3-i],hep.phep[I-i][4-i],hep.phep[I-i][5-i]);
+      }
+      else{
+       fprintf(PHLUN,"%4i %7i %4i - %4i %4i - %4i %9.2f %9.2f %9.2f %9.2f %9.2f\n",  I,hep.idhep[I-i],hep.jmohep[I-i][1-i],hep.jmohep[I-i][2-i],hep.jdahep[I-i][1-i],hep.jdahep[I-i][2-i],hep.phep[I-i][1-i],hep.phep[I-i][2-i],hep.phep[I-i][3-i],hep.phep[I-i][4-i],hep.phep[I-i][5-i]);
+      }
+    }
+  }
+  SUMVEC[5-i]=sqrt(SUMVEC[4-i]*SUMVEC[4-i]-SUMVEC[1-i]*SUMVEC[1-i]-SUMVEC[2-i]*SUMVEC[2-i]-SUMVEC[3-i]*SUMVEC[3-i]);
+  fprintf(PHLUN,"%s  Vector Sum: %9.2f %9.2f %9.2f %9.2f %9.2f\n",X23,SUMVEC[1-i],SUMVEC[2-i],SUMVEC[3-i],SUMVEC[4-i],SUMVEC[5-i]);
+
+
+
+
+// 9030 FORMAT(1H ,I4,I7,3X,I4,9X,'Stable',2X,5F9.2)
+//"%4i %7i %s  %4i %s Stable %s  %9.2f %9.2f %9.2f %9.2f %9.2f "  X3,9X,X2
+
+  // 9050 FORMAT(1H ,I4,I7,3X,I4,6X,I4,' - ',I4,5F9.2)
+  //"%4i %7i %s  %4i %s %4i  -  %4i  %9.2f %9.2f %9.2f %9.2f %9.2f "  X3,X6
+
+
+
+  //"%4i %7i %4i  -  %4i %s Stable %s  %9.2f %9.2f %9.2f %9.2f %9.2f "  X5,X2
+
+
+ //9060 FORMAT(1H ,I4,I7,I4,' - ',I4,2X,I4,' - ',I4,5F9.2)
+  //"%4i %7i %4i  -  %4i %s %4i -   %4i %9.2f %9.2f %9.2f %9.2f %9.2f "  X2,
+}
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHLUPAB:   debugging tool
+//
+//    Purpose:  NONE, eventually may printout content of the 
+//              /PH_HEPEVT/ common
+//
+//    Input Parameters:   Common /PH_HEPEVT/ and /PHNUM/ 
+//                        latter may have number of the event. 
+//
+//    Output Parameters:  None
+//
+//    Author(s):  Z. Was                          Created at:  30/05/93
+//                                                Last Update: 20/06/13
+//
+//----------------------------------------------------------------------
+
+void PHLUPAB(int IPOINT){
+  char name[12] = "/PH_HEPEVT/";
+  int I,J;
+  static int IPOIN0=-5;
+  static int i=1;
+  double  SUM[5];
+  FILE *PHLUN = stdout;
+
+  if (IPOIN0<0){
+    IPOIN0=400000; //  ! maximal no-print point
+    phlupy_.ipoin =IPOIN0;
+    phlupy_.ipoinm=400001; // ! minimal no-print point
+  }
+  
+  if (IPOINT<=phlupy_.ipoinm||IPOINT>=phlupy_.ipoin ) return;
+  if ((int)phnum_.iev<1000){
+    for(I=1; I<=5;I++) SUM[I-i]=0.0;
+     
+    fprintf(PHLUN,"EVENT NR= %i WE ARE TESTING %s at IPOINT=%i \n",(int)phnum_.iev,name,IPOINT);
+    fprintf(PHLUN,"  ID      p_x      p_y      p_z      E        m        ID-MO_DA1 ID-MO_DA2\n");
+    I=1;
+    fprintf(PHLUN,"%4i %14.9f %14.9f %14.9f %14.9f %14.9f %9i %9i\n", hep.idhep[I-i],hep.phep[1-i][I-i],hep.phep[2-i][I-i],hep.phep[3-i][I-i],hep.phep[4-i][I-i],hep.phep[5-i][I-i],hep.jdahep[1-i][I-i],hep.jdahep[2-i][I-i]);
+    I=2;
+    fprintf(PHLUN,"%4i %14.9f %14.9f %14.9f %14.9f %14.9f %9i %9i\n", hep.idhep[I-i],hep.phep[1-i][I-i],hep.phep[2-i][I-i],hep.phep[3-i][I-i],hep.phep[4-i][I-i],hep.phep[5-i][I-i],hep.jdahep[1-i][I-i],hep.jdahep[2-i][I-i]);
+    fprintf(PHLUN," \n");
+    for(I=3;I<=hep.nhep;I++){
+      fprintf(PHLUN,"%4i %14.9f %14.9f %14.9f %14.9f %14.9f %9i %9i\n", hep.idhep[I-i],hep.phep[1-i][I-i],hep.phep[2-i][I-i],hep.phep[3-i][I-i],hep.phep[4-i][I-i],hep.phep[5-i][I-i],hep.jmohep[1-i][I-i],hep.jmohep[2-i][I-i]);
+      for(J=1;J<=4;J++) SUM[J-i]=SUM[J-i]+hep.phep[J-i][I-i];
+    }
+
+
+    SUM[5-i]=sqrt(fabs(SUM[4-i]*SUM[4-i]-SUM[1-i]*SUM[1-i]-SUM[2-i]*SUM[2-i]-SUM[3-i]*SUM[3-i]));
+    fprintf(PHLUN," SUM %14.9f %14.9f %14.9f %14.9f %14.9f\n",SUM[1-i],SUM[2-i],SUM[3-i],SUM[4-i],SUM[5-i]);
+
+  }
+
+
+       // 10   FORMAT(1X,'  ID      ','p_x      ','p_y      ','p_z      ',
+       //$                   'E        ','m        ',
+       //$                   'ID-MO_DA1','ID-MO DA2' )
+  // 20   FORMAT(1X,I4,5(F14.9),2I9)
+  //"%i4 %14.9f %14.9f %14.9f %14.9f %i9 i9"
+       // 30   FORMAT(1X,' SUM',5(F14.9))
+}
+
+
+
+
+
+
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHLUPA:   debugging tool
+//
+//    Purpose:  NONE, eventually may printout content of the 
+//              /PHOEVT/ common
+//
+//    Input Parameters:   Common /PHOEVT/ and /PHNUM/ 
+//                        latter may have number of the event. 
+//
+//    Output Parameters:  None
+//
+//    Author(s):  Z. Was                          Created at:  30/05/93
+//                                                Last Update: 21/06/13
+//
+//----------------------------------------------------------------------
+
+void PHLUPA(int IPOINT){
+  char name[9] = "/PHOEVT/";
+  int I,J;
+  static int IPOIN0=-5;
+  static int i=1;
+  double  SUM[5];
+  FILE *PHLUN = stdout;
+
+  if (IPOIN0<0){
+    IPOIN0=400000; //  ! maximal no-print point
+    phlupy_.ipoin =IPOIN0;
+    phlupy_.ipoinm=400001; // ! minimal no-print point
+  }
+  
+  if (IPOINT<=phlupy_.ipoinm||IPOINT>=phlupy_.ipoin ) return;
+  if ((int)phnum_.iev<1000){
+    for(I=1; I<=5;I++) SUM[I-i]=0.0;
+     
+    fprintf(PHLUN,"EVENT NR= %i WE ARE TESTING %s at IPOINT=%i \n",(int)phnum_.iev,name,IPOINT);
+    fprintf(PHLUN,"  ID      p_x      p_y      p_z      E        m        ID-MO_DA1 ID-MO_DA2\n");
+    I=1;
+    fprintf(PHLUN,"%4i %14.9f %14.9f %14.9f %14.9f %14.9f %9i %9i\n", pho.idhep[I-i],pho.phep[1-i][I-i],pho.phep[2-i][I-i],pho.phep[3-i][I-i],pho.phep[4-i][I-i],pho.phep[5-i][I-i],pho.jdahep[1-i][I-i],pho.jdahep[2-i][I-i]);
+    I=2;
+    fprintf(PHLUN,"%4i %14.9f %14.9f %14.9f %14.9f %14.9f %9i %9i\n", pho.idhep[I-i],pho.phep[1-i][I-i],pho.phep[2-i][I-i],pho.phep[3-i][I-i],pho.phep[4-i][I-i],pho.phep[5-i][I-i],pho.jdahep[1-i][I-i],pho.jdahep[2-i][I-i]);
+    fprintf(PHLUN," \n");
+    for(I=3;I<=pho.nhep;I++){
+      fprintf(PHLUN,"%4i %14.9f %14.9f %14.9f %14.9f %14.9f %9i %9i\n", pho.idhep[I-i],pho.phep[1-i][I-i],pho.phep[2-i][I-i],pho.phep[3-i][I-i],pho.phep[4-i][I-i],pho.phep[5-i][I-i],pho.jmohep[1-i][I-i],pho.jmohep[2-i][I-i]);
+      for(J=1;J<=4;J++) SUM[J-i]=SUM[J-i]+pho.phep[J-i][I-i];
+    }
+  
+
+    SUM[5-i]=sqrt(fabs(SUM[4-i]*SUM[4-i]-SUM[1-i]*SUM[1-i]-SUM[2-i]*SUM[2-i]-SUM[3-i]*SUM[3-i]));
+    fprintf(PHLUN," SUM %14.9f %14.9f %14.9f %14.9f %14.9f\n",SUM[1-i],SUM[2-i],SUM[3-i],SUM[4-i],SUM[5-i]);
+
+  }
+
+
+       // 10   FORMAT(1X,'  ID      ','p_x      ','p_y      ','p_z      ',
+       //$                   'E        ','m        ',
+       //$                   'ID-MO_DA1','ID-MO DA2' )
+  // 20   FORMAT(1X,I4,5(F14.9),2I9)
+  //"%4i %14.9f %14.9f %14.9f %14.9f %9i %9i"
+       // 30   FORMAT(1X,' SUM',5(F14.9))
+}
+
+
+void PHOtoRF(){
+
+
+  //      COMMON /PH_TOFROM/ QQ[4],XM,th1,fi1
+  double PP[4],RR[4];
+
+  int K,L;
+  static int i=1;
+
+  for(K=1;K<=4;K++){
+    tofrom_.QQ[K-i]=0.0;
+  }
+  for( L=hep.jdahep[hep.jmohep[hep.nhep-i][1-i]-i][1-i];L<=hep.jdahep[hep.jmohep[hep.nhep-i][1-i]-i][2-i];L++){
+    for(K=1;K<=4;K++){
+      tofrom_.QQ[K-i]=tofrom_.QQ[K-i]+hep.phep[L-i][K-i];
+    }
+  }
+  tofrom_.XM =tofrom_.QQ[4-i]*tofrom_.QQ[4-i]-tofrom_.QQ[3-i]*tofrom_.QQ[3-i]-tofrom_.QQ[2-i]*tofrom_.QQ[2-i]-tofrom_.QQ[1-i]*tofrom_.QQ[1-i];
+  if(tofrom_.XM>0.0) tofrom_.XM=sqrt(tofrom_.XM);
+  if(tofrom_.XM<=0.0) return;
+
+  for(L=1;L<=hep.nhep;L++){
+    for(K=1;K<=4;K++){       
+      PP[K-i]=hep.phep[L-i][K-i];
+    }
+    bostdq(1,tofrom_.QQ,PP,RR);
+    for(K=1;K<=4;K++){     
+      hep.phep[L-i][K-i]=RR[K-i];
+    }
+  }
+
+  tofrom_.fi1=0.0;
+  tofrom_.th1=0.0;
+  if(fabs(hep.phep[1-i][1-i])+fabs(hep.phep[1-i][2-i])>0.0) tofrom_.fi1=PHOAN1(hep.phep[1-i][1-i],hep.phep[1-i][2-i]);
+  if(fabs(hep.phep[1-i][1-i])+fabs(hep.phep[1-i][2-i])+fabs(hep.phep[1-i][3-i])>0.0)  
+    tofrom_.th1=PHOAN2(hep.phep[1-i][3-i],sqrt(hep.phep[1-i][1-i]*hep.phep[1-i][1-i]+hep.phep[1-i][2-i]*hep.phep[1-i][2-i]));
+
+  for(L=1;L<=hep.nhep;L++){ 
+    for(K=1;K<=4;K++){       
+      RR[K-i]=hep.phep[L-i][K-i];
+    }
+     
+    PHORO3(-tofrom_.fi1,RR);
+    PHORO2(-tofrom_.th1,RR);
+    for(K=1;K<=4;K++){     
+      hep.phep[L-i][K-i]=RR[K-i];
+    }
+  }
+  
+  return;
+}
+
+void PHOtoLAB(){
+
+  //  //      REAL*8 QQ(4),XM,th1,fi1
+  //     COMMON /PH_TOFROM/ QQ,XM,th1,fi1
+  double PP[4],RR[4];
+  int K,L;
+  static int i=1;
+  
+  if(tofrom_.XM<=0.0) return;
+
+
+  for(L=1;L<=hep.nhep;L++){
+    for(K=1;K<=4;K++){
+      PP[K-i]=hep.phep[L-i][K-i];
+    }
+
+    PHORO2( tofrom_.th1,PP);
+    PHORO3( tofrom_.fi1,PP);
+    bostdq(-1,tofrom_.QQ,PP,RR);
+
+    for(K=1;K<=4;K++){
+      hep.phep[L-i][K-i]=RR[K-i];
+    }
+  }
+  return;
+}
+
+
+
+
+
+//             2) GENERAL INTERFACE:
+//                                      PHOTOS_GET
+//                                      PHOTOS_MAKE
+
+
+//   COMMONS:
+//   NAME     USED IN SECT. # OF OC//     Comment
+//   PHOQED   1) 2)            3      Flags whether emisson to be gen. 
+//   PHOLUN   1) 4)            6      Output device number
+//   PHOCOP   1) 3)            4      photon coupling & min energy
+//   PHPICO   1) 3) 4)         5      PI & 2*PI
+//   PHSEED   1) 4)            3      RN seed 
+//   PHOSTA   1) 4)            3      Status information
+//   PHOKEY   1) 2) 3)         7      Keys for nonstandard application
+//   PHOVER   1)               1      Version info for outside
+//   HEPEVT   2)               2      PDG common
+//   PH_HEPEVT2)               8      PDG common internal
+//   PHOEVT   2) 3)           10      PDG branch
+//   PHOIF    2) 3)            2      emission flags for PDG branch 
+//   PHOMOM   3)               5      param of char-neutr system
+//   PHOPHS   3)               5      photon momentum parameters
+//   PHOPRO   3)               4      var. for photon rep. (in branch)
+//   PHOCMS   2)               3      parameters of boost to branch CMS
+//   PHNUM    4)               1      event number from outside         
+//----------------------------------------------------------------------
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS_MAKE:   General search routine
+//
+//    Purpose:  Search through the /PH_HEPEVT/ standard HEP common, sta-
+//              rting from  the IPPAR-th  particle.  Whenevr  branching 
+//              point is found routine PHTYPE(IP) is called.
+//              Finally if calls on PHTYPE(IP) modified entries, common
+//               /PH_HEPEVT/ is ordered.
+//
+//    Input Parameter:    IPPAR:  Pointer   to   decaying  particle  in
+//                                /PH_HEPEVT/ and the common itself,
+//
+//    Output Parameters:  Common  /PH_HEPEVT/, either with or without 
+//                                new particles added.
+//
+//    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
+//                                                Last Update: 30/08/93
+//
+//----------------------------------------------------------------------
+
+void PHOTOS_MAKE_C(int IPARR){
+  static int i=1;
+  int IPPAR,I,J,NLAST,MOTHER;
+
+  //--
+  PHLUPAB(3);
+
+  //      write(*,*) 'at poczatek'
+  //       PHODMP();
+  IPPAR=abs(IPARR);
+  //--   Store pointers for cascade treatement...
+  NLAST=hep.nhep;
+
+
+  //--
+  //--   Check decay multiplicity and minimum of correctness..
+  if ((hep.jdahep[IPPAR-i][1-i]==0)||(hep.jmohep[hep.jdahep[IPPAR-i][1-i]-i][1-i]!=IPPAR)) return;
+
+  PHOtoRF();
+
+  //      write(*,*) 'at przygotowany'
+  //       PHODMP();
+
+  //--
+  //-- single branch mode 
+  //-- IPPAR is original position where the program was called
+
+  //-- let-s do generation
+  PHTYPE(IPPAR);
+
+
+  //--   rearrange  /PH_HEPEVT/  for added particles.
+  //--   at present this may be not needed as information 
+  //--   is set at HepMC level.
+  if (hep.nhep>NLAST){
+    for(I=NLAST+1;I<=hep.nhep;I++){
+      //--
+      //--   Photon mother and vertex...
+      MOTHER=hep.jmohep[I-i][1-i];
+      hep.jdahep[MOTHER-i][2-i]=I;
+      for( J=1;J<=4;J++){
+        hep.vhep[I-i][J-i]=hep.vhep[I-1-i][J-i];
+      }
+    }
+  }
+  //      write(*,*) 'at po dzialaniu '
+  //      PHODMP();
+  PHOtoLAB();
+  //      write(*,*) 'at koniec'
+  //      PHODMP();
+  return;
+}
+
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHCORK: corrects kinmatics of subbranch needed if host program
+//            produces events with the shaky momentum conservation
+//
+//    Input Parameters:   Common /PHOEVT/, MODCOR
+//                        MODCOR >0 type of action
+//                               =1 no action
+//                               =2 corrects energy from mass
+//                               =3 corrects mass from energy
+//                               =4 corrects energy from mass for 
+//                                  particles up to .4 GeV mass, 
+//                                  for heavier ones corrects mass,
+//                               =5 most complete correct also of mother
+//                                  often necessary for exponentiation.
+//                               =0 execution mode 
+//
+//    Output Parameters:  corrected /PHOEVT/
+//
+//    Author(s):  P.Golonka, Z. Was               Created at:  01/02/99
+//                                               Modified  :  07/07/13
+//----------------------------------------------------------------------
+
+void PHCORK(int MODCOR){
+      
+  double M,P2,PX,PY,PZ,E,EN,XMS;
+  int I,K;
+  FILE *PHLUN = stdout;
+
+
+  static int MODOP=0;
+  static int IPRINT=0;
+  static double  MCUT=0.4;
+  static int i=1;
+
+  if(MODCOR !=0){
+    //       INITIALIZATION
+    MODOP=MODCOR;
+
+    fprintf(PHLUN,"Message from PHCORK(MODCOR):: initialization\n");
+    if(MODOP==1) fprintf(PHLUN,"MODOP=1 -- no corrections on event: DEFAULT\n");
+    else if(MODOP==2) fprintf(PHLUN,"MODOP=2 -- corrects Energy from mass\n");
+    else if(MODOP==3) fprintf(PHLUN,"MODOP=3 -- corrects mass from Energy\n");
+    else if(MODOP==4){
+      fprintf(PHLUN,"MODOP=4 -- corrects Energy from mass to Mcut\n");
+      fprintf(PHLUN,"           and mass from  energy above  Mcut\n");
+      fprintf(PHLUN," Mcut=%6.3f GeV",MCUT);
+    }
+    else if(MODOP==5) fprintf(PHLUN,"MODOP=5 -- corrects Energy from mass+flow\n");
+
+    else{
+      fprintf(PHLUN,"PHCORK wrong MODCOR=%4i\n",MODCOR);
+      exit(0);
+    }
+    return;
+  }
+
+  if(MODOP==0&&MODCOR==0){
+    fprintf(PHLUN,"PHCORK lack of initialization\n");
+    exit(0);
+  }
+
+  // execution mode
+  // ==============
+  // ============== 
+
+     
+  PX=0.0;
+  PY=0.0;
+  PZ=0.0;
+  E =0.0;
+
+  if    (MODOP==1){
+    //     -----------------------
+    //       In this case we do nothing
+    return;
+  }
+  else if(MODOP==2){
+    //     -----------------------
+    //      lets loop thru all daughters and correct their energies 
+    //      according to E^2=p^2+m^2
+
+    for( I=3;I<=pho.nhep;I++){
+         
+      PX=PX+pho.phep[I-i][1-i];
+      PY=PY+pho.phep[I-i][2-i];
+      PZ=PZ+pho.phep[I-i][3-i];
+
+      P2=pho.phep[I-i][1-i]*pho.phep[I-i][1-i]+pho.phep[I-i][2-i]*pho.phep[I-i][2-i]+pho.phep[I-i][3-i]*pho.phep[I-i][3-i];
+
+      EN=sqrt( pho.phep[I-i][5-i]*pho.phep[I-i][5-i] + P2);
+         
+      if (IPRINT==1)fprintf(PHLUN,"CORRECTING ENERGY OF %6i: %14.9f => %14.9f\n",I,pho.phep[I-i][4-i],EN);
+
+      pho.phep[I-i][4-i]=EN;
+      E = E+pho.phep[I-i][4-i];
+
+    }
+  }
+
+  else if (MODOP==5){
+    //     -----------------------
+    //C      lets loop thru all daughters and correct their energies 
+    //C      according to E^2=p^2+m^2
+
+    for( I=3;I<=pho.nhep;I++){
+      PX=PX+pho.phep[I-i][1-i];
+      PY=PY+pho.phep[I-i][2-i];
+      PZ=PZ+pho.phep[I-i][3-i];
+
+      P2=pho.phep[I-i][1-i]*pho.phep[I-i][1-i]+pho.phep[I-i][2-i]*pho.phep[I-i][2-i]+pho.phep[I-i][3-i]*pho.phep[I-i][3-i];
+
+      EN=sqrt( pho.phep[I-i][5-i]*pho.phep[I-i][5-i] + P2);
+         
+      if (IPRINT==1)fprintf(PHLUN,"CORRECTING ENERGY OF %6i: %14.9f => %14.9f\n",I,pho.phep[I-i][4-i],EN);
+
+      pho.phep[I-i][4-i]=EN;
+      E = E+pho.phep[I-i][4-i];
+
+    }
+    for( K=1;K<=4;K++){
+      pho.phep[1-i][K-i]=0.0;
+      for( I=3;I<=pho.nhep;I++){
+        pho.phep[1-i][K-i]=pho.phep[1-i][K-i]+pho.phep[I-i][K-i];
+      }
+    }
+    XMS=sqrt(pho.phep[1-i][4-i]*pho.phep[1-i][4-i]-pho.phep[1-i][3-i]*pho.phep[1-i][3-i]-pho.phep[1-i][2-i]*pho.phep[1-i][2-i]-pho.phep[1-i][1-i]*pho.phep[1-i][1-i]);
+    pho.phep[1-i][5-i]=XMS;
+  }
+  else if(MODOP==3){
+    //     -----------------------
+
+    //      lets loop thru all daughters and correct their masses 
+    //     according to E^2=p^2+m^2
+
+    for (I=3;I<=pho.nhep;I++){
+         
+      PX=PX+pho.phep[I-i][1-i];
+      PY=PY+pho.phep[I-i][2-i];
+      PZ=PZ+pho.phep[I-i][3-i];
+      E = E+pho.phep[I-i][4-i];
+
+      P2=pho.phep[I-i][1-i]*pho.phep[I-i][1-i]+pho.phep[I-i][2-i]*pho.phep[I-i][2-i]+pho.phep[I-i][3-i]*pho.phep[I-i][3-i];
+
+      M=sqrt(fabs( pho.phep[I-i][4-i]*pho.phep[I-i][4-i] - P2));
+
+      if (IPRINT==1) fprintf(PHLUN,"CORRECTING MASS OF %6i: %14.9f => %14.9f\n",I,pho.phep[I-i][5-i],M);
+
+      pho.phep[I-i][5-i]=M;
+
+    }
+      
+  }
+ else if(MODOP==4){
+   //     -----------------------
+            
+   //      lets loop thru all daughters and correct their masses 
+   //      or energies according to E^2=p^2+m^2
+
+    for (I=3;I<=pho.nhep;I++){
+         
+      PX=PX+pho.phep[I-i][1-i];
+      PY=PY+pho.phep[I-i][2-i];
+      PZ=PZ+pho.phep[I-i][3-i];
+      P2=pho.phep[I-i][1-i]*pho.phep[I-i][1-i]+pho.phep[I-i][2-i]*pho.phep[I-i][2-i]+pho.phep[I-i][3-i]*pho.phep[I-i][3-i];
+      M=sqrt(fabs( pho.phep[I-i][4-i]*pho.phep[I-i][4-i] - P2));
+
+
+      if(M>MCUT){
+       if(IPRINT==1) fprintf(PHLUN,"CORRECTING MASS OF %6i: %14.9f => %14.9f\n",I,pho.phep[I-i][5-i],M);
+       pho.phep[I-i][5-i]=M;
+       E = E+pho.phep[I-i][4-i];
+      }
+      else{
+
+      EN=sqrt( pho.phep[I-i][5-i]*pho.phep[I-i][5-i] + P2);
+      if(IPRINT==1) fprintf(PHLUN,"CORRECTING ENERGY OF %6i: %14.9f =>% 14.9f\n",I ,pho.phep[I-i][4-i],EN);
+
+      pho.phep[I-i][4-i]=EN;
+      E = E+pho.phep[I-i][4-i];
+      }
+         
+
+    }
+ }
+
+  //     -----
+
+  if(IPRINT==1){
+    fprintf(PHLUN,"CORRECTING MOTHER");
+    fprintf(PHLUN,"PX:%14.9f =>%14.9f",pho.phep[1-i][1-i],PX-pho.phep[2-i][1-i]);
+    fprintf(PHLUN,"PY:%14.9f =>%14.9f",pho.phep[1-i][2-i],PY-pho.phep[2-i][2-i]);
+    fprintf(PHLUN,"PZ:%14.9f =>%14.9f",pho.phep[1-i][3-i],PZ-pho.phep[2-i][3-i]);
+    fprintf(PHLUN," E:%14.9f =>%14.9f",pho.phep[1-i][4-i], E-pho.phep[2-i][4-i]);
+  }
+
+  pho.phep[1-i][1-i]=PX-pho.phep[2-i][1-i];
+  pho.phep[1-i][2-i]=PY-pho.phep[2-i][2-i];
+  pho.phep[1-i][3-i]=PZ-pho.phep[2-i][3-i];
+  pho.phep[1-i][4-i]=E -pho.phep[2-i][4-i];
+
+
+  P2=pho.phep[1-i][1-i]*pho.phep[1-i][1-i]+pho.phep[1-i][2-i]*pho.phep[1-i][2-i]+pho.phep[1-i][3-i]*pho.phep[1-i][3-i];
+  if(pho.phep[1-i][4-i]*pho.phep[1-i][4-i]>P2){
+    M=sqrt(pho.phep[1-i][4-i]*pho.phep[1-i][4-i] - P2 );
+    if(IPRINT==1)fprintf(PHLUN," M: %14.9f => %14.9f\n",pho.phep[1-i][5-i],M);
+    pho.phep[1-i][5-i]=M;
+  }
+
+  PHLUPA(25);
+
+}
+
+
+
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in  decays DOing of KINematics
+//
+//    Purpose:  Starting  from   the  charged  particle energy/momentum,
+//              PNEUTR, photon  energy  fraction and photon  angle  with
+//              respect  to  the axis formed by charged particle energy/
+//              momentum  vector  and PNEUTR, scale the energy/momentum,
+//              keeping the original direction of the neutral system  in
+//              the lab. frame untouched.
+//
+//    Input Parameters:   IP:      Pointer  to   decaying  particle   in
+//                                 /PHOEVT/  and   the   common   itself
+//                        NCHARB:  pointer to the charged radiating
+//                                 daughter in /PHOEVT/.
+//                        NEUDAU:  pointer to the first neutral daughter
+//    Output Parameters:  Common /PHOEVT/, with photon added.
+//
+//    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
+//                                                Last Update: 27/05/93
+//
+//----------------------------------------------------------------------
+
+void PHODO(int IP,int NCHARB,int NEUDAU){
+  static int i=1;
+  double QNEW,QOLD,EPHOTO,PMAVIR;
+  double GNEUT,DATA;
+  double CCOSTH,SSINTH,PVEC[4],PARNE;
+  double TH3,FI3,TH4,FI4,FI5,ANGLE;
+  int I,J,FIRST,LAST;
+
+  //--
+  EPHOTO=phophs_.xphoto*pho.phep[IP-i][5-i]/2.0;
+  PMAVIR=sqrt(pho.phep[IP-i][5-i]*(pho.phep[IP-i][5-i]-2.0*EPHOTO));
+  //--
+  //--   Reconstruct  kinematics  of  charged particle  and  neutral system
+  phorest_.fi1=PHOAN1(phomom_.pneutr[1-i],phomom_.pneutr[2-i]);
+  //--
+  //--   Choose axis along  z of  PNEUTR, calculate  angle  between x and y
+  //--   components  and z  and x-y plane and  perform Lorentz transform...
+  phorest_.th1=PHOAN2(phomom_.pneutr[3-i],sqrt(phomom_.pneutr[1-i]*phomom_.pneutr[1-i]+phomom_.pneutr[2-i]*phomom_.pneutr[2-i]));
+  PHORO3(-phorest_.fi1,phomom_.pneutr);
+  PHORO2(-phorest_.th1,phomom_.pneutr);
+  //--
+  //--   Take  away  photon energy from charged particle and PNEUTR !  Thus
+  //--   the onshell charged particle  decays into virtual charged particle
+  //--   and photon.  The virtual charged  particle mass becomes:
+  //--   SQRT(pho.phep[5,IP)*(pho.phep[5,IP)-2*EPHOTO)).  Construct  new PNEUTR mo-
+  //--   mentum in the rest frame of the parent:
+  //--   1) Scaling parameters...
+  QNEW=PHOTRI(PMAVIR,phomom_.pneutr[5-i],pho.phep[NCHARB-i][5-i]);
+  QOLD=phomom_.pneutr[3-i];
+  GNEUT=(QNEW*QNEW+QOLD*QOLD+phomom_.mnesqr)/(QNEW*QOLD+sqrt((QNEW*QNEW+phomom_.mnesqr)*(QOLD*QOLD+phomom_.mnesqr)));
+  if(GNEUT<1.0){
+    DATA=0.0;
+    PHOERR(4,"PHOKIN",DATA);
+  }
+  PARNE=GNEUT-sqrt(max(GNEUT*GNEUT-1.0,0.0));
+  //--
+  //--   2) ...reductive boost...
+  PHOBO3(PARNE,phomom_.pneutr);
+  //--
+  //--   ...calculate photon energy in the reduced system...
+  pho.nhep=pho.nhep+1;
+  pho.isthep[pho.nhep-i]=1;
+  pho.idhep[pho.nhep-i] =22;
+  //--   Photon mother and daughter pointers !
+  pho.jmohep[pho.nhep-i][1]=IP;
+  pho.jmohep[pho.nhep-i][2]=0;
+  pho.jdahep[pho.nhep-i][1]=0;
+  pho.jdahep[pho.nhep-i][2]=0;
+  pho.phep[pho.nhep-i][4-i]=EPHOTO*pho.phep[IP-i][5-i]/PMAVIR;
+  //--
+  //--   ...and photon momenta
+  CCOSTH=-phophs_.costhg;
+  SSINTH=phophs_.sinthg;
+  TH3=PHOAN2(CCOSTH,SSINTH);
+  FI3=TWOPI*Photos::randomDouble();
+  pho.phep[pho.nhep-i][1-i]=pho.phep[pho.nhep-i][4-i]*phophs_.sinthg*cos(FI3);
+  pho.phep[pho.nhep-i][2-i]=pho.phep[pho.nhep-i][4-i]*phophs_.sinthg*sin(FI3);
+  //--
+  //--   Minus sign because axis opposite direction of charged particle !
+  pho.phep[pho.nhep-i][3-i]=-pho.phep[pho.nhep-i][4-i]*phophs_.costhg;
+  pho.phep[pho.nhep-i][5-i]=0.0;
+  //--
+  //--   Rotate in order to get photon along z-axis
+  PHORO3(-FI3,phomom_.pneutr);
+  PHORO3(-FI3,pho.phep[pho.nhep-i]);
+  PHORO2(-TH3,phomom_.pneutr);
+  PHORO2(-TH3,pho.phep[pho.nhep-i]);
+  ANGLE=EPHOTO/pho.phep[pho.nhep-i][4-i];
+  //--
+  //--   Boost to the rest frame of decaying particle
+  PHOBO3(ANGLE,phomom_.pneutr);
+  PHOBO3(ANGLE,pho.phep[pho.nhep-i]);
+  //--
+  //--   Back in the parent rest frame but PNEUTR not yet oriented !
+  FI4=PHOAN1(phomom_.pneutr[1-i],phomom_.pneutr[2-i]);
+  TH4=PHOAN2(phomom_.pneutr[3-i],sqrt(phomom_.pneutr[1-i]*phomom_.pneutr[1-i]+phomom_.pneutr[2-i]*phomom_.pneutr[2-i]));
+  PHORO3(FI4,phomom_.pneutr);
+  PHORO3(FI4,pho.phep[pho.nhep-i]);
+  //--
+  for(I=2; I<=4;I++) PVEC[I-i]=0.0;
+  PVEC[1-i]=1.0;
+
+  PHORO3(-FI3,PVEC);
+  PHORO2(-TH3,PVEC);
+  PHOBO3(ANGLE,PVEC);
+  PHORO3(FI4,PVEC);
+  PHORO2(-TH4,phomom_.pneutr);
+  PHORO2(-TH4,pho.phep[pho.nhep-i]);
+  PHORO2(-TH4,PVEC);
+  FI5=PHOAN1(PVEC[1-i],PVEC[2-i]);
+  //--
+  //--   Charged particle restores original direction
+  PHORO3(-FI5,phomom_.pneutr);
+  PHORO3(-FI5,pho.phep[pho.nhep-i]);
+  PHORO2(phorest_.th1,phomom_.pneutr);
+  PHORO2(phorest_.th1,pho.phep[pho.nhep-i]);
+  PHORO3(phorest_.fi1,phomom_.pneutr);
+  PHORO3(phorest_.fi1,pho.phep[pho.nhep-i]);
+  //--   See whether neutral system has multiplicity larger than 1...
+
+  if((pho.jdahep[IP-i][2-i]-pho.jdahep[IP-i][1-i])>1){
+    //--   Find pointers to components of 'neutral' system
+    //--
+    FIRST=NEUDAU;
+    LAST=pho.jdahep[IP-i][2-i];
+    for(I=FIRST;I<=LAST;I++){
+      if(I!=NCHARB && ( pho.jmohep[I-i][1-i]==IP)){
+       //--
+       //--   Reconstruct kinematics...
+       PHORO3(-phorest_.fi1,pho.phep[I-i]);
+       PHORO2(-phorest_.th1,pho.phep[I-i]);
+       //--
+       //--   ...reductive boost
+       PHOBO3(PARNE,pho.phep[I-i]);
+       //--
+       //--   Rotate in order to get photon along z-axis
+       PHORO3(-FI3,pho.phep[I-i]);
+       PHORO2(-TH3,pho.phep[I-i]);
+       //--
+       //--   Boost to the rest frame of decaying particle
+       PHOBO3(ANGLE,pho.phep[I-i]);
+       //--
+       //--   Back in the parent rest-frame but PNEUTR not yet oriented.
+       PHORO3(FI4,pho.phep[I-i]);
+       PHORO2(-TH4,pho.phep[I-i]);
+       //--
+       //--   Charged particle restores original direction
+       PHORO3(-FI5,pho.phep[I-i]);
+       PHORO2(phorest_.th1,pho.phep[I-i]);
+       PHORO3(phorest_.fi1,pho.phep[I-i]);
+      }
+    }
+  }
+  else{
+    //--
+    //   ...only one 'neutral' particle in addition to photon!
+    for(J=1;J<=4;J++) pho.phep[NEUDAU-i][J-i]=phomom_.pneutr[J-i];
+  }
+  //--
+  //--   All 'neutrals' treated, fill /PHOEVT/ for charged particle...
+  for (J=1;J<=3;J++) pho.phep[NCHARB-i][J-i]=-(pho.phep[pho.nhep-i][J-i]+phomom_.pneutr[J-i]);
+                     pho.phep[NCHARB-i][4-i]=pho.phep[IP-i][5-i]-(pho.phep[pho.nhep-i][4-i]+phomom_.pneutr[4-i]);
+  //--
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOtos Boson W correction weight
+//
+//    Purpose:  calculates correction weight due to amplitudes of 
+//              emission from W boson.
+//              
+//              
+//              
+//              
+//
+//    Input Parameters:  Common /PHOEVT/, with photon added.
+//                       wt  to be corrected
+//                       
+//                       
+//                       
+//    Output Parameters: wt
+//
+//    Author(s):  G. Nanava, Z. Was               Created at:  13/03/03
+//                                                Last Update: 08/07/13
+//
+//----------------------------------------------------------------------
+
+void PHOBW(double *WT){
+  static int i=1;
+  int I;
+  double EMU,MCHREN,BETA,COSTHG,MPASQR,XPH;
+  //--
+  if(abs(pho.idhep[1-i])==24 &&
+     abs(pho.idhep[pho.jdahep[1-i][1-i]-i])  >=11 &&
+     abs(pho.idhep[pho.jdahep[1-i][1-i]-i])  <=16 &&
+     abs(pho.idhep[pho.jdahep[1-i][1-i]+1-i])>=11 &&
+     abs(pho.idhep[pho.jdahep[1-i][1-i]+1-i])<=16   ){
+
+     if(
+       abs(pho.idhep[pho.jdahep[1-i][1-i]-i])==11 ||
+        abs(pho.idhep[pho.jdahep[1-i][1-i]-i])==13 ||
+        abs(pho.idhep[pho.jdahep[1-i][1-i]-i])==15    ){ 
+       I=pho.jdahep[1-i][1-i];
+     }
+     else{
+       I=pho.jdahep[1-i][1-i]+1;
+     }
+          
+     EMU=pho.phep[I-i][4-i];
+     MCHREN=fabs(pow(pho.phep[I-i][4-i],2)-pow(pho.phep[I-i][3-i],2)
+               -pow(pho.phep[I-i][2-i],2)-pow(pho.phep[I-i][1-i],2));
+     BETA=sqrt(1.0- MCHREN/ pho.phep[I-i][4-i]/pho.phep[I-i][4-i]);
+     COSTHG=(pho.phep[I-i][3-i]*pho.phep[pho.nhep-i][3-i]+pho.phep[I-i][2-i]*pho.phep[pho.nhep-i][2-i]
+           +pho.phep[I-i][1-i]*pho.phep[pho.nhep-i][1-i])/
+     sqrt(pho.phep[I-i][3-i]*pho.phep[I-i][3-i]+pho.phep[I-i][2-i]*pho.phep[I-i][2-i]+pho.phep[I-i][1-i]*pho.phep[I-i][1-i])/
+     sqrt(pho.phep[pho.nhep-i][3-i]*pho.phep[pho.nhep-i][3-i]+pho.phep[pho.nhep-i][2-i]*pho.phep[pho.nhep-i][2-i]+pho.phep[pho.nhep-i][1-i]*pho.phep[pho.nhep-i][1-i]);
+     MPASQR=pho.phep[1-i][4-i]*pho.phep[1-i][4-i];    
+     XPH=pho.phep[pho.nhep-i][4-i];
+     *WT=(*WT)*(1-8*EMU*XPH*(1-COSTHG*BETA)*     
+           (MCHREN+2*XPH*sqrt(MPASQR))/
+            (MPASQR*MPASQR)/(1-MCHREN/MPASQR)/(4-MCHREN/MPASQR));
+  }
+  //        write(*,*) pho.idhep[1),pho.idhep[pho.jdahep[1,1)),pho.idhep[pho.jdahep[1,1)+1)
+  //        write(*,*) emu,xph,costhg,beta,mpasqr,mchren
+
+}
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays control FACtor
+//
+//    Purpose:  This is the control function for the photon spectrum and
+//              final weighting.  It is  called  from PHOENE for genera-
+//              ting the raw photon energy spectrum (MODE=0) and in PHO-
+//              COR to scale the final weight (MODE=1).  The factor con-
+//              sists of 3 terms.  Addition of  the factor FF which mul-
+//              tiplies PHOFAC for MODE=0 and divides PHOFAC for MODE=1,
+//              does not affect  the results for  the MC generation.  An
+//              appropriate choice  for FF can speed up the calculation.
+//              Note that a too small value of FF may cause weight over-
+//              flow in PHOCOR  and will generate a warning, halting the
+//              execution.  PRX  should  be  included for repeated calls
+//              for  the  same event, allowing more particles to radiate
+//              photons.  At  the  first  call IREP=0, for  more  than 1
+//              charged  decay  products, IREP >= 1.  Thus,  PRSOFT  (no
+//              photon radiation  probability  in  the  previous  calls)
+//              appropriately scales the strength of the bremsstrahlung.
+//
+//    Input Parameters:  MODE, PROBH, XF
+//
+//    Output Parameter:  Function value
+//
+//    Author(s):  S. Jadach, Z. Was               Created at:  01/01/89
+//                B. van Eijk, P.Golonka          Last Update: 09/07/13
+//
+//----------------------------------------------------------------------
+double PHOFAC(int MODE){
+  static  double FF=0.0,PRX=0.0;
+
+  if(phokey_.iexp)  return 1.0;  // In case of exponentiation this routine is useles
+
+  if(MODE==-1){
+    PRX=1.0;
+    FF=1.0;
+    phopro_.probh=0.0;
+  }
+  else if (MODE==0){
+    if(phopro_.irep==0) PRX=1.0;
+    PRX=PRX/(1.0-phopro_.probh);
+    FF=1.0;
+    //--
+    //--   Following options are not considered for the time being...
+    //--   (1) Good choice, but does not save very much time:
+    //--       FF=(1.0-sqrt(phopro_.xf)/2.0)/(1.0+sqrt(phopro_.xf)/2.0)
+    //--   (2) Taken from the blue, but works without weight overflows...
+    //--       FF=(1.0-phopro_.xf/(1-pow((1-sqrt(phopro_.xf)),2)))*(1+(1-sqrt(phopro_.xf))/sqrt(1-phopro_.xf))/2.0
+    return FF*PRX;
+  }
+  else{
+    return 1.0/FF;
+  }
+  
+  return NAN;
+}
+
+
+
+// ###### 
+//  replace with, 
+// ######
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays CORrection weight from
+//              matrix elements This version for spin 1/2 is verified for
+//              W decay only
+//    Purpose:  Calculate  photon  angle.  The reshaping functions  will
+//              have  to  depend  on the spin S of the charged particle.
+//              We define:  ME = 2 * S + 1 !
+//              THIS IS POSSIBLY ALWAYS BETTER THAN PHOCOR()
+//
+//    Input Parameters:  MPASQR:  Parent mass squared,
+//                       MCHREN:  Renormalised mass of charged system,
+//                       ME:      2 * spin + 1 determines matrix element
+//
+//    Output Parameter:  Function value.
+//
+//    Author(s):  Z. Was, B. van Eijk, G. Nanava  Created at:  26/11/89
+//                                                Last Update: 01/11/12
+//
+//----------------------------------------------------------------------
+
+double PHOCORN(double MPASQR,double MCHREN,int ME){
+  double wt1,wt2,wt3;
+  double  beta0,beta1,XX,YY,DATA;
+  double S1,PHOCOR;
+
+
+
+  //--
+  //--   Shaping (modified by ZW)...
+  XX=4.0*phomom_.mchsqr/MPASQR*(1.0-phophs_.xphoto)/pow(1.0-phophs_.xphoto+(phomom_.mchsqr-phomom_.mnesqr)/MPASQR,2);
+  if(ME==1){
+    S1=MPASQR  * (1.0-phophs_.xphoto);
+    beta0=2*PHOTRI(1.0,sqrt(phomom_.mchsqr/MPASQR),sqrt(phomom_.mnesqr/MPASQR));
+    beta1=2*PHOTRI(1.0,sqrt(phomom_.mchsqr/S1),sqrt(phomom_.mnesqr/S1));
+    wt1= (1.0-phophs_.costhg*sqrt(1.0-MCHREN))
+       /((1.0+pow(1.0-phophs_.xphoto/phophs_.xphmax,2))/2.0)*phophs_.xphoto;             // de-presampler
+           
+    wt2= beta1/beta0*phophs_.xphoto;                                                        //phase space jacobians
+    wt3=  beta1*beta1* (1.0-phophs_.costhg*phophs_.costhg) * (1.0-phophs_.xphoto)/phophs_.xphoto/phophs_.xphoto 
+      /pow(1.0 +phomom_.mchsqr/S1-phomom_.mnesqr/S1-beta1*phophs_.costhg,2)/2.0;             // matrix element
+  }
+  else if (ME==2){
+    S1=MPASQR  * (1.0-phophs_.xphoto);
+    beta0=2*PHOTRI(1.0,sqrt(phomom_.mchsqr/MPASQR),sqrt(phomom_.mnesqr/MPASQR));
+    beta1=2*PHOTRI(1.0,sqrt(phomom_.mchsqr/S1),sqrt(phomom_.mnesqr/S1));
+    wt1= (1.0-phophs_.costhg*sqrt(1.0-MCHREN))
+      /((1.0+pow(1.0-phophs_.xphoto/phophs_.xphmax,2))/2.0)*phophs_.xphoto;          // de-presampler
+         
+    wt2= beta1/beta0*phophs_.xphoto;                                  // phase space jacobians
+
+    wt3= beta1*beta1* (1.0-phophs_.costhg*phophs_.costhg) * (1.0-phophs_.xphoto)/phophs_.xphoto/phophs_.xphoto  // matrix element
+    /pow(1.0 +phomom_.mchsqr/S1-phomom_.mnesqr/S1-beta1*phophs_.costhg,2)/2.0 ;
+    wt3=wt3*(1-phophs_.xphoto/phophs_.xphmax+0.5*pow(phophs_.xphoto/phophs_.xphmax,2))/(1-phophs_.xphoto/phophs_.xphmax);
+    //       print*,"wt3=",wt3
+    phocorwt_.phocorwt3=wt3;
+    phocorwt_.phocorwt2=wt2;
+    phocorwt_.phocorwt1=wt1;
+
+    //       YY=0.5D0*(1.D0-phophs_.xphoto/phophs_.xphmax+1.D0/(1.D0-phophs_.xphoto/phophs_.xphmax))
+    //       phwt_.beta=SQRT(1.D0-XX)
+    //       wt1=(1.D0-phophs_.costhg*SQRT(1.D0-MCHREN))/(1.D0-phophs_.costhg*phwt_.beta)
+    //       wt2=(1.D0-XX/YY/(1.D0-phwt_.beta**2*phophs_.costhg**2))*(1.D0+phophs_.costhg*phwt_.beta)/2.D0
+    //       wt3=1.D0
+  }
+  else if  ((ME==3) || (ME==4) || (ME==5)){
+    YY=1.0;
+    phwt_.beta=sqrt(1.0-XX);
+    wt1=(1.0-phophs_.costhg*sqrt(1.0-MCHREN))/(1.0-phophs_.costhg*phwt_.beta);
+    wt2=(1.0-XX/YY/(1.0-phwt_.beta*phwt_.beta*phophs_.costhg*phophs_.costhg))*(1.0+phophs_.costhg*phwt_.beta)/2.0;
+    wt3=(1.0+pow(1.0-phophs_.xphoto/phophs_.xphmax,2)-pow(phophs_.xphoto/phophs_.xphmax,3))/
+        (1.0+pow(1.0-phophs_.xphoto/phophs_.xphmax,2));
+  }
+  else{
+    DATA=(ME-1.0)/2.0;
+    PHOERR(6,"PHOCORN",DATA);
+    YY=1.0;
+    phwt_.beta=sqrt(1.0-XX);
+    wt1=(1.0-phophs_.costhg*sqrt(1.0-MCHREN))/(1.0-phophs_.costhg*phwt_.beta);
+    wt2=(1.0-XX/YY/(1.0-phwt_.beta*phwt_.beta*phophs_.costhg*phophs_.costhg))*(1.0+phophs_.costhg*phwt_.beta)/2.0;
+    wt3=1.0;
+  }
+  wt2=wt2*PHOFAC(1);
+  PHOCOR=wt1*wt2*wt3;
+
+  phopro_.corwt=PHOCOR;
+  if(PHOCOR>1.0){
+    DATA=PHOCOR;
+    PHOERR(3,"PHOCOR",DATA);
+  }
+  return PHOCOR;
+}
+
+
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays CORrection weight from
+//              matrix elements
+//
+//    Purpose:  Calculate  photon  angle.  The reshaping functions  will
+//              have  to  depend  on the spin S of the charged particle.
+//              We define:  ME = 2 * S + 1 !
+//
+//    Input Parameters:  MPASQR:  Parent mass squared,
+//                       MCHREN:  Renormalised mass of charged system,
+//                       ME:      2 * spin + 1 determines matrix element
+//
+//    Output Parameter:  Function value.
+//
+//    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
+//                                                Last Update: 21/03/93
+//
+//----------------------------------------------------------------------
+
+double  PHOCOR(double MPASQR,double MCHREN,int ME){
+  double XX,YY,DATA;
+  double PHOC;
+  int IscaNLO;
+
+  //--
+  //--   Shaping (modified by ZW)...
+  XX=4.0*phomom_.mchsqr/MPASQR*(1.0-phophs_.xphoto)/pow((1.0-phophs_.xphoto+(phomom_.mchsqr-phomom_.mnesqr)/MPASQR),2);
+  if(ME==1){
+    YY=1.0;
+    phwt_.wt3=(1.0-phophs_.xphoto/phophs_.xphmax)/((1.0+pow((1.0-phophs_.xphoto/phophs_.xphmax),2))/2.0);
+  }
+  else if(ME==2){
+    YY=0.5*(1.0-phophs_.xphoto/phophs_.xphmax+1.0/(1.0-phophs_.xphoto/phophs_.xphmax));
+    phwt_.wt3=1.0;
+  }
+  else if((ME==3)||(ME==4)||(ME==5)){
+    YY=1.0;
+    phwt_.wt3=(1.0+pow(1.0-phophs_.xphoto/phophs_.xphmax,2)-pow(phophs_.xphoto/phophs_.xphmax,3))/
+              (1.0+pow(1.0-phophs_.xphoto/phophs_.xphmax,2)  );
+  }
+  else{
+    DATA=(ME-1.0)/2.0;
+    PHOERR(6,"PHOCOR",DATA);
+    YY=1.0;
+    phwt_.wt3=1.0;
+  }
+
+
+  phwt_.beta=sqrt(1.0-XX);
+  phwt_.wt1=(1.0-phophs_.costhg*sqrt(1.0-MCHREN))/(1.0-phophs_.costhg*phwt_.beta);
+  phwt_.wt2=(1.0-XX/YY/(1.0-phwt_.beta*phwt_.beta*phophs_.costhg*phophs_.costhg))*(1.0+phophs_.costhg*phwt_.beta)/2.0;
+      
+
+  IscaNLO=Photos::meCorrectionWtForScalar; ///// @@@@@
+  if(ME==1 && IscaNLO ==1){  // this  switch NLO in scalar decays. 
+                             // overrules default calculation.
+                             // Need tests including basic ones
+    PHOC=PHOCORN(MPASQR,MCHREN,ME);
+    phwt_.wt1=1.0;
+    phwt_.wt2=1.0;
+    phwt_.wt3=PHOC;
+  }
+  else{
+    phwt_.wt2=phwt_.wt2*PHOFAC(1);
+  }
+  PHOC=phwt_.wt1*phwt_.wt2*phwt_.wt3;
+
+  phopro_.corwt=PHOC;
+  if(PHOC>1.0){
+    DATA=PHOC;
+    PHOERR(3,"PHOCOR",DATA);
+  }
+  return PHOC;
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTWO:   PHOtos but TWO mothers allowed
+//
+//    Purpose:  Combines two mothers into one in /PHOEVT/
+//              necessary eg in case of g g (q qbar) --> t tbar 
+//
+//    Input Parameters: Common /PHOEVT/ (/PHOCMS/)
+//
+//    Output Parameters:  Common /PHOEVT/, (stored mothers)
+//
+//    Author(s):  Z. Was                          Created at:  5/08/93
+//                                                Last Update:10/08/93
+//
+//----------------------------------------------------------------------
+
+void PHOTWO(int MODE){
+
+  int I;
+  static int i=1;
+  double MPASQR;
+  bool  IFRAD;
+  // logical IFRAD is used to tag cases when two mothers may be 
+  // merged to the sole one. 
+  // So far used in case:
+  //                      1) of t tbar production
+  //
+  // t tbar case
+  if(MODE==0){
+    IFRAD=(pho.idhep[1-i]==21) && (pho.idhep[2-i]==21);
+    IFRAD=IFRAD || (pho.idhep[1-i]==-pho.idhep[2-i] && abs(pho.idhep[1-i])<=6);
+    IFRAD=IFRAD && (abs(pho.idhep[3-i])==6) && (abs(pho.idhep[4-i])==6);
+    MPASQR=  pow(pho.phep[1-i][4-i]+pho.phep[2-i][4-i],2)-pow(pho.phep[1-i][3-i]+pho.phep[2-i][3-i],2)
+            -pow(pho.phep[1-i][2-i]+pho.phep[2-i][2-i],2)-pow(pho.phep[1-i][1-i]+pho.phep[2-i][1-i],2);
+    IFRAD=IFRAD && (MPASQR>0.0);
+    if(IFRAD){
+      //.....combining first and second mother
+      for(I=1;I<=4;I++){
+       pho.phep[1-i][I-i]=pho.phep[1-i][I-i]+pho.phep[2-i][I-i];
+      }
+      pho.phep[1-i][5-i]=sqrt(MPASQR);
+      //.....removing second mother,
+       for(I=1;I<=5;I++){
+        pho.phep[2-i][I-i]=0.0;
+       }
+    }
+  }
+  else{
+      // boosting of the mothers to the reaction frame not implemented yet.
+      // to do it in mode 0 original mothers have to be stored in new comon (?)
+      // and in mode 1 boosted to cms. 
+  }
+} 
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOtos CDE-s
+//
+//    Purpose:  Keep definitions  for PHOTOS QED correction Monte Carlo.
+//
+//    Input Parameters:   None
+//
+//    Output Parameters:  None
+//
+//    Author(s):  Z. Was, B. van Eijk             Created at:  29/11/89
+//                                                Last Update: 10/08/93
+//
+// =========================================================
+//    General Structure Information:                       =
+// =========================================================
+//:   ROUTINES:
+//             1) INITIALIZATION (all in C++ now)
+//             2) GENERAL INTERFACE:
+//                                      PHOBOS
+//                                      PHOIN
+//                                      PHOTWO (specific interface
+//                                      PHOOUT
+//                                      PHOCHK
+//                                      PHTYPE (specific interface
+//                                      PHOMAK (specific interface
+//             3) QED PHOTON GENERATION:
+//                                      PHINT
+//                                      PHOBW
+//                                      PHOPRE
+//                                      PHOOMA
+//                                      PHOENE
+//                                      PHOCOR
+//                                      PHOFAC
+//                                      PHODO
+//             4) UTILITIES:
+//                                      PHOTRI
+//                                      PHOAN1
+//                                      PHOAN2
+//                                      PHOBO3
+//                                      PHORO2
+//                                      PHORO3
+//                                      PHOCHA
+//                                      PHOSPI
+//                                      PHOERR
+//                                      PHOREP
+//                                      PHLUPA
+//                                      PHCORK
+//                                      IPHQRK
+//                                      IPHEKL
+//   COMMONS:
+//   NAME     USED IN SECT. # OF OC//     Comment
+//   PHOQED   1) 2)            3      Flags whether emisson to be gen. 
+//   PHOLUN   1) 4)            6      Output device number
+//   PHOCOP   1) 3)            4      photon coupling & min energy
+//   PHPICO   1) 3) 4)         5      PI & 2*PI
+//   PHOSTA   1) 4)            3      Status information
+//   PHOKEY   1) 2) 3)         7      Keys for nonstandard application
+//   PHOVER   1)               1      Version info for outside
+//   HEPEVT   2)               2      PDG common
+//   PH_HEPEVT2)               8      PDG common internal
+//   PHOEVT   2) 3)           10      PDG branch
+//   PHOIF    2) 3)            2      emission flags for PDG branch 
+//   PHOMOM   3)               5      param of char-neutr system
+//   PHOPHS   3)               5      photon momentum parameters
+//   PHOPRO   3)               4      var. for photon rep. (in branch)
+//   PHOCMS   2)               3      parameters of boost to branch CMS
+//   PHNUM    4)               1      event number from outside         
+//----------------------------------------------------------------------
+
+
+//----------------------------------------------------------------------
+//
+//    PHOIN:   PHOtos INput
+//
+//    Purpose:  copies IP branch of the common /PH_HEPEVT/ into /PHOEVT/
+//              moves branch into its CMS system.
+//
+//    Input Parameters:       IP:  pointer of particle starting branch
+//                                 to be copied
+//                        BOOST:   Flag whether boost to CMS was or was 
+//     .                          replace stri  not performed.
+//
+//    Output Parameters:  Commons: /PHOEVT/, /PHOCMS/
+//
+//    Author(s):  Z. Was                          Created at:  24/05/93
+//                                                Last Update: 16/11/93
+//
+//----------------------------------------------------------------------
+void PHOIN(int IP,bool *BOOST,int nhep0){
+  int FIRST,LAST,I,LL,IP2,J,NA;
+  double PB;
+  static int i=1;
+
+  //--
+  // let-s calculate size of the little common entry
+  FIRST=hep.jdahep[IP-i][1-i];
+  LAST =hep.jdahep[IP-i][2-i];
+  pho.nhep=3+LAST-FIRST+hep.nhep-nhep0;
+  pho.nevhep=pho.nhep;
+
+  // let-s take in decaying particle
+  pho.idhep[1-i]=hep.idhep[IP-i];
+  pho.jdahep[1-i][1-i]=3;
+  pho.jdahep[1-i][2-i]=3+LAST-FIRST;
+  for(I=1;I<=5;I++) pho.phep[1-i][I-i]=hep.phep[IP-i][I-i];
+           
+  // let-s take in eventual second mother
+  IP2=hep.jmohep[hep.jdahep[IP-i][1-i]-i][2-i];
+  if((IP2!=0) && (IP2!=IP)){
+    pho.idhep[2-i]=hep.idhep[IP2-i];
+    pho.jdahep[2-i][1-i]=3;
+    pho.jdahep[2-i][2-i]=3+LAST-FIRST;
+    for(I=1;I<=5;I++)
+      pho.phep[2-i][I-i]=hep.phep[IP2-i][I-i];
+  }
+  else{
+    pho.idhep[2-i]=0;
+    for(I=1;I<=5;I++)  pho.phep[2-i][I-i]=0.0;
+  }            
+        
+  // let-s take in daughters
+  for(LL=0;LL<=LAST-FIRST;LL++){
+    pho.idhep[3+LL-i]=hep.idhep[FIRST+LL-i];
+    pho.jmohep[3+LL-i][1-i]=hep.jmohep[FIRST+LL-i][1-i];
+    if(hep.jmohep[FIRST+LL-i][1-i]==IP) pho.jmohep[3+LL-i][1-i]=1;
+    for(I=1;I<=5;I++) pho.phep[3+LL-i][I-i]=hep.phep[FIRST+LL-i][I-i];
+          
+  }
+  if(hep.nhep>nhep0){
+    // let-s take in illegitimate daughters
+    NA=3+LAST-FIRST; 
+    for(LL=1;LL<=hep.nhep-nhep0;LL++){
+      pho.idhep[NA+LL-i]=hep.idhep[nhep0+LL-i];
+      pho.jmohep[NA+LL-i][1-i]=hep.jmohep[nhep0+LL-i][1-i];
+      if(hep.jmohep[nhep0+LL-i][1-i]==IP) pho.jmohep[NA+LL-i][1-i]=1;
+      for(I=1;I<=5;I++) pho.phep[NA+LL-i][I-i]=hep.phep[nhep0+LL-i][I-i];
+          
+    }
+    //--        there is hep.nhep-nhep0 daugters more.
+    pho.jdahep[1-i][2-i]=3+LAST-FIRST+hep.nhep-nhep0;
+  }
+  if (pho.idhep[pho.nhep-i]==22) PHLUPA(100001);
+  // if (pho.idhep[pho.nhep-i]==22) exit(0);
+  PHCORK(0);
+  if(pho.idhep[pho.nhep-i]==22) PHLUPA(100002);
+
+  // special case of t tbar production process
+  if(phokey_.iftop) PHOTWO(0);
+  *BOOST=false;
+
+  //--   Check whether parent is in its rest frame...
+  // ZBW ND  27.07.2009:
+  // bug reported by Vladimir Savinov localized and fixed.
+  // protection against rounding error was back-firing if soft
+  // momentum of mother was physical. Consequence was that PHCORK was
+  // messing up masses of final state particles in vertex of the decay.
+  // Only configurations with previously generated photons of energy fraction
+  // smaller than 0.0001 were affected. Effect was numerically insignificant. 
+
+  //      IF (     (ABS(pho.phep[4,1)-pho.phep[5,1)).GT.pho.phep[5,1)*1.D-8)
+  //     $    .AND.(pho.phep[5,1).NE.0))                            THEN
+
+  if((fabs(pho.phep[1-i][1-i]+fabs(pho.phep[1-i][2-i])+fabs(pho.phep[1-i][3-i]))>
+      pho.phep[1-i][5-i]*1.E-8) && (pho.phep[1-i][5-i]!=0)){
+
+    *BOOST=true;
+    //PHOERR(404,"PHOIN",1.0);  // we need to improve this warning:  program should never
+                              // enter this place  
+    //  may be   exit(0);
+    //--
+    //--   Boost daughter particles to rest frame of parent...
+    //--   Resultant neutral system already calculated in rest frame !
+    for(J=1;J<=3;J++) phocms_.bet[J-i]=-pho.phep[1-i][J-i]/pho.phep[1-i][5-i];
+    phocms_.gam=pho.phep[1-i][4-i]/pho.phep[1-i][5-i];
+    for(I=pho.jdahep[1-i][1-i];I<=pho.jdahep[1-i][2-i];I++){
+      PB=phocms_.bet[1-i]*pho.phep[I-i][1-i]+phocms_.bet[2-i]*pho.phep[I-i][2-i]+phocms_.bet[3-i]*pho.phep[I-i][3-i];
+      for(J=1;J<=3;J++)   pho.phep[I-i][J-i]=pho.phep[I-i][J-i]+phocms_.bet[J-i]*(pho.phep[I-i][4-i]+PB/(phocms_.gam+1.0));
+      pho.phep[I-i][4-i]=phocms_.gam*pho.phep[I-i][4-i]+PB;
+    }
+    //--    Finally boost mother as well
+    I=1;   
+    PB=phocms_.bet[1-i]*pho.phep[I-i][1-i]+phocms_.bet[2-i]*pho.phep[I-i][2-i]+phocms_.bet[3-i]*pho.phep[I-i][3-i];
+    for(J=1;J<=3;J++) pho.phep[I-i][J-i]=pho.phep[I-i][J-i]+phocms_.bet[J-i]*(pho.phep[I-i][4-i]+PB/(phocms_.gam+1.0));
+    pho.phep[I-i][4-i]=phocms_.gam*pho.phep[I-i][4-i]+PB;
+  }
+
+
+  // special case of t tbar production process
+  if(phokey_.iftop) PHOTWO(1);
+  PHLUPA(2);
+  if(pho.idhep[pho.nhep-i]==22) PHLUPA(10000);
+  //if (pho.idhep[pho.nhep-1-i]==22) exit(0);  // this is probably form very old times ...
+  return;
+} 
+
+
+//----------------------------------------------------------------------
+//
+//    PHOOUT:   PHOtos OUTput
+//
+//    Purpose:  copies back IP branch of the common /PH_HEPEVT/ from 
+//              /PHOEVT/ moves branch back from its CMS system.
+//
+//    Input Parameters:       IP:  pointer of particle starting branch
+//                                 to be given back.
+//                        BOOST:   Flag whether boost to CMS was or was 
+//     .                            not performed.
+//
+//    Output Parameters:  Common /PHOEVT/, 
+//
+//    Author(s):  Z. Was                          Created at:  24/05/93
+//                                                Last Update:
+//
+//----------------------------------------------------------------------
+void PHOOUT(int IP, bool BOOST, int nhep0){
+  int LL,FIRST,LAST,I;
+  int NN,J,K,NA;
+  double PB;
+  static int i=1;
+  if(pho.nhep==pho.nevhep) return;
+  //--   When parent was not in its rest-frame, boost back...
+  PHLUPA(10);
+  if (BOOST){
+    PHOERR(404,"PHOOUT",1.0);  // we need to improve this warning:  program should never
+                               // enter this place  
+
+    for (J=pho.jdahep[1-i][1-i];J<=pho.jdahep[1-i][2-i];J++){
+      PB=-phocms_.bet[1-i]*pho.phep[J-i][1-i]-phocms_.bet[2-i]*pho.phep[J-i][2-i]-phocms_.bet[3-i]*pho.phep[J-i][3-i];
+      for(K=1;K<=3;K++) pho.phep[J-i][K-i]=pho.phep[J-i][K-i]-phocms_.bet[K-i]*(pho.phep[J-i][4-i]+PB/(phocms_.gam+1.0));
+      pho.phep[J-i][4-i]=phocms_.gam*pho.phep[J-i][4-i]+PB;
+    }
+
+    //--   ...boost photon, or whatever else has shown up
+    for(NN=pho.nevhep+1;NN<=pho.nhep;NN++){
+      PB=-phocms_.bet[1-i]*pho.phep[NN-i][1-i]-phocms_.bet[2-i]*pho.phep[NN-i][2-i]-phocms_.bet[3-i]*pho.phep[NN-i][3-i];
+      for(K=1;K<=3;K++) pho.phep[NN-i][K-i]=pho.phep[NN-i][K-i]-phocms_.bet[K-i]*(pho.phep[NN-i][4-i]+PB/(phocms_.gam+1.0));
+      pho.phep[NN-i][4-i]=phocms_.gam*pho.phep[NN][4-i]+PB;
+    }
+                                         }
+  PHCORK(0);   // we have to use it because it clears input 
+               // for grandaughters modified in C++
+  FIRST=hep.jdahep[IP-i][1-i];
+  LAST =hep.jdahep[IP-i][2-i];
+  // let-s take in original daughters
+  for(LL=0;LL<=LAST-FIRST;LL++){
+    hep.idhep[FIRST+LL-i] = pho.idhep[3+LL-i];
+    for(I=1;I<=5;I++) hep.phep[FIRST+LL-i][I-i] = pho.phep[3+LL-i][I-i];         
+  }
+
+  // let-s take newcomers to the end of HEPEVT.
+  NA=3+LAST-FIRST;
+  for (LL=1;LL<=pho.nhep-NA;LL++){
+    hep.idhep[nhep0+LL-i] = pho.idhep[NA+LL-i];
+    hep.isthep[nhep0+LL-i]=pho.isthep[NA+LL-i];
+    hep.jmohep[nhep0+LL-i][1-i]=IP;
+    hep.jmohep[nhep0+LL-i][2-i]=hep.jmohep[hep.jdahep[IP-i][1-i]-i][2-i];
+    hep.jdahep[nhep0+LL-i][1-i]=0;
+    hep.jdahep[nhep0+LL-i][2-i]=0;
+    for(I=1;I<=5;I++) hep.phep[nhep0+LL-i][I-i] = pho.phep[NA+LL-i][I-i];
+  }
+  hep.nhep=hep.nhep+pho.nhep-pho.nevhep;
+  PHLUPA(20);
+  return;
+}
+
+//----------------------------------------------------------------------
+//
+//    PHOCHK:   checking branch.
+//
+//    Purpose:  checks whether particles in the common block /PHOEVT/
+//              can be served by PHOMAK. 
+//              JFIRST is the position in /PH_HEPEVT/ (!) of the first 
+//              daughter of sub-branch under action.
+//
+//
+//    Author(s):  Z. Was                           Created at: 22/10/92
+//                                                Last Update: 11/12/00
+//
+//----------------------------------------------------------------------
+//     ********************
+
+void PHOCHK(int JFIRST){
+
+  int IDABS,NLAST,I;
+  bool IFRAD;
+  int IDENT,K;
+  static int i=1, IPPAR=1;
+
+  NLAST = pho.nhep;
+  //
+  for (I=IPPAR;I<=NLAST;I++){
+    IDABS    = abs(pho.idhep[I-i]);
+    // possibly call on PHZODE is a dead (to be omitted) code. 
+    pho.qedrad[I-i]= F(0,IDABS)  && F(0,abs(pho.idhep[1-i]))
+                                 &&  (pho.idhep[2-i]==0);
+
+    if(I>2) pho.qedrad[I-i]=pho.qedrad[I-i] && hep.qedrad[JFIRST+I-IPPAR-2-i];
+  }
+
+  //--
+  // now we go to special cases, where pho.qedrad[I) will be overwritten
+  //--
+  IDENT=pho.nhep;
+  if(phokey_.iftop){
+    // special case of top pair production
+    for(K=pho.jdahep[1-i][2-i];K>=pho.jdahep[1-i][1-i];K--){
+      if(pho.idhep[K-i]!=22){
+       IDENT=K;
+       break;   // from loop over K
+      }
+    }
+
+    IFRAD=((pho.idhep[1-i]==21)      && (pho.idhep[2-i]== 21))
+      ||  ((abs(pho.idhep[1-i])<=6)  && (pho.idhep[2-i]==(-pho.idhep[1-i])));
+        IFRAD=IFRAD
+          && (abs(pho.idhep[3-i])==6)&& (pho.idhep[4-i]==(-pho.idhep[3-i]))
+         && (IDENT==4);   
+        if(IFRAD){    
+         for(I=IPPAR;I<=NLAST;I++){
+           pho.qedrad[I-i]= true;
+           if(I>2) pho.qedrad[I-i]=pho.qedrad[I-i] && hep.qedrad[JFIRST+I-IPPAR-2-i];
+         }
+       }
+  }
+  //--
+  //--
+  if(phokey_.iftop){
+    // special case of top decay
+    for (K=pho.jdahep[1-i][2-i];K>=pho.jdahep[1-i][1-i];K--){
+      if(pho.idhep[K-i]!=22){
+       IDENT=K;
+       break;
+      }
+    }
+    IFRAD=((abs(pho.idhep[1-i])==6) && (pho.idhep[2-i]==0));
+    IFRAD=IFRAD
+      &&    ((abs(pho.idhep[3-i])==24) &&(abs(pho.idhep[4-i])== 5)
+         || (abs(pho.idhep[3-i])== 5) &&(abs(pho.idhep[4-i])==24) )
+      &&  (IDENT==4);
+  
+    if(IFRAD){    
+      for(I=IPPAR;I<=NLAST;I++){
+       pho.qedrad[I-i]= true;
+       if(I>2) pho.qedrad[I-i] = (pho.qedrad[I-i] && hep.qedrad[JFIRST+I-IPPAR-2-i]);
+      }
+    }
+  }
+  //--
+  //--
+  return;
+}
+
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   PHOton radiation in decays calculation  of photon ENErgy
+//              fraction
+//
+//    Purpose:  Subroutine  returns  photon  energy fraction (in (parent
+//              mass)/2 units) for the decay bremsstrahlung.
+//
+//    Input Parameters:  MPASQR:  Mass of decaying system squared,
+//                       XPHCUT:  Minimum energy fraction of photon,
+//                       XPHMAX:  Maximum energy fraction of photon.
+//
+//    Output Parameter:  MCHREN:  Renormalised mass squared,
+//                       BETA:    Beta factor due to renormalisation,
+//                       XPHOTO:  Photon energy fraction,
+//                       XF:      Correction factor for PHOFA//
+//
+//    Author(s):  S. Jadach, Z. Was               Created at:  01/01/89
+//                B. van Eijk, P.Golonka          Last Update: 11/07/13
+//
+//----------------------------------------------------------------------
+
+void PHOENE(double MPASQR,double *pMCHREN,double *pBETA,double *pBIGLOG,int IDENT){
+  double  DATA;
+  double PRSOFT,PRHARD;
+  double PRKILL,RRR;
+  int K,IDME;
+  double PRSUM;
+  static int i=1;
+  double &MCHREN = *pMCHREN;
+  double &BETA   = *pBETA;
+  double &BIGLOG = *pBIGLOG;
+  //--
+  if(phophs_.xphmax<=phocop_.xphcut){
+    BETA=PHOFAC(-1);    // to zero counter, here beta is dummy
+    phophs_.xphoto=0.0;
+    return;
+  }
+  //--   Probabilities for hard and soft bremstrahlung...
+  MCHREN=4.0* phomom_.mchsqr/MPASQR/pow(1.0+ phomom_.mchsqr/MPASQR,2);
+  BETA=sqrt(1.0-MCHREN);
+
+#ifdef VARIANTB
+  // ----------- VARIANT B ------------------
+  // we replace 1D0/BETA*BIGLOG with (1.0/BETA*BIGLOG+2*phokey_.fint) 
+  // for integral of new crude
+  BIGLOG=log(MPASQR/ phomom_.mchsqr*(1.0+BETA)*(1.0+BETA)/4.0*
+            pow(1.0+ phomom_.mchsqr/MPASQR,2));
+  PRHARD=phocop_.alpha/PI*(1.0/BETA*BIGLOG+2*phokey_.fint)
+        *(log(phophs_.xphmax/phocop_.xphcut)-.75+phocop_.xphcut/phophs_.xphmax-.25*phocop_.xphcut*phocop_.xphcut/phophs_.xphmax/phophs_.xphmax);
+  PRHARD=PRHARD*PHOCHA(IDENT)*PHOCHA(IDENT)*phokey_.fsec;
+  // ----------- END OF VARIANT B ------------------
+#else
+  // ----------- VARIANT A ------------------
+  BIGLOG=log(MPASQR/ phomom_.mchsqr*(1.0+BETA)*(1.0+BETA)/4.0*
+            pow(1.0+ phomom_.mchsqr/MPASQR,2));
+  PRHARD=phocop_.alpha/PI*(1.0/BETA*BIGLOG)*
+    (log(phophs_.xphmax/phocop_.xphcut)-.75+phocop_.xphcut/phophs_.xphmax-.25*phocop_.xphcut*phocop_.xphcut/phophs_.xphmax/phophs_.xphmax);
+  PRHARD=PRHARD*PHOCHA(IDENT)*PHOCHA(IDENT)*phokey_.fsec*phokey_.fint;
+  //me_channel_(&IDME);
+  IDME=PH_HEPEVT_Interface::ME_channel;
+  //        write(*,*) 'KANALIK IDME=',IDME
+  if(IDME==0){  
+    // do nothing
+  }
+
+  else if(IDME==1){
+    PRHARD=PRHARD/(1.0+0.75*phocop_.alpha/PI); //  NLO
+  }
+  else if (IDME==2){
+    // work on virtual crrections in W decay to be done.
+  }
+  else{
+    cout << "problem with ME_CHANNEL  IDME= " << IDME << endl;
+          exit(0);
+  }
+
+  //----------- END OF VARIANT A ------------------
+#endif
+  if(phopro_.irep==0) phopro_.probh=0.0;
+  PRKILL=0.0;
+  if(phokey_.iexp){           // IEXP
+    phoexp_.nchan=phoexp_.nchan+1;
+    if(phoexp_.expini){    // EXPINI
+      phoexp_.pro[phoexp_.nchan-i]=PRHARD+0.05*(1.0+phokey_.fint); // we store hard photon emission prob 
+                                                                  //for leg phoexp_.nchan
+      PRHARD=0.0;                                                // to kill emission at initialization call
+      phopro_.probh=PRHARD;
+    }
+    else{                // EXPINI
+      PRSUM=0.0;
+      for(K=phoexp_.nchan;K<=phoexp_.NX;K++) PRSUM=PRSUM+phoexp_.pro[K-i];
+      PRHARD=PRHARD/PRSUM;  // note that PRHARD may be smaller than 
+                            //phoexp_.pro[phoexp_.nchan) because it is calculated
+                            // for kinematical configuartion as is 
+                            // (with effects of previous photons)
+      PRKILL=phoexp_.pro[phoexp_.nchan-i]/PRSUM-PRHARD;
+
+    }                     // EXPINI
+    PRSOFT=1.0-PRHARD;
+  }
+  else{                       // IEXP
+    PRHARD=PRHARD*PHOFAC(0); // PHOFAC is used to control eikonal 
+                             // formfactors for non exp version only
+                             // here PHOFAC(0)=1 at least now.
+    phopro_.probh=PRHARD;
+  }                         // IEXP
+  PRSOFT=1.0-PRHARD;
+  //--
+  //--   Check on kinematical bounds
+  if (phokey_.iexp){
+    if(PRSOFT<-5.0E-8){
+      DATA=PRSOFT;
+      PHOERR(2,"PHOENE",DATA);
+    }
+  }
+  else{
+    if (PRSOFT<0.1){
+      DATA=PRSOFT;
+      PHOERR(2,"PHOENE",DATA);
+    }
+  }
+
+  RRR=Photos::randomDouble();
+  if (RRR<PRSOFT){
+    //--
+    //--   No photon... (ie. photon too soft)
+    phophs_.xphoto=0.0;
+    if (RRR<PRKILL) phophs_.xphoto=-5.0;  //No photon...no further trials
+  }
+  else{
+  //--
+  //--   Hard  photon... (ie.  photon  hard enough).
+  //--   Calculate  Altarelli-Parisi Kernel
+  do{
+    phophs_.xphoto=exp(Photos::randomDouble()*log(phocop_.xphcut/phophs_.xphmax));
+    phophs_.xphoto=phophs_.xphoto*phophs_.xphmax;}
+  while(Photos::randomDouble()>((1.0+pow(1.0-phophs_.xphoto/phophs_.xphmax,2))/2.0));
+  }
+
+  //--
+  //--   Calculate parameter for PHOFAC function
+  phopro_.xf=4.0* phomom_.mchsqr*MPASQR/pow(MPASQR+ phomom_.mchsqr-phomom_.mnesqr,2);
+  return;
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOTOS:   Photon radiation in decays
+//
+//    Purpose:  Order (alpha) radiative corrections  are  generated  in
+//              the decay of the IPPAR-th particle in the HEP-like
+//              common /PHOEVT/.  Photon radiation takes place from one
+//              of the charged daughters of the decaying particle IPPAR
+//              WT is calculated, eventual rejection will be performed
+//              later after inclusion of interference weight.
+//
+//    Input Parameter:    IPPAR:  Pointer   to   decaying  particle  in
+//                                /PHOEVT/ and the common itself,
+//
+//    Output Parameters:  Common  /PHOEVT/, either  with  or  without a
+//                                photon(s) added.
+//                        WT      weight of the configuration 
+//
+//    Author(s):  Z. Was, B. van Eijk             Created at:  26/11/89
+//                                                Last Update: 12/07/13
+//
+//----------------------------------------------------------------------
+
+void PHOPRE(int IPARR,double *pWT,int *pNEUDAU,int *pNCHARB){
+  int CHAPOI[pho.nmxhep];
+  double MINMAS,MPASQR,MCHREN;
+  double EPS,DEL1,DEL2,DATA,BIGLOG;
+  double MASSUM;
+  int IP,IPPAR,I,J,ME,NCHARG,NEUPOI,NLAST;
+  int IDABS;
+  double WGT;
+  int IDME;
+  double a,b;
+  double &WT = *pWT;
+  int &NEUDAU = *pNEUDAU;
+  int &NCHARB = *pNCHARB;
+
+  static int i=1;
+
+  //--
+  IPPAR=IPARR;
+  //--   Store pointers for cascade treatement...
+  IP=IPPAR;
+  NLAST=pho.nhep;
+
+  //--
+  //--   Check decay multiplicity..
+  if (pho.jdahep[IP-i][1-i]==0) return;
+
+  //--
+  //--   Loop over daughters, determine charge multiplicity
+
+  NCHARG=0;
+  phopro_.irep=0;
+  MINMAS=0.0;
+  MASSUM=0.0;
+  for (I=pho.jdahep[IP-i][1-i];I<=pho.jdahep[IP-i][2-i];I++){
+    //--
+    //--
+    //--   Exclude marked particles, quarks and gluons etc...
+    IDABS=abs(pho.idhep[I-i]);
+    if (pho.qedrad[I-pho.jdahep[IP-i][1-i]+3-i]){
+      if(PHOCHA(pho.idhep[I-i])!=0){
+       NCHARG=NCHARG+1;
+       if(NCHARG>pho.nmxhep){
+         DATA=NCHARG;
+         PHOERR(1,"PHOTOS",DATA);
+       }
+       CHAPOI[NCHARG-i]=I;
+      }
+      MINMAS=MINMAS+pho.phep[I-i][5-i]*pho.phep[I-i][5-i];
+    }
+    MASSUM=MASSUM+pho.phep[I-i][5-i];
+  }
+
+  if (NCHARG!=0){
+    //--
+    //--   Check that sum of daughter masses does not exceed parent mass
+    if ((pho.phep[IP-i][5-i]-MASSUM)/pho.phep[IP-i][5-i]>2.0*phocop_.xphcut){
+      //--
+      label30:
+
+//  do{
+    
+      for (J=1;J<=3;J++) phomom_.pneutr[J-i] =-pho.phep[CHAPOI[NCHARG-i]-i][J-i];
+      phomom_.pneutr[4-i]=pho.phep[IP-i][5-i]-pho.phep[CHAPOI[NCHARG-i]-i][4-i];
+      //--
+      //--   Calculate  invariant  mass of 'neutral' etc. systems
+      MPASQR=pho.phep[IP-i][5-i]*pho.phep[IP-i][5-i];
+      phomom_.mchsqr=pow(pho.phep[CHAPOI[NCHARG-i]-i][5-i],2);
+      if((pho.jdahep[IP-i][2-i]-pho.jdahep[IP-i][1-i])==1){
+        NEUPOI=pho.jdahep[IP-i][1-i];
+        if(NEUPOI==CHAPOI[NCHARG-i]) NEUPOI=pho.jdahep[IP-i][2-i];
+        phomom_.mnesqr=pho.phep[NEUPOI-i][5-i]*pho.phep[NEUPOI-i][5-i];
+        phomom_.pneutr[5-i]=pho.phep[NEUPOI-i][5-i];
+      }
+      else{
+        phomom_.mnesqr=pow(phomom_.pneutr[4-i],2)-pow(phomom_.pneutr[1-i],2)-pow(phomom_.pneutr[2-i],2)-pow(phomom_.pneutr[3-i],2);
+        phomom_.mnesqr=max(phomom_.mnesqr,MINMAS-phomom_.mchsqr);
+        phomom_.pneutr[5-i]=sqrt(phomom_.mnesqr);
+      }
+
+      //--
+      //--   Determine kinematical limit...
+      phophs_.xphmax=(MPASQR-pow(phomom_.pneutr[5-i]+pho.phep[CHAPOI[NCHARG-i]-i][5-i],2))/MPASQR;
+
+      //--
+      //--   Photon energy fraction...
+      PHOENE(MPASQR,&MCHREN,&phwt_.beta,&BIGLOG,pho.idhep[CHAPOI[NCHARG-i]-i]);
+     //--
+
+      if (phophs_.xphoto<-4.0) {
+        NCHARG=0;                 // we really stop trials
+        phophs_.xphoto=0.0;       // in this case !!
+        //--   Energy fraction not too large (very seldom) ? Define angle.
+      }
+      else if ((phophs_.xphoto<phocop_.xphcut) || (phophs_.xphoto > phophs_.xphmax)){
+        //--
+        //--   No radiation was accepted, check  for more daughters  that may ra-
+        //--   diate and correct radiation probability...
+        NCHARG=NCHARG-1;
+        if(NCHARG>0)  phopro_.irep=phopro_.irep+1;
+        if(NCHARG>0) goto label30;
+      }
+      else{    
+       //--
+        //--   Angle is generated  in  the  frame defined  by  charged vector and
+        //--   PNEUTR, distribution is taken in the infrared limit...
+        EPS=MCHREN/(1.0+phwt_.beta);
+        //--
+        //--   Calculate sin(theta) and cos(theta) from interval variables
+        DEL1=(2.0-EPS)*pow(EPS/(2.0-EPS),Photos::randomDouble());
+        DEL2=2.0-DEL1;
+
+#ifdef VARIANTB
+       // ----------- VARIANT B ------------------
+        // corrections for more efiicient interference correction,
+        // instead of doubling crude distribution, we add flat parallel channel
+       if(Photos::randomDouble()<BIGLOG/phwt_.beta/(BIGLOG/phwt_.beta+2*phokey_.fint)){
+         phophs_.costhg=(1.0-DEL1)/phwt_.beta;
+         phophs_.sinthg=sqrt(DEL1*DEL2-MCHREN)/phwt_.beta;
+       }
+       else{
+         phophs_.costhg=-1.0+2*Photos::randomDouble();
+         phophs_.sinthg= sqrt(1.0-phophs_.costhg*phophs_.costhg);
+       }
+       if (phokey_.fint>1.0){
+         WGT=1.0/(1.0-phwt_.beta*phophs_.costhg);
+         WGT=WGT/(WGT+phokey_.fint);
+         //       WGT=1.0   // ??
+       }
+       else{
+         WGT=1.0;
+       }
+        //
+        // ----------- END OF VARIANT B ------------------
+#else
+       // ----------- VARIANT A ------------------
+        phophs_.costhg=(1.0-DEL1)/phwt_.beta;
+        phophs_.sinthg=sqrt(DEL1*DEL2-MCHREN)/phwt_.beta;
+        WGT=1.0;
+        // ----------- END OF VARIANT A ------------------
+#endif
+       //--
+       //--   Determine spin of  particle and construct code  for matrix element
+        ME=(int) (2.0*PHOSPI(pho.idhep[CHAPOI[NCHARG-i]-i])+1.0);
+        //--
+        //--   Weighting procedure with 'exact' matrix element, reconstruct kine-
+        //--   matics for photon, neutral and charged system and update /PHOEVT/.
+        //--   Find pointer to the first component of 'neutral' system
+       for  (I=pho.jdahep[IP-i][1-i];I<=pho.jdahep[IP-i][2-i];I++){
+         if(I!=CHAPOI[NCHARG-i]){
+           NEUDAU=I;
+           goto label51;   //break; // to 51
+         }
+       }
+        //--
+        //--   Pointer not found...
+       DATA=NCHARG;
+       PHOERR(5,"PHOKIN",DATA);
+        label51:
+        NCHARB=CHAPOI[NCHARG-i];
+        NCHARB=NCHARB-pho.jdahep[IP-i][1-i]+3;
+        NEUDAU=NEUDAU-pho.jdahep[IP-i][1-i]+3;
+
+        IDME=PH_HEPEVT_Interface::ME_channel;
+        //  two options introduced temporarily. 
+        //  In future always PHOCOR-->PHOCORN
+        //  Tests and adjustment of wts for Znlo needed.
+        //  otherwise simple change. PHOCORN implements
+        //  exact ME for scalar to 2 scalar decays.
+       if(IDME==2){
+         b=PHOCORN(MPASQR,MCHREN,ME);
+          WT=b*WGT;
+          WT=WT/(1-phophs_.xphoto/phophs_.xphmax+0.5*pow(phophs_.xphoto/phophs_.xphmax,2))*(1-phophs_.xphoto/phophs_.xphmax)/2; // factor to go to WnloWT
+       }
+        else if(IDME==1){
+
+         a=PHOCOR(MPASQR,MCHREN,ME);
+         b=PHOCORN(MPASQR,MCHREN,ME);
+         WT=b*WGT ;
+        WT=WT*phwt_.wt1*phwt_.wt2*phwt_.wt3/phocorwt_.phocorwt1/phocorwt_.phocorwt2/phocorwt_.phocorwt3; // factor to go to ZnloWT
+         //        write(*,*) ' -----------'
+         //        write(*,*)   phwt_.wt1,' ',phwt_.wt2,' ',phwt_.wt3
+         //        write(*,*)   phocorwt_.phocorwt1,' ',phocorwt_.phocorwt2,' ',phocorwt_.phocorwt3
+       }
+       else{
+         a=PHOCOR(MPASQR,MCHREN,ME);
+          WT=a*WGT;
+//          WT=b*WGT; // /(1-phophs_.xphoto/phophs_.xphmax+0.5*pow(phophs_.xphoto/phophs_.xphmax,2))*(1-phophs_.xphoto/phophs_.xphmax)/2;
+       }
+      
+
+
+      }
+    }
+    else{
+      DATA=pho.phep[IP-i][5-i]-MASSUM;
+      PHOERR(10,"PHOTOS",DATA);
+    }
+  }   
+     
+  //--
+  return;
+}
+
+
+//----------------------------------------------------------------------
+//
+//    PHOMAK:   PHOtos MAKe
+//
+//    Purpose:  Single or double bremstrahlung radiative corrections  
+//              are generated in  the decay of the IPPAR-th particle in 
+//              the  HEP common /PH_HEPEVT/. Example of the use of 
+//              general tools.
+//
+//    Input Parameter:    IPPAR:  Pointer   to   decaying  particle  in
+//                                /PH_HEPEVT/ and the common itself
+//
+//    Output Parameters:  Common  /PH_HEPEVT/, either  with  or  without
+//                                particles added.
+//
+//    Author(s):  Z. Was,                         Created at:  26/05/93
+//                                                Last Update: 29/01/05
+//
+//----------------------------------------------------------------------
+
+void PHOMAK(int IPPAR,int NHEP0){
+
+  double DATA;
+  int IP,NCHARG,IDME;
+  int IDUM;
+  int NCHARB,NEUDAU;
+  double RN,WT;
+  bool BOOST;
+  static int i=1;
+  //--
+  IP=IPPAR;
+  IDUM=1;
+  NCHARG=0;
+  //--
+  PHOIN(IP,&BOOST,NHEP0);
+  PHOCHK(hep.jdahep[IP-i][1-i]);
+  WT=0.0;
+  PHOPRE(1,&WT,&NEUDAU,&NCHARB);
+
+  if(WT==0.0) return;
+  RN=Photos::randomDouble();
+  // PHODO is caling randomDouble(), thus change of series if it is moved before if
+  PHODO(1,NCHARB,NEUDAU);
+
+#ifdef VARIANTB
+  // we eliminate divisions  /phokey_.fint in variant B.  ???
+#endif
+  // get ID of channel dependent ME, ID=0 means no 
+
+  IDME=PH_HEPEVT_Interface::ME_channel;
+  // corrections for matrix elements
+  // controlled by IDME
+  // write(*,*) 'KANALIK IDME=',IDME
+
+  if(     IDME==0) {                                    // default 
+
+    if(phokey_.interf) WT=WT*PHINT(IDUM);
+    if(phokey_.ifw) PHOBW(&WT);                          // extra weight for leptonic W decay 
+  }
+  else if (IDME==2){                                    // ME weight for leptonic W decay
+
+    PhotosMEforW::PHOBWnlo(&WT);
+    WT=WT*2.0;
+  }
+  else if (IDME==1){                                     //  ME weight for leptonic Z decay
+
+    WT=WT*PhotosMEforZ::phwtnlo();
+  }
+  else{
+    cout << "problem with ME_CHANNEL  IDME= " << IDME << endl;
+    exit(0);
+  }
+
+#ifndef VARIANTB
+  WT = WT/phokey_.fint; // FINT must be in variant A
+#endif
+
+  DATA=WT; 
+  if (WT>1.0) PHOERR(3,"WT_INT",DATA);
+  // weighting
+  if (RN<=WT){
+    PHOOUT(IP,BOOST,NHEP0);
+  }
+  return;
+}
+
+//----------------------------------------------------------------------
+//
+//    PHTYPE:   Central manadgement routine.              
+//
+//    Purpose:   defines what kind of the 
+//              actions will be performed at point ID. 
+//
+//    Input Parameters:       ID:  pointer of particle starting branch
+//                                 in /PH_HEPEVT/ to be treated.
+//
+//    Output Parameters:  Common /PH_HEPEVT/.
+//
+//    Author(s):  Z. Was                          Created at:  24/05/93
+//                P. Golonka                      Last Update: 27/06/04
+//
+//----------------------------------------------------------------------
+void PHTYPE(int ID){
+
+  int K;
+  double PRSUM,ESU;
+  int NHEP0;
+  bool IPAIR;
+  double RN,SUM;
+  bool IFOUR;
+  static int i=1;
+
+  //--
+  IFOUR=          phokey_.itre; // we can make internal choice whether 
+                                // we want 3 or four photons at most.
+  IPAIR=true;
+  //--   Check decay multiplicity..
+  if(hep.jdahep[ID-i][1-i]==0) return;
+  //      if (hep.jdahep[ID-i][1-i]==hep.jdahep[ID-i][2-i]) return;
+  //--
+  NHEP0=hep.nhep;
+  //--
+  if(phokey_.iexp){
+    phoexp_.expini=true;      // Initialization/cleaning
+    for(phoexp_.nchan=1;phoexp_.nchan<=phoexp_.NX;phoexp_.nchan++)
+        phoexp_.pro[phoexp_.nchan-i]=0.0;        
+    phoexp_.nchan=0;
+         
+    phokey_.fsec=1.0;
+    PHOMAK(ID,NHEP0);          // Initialization/crude formfactors into 
+                               // phoexp_.pro[phoexp_.nchan)
+    phoexp_.expini=false;
+    RN=Photos::randomDouble();
+    PRSUM=0.0;
+    for(K=1;K<=phoexp_.NX;K++)PRSUM=PRSUM+phoexp_.pro[K-i];
+      
+    ESU=exp(-PRSUM);    
+    // exponent for crude Poissonian multiplicity 
+    // distribution, will be later overwritten 
+    // to give probability for k
+    SUM=ESU;         
+    // distribuant for the crude Poissonian 
+    // at first for k=0
+    for(K=1;K<=100;K++){      // hard coded max (photon) multiplicity is 100
+      if(RN<SUM) break;
+      ESU=ESU*PRSUM/K;        // we get at K ESU=EXP(-PRSUM)*PRSUM**K/K!
+      SUM=SUM+ESU;            // thus we get distribuant at K.
+      phoexp_.nchan=0;
+      PHOMAK(ID,NHEP0);       // LOOPING
+      if(SUM>1.0-phokey_.expeps) break;
+    }
+  }
+  else if(IFOUR){
+    //-- quatro photon emission
+    phokey_.fsec=1.0;
+    RN=Photos::randomDouble();
+    if(RN>=23.0/24.0){
+      PHOMAK(ID,NHEP0);
+      PHOMAK(ID,NHEP0);
+      PHOMAK(ID,NHEP0);
+      PHOMAK(ID,NHEP0);
+    }
+    else if (RN>=17.0/24.0){
+      PHOMAK(ID,NHEP0);
+      PHOMAK(ID,NHEP0);
+    }
+    else if(RN>=9.0/24.0){
+      PHOMAK(ID,NHEP0);
+    }
+    else{
+    }
+  }
+  else if(phokey_.itre){
+    //-- triple photon emission
+    phokey_.fsec=1.0;
+    RN=Photos::randomDouble();
+    if(RN>=5.0/6.0){
+      PHOMAK(ID,NHEP0);
+      PHOMAK(ID,NHEP0);
+      PHOMAK(ID,NHEP0);
+    }
+    else if (RN>=2.0/6.0){
+      PHOMAK(ID,NHEP0);
+    }
+  }
+  else if(phokey_.isec){
+    //-- double photon emission
+    phokey_.fsec=1.0;
+    RN=Photos::randomDouble();
+    if(RN>=0.5){
+      PHOMAK(ID,NHEP0);
+      PHOMAK(ID,NHEP0);
+    }
+  }
+  else{
+    //-- single photon emission
+    phokey_.fsec=1.0;
+    PHOMAK(ID,NHEP0);
+  }
+  //--
+  //-- electron positron pair (coomented out for a while
+  //    if (IPAIR)  PHOPAR(ID,NHEP0);
+}
+
+} // namespace Photospp
+
index 871e3d081b2526b2147df956c53362da1c4bf614..e6fbc097e1b422b14a78b8c2390f254dc24e9bd6 100644 (file)
@@ -1,41 +1,66 @@
 //------------------------------------------------------------------------------//
    EvtGen is a particle decay simulator specifically designed for the needs of 
-   B-physics studies. Complete manual of EvtGen is available at address:               
-   http://robbep.home.cern.ch/robbep/EvtGen/GuideEvtGen.pdf                    
+   B-physics studies. Complete manual of EvtGen is available at:               
+   http://robbep.home.cern.ch/robbep/EvtGen/GuideEvtGen.pdf. Further information
+   can be found on the EvtGen official web site  http://evtgen.warwick.ac.uk/src/          
+   The EvtGen release installed here is taken from 
+   http://svnweb.cern.ch/guest/evtgen/tags/R01-03-00
 //------------------------------------------------------------------------------//
 
-[14/12/2009
+[28/05/2014
  1)This module contains: 
 
-   - EvtGen original code organized in three directories:
-     EvtGenBase-EvtGenModels-EvtGen. EvtGenModels directory contains all models  
-     avilable in EvtGen to decay particles.
+   - EvtGen original code organized in four directories:
+     EvtGenBase-EvtGenModels-EvtGen-EvtGenExternal. 
+     EvtGenModels directory contains all models avilable in EvtGen to decay 
+     particles. EvtGenExternal contains the "interface" class with the external
+     packages
  
    - The interface classes AliGenEvtGen and AliDecayerEvtGen for AliRoot users:
      the methods to decay particles are in AliDecayerEvtGen which represents 
      the implementation of AliDecayer using EvtGen package
 
- 2)EvtGen required libphotos.so to generate Final State Radiation. Photos code is
-   located in PHOTOS directory.  
+ 2)The external packages, interfaced with EvtGen by EvtGenExternal class,
+   are used to generate specific particle decays and  
+   are located in the TEvtGen subdirectories (except for Pythia8):
 
- 3)The implemented cases to force beauty hadrons interest those channels: 
-   B->J/psi+X - B->J/psi+X,J/psi->e-e+ - B->J/psi+X,J/psi->mu-mu+ - B->e+X.
-   Those are decayed by exclusive models of EvtGen, and all parameters and
-   models used to decay them are not modified with respect to the official 
-   EvtGen release. Some of particles produced in the decay chain (i.e. Lamda_c
-   from Lambda_b, Xi_c0 from Xi_b-, etc...) are decayed by Pythia with the 
-   configuration setting in the AliDecayerPythia.
+   - HepMC (http://lcgapp.cern.ch/project/simu/HepMC/download/HepMC-2.06.08.tar.gz)
+     The HepMC package is an object oriented event record written in C++ for High Energy 
+     Physics Monte Carlo Generators.    
+   - Tauola (http://tauolapp.web.cern.ch/tauolapp/resources/TAUOLA.1.1.4/TAUOLA.1.1.4.tar.gz)
+     C++ interface of Tauola code, specifically designed to generate tau decays. 
+
+   - Photos (http://photospp.web.cern.ch/photospp/resources/PHOTOS.3.54/PHOTOS.3.54.tar.gz)
+     C++ interface of Photos code, specifically designed to generate Final State Radiation.
+
+   - Pythia8 (available in $ALICE_ROOT/PYTHIA8/) 
+
+
+ 3)The "default" decay table with all particles and all decay channels 
+   can be found in TEvtGen/EvtGen/DECAY.DEC. The definition of all 
+   particles is done in the table "evt.pdl". Both tables (DECAY.DEC and evt.pdl)
+   are loaded during the initialization of EvtGen. Several decay tables are available 
+   in the directory TEvtGen/EvtGen/DecayTable and are used to generate "forced" decay modes.
+   All parameters, models and BR used in these tables are not modified with respect 
+   to the official EvtGen release. 
+   The following decay tables are tested: BTOD.DEC, BTOELE.DEC, BTOJPSI.DEC, BTOJPSITOELE.DEC,  
+   BTOJPSITOMU.DEC.
 
  4)Polarization is still to be implemented in the interface classes.
-   It would be done soon.
 
- 5)To use EvtGen to decay beauty particles adjust those lines in the Config.C:
+ 5)Below an example of the usage of EvtGen in AliRoot to decay beauty particles. 
+   The following lines should be added in the Config.C:
+ // set the xmldoc path using PYTHIA8DATA enviroement var
+  gSystem->Setenv("PYTHIA8DATA", gSystem->ExpandPathName("$ALICE_ROOT/PYTHIA8/pythia8175/xmldoc"));
 
- //----- load libraries (after loading libpythia6.so) 
-  gSystem->Load("libphotos.so");
-  gSystem->Load("libEvtGenBase");
-  gSystem->Load("libEvtGenModels");
+ //----- load libraries
+  gSystem->Load("libHepMC.so");
+  gSystem->Load("libTauola.so");
+  gSystem->Load("libpythia8.so");
+  gSystem->Load("libPhotos.so");
   gSystem->Load("libEvtGen");
+  gSystem->Load("libEvtGenExternal");
   gSystem->Load("libTEvtGen");
 
  //----- declare an AliGenCocktail 
diff --git a/TEvtGen/Tauola/DecayList.cxx b/TEvtGen/Tauola/DecayList.cxx
new file mode 100644 (file)
index 0000000..ab42277
--- /dev/null
@@ -0,0 +1,85 @@
+#include "DecayList.h"
+#include "Log.h"
+
+using namespace std;
+
+namespace Tauolapp
+{
+
+vector<TauolaParticle*> DecayList::m_particle_list;
+
+int DecayList::getAbsoluteIndex(int index){
+  return getAbsoluteIndex(index, m_particle_list.size()+1);
+}
+
+int DecayList::getAbsoluteIndex(int index, 
+                                int neg_index_relative_to){
+  int absIndex;
+
+  if(index > 0) //absolute position
+    absIndex = index;
+  else //relative to fixed
+    absIndex = index + neg_index_relative_to;
+  //Some error checking
+  if(absIndex < 1 || absIndex > (int)m_particle_list.size()+1){
+    Log::Error()<<"Index outside range: "<< absIndex << ". Range: 1 to "
+                << m_particle_list.size()+1 << endl;
+    Log::Fatal(4);
+  }
+  //  cout << "Final call in getAbsoluteIndex().. "<< absIndex << endl;
+  return absIndex; //account for vectors starting at index 0
+}
+
+// NOTE: Not executed by release examples
+int DecayList::getAbsoluteIndex(TauolaParticle * particle){
+  for(int i=0; i < (int) m_particle_list.size(); i++){
+    if(m_particle_list.at(i)==particle)
+      return i+1;
+  }
+  Log::Warning()<<"Could not find particle in particle_list" << endl;
+  return 0;
+}
+
+TauolaParticle * DecayList::getParticle(int index){
+  return m_particle_list.at(index-1);
+}
+
+void DecayList::updateList(TauolaParticle * new_particle,
+                           int index){
+  
+  if(index > (int) m_particle_list.size())
+    //Add new particle to end
+    addToEnd(new_particle);
+  else{ 
+    // NOTE: Not executed by release examples
+
+    TauolaParticle * old_particle = getParticle(index);
+    //Add new particle
+    m_particle_list.at(index - 1) = new_particle;
+
+    //Remove old particle at same index in event record
+    /**    if(old_particle->production_vertex())
+      old_particle->production_vertex()->remove_particle(old_particle);
+    if(old_particle->end_vertex())
+      old_particle->end_vertex()->remove_particle(old_particle);
+      delete old_particle;**/
+    delete old_particle;
+
+  }
+}
+
+void DecayList::addToEnd(TauolaParticle * new_particle){
+  m_particle_list.push_back(new_particle);
+}
+
+void DecayList::print(){
+  for(int index=0; index < (int) m_particle_list.size(); index++){
+    Log::Info()<< "Index: "<< index+1<<" Object: "<< m_particle_list.at(index)<<endl;
+  }
+}
+  
+void DecayList::clear(){
+  m_particle_list.clear();
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/DecayList.h b/TEvtGen/Tauola/DecayList.h
new file mode 100644 (file)
index 0000000..6d7e06c
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _DecayList_h_included_
+#define _DecayList_h_included_
+
+/** 
+ * @class DecayList
+ *
+ * @brief Storage class for keeping track of TauolaParticles and
+ * their index (as passed to Tauola).
+ *
+ * This class contains a list of TauolaParticles. The index of the
+ * TauolaParticle in the list is passed to FORTRAN TAUOLA (as we can 
+ * not pass TauolaParticles directly). A static copy of the class is 
+ * used for any run of Tauola and is cleared after each decay generation.
+ * To be compatible with how indicies are used in Tauola, those that are:
+ * - < 0 are relative to some other given position in the list
+ * - = 0 is the position one greater than some given position in the list.
+ * - > 0 are absolute. 1 is the first item (which should generally be 
+ * the tau's position) 
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <iostream>
+
+#include "TauolaParticle.h"
+
+using namespace std;
+
+namespace Tauolapp
+{
+
+class TauolaParticle;
+
+class DecayList {
+  
+ public:
+  /** Return the TauolaParticle corresponding to the index (absolute)
+      in the list of particle */
+  static TauolaParticle * getParticle(int index);
+
+  /** Adds the new particle into the list and delete the previous
+     particle at the same position if it exists */
+  static void updateList(TauolaParticle * new_particle,
+                         int index);
+  
+  /** Adds the new particle to the end of list */ 
+  static void addToEnd(TauolaParticle * new_particle);
+
+  /** clear all entries from the list */
+  static void clear();
+
+  /** Translates index (absolute and relative) to
+      absolute index. If a relative index is given (negative integer)
+      it is taken relative from the end of the list */
+  static int getAbsoluteIndex(int index);
+
+  /** Translates index (absolute and relative) to
+      absolute index. If a relative index is given (negative integer)
+      it is taken relative to the parameter "neg_index_relative_to" */
+  static int getAbsoluteIndex(int index, 
+                              int neg_index_relative_to);
+
+  /** Return index (absolute) of "particle" */
+  static int getAbsoluteIndex(TauolaParticle * particle);
+
+  /** Print the contents of the list */
+  static void print();
+
+ private:
+  /** vector used for TauolaParticle mapping */
+  static vector<TauolaParticle*> m_particle_list;
+
+};
+
+} // namespace Tauolapp
+#endif
diff --git a/TEvtGen/Tauola/Log.cxx b/TEvtGen/Tauola/Log.cxx
new file mode 100644 (file)
index 0000000..7732426
--- /dev/null
@@ -0,0 +1,157 @@
+#include <fstream>
+#include "Log.h"
+using std::streambuf;
+using std::stringstream;
+using std::ostream;
+using std::cout;
+using std::cerr;
+using std::endl;
+
+namespace Tauolapp
+{
+
+list<Log::Pointer*> *Log::PointerList = NULL;
+
+streambuf   *Log::bCout=cout.rdbuf(),*Log::bCerr=cerr.rdbuf();
+ostream     *Log::out=&cout;
+stringstream Log::buf;
+int  Log::warnLimit=100;
+int  Log::decays[4] = {0};
+int  Log::dCount =0,Log::dRangeS =65535,Log::dRangeE =65534;
+int  Log::faCount=0,Log::faRangeS=65535,Log::faRangeE=65534;
+int  Log::iCount =0,Log::wCount =0,Log::eCount =0,Log::asCount=0, Log::asFailedCount=0;
+bool Log::iAction=1,Log::wAction=1,Log::eAction=1,Log::asAction=1,Log::rAction=1;
+
+void Log::AddDecay(int type)
+{
+  decays[type]++;
+}
+
+ostream& Log::Debug(unsigned short int code, bool count)
+{
+  if(count) ++dCount;
+  if(code>=dRangeS && code<=dRangeE ) return *out<<"DEBUG("<<code<<") from TAUOLA:"<<endl;
+  return buf.seekp(0);
+}
+
+
+ostream& Log::Info(bool count)
+{
+  if(count) ++iCount;
+  if(iAction) return *out<<"INFO from TAUOLA:"<<endl;
+  return buf.seekp(0);
+}
+
+
+ostream& Log::Warning(bool count)
+{
+  if(count) ++wCount;
+
+  if(warnLimit>0 && wCount>=warnLimit)
+  {
+    if(wAction)
+    {
+      *out<<"WARNING from TAUOLA:"<<endl<<"Limit reached ("<<warnLimit<<"). Warnings suppressed."<<endl;
+      wAction=false;
+    }
+    return buf.seekp(0);
+  }
+
+  if(wAction && count) return *out<<"WARNING from TAUOLA:"<<endl;
+  if(wAction)          return *out;
+  return buf.seekp(0);
+}
+
+
+ostream& Log::Error(bool count)
+{
+  if(count) ++eCount;
+  if(eAction) return *out<<"ERROR from TAUOLA:"<<endl;
+  return buf.seekp(0);
+}
+
+void Log::Assert(bool check, char *text)
+{
+  ++asCount;
+  if(check) return;
+
+  ++asFailedCount;
+  if(text==NULL)  *out<<"ASSERT from TAUOLA:"<<endl<<"Assertion failed. "<<endl;
+  else            *out<<"ASSERT from TAUOLA:"<<endl<<"Assertion failed: "<<text<<endl;
+
+  if(asAction) exit(-1);
+}
+
+void Log::Fatal(string text,unsigned short code)
+{
+  ++faCount;
+  if(text.size()==0) *out<<"FATAL ERROR from TAUOLA:"<<endl<<"Terminated by a call to Log::Exit();"<<endl;
+  else               *out<<"FATAL ERROR from TAUOLA:"<<endl<<text<<endl;
+  if(code<faRangeS || code>faRangeE) exit(-1);
+}
+
+void Log::RedirectOutput(void (*func)(), ostream& where)
+{
+
+  if(!rAction) { func(); return; }
+  cout.rdbuf(where.rdbuf());
+  cerr.rdbuf(where.rdbuf());
+  where<<endl;
+  func();
+  cout.rdbuf(bCout);
+  cerr.rdbuf(bCerr);
+}
+
+void Log::RedirectOutput(ostream& where)
+{
+  if(!rAction) return;
+  cout.rdbuf(where.rdbuf());
+  cerr.rdbuf(where.rdbuf());
+  where<<endl;
+}
+
+void Log::Summary()
+{
+  *out<<"---------------------------- Tauola Log Summary ------------------------------"<<endl;
+
+  // Debug
+  *out<<" Debug:   \t";
+  if(dRangeS>dRangeE)  *out<<"(OFF)";
+  *out<<"\t\t"<<dCount<<"\t";
+  if(dRangeS<=dRangeE) *out<<"Debug range: "<<dRangeS<<" - "<<dRangeE;
+  *out<<endl;
+
+  // Info
+  *out<<" Info:    \t";
+  if(!iAction) *out<<"(OFF)";
+  *out<<"\t\t"<<iCount<<"\t"<<endl;
+
+  // Warnings
+  *out<<" Warnings:\t";
+  if(!wAction)
+  {
+    if(warnLimit>0 && wCount>warnLimit) *out<<"(SUPP.)";
+    else                                *out<<"(OFF)";
+  }
+  *out<<"\t\t"<<wCount<<"\t"<<endl;
+
+  // Errors
+  *out<<" Errors:  \t";
+  if(!eAction) *out<<"(OFF)";
+  *out<<"\t\t"<<eCount<<"\t"<<endl;
+
+  // Counters
+  if(asCount || !asAction || faRangeS<faRangeE) cout<<"-----------------------------------"<<endl;
+  if(asCount>0)          *out<<" Asserts:                     "<<asCount<<endl;
+  if(!asAction)          *out<<" Failed asserts ignored:      "<<asFailedCount<<endl;
+  if(faRangeS<=faRangeE) *out<<" Fatal errors ignored:        "<<faCount<<endl;
+
+  cout<<"-----------------------------------"<<endl;
+  if(decays[3]) cout<<" Normal decays:                        "<<decays[3]<<endl;
+  if(decays[2]) cout<<" Decays without mother:                "<<decays[2]<<endl;
+  if(decays[1]) cout<<" Decays without mother & grandmothers: "<<decays[1]<<endl;
+  if(decays[0]) cout<<" Decayed using Tauola gun:             "<<decays[0]<<endl;
+  *out<<"------------------------------------------------------------------------------"<<endl;
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/Log.h b/TEvtGen/Tauola/Log.h
new file mode 100644 (file)
index 0000000..25ddd1a
--- /dev/null
@@ -0,0 +1,231 @@
+#ifndef __LOG_CLASS_HEADER__
+#define __LOG_CLASS_HEADER__
+
+/**
+ * This file contains class for logging and filtering output.
+ * This header file also includes a debug macro which
+ * tracks any possible memory leaks within the program.
+ *
+ * @author Tomasz Przedzinski
+ * @date 14 November 2009
+ */
+
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <stdlib.h>
+#include <cstring>
+#include <list>
+
+using std::stringstream;
+using std::string;
+using std::streambuf;
+using std::ostream;
+using std::list;
+using std::cout;
+using std::endl;
+
+namespace Tauolapp
+{
+
+class Log
+{
+public:
+  /** Shows the summary of all messages. */
+  static void Summary();
+
+  /** Shows the summary at the end of the program. */
+  static void SummaryAtExit()              { atexit(Summary);      }
+
+  /** Adds the decay to the counter. The type is:
+      0 - gun, 1 - no mothers & grandmothers, 2 - no mothers, 3 - ok. */
+  static void AddDecay(int type);
+
+  /** Four logging entries. Usage:
+            Log::Info()<<"Logging some info: "<<8<<" > "<<7.9<<endl;
+      Use Log::Info(false) if you don't want the message to be counted.*/
+  static ostream& Debug(unsigned short int code=0, bool count=true);
+  static ostream& Info(bool count=true);
+  static ostream& Warning(bool count=true);
+  static ostream& Error(bool count=true);
+
+  /** Turns off or on particular types of messages
+      By default, only debugging messages are turned off. */
+  static void LogInfo   (bool flag=true)  { iAction=flag;         }
+  static void LogWarning(bool flag=true)  { wAction=flag;         }
+  static void LogError  (bool flag=true)  { eAction=flag;         }
+
+  static void LogAll    (bool flag=true)  { iAction=wAction=eAction=flag; dRangeS=0; dRangeE=65535; }
+
+        /** Sets the range of debug codes that will be printed.
+            By default, the debug messages are turned off. */
+  static void LogDebug(unsigned short s=0,unsigned short e=65535)         { dRangeS=s; dRangeE=e;   }
+
+  /** Asserts logical value. If the assertion fails, the default message or 'text'
+            will be printed and the program will terminate.
+            Program termination can be suppressed by Log::IgnoreFailedAsserts(); */
+  static void Assert(bool check, char *text=NULL);
+
+  /** Terminates the program with added default message or 'text'.
+            It can be suppressed by Log::IgnoreFatal(); */
+  static void Fatal(string text, unsigned short int code=0);
+  static void Fatal(unsigned short int code=0)                            { Fatal("",code);       }
+
+  /** Redirects output to log. Redirection can be done for a block of code
+      or for one function only. Redirection can be turned off by using
+      Log::IgnoreRedirection(); If the target is one of the log streams
+      (for example): Log::RedirectOutput( someFunction, Log::Info() );
+      You can turn the function's messages off by turning the apropriate
+      log entries off. The redirected code will still be executed,
+      only messages are redirected. */
+  static void RedirectOutput(void (*func)(), ostream& where=*out);
+  static void RedirectOutput(ostream& where=*out);
+  /** WARNING! If you're redirecting more than one function, do not forget
+      to use RevertOutput() afterwards. */
+  static void RevertOutput()                      { std::cout.rdbuf(bCout); std::cerr.rdbuf(bCerr); }
+
+  /** Do not exit when Log::Assert() check is false.
+      The number of failed asserts will be listed in the summary. */
+  static void IgnoreFailedAssert(bool flag=true)                           { asAction=!flag;        }
+
+  /** Ignores redirections of functions' output.
+      The function will still be called in a normal way. */
+  static void IgnoreRedirection(bool flag=true)                            { rAction=!flag;         }
+
+  /** Do not exit when Log::Fatal() with the code within the provided range is called.
+            The number of ignored fatal errors will be listed in the summary. */
+  static void IgnoreFatal(unsigned short s=0,unsigned short e=65535) { faRangeS=s; faRangeE=e; }
+
+  /** Change the output of the logged messages.
+      Log::SetOutput(cerr);                    //changes the output to cerr
+      Log::SetOutput(new ofstream("log.txt")); //changes the output to a file "log.txt" */
+  static void SetOutput(ostream *newOut)                                    { out=newOut;           }
+  static void SetOutput(ostream &newOut)                                    { out=&newOut;          }
+
+  /** Change the limit of warnings that will be displayed. Set to 0 for no limit. */
+  static void SetWarningLimit(int x)                                        { warnLimit=x;          }
+
+protected:
+  static streambuf *bCout,*bCerr;
+  static ostream *out;
+  static stringstream buf;
+  static int  warnLimit;
+  static int  decays[4];
+  static int  dCount,dRangeS,dRangeE,faCount,faRangeS,faRangeE;
+  static int  iCount, wCount, eCount, asCount, asFailedCount;
+  static bool iAction,wAction,eAction,asAction,rAction;
+/**
+  Memory leak tracking section. Compile with #define _LOG_DEBUG_MODE_ to turn it on.
+  WARNING! Increases execution time significantly. Useful only for debug purposes.
+*/
+protected:
+  typedef struct
+  {
+    unsigned long address;
+    unsigned long size;
+    char  file[64];
+    unsigned long line;
+  } Pointer;
+  static list<Pointer*> *PointerList;
+public:
+#ifdef _LOG_DEBUG_MODE_
+  static void NewPointer(unsigned long address,  unsigned long size,  const char *file, unsigned long line)
+  {
+    if(!PointerList)
+    {
+      PointerList = new list<Pointer *>();
+      atexit(PrintAllocatedPointers);
+    }
+    Pointer *info = new Pointer();
+    info->address = address;
+    info->size    = size;
+    info->line    = line;
+    strncpy(info->file, file, 63);
+    PointerList->push_front(info);
+  }
+  static void DeletePointer(unsigned long address)
+  {
+    if(!PointerList) return;
+    for(list<Pointer*>::iterator i = PointerList->begin(); i!=PointerList->end(); i++)
+    {
+      if((*i)->address == address)
+      {
+        PointerList->remove((*i));
+        break;
+      }
+    }
+  }
+  static bool PointerCompare(Pointer *one, Pointer *two)
+  {
+    int eq = strcmp(one->file,two->file);
+    if(eq<0) return true;
+    else if(eq>0) return false;
+    return (one->line <= two->line);
+  }
+  static void PrintAllocatedPointers()
+  {
+    if(!PointerList) return;
+    int pointers=0,buf=0;
+    unsigned long total=0;
+    char *lastS=" ";
+    int lastL=0;
+    if(PointerList->size()==0)
+    {
+      cout<<"----------------------------UNFREED MEMORY POINTERS----------------------------\n";
+      cout<<"                                 ... NONE ...\n";
+      cout<<"-------------------------------------------------------------------------------\n";
+      return;
+    }
+    PointerList->sort(PointerCompare);
+    cout<<"---------------------------UNFREED MEMORY POINTERS---------------------------\n";
+    for(list<Pointer*>::iterator i = PointerList->begin(); i!=PointerList->end(); i++)
+    {
+      total+=(*i)->size;
+      ++pointers;
+      if(strcmp(lastS,(*i)->file)==0)
+      {
+        if(lastL==(*i)->line)
+        {
+          printf("%56s%10lub (%lu)\n"," ",(*i)->size,(*i)->address);
+          continue;
+        }
+      }
+      lastS=(*i)->file;
+      lastL=(*i)->line;
+      printf("%s%n:",(*i)->file,&buf);
+      printf("%-*lu%10lub (%lu)\n",55-buf,(*i)->line,(*i)->size,(*i)->address);
+    }
+    cout<<endl<<total<<"\tbytes"<<endl;
+    cout<<pointers<<"\tpointers"<<endl;
+    cout<<"-------------------------------------------------------------------------------\n";
+  };
+#endif //_LOG_DEBUG_MODE_
+};
+
+#ifdef _LOG_DEBUG_MODE_
+
+/**
+    Redeclare new and delete to use the tracking feature.
+    To use __FILE__ and __LINE__ macro efficiently this header file
+    should be included in all separately compiled libraries.
+*/
+
+inline void* operator new(size_t size, const char *filename, int line)
+{
+  void *ptr = (void *)malloc(size);
+  Log::NewPointer((unsigned long)ptr, size, filename, line);
+  return(ptr);
+}
+
+inline void  operator delete(void *p)
+{
+  Log::DeletePointer((unsigned long)p);
+  free(p);
+}
+
+#define new new(__FILE__, __LINE__)
+
+#endif //_LOG_DEBUG_MODE_
+
+} // namespace Tauolapp
+#endif
diff --git a/TEvtGen/Tauola/Plots.cxx b/TEvtGen/Tauola/Plots.cxx
new file mode 100644 (file)
index 0000000..80ceec0
--- /dev/null
@@ -0,0 +1,166 @@
+#include "Plots.h"
+#include <iostream>
+#include <fstream>
+#include <math.h>
+using namespace std;
+
+namespace Tauolapp
+{
+
+Plots::Plots():
+    m_incoming_pdg_id(1),
+    m_cosTheta       (-0.2),
+    m_n_plot_points  (1000)
+{
+}
+
+void Plots::SANCtest1(){
+
+  cout<<"SANC plot 1 (short)..."<<endl;
+
+  double smin = log(6.*6.)+0.0001;
+  double smax = log(17000.*17000.);
+  double step = (smax-smin)/(m_n_plot_points-1);
+
+  ofstream f1,f2,f3;
+  f1.open("f-sanc.txt");
+  f2.open("f-born.txt");
+  f3.open("f-plzap0.txt");
+  for(int i=0; i<m_n_plot_points; i++)
+  {
+    double s = exp(smin+i*step);
+
+    // Write SANC value
+    t_pair.recalculateRij(m_incoming_pdg_id,15,s,m_cosTheta);
+    f1<<sqrt(s)<<" "<<t_pair.m_R[0][3]<<endl;
+
+    // Write Born-level value
+    // (assuming table 11 is filled with born-level data)
+    t_pair.recalculateRij(11,15,s,m_cosTheta);
+    f2<<sqrt(s)<<" "<<t_pair.m_R[0][3]<<endl;
+
+    int outgoing_pdg_id = 15;
+
+    // Write PLZAP0 value
+    double pz = 1-plzap0_(&m_incoming_pdg_id,&outgoing_pdg_id,&s, &m_cosTheta);
+    t_pair.m_R[0][3]=2*pz-1;
+    f3<<sqrt(s)<<" "<<t_pair.m_R[0][3]<<endl;
+  }
+  f1.close();
+  f2.close();
+  f3.close();
+}
+
+void Plots::SANCtest2(){
+
+  cout<<"SANC plot 2 (short)..."<<endl;
+
+  double smin = log(6.*6.)+0.0001;
+  double smax = log(17000.*17000.);
+  double step = (smax-smin)/(m_n_plot_points-1);
+
+  ofstream f1,f2,f3;
+  f1.open("f-w-single-point.txt");
+  f2.open("f-w0-single-point.txt");
+  f3.open("f-ww0-single-point.txt");
+
+  for(int i=0; i<m_n_plot_points; i++){
+
+    double s=exp(smin+i*step);
+    t_pair.recalculateRij(m_incoming_pdg_id,15,s,m_cosTheta);
+
+    // Write w, w0 and w/w0
+    f1<<sqrt(s)<<" "<<Tauola::getEWwt()<<endl;
+    f2<<sqrt(s)<<" "<<Tauola::getEWwt0()<<endl;
+    f3<<sqrt(s)<<" "<<Tauola::getEWwt()/Tauola::getEWwt0()<<endl;
+  }
+  f1.close();
+  f2.close();
+  f3.close();
+}
+
+void Plots::SANCtest3(){
+
+  cout<<"SANC plot 3 (long)..."<<endl;
+
+  double smin = log(6.*6.)+0.0001;
+  double smax = log(17000.*17000.);
+  double step = (smax-smin)/(m_n_plot_points-1);
+
+  ofstream f1;
+  f1.open("f-err.txt");
+  double costheta=-1.;
+
+  for(int i=0; i<m_n_plot_points; i++){
+
+    double buf=0.,err=0.;
+
+    for(int j=0; j<m_n_plot_points; j++){
+
+      double s = exp(smin+j*step);
+
+      // Get value from SANC table
+      t_pair.recalculateRij(m_incoming_pdg_id,15,s,costheta);
+      buf = t_pair.m_R[0][3];
+      t_pair.recalculateRij(11,15,s,costheta);
+
+      // Calculate error between SANC and Born-level
+      err += (buf-t_pair.m_R[0][3])*(buf-t_pair.m_R[0][3]);
+    }
+
+    f1<<costheta<<" "<<err/m_n_plot_points<<endl;
+    err=0.;
+    costheta+=2./m_n_plot_points;
+  }
+
+  f1.close();
+}
+
+void Plots::SANCtest4(){
+
+  cout<<"SANC plot 4 (medium)..."<<endl;
+
+  double smin = log(6.*6.);
+  double smax = log(17000.*17000.);
+  double step = (smax-smin)/(m_n_plot_points-1);
+
+  ofstream f1,f2,f3;
+  f1.open("f-cross.txt");
+  f2.open("f-w.txt");
+  f3.open("f-w0.txt");
+
+  for(int i=0; i<m_n_plot_points; i++){
+
+    double s        =  exp(smin+i*step);
+    double sumEWwt  =  0.;
+    double sumEWwt0 =  0.;
+    double costheta = -1.;
+    int    NCOS     =  21;
+
+    // Calculate sum of w/w0 for all cosTheta
+    for(int j=0; j<NCOS; j++){
+
+      costheta = -1. + 1.0/NCOS + j*2./NCOS;
+      
+      t_pair.recalculateRij(m_incoming_pdg_id,15,s,costheta);
+
+      sumEWwt +=Tauola::getEWwt();
+      sumEWwt0+=Tauola::getEWwt0();
+    }
+
+    f1<<sqrt(s)<<" "<<sumEWwt/sumEWwt0/m_n_plot_points<<endl;
+    f2<<sqrt(s)<<" "<< 2./NCOS * sumEWwt  <<endl;
+    f3<<sqrt(s)<<" "<< 2./NCOS * sumEWwt0 <<endl;
+  }
+
+  f1.close();
+  f2.close();
+  f3.close();
+}
+
+void Plots::setSancVariables(int incoming, double cosTheta) {
+  m_incoming_pdg_id = incoming;
+  m_cosTheta        = cosTheta;
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/Plots.h b/TEvtGen/Tauola/Plots.h
new file mode 100644 (file)
index 0000000..8e239cc
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef __PLOTS_CLASS_HEADER__
+#define __PLOTS_CLASS_HEADER__
+
+/**
+ * This class contains routines for plot generation.
+ *
+ * The output files are adopted for the draw.C root script. 
+ *
+ * @author Tomasz Przedzinski
+ * @date 20 December 2009
+ */
+
+#include "TauolaParticlePair.h"
+
+namespace Tauolapp
+{
+
+class Plots
+{
+public:
+  /**   SANC tables plots
+  Writes the data for plots for the 1-1 table or 2-2 table
+  using 11-11 table as the born-level table, so before
+  running, the 11-11 table must be substituted with born-level
+  table for either 1-1 or 2-2. */
+  Plots();
+
+  /** Sets cosTheta (for plots 1 and 2)
+            and incoming particle pdgid (for all plots). */
+  void setSancVariables(int inc, double cos);
+
+  /** SANC test - three functions - table, born level and plzap0 for selected cosTheta */
+  void SANCtest1();
+
+  /** Weights - three functions - w, w0 and w/w0 for selected cosTheta */
+  void SANCtest2();
+
+  /** Error check - one function - table vs born for all cosTheta */
+  void SANCtest3();
+
+  /** cross-section - three functions - w, w0 and w/w0 for all cosTheta*/
+  void SANCtest4();
+private:
+  /* Incoming particle PDG ID */
+  int    m_incoming_pdg_id;
+  /* cos(theta) used for plots */
+  double m_cosTheta;
+  /* Number of points in plot */
+  int    m_n_plot_points;
+  /* TauolaParticlePair class object */
+  TauolaParticlePair t_pair;
+};
+
+} // namespace Tauolapp
+#endif
diff --git a/TEvtGen/Tauola/Tauola.cxx b/TEvtGen/Tauola/Tauola.cxx
new file mode 100644 (file)
index 0000000..78926aa
--- /dev/null
@@ -0,0 +1,792 @@
+#include <fstream>
+#include <cstring>
+#include <vector>
+#include "Log.h"
+#include "Tauola.h"
+#include "TauolaEvent.h"
+
+namespace Tauolapp
+{
+
+int    Tauola::m_pdg_id          = 15;
+int    Tauola::m_firstDecayMode  = 0; 
+int    Tauola::m_secondDecayMode = 0;
+bool   Tauola::m_rad             = true;
+double Tauola::m_rad_cut_off     = 0.001;
+double Tauola::m_iniphy          = 0.1;
+double Tauola::m_higgs_scalar_pseudoscalar_mix = M_PI/4;
+int    Tauola::m_higgs_scalar_pseudoscalar_pdg = 35;
+int    Tauola::m_helPlus  = 0;
+int    Tauola::m_helMinus = 0;
+double Tauola::m_wtEW     = 0.0;
+double Tauola::m_wtEW0    = 0.0;
+double Tauola::table11A[NS1][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::table1A [NS1][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::table2A [NS1][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::wtable11A[NS1][NCOS]      = {{0.0}};
+double Tauola::wtable1A [NS1][NCOS]      = {{0.0}};
+double Tauola::wtable2A [NS1][NCOS]      = {{0.0}};
+double Tauola::w0table11A[NS1][NCOS]     = {{0.0}};
+double Tauola::w0table1A [NS1][NCOS]     = {{0.0}};
+double Tauola::w0table2A [NS1][NCOS]     = {{0.0}};
+
+double Tauola::table11B[NS2][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::table1B [NS2][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::table2B [NS2][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::wtable11B[NS2][NCOS]      = {{0.0}};
+double Tauola::wtable1B [NS2][NCOS]      = {{0.0}};
+double Tauola::wtable2B [NS2][NCOS]      = {{0.0}};
+double Tauola::w0table11B[NS2][NCOS]     = {{0.0}};
+double Tauola::w0table1B [NS2][NCOS]     = {{0.0}};
+double Tauola::w0table2B [NS2][NCOS]     = {{0.0}};
+
+double Tauola::table11C[NS3][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::table1C [NS3][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::table2C [NS3][NCOS][4][4] = {{{{0.0}}}};
+double Tauola::wtable11C[NS3][NCOS]      = {{0.0}};
+double Tauola::wtable1C [NS3][NCOS]      = {{0.0}};
+double Tauola::wtable2C [NS3][NCOS]      = {{0.0}};
+double Tauola::w0table11C[NS3][NCOS]     = {{0.0}};
+double Tauola::w0table1C [NS3][NCOS]     = {{0.0}};
+double Tauola::w0table2C [NS3][NCOS]     = {{0.0}};
+
+double Tauola::sminA = 0;
+double Tauola::smaxA = 0;
+
+double Tauola::sminB = 0;
+double Tauola::smaxB = 0;
+
+double Tauola::sminC = 0;
+double Tauola::smaxC = 0;
+
+int    Tauola::ion[3] = {0};
+double Tauola::tau_lifetime = .08711;
+double Tauola::momentum_conservation_threshold   = 0.1;
+
+Tauola::Particles Tauola::spin_correlation;
+
+Tauola::MomentumUnits Tauola::momentumUnit = Tauola::DEFAULT_MOMENTUM;
+Tauola::LengthUnits   Tauola::lengthUnit   = Tauola::DEFAULT_LENGTH;
+
+bool   Tauola::m_is_using_decay_one        = false;
+double Tauola::m_decay_one_polarization[3] = {0};
+void (*Tauola::m_decay_one_boost_routine)(TauolaParticle*,TauolaParticle*) = NULL;
+
+int     Tauola::buf_incoming_pdg_id = 0;
+int     Tauola::buf_outgoing_pdg_id = 0;
+double  Tauola::buf_invariant_mass_squared = -1.;
+double  Tauola::buf_cosTheta               = 0.;
+
+double  Tauola::buf_R[4][4] = {{0.0}}; //density matrix
+
+double (*Tauola::randomDouble)()                               = Tauola::defaultRandomGenerator;
+void   (*Tauola::redefineTauPlusProperties)(TauolaParticle *)  = defaultRedPlus;
+void   (*Tauola::redefineTauMinusProperties)(TauolaParticle *) = defaultRedMinus;
+
+/**************************************************************/
+void Tauola::setNewCurrents(int mode)
+{
+  inirchl_(&mode);
+}
+
+double Tauola::defaultRandomGenerator(){
+  return rand()*1./RAND_MAX;
+}
+
+void Tauola::setRandomGenerator(double (*gen)()){
+  if(gen==NULL) randomDouble = defaultRandomGenerator;
+  else          randomDouble = gen;
+}
+
+void Tauola::defaultRedPlus(TauolaParticle *tau)  {}
+void Tauola::defaultRedMinus(TauolaParticle *tau) {}
+
+void Tauola::setRedefineTauMinus( void (*fun)(TauolaParticle *) ){
+  redefineTauMinusProperties=fun;
+}
+
+void Tauola::setRedefineTauPlus ( void (*fun)(TauolaParticle *) ){
+  redefineTauPlusProperties=fun;
+}
+
+void Tauola::getBornKinematics(int *incoming_pdg_id, int *outgoing_pdg_id, double *invariant_mass_squared,double *cosTheta){
+  *incoming_pdg_id = buf_incoming_pdg_id;
+  *outgoing_pdg_id = buf_outgoing_pdg_id;
+  *invariant_mass_squared = buf_invariant_mass_squared;
+  *cosTheta               = buf_cosTheta;
+  //  m_R[0][0] to be added in next step;
+}
+
+void Tauola::setUnits(MomentumUnits m, LengthUnits l){
+  Tauola::momentumUnit = m;
+  Tauola::lengthUnit   = l;
+}
+
+void Tauola::setTauLifetime(double t){
+  tau_lifetime = t;
+}
+
+void Tauola::initialize(){
+  printf("\n");
+  printf(" *************************************\n");
+  printf(" *     TAUOLA C++ Interface v1.1.4   *\n");
+  printf(" *-----------------------------------*\n");
+  printf(" *                                   *\n");
+  printf(" *   (c) Nadia    Davidson,   (1,2)  *\n");
+  printf(" *       Gizo     Nanava,     (3)    *\n");
+  printf(" *       Tomasz   Przedzinski,(4)    *\n");
+  printf(" *       Elzbieta Richter-Was,(2,4)  *\n");
+  printf(" *       Zbigniew Was         (2,5)  *\n");
+  printf(" *                                   *\n");
+  printf(" *  1) Unimelb, Melbourne, Australia *\n");
+  printf(" *  2)     INP, Krakow, Poland       *\n");
+  printf(" *  3) University Bonn, Germany      *\n");
+  printf(" *  4)      UJ, Krakow, Poland       *\n");
+  printf(" *  5)    CERN, Geneva, Switzerland  *\n");
+  printf(" *************************************\n");
+
+  // Turn on all spin correlations
+  spin_correlation.setAll(true);
+
+  // Ininitalize tauola-fortran
+  f_interface_tauolaInitialize(m_pdg_id,m_firstDecayMode,
+                               m_secondDecayMode,m_rad, 
+                               m_rad_cut_off, m_iniphy);
+
+  //---------------------------------------------------------------------------
+  // Initialize SANC tables
+  //---------------------------------------------------------------------------
+  cout<<"Reading SANC input files."<<endl;
+
+  ifstream f("table1-1.txt");
+
+  if(!f.is_open()){
+    cout<<"File 'table1-1.txt'  missing... skipped."<<endl;
+  }
+  else{
+    string buf;
+
+    cout<<"Reading file 'table1-1.txt'..."<<endl;
+
+    int dbuf1,dbuf2,dbuf3,dbufcos;
+    f>>buf>>dbuf1>>dbuf2>>dbuf3>>dbufcos;
+
+    // Check table sizes
+    if(dbuf1!=NS1 || dbuf2!=NS2 || dbuf3!=NS3 || dbufcos!=NCOS)  {
+      cout<<"mismatched NS1=   "<<dbuf1  <<" <--> "<<NS1<<endl; 
+      cout<<"           NS2=   "<<dbuf2  <<" <--> "<<NS2<<endl; 
+      cout<<"           NS3=   "<<dbuf3  <<" <--> "<<NS3<<endl; 
+      cout<<"           NCOS=  "<<dbufcos<<" <--> "<<NCOS<<endl; 
+      return; 
+    }
+
+    double buf1,buf2,buf3,buf4,buf5,buf6;
+    f>>buf>>buf1>>buf2>>buf3>>buf4>>buf5>>buf6;
+
+    // Set ranges
+    if(sminA==0.0){
+      sminA=buf1;
+      smaxA=buf2;
+      sminB=buf3;
+      smaxB=buf4;
+      sminC=buf5;
+      smaxC=buf6;
+    }
+
+    // Check ranges
+    if(buf1!=sminA || buf2!=smaxA || buf3!=sminB || buf4!=smaxB || buf5!=sminC || buf6!=smaxC) {
+      cout<<"mismatched sminA=   "<<buf1<<" <--> "<<sminA<<endl; 
+      cout<<"           smaxA=   "<<buf2<<" <--> "<<smaxA<<endl; 
+      cout<<"           sminB=   "<<buf3<<" <--> "<<sminB<<endl; 
+      cout<<"           smaxB=   "<<buf4<<" <--> "<<smaxB<<endl; 
+      cout<<"           sminC=   "<<buf5<<" <--> "<<sminC<<endl; 
+      cout<<"           smaxC=   "<<buf6<<" <--> "<<smaxC<<endl; 
+      return; 
+    }
+
+    // Print out header
+    while(!f.eof()){
+      char head[255];
+      f.getline(head,255);
+      if(strcmp(head,"BeginRange1")==0) break;
+      cout<<head<<endl;
+    }
+
+    // Read table
+    for (int i=0;i<NS1;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table1A[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable1A[i][j];
+        f>>w0table1A[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Find 2nd range
+    while(!f.eof()){
+      f>>buf;
+      if(strcmp(buf.c_str(),"BeginRange2")==0) break;
+    }
+
+    // Read table
+    for (int i=0;i<NS2;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table1B[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable1B[i][j];
+        f>>w0table1B[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Find 3rd range
+    while(!f.eof()){
+      f>>buf;
+      if(strcmp(buf.c_str(),"BeginRange3")==0) break;
+    }
+
+    // Read table
+    for (int i=0;i<NS3;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table1C[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable1C[i][j];
+        f>>w0table1C[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Check for proper file end
+    f>>buf;
+    if(buf.size() == 0 || strcmp(buf.c_str(),"End") != 0){
+      cout<<"...incorrect file version or file incomplete/damaged!"<<endl;
+
+      // In case of the error - do not use tables
+      table1A[0][0][0][0] = table1B[0][0][0][0] = table1C[0][0][0][0] = 0.0;
+    }
+  }  // if (file is open)
+
+  f.close();
+  f.open("table2-2.txt");
+
+  if(!f.is_open()){
+    cout<<"File 'table2-2.txt'  missing... skipped."<<endl;
+  }
+  else{
+    string buf;
+
+    cout<<"Reading file 'table2-2.txt'..."<<endl;
+
+    int dbuf1,dbuf2,dbuf3,dbufcos;
+    f>>buf>>dbuf1>>dbuf2>>dbuf3>>dbufcos;
+
+    // Check table sizes
+    if(dbuf1!=NS1 || dbuf2!=NS2 || dbuf3!=NS3 || dbufcos!=NCOS)  {
+      cout<<"mismatched NS1=   "<<dbuf1<<" <--> "<<NS1<<endl; 
+      cout<<"           NS2=   "<<dbuf2<<" <--> "<<NS2<<endl; 
+      cout<<"           NS3=   "<<dbuf3<<" <--> "<<NS3<<endl; 
+      cout<<"           NCOS=  "<<dbufcos<<" <--> "<<NCOS<<endl; 
+      return; 
+    }
+
+    double buf1,buf2,buf3,buf4,buf5,buf6;
+    f>>buf>>buf1>>buf2>>buf3>>buf4>>buf5>>buf6;
+
+    // Set ranges
+    if(sminA==0.0)
+    {
+      sminA=buf1;
+      smaxA=buf2;
+      sminB=buf3;
+      smaxB=buf4;
+      sminC=buf5;
+      smaxC=buf6;
+    }
+
+    // Check ranges
+    if(buf1!=sminA || buf2!=smaxA || buf3!=sminB || buf4!=smaxB || buf5!=sminC || buf6!=smaxC) {
+      cout<<"mismatched sminA=   "<<buf1<<" <--> "<<sminA<<endl; 
+      cout<<"           smaxA=   "<<buf2<<" <--> "<<smaxA<<endl; 
+      cout<<"           sminB=   "<<buf3<<" <--> "<<sminB<<endl; 
+      cout<<"           smaxB=   "<<buf4<<" <--> "<<smaxB<<endl; 
+      cout<<"           sminC=   "<<buf5<<" <--> "<<sminC<<endl; 
+      cout<<"           smaxC=   "<<buf6<<" <--> "<<smaxC<<endl; 
+      return; 
+    }
+
+    // Print out header
+    while(!f.eof()){
+      char head[255];
+      f.getline(head,255);
+      if(strcmp(head,"BeginRange1")==0) break;
+      cout<<head<<endl;
+    }
+
+    // Read table
+    for (int i=0;i<NS1;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table2A[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable2A[i][j];
+        f>>w0table2A[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Find 2nd range
+    while(!f.eof()){
+      f>>buf;
+      if(strcmp(buf.c_str(),"BeginRange2")==0) break;
+    }
+
+    // Read table
+    for (int i=0;i<NS2;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table2B[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable2B[i][j];
+        f>>w0table2B[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Find 3rd range
+    while(!f.eof()){
+      f>>buf;
+      if(strcmp(buf.c_str(),"BeginRange3")==0) break;
+    }
+
+    // Read table
+    for (int i=0;i<NS3;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table2C[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable2C[i][j];
+        f>>w0table2C[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Check for proper file end
+    f>>buf;
+    if(buf.size()==0 || strcmp(buf.c_str(),"End")!=0){
+      cout<<"...incorrect file version or file incomplete/damaged!"<<endl;
+
+      // In case of the error - do not use tables
+      table2A[0][0][0][0] = table2B[0][0][0][0] = table2C[0][0][0][0] = 0.0;
+    }
+  } // if (file is open)
+
+  f.close();
+  f.open("table11-11.txt");
+
+  if(!f.is_open()){
+    cout<<"File 'table11-11.txt' missing... skipped."<<endl;
+  }
+  else{
+    string buf;
+
+    cout<<"Reading file 'table11-11.txt'..."<<endl;
+
+    int dbuf1,dbuf2,dbuf3,dbufcos;
+    f>>buf>>dbuf1>>dbuf2>>dbuf3>>dbufcos;
+
+    // Check table sizes
+    if(dbuf1!=NS1 || dbuf2!=NS2 || dbuf3!=NS3 || dbufcos!=NCOS)  {
+      cout<<"mismatched NS1=   "<<dbuf1<<" <--> "<<NS1<<endl; 
+      cout<<"           NS2=   "<<dbuf2<<" <--> "<<NS2<<endl; 
+      cout<<"           NS3=   "<<dbuf3<<" <--> "<<NS3<<endl; 
+      cout<<"           NCOS=  "<<dbufcos<<" <--> "<<NCOS<<endl; 
+      return; 
+    }
+
+    double buf1,buf2,buf3,buf4,buf5,buf6;
+    f>>buf>>buf1>>buf2>>buf3>>buf4>>buf5>>buf6;
+
+    // Set ranges
+    if(sminA==0.0)
+    {
+      sminA=buf1;
+      smaxA=buf2;
+      sminB=buf3;
+      smaxB=buf4;
+      sminC=buf5;
+      smaxC=buf6;
+    }
+
+    // Check ranges
+    if(buf1!=sminA || buf2!=smaxA || buf3!=sminB || buf4!=smaxB || buf5!=sminC || buf6!=smaxC) {
+      cout<<"mismatched sminA=   "<<buf1<<" <--> "<<sminA<<endl; 
+      cout<<"           smaxA=   "<<buf2<<" <--> "<<smaxA<<endl; 
+      cout<<"           sminB=   "<<buf3<<" <--> "<<sminB<<endl; 
+      cout<<"           smaxB=   "<<buf4<<" <--> "<<smaxB<<endl; 
+      cout<<"           sminC=   "<<buf5<<" <--> "<<sminC<<endl; 
+      cout<<"           smaxC=   "<<buf6<<" <--> "<<smaxC<<endl; 
+      return; 
+    }
+
+    // Print out header
+    while(!f.eof()){
+      char head[255];
+      f.getline(head,255);
+      if(strcmp(head,"BeginRange1")==0) break;
+      cout<<head<<endl;
+    }
+
+    // Read table
+    for (int i=0;i<NS1;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table11A[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable11A[i][j];
+        f>>w0table11A[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Find 2nd range
+    while(!f.eof()){
+      f>>buf;
+      if(strcmp(buf.c_str(),"BeginRange2")==0) break;
+    }
+
+    // Read table
+    for (int i=0;i<NS2;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table11B[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable11B[i][j];
+        f>>w0table11B[i][j];
+      } // for(j)
+    } // for(i)
+
+    // Find 3rd range
+    while(!f.eof()){
+      f>>buf;
+      if(strcmp(buf.c_str(),"BeginRange3")==0) break;
+    }
+
+    // Read table
+    for (int i=0;i<NS3;i++){
+      for (int j=0;j<NCOS;j++){
+        for (int k=0;k<4;k++){
+          for (int l=0;l<4;l++){
+            f>>table11C[i][j][k][l];
+          } // for(l)
+        } // for(k)
+        f>>wtable11C[i][j];
+        f>>w0table11C[i][j];
+      } // for(j)
+    } // for(i)
+
+    f>>buf;
+    if(buf.size()==0 || strcmp(buf.c_str(),"End")!=0){
+      cout<<"...incorrect file version or file incomplete/damaged!"<<endl;
+
+      // In case of the error - do not use tables
+      table11A[0][0][0][0] = table11B[0][0][0][0] = table11C[0][0][0][0] = 0.0;
+    }
+  } // if (file is open)
+
+  f.close();
+  cout<<endl;
+}
+
+void Tauola::decayOne(TauolaParticle *tau, bool undecay, double polx, double poly, double polz)
+{
+  if(!tau) return;
+
+  if(polx*polx+poly*poly+polz*polz>1)
+  {
+    Log::Warning()<<"decayOne(): ignoring wrong polarization vector: "<<polx<<" "<<poly<<" "<<polz<<endl;
+    polx=poly=polz=0;
+  }
+
+  // Let the interface know that we work in the decayOne mode
+  m_is_using_decay_one = true;
+
+  m_decay_one_polarization[0] = polx;
+  m_decay_one_polarization[1] = poly;
+  m_decay_one_polarization[2] = polz;
+
+  // Undecay if needed
+  if(tau->hasDaughters())
+  {
+    if(undecay) tau->undecay();
+    else
+    {
+      m_is_using_decay_one = false;
+      return;
+    }
+  }
+
+  std::vector<TauolaParticle *> list;
+  list.push_back(tau);
+
+  // Decay single tau
+  TauolaParticlePair t_pair(list);
+  t_pair.decayTauPair();
+  t_pair.checkMomentumConservation();
+
+  // Revert to normal mode
+  m_is_using_decay_one = false;
+}
+
+void Tauola::initialise(){
+
+  Log::Warning() <<"Deprecated routine 'Tauola::initialise'"<<endl;
+  Log::Warning(0)<<"Use 'Tauola::initialize' instead."<<endl;
+
+  initialize();
+  
+  // Deprecated routines:  initialise, setInitialisePhy,
+  //                       f_interface_tauolaInitialise
+}
+
+bool Tauola::isUsingDecayOne()
+{
+  return m_is_using_decay_one;
+}
+
+bool Tauola::isUsingDecayOneBoost()
+{
+  return (bool) m_decay_one_boost_routine;
+}
+
+void Tauola::setBoostRoutine(void (*boost)(TauolaParticle *, TauolaParticle *))
+{
+  m_decay_one_boost_routine=boost;
+}
+
+void Tauola::decayOneBoost(TauolaParticle *mother, TauolaParticle *target)
+{
+  m_decay_one_boost_routine(mother,target);
+}
+
+const double* Tauola::getDecayOnePolarization()
+{
+  return m_decay_one_polarization;
+}
+
+void Tauola::setDecayingParticle(int pdg_id){
+  m_pdg_id=pdg_id; 
+}
+
+int Tauola::getDecayingParticle(){
+  return abs(m_pdg_id);
+}
+
+void Tauola::setSameParticleDecayMode(int firstDecayMode){
+  m_firstDecayMode=firstDecayMode;
+}
+
+void Tauola::setOppositeParticleDecayMode(int secondDecayMode){
+  m_secondDecayMode=secondDecayMode;
+}
+
+void Tauola::setRadiation(bool rad){
+  m_rad=rad;
+}
+
+void Tauola::setRadiationCutOff(double rad_cut_off){
+  m_rad_cut_off=rad_cut_off;
+}
+
+
+void Tauola::setInitializePhy(double iniphy){
+  m_iniphy=iniphy;
+}
+
+void Tauola::setInitialisePhy(double iniphy){
+
+  Log::Warning() <<"Deprecated routine 'Tauola::setInitialisePhy'"<<endl;
+  Log::Warning(0)<<"Use 'Tauola::setInitializePhy' instead."<<endl;
+
+  setInitializePhy(iniphy);
+  
+  // Deprecated routines:  initialise, setInitialisePhy,
+  //                       f_interface_tauolaInitialise
+}
+
+void Tauola::setTauBr(int i, double value)
+{
+  if(taubra_.nchan==0)
+    Log::Warning()<<"setTauBr(): run Tauola::initialize() first."<<endl;
+  else if(i<1 || i>taubra_.nchan || value<0.)
+    Log::Warning()<<"setTauBr(): Invalid input. Value must be >= 0 and 0 < i <= "<<taubra_.nchan<<endl;
+  else taubra_.gamprt[i-1]=(float)value;
+}
+
+void Tauola::setTaukle(double bra1,double brk0, double brk0b, double brks)
+{
+  if(bra1<0 || bra1>1 || brk0<0 ||brk0>1 || brk0b<0 || brk0b>1 || brks<0 ||brks>1)
+  {
+    Log::Warning()<<"setTaukle(): variables must be in range [0,1]. Ignored."<<endl;
+    return;
+  }
+  taukle_.bra1 =(float)bra1;
+  taukle_.brk0 =(float)brk0;
+  taukle_.brk0b=(float)brk0b;
+  taukle_.brks =(float)brks;
+}
+
+double Tauola::getTauMass(){
+  return f_getTauMass();
+}
+
+double Tauola::getHiggsScalarPseudoscalarMixingAngle(){
+  return m_higgs_scalar_pseudoscalar_mix;
+}
+
+int Tauola::getHiggsScalarPseudoscalarPDG(){
+  return m_higgs_scalar_pseudoscalar_pdg;
+}
+
+/** set the mixing angle. coupling: tau~(cos(phi)+isin(phi)gamma5)tau */
+void Tauola::setHiggsScalarPseudoscalarMixingAngle(double angle){
+  m_higgs_scalar_pseudoscalar_mix=angle;
+} 
+
+/** set the pdg code of the higgs particle which tauola should 
+    treat as a scalar-pseudoscalar mix  */
+void Tauola::setHiggsScalarPseudoscalarPDG(int pdg_code){
+
+  if (particleCharge(pdg_code)!=0.0){       
+    Log::Warning()<<"You want to use spin correlations of Higgs for particle of PDGID= "<<pdg_code<<endl
+                  <<"This particle has charge="<<particleCharge(pdg_code)<<endl;   
+    Log::Fatal("This choice is not appropriate.",0);
+  }
+  m_higgs_scalar_pseudoscalar_pdg=pdg_code;
+} 
+
+int Tauola::getHelPlus(){
+  return m_helPlus;
+}
+int Tauola::getHelMinus(){
+  return m_helMinus;
+}
+double Tauola::getEWwt(){
+  return m_wtEW;
+}
+double Tauola::getEWwt0(){
+  return m_wtEW0;
+}
+void Tauola::setEWwt(double wt, double wt0)
+{ 
+  m_wtEW  = wt;
+  m_wtEW0 = wt0;
+}
+void Tauola::setHelicities(int minus, int plus)
+{ 
+  m_helMinus = minus;
+  m_helPlus  = plus;
+}
+void Tauola::setEtaK0sPi(int eta, int k, int pi)
+{  
+  ion[0] = pi;
+  ion[1] = k;
+  ion[2] = eta;
+}
+
+void Tauola::summary()
+{
+  int sign_type=100;
+  double pol[4] = {0};
+
+  Log::Info()     <<"Tauola::summary(): We use old TAUOLA FORTRAN printout."<<endl;
+  Log::Info(false)<<"As a consequence, there is a mismatch in printed TAUOLA version number."<<endl<<endl;
+
+  // Print summary taken from FORTRAN TAUOLA
+  dekay_(&sign_type,pol);
+}
+
+void Tauola::fill_val(int beg, int end, double* array, double value) 
+{
+  for (int i = beg; i < end; i++)
+    array[i] = value;
+}
+
+double Tauola::particleCharge(int idhep)
+{
+  static double CHARGE[101] = { 0 };
+  static int j=0;  
+  //--
+  //--   Array 'SPIN' contains the spin  of  the first 100 particles accor-
+  //--   ding to the PDG particle code...
+
+  if(j==0) // initialization
+    {   
+      j=1;
+      fill_val(0 ,  1, CHARGE, 0.0         );
+      fill_val(1 ,  2, CHARGE,-0.3333333333);
+      fill_val(2 ,  3, CHARGE, 0.6666666667);
+      fill_val(3 ,  4, CHARGE,-0.3333333333);
+      fill_val(4 ,  5, CHARGE, 0.6666666667);
+      fill_val(5 ,  6, CHARGE,-0.3333333333);
+      fill_val(6 ,  7, CHARGE, 0.6666666667);
+      fill_val(7 ,  8, CHARGE,-0.3333333333);
+      fill_val(8 ,  9, CHARGE, 0.6666666667);
+      fill_val(9 , 11, CHARGE, 0.0         );
+      fill_val(11 ,12, CHARGE,-1.0         );
+      fill_val(12 ,13, CHARGE, 0.0         );
+      fill_val(13 ,14, CHARGE,-1.0         );
+      fill_val(14, 15, CHARGE, 0.0         );
+      fill_val(15 ,16, CHARGE,-1.0         );
+      fill_val(16, 17, CHARGE, 0.0         );
+      fill_val(17 ,18, CHARGE,-1.0         );
+      fill_val(18, 24, CHARGE, 0.0         );
+      fill_val(24, 25, CHARGE, 1.0         );
+      fill_val(25, 37, CHARGE, 0.0         );
+      fill_val(37, 38, CHARGE, 1.0         );
+      fill_val(38,101, CHARGE, 0.0         );
+    }
+
+  int idabs=abs(idhep);
+  double phoch=0.0;
+
+  //--
+  //--   Charge of quark, lepton, boson etc....
+  if (idabs<=100) phoch=CHARGE[idabs];
+  else {
+    int Q3= idabs/1000 % 10;
+    int Q2= idabs/100  % 10;
+    int Q1= idabs/10   % 10;
+    if (Q3==0){
+      //--
+      //-- ...meson...
+      if(Q2 % 2==0) phoch=CHARGE[Q2]-CHARGE[Q1];
+      else          phoch=CHARGE[Q1]-CHARGE[Q2];
+    }
+    else{
+      //--
+      //--   ...diquarks or baryon.
+      phoch=CHARGE[Q1]+CHARGE[Q2]+CHARGE[Q3];
+    }
+  }
+  //--
+  //--   Find the sign of the charge...
+  if (idhep<0.0) phoch=-phoch;
+  if (phoch*phoch<0.000001) phoch=0.0;
+  
+  return phoch;
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/Tauola.h b/TEvtGen/Tauola/Tauola.h
new file mode 100644 (file)
index 0000000..a1c7c55
--- /dev/null
@@ -0,0 +1,240 @@
+#ifndef _Tauola_h_included_
+#define _Tauola_h_included_
+
+/** 
+ * @class Tauola
+ *
+ * @brief Controls the configuration, initialization of Tauola.
+ *
+ * The Tauola class provides a wrapper to the TAUOLA common block
+ * responsible for setting up TAUOLA. They should then configure Tauola
+ * via the set method and then call initialize(). This is a static class.
+ *
+ * @author Nadia Davidson
+ * @date 16th June 2008
+ */
+
+#include <iostream>
+#include "TauolaParticle.h"
+#include "f_Init.h"
+#include "f_Variables.h"
+
+namespace Tauolapp
+{
+
+class TauolaEvent;
+class TauolaParticle;
+
+class Tauola{
+
+ public:
+
+  static const int NS1=100,NS2=100,NS3=100,NCOS=21;
+
+  /** Units */
+  static enum MomentumUnits { DEFAULT_MOMENTUM=-1, MEV, GEV } momentumUnit;
+  static enum LengthUnits   { DEFAULT_LENGTH  =-1, MM , CM  } lengthUnit;
+
+  /** Set output units (default Tauola::GEV and Tauola::MM). */
+  static void   setUnits(MomentumUnits m,LengthUnits l);
+
+  /** Set tau lifetime (in mm). */
+  static void   setTauLifetime(double t);
+
+  /** Decay Modes */
+  enum { All=0, ElectronMode, MuonMode, PionMode,
+         RhoMode, A1Mode, KMode, KStarMode };
+
+  /** Structure for switching the computation of spin correlation.
+      By default all spin correlations are turned on. */
+  struct Particles
+  {
+     bool GAMMA,
+          Z0,
+          HIGGS,
+          HIGGS_H,
+          HIGGS_A,
+          HIGGS_PLUS,
+          HIGGS_MINUS,
+          W_PLUS,
+          W_MINUS;
+     void setAll(bool flag) { GAMMA=Z0=HIGGS=HIGGS_H=HIGGS_A=HIGGS_PLUS=HIGGS_MINUS=W_PLUS=W_MINUS=flag; }
+  } static spin_correlation;
+
+   /** Initalize Tauola with the parameters previously set via the
+       setter methods */
+   static void initialize();
+
+   /** DEPRECATED: Use 'initialize' instead. */
+   static void initialise();
+
+   /** Change currents used by Tauola.
+       mode = 0 (default) - use CLEO currents
+       mode = 1 use RChL currents for 3pi and Belle currents for 2pi */
+   static void setNewCurrents(int mode);
+
+   /** Substitute build-in generator with external one */
+   static void setRandomGenerator( double (*gen)() );
+
+   static void setRedefineTauMinus( void (*fun)(TauolaParticle *) );
+   static void setRedefineTauPlus ( void (*fun)(TauolaParticle *) );
+
+   /** Tau gun. Takes one particle that's already inside an event record and produces it's decay.
+       The tau provided may be undecayed first, or left intact if it already has daughters.
+       If the polarization three-vector is provided it will be used to construct m_R matrix. */
+   static void decayOne(TauolaParticle *tau, bool undecay=false, double polx=0,double poly=0, double polz=0);
+
+   /** Checks if we are using decayOne() */
+   static bool isUsingDecayOne();
+
+   /** Checks if we are using boost routine for decayOne */
+   static bool isUsingDecayOneBoost();
+
+   /** Set boost routine for decayOne(). Refer to documentation for more details. */
+   static void setBoostRoutine( void (*boost)(TauolaParticle*, TauolaParticle *) );
+
+   /** Execute boost routine for decayOne() */
+   static void decayOneBoost(TauolaParticle *mother, TauolaParticle *target);
+
+   /** Return polarization vector used by decayOne() */
+   static const double* getDecayOnePolarization();
+
+   /** Set the pdg id of the particle to decay (should be 15 or -15) */
+   static void setDecayingParticle(int pdg_id);
+
+   /** Return the pdg id of the particle to decay */
+   static int getDecayingParticle();
+   
+   /** Set the decay mode of all particle with pdg id the same
+       as the one given in setDecayingParticle(). firstDecayMode=0 
+       is default and allows all decay modes. */
+   static void setSameParticleDecayMode(int firstDecayMode);
+   
+   /** Set the decay mode of all particle with opposite charge
+       to the one given in setDecayingParticle(). secondDecayMode=0 
+       is default and allows all decay modes. */
+   static void setOppositeParticleDecayMode(int secondDecayMode);
+
+   /** Switch for bremssthahlung in leptonic tau decays */
+   static void setRadiation(bool rad);
+
+   /** Cut-Off parameter of radition. Above that value photon is explicitly generated */
+   static void setRadiationCutOff(double rad_cut_off);
+
+   /** Initialization of some constants related to QED corrections.
+       Variable iniphy_param is at present dummy. It is prepared to be transmitted
+       to some old style production code and is kept for backward compatibility */
+   static void setInitializePhy(double iniphy);
+
+   /** DEPRECATED: Use 'setInitializePhy' instead. */
+   static void setInitialisePhy(double iniphy);
+
+   /** Set branching fraction for i-th channel. Can be reused several times during the run. */
+   static void setTauBr(int i, double value);
+
+   static void setTaukle(double bra1, double brk0, double brk0b, double brks);
+
+   static double getHiggsScalarPseudoscalarMixingAngle();
+
+   /** set the mixing angle. coupling: tau~(cos(phi)+isin(phi)gamma5)tau */
+   static void setHiggsScalarPseudoscalarMixingAngle(double angle); 
+
+   /** Get mass of the tau used by interface. */
+   static double getTauMass();
+
+   /** Modify Higgs Scalar-Pseudoscalar PDG id (default is 35). */
+   static void setHiggsScalarPseudoscalarPDG(int pdg_id);
+
+   /** Get Higgs Scalar-Pseudoscalar PDG id. */
+   static int getHiggsScalarPseudoscalarPDG();
+
+   static int getHelPlus();
+
+   static int getHelMinus();
+
+   static double getEWwt();
+
+   static double getEWwt0();
+
+   static void setEWwt(double wt, double wt0);
+
+   static void setHelicities(int Minus, int Plus);
+
+   static void setEtaK0sPi(int eta, int k, int pi);
+
+   static void getBornKinematics(int *incoming_pdg_id, int *outgoing_pdg_id, double *invariant_mass_squared,double *cosTheta);
+
+   static void summary();
+
+public:
+
+   static double table11A[NS1][NCOS][4][4],table1A[NS1][NCOS][4][4],table2A[NS1][NCOS][4][4];
+   static double wtable11A[NS1][NCOS],wtable1A[NS1][NCOS],wtable2A[NS1][NCOS];
+   static double w0table11A[NS1][NCOS],w0table1A[NS1][NCOS],w0table2A[NS1][NCOS];
+
+   static double table11B[NS2][NCOS][4][4],table1B[NS2][NCOS][4][4],table2B[NS2][NCOS][4][4];
+   static double wtable11B[NS2][NCOS],wtable1B[NS2][NCOS],wtable2B[NS2][NCOS];
+   static double w0table11B[NS2][NCOS],w0table1B[NS2][NCOS],w0table2B[NS2][NCOS];
+
+   static double table11C[NS3][NCOS][4][4],table1C[NS3][NCOS][4][4],table2C[NS3][NCOS][4][4];
+   static double wtable11C[NS3][NCOS],wtable1C[NS3][NCOS],wtable2C[NS3][NCOS];
+   static double w0table11C[NS3][NCOS],w0table1C[NS3][NCOS],w0table2C[NS3][NCOS];
+   static double sminA,smaxA,sminB,smaxB,sminC,smaxC;
+
+   static int ion[3];
+
+   // c*tau in milimeters, survival probablility  P(t)=exp(-t/lifetime) 
+   static double tau_lifetime;
+   static double momentum_conservation_threshold;
+
+   //born kinematic variables
+   static int buf_incoming_pdg_id,  buf_outgoing_pdg_id;
+   static double  buf_invariant_mass_squared,  buf_cosTheta;
+   static double  buf_R[4][4]; //density matrix
+
+   //pointer to random generator function
+   static double (*randomDouble)();
+
+   static void (*redefineTauPlusProperties)(TauolaParticle *);
+   static void (*redefineTauMinusProperties)(TauolaParticle *);
+
+ private:
+
+  /** Calculate the charge  of particle  with code 'idhep'. 
+      The code  of the  particle  is  defined by the Particle Data
+      Group in Phys. Lett. B204 (1988) 1.
+      NOTE: Code taken from Photos++, file: PhotosUtilities.cxx, function: PHOCHA */
+  static double particleCharge(int idhep);
+  
+  /** Fill 'array' indices from 'beg' to 'end' with 'value' */
+  static void fill_val(int beg, int end, double* array, double value);
+  
+  /** Default generator used in Tauola */
+  static double defaultRandomGenerator();
+  static void   defaultRedPlus(TauolaParticle *);
+  static void   defaultRedMinus(TauolaParticle *);
+
+  /** Are we using decayOne() ? */
+  static bool   m_is_using_decay_one;
+  /** decayOne() polarization vector */
+  static double m_decay_one_polarization[3];
+  /** Boost routine used by decayOne() */
+  static void (*m_decay_one_boost_routine)(TauolaParticle*,TauolaParticle*);
+
+  static int m_pdg_id;
+  static int m_firstDecayMode; 
+  static int m_secondDecayMode;
+  static bool m_rad;
+  static double m_rad_cut_off;
+  static double m_iniphy;
+  static double m_higgs_scalar_pseudoscalar_mix;
+  static int m_higgs_scalar_pseudoscalar_pdg;
+  static double m_wtEW;
+  static double m_wtEW0;
+  static int m_helPlus;
+  static int m_helMinus;
+};
+
+} // namespace Tauolapp
+#endif  
+
diff --git a/TEvtGen/Tauola/TauolaEvent.cxx b/TEvtGen/Tauola/TauolaEvent.cxx
new file mode 100644 (file)
index 0000000..e2066d4
--- /dev/null
@@ -0,0 +1,38 @@
+#include "TauolaEvent.h"
+#include "Plots.h"
+
+using namespace std;
+
+namespace Tauolapp
+{
+
+void TauolaEvent::undecayTaus(){
+  
+  std::vector<TauolaParticle*> particle_list;
+  particle_list = findParticles(Tauola::getDecayingParticle());
+
+  for(int p=0; p < (int) particle_list.size(); p++)
+    particle_list.at(p)->findLastSelf()->undecay();
+
+}
+
+void TauolaEvent::decayTaus(){
+
+  std::vector<TauolaParticle*> particle_list;
+  particle_list = findStableParticles(Tauola::getDecayingParticle());
+
+  while(particle_list.size()!=0){
+
+    // tau and its matching tau-like partner is removed from the list here:
+    TauolaParticlePair t_pair(particle_list);
+
+    //t_pair.print();
+    t_pair.decayTauPair();
+    t_pair.checkMomentumConservation();
+  }
+
+  // Final event record modifications
+  eventEndgame();
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/TauolaEvent.h b/TEvtGen/Tauola/TauolaEvent.h
new file mode 100644 (file)
index 0000000..f39c378
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef _TauolaEvent_h_included_
+#define _TauolaEvent_h_included_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <iostream>
+#include "TauolaParticlePair.h"
+
+/**
+ * @class TauolaEvent
+ *
+ * @brief Abstract base class for containing the event information.
+ *
+ * TauolaEvent contains virtual methods, which need to be implemented
+ * by the appropriate interface class to the event record. Currently only
+ * TauolaHepMCEvent does this. An object of TauolaEvent type should be
+ * created by the user and can be decayed via the decayTaus() method.
+ *
+ * This class is responsible for finding taus, (or tau and 
+ * it's neutrino) and creating TauolaParticlePairs out of them.
+ *
+ * @author Nadia Davidson
+ * @date 16 June 2008
+ */
+
+namespace Tauolapp
+{
+
+class TauolaEvent{
+
+ public:
+  virtual ~TauolaEvent(){};
+
+   /** create TauolaParticlePairs */
+   std::vector<TauolaParticle*> findPairs();
+
+  /** Decay taus in this event.*/
+   void decayTaus();
+
+   /** Undecay taus in this event but removing their daughters and
+    returning the status cods to 1.*/
+   void undecayTaus();
+
+   /** Final touches to event record after all decays are finished.
+       Some event records (e.g. HepMC) need it. */
+   virtual void eventEndgame() {}
+
+   /** return a list of all particle with pdg_id = absolute value of pdg_id.
+       This method must be implemented by a derived class. eg. 
+       TauolaHepMCEvent */
+   virtual std::vector<TauolaParticle*> findParticles(int pdg_id)=0;
+
+   /** return a list of all particle with pdg_id = absolute value of pdg_id
+       and stable status code. This method must be implemented by a derived class. 
+       eg. TauolaHepMCEvent */
+   virtual std::vector<TauolaParticle*> findStableParticles(int pdg_id)=0;
+
+
+ private:    
+
+};
+
+} // namespace Tauolapp
+#endif  
+
diff --git a/TEvtGen/Tauola/TauolaHEPEVTEvent.cxx b/TEvtGen/Tauola/TauolaHEPEVTEvent.cxx
new file mode 100644 (file)
index 0000000..2436a41
--- /dev/null
@@ -0,0 +1,143 @@
+#include "TauolaHEPEVTEvent.h"
+
+#include "Log.h"
+
+namespace Tauolapp
+{
+
+TauolaHEPEVTEvent::~TauolaHEPEVTEvent()
+{
+  for(unsigned int i=0;i<particle_list.size();i++) delete particle_list[i];
+}
+
+TauolaHEPEVTEvent::TauolaHEPEVTEvent() {}
+
+void TauolaHEPEVTEvent::addParticle(TauolaHEPEVTParticle *p)
+{
+  p->setEvent(this);
+
+  p->setBarcode(particle_list.size());
+  particle_list.push_back(p);
+}
+
+TauolaHEPEVTParticle *TauolaHEPEVTEvent::getParticle(int i)
+{
+  if( i<0 || i>=(int)particle_list.size() ) return NULL;
+  return particle_list[i];
+}
+
+int TauolaHEPEVTEvent::getParticleCount()
+{
+  return particle_list.size();
+}
+
+// we have conflict in names, looks for -pdg_id also...
+std::vector<TauolaParticle*> TauolaHEPEVTEvent::findParticles(int pdg_id){
+
+  std::vector<TauolaParticle*> list;
+
+  // Loop over all particles in the event looking
+  // for tau (or other) particle with specified pdg_id and -pdg_id
+  for(unsigned int i=0; i<particle_list.size(); i++)
+  {
+    if( abs(particle_list[i]->getPdgID() ) == pdg_id)
+      list.push_back(particle_list[i]);
+  }
+
+  return list;
+}
+
+// we have conflict in names, should be findStableTaus or have another argument. 
+std::vector<TauolaParticle*> TauolaHEPEVTEvent::findStableParticles(int pdg_id){
+
+  std::vector<TauolaParticle*> tau_list = findParticles(pdg_id);
+  std::vector<TauolaParticle*> stable_tau_list;
+
+  for(int i=0; i<(int) tau_list.size(); i++){
+
+    if(!tau_list.at(i)->hasDaughters())
+      stable_tau_list.push_back(tau_list[i]);
+    else
+    {
+      std::vector<TauolaParticle*> t = tau_list[i]->getDaughters();
+      //Ignore taus that we won't be decaying anyway
+      if(t.size()==1) continue;
+      if(t.size()==2 && (abs(t[0]->getPdgID())==15 || abs(t[1]->getPdgID())==15) ) continue;
+      Log::Warning()<<"Particle with pdg code "<<tau_list.at(i)->getPdgID()
+                    <<" already has daughters" <<endl;
+    }
+  }
+
+  return stable_tau_list;
+
+}
+
+void TauolaHEPEVTEvent::print()
+{
+  printf("TauolaHEPEVTEvent\n-----------------\n");
+  for(unsigned int i=0;i<particle_list.size();i++) particle_list[i]->print();
+}
+
+void TauolaHEPEVTEvent::clear()
+{
+  for(unsigned int i=0;i<particle_list.size();i++) delete particle_list[i];
+  particle_list.clear();
+}
+
+#ifdef USE_HEPEVT_INTERFACE
+
+void TauolaHEPEVTEvent::read_event_from_HEPEVT(TauolaHEPEVTEvent *evt)
+{
+  if(evt==NULL) return;
+  
+  for(int i=0; i<hepevt_.nhep; i++)
+  {
+    TauolaHEPEVTParticle *p = new TauolaHEPEVTParticle
+    (
+      hepevt_.idhep [i],
+      hepevt_.isthep[i],
+      hepevt_.phep  [i][0],
+      hepevt_.phep  [i][1],
+      hepevt_.phep  [i][2],
+      hepevt_.phep  [i][3],
+      hepevt_.phep  [i][4],
+      hepevt_.jmohep[i][0]-1,
+      hepevt_.jmohep[i][1]-1,
+      hepevt_.jdahep[i][0]-1,
+      hepevt_.jdahep[i][1]-1
+    );
+    evt->addParticle(p);
+  }
+}
+
+void TauolaHEPEVTEvent::write_event_to_HEPEVT(TauolaHEPEVTEvent *evt)
+{
+  if(evt==NULL) return;
+  
+  hepevt_.nhep = evt->getParticleCount();
+  
+  for(int i=0; i<hepevt_.nhep; i++)
+  {
+    TauolaHEPEVTParticle *p = evt->getParticle(i);
+    
+    hepevt_.idhep [i]   =p->getPdgID();
+    hepevt_.isthep[i]   =p->getStatus();
+    hepevt_.phep  [i][0]=p->getPx();
+    hepevt_.phep  [i][1]=p->getPy();
+    hepevt_.phep  [i][2]=p->getPz();
+    hepevt_.phep  [i][3]=p->getE();
+    hepevt_.phep  [i][4]=p->getMass();
+    hepevt_.jmohep[i][0]=p->getFirstMotherIndex()  +1;
+    hepevt_.jmohep[i][1]=p->getSecondMotherIndex() +1;
+    hepevt_.jdahep[i][0]=p->getDaughterRangeStart()+1;
+    hepevt_.jdahep[i][1]=p->getDaughterRangeEnd()  +1;
+    hepevt_.vhep  [i][0]=0.0;
+    hepevt_.vhep  [i][1]=0.0;
+    hepevt_.vhep  [i][2]=0.0;
+    hepevt_.vhep  [i][3]=0.0;
+  }
+}
+
+#endif
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/TauolaHEPEVTEvent.h b/TEvtGen/Tauola/TauolaHEPEVTEvent.h
new file mode 100644 (file)
index 0000000..b94bf93
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef _TauolaHEPEVTEvent_h_included_
+#define _TauolaHEPEVTEvent_h_included_
+
+/**
+ * @class TauolaHEPEVTParticle
+ *
+ * @brief Single particle of HEPEVT event record
+ *
+ * This class implements the virtual methods of
+ * TauolaEvent. In this way it provides an
+ * interface between the generic TauolaEvent class
+ * and information stored in HEPEVT event record.
+ *
+ * @author Tomasz Przedzinski
+ * @date 24 November 2011
+ */
+
+#include <iostream>
+#include "TauolaEvent.h"
+#include "TauolaParticle.h"
+#include "TauolaHEPEVTParticle.h"
+
+namespace Tauolapp
+{
+
+// Uncomment this line to use interface to common block HEPEVT
+// But first be sure about suitable for you value of NMXHEP
+// and whether phep, vhep should be declared float or double
+//#define USE_HEPEVT_INTERFACE
+
+#ifdef USE_HEPEVT_INTERFACE
+
+// Change this value to match HEPEVT size
+const int NMXHEP = 10000;
+
+extern "C" struct {
+  int    nevhep;            // serial number
+  int    nhep;              // number of particles
+  int    isthep[NMXHEP];    // status code
+  int    idhep [NMXHEP];    // particle PDG ID
+  int    jmohep[NMXHEP][2]; // parent particles
+  int    jdahep[NMXHEP][2]; // childreen particles
+  double phep  [NMXHEP][5]; // four-momentum, mass [GeV]
+  double vhep  [NMXHEP][4]; // vertex [mm]
+} hepevt_;
+
+#endif
+
+class TauolaHEPEVTParticle;
+
+class TauolaHEPEVTEvent : public TauolaEvent {
+
+ public:
+
+  /** Default destructor */
+  ~TauolaHEPEVTEvent();
+
+  /** Default constructor */
+  TauolaHEPEVTEvent();
+
+  /** Add particle at the end of event record */
+  void addParticle(TauolaHEPEVTParticle *p);
+
+  /** Get particle at index 'i' */
+  TauolaHEPEVTParticle *getParticle(int i);
+
+  /** Get higher-most index of the particles in event (nhep) */
+  int getParticleCount();
+
+  /** Implementation of TauolaEvent virtual method.
+      This returns a list of particles in the event with
+      pdg id = "pdgID". */
+  std::vector<TauolaParticle*> findParticles(int pdgID);
+
+  /** Implementation of TauolaEven virtual method.
+      This returns a list of particles in the event with
+      pdg id = "pdgID" and stable status code. */
+  std::vector<TauolaParticle*> findStableParticles(int pdgID);
+
+  /** Print out list of particles in the event */
+  void print();
+  
+  /** Remove all particles from the event */
+  void clear();
+
+#ifdef USE_HEPEVT_INTERFACE
+  /** Fill TauolaHEPEVTEvent from HEPEVT common block */
+  static void read_event_from_HEPEVT(TauolaHEPEVTEvent *evt);
+  
+  /** Write to HEPEVT common block content of TauolaHEPEVTEvent */
+  static void write_event_to_HEPEVT(TauolaHEPEVTEvent *evt);
+#endif
+
+ private:
+
+  /** List of all particles */
+  std::vector<TauolaHEPEVTParticle*> particle_list;
+};
+
+} // namespace Tauolapp
+#endif
+
diff --git a/TEvtGen/Tauola/TauolaHEPEVTParticle.cxx b/TEvtGen/Tauola/TauolaHEPEVTParticle.cxx
new file mode 100644 (file)
index 0000000..fffc6bc
--- /dev/null
@@ -0,0 +1,319 @@
+#include "TauolaHEPEVTParticle.h"
+
+#include "Log.h"
+
+namespace Tauolapp
+{
+
+TauolaHEPEVTParticle::~TauolaHEPEVTParticle()
+{
+  // Cleanup particles that do not belong to event
+  for(unsigned int i=0;i<cache.size();i++)
+    if(cache[i]->m_barcode<0)
+      delete cache[i];
+}
+
+TauolaHEPEVTParticle::TauolaHEPEVTParticle(int pdgid, int status, double px, double py, double pz, double e, double m, int ms, int me, int ds, int de){
+  m_px = px;
+  m_py = py;
+  m_pz = pz;
+  m_e  = e;
+  m_generated_mass = m;
+
+  m_pdgid  = pdgid;
+  m_status = status;
+
+  m_first_mother   = ms;
+  m_second_mother  = me;
+  m_daughter_start = ds;
+  m_daughter_end   = de;
+
+  m_barcode = -1;
+  m_event = NULL;
+}
+
+void TauolaHEPEVTParticle::undecay(){
+
+  Log::Info()<<"TauolaHEPEVTParticle::undecay not implemented for HEPEVT"<<endl;
+}
+
+void TauolaHEPEVTParticle::setMothers(vector<TauolaParticle*> mothers){
+
+  // If this particle has not yet been added to the event record
+  // then add it to the mothers' event record
+  if(m_barcode<0 && mothers.size()>0)
+  {
+    TauolaHEPEVTEvent *evt = ((TauolaHEPEVTParticle*)mothers[0])->m_event;
+    evt->addParticle(this);
+  }
+
+  if(mothers.size()>2) Log::Fatal("TauolaHEPEVTParticle::setMothers: HEPEVT does not allow more than two mothers!");
+  
+  if(mothers.size()>0) m_first_mother  = mothers[0]->getBarcode();
+  if(mothers.size()>1) m_second_mother = mothers[1]->getBarcode();
+}
+
+void TauolaHEPEVTParticle::setDaughters(vector<TauolaParticle*> daughters){
+
+  // This particle must be inside some event record to be able to add daughters
+  if(m_event==NULL) Log::Fatal("TauolaHEPEVTParticle::setDaughters: particle not inside event record.");
+
+  int beg = 65535, end = -1;
+
+  for(unsigned int i=0;i<daughters.size();i++)
+  {
+    int bc = daughters[i]->getBarcode();
+    if(bc<0) Log::Fatal("TauolaHEPEVTParticle::setDaughters: all daughters has to be in event record first");
+    if(bc<beg) beg = bc;
+    if(bc>end) end = bc;
+  }
+  if(end == -1) beg = -1;
+
+  m_daughter_start = beg;
+  m_daughter_end   = end;
+}
+
+std::vector<TauolaParticle*> TauolaHEPEVTParticle::getMothers(){
+
+  std::vector<TauolaParticle*> mothers;
+
+  TauolaParticle *p1 = NULL;
+  TauolaParticle *p2 = NULL;
+  
+  if(m_first_mother>=0)  p1 = m_event->getParticle(m_first_mother);
+  if(m_second_mother>=0) p2 = m_event->getParticle(m_second_mother);
+
+  if(p1) mothers.push_back(p1);
+  if(p2) mothers.push_back(p2);
+
+  return mothers;
+}
+
+// WARNING: this method also corrects daughter indices 
+//          if such were not defined
+std::vector<TauolaParticle*> TauolaHEPEVTParticle::getDaughters(){
+
+  std::vector<TauolaParticle*> daughters;
+
+  if(!m_event) return daughters;
+
+  // Check if m_daughter_start and m_daughter_end are set
+  // If not - try to get list of daughters from event
+  if(m_daughter_end<0)
+  {
+    int min_d=65535, max_d=-1;
+    for(int i=0;i<m_event->getParticleCount();i++)
+    {
+      if(m_event->getParticle(i)->isDaughterOf(this))
+      {
+        if(i<min_d) min_d = i;
+        if(i>max_d) max_d = i;
+      }
+    }
+    if(max_d>=0)
+    {
+      m_daughter_start = min_d;
+      m_daughter_end   = max_d;
+      m_status         = 2;
+    }
+  }
+
+  // If m_daughter_end is still not set - there are no daughters
+  // Otherwsie - get daughters
+  if(m_daughter_end>=0)
+  {
+    for(int i=m_daughter_start;i<=m_daughter_end;i++)
+    {
+      TauolaParticle *p = m_event->getParticle(i);
+      if(p==NULL)
+      {
+        Log::Warning()<<"TauolaHEPEVTParticle::getDaughters(): No particle with index "<<i<<endl;
+        return daughters;
+      }
+
+      daughters.push_back(p);
+    }
+  }
+
+  return daughters;
+}
+
+void TauolaHEPEVTParticle::checkMomentumConservation(){
+
+  if(!m_event)           return;
+  if(m_daughter_end < 0) return;
+
+  TauolaHEPEVTParticle *buf = m_event->getParticle(m_daughter_start);
+
+  int first_mother_idx  = buf->getFirstMotherIndex();
+  int second_mother_idx = buf->getSecondMotherIndex();
+
+  double px =0.0, py =0.0, pz =0.0, e =0.0;
+  double px2=0.0, py2=0.0, pz2=0.0, e2=0.0;
+
+  for(int i=m_daughter_start;i<=m_daughter_end;i++)
+  {
+    buf = m_event->getParticle(i);
+    px += buf->getPx();
+    py += buf->getPy();
+    pz += buf->getPz();
+    e  += buf->getE ();
+  }
+
+  if(first_mother_idx>=0)
+  {
+    buf = m_event->getParticle(first_mother_idx);
+    px2 += buf->getPx();
+    py2 += buf->getPy();
+    pz2 += buf->getPz();
+    e2  += buf->getE();
+  }
+  
+  if(second_mother_idx>=0)
+  {
+    buf = m_event->getParticle(second_mother_idx);
+    px2 += buf->getPx();
+    py2 += buf->getPy();
+    pz2 += buf->getPz();
+    e2  += buf->getE();
+  }
+  // 3-momentum  // test HepMC style
+  double dp = sqrt( (px-px2)*(px-px2) + (py-py2)*(py-py2) + (pz-pz2)*(pz-pz2) );
+  // virtuality test as well.
+  double m1 = sqrt( fabs( e*e   - px*px   - py*py   - pz*pz   ) );
+  double m2 = sqrt( fabs( e2*e2 - px2*px2 - py2*py2 - pz2*pz2 ) );
+
+  if( fabs(m1-m2) > 0.0001 || dp > 0.0001*(e+e2))
+  {
+    Log::RedirectOutput( Log::Warning()<<"Momentum not conserved in vertex: " );
+    if(first_mother_idx >=0) m_event->getParticle(first_mother_idx) ->print();
+    if(second_mother_idx>=0) m_event->getParticle(second_mother_idx)->print();
+    for(int i=m_daughter_start;i<=m_daughter_end;i++) m_event->getParticle(i)->print();
+    Log::RevertOutput();
+  }
+}
+
+TauolaHEPEVTParticle * TauolaHEPEVTParticle::createNewParticle(
+                        int pdg_id, int status, double mass,
+                        double px, double py, double pz, double e){
+
+  // New particles created using this method are added to cache
+  // They will be deleted when this particle will be deleted
+
+  cache.push_back(new TauolaHEPEVTParticle(pdg_id,status,px,py,pz,e,mass,-1,-1,-1,-1));
+  return cache.back();
+}
+
+bool TauolaHEPEVTParticle::isDaughterOf(TauolaHEPEVTParticle *p)
+{
+  int bc = p->getBarcode();
+  if(bc==m_first_mother || bc==m_second_mother) return true;
+
+  return false;
+}
+
+bool TauolaHEPEVTParticle::isMotherOf  (TauolaHEPEVTParticle *p)
+{
+  int bc = p->getBarcode();
+  if(bc>=m_daughter_start && bc<=m_daughter_end) return true;
+
+  return false;
+}
+
+void TauolaHEPEVTParticle::print(){
+  char buf[256];
+  sprintf(buf,"P: (%2i) %6i %2i | %11.4e %11.4e %11.4e %11.4e | %11.4e | M: %2i %2i | D: %2i %2i\n",
+          m_barcode, m_pdgid, m_status, m_px, m_py, m_pz, m_e, m_generated_mass,
+          m_first_mother, m_second_mother,   m_daughter_start, m_daughter_end);
+
+  cout<<buf;
+}
+
+/******** Getter and Setter methods: ***********************/
+
+void TauolaHEPEVTParticle::setPdgID(int pdg_id){
+  m_pdgid = pdg_id;
+}
+
+void TauolaHEPEVTParticle::setStatus(int status){
+  m_status = status;
+}
+
+void TauolaHEPEVTParticle::setMass(double mass){
+  m_generated_mass = mass;
+}
+
+int TauolaHEPEVTParticle::getPdgID(){
+  return m_pdgid;
+}
+
+int TauolaHEPEVTParticle::getStatus(){
+  return m_status;
+}
+
+double TauolaHEPEVTParticle::getMass(){
+  return m_generated_mass;
+}
+
+inline double TauolaHEPEVTParticle::getPx(){
+  return m_px;
+}
+
+inline double TauolaHEPEVTParticle::getPy(){
+  return m_py;
+}
+
+double TauolaHEPEVTParticle::getPz(){
+  return m_pz;
+}
+
+double TauolaHEPEVTParticle::getE(){
+  return m_e;
+}
+
+void TauolaHEPEVTParticle::setPx(double px){
+  m_px = px;
+}
+
+void TauolaHEPEVTParticle::setPy(double py){
+  m_py = py;
+}
+
+
+void TauolaHEPEVTParticle::setPz(double pz){
+  m_pz = pz;
+}
+
+void TauolaHEPEVTParticle::setE(double e){
+  m_e = e;
+}
+
+int TauolaHEPEVTParticle::getBarcode(){
+  return m_barcode;
+}
+
+void TauolaHEPEVTParticle::setBarcode(int barcode){
+  m_barcode = barcode;
+}
+
+void TauolaHEPEVTParticle::setEvent(TauolaHEPEVTEvent *event){
+  m_event = event;
+}
+
+int TauolaHEPEVTParticle::getFirstMotherIndex(){
+  return m_first_mother;
+}
+
+int TauolaHEPEVTParticle::getSecondMotherIndex(){
+  return m_second_mother;
+}
+
+int TauolaHEPEVTParticle::getDaughterRangeStart(){
+  return m_daughter_start;
+}
+
+int TauolaHEPEVTParticle::getDaughterRangeEnd(){
+  return m_daughter_end;
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/TauolaHEPEVTParticle.h b/TEvtGen/Tauola/TauolaHEPEVTParticle.h
new file mode 100644 (file)
index 0000000..3056d68
--- /dev/null
@@ -0,0 +1,174 @@
+#ifndef _TauolaHEPEVTParticle_h_included_
+#define _TauolaHEPEVTParticle_h_included_
+
+/**
+ * @class TauolaHEPEVTParticle
+ *
+ * @brief Single particle of HEPEVT event record
+ *
+ * This class implements the virtual methods of
+ * TauolaParticle. In this way it provides an
+ * interface between the generic TauolaParticle class
+ * and information stored in HEPEVT event record.
+ *
+ * @author Tomasz Przedzinski
+ * @date 24 November 2011
+ */
+
+#include <iostream>
+#include <vector>
+
+#include "f_Decay.h"
+#include "TauolaParticle.h"
+#include "TauolaHEPEVTEvent.h"
+
+namespace Tauolapp
+{
+
+class TauolaHEPEVTEvent;
+
+class TauolaHEPEVTParticle: public TauolaParticle {
+
+ public:
+  /** Default destructor */
+  ~TauolaHEPEVTParticle();
+
+  /** Default constructor */
+  TauolaHEPEVTParticle(int pdgid, int status, double px, double py, double pz, double e, double m, int ms, int me, int ds, int de);
+
+  /** Remove the decay branch from the event record and reset the particle status code to stable.
+      WARNING: not implemented for HEPEVT. */
+  void undecay();
+
+  /** Set the mothers of this particle via a vector of TauolaParticle*/
+  void setMothers(std::vector<TauolaParticle*> mothers);
+
+  /** Set the daughters of this particle via a vector of TauolaParticle*/
+  void setDaughters(std::vector<TauolaParticle*> daughters);
+
+  /** Returns the mothers of this particle via a vector of TauolaParticle */
+  std::vector<TauolaParticle*> getMothers();
+
+  /** Returns the daughters of this particle via a vector of TauolaParticle */
+  std::vector<TauolaParticle*> getDaughters();
+
+  /** Check that the 4 momentum in conserved in the decay of this particle */
+  void checkMomentumConservation();
+
+  /** Creates a new particle of type TauolaHEPEVTParticle, with the given
+      properties. The new particle bares no relations to this 
+      particle, but `this particle' provides only a way of creating an instance of
+      this derived class. eg. createNewParticle() is used inside
+      filhep_() so that a TauolaHEPEVTParticle can be created without
+      the method having explicit knowledge of the TauolaHEPEVTParticle
+      class */
+  TauolaHEPEVTParticle * createNewParticle(int pdg_id, int status, double mass,
+                                          double px, double py,
+                                          double pz, double e);
+
+  /** Check if particle 'p' is daughter of this particle */
+  bool isDaughterOf(TauolaHEPEVTParticle *p);
+
+  /** Check if particle 'p' is mother of this particle */
+  bool isMotherOf  (TauolaHEPEVTParticle *p);
+
+  /** Print information on this particle into standard output */
+  void print();
+
+  /** Set the PDG ID code of this particle */
+  void setPdgID(int pdg_id);
+
+  /** Set the status of this particle */
+  void setStatus(int statu);
+
+  /** Set the mass of this particle */
+  void setMass(double mass);
+
+  /** Get the PDG ID code of this particle */
+  int getPdgID();
+
+  /** Get the status of this particle */
+  int getStatus();
+
+  /** Get the mass stored (i.e. not calculated from four vector) at generation step */
+  double getMass();
+
+  /** Returns the px component of the four vector*/
+  double getPx();
+
+  /** Returns the py component of the four vector */
+  double getPy();
+
+  /** Returns the pz component of the four vector */
+  double getPz();
+
+  /** Returns the energy component of the four vector */
+  double getE();
+
+  /** Set the px component of the four vector */
+  void setPx( double px );
+
+  /** Set the px component of the four vector */
+  void setPy( double py );
+
+  /** Set the pz component of the four vector */
+  void setPz( double pz );
+
+  /** Set the energy component of the four vector */
+  void setE( double e );
+
+  /** Get the barcode (position in list) of this particle */
+  int getBarcode();
+
+  /** Set barcode (position in  list) of this particle */
+  void setBarcode(int barcode);
+
+  /** Set event of this particle */
+  void setEvent(TauolaHEPEVTEvent *event);
+  
+  /** Get index of first mother */
+  int getFirstMotherIndex();
+  
+  /** Get index of second mother */
+  int getSecondMotherIndex();
+
+  /** Get index of first daughter */
+  int getDaughterRangeStart();
+
+  /** Get index of last daughter */
+  int getDaughterRangeEnd();  
+
+private:
+
+  /** Event from which this particle is taken */
+  TauolaHEPEVTEvent *m_event;
+
+  /** Position in the event record */
+  int m_barcode;
+
+  /** Indexes of mothers (-1 if do not have mothers) */
+  int m_first_mother, m_second_mother;
+
+  /** Range of indexes of daughters (-1 if do not have daughters) */
+  int m_daughter_start, m_daughter_end;
+
+  /** PDG ID */
+  int m_pdgid;
+
+  /** Status (stable, decayed) */
+  int m_status;
+
+  /** Momentum */
+  double m_px, m_py, m_pz, m_e;
+
+  /** Mass saved at generation step */
+  double m_generated_mass;
+
+  /** List of created particles - if they are not in the event, they
+      will be deleted when no longer needed */
+  vector<TauolaHEPEVTParticle*> cache;
+};
+
+} // namespace Tauolapp
+#endif
+
diff --git a/TEvtGen/Tauola/TauolaHepMCEvent.cxx b/TEvtGen/Tauola/TauolaHepMCEvent.cxx
new file mode 100644 (file)
index 0000000..4c67df6
--- /dev/null
@@ -0,0 +1,124 @@
+#include "TauolaHepMCEvent.h"
+#include "Log.h"
+
+using namespace std;
+
+namespace Tauolapp
+{
+
+TauolaHepMCEvent::TauolaHepMCEvent(HepMC::GenEvent * event){
+  m_event=event;
+
+  // Default units
+  m_momentum_unit = "GEV";
+  m_length_unit   = "MM";
+
+  if(m_event->momentum_unit() != HepMC::Units::GEV) m_momentum_unit = "MEV";
+  if(m_event->length_unit()   != HepMC::Units::MM ) m_length_unit   = "CM";
+
+  // If needed - change units used by HepMC to GEV and MM
+  if( m_event->momentum_unit() != HepMC::Units::GEV ||
+      m_event->length_unit()   != HepMC::Units::MM     )
+  {
+    m_event->use_units(HepMC::Units::GEV,HepMC::Units::MM);
+  }
+}
+
+TauolaHepMCEvent::~TauolaHepMCEvent(){
+
+  while(m_tau_list.size()!=0){
+    TauolaParticle * temp = m_tau_list.back();
+    m_tau_list.pop_back();
+    delete temp;
+  }
+
+}
+
+HepMC::GenEvent * TauolaHepMCEvent::getEvent(){
+  return m_event;
+}
+
+std::vector<TauolaParticle*> TauolaHepMCEvent::findParticles(int pdg_id){
+  
+  if(m_tau_list.size()==0){
+
+    HepMC::GenEvent::particle_const_iterator part_itr = m_event->particles_begin();
+    //loop over all particle in the event looking for taus (or other)
+    for( ; part_itr!=m_event->particles_end(); part_itr++){
+      if(abs((*part_itr)->pdg_id())==pdg_id)
+        m_tau_list.push_back(new TauolaHepMCParticle(*part_itr));
+    }
+  }
+  return m_tau_list;
+}
+
+std::vector<TauolaParticle*> TauolaHepMCEvent::findStableParticles(int pdg_id){
+
+  /**  HepMC::GenEvent::particle_const_iterator part_itr = m_event->particles_begin();
+  //loop over all particle in the event looking for taus (or other)
+  for( ; part_itr!=m_event->particles_end(); part_itr++){
+    if(fabs((*part_itr)->pdg_id())==pdg_id){
+      if((*part_itr)->end_vertex()){
+        cout << "WARNING: Particle with pdg code " << (*part_itr)->pdg_id()
+             << " has end vertex" <<endl;
+      }
+      else
+        list.push_back(new TauolaHepMCParticle(*part_itr));
+    }
+    }**/
+
+  std::vector<TauolaParticle*> tau_list = findParticles(pdg_id);
+  std::vector<TauolaParticle*> stable_tau_list;
+
+  for(int i=0; i<(int) tau_list.size(); i++){
+    
+    if(!tau_list.at(i)->hasDaughters())
+      stable_tau_list.push_back(tau_list.at(i)); 
+    else
+    {
+      std::vector<TauolaParticle*> t = tau_list.at(i)->getDaughters();
+      //Ignore taus that we won't be decaying anyway
+      if(t.size()==1) continue;
+      if(t.size()==2 && (abs(t[0]->getPdgID())==15 || abs(t[1]->getPdgID())==15) ) continue;
+      Log::Warning()<<"Particle with pdg code "<<tau_list.at(i)->getPdgID()
+                    <<" already has daughters" <<endl;
+    }
+  }
+
+  return stable_tau_list;
+
+}
+
+void TauolaHepMCEvent::eventEndgame(){
+
+  //Set output units for the event
+  string momentum("GEV"),length("MM");
+
+  switch(Tauola::momentumUnit)
+  {
+    case Tauola::GEV:
+      momentum = "GEV";
+      break;
+    case Tauola::MEV:
+      momentum = "MEV";
+      break;
+    default:
+      momentum = m_momentum_unit;
+  }
+
+  switch(Tauola::lengthUnit)
+  {
+    case Tauola::MM:
+      length = "MM";
+      break;
+    case Tauola::CM:
+      length = "CM";
+      break;
+    default:
+      length = m_length_unit;
+  }
+
+  m_event->use_units(momentum,length);
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/TauolaHepMCEvent.h b/TEvtGen/Tauola/TauolaHepMCEvent.h
new file mode 100644 (file)
index 0000000..1cd9b79
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _TauolaHepMCEvent_h_included_
+#define _TauolaHepMCEvent_h_included_
+
+/**
+ * @class TauolaHepMCEvent
+ *
+ * @brief Interface to HepMC::GenEvent objects
+ *
+ * This class implements the virtual methods of
+ * TauolaEvent. In this way it provides an
+ * interface between the generic TauolaEvent class
+ * and a HepMC::GenEvent object.
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ *
+ * This code is licensed under GNU General Public Licence.
+ * For more informations, see: http://www.gnu.org/licenses/
+ */
+
+#include <iostream>
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenVertex.h"
+#include "HepMC/GenParticle.h"
+#include "TauolaEvent.h"
+#include "TauolaParticle.h"
+#include "TauolaHepMCParticle.h"
+
+namespace Tauolapp
+{
+
+class TauolaHepMCEvent : public TauolaEvent{
+
+ public:
+
+  /** Constructor which keeps a pointer to the HepMC::GenEvent*/
+  TauolaHepMCEvent(HepMC::GenEvent * event);
+
+  ~TauolaHepMCEvent();
+
+  /** Returns the HepMC::GenEvent */
+  HepMC::GenEvent * getEvent();
+
+  /** Implementation of TauolaEvent virtual method.
+      This returns a list of particles in the event with 
+      pdg id = "pdgID". */
+  std::vector<TauolaParticle*> findParticles(int pdgID);
+
+  /** Implementation of TauolaEven virtual method.
+      This returns a list of particles in the event with
+      pdg id = "pdgID" and stable status code. */
+  std::vector<TauolaParticle*> findStableParticles(int pdgID);
+
+  /** Overriding of TauolaEvent decayEndgame method.
+      Converts the momentum and length units */
+  void eventEndgame();
+
+ private:
+
+  /** The event */
+  HepMC::GenEvent * m_event;
+  /** List of particles to be decayed */
+  std::vector<TauolaParticle*> m_tau_list;
+  /** Momentum unit name */
+  string m_momentum_unit;
+  /** Length unit name */
+  string m_length_unit;
+
+};
+
+} // namespace Tauolapp
+#endif  
+
diff --git a/TEvtGen/Tauola/TauolaHepMCParticle.cxx b/TEvtGen/Tauola/TauolaHepMCParticle.cxx
new file mode 100644 (file)
index 0000000..19e39e2
--- /dev/null
@@ -0,0 +1,365 @@
+#include "TauolaHepMCParticle.h"
+#include "Log.h"
+
+namespace Tauolapp
+{
+
+TauolaHepMCParticle::TauolaHepMCParticle(){
+  m_particle = new HepMC::GenParticle();
+}
+
+TauolaHepMCParticle::~TauolaHepMCParticle(){
+  
+  //delete the mother and daughter pointers
+  while(m_mothers.size()!=0){
+    TauolaParticle * temp = m_mothers.back();
+    m_mothers.pop_back();
+    delete temp;
+  }
+  while(m_daughters.size()!=0){
+    TauolaParticle * temp = m_daughters.back();
+    m_daughters.pop_back();
+    delete temp;
+  }
+
+  while(m_created_particles.size()!=0){
+    TauolaHepMCParticle * temp = (TauolaHepMCParticle*) m_created_particles.back();
+    m_created_particles.pop_back();
+    if(temp->getHepMC()->barcode()==0) delete temp->getHepMC();
+    delete temp;
+  } 
+
+}
+
+// NOTE: Not executed by release examples
+TauolaHepMCParticle::TauolaHepMCParticle(int pdg_id, int status, double mass){
+  m_particle = new HepMC::GenParticle();
+  m_particle->set_pdg_id(pdg_id);
+  m_particle->set_status(status);
+  m_particle->set_generated_mass(mass);
+}
+
+TauolaHepMCParticle::TauolaHepMCParticle(HepMC::GenParticle * particle){
+  m_particle = particle;
+}
+
+HepMC::GenParticle * TauolaHepMCParticle::getHepMC(){
+  return m_particle;
+}
+
+void TauolaHepMCParticle::undecay(){
+  std::vector<TauolaParticle*> daughters = getDaughters();
+  std::vector<TauolaParticle*>::iterator dIter = daughters.begin();
+
+  for(; dIter != daughters.end(); dIter++)
+    (*dIter)->undecay();
+
+  if(m_particle->end_vertex())
+  {
+  while(m_particle->end_vertex()->particles_out_size())
+  {
+    HepMC::GenParticle *p = m_particle->end_vertex()->remove_particle(*(m_particle->end_vertex()->particles_out_const_begin()));
+    delete p;
+  }
+  delete m_particle->end_vertex();
+  }
+
+  m_daughters.clear();
+  m_particle->set_status(TauolaParticle::STABLE);
+
+  for(unsigned int i=0;i<daughters.size();i++)
+    delete daughters[i];
+}
+
+void TauolaHepMCParticle::setMothers(vector<TauolaParticle*> mothers){
+
+  /******** Deal with mothers ***********/
+
+  //If there are mothers
+  if(mothers.size()>0){
+
+    HepMC::GenParticle * part;
+    part=dynamic_cast<TauolaHepMCParticle*>(mothers.at(0))->getHepMC();
+
+    //Use end vertex of first mother as production vertex for particle
+    HepMC::GenVertex * production_vertex = part->end_vertex();
+    HepMC::GenVertex * orig_production_vertex = production_vertex;
+
+    //If production_vertex does not exist - create it
+    //If it's tau decay - set the time and position including the tau lifetime correction
+    //otherwise - copy the time and position of decaying particle
+    if(!production_vertex){
+      production_vertex = new HepMC::GenVertex();
+      HepMC::FourVector point = part->production_vertex()->position();
+      production_vertex->set_position(point);
+      part->parent_event()->add_vertex(production_vertex);
+    }
+
+    //Loop over all mothers to check that the end points to the right place
+    vector<TauolaParticle*>::iterator mother_itr;
+    for(mother_itr = mothers.begin(); mother_itr != mothers.end();
+        mother_itr++){
+
+      HepMC::GenParticle * moth;
+      moth = dynamic_cast<TauolaHepMCParticle*>(*mother_itr)->getHepMC();
+
+      if(moth->end_vertex()!=orig_production_vertex)
+        Log::Fatal("Mother production_vertices point to difference places. Can not override. Please delete vertices first.",1);
+      else
+        production_vertex->add_particle_in(moth);
+
+      //update status info
+      if(moth->status()==TauolaParticle::STABLE)
+        moth->set_status(TauolaParticle::DECAYED);
+    }
+    production_vertex->add_particle_out(m_particle);
+  }
+}
+
+void TauolaHepMCParticle::setDaughters(vector<TauolaParticle*> daughters){
+
+  if(!m_particle->parent_event())
+    Log::Fatal("New particle needs the event set before it's daughters can be added",2);
+
+  //If there are daughters
+  if(daughters.size()>0){
+    // NOTE: Not executed by release examples
+    //       because daughters.size() is always 0
+
+    //Use production vertex of first daughter as end vertex for particle
+    HepMC::GenParticle * first_daughter;
+    first_daughter = (dynamic_cast<TauolaHepMCParticle*>(daughters.at(0)))->getHepMC();
+
+    HepMC::GenVertex * end_vertex;
+    end_vertex=first_daughter->production_vertex();
+    HepMC::GenVertex * orig_end_vertex = end_vertex;
+
+    if(!end_vertex){ //if it does not exist create it
+      end_vertex = new HepMC::GenVertex();
+      m_particle->parent_event()->add_vertex(end_vertex);
+    }
+
+    //Loop over all daughters to check that the end points to the right place
+    vector<TauolaParticle*>::iterator daughter_itr;
+    for(daughter_itr = daughters.begin(); daughter_itr != daughters.end();
+        daughter_itr++){
+
+      HepMC::GenParticle * daug;
+      daug = dynamic_cast<TauolaHepMCParticle*>(*daughter_itr)->getHepMC();
+
+
+      if(daug->production_vertex()!=orig_end_vertex)
+        Log::Fatal("Daughter production_vertices point to difference places. Can not override. Please delete vertices first.",3);
+      else
+        end_vertex->add_particle_out(daug);
+    }
+    end_vertex->add_particle_in(m_particle);
+  }
+}
+
+std::vector<TauolaParticle*> TauolaHepMCParticle::getMothers(){
+
+  if(m_mothers.size()==0&&m_particle->production_vertex()){
+    HepMC::GenVertex::particles_in_const_iterator pcle_itr;
+    pcle_itr=m_particle->production_vertex()->particles_in_const_begin();
+    
+    HepMC::GenVertex::particles_in_const_iterator pcle_itr_end;
+    pcle_itr_end=m_particle->production_vertex()->particles_in_const_end();
+    
+    for(;pcle_itr != pcle_itr_end; pcle_itr++){
+      m_mothers.push_back(new TauolaHepMCParticle(*pcle_itr));
+    }
+  }
+  return m_mothers;
+}
+
+std::vector<TauolaParticle*> TauolaHepMCParticle::getDaughters(){
+  
+  if(m_daughters.size()==0&&m_particle->end_vertex()){
+    HepMC::GenVertex::particles_out_const_iterator pcle_itr;
+    pcle_itr=m_particle->end_vertex()->particles_out_const_begin();
+    
+    HepMC::GenVertex::particles_out_const_iterator pcle_itr_end;
+    pcle_itr_end=m_particle->end_vertex()->particles_out_const_end();
+    
+    for(;pcle_itr != pcle_itr_end; pcle_itr++){
+      m_daughters.push_back(new TauolaHepMCParticle(*pcle_itr));
+    }
+  }
+  return m_daughters;
+}
+
+void TauolaHepMCParticle::checkMomentumConservation(){
+
+  if(!m_particle->end_vertex()) return;
+  
+  // HepMC version of check_momentum_conservation
+  // with added energy check
+
+  double sumpx = 0, sumpy = 0, sumpz = 0, sume = 0;
+  for( HepMC::GenVertex::particles_in_const_iterator part1 = m_particle->end_vertex()->particles_in_const_begin();
+       part1 != m_particle->end_vertex()->particles_in_const_end(); part1++ ){
+
+    sumpx += (*part1)->momentum().px();
+    sumpy += (*part1)->momentum().py();
+    sumpz += (*part1)->momentum().pz();
+    sume  += (*part1)->momentum().e();
+  }
+  
+  for( HepMC::GenVertex::particles_out_const_iterator part2 = m_particle->end_vertex()->particles_out_const_begin();
+       part2 != m_particle->end_vertex()->particles_out_const_end(); part2++ ){
+
+    sumpx -= (*part2)->momentum().px();
+    sumpy -= (*part2)->momentum().py();
+    sumpz -= (*part2)->momentum().pz();
+    sume  -= (*part2)->momentum().e();
+  }
+
+  if( sqrt( sumpx*sumpx + sumpy*sumpy + sumpz*sumpz + sume*sume) > Tauola::momentum_conservation_threshold ) {
+    Log::Warning()<<"Momentum not conserved in the vertex:"<<endl;
+    Log::RedirectOutput(Log::Warning(false));
+    m_particle->end_vertex()->print();
+    Log::RevertOutput();
+    return;
+  }
+  
+  return;
+}
+
+// NOTE: Not executed by release examples
+void TauolaHepMCParticle::setPdgID(int pdg_id){
+  m_particle->set_pdg_id(pdg_id);
+}
+
+void TauolaHepMCParticle::setMass(double mass){
+  m_particle->set_generated_mass(mass);
+}
+
+// NOTE: Not executed by release examples
+void TauolaHepMCParticle::setStatus(int status){
+  m_particle->set_status(status);
+}
+
+int TauolaHepMCParticle::getPdgID(){
+  return m_particle->pdg_id();
+}
+
+int TauolaHepMCParticle::getStatus(){
+  return m_particle->status();
+}
+
+int TauolaHepMCParticle::getBarcode(){
+  return m_particle->barcode();
+}
+
+// Set (X,T) Position of tau decay trees
+void TauolaHepMCParticle::decayEndgame(){
+
+  double lifetime = Tauola::tau_lifetime * (-log( Tauola::randomDouble() ));
+  HepMC::FourVector tau_momentum = m_particle->momentum();
+
+  double mass     = sqrt(abs(  tau_momentum.e()*tau_momentum.e()
+                             - tau_momentum.px()*tau_momentum.px()
+                             - tau_momentum.py()*tau_momentum.py()
+                             - tau_momentum.pz()*tau_momentum.pz()
+                            ) );
+
+  // Get previous position
+  HepMC::FourVector previous_position = m_particle->production_vertex()->position();
+
+  // Calculate new position
+  HepMC::FourVector new_position(previous_position.x()+tau_momentum.px()/mass*lifetime,
+                                 previous_position.y()+tau_momentum.py()/mass*lifetime,
+                                 previous_position.z()+tau_momentum.pz()/mass*lifetime,
+                                 previous_position.t()+tau_momentum.e() /mass*lifetime);
+
+  // Set new position
+  m_particle->end_vertex()->set_position(new_position);
+  recursiveSetPosition(m_particle,new_position);
+}
+
+void TauolaHepMCParticle::recursiveSetPosition(HepMC::GenParticle *p, HepMC::FourVector pos){
+
+  if(!p->end_vertex()) return;
+
+  // Iterate over all outgoing particles
+  for(HepMC::GenVertex::particles_out_const_iterator pp = p->end_vertex()->particles_out_const_begin();
+      pp != p->end_vertex()->particles_out_const_end();
+      ++pp){
+    if( !(*pp)->end_vertex() ) continue;
+
+    // Set position
+    (*pp)->end_vertex()->set_position(pos);
+    recursiveSetPosition(*pp,pos);
+  }
+}
+
+TauolaHepMCParticle * TauolaHepMCParticle::createNewParticle(
+                        int pdg_id, int status, double mass,
+                        double px, double py, double pz, double e){
+
+  TauolaHepMCParticle * new_particle = new TauolaHepMCParticle();
+  new_particle->getHepMC()->set_pdg_id(pdg_id);
+  new_particle->getHepMC()->set_status(status);
+  new_particle->getHepMC()->set_generated_mass(mass);
+
+  HepMC::FourVector momentum(px,py,pz,e);
+  new_particle->getHepMC()->set_momentum(momentum);
+
+  m_created_particles.push_back(new_particle);
+  
+  return new_particle;
+}
+
+void TauolaHepMCParticle::print(){
+  m_particle->print();
+}
+
+
+/******** Getter and Setter methods: ***********************/
+
+inline double TauolaHepMCParticle::getPx(){
+  return m_particle->momentum().px();
+}
+
+inline double TauolaHepMCParticle::getPy(){
+  return m_particle->momentum().py();
+}
+
+double TauolaHepMCParticle::getPz(){
+  return m_particle->momentum().pz();
+}
+
+double TauolaHepMCParticle::getE(){
+  return m_particle->momentum().e();
+}
+
+void TauolaHepMCParticle::setPx(double px){
+  //make new momentum as something is wrong with
+  //the HepMC momentum setters
+
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setPx(px);
+  m_particle->set_momentum(momentum);
+}
+
+void TauolaHepMCParticle::setPy(double py){
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setPy(py);
+  m_particle->set_momentum(momentum);
+}
+
+
+void TauolaHepMCParticle::setPz(double pz){
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setPz(pz);
+  m_particle->set_momentum(momentum);
+}
+
+void TauolaHepMCParticle::setE(double e){
+  HepMC::FourVector momentum(m_particle->momentum());
+  momentum.setE(e);
+  m_particle->set_momentum(momentum);
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/TauolaHepMCParticle.h b/TEvtGen/Tauola/TauolaHepMCParticle.h
new file mode 100644 (file)
index 0000000..69f7f51
--- /dev/null
@@ -0,0 +1,156 @@
+#ifndef _TauolaHepMCParticle_h_included_
+#define _TauolaHepMCParticle_h_included_
+
+/**
+ * @class TauolaHepMCParticle
+ *
+ * @brief Interface to HepMC::GenParticle objects
+ *
+ * This class implements the virtual methods of
+ * TauolaParticle. In this way it provides an
+ * interface between the generic TauolaParticle class
+ * and a HepMC::GenParticle object.
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ *
+ * This code is licensed under GNU General Public Licence.
+ * For more informations, see: http://www.gnu.org/licenses/
+ */
+
+#include <iostream>
+#include <vector>
+
+#include "HepMC/GenParticle.h"
+#include "HepMC/SimpleVector.h"
+#include "HepMC/GenEvent.h"
+
+//#include "DecayList.h"
+#include "TauolaParticle.h"
+#include "f_Decay.h"
+
+namespace Tauolapp
+{
+
+class TauolaHepMCParticle: public TauolaParticle{
+
+ public:
+  /** General constructor */
+  TauolaHepMCParticle();
+
+  ~TauolaHepMCParticle();
+
+  /** Constructor which keeps a pointer to the HepMC::GenParticle*/
+  TauolaHepMCParticle(HepMC::GenParticle * particle); 
+
+  /** Constructor which creates a new HepMC::GenParticle and
+       sets the properties pdg_id, statu and mass. */
+  TauolaHepMCParticle(int pdg_id, int status, double mass);
+  
+  /** Returns the HepMC::GenParticle */
+  HepMC::GenParticle * getHepMC();
+
+  /** Remove the decay branch from the event record and reset the particle status code to stable. */
+  void undecay();
+
+  /** Set the mothers of this particle via a vector of TauolaParticle*/
+  void setMothers(std::vector<TauolaParticle*> mothers);
+
+  /** Set the daughters of this particle via a vector of TauolaParticle*/
+  void setDaughters(std::vector<TauolaParticle*> daughters);
+
+  /** Returns the mothers of this particle via a vector of TauolaParticle */
+  std::vector<TauolaParticle*> getMothers();
+
+  /** Returns the daughters of this particle via a vector of TauolaParticle */
+  std::vector<TauolaParticle*> getDaughters();
+
+  /** Set the PDG ID code of this particle */
+  void setPdgID(int pdg_id);
+
+  /** Set the status of this particle */
+  void setStatus(int statu);
+
+  /** Set the mass of this particle */
+  void setMass(double mass);
+
+  /** Get the PDG ID code of this particle */
+  int getPdgID();
+
+  /** Get the status of this particle */
+  int getStatus();
+
+  /** Get the barcode of this particle */
+  int getBarcode();
+
+  /** Check that the 4 momentum in conserved at the vertices producing
+      and ending this particle */
+  void checkMomentumConservation();
+
+  /** Overriding of TauolaParticle decayEndgame method.
+      Converts the momentum and length units
+      and sets the vector (X,T) position */
+  void decayEndgame();
+
+  /** Create a new particle of type TauolaHepMCParticle, with the given
+      properties. The new particle bares no relations to this
+      particle, but it provides a way of creating a instance of
+      this derived class. eg. createNewParticle() is used inside
+      filhep_() so that a TauolaHepMCParticle can be created without
+      the method having explicit knowledge of the TauolaHepMCParticle 
+      class */
+  TauolaHepMCParticle * createNewParticle(int pdg_id, int status, double mass,
+                                          double px, double py,
+                                          double pz, double e);
+
+  /** Print some information about this particle to standard output */
+  void print();
+
+  /** Returns the px component of the four vector*/
+  double getPx();
+
+  /** Returns the py component of the four vector */
+  double getPy();
+
+  /** Returns the pz component of the four vector */
+  double getPz();
+
+  /** Returns the energy component of the four vector */
+  double getE();
+
+  /** Set the px component of the four vector */
+  void setPx( double px );
+
+  /** Set the px component of the four vector */
+  void setPy( double py );
+
+  /** Set the pz component of the four vector */
+  void setPz( double pz );
+
+  /** Set the energy component of the four vector */
+  void setE( double e );
+
+
+private:
+
+  /** Sets the position for whole decay tree starting from given particle */
+  void recursiveSetPosition(HepMC::GenParticle *p,HepMC::FourVector pos);
+
+  /** A pointer to the HepMC::GenParticle particle */
+  HepMC::GenParticle * m_particle;
+
+  /** A list of mothers */
+  std::vector<TauolaParticle*> m_mothers;
+
+  /** A list of daughters */
+  std::vector<TauolaParticle*> m_daughters;
+
+  /** List to keep track of new particles which have been
+      created from this one, so we can call their destructor later */
+  std::vector<TauolaParticle*> m_created_particles;
+
+};
+
+} // namespace Tauolapp
+#endif  
+
diff --git a/TEvtGen/Tauola/TauolaParticle.cxx b/TEvtGen/Tauola/TauolaParticle.cxx
new file mode 100644 (file)
index 0000000..83933d3
--- /dev/null
@@ -0,0 +1,365 @@
+#include "TauolaParticle.h"
+#include "Log.h"
+#include <stdexcept> 
+
+namespace Tauolapp
+{
+
+double TauolaParticle::getPolarimetricX(){
+  return m_pol_x;
+}
+
+double TauolaParticle::getPolarimetricY(){
+  return m_pol_y;
+}
+
+double TauolaParticle::getPolarimetricZ(){
+  return m_pol_z;
+}
+
+
+TauolaParticle * TauolaParticle::clone(){
+  
+  return createNewParticle(getPdgID(),getStatus(),getMass(),
+                           getPx(),getPy(),getPz(),getE());
+
+}
+
+// NOTE: Not executed by release examples
+double TauolaParticle::getAngle(TauolaParticle * other_particle){
+
+  //use the dot product
+  double x1 = getPx();
+  double y1 = getPy();
+  double z1 = getPz();
+  double x2 = other_particle->getPx();
+  double y2 = other_particle->getPy();
+  double z2 = other_particle->getPz();
+
+  return acos( (x1*x2+y1*y2+z1*z2) / sqrt((x1*x1+y1*y1+z1*z1)*(x2*x2+y2*y2+z2*z2)) );
+
+}
+
+// NOTE: Not executed by release examples
+void TauolaParticle::add(TauolaParticle * other_particle){
+
+  setPx(getPx() + other_particle->getPx());
+  setPy(getPy() + other_particle->getPy());
+  setPz(getPz() + other_particle->getPz());
+  setE(getE() + other_particle->getE());
+  setMass( sqrt( getE()*getE()-getPx()*getPx()-getPy()*getPy()-getPz()*getPz() ));
+}
+
+void TauolaParticle::subtract(TauolaParticle * other_particle){
+
+  setPx(getPx() - other_particle->getPx());
+  setPy(getPy() - other_particle->getPy());
+  setPz(getPz() - other_particle->getPz());
+  setE(getE() - other_particle->getE());
+  setMass( sqrt( getE()*getE()-getPx()*getPx()-getPy()*getPy()-getPz()*getPz() ));
+}
+
+int TauolaParticle::getSign(){
+  if(getPdgID()== Tauola::getDecayingParticle())
+    return SAME_SIGN;
+  else if(getPdgID()== -1 * Tauola::getDecayingParticle())
+    return OPPOSITE_SIGN;
+  else
+    return NA_SIGN;
+}
+
+bool TauolaParticle::hasDaughters(){
+  if(getDaughters().size()==0)
+    return 0;
+  else
+    return 1;
+}
+
+TauolaParticle * TauolaParticle::findLastSelf(){
+  vector<TauolaParticle*> daughters = getDaughters();
+  vector<TauolaParticle*>::iterator pcl_itr = daughters.begin();
+  
+  //get all daughters and look for stable with same pgd id
+  for(;pcl_itr != daughters.end();pcl_itr++){
+    if((*pcl_itr)->getPdgID()==this->getPdgID())
+      return (*pcl_itr)->findLastSelf();
+  }
+
+  return this;
+}
+
+std::vector<TauolaParticle*> TauolaParticle::findProductionMothers(){
+  vector<TauolaParticle*> mothers = getMothers();
+  vector<TauolaParticle*>::iterator pcl_itr = mothers.begin();
+  
+    //get all mothers and check none have pdg id of this one
+    for(;pcl_itr != mothers.end();pcl_itr++){
+      if((*pcl_itr)->getPdgID()==this->getPdgID())
+        return (*pcl_itr)->findProductionMothers();
+    }
+    return mothers;
+}
+
+void TauolaParticle::decay(){
+
+  //Do the decay and set the polarimetric vectors
+  TauolaDecay(getSign(),&m_pol_x, &m_pol_y, &m_pol_z, &m_pol_n);
+}
+
+void TauolaParticle::addDecayToEventRecord(){
+
+  //Add to decay list used by f_filhep.c
+  DecayList::addToEnd(this);
+  TauolaWriteDecayToEventRecord(getSign());
+
+  double xmom[4]={0};
+  double *pp=xmom;
+
+  if (Tauola::ion[2])
+    for(int i=1;1;i++)
+    {
+      TauolaParticle *x;
+      try{ x=DecayList::getParticle(i); }
+      catch(std::out_of_range d) {break;}
+      if(x->getPdgID()==221){ 
+
+        // Fix 28.04.2011 The pp vector must have boost for eta undone
+        TauolaParticle *x_copy = x->clone();
+        if(getP(TauolaParticle::Z_AXIS)>0)
+          x_copy->boostAlongZ(-getP(),getE());
+        else
+          x_copy->boostAlongZ(getP(),getE());
+
+        pp[3]=x_copy->getE();
+        pp[0]=x_copy->getPx();
+        pp[1]=x_copy->getPy();
+        pp[2]=x_copy->getPz();
+        taueta_(pp,&i);
+      } 
+    }
+
+  if (Tauola::ion[1])
+    for(int i=1;1;i++)
+    {
+      TauolaParticle *x;
+      try{ x=DecayList::getParticle(i); }
+      catch(std::out_of_range d) {break;}
+      if(x->getPdgID()==310){
+
+        // Fix 28.04.2011 The pp vector must have boost for k0 undone
+        TauolaParticle *x_copy = x->clone();
+        if(getP(TauolaParticle::Z_AXIS)>0)
+          x_copy->boostAlongZ(-getP(),getE());
+        else
+          x_copy->boostAlongZ(getP(),getE());
+
+        pp[3]=x_copy->getE();
+        pp[0]=x_copy->getPx();
+        pp[1]=x_copy->getPy();
+        pp[2]=x_copy->getPz();
+        tauk0s_(pp,&i);
+      } 
+    }
+
+  if (Tauola::ion[0])
+    for(int i=1;1;i++)
+    {
+      TauolaParticle *x;
+      try{ x=DecayList::getParticle(i); }
+      catch(std::out_of_range d) {break;}
+      if(x->getPdgID()==111){ 
+
+        // Fix 28.04.2011 The pp vector must have boost for pi0 undone
+        TauolaParticle *x_copy = x->clone();
+        if(getP(TauolaParticle::Z_AXIS)>0)
+          x_copy->boostAlongZ(-getP(),getE());
+        else
+          x_copy->boostAlongZ(getP(),getE());
+
+        pp[3]=x_copy->getE();
+        pp[0]=x_copy->getPx();
+        pp[1]=x_copy->getPy();
+        pp[2]=x_copy->getPz();
+        taupi0_(pp,&i);
+      } 
+    }
+  DecayList::clear();
+
+  if(!hasDaughters())
+    Log::Fatal("TAUOLA failed. No decay was created",5);
+  //  checkMomentumConservation();
+  //  decayEndgame(); // vertex shift was wrongly calculated, 
+  //                     used 4-momenta should be in lab frame,
+  //                     thanks to Sho Iwamoto for debug info.
+
+}
+
+
+void TauolaParticle::boostDaughtersFromRestFrame(TauolaParticle * tau_momentum){
+
+  if(!hasDaughters()) //if there are no daughters
+    return;
+
+  vector<TauolaParticle*> daughters = getDaughters();
+  vector<TauolaParticle*>::iterator pcl_itr = daughters.begin();
+  
+  //get all daughters then rotate and boost them.
+  for(;pcl_itr != daughters.end();pcl_itr++){
+    (*pcl_itr)->boostFromRestFrame(tau_momentum);
+    (*pcl_itr)->boostDaughtersFromRestFrame(tau_momentum);
+  }
+  //checkMomentumConservation();
+}
+
+void TauolaParticle::boostDaughtersToRestFrame(TauolaParticle * tau_momentum){
+
+  if(!hasDaughters()) //if there are no daughters
+    return;
+  // NOTE: Not executed by release examples
+  //       because !hasDaughters() is always true
+  vector<TauolaParticle*> daughters = getDaughters();
+  vector<TauolaParticle*>::iterator pcl_itr = daughters.begin();
+  
+  //get all daughters then rotate and boost them.
+  for(;pcl_itr != daughters.end();pcl_itr++){
+    (*pcl_itr)->boostToRestFrame(tau_momentum);
+    (*pcl_itr)->boostDaughtersToRestFrame(tau_momentum);
+  }
+  //checkMomentumConservation();
+}
+
+
+void TauolaParticle::boostToRestFrame(TauolaParticle * tau_momentum){
+
+  double theta = tau_momentum->getRotationAngle(Y_AXIS);
+  tau_momentum->rotate(Y_AXIS,theta);
+  double phi = tau_momentum->getRotationAngle(X_AXIS);
+  tau_momentum->rotate(Y_AXIS,-theta);
+
+  //Now rotate coordinates to get boost in Z direction.
+  rotate(Y_AXIS,theta);
+  rotate(X_AXIS,phi);
+  boostAlongZ(-1*tau_momentum->getP(),tau_momentum->getE());
+  rotate(X_AXIS,-phi);
+  rotate(Y_AXIS,-theta);
+
+}
+
+void TauolaParticle::boostFromRestFrame(TauolaParticle * tau_momentum){
+  //get the rotation angles
+  //and boost z
+
+  double theta = tau_momentum->getRotationAngle(Y_AXIS);
+  tau_momentum->rotate(Y_AXIS,theta);
+  double phi = tau_momentum->getRotationAngle(X_AXIS);
+  tau_momentum->rotate(Y_AXIS,-theta);
+
+  //Now rotate coordinates to get boost in Z direction.
+  rotate(Y_AXIS,theta);
+  rotate(X_AXIS,phi);
+  boostAlongZ(tau_momentum->getP(),tau_momentum->getE());
+  rotate(X_AXIS,-phi);
+  rotate(Y_AXIS,-theta);
+}
+
+/** Get the angle needed to rotate the 4 momentum vector so that
+    the x (y) component disapears. (and the Z component is > 0) */
+double TauolaParticle::getRotationAngle(int axis, int second_axis){
+
+  /**if(getP(axis)==0){
+    if(getPz()>0)
+      return 0; //no rotaion required
+    else
+      return M_PI;
+      }**/
+  if(getP(second_axis)==0){
+    if(getP(axis)>0)
+      return -M_PI/2.0;
+    else
+      return M_PI/2.0;
+  }
+  if(getP(second_axis)>0)
+    return -atan(getP(axis)/getP(second_axis));
+  else
+    return M_PI-atan(getP(axis)/getP(second_axis));
+
+}
+
+/** Boost this vector along the Z direction.
+    Assume no momentum components in the X or Y directions. */
+void TauolaParticle::boostAlongZ(double boost_pz, double boost_e){
+
+  // Boost along the Z axis
+  double m=sqrt(boost_e*boost_e-boost_pz*boost_pz);
+
+  double p=getPz();
+  double e=getE();
+
+  setPz((boost_e*p + boost_pz*e)/m);
+  setE((boost_pz*p + boost_e*e )/m);
+}
+
+/** Rotation around an axis X or Y */
+void TauolaParticle::rotate(int axis,double theta, int second_axis){
+  
+  double temp_px=getP(axis);
+  double temp_pz=getP(second_axis);
+  setP(axis,cos(theta)*temp_px + sin(theta)*temp_pz);
+  setP(second_axis,-sin(theta)*temp_px + cos(theta)*temp_pz);
+}
+
+void TauolaParticle::rotateDaughters(int axis,double theta, int second_axis){
+  if(!hasDaughters()) //if there are no daughters
+    return;
+
+  vector<TauolaParticle*> daughters = getDaughters();
+  vector<TauolaParticle*>::iterator pcl_itr = daughters.begin();
+  
+  //get all daughters then rotate and boost them.
+  for(;pcl_itr != daughters.end();pcl_itr++){
+    (*pcl_itr)->rotate(axis,theta,second_axis);
+    (*pcl_itr)->rotateDaughters(axis,theta,second_axis);
+  }
+  //checkMomentumConservation();
+}
+
+double TauolaParticle::getMass(){
+  double e_sq=getE()*getE();
+  double p_sq=getP()*getP();
+
+  if(e_sq>p_sq)
+    return sqrt(e_sq-p_sq);
+  else
+    return -1*sqrt(p_sq-e_sq); //if it's negative
+}
+
+double TauolaParticle::getP(){
+  return sqrt(getPx()*getPx()+getPy()*getPy()+getPz()*getPz());
+}
+
+double TauolaParticle::getP(int axis){
+  if(axis==X_AXIS)
+    return getPx();
+
+  if(axis==Y_AXIS)
+    return getPy();
+
+  if(axis==Z_AXIS)
+    return getPz();
+
+  return 0;
+}
+
+void TauolaParticle::setP(int axis, double p_component){
+  if(axis==X_AXIS)
+    setPx(p_component);
+  if(axis==Y_AXIS)
+    setPy(p_component);
+  if(axis==Z_AXIS)
+    setPz(p_component);
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/TauolaParticle.h b/TEvtGen/Tauola/TauolaParticle.h
new file mode 100644 (file)
index 0000000..d67de03
--- /dev/null
@@ -0,0 +1,353 @@
+#ifndef _TauolaParticle_h_included_
+#define _TauolaParticle_h_included_
+
+/**
+ * @class TauolaParticle
+ *
+ * @brief Abstract base class for particle in the event. This class also
+ * handles boosting.
+ *
+ * TauolaParticle is a Tauola representation of a particle. It has virtual
+ * getter and setter methods that need to be implemented by a derived class. 
+ * An example of this is TauolaHepMCParticle. In this way it provides an
+ * interface to the information in the Event Record.
+ *
+ * The class is also responsible for decays and contains the polarimetric 
+ * vector returned from tauola. All boosting is also done here.
+ *
+ * @author Nadia Davidson
+ * @date 16 June 2008
+ */
+
+#include <iostream>
+#include <math.h>
+#include <vector>
+
+#include "DecayList.h"
+#include "Tauola.h"
+#include "f_Decay.h"
+
+namespace Tauolapp
+{
+
+class TauolaParticle{
+
+ public:
+
+  virtual ~TauolaParticle(){};
+
+  /** The same sign as decaying particle pdg ID code 
+      given to Tauola object (only meaningful for taus). */
+  static const int SAME_SIGN=1;
+
+  /** The opposite sign to decaying particle pdg ID code 
+      given to Tauola object (only meaningful for taus). */
+  static const int OPPOSITE_SIGN=2;
+
+  /** Sign type is not applicable for this particle
+      (probably it's not a tau). */
+  static const int NA_SIGN=3;
+
+  /** Stable particle status */
+  static const int STABLE=1;
+
+  /** Decayed particle status */
+  static const int DECAYED=2;
+
+  /** History particle status */
+  static const int HISTORY=3;  
+
+  /** X Axis */
+  static const int X_AXIS=1;
+
+  /** Y Axis */
+  static const int Y_AXIS=2;
+
+  /** Z Axis */
+  static const int Z_AXIS=3;
+
+  /** Z0 particle */
+  static const int Z0 = 23;
+
+  /** H particle */
+  static const int HIGGS = 25;
+
+  /** A0 particle */
+  static const int HIGGS_A = 36;
+
+  /** H+ particle */
+  static const int HIGGS_PLUS = 37;
+
+  /** H- particle */
+  static const int HIGGS_MINUS = -37;
+
+
+  /** W+ particle */
+  static const int W_PLUS = 24;
+
+  /** W- particle */
+  static const int W_MINUS = -24;
+
+  /** photon */
+  static const int GAMMA = 22;
+
+  /** tau+ particle */
+  static const int TAU_PLUS = -15;
+
+  /** tau- particle */
+  static const int TAU_MINUS = 15;
+
+  /** tau neutrino particle */
+  static const int TAU_NEUTRINO = 16;
+
+  /** tau antineutrino particle */
+  static const int TAU_ANTINEUTRINO = -16;
+
+
+  /** muon+ particle */
+  static const int MUON_PLUS = -13;
+
+  /** muon- particle */
+  static const int MUON_MINUS = 13;
+
+  /** muon neutrino particle */
+  static const int MUON_NEUTRINO = 14;
+
+  /** muon antineutrino particle */
+  static const int MUON_ANTINEUTRINO = -14;
+
+
+  /** e+ particle */
+  static const int POSITRON = -11;
+
+  /** e- particle */
+  static const int ELECTRON = 11;
+
+  /** e neutrino particle */
+  static const int ELECTRON_NEUTRINO = 12;
+
+  /** e antineutrino particle */
+  static const int ELECTRON_ANTINEUTRINO = -12;
+
+  /** up quark */
+  static const int UP = 2;
+
+  /** anti-up quark */
+  static const int ANTIUP = -2;
+
+  /** down quark */
+  static const int DOWN = 1;
+
+  /** anti-down quark */
+  static const int ANTIDOWN = -1;
+
+  static const int GLUON = 21;
+  static const int CHARM = 4;
+  static const int TOP = 6;
+  static const int STRANGE = 3;
+  static const int BOTTOM = 5;
+
+  /** All other particle types*/
+  static const int OTHER = 0;
+
+  /** Create a new particle with the same properties as this one.
+      Mothers and daughters will not be linked. */
+  TauolaParticle * clone();
+
+  /** Get the angle between this particle and another particle */
+  double getAngle(TauolaParticle *);
+
+  /** Add the 4 momentum of another particle to this particle */
+  void add(TauolaParticle *);
+
+  /** Subtract the 4 momentum of another particle from this particle */
+  void subtract(TauolaParticle *);
+
+  /** Decay the particle. This calls the decay methods in the
+      interface to (FORTRAN) tauola. */
+  void decay();
+
+  /** Invokes TAUOLA FORTRAN routine DEKAY retrieving the daughters of
+      decayed tau. */
+  void addDecayToEventRecord();
+
+  /** Get whether this particle has the same or opposite sign
+      to the pdg code given to the Tauola object. (Only relevant
+      for tau particles).*/  
+  int  getSign();
+
+  /** Get the polarimetric vector of this particle in the direction X. 
+      (Only relevant for tau particles).*/
+  double getPolarimetricX();
+
+  /** Get the polarimetric vector of this particle in the direction Y. 
+      (Only relevant for tau particles).*/
+  double getPolarimetricY();
+
+  /** Get the polarimetric vector of this particle in the direction Z. 
+      (Only relevant for tau particles).*/
+  double getPolarimetricZ(); 
+
+  /** Return whether the particle has any chidren */
+  bool hasDaughters();
+
+  /** Traverse the event structure and find the final version
+      of this particle which does not have a particle of it's own type
+      as it's daughter. eg. Generally the final stable copy */ 
+  TauolaParticle * findLastSelf();
+
+  /** Traverse the event structure and find the first set of mothers 
+      which are not of the same type as this particle. */
+  std::vector<TauolaParticle *> findProductionMothers();
+
+  /** Transform this particles four momentum from the lab frome
+      into the rest frame of the paramter TauolaParticle. **/   
+  void boostToRestFrame(TauolaParticle * boost);
+
+  /** Transform the four momentum of all the daughters recursively 
+      into the frame of the "particle" TauolaParticle. **/   
+  void boostDaughtersToRestFrame(TauolaParticle * boost);
+
+
+  /** Transform this particles four momentum from the rest frame of
+      the paramter TauolaParticle, back into the lab frame. **/   
+  void boostFromRestFrame(TauolaParticle * boost);
+
+  void boostDaughtersFromRestFrame(TauolaParticle * boost);
+
+  /** Do a Lorenz transformation along the Z axis. */ 
+  void boostAlongZ(double pz, double e);
+
+  /** rotate this particles 4-momentum by an angle phi from
+   the axisis "axis" towards the axis "second_axis". */
+  void rotate(int axis, double phi, int second_axis=Z_AXIS);
+
+  void rotateDaughters(int axis, double phi, int second_axis=Z_AXIS);
+
+  /** Returns the angle around the axis "axis" needed to rotate 
+      the four momenum is such a way that the non-Z component 
+      disappears and Z>0. This is used to rotating the coordinate 
+      system into a frame with only a Z component before calling 
+      boostAlongZ().*/
+  double getRotationAngle(int axis, int second_axis=Z_AXIS);
+
+  /** Get scalar momentum */
+  double getP();
+
+  /** Get momentum component in the direction of "axis" (x,y,z) */
+  double getP(int axis);
+
+  /** Set momentum component in the direction of "axis" (x,y,z) */
+  void  setP(int axis, double p_component);
+
+  /** Get the invariant mass from the four momentum*/
+  double getMass();
+
+
+
+  /********************************************** 
+      Beginning of virtual methods 
+
+  ********************************************/
+
+  /** remove the ougoing branch from this particles and reset its status to stable */
+  virtual void undecay(){};
+
+  /** check that the 4 momentum in conserved at the vertices producing
+      and ending this particle */
+  virtual void checkMomentumConservation(){};
+
+  /** Optional. Modify particle or decay tree if needed. */
+  virtual void decayEndgame(){};
+
+  /** Returns the px component of the four vector*/
+  virtual double getPx()=0;
+
+  /** Returns the py component of the four vector */
+  virtual double getPy()=0;
+
+  /** Returns the pz component of the four vector */
+  virtual double getPz()=0;
+
+  /** Returns the energy component of the four vector */
+  virtual double getE()=0;
+
+  /** Set the px component of the four vector */
+  virtual void setPx( double px )=0;
+
+  /** Set the px component of the four vector */
+  virtual void setPy( double py )=0;
+
+  /** Set the pz component of the four vector */
+  virtual void setPz( double pz )=0;
+
+  /** Set the energy component of the four vector */
+  virtual void setE( double e )=0;
+
+  /** Set the mothers of this particle via a vector of TauolaParticle */
+  virtual void setMothers(std::vector<TauolaParticle*> mothers)=0;
+
+  /** Set the daughters of this particle via a vector of TauolaParticle */  
+  virtual void setDaughters(std::vector<TauolaParticle*> daughters)=0;
+
+  /** Returns the mothers of this particle via a vector of TauolaParticle */
+  virtual std::vector<TauolaParticle*> getMothers()=0;
+
+  /** Returns the daughters of this particle via a vector of TauolaParticle */
+  virtual std::vector<TauolaParticle*> getDaughters()=0;
+
+  /** Set the PDG ID code of this particle */
+  virtual void setPdgID(int pdg_id)=0;
+
+  /** Set the mass of this particle */
+  virtual void setMass(double mass)=0;
+
+  /** Set the status of this particle */
+  virtual void setStatus(int status)=0;
+
+  /** Get the PDG ID code of this particle */
+  virtual int getPdgID()=0;
+
+  /** Get the status of this particle */
+  virtual int getStatus()=0;
+
+  /** Get the barcode of this particle */
+  virtual int getBarcode()=0;
+
+  /** Create a new particle of the same type, with the given
+      properties. The new particle bares no relations to this
+      particle, but it provides a way of creating a intance of
+      the derived class. eg. createNewParticle() is used inside
+      filhep_() so that an eg. TauolaHepMCParticle is created without
+      the method having explicit knowledge of the TauolaHepMCParticle 
+      class */
+  virtual TauolaParticle * createNewParticle(int pdg_id, int status, 
+                                             double mass, double px,
+                                             double py, double pz,
+                                             double e)=0;
+
+  /** Print some information about this particle to standard output */
+  virtual void print()=0;
+
+ private:
+
+  /** The polarimetric vector of this particle in the direction X. 
+      (Only relevant for tau particles). */
+  double m_pol_x;
+
+  /** The polarimetric vector of this particle in the direction Y. 
+      (Only relevant for tau particles). */
+  double m_pol_y;
+
+  /** The polarimetric vector of this particle in the direction Z. 
+      (Only relevant for tau particles). */
+  double m_pol_z;
+
+  /** Fourth component of the polarimetric vector. Should be the
+      normalisation (1). (Only relevant for tau particles). */
+  double m_pol_n;
+};
+
+} // namespace Tauolapp
+#endif  
+
diff --git a/TEvtGen/Tauola/TauolaParticlePair.cxx b/TEvtGen/Tauola/TauolaParticlePair.cxx
new file mode 100644 (file)
index 0000000..c9a7249
--- /dev/null
@@ -0,0 +1,1238 @@
+#include "Tauola.h"
+#include "TauolaParticlePair.h"
+#include "Log.h"
+#include <stdlib.h>
+#include <math.h>
+#include <iostream>
+
+namespace Tauolapp
+{
+
+/** constructor. Get the mothers, grandmothers and siblings of the tau */
+TauolaParticlePair::TauolaParticlePair(std::vector<TauolaParticle*> &particle_list){
+  TauolaParticle *particle=particle_list.back();
+  particle_list.pop_back();
+  setBornKinematics(0,0,-1.,0.); //set the default born variables
+
+  // In case of decayOne() we need only the tau information
+  if(Tauola::isUsingDecayOne())
+  {
+    m_mother = 0;
+    m_mother_exists = false;
+    m_production_particles.push_back(particle);
+    m_final_particles.push_back(particle);
+    initializeDensityMatrix();
+    Log::AddDecay(0);
+    return;
+  }
+
+  //See if there are any mothers
+  std::vector<TauolaParticle *> temp_mothers = particle->findProductionMothers();
+
+  // Case that there are no mothers or grandmothers
+  if(temp_mothers.size()==0){
+    // NOTE: Not executed by release examples
+    //       However, such cases were present if tests used older Pythia8.1 or so.
+    Log::Warning()<< "WARNING: Could not find taus mother or grandmothers. "
+                  << "Ignoring spin effects" << std::endl;
+    m_mother = 0;
+    m_mother_exists = false;
+    m_production_particles.push_back(particle);
+    m_final_particles.push_back(particle->findLastSelf());
+    initializeDensityMatrix();
+    Log::AddDecay(1);
+    return;
+  }
+
+  //fill the sibling pointers
+  std::vector<TauolaParticle*> temp_daughters;
+  temp_daughters = temp_mothers.at(0)->getDaughters();
+  if(temp_daughters.size()==0)
+    Log::Fatal("WARNING: Something wrong with event structure or there is a bug in the TAUOLA interface.",6);
+
+  m_production_particles=temp_daughters;
+  m_final_particles.push_back(particle->findLastSelf());
+
+  //Second tau-like particle selection should match properties of the hard (exotic) process. At present, solution
+  //match one of the possible diagrams contributing to SM process. Rare  case like tau+ tau+ nutau nutau will not be treted
+  //accordingly to any diagram of SM
+  for(signed int i=0; i < (int) m_production_particles.size(); i++)
+  {
+    //check if it has opposite PDGID sign
+    if(m_final_particles.at(0)->getPdgID()*m_production_particles.at(i)->getPdgID()>=0) continue;
+
+    if(m_production_particles.at(i)->getPdgID()==TauolaParticle::TAU_PLUS||
+       m_production_particles.at(i)->getPdgID()==TauolaParticle::TAU_MINUS)
+    {
+       //tau+ or tau- - check if it's on the particle_list
+       int j=-1;
+       for(j=0;j<(int)particle_list.size();j++)
+          if(m_production_particles.at(i)->getBarcode()==particle_list.at(j)->getBarcode()) break;
+       if(j>=(int)particle_list.size()) continue;
+
+       //exists on the list - add to m_final_particles and delete from particle_list
+       m_final_particles.push_back(m_production_particles.at(i)->findLastSelf());
+       particle_list.erase(particle_list.begin()+j);
+    }
+    else if(m_production_particles.at(i)->getPdgID()==TauolaParticle::TAU_NEUTRINO||
+            m_production_particles.at(i)->getPdgID()==TauolaParticle::TAU_ANTINEUTRINO)
+    {
+       //neutrino - for now - just add to m_final_particles
+       m_final_particles.push_back(m_production_particles.at(i)->findLastSelf());
+    }
+  }
+
+
+  //fill the mother and grandmother pointers
+  if(temp_mothers.size()==1){ //one mother
+    m_mother_exists = true;
+    m_mother = temp_mothers.at(0);
+    m_grandmothers = m_mother->findProductionMothers();
+    Log::AddDecay(3);
+  }
+  else{ //no mother, but grandparents exist
+    m_mother_exists = false;
+    m_grandmothers = temp_mothers;
+    m_mother = makeTemporaryMother(m_production_particles);
+    Log::AddDecay(2);
+  } 
+
+  initializeDensityMatrix();
+  
+  return;
+}
+
+
+/** The axis is defined by the boosting routine but our standard convention
+    is:
+    - Axis 3 is along the direction of the +ve tau, 
+    - Axis 1 is perpendicular to the reaction plane (sign=??)
+    - Axis 2 is defined through the vector product so the system
+      is right handed (?? check). Axis 1,2 and 3 are parrellel for the 1st
+      and second tau. */
+void TauolaParticlePair::initializeDensityMatrix(){
+      int incoming_pdg_id=0;
+      int outgoing_pdg_id=0;
+      double invariant_mass_squared=-5.0;
+      double cosTheta=3.0;
+
+  //initialize all elements of the density matrix to zero
+  for(int x = 0; x < 4; x ++) {
+    for(int y = 0; y < 4; y ++) 
+      m_R[x][y] = 0;
+  }
+
+  m_R[0][0]=1;
+
+  if(Tauola::isUsingDecayOne())
+  {
+    const double *pol = Tauola::getDecayOnePolarization();
+
+    m_R[0][1]=pol[0];
+    m_R[0][2]=pol[1];
+    m_R[0][3]=pol[2];
+
+    m_R[1][0]=pol[0];
+    m_R[2][0]=pol[1];
+    m_R[3][0]=pol[2];
+  }
+
+  if(!m_mother) return;
+  // fill the matrix depending on mother
+
+
+  // do scalar-pseudoscalar mixed higgs case separately since
+  // switch doesn't allow non-constants in a case statement.
+  // very annoying!
+
+  if(m_mother->getPdgID()==Tauola::getHiggsScalarPseudoscalarPDG()){
+    if(!Tauola::spin_correlation.HIGGS_H)  return;
+    
+    double phi = Tauola::getHiggsScalarPseudoscalarMixingAngle();
+    double mass_ratio = Tauola::getTauMass()/m_mother->getMass();
+    
+    double beta = sqrt(1-4*mass_ratio*mass_ratio);
+    double denominator = pow(cos(phi)*beta,2)+pow(sin(phi),2);
+    
+    m_R[0][0]=  1;
+    m_R[1][1]=  (pow(cos(phi)*beta,2)-pow(sin(phi),2))/denominator;
+    m_R[1][2]= 2*cos(phi)*sin(phi)*beta/denominator;
+    m_R[2][1]= -m_R[1][2]; 
+    m_R[2][2]=  m_R[1][1];
+    m_R[3][3]= -1;
+  }
+  else {
+
+    double pz = 0.0;
+
+    switch(m_mother->getPdgID()){
+      
+    case TauolaParticle::Z0:
+      if(!Tauola::spin_correlation.Z0)          break;
+      // Here we calculate SVAR and COSTHE as well as IDE and IDF
+      //   ANGULU(&IDE,&IDF,&SVAR,&COSTHE);
+      // this is ++ configuration of Fig 5 from HEPPH0101311: 
+      //pol_tau_minus[2]=-1; pol_tau_plus[2]=1;
+
+      pz = getZPolarization(&incoming_pdg_id, &outgoing_pdg_id, &invariant_mass_squared, &cosTheta);
+      m_R[0][0]=1;
+      m_R[0][3]=2*pz-1;
+      m_R[3][0]=2*pz-1;
+      m_R[3][3]=1;
+      // alternatively this may be overwritten if better solution exist
+      recalculateRij(incoming_pdg_id, outgoing_pdg_id, invariant_mass_squared, cosTheta);
+         break;
+
+    case TauolaParticle::GAMMA:
+      if(!Tauola::spin_correlation.GAMMA)       break;
+      // Here we calculate SVAR and COSTHE as well as IDE and IDF
+      //   ANGULU(&IDE,&IDF,&SVAR,&COSTHE);
+      // this is ++ configuration of Fig 5 from HEPPH0101311: 
+      //pol_tau_minus[2]=-1; pol_tau_plus[2]=1;
+
+      pz = getZPolarization(&incoming_pdg_id, &outgoing_pdg_id, &invariant_mass_squared, &cosTheta);
+      m_R[0][0]=1;
+      m_R[0][3]=2*pz-1;
+      m_R[3][0]=2*pz-1;
+      m_R[3][3]=1;
+      // alternatively this may be overwritten if better solution exist
+      recalculateRij(incoming_pdg_id, outgoing_pdg_id, invariant_mass_squared, cosTheta);
+      break;
+
+      //scalar higgs
+    case TauolaParticle::HIGGS:
+      if(!Tauola::spin_correlation.HIGGS)       break;
+      m_R[0][0]=1;
+      m_R[1][1]=1;
+      m_R[2][2]=1;
+      m_R[3][3]=-1;
+      break;
+
+      //pseudoscalar higgs case
+    case TauolaParticle::HIGGS_A:
+      if(!Tauola::spin_correlation.HIGGS_A)     break;
+      m_R[0][0]=1;
+      m_R[1][1]=-1;
+      m_R[2][2]=-1;
+      m_R[3][3]=-1;
+      break;
+
+    case TauolaParticle::HIGGS_PLUS:
+      if(!Tauola::spin_correlation.HIGGS_PLUS)  break;
+      m_R[0][0]=1;
+      m_R[0][3]=-1;
+      m_R[3][0]=-1;
+      break;
+
+    case TauolaParticle::HIGGS_MINUS:
+      if(!Tauola::spin_correlation.HIGGS_MINUS) break;
+      m_R[0][0]=1;
+      m_R[0][3]=-1;
+      m_R[3][0]=-1;
+      break;
+
+    case TauolaParticle::W_PLUS: 
+      if(!Tauola::spin_correlation.W_PLUS)       break;
+      m_R[0][0]=1;
+      m_R[0][3]=1; //tau minus (tau minus is on the -ve Z axis)
+      m_R[3][0]=1; //tau plus
+      break;
+
+    case TauolaParticle::W_MINUS:
+      if(!Tauola::spin_correlation.W_MINUS)      break;
+      m_R[0][0]=1;
+      m_R[0][3]=1; //tau minus (tau minus is on the -ve Z axis)
+      m_R[3][0]=1; //tau plus
+      break;
+
+    //ignore spin effects when mother is unknown
+    default:
+      m_R[0][0]=1;
+      break;
+    }
+  }  
+
+}
+
+/**************************************************************/
+void TauolaParticlePair::setBornKinematics(int incoming_pdg_id, int outgoing_pdg_id, double invariant_mass_squared,double cosTheta){
+  Tauola::buf_incoming_pdg_id=incoming_pdg_id;
+  Tauola::buf_outgoing_pdg_id=outgoing_pdg_id;
+  Tauola::buf_invariant_mass_squared=invariant_mass_squared;
+  Tauola::buf_cosTheta=cosTheta;
+  //cout<<"(TauolaParticlePair::Just to be sure:) "<<buf_incoming_pdg_id<<" "<<buf_outgoing_pdg_id<<" "<<buf_invariant_mass_squared<<" "<<buf_cosTheta<<endl;
+  //  m_R[0][0] to be added in next step;
+}
+
+/**************************************************************/
+double TauolaParticlePair::getZPolarization(int *incoming_pdg_id, int *outgoing_pdg_id, double *invariant_mass_squared,double *cosTheta){
+
+  //defaults
+  *incoming_pdg_id = TauolaParticle::ELECTRON;
+  *cosTheta = 0 ;
+  *outgoing_pdg_id = TauolaParticle::TAU_PLUS;
+  *invariant_mass_squared = pow(m_mother->getMass(),2);
+  setBornKinematics(*incoming_pdg_id, *outgoing_pdg_id, *invariant_mass_squared, *cosTheta); // store for debugging
+
+  //TRIVIAL CASE:
+  //if we don't know the incoming beams then
+  //return the average z polarisation
+  if(m_grandmothers.size()<2){
+      Log::Warning()<<"Not enough mothers of Z to "
+                    <<"calculate cos(theta) between "
+                    <<"incoming about outgoing beam"
+                    << endl;
+    return 1-plzap0_(incoming_pdg_id,outgoing_pdg_id, 
+                     invariant_mass_squared, cosTheta);
+  }
+
+  if(!getTauPlus(m_production_particles)||!getTauMinus(m_production_particles)){
+    Log::Error()<<"tau+ or tau- not found in Z decay"<< endl;
+    return 0;
+  }
+
+  //NOW CHECK FOR THE DIFFICULT EVENTS:
+  //case f1 + f2 + f3 -> Z -> tau tau
+  //case f1 + f2 -> Z + f3, Z-> tau tau  or  f1 + f2 -> tau tau f3
+  //case f1 + f2 -> Z -> tau tau gamma 
+  if(m_grandmothers.size()>2 || 
+     (m_grandmothers.at(0)->getDaughters().size()>1 && m_mother_exists==true) || 
+     m_production_particles.size() > 2){
+
+    //make a vector of the extra grandmother particles
+    vector<TauolaParticle*> extra_grandmothers;
+    for(int i=0; i<(int) m_grandmothers.size(); i++){
+      //  temp_grandmothers.push_back(m_grandmothers.at(i));
+      if(m_grandmothers.at(i)!=getGrandmotherPlus(m_grandmothers)&&
+         m_grandmothers.at(i)!=getGrandmotherMinus(m_grandmothers))
+         extra_grandmothers.push_back(m_grandmothers.at(i));
+    }
+    
+    //make a vector of the tau siblings
+    //and copy all the production particle vector.
+    vector<TauolaParticle*> extra_tau_siblings;
+    vector<TauolaParticle*> temp_production_particles;
+    for(int i=0; i<(int) m_production_particles.size(); i++){
+      if(m_production_particles.at(i)!=getTauPlus(m_production_particles)&&
+         m_production_particles.at(i)!=getTauMinus(m_production_particles))
+         extra_tau_siblings.push_back(m_production_particles.at(i));
+    }
+
+    //make a vector of the Z's sibling
+    vector<TauolaParticle*> extra_Z_siblings;
+    for(int i=0; m_mother_exists && i<(int) m_grandmothers.at(0)->getDaughters().size(); i++){
+      if(m_grandmothers.at(0)->getDaughters().at(i)->getPdgID()!=TauolaParticle::Z0)
+         extra_Z_siblings.push_back(m_grandmothers.at(0)->getDaughters().at(i));
+    }
+
+    //make temporary particles for the effect beams
+    //and copy into a vector
+    std::vector<TauolaParticle*> effective_taus;
+    effective_taus.push_back(getTauPlus(m_production_particles)->clone());
+    effective_taus.push_back(getTauMinus(m_production_particles)->clone());
+
+    //copy grandmothers into the m_grandmothers vector since we want this to be perminante.
+    TauolaParticle * g1 = getGrandmotherPlus(m_grandmothers)->clone();
+    TauolaParticle * g2 = getGrandmotherMinus(m_grandmothers)->clone();
+    m_grandmothers.clear();
+    m_grandmothers.push_back(g1);
+    m_grandmothers.push_back(g2);
+
+    //loop over extra grandmothers
+    for(int i=0; i<(int) extra_grandmothers.size(); i++)
+      addToBeam(extra_grandmothers.at(i),&m_grandmothers,0); 
+
+    //loop over siblings to the Z
+    for(int i=0; i<(int) extra_Z_siblings.size(); i++)
+      addToBeam(extra_Z_siblings.at(i),0,&m_grandmothers); 
+
+    //loop over siblings of the taus
+    for(int i=0; i<(int) extra_tau_siblings.size() ; i++){
+      if(m_mother_exists)
+        addToBeam(extra_tau_siblings.at(i),&effective_taus,0);
+      else
+        addToBeam(extra_tau_siblings.at(i),&effective_taus,&m_grandmothers);
+    }
+    //And we are finish making the effective income and outgoing beams
+
+    TauolaParticle * temp_mother = makeTemporaryMother(effective_taus);
+    *invariant_mass_squared = pow(temp_mother->getMass(),2);
+
+   //now we are ready to do the boosting, calculate the angle
+    //between incoming and outgoing, and get the polarisation of the Z
+
+    double angle1,angle2,angle3;
+    boostFromLabToTauPairFrame(&angle1, &angle2, &angle3, temp_mother,
+                               m_grandmothers, effective_taus);
+
+    /*double theta1 = -getGrandmotherPlus(m_grandmothers)->getRotationAngle(TauolaParticle::Y_AXIS);
+    double theta2 = -(M_PI+getGrandmotherMinus(m_grandmothers)->getRotationAngle(TauolaParticle::Y_AXIS));
+    *cosTheta = cos((theta1+theta2)/2.0); //just average the angles for now.*/
+
+    TauolaParticle *tM=getTauPlus(effective_taus);
+    TauolaParticle *gM=getGrandmotherPlus(m_grandmothers);
+
+    double costheta1=(tM->getPx()*gM->getPx()+tM->getPy()*gM->getPy()+tM->getPz()*gM->getPz())/
+                 sqrt(tM->getPx()*tM->getPx()+tM->getPy()*tM->getPy()+tM->getPz()*tM->getPz())/
+                 sqrt(gM->getPx()*gM->getPx()+gM->getPy()*gM->getPy()+gM->getPz()*gM->getPz());
+    tM=getTauMinus(effective_taus);
+    gM=getGrandmotherMinus(m_grandmothers);
+
+    double costheta2=(tM->getPx()*gM->getPx()+tM->getPy()*gM->getPy()+tM->getPz()*gM->getPz())/
+                 sqrt(tM->getPx()*tM->getPx()+tM->getPy()*tM->getPy()+tM->getPz()*tM->getPz())/
+                 sqrt(gM->getPx()*gM->getPx()+gM->getPy()*gM->getPy()+gM->getPz()*gM->getPz());
+    double sintheta1 = sqrt(1-costheta1*costheta1);
+    double sintheta2 = sqrt(1-costheta2*costheta2);
+    double avg = (costheta1*sintheta2+costheta2*sintheta1)/(sintheta1+sintheta2);
+
+    *cosTheta = avg;
+
+    *incoming_pdg_id = getGrandmotherPlus(m_grandmothers)->getPdgID();
+
+    if(abs(*incoming_pdg_id)==21 || abs(*incoming_pdg_id)==22)
+    {
+        *incoming_pdg_id = -getGrandmotherMinus(m_grandmothers)->getPdgID();
+        //cout<<"INFO:\tgluon pdg id changed!"<<endl;
+    }
+
+    if( abs(*incoming_pdg_id)> 8  &&
+        abs(*incoming_pdg_id)!=11 &&
+        abs(*incoming_pdg_id)!=13 &&
+        abs(*incoming_pdg_id)!=15 )
+    {
+      Log::Error()<<"Second class disaster: incoming_pdg_id = "<<*incoming_pdg_id<<endl;
+      
+      // Return avarage Z polarization
+      *incoming_pdg_id = TauolaParticle::ELECTRON;
+      *cosTheta = 0 ;
+      *outgoing_pdg_id = TauolaParticle::TAU_PLUS;
+      
+      return 1-plzap0_(incoming_pdg_id,outgoing_pdg_id, 
+                       invariant_mass_squared, cosTheta);
+    }
+
+    boostFromTauPairToLabFrame(angle1, angle2, angle3, temp_mother,
+                               m_grandmothers, effective_taus);
+    setBornKinematics(*incoming_pdg_id, *outgoing_pdg_id, *invariant_mass_squared, *cosTheta); // store for debugging    
+    return 1-plzap0_(incoming_pdg_id,outgoing_pdg_id, invariant_mass_squared, cosTheta);
+
+  }
+  //REGULAR CASE:
+  //f1 + f2 -> Z -> tau+ tau - or f1 f2 -> tau+ tau-
+  //This includes Z -> tau tau, tau -> gamma tau?
+
+  double angle1,angle2,angle3;
+  boostFromLabToTauPairFrame(&angle1, &angle2, &angle3,
+                             m_mother,m_grandmothers,m_production_particles);
+  TauolaParticle *tM=getTauPlus(m_production_particles);
+  TauolaParticle *gM=getGrandmotherPlus(m_grandmothers);
+  double costheta1=(tM->getPx()*gM->getPx()+tM->getPy()*gM->getPy()+tM->getPz()*gM->getPz())/
+               sqrt(tM->getPx()*tM->getPx()+tM->getPy()*tM->getPy()+tM->getPz()*tM->getPz())/
+               sqrt(gM->getPx()*gM->getPx()+gM->getPy()*gM->getPy()+gM->getPz()*gM->getPz());
+
+  tM=getTauMinus(m_production_particles);
+  gM=getGrandmotherMinus(m_grandmothers);
+
+  double costheta2=(tM->getPx()*gM->getPx()+tM->getPy()*gM->getPy()+tM->getPz()*gM->getPz())/
+               sqrt(tM->getPx()*tM->getPx()+tM->getPy()*tM->getPy()+tM->getPz()*tM->getPz())/
+               sqrt(gM->getPx()*gM->getPx()+gM->getPy()*gM->getPy()+gM->getPz()*gM->getPz());
+
+  double sintheta1 = sqrt(1-costheta1*costheta1);
+  double sintheta2 = sqrt(1-costheta2*costheta2);
+
+  double avg       = (costheta1*sintheta2+costheta2*sintheta1)/(sintheta1+sintheta2);
+
+  *cosTheta = avg;
+
+  *incoming_pdg_id = getGrandmotherPlus(m_grandmothers)->getPdgID();
+
+  boostFromTauPairToLabFrame(angle1, angle2, angle3,
+                             m_mother,m_grandmothers,m_production_particles);
+
+  setBornKinematics(*incoming_pdg_id, *outgoing_pdg_id, *invariant_mass_squared, *cosTheta); // store for debugging
+  return 1-plzap0_(incoming_pdg_id,outgoing_pdg_id, invariant_mass_squared, cosTheta);
+      // return 0.5 - (-0.12 + 0.12*cosTheta)/2;
+}
+
+/** WHERE WE CALCULATE THE EFFECTIVE BEAMS **/
+/** This is where we decide which particle should be added into which beam,
+    add it and change the flavour if necessary. candidates_same
+    are on the same side of the vertex as the particle. This is needed
+    for negative the particle 4-momentum. **/
+void TauolaParticlePair::addToBeam(TauolaParticle * pcle,
+                                   std::vector<TauolaParticle*> *candidates_same,
+                                   std::vector<TauolaParticle*> *candidates_opp){
+
+
+  double s=0.,o=-10.;
+  TauolaParticle * s_beam = NULL;
+  TauolaParticle * o_beam = NULL;
+
+  if(candidates_same){
+    double s0 =1.0/getVirtuality(pcle,candidates_same->at(0),false);
+    double s1 = 1.0/getVirtuality(pcle,candidates_same->at(1),false);
+    if(s0>s1){
+      s=s0;
+      s_beam = candidates_same->at(0);
+    }
+    else{
+      s=s1;
+      s_beam = candidates_same->at(1);
+    }
+  }
+  if(candidates_opp){ 
+
+    double o0 =1.0/getVirtuality(pcle,candidates_opp->at(0),true);
+    double o1 = 1.0/getVirtuality(pcle,candidates_opp->at(1),true);
+    if(o0>o1){
+      o=o0;
+      o_beam = candidates_opp->at(0);
+    }
+    else{
+      o=o1;
+      o_beam = candidates_opp->at(1);
+    }
+  }
+
+  if(s>o)
+  {
+    s_beam->add(pcle);
+    int pdg1 = pcle->getPdgID();
+    int pdg2 = s_beam->getPdgID();
+    if(abs(pdg2)==15) return;
+    if((abs(pdg2)==21 || abs(pdg2)==22) && abs(pdg1)<17 && abs(pdg1)!=10 && abs(pdg1)!=9) s_beam->setPdgID( pdg1);
+  }
+  else
+  {
+    o_beam->subtract(pcle);
+    int pdg1 = pcle->getPdgID();
+    int pdg2 = o_beam->getPdgID();
+    if((abs(pdg2)==21 || abs(pdg2)==22) && abs(pdg1)<17 && abs(pdg1)!=10 && abs(pdg1)!=9) o_beam->setPdgID(-pdg1);
+  }
+
+  //should we also do something with the flavours??
+  
+} 
+
+double TauolaParticlePair::getVirtuality(TauolaParticle * p1, TauolaParticle*p2, bool flip){
+
+  //if one particle in a gluon and the other a lepton
+  if((p1->getPdgID()==TauolaParticle::GLUON&&abs(p2->getPdgID())>10&&abs(p2->getPdgID())<20) ||
+     (p2->getPdgID()==TauolaParticle::GLUON&&abs(p1->getPdgID())>10&&abs(p1->getPdgID())<20))
+    return -1;
+
+  //add some others...
+
+  //otherwise we calculate the virtuality:
+  double kp = p1->getE()*p2->getE() - p1->getPx()*p2->getPx() 
+    - p1->getPy()*p2->getPy() - p1->getPz()*p2->getPz();
+  if(flip) // Note that we have 1/(p1+p2)^2  or 1/(p1-p2)^2 and p2^2=0
+    kp = kp - p1->getMass()*p1->getMass();
+  double q = 1;
+  if(p1->getPdgID()==TauolaParticle::GAMMA){
+    if(abs(p2->getPdgID())==TauolaParticle::UP || 
+       abs(p2->getPdgID())==TauolaParticle::CHARM ||
+       abs(p2->getPdgID())==TauolaParticle::TOP)
+      q=2.0/3.0;
+    if(abs(p2->getPdgID())==TauolaParticle::DOWN || 
+       abs(p2->getPdgID())==TauolaParticle::STRANGE ||
+       abs(p2->getPdgID())==TauolaParticle::BOTTOM)
+      q=1.0/3.0;
+  }
+  if(p2->getPdgID()==TauolaParticle::GAMMA){
+    if(abs(p1->getPdgID())==TauolaParticle::UP || 
+       abs(p1->getPdgID())==TauolaParticle::CHARM ||
+       abs(p1->getPdgID())==TauolaParticle::TOP)
+      q=2.0/3.0;
+    if(abs(p1->getPdgID())==TauolaParticle::DOWN || 
+       abs(p1->getPdgID())==TauolaParticle::STRANGE ||
+       abs(p1->getPdgID())==TauolaParticle::BOTTOM)
+      q=1.0/3.0;
+  }
+
+  return fabs(2*kp)/q;
+}
+
+/***********************************************************
+ **  TauolaParticlePair::decayTauPair().
+ **  Generate tau decay
+ ************************************************************/
+void TauolaParticlePair::decayTauPair(){
+
+  //initalize h vectors in case the partner is not a tau
+  double h_tau_minus[4]={2,0,0,0}; //2 used to compensate for maximum weight
+  double h_tau_plus[4]={2,0,0,0};  //in the case when there is only 1 tau
+    
+  TauolaParticle * tau_minus = getTauMinus(m_final_particles);
+  TauolaParticle * tau_plus = getTauPlus(m_final_particles);
+
+  //now calculate the spin weight
+  for(double weight=0; weight < Tauola::randomDouble();){
+    //call tauola decay and get polarimetric vectors
+    if(tau_minus){
+      Tauola::redefineTauMinusProperties(tau_minus);
+      tau_minus->decay();
+      h_tau_minus[0]=1;
+      h_tau_minus[1]=tau_minus->getPolarimetricX();
+      h_tau_minus[2]=tau_minus->getPolarimetricY();
+      h_tau_minus[3]=tau_minus->getPolarimetricZ();
+    }
+    if(tau_plus){
+      Tauola::redefineTauPlusProperties(tau_plus);
+      tau_plus->decay();
+      h_tau_plus[0]=1;
+      h_tau_plus[1]=tau_plus->getPolarimetricX();
+      h_tau_plus[2]=tau_plus->getPolarimetricY();
+      h_tau_plus[3]=tau_plus->getPolarimetricZ();
+    }
+    //    cout<<" tau? tau? "<<  tau_plus->getPdgID()<<"  "<<  tau_minus->getPdgID()<<endl; 
+    //    cout<<" przy uzyciu rrrRRRrrrRRR "<< m_R[0][0]<<" " <<m_R[3][3]<<" " << m_R[0][3]<<" " <<m_R[3][0] <<endl;
+    //calculate the weight
+    weight=0;
+    for(int i =0; i<4; i++){
+      for(int j=0; j<4; j++)
+        weight+=m_R[i][j]*h_tau_minus[i]*h_tau_plus[j];
+    }
+    weight = weight/4.0;
+  }
+  double wthel[4]={0};
+  wthel[0]=(h_tau_minus[0]+h_tau_minus[3])*(h_tau_plus[0]+h_tau_plus[3])*(m_R[0][0]+m_R[0][3]+m_R[3][0]+m_R[3][3]);
+  wthel[1]=(h_tau_minus[0]+h_tau_minus[3])*(h_tau_plus[0]-h_tau_plus[3])*(m_R[0][0]-m_R[0][3]+m_R[3][0]-m_R[3][3]);
+  wthel[2]=(h_tau_minus[0]-h_tau_minus[3])*(h_tau_plus[0]+h_tau_plus[3])*(m_R[0][0]+m_R[0][3]-m_R[3][0]-m_R[3][3]);
+  wthel[3]=(h_tau_minus[0]-h_tau_minus[3])*(h_tau_plus[0]-h_tau_plus[3])*(m_R[0][0]-m_R[0][3]-m_R[3][0]+m_R[3][3]);
+
+  double rn=Tauola::randomDouble();
+  if (rn>(wthel[0]+wthel[1]+wthel[2])/(wthel[0]+wthel[1]+wthel[2]+wthel[3])) Tauola::setHelicities(-1,-1);
+  else if (rn>(wthel[0]+wthel[1])    /(wthel[0]+wthel[1]+wthel[2]+wthel[3])) Tauola::setHelicities(-1,+1);
+  else if (rn>(wthel[0])             /(wthel[0]+wthel[1]+wthel[2]+wthel[3])) Tauola::setHelicities( 1,-1);
+  else                                                                       Tauola::setHelicities( 1, 1);
+
+
+   
+
+  //boost into the frame used to define the density matrices
+  //and add the tau's new daughters.
+
+  double angle1,angle2,angle3;
+  TauolaParticle * mum = makeTemporaryMother(m_final_particles);
+
+  if(!Tauola::isUsingDecayOneBoost())
+       boostFromLabToTauPairFrame(&angle1, &angle2, &angle3,
+                                  mum,m_grandmothers,m_final_particles);
+
+  //add the accepted decay into the event record
+  if(tau_plus)
+    tau_plus->addDecayToEventRecord();
+  if(tau_minus)
+    tau_minus->addDecayToEventRecord();
+
+  if(!Tauola::isUsingDecayOneBoost())
+       boostFromTauPairToLabFrame(angle1,angle2,angle3,
+                                  mum,m_grandmothers,m_final_particles);
+
+  // Apply final decay modification, once taus are in lab frame. 
+  // At present 28.02.11,  vertex position shift (in HepMC) is implemented.
+  // Thanks Sho Iwamoto for feedback 
+  if(tau_plus)
+    tau_plus->decayEndgame();
+  if(tau_minus)
+    tau_minus->decayEndgame();
+
+}
+
+/***********************************************************
+ **  Below are the methods used for boosting and rotating 
+ **  into another reference frame.
+ ************************************************************/
+
+/** Step 1. (Transformation A). Any modification to this method also requires a modification
+    to the inverse method boostFromTauPairFrameToLab (transformation A^-1).*/
+void TauolaParticlePair::boostFromLabToTauPairFrame(double * rotation_angle1, 
+                                                    double * rotation_angle2,
+                                                    double * rotation_angle3,
+                                                    TauolaParticle * mother,
+                                                    vector<TauolaParticle *> grandmothers,
+                                                    vector<TauolaParticle *> taus
+                                                    ){ //in positive z axis (+1) //or negative z axis (-1)
+
+  /** boost all gradmothers and daughters (taus, neutrinos, etc,) 
+       to the mothers rest frame */
+
+  for(int i=0; i< (int) grandmothers.size(); i++)
+    grandmothers.at(i)->boostToRestFrame(mother);
+  //If taus.size()==1 then taus[1] is the same as mum. Disaster to be avoided.
+  if(taus.size()!=1)
+    for(int i=0; i< (int) taus.size(); i++){
+      taus.at(i)->boostToRestFrame(mother);
+      // NOTE: Following line has no effect in release examples
+      //       because taus don't have daughters at this step
+      taus.at(i)->boostDaughtersToRestFrame(mother);
+    }
+
+  /** rotate all particles so taus are on the z axis */
+  if(getTauPlus(taus)){ //if there's a tau+ use this to get the rotation angle
+    *rotation_angle1 = getTauPlus(taus)->getRotationAngle(TauolaParticle::Y_AXIS);
+    rotateSystem(grandmothers,taus,*rotation_angle1,TauolaParticle::Y_AXIS);
+    *rotation_angle2 = getTauPlus(taus)->getRotationAngle(TauolaParticle::X_AXIS);
+    rotateSystem(grandmothers,taus,*rotation_angle2,TauolaParticle::X_AXIS);
+  }
+  else{ //otherwise use the tau-
+    *rotation_angle1 = M_PI+getTauMinus(taus)->getRotationAngle(TauolaParticle::Y_AXIS);
+    rotateSystem(grandmothers,taus,*rotation_angle1,TauolaParticle::Y_AXIS);
+    *rotation_angle2 = M_PI+getTauMinus(taus)->getRotationAngle(TauolaParticle::X_AXIS);
+    rotateSystem(grandmothers,taus,*rotation_angle2,TauolaParticle::X_AXIS);
+  }
+
+  //now rotate incoming beams so they are aligned in the y-z plane
+  if(grandmothers.size()<1){ //if there are no grandmothers
+    *rotation_angle3 = 0;
+    return;
+  }
+
+  //the first grandmother will have a positive y component
+  if(getGrandmotherPlus(grandmothers))
+    *rotation_angle3 = getGrandmotherPlus(grandmothers)->getRotationAngle(TauolaParticle::X_AXIS,TauolaParticle::Y_AXIS);
+  else
+    *rotation_angle3 = M_PI+getGrandmotherMinus(grandmothers)->getRotationAngle(TauolaParticle::X_AXIS,TauolaParticle::Y_AXIS);
+
+  rotateSystem(grandmothers,taus,*rotation_angle3,TauolaParticle::X_AXIS,TauolaParticle::Y_AXIS);
+
+}
+
+/** Reverses boostFromLabtoMotherFrame. The three rotation angle must be provided.
+    Any modification to this would require a modification to boostFromLabToTauPairFrame
+    since this is the inverse transformation (Step 2: A^-1). */
+void TauolaParticlePair::boostFromTauPairToLabFrame(double rotation_angle1, 
+                                                    double rotation_angle2,
+                                                    double rotation_angle3,
+                                                    TauolaParticle * mother,
+                                                    vector<TauolaParticle *> grandmothers,
+                                                    vector<TauolaParticle *> taus){
+
+
+  if(mother==0) //if there are no mothers
+    return;
+
+  //rotate grand mothers back away from the y-z plane
+  rotateSystem(grandmothers,taus,-rotation_angle3, TauolaParticle::X_AXIS,TauolaParticle::Y_AXIS);
+
+  //rotate all so that taus are no longer on the z axis
+  rotateSystem(grandmothers,taus,-rotation_angle2,TauolaParticle::X_AXIS);
+  rotateSystem(grandmothers,taus,-rotation_angle1,TauolaParticle::Y_AXIS);
+
+  /*** boost grandmothers and daughters (taus) back into the lab frame */
+  for(int i=0; i< (int) grandmothers.size(); i++)
+    grandmothers.at(i)->boostFromRestFrame(mother);
+  //If taus.size()==1 then taus[1] is the same as mum. Disaster to be avoided.
+  if(taus.size()!=1)
+    for(int i=0; i< (int) taus.size(); i++){
+      taus.at(i)->boostFromRestFrame(mother);
+      taus.at(i)->boostDaughtersFromRestFrame(mother);
+    }
+}
+
+void TauolaParticlePair::rotateSystem(vector<TauolaParticle *> grandmothers,
+                                      vector<TauolaParticle *> taus,
+                                      double theta, int axis, int axis2){
+  for(int i=0; i< (int) grandmothers.size(); i++)
+    grandmothers.at(i)->rotate(axis,theta,axis2);
+  for(int i=0; i< (int) taus.size(); i++){
+    taus.at(i)->rotate(axis,theta,axis2);
+    taus.at(i)->rotateDaughters(axis,theta,axis2);
+  }
+}
+
+
+
+/***********************************************************
+   Some extra useful methods
+************************************************************/
+TauolaParticle * TauolaParticlePair::makeTemporaryMother(vector<TauolaParticle *> taus){
+
+    //calculate mothers 4-momentum based on the daughters.
+    double e=0;
+    double px=0;
+    double py=0;
+    double pz=0;
+    
+    bool tau_plus = false;
+    bool tau_minus = false;
+    bool tau_neutrino = false;
+    bool tau_antineutrino = false;
+
+    for(int d=0; d < (int) taus.size(); d++){
+      TauolaParticle * daughter = taus.at(d);
+      e+=daughter->getE();
+      px+=daughter->getPx();
+      py+=daughter->getPy();
+      pz+=daughter->getPz();
+      switch(daughter->getPdgID()){
+         case TauolaParticle::TAU_PLUS:
+           tau_plus=true;
+           break;
+         case TauolaParticle::TAU_MINUS:
+           tau_minus=true;
+           break;
+         case TauolaParticle::TAU_NEUTRINO:
+           tau_neutrino=true;
+           break;
+         case TauolaParticle::TAU_ANTINEUTRINO:
+           tau_antineutrino=true;
+           break;
+      }
+    }
+    double m = e*e-px*px-py*py-pz*pz;
+    if(m<0)
+      m= -sqrt(-m);
+    else
+      m=sqrt(m);
+
+    //look for mothers type:
+    int pdg=0;
+
+    //Assume Z
+    if(tau_plus&&tau_minus)
+      pdg=TauolaParticle::Z0 ;
+
+    //Assume W+
+    if(tau_plus&&tau_neutrino)
+      pdg=TauolaParticle::W_PLUS;
+
+    //Assume W-
+    if(tau_minus&&tau_antineutrino)
+      pdg=TauolaParticle::W_MINUS;
+
+    // now make the mother
+    return taus.at(0)->createNewParticle(pdg,2,m,px,py,pz,e);
+}
+
+// see if "particle" is one of the final taus in this tau pair 
+// (based on particle barcode)
+// NOTE: Not executed by release examples
+bool TauolaParticlePair::contains(TauolaParticle * particle){
+
+  for(int i=0; i< (int) m_final_particles.size(); i++){
+    if(m_final_particles.at(i)->getBarcode()==particle->getBarcode())
+      return true;
+  } 
+  return false;
+}
+
+TauolaParticle * TauolaParticlePair::getTauMinus(vector<TauolaParticle*> taus){
+  for(int i=0; i< (int) taus.size(); i++){
+    if(taus.at(i)->getPdgID()==TauolaParticle::TAU_MINUS) 
+      return taus.at(i);
+  }
+  return 0;
+}
+
+TauolaParticle * TauolaParticlePair::getTauPlus(vector<TauolaParticle*> taus){
+  for(int i=0; i< (int) taus.size(); i++){
+    if(taus.at(i)->getPdgID()==TauolaParticle::TAU_PLUS)
+      return taus.at(i);
+  }
+  return 0;
+}
+
+TauolaParticle * TauolaParticlePair::getGrandmotherPlus(vector<TauolaParticle*> grandmothers){
+  //choose based on energy if there are more than one??
+  double e = -1e30;
+  int index = -1;
+  for(int i=0; i< (int) grandmothers.size(); i++){
+    if( (grandmothers.at(i)->getPdgID()<0 && grandmothers.at(i)->getPdgID()>-9) ||
+       grandmothers.at(i)->getPdgID()== TauolaParticle::POSITRON||
+       grandmothers.at(i)->getPdgID()== TauolaParticle::MUON_PLUS){
+      if(e<grandmothers.at(i)->getE()){
+        e=grandmothers.at(i)->getE();
+        index=i;
+      }
+    }
+  }
+  if(index==-1)
+  {
+    for(int i=0; i< (int) grandmothers.size(); i++)
+    {
+      if(grandmothers.at(i)->getPdgID()==21 || grandmothers.at(i)->getPdgID()==22)
+      {
+        index=i;
+        e=grandmothers.at(i)->getE();
+        break;
+      }
+    }
+  }
+  if(index==-1) index=0;
+  if(e==0)
+  {
+    grandmothers.at(index)->print();
+    return 0;
+  }
+  else
+    return grandmothers.at(index);
+}
+
+TauolaParticle * TauolaParticlePair::getGrandmotherMinus(vector<TauolaParticle*> grandmothers){
+  //choose based on energy if there are more than one??
+  double e = -1e30;
+  int index = -1;
+  for(int i=0; i< (int) grandmothers.size(); i++){
+    if( (grandmothers.at(i)->getPdgID()>0 && grandmothers.at(i)->getPdgID()<9) ||
+       grandmothers.at(i)->getPdgID()== TauolaParticle::ELECTRON||
+       grandmothers.at(i)->getPdgID()== TauolaParticle::MUON_MINUS){
+      if(e<grandmothers.at(i)->getE()){
+        e=grandmothers.at(i)->getE();
+        index=i;
+      }
+    }
+  }
+  if(index==-1)
+  {
+    for(int i=(int) grandmothers.size()-1; i>=0 ; i--)
+    {
+      if(grandmothers.at(i)->getPdgID()==21||grandmothers.at(i)->getPdgID()==22)
+      {
+        index=i;
+        e=grandmothers.at(i)->getE();
+        break;
+      }
+    }
+  }
+  if(index==-1) index=0;
+  if(e==0)
+    return 0;
+  else
+    return grandmothers.at(index);
+}
+
+
+   
+void TauolaParticlePair::print(){
+
+  Log::RedirectOutput(Log::Info());
+  std::cout << "Daughters final:" << std::endl;
+  for(int i=0; i< (int) m_final_particles.size(); i++)
+    m_final_particles.at(i)->print();
+
+
+  std::cout << "Daughters at production:" << std::endl;
+  for(int i=0; i< (int) m_production_particles.size(); i++)
+    m_production_particles.at(i)->print();
+
+
+  std::cout << "Mother particle: " << std::endl;
+  if(m_mother)
+    m_mother->print();
+
+  std::cout << "Grandmother particles: " << std::endl;
+  for(int i=0; i< (int) m_grandmothers.size(); i++)
+    m_grandmothers.at(i)->print();
+
+  Log::RevertOutput();
+}
+
+
+void TauolaParticlePair::checkMomentumConservation(){
+
+  for(int i=0; i< (int) m_final_particles.size(); i++)
+    m_final_particles.at(i)->checkMomentumConservation();
+
+  for(int i=0; i< (int) m_production_particles.size(); i++)
+    m_production_particles.at(i)->checkMomentumConservation();
+
+  if(m_mother)
+    m_mother->checkMomentumConservation();
+
+  for(int i=0; i< (int) m_grandmothers.size(); i++)
+    m_grandmothers.at(i)->checkMomentumConservation();
+
+}
+
+void TauolaParticlePair::recalculateRij(int incoming_pdg_id, int outgoing_pdg_id, double invariant_mass_squared, double cosTheta){
+
+  if (abs(outgoing_pdg_id)!=15) 
+  {
+    Log::Warning()<<"interface was not used for taus pdg id="<<outgoing_pdg_id<<endl;
+    return;
+  }
+
+  double (*T) [Tauola::NCOS][4][4] = NULL;
+  double (*Tw) [Tauola::NCOS]      = NULL;
+  double (*Tw0)[Tauola::NCOS]      = NULL;
+  double smin = 0.0;                       // Tauola::sminA;
+  double smax = 0.0;                       // Tauola::smaxA;
+  double step = 0.0;                       // (smaxl-sminl)/(Tauola::NS1-1);
+
+  // Select table for appropriate incoming particles
+  switch(abs(incoming_pdg_id)){
+  case 11: 
+    if(invariant_mass_squared<Tauola::smaxB && invariant_mass_squared>Tauola::sminB)
+    { 
+      T    = Tauola::table11B; 
+      Tw   = Tauola::wtable11B; 
+      Tw0  = Tauola::w0table11B; 
+      smin = Tauola::sminB; 
+      smax = Tauola::smaxB;
+      step = (smax-smin)/(Tauola::NS2-1); 
+    }
+    else if (invariant_mass_squared<Tauola::smaxC && invariant_mass_squared>Tauola::sminC)
+    { 
+      T    = Tauola::table11C; 
+      Tw   = Tauola::wtable11C; 
+      Tw0  = Tauola::w0table11C; 
+      smin = Tauola::sminC; 
+      smax = Tauola::smaxC;
+      step = (smax-smin)/(Tauola::NS3-1); 
+    }
+    else
+    { 
+      T    = Tauola::table11A; 
+      Tw   = Tauola::wtable11A; 
+      Tw0  = Tauola::w0table11A; 
+      smin = Tauola::sminA; 
+      smax = Tauola::smaxA;
+      step = (smax-smin)/(Tauola::NS1-1); 
+    }
+    break;
+
+  // NOTE: Use the same tables for 1, 3 and 5
+  case  1:
+  case  3:
+  case  5: 
+    if(invariant_mass_squared<Tauola::smaxB && invariant_mass_squared>Tauola::sminB)
+    { 
+      T    = Tauola::table1B; 
+      Tw   = Tauola::wtable1B; 
+      Tw0  = Tauola::w0table1B; 
+      smin = Tauola::sminB; 
+      smax = Tauola::smaxB;
+      step = (smax-smin)/(Tauola::NS2-1); 
+    }
+    else if (invariant_mass_squared<Tauola::smaxC && invariant_mass_squared>Tauola::sminC)
+    { 
+      T    = Tauola::table1C; 
+      Tw   = Tauola::wtable1C; 
+      Tw0  = Tauola::w0table1C; 
+      smin = Tauola::sminC; 
+      smax = Tauola::smaxC;
+      step = (smax-smin)/(Tauola::NS3-1); 
+    }
+    else
+    { 
+      T    = Tauola::table1A; 
+      Tw   = Tauola::wtable1A; 
+      Tw0  = Tauola::w0table1A; 
+      smin = Tauola::sminA; 
+      smax = Tauola::smaxA;
+      step = (smax-smin)/(Tauola::NS1-1); 
+    }
+    break;
+
+  // NOTE: Use the same tables for 2 and 4
+  case  2:
+  case  4: 
+    if(invariant_mass_squared<Tauola::smaxB && invariant_mass_squared>Tauola::sminB)
+    { 
+      T    = Tauola::table2B; 
+      Tw   = Tauola::wtable2B; 
+      Tw0  = Tauola::w0table2B; 
+      smin = Tauola::sminB; 
+      smax = Tauola::smaxB;
+      step = (smax-smin)/(Tauola::NS2-1); 
+    }
+    else if (invariant_mass_squared<Tauola::smaxC && invariant_mass_squared>Tauola::sminC)
+    { 
+      T    = Tauola::table2C; 
+      Tw   = Tauola::wtable2C;
+      Tw0  = Tauola::w0table2C;
+      smin = Tauola::sminC; 
+      smax = Tauola::smaxC;
+      step = (smax-smin)/(Tauola::NS3-1); 
+    }
+    else
+    { 
+      T    = Tauola::table2A; 
+      Tw   = Tauola::wtable2A;
+      Tw0  = Tauola::w0table2A;
+      smin = Tauola::sminA; 
+      smax = Tauola::smaxA;
+      step = (smax-smin)/(Tauola::NS1-1); 
+    }
+    break;
+
+  default: 
+     Log::Warning()<<"interface was not used for proper beams pdg id="<<incoming_pdg_id<<endl; 
+     return;
+  }
+
+  // Check if we have found a table for matrix recalculation
+  if (T[0][0][0][0]<0.5) return;
+
+  // If mass is too small
+  if (invariant_mass_squared <= exp(Tauola::sminA)){
+    double mta   = 1.777; 
+    double cosf  = cosTheta;
+    double s     = invariant_mass_squared;
+    double sinf  = sqrt(1-cosf*cosf);
+    double MM    = sqrt(4e0*mta*mta/s);
+    double xnorm = 1+cosf*cosf + MM*MM*sinf*sinf;
+
+    // Zero matrix
+    for (int i=0;i<4;i++)
+      for (int j=0;j<4;j++)
+        m_R[i][j]=0.0;
+
+    m_R[0][0] = (1+cosf*cosf + MM*MM*sinf*sinf)/xnorm;
+    m_R[1][1] = (-(1- MM*MM)*sinf*sinf)/xnorm;
+    m_R[2][2] = ( (1+ MM*MM)*sinf*sinf)/xnorm;
+    m_R[3][3] = (1+cosf*cosf - MM*MM*sinf*sinf)/xnorm;
+    m_R[2][3] = (2*MM*sinf*cosf)/xnorm;
+    m_R[3][2] = (2*MM*sinf*cosf)/xnorm;
+
+    // Get weights
+    double w  = 1.;
+    double w0 = 1.;
+
+    if     (Tauola::wtable2A[0][0]>0 ) w=Tauola::wtable2A[0][0];
+    else if(Tauola::wtable1A[0][0]>0 ) w=Tauola::wtable1A[0][0];
+    else if(Tauola::wtable11A[0][0]>0) w=Tauola::wtable11A[0][0];
+
+    if     (Tauola::wtable2A[0][0]>0 ) w0=Tauola::w0table2A[0][0];
+    else if(Tauola::wtable1A[0][0]>0 ) w0=Tauola::w0table1A[0][0];
+    else if(Tauola::wtable11A[0][0]>0) w0=Tauola::w0table11A[0][0];
+
+    //    Tauola::setEWwt(w/w0);
+    Tauola::setEWwt(w,w0);
+    return;
+  } // if(mass too small)
+
+  int    x       = 0;
+  double buf     = smin;
+  double remnant = 0.0;
+
+  // Interpolate s
+  if(T==Tauola::table11A || T==Tauola::table1A || T== Tauola::table2A)
+  {
+    while(log(invariant_mass_squared) > buf){
+      x++;
+      buf += (step);
+    }
+    remnant = (log(invariant_mass_squared)-(buf-step))/step;
+  }
+  else
+  {
+    while(invariant_mass_squared > buf){
+      x++;
+      buf += step;
+    }
+    remnant = (invariant_mass_squared-(buf-step))/step;
+  }
+
+  double cmin     = -1.;
+  int    y        = 0;
+  double remnantc = 0.0;
+
+  // Interpolate cosTheta
+  buf = cmin+1./Tauola::NCOS;
+  while(cosTheta > buf){
+    y++;
+    buf+=2./Tauola::NCOS;
+  }
+
+  remnantc = (cosTheta-(buf-2./Tauola::NCOS))/(2./Tauola::NCOS);
+
+  // Special cases at edges - extrapolation
+  bool isUsingExtrapolation = false;
+  if(y >= Tauola::NCOS) { isUsingExtrapolation = true; y = Tauola::NCOS-1; }
+  if(y == 0)            { isUsingExtrapolation = true; y = 1;              }
+
+  // Bilinear interpolation
+  double b11,b21,b12,b22;
+
+  for (int i=0; i<4; i++){
+    for (int j=0; j<4; j++){
+
+      if(isUsingExtrapolation){
+        if(y == 1){
+          b11 = 2*T[x-1][0][i][j] - T[x-1][1][i][j];
+          b21 = 2*T[x][0][i][j]   - T[x][1][i][j];
+          b12 = T[x-1][0][i][j];
+          b22 = T[x][0][i][j];
+        }
+        else{
+          b11 = T[x-1][y][i][j];
+          b21 = T[x][y][i][j];
+          b12 = 2*T[x-1][y][i][j] - T[x-1][y-1][i][j];
+          b22 = 2*T[x][y][i][j]   - T[x][y-1][i][j];
+        }
+      } // if(isUsingExtrapolation)
+      else{
+        b11 = T[x-1][y-1][i][j];
+        b21 = T[x][y-1][i][j];
+        b12 = T[x-1][y][i][j];
+        b22 = T[x][y][i][j];
+      }
+      m_R[i][j] = b11*(1-remnant)*(1-remnantc) + b21*remnant*(1-remnantc)
+                + b12*(1-remnant)*remnantc + b22*remnant*remnantc;
+    } // for(j)
+  } // for(i)
+
+  // Calculate electroweak weights
+  double w,w0;
+
+  if(isUsingExtrapolation){
+    if(y == 1){
+      b11 = 2*Tw[x-1][0] - Tw[x-1][1];
+      b21 = 2*Tw[x][0]   - Tw[x][1];
+      b12 = Tw[x-1][0];
+      b22 = Tw[x][0];
+    }
+    else
+    {
+      b11 = Tw[x-1][y];
+      b21 = Tw[x][y];
+      b12 = 2*Tw[x-1][y] - Tw[x-1][y-1];
+      b22 = 2*Tw[x][y]   - Tw[x][y-1];
+    }
+  } // if(isUsingExtrapolation)
+  else
+  {
+    b11 = Tw[x-1][y-1];
+    b21 = Tw[x][y-1];
+    b12 = Tw[x-1][y];
+    b22 = Tw[x][y];
+  }
+
+  w = b11*(1-remnant)*(1-remnantc) + b21*remnant*(1-remnantc)
+    + b12*(1-remnant)*remnantc + b22*remnant*remnantc;
+
+  if(isUsingExtrapolation){
+    if(y == 1){
+      b11 = 2*Tw0[x-1][0] - Tw0[x-1][1];
+      b21 = 2*Tw0[x][0]   - Tw0[x][1];
+      b12 = Tw0[x-1][0];
+      b22 = Tw0[x][0];
+    }
+    else{
+      b11 = Tw0[x-1][y];
+      b21 = Tw0[x][y];
+      b12 = 2*Tw0[x-1][y] - Tw0[x-1][y-1];
+      b22 = 2*Tw0[x][y]   - Tw0[x][y-1];
+    }
+  } // if (isUsingExtrapolation)
+  else{
+    b11 = Tw0[x-1][y-1];
+    b21 = Tw0[x][y-1];
+    b12 = Tw0[x-1][y];
+    b22 = Tw0[x][y];
+  }
+
+  w0 = b11*(1-remnant)*(1-remnantc) + b21*remnant*(1-remnantc)
+     + b12*(1-remnant)*remnantc     + b22*remnant*remnantc;
+
+  Tauola::setEWwt(w,w0);
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/TauolaParticlePair.h b/TEvtGen/Tauola/TauolaParticlePair.h
new file mode 100644 (file)
index 0000000..e7a0594
--- /dev/null
@@ -0,0 +1,186 @@
+#ifndef _TauolaParticlePair_h_included_
+#define _TauolaParticlePair_h_included_
+
+/**
+ * @class TauolaParticlePair
+ *
+ * @brief Contains two TauolaParticle that are related by 
+ * the same mother. Spin correlations are handled here.
+ *
+ * An object of TauolaParticlePair contains two TauolaParticle
+ * that are related by the same mother. Generally this will be
+ * a tau+ and tau- or a tau and tau neutrino. For the case of
+ * event records that contain multiple instances of the same 
+ * particle. eg. tau -> gamma tau or simply tau -> tau. Both
+ * the tau from the production vertex, and the final tau before
+ * the decay vertex are stored. This allows better handling
+ * of spin correlations. The decay is done in the rest frame of 
+ * the final tau, where as the spin weight is calculated in the
+ * rest frame of the production tau. All spin weights are done
+ * in this class. Please refer to the decayTauPairs() method.
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ */
+
+
+#include <iostream>
+#include <vector>
+#include <math.h>
+#include "TauolaParticle.h"
+
+namespace Tauolapp
+{
+
+class TauolaParticlePair{
+
+ public:
+
+  //needed to access m_R matrix and recalculateRij() function.
+  friend class Plots;
+
+  /** This constructor takes the TauolaParticle and traverse
+      the event structure to find the mother, partner tau or tau 
+      neutrino and assosiated final and production versions.
+      Once a TauolaParticlePair object has been created in this way
+      it is ready to be decayed via decayTauPairs(). */
+  TauolaParticlePair(std::vector<TauolaParticle*> &particle_list);
+
+  /** Call the decay method of each 'final' tau. Then calculate
+      the spin correlation weight from the particles polarimetric 
+      vectors. Decays are accepted or rejected based on the spin 
+      weight. Rejected decays are redecayed. */
+  void decayTauPair();
+
+  /** Does this pair contain the particle "particle". Note: it only
+   checks the "final" particles. */
+  bool contains(TauolaParticle * particle);
+
+  /** Return the tau+ particle */
+  TauolaParticle * getTauPlus(std::vector<TauolaParticle*> particles);
+
+  /** Return the tau- particle */
+  TauolaParticle * getTauMinus(std::vector<TauolaParticle*> particles);
+
+  /** Return the first grandmother of the tau-
+      which is an anti-quark or anti-lepton. */
+  TauolaParticle * getGrandmotherPlus(std::vector<TauolaParticle*> particles);
+
+  /** Return the first grandmother of the tau-
+      which is a quark or lepton. */
+  TauolaParticle * getGrandmotherMinus(std::vector<TauolaParticle*> particles);
+
+  /** Print information about the mother and tau pair (at production and final). */
+  void print();
+
+  /** Check that the 4 momentum in conserved at the verticle of
+      each decayed tau. */
+  void checkMomentumConservation();
+
+ private:
+
+  /** Default constructor is private, so that only friend class can use it. */
+  TauolaParticlePair() {}
+
+  /** Store born variables in Tauola class, so the user can retrieve
+      them using Tauola::getBornKinematics. */
+  static void setBornKinematics(int  incoming_pdg_id, int  outgoing_pdg_id, double  invariant_mass_squared, double  cosTheta);
+
+  /** Pointers to taus (or tau and neutrino) as they
+      are before being decayed. */
+  std::vector<TauolaParticle*> m_final_particles;
+  
+  /** Pointers to taus (or tau and neutrino) as they
+      are after production. */
+  std::vector<TauolaParticle*> m_production_particles;
+  
+  /** Pointer to mothers of the tau pair. */  
+  TauolaParticle* m_mother;
+
+  /** Is there an entry in the event record for the tau pair's mother? */  
+  bool m_mother_exists;
+  
+  /** vector of pointers to the taus grandparents */
+  std::vector<TauolaParticle*> m_grandmothers;
+
+  /** If SANC tables are present, use them to recalculate the matrix Rij. */
+  void recalculateRij(int incoming_pdg_id, int outgoing_pdg_id, double invariant_mass_squared, double cosTheta);
+
+  /** Rotate the whole system using the given angle theta. */
+  void rotateSystem(vector<TauolaParticle *> grandmothers,
+                    vector<TauolaParticle *> taus,
+                    double theta,
+                    int axis, 
+                    int axis2=TauolaParticle::Z_AXIS);
+
+
+  /** Boost the outgoing tau and partner and the incoming grandparents of
+      the tau to the mothers rest frame. The mother is not boosted.
+      The axis are rotated so that the particle given by "z_axis_particle" is aligned
+      on the z-axis. If "alignment" is -1 is will be aligned in the negative z direction.
+      otherwise it is aligned in the positive direction. rotaion_angle(1-3) are
+      returned to allow reversal of the transformation (through the method 
+      boostFromMotherToLabFrame).*/
+  void boostFromLabToTauPairFrame(double * rotation_angle1, 
+                                  double * rotation_angle2,
+                                  double * rotation_angle3,
+                                  TauolaParticle * mother,
+                                  vector<TauolaParticle *> grandmothers,
+                                  vector<TauolaParticle *> taus);
+
+  /** Reverses the transformation of boostFromLabToMothersFrame. **/
+  void boostFromTauPairToLabFrame(double rotation_angle1, 
+                                  double rotation_angle2,
+                                  double rotation_angle3,
+                                  TauolaParticle * mother,
+                                  vector<TauolaParticle *> grandmothers,
+                                  vector<TauolaParticle *> taus);
+    
+  /** The density matric m_R is filled based on the mothers type and kinematics
+      of the event in the mothers rest frame. */
+  void initializeDensityMatrix();
+
+  /** create a particle which m_mother points to. This is based on the
+      daughters 4-momentum and particle type. A Z or W is assumed if the
+      configuration of taus and neutrinos is correct. This particle is not
+      written into the event record, but it used by the fillDenistyMatrix
+      method for spin correlations */
+  TauolaParticle * makeTemporaryMother(vector<TauolaParticle *> taus);
+
+  /**Needs to be changed*/
+  //void ANGULU(int *IDE, int *IDF, double *SVAR, double *COSTHE);
+  /**Needs to be changed*/
+  double getZPolarization(int *incoming_pdg_id,
+                          int *outgoing_pdg_id, 
+                          double *invMass,
+                          double *cosTheta);
+
+  /** Private function, calculates virtuality between two particles. */
+  double getVirtuality(TauolaParticle * p1, TauolaParticle*p2, bool flip);
+
+  /** Add particle to beam. */
+  void addToBeam(TauolaParticle * pcle,
+                 std::vector<TauolaParticle*> * candidates_same,
+                 std::vector<TauolaParticle*> * candidates_opp);
+    
+
+ /** frames in which it is defined are fixed by the methods 
+      boostFromLabToMotherFrame and boostFromMotherToLabFrame.
+      Modification to m_R and boostFrom/ToMotherFrame must be done
+      coherently. */
+  double m_R[4][4]; //density matrix
+};
+
+//Temporary
+//Pz is still calculated using the FORTRAN routine in tauola_extra.f
+//This should be migrated to C++ at some stage.
+extern "C" {
+  extern double plzap0_(int *incoming_pdg_id,
+                        int *outgoing_pdg_id, 
+                        double *invMass,
+                        double *cosTheta);
+}
+
+} // namespace Tauolapp
+#endif  
+
diff --git a/TEvtGen/Tauola/f_Decay.cxx b/TEvtGen/Tauola/f_Decay.cxx
new file mode 100644 (file)
index 0000000..0996e7a
--- /dev/null
@@ -0,0 +1,36 @@
+#include "f_Decay.h"
+
+namespace Tauolapp
+{
+
+void TauolaDecay(int sign_type, double *polx, double* poly, 
+                 double * polz, double * poln){
+
+  taupos_.npa=1; //tau position in particle list
+  taupos_.npb=1;
+
+  double pol[4]={0};
+  dekay_(&sign_type, pol);
+  *polx=pol[0];
+  *poly=pol[1];
+  *polz=pol[2];
+  *poln=pol[3];
+
+  //  std::cout << "Polarimetric: "<<pol[0]<<","<<pol[1]
+  //            <<","<<pol[2]<<","<<pol[3]<<std::endl;
+  
+
+}
+
+void TauolaWriteDecayToEventRecord(int sign_type){
+  taupos_.npa=1; //tau position in particle list
+  taupos_.npb=1;
+
+  double pol[4]={0};
+
+  sign_type+=10;
+  dekay_(&sign_type, pol); //write to event record
+
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/f_Decay.h b/TEvtGen/Tauola/f_Decay.h
new file mode 100644 (file)
index 0000000..0c517ab
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _f_Decay_h_included_
+#define _f_Decay_h_included_
+
+/**
+ * This file contains an interface between the C++ code and TAUOLA
+ * FORTRAN routines for decaying taus. TauolaDecay() should be used
+ * by C++ code. This call the dexay_ or dekay_ routines defined in
+ * tauola.f
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ */
+
+#include <vector>
+#include <iostream>
+
+namespace Tauolapp
+{
+
+extern "C" {
+
+  extern struct{//positions of taus in the LUND common block
+    int npa;
+    int npb;
+  } taupos_;
+
+  //extern void dexay_(int *state, double pol[4]);
+  extern void dekay_(int *state, double pol[4]);
+
+  extern void taupi0_(double pp[4],int *k);
+  extern void tauk0s_(double pp[4],int *k);
+  extern void taueta_(double pp[4],int *k);
+}
+
+/** Invokes DEKAY with "1" or "2" to get the polarization information. */
+void TauolaDecay(int sign_type, double *polx, double *poly,
+                 double *polz, double *poln);
+
+/** Invokes DEKAY with "11" or "12" to produce the decay. */
+void TauolaWriteDecayToEventRecord(int sign_type);
+
+} // namespace Tauolapp
+#endif
diff --git a/TEvtGen/Tauola/f_FilHep.cxx b/TEvtGen/Tauola/f_FilHep.cxx
new file mode 100644 (file)
index 0000000..98ba5fb
--- /dev/null
@@ -0,0 +1,118 @@
+#include "f_FilHep.h"
+#include "Tauola.h"
+#include "Log.h"
+
+namespace Tauolapp
+{
+
+// NOTE: Not executed by release examples
+float sgn( float a){
+  return a/fabs(a);
+}
+
+// NOTE: Not executed by release examples
+void filhepmc_print_details(int * n, int * status, int * pdg_id,
+                            int * mother_first, int * mother_last, 
+                            int * daughter_first, int * daughter_last, 
+                            float p4[4], float * p_inv_mass, bool * photos_flag){
+
+  Log::RedirectOutput(Log::Info());
+  std::cout<<"*******************"<<std::endl;
+  std::cout<<"Particle: "<<*n<<std::endl;
+  std::cout<<"Status: "<<*status<<std::endl;
+  std::cout<<"PDG ID: "<<*pdg_id<<std::endl;
+  std::cout<<"Mothers: "<<*mother_first<<"-"<<*mother_last<<std::endl;
+  std::cout<<"Daughters: "<<*daughter_first<<"-"<<*daughter_last<<std::endl;
+  std::cout<<"4 momentum: "<<p4[0]<<", "<<p4[1]<<", "<<p4[2]<<", "<<p4[3]<<std::endl;
+  std::cout<<"mass: "<<*p_inv_mass<<std::endl;
+  std::cout<<"Photos Flag: "<<*photos_flag<<std::endl;
+  std::cout<<"*******************"<<std::endl;
+  Log::RevertOutput();
+}
+
+
+void filhep_(int * n, int * status, int * pdg_id,
+             int * mother_first, int * mother_last, 
+             int * daughter_first, int * daughter_last, 
+             float p4[4], float * p_inv_mass, bool * photos_flag){
+
+  /**  filhepmc_print_details(n, status, pdg_id,
+                              mother_first, mother_last, 
+                              daughter_first, daughter_last, 
+                              p4, p_inv_mass, photos_flag);**/
+
+  const int TAU_POSITION = 1;
+
+  //Convert relative index's given by tauola to absolute ones:
+  int abs_n=DecayList::getAbsoluteIndex(*n);
+
+  //Create a new particle
+  TauolaParticle * tau_mother = DecayList::getParticle(TAU_POSITION);
+  TauolaParticle * new_particle;
+
+  //  filhepmc_get_vertex(float v4[4]);  // vertex information add it to createNewParticle ...
+
+  new_particle=tau_mother->createNewParticle(*pdg_id,*status,*p_inv_mass,
+                                             p4[0],p4[1],p4[2],p4[3] );
+
+  //boost along Z direction (Z defined as tau boost dir from tauola)
+  if(Tauola::isUsingDecayOneBoost())
+  {
+     Tauola::decayOneBoost(tau_mother,new_particle);
+  }
+  else
+  {
+    if(tau_mother->getP(TauolaParticle::Z_AXIS)>0)
+      new_particle->boostAlongZ(tau_mother->getP(),tau_mother->getE());
+    else
+      new_particle->boostAlongZ(-tau_mother->getP(),tau_mother->getE());
+  }
+
+
+  //Get rotation angles for transformation to lab frame.
+  /**  double theta = tau_mother->getRotationAngle(TauolaParticle::Y_AXIS);
+  tau_mother->rotate(TauolaParticle::Y_AXIS,theta);
+  double phi = tau_mother->getRotationAngle(TauolaParticle::X_AXIS);
+  tau_mother->rotate(TauolaParticle::Y_AXIS,-theta);
+
+  //rotate coordinate system to lab frame.
+  new_particle->rotate(TauolaParticle::X_AXIS,-phi);
+  new_particle->rotate(TauolaParticle::Y_AXIS,-theta);**/
+
+  //Add to list
+  DecayList::updateList(new_particle, abs_n);
+
+  //Get vector of mothers as TauolaParticles
+  vector<TauolaParticle *> mothers;
+  for(int i=*mother_first; i <= *mother_last && *mother_first!=0; i++){
+    i=DecayList::getAbsoluteIndex(i,abs_n);
+    mothers.push_back(DecayList::getParticle(i));
+  }
+
+  //Get vector of daughters as TauolaParticles
+  vector<TauolaParticle *> daughters;
+  for(int i=*daughter_first; i <= *daughter_last && *daughter_first!=0; i++){
+
+    // NOTE: Not executed by release examples
+    //       because daughter_first is always equal to 0
+    i=DecayList::getAbsoluteIndex(i,abs_n);
+    daughters.push_back(DecayList::getParticle(i));
+  }
+
+  //Add particle to event structure
+  new_particle->setMothers(mothers);
+  new_particle->setDaughters(daughters);
+
+}
+
+/** Simplified defintion. Only calculates mass (ams) from 4 momentum(p) */
+void tralo4_(float * kto, float p[4], float q[4], float * ams){
+
+  float tmp = p[3]*p[3] - p[1]*p[1] - p[2]*p[2] - p[0]*p[0];
+
+  if (tmp!=0.0) tmp = tmp/sqrt(fabs(tmp));
+
+  *ams = tmp;
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/f_FilHep.h b/TEvtGen/Tauola/f_FilHep.h
new file mode 100644 (file)
index 0000000..d4ee959
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef _f_FilHep_h_included_
+#define _f_FilHep_h_included_
+
+/**
+ * This file contains an interface between TAUOLA FORTRAN routines 
+ * and the C++ event. These methods, are defined so they can be called
+ * by tauola (in tauola.f). They will never be called by the C++ code. 
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <iostream>
+#include <math.h>
+
+#include "TauolaParticle.h"
+#include "DecayList.h"
+
+using namespace std;
+
+namespace Tauolapp
+{
+
+/** Fill a particle into the TauolaEvent. This relies heavily
+    on the static data structure DecayList */
+extern "C" void filhep_(int * n, int * status, int * pdg_id,
+                        int * mother_first, int * mother_last, 
+                        int * daughter_first, int * daughter_last, 
+                        float p4[4], float * p_inv_mass, bool * photos_flag);
+
+/** This function defines lorentz transformationfrom
+    first (kto=1) or second (kto=2) tau to laboratory frame.
+    It's heavily used in Fortran code. */
+extern "C" void tralo4_(float * kto, float p[4], float q[4], float * ams);
+
+} // namespace Tauolapp
+#endif
diff --git a/TEvtGen/Tauola/f_Init.cxx b/TEvtGen/Tauola/f_Init.cxx
new file mode 100644 (file)
index 0000000..5dd67d2
--- /dev/null
@@ -0,0 +1,51 @@
+#include "f_Init.h"
+#include "Log.h"
+#include <iostream>
+using std::endl;
+
+namespace Tauolapp
+{
+
+void f_interface_tauolaInitialize(int pdg_id, int firstDecayMode, 
+                                  int secondDecayMode, bool rad,
+                                  double rad_cut_off, double iniphy){
+
+  double pol[4]={0,0,0,0}; //dummy
+
+  jaki_.jak1=firstDecayMode;
+  jaki_.jak2=secondDecayMode;
+
+  taurad_.itdkrc=rad;
+  taurad_.xk0dec=rad_cut_off; //<-this one was causing nan's
+  idfc_.idff=pdg_id;
+  
+  inimas_();
+  initdk_();
+  float iniphy_param = iniphy;
+  iniphy_(&iniphy_param);
+
+  int init_state=-1;
+  //  dexay_(&init_state,pol);
+  dekay_(&init_state,pol);
+}
+
+double f_getTauMass(){
+  return (double) parmas_.amtau;
+}
+
+void f_interface_tauolaInitialise(int pdg_id, int firstDecayMode, 
+                                  int secondDecayMode, bool rad,
+                                  double rad_cut_off, double iniphy)
+{
+  Log::Warning() <<"Deprecated routine 'f_interface_tauolaInitialise'"<<endl;
+  Log::Warning(0)<<"Use 'f_interface_tauolaInitialize' instead."<<endl;
+
+  f_interface_tauolaInitialize(pdg_id, firstDecayMode, 
+                               secondDecayMode, rad,
+                               rad_cut_off, iniphy);
+
+  // Deprecated routines:  initialise, setInitialisePhy,
+  //                       f_interface_tauolaInitialise
+}
+
+} // namespace Tauolapp
diff --git a/TEvtGen/Tauola/f_Init.h b/TEvtGen/Tauola/f_Init.h
new file mode 100644 (file)
index 0000000..afb3c27
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef _f_Init_h_included_
+#define _f_Init_h_included_
+
+/**
+ * This file contains an interface between the C++ code and TAUOLA
+ * FORTRAN routines for tauola initalization.  
+ * f_interface_tauolaInitialize() should be used
+ * by C++ code. This call the initiphy_ or inimas_ routines defined in
+ * tauola.f and tauola_extras.f
+ *
+ * @author Nadia Davidson
+ * @date 17 June 2008
+ */
+
+#include "f_Variables.h"
+#include "f_Decay.h"
+
+namespace Tauolapp
+{
+
+extern "C" {
+
+  extern struct {
+    int idff; //tau pdg id
+  } idfc_;
+
+  extern void inietc_(float jak1=0,float jak2=0,float itdkrc=1,float ifphot=1);
+  extern void inimas_();
+  extern void iniphx_(float *i);
+  extern void initdk_();
+  extern void iniphy_(float *i);
+}
+
+void f_interface_tauolaInitialize(int pdg_id, int firstDecayMode, 
+                                  int secondDecayMode, bool rad,
+                                  double rad_cut_off, double iniphy);
+
+/** DEPRECATED: Use 'f_interface_tauolaInitialize' instead. */
+void f_interface_tauolaInitialise(int pdg_id, int firstDecayMode, 
+                                  int secondDecayMode, bool rad,
+                                  double rad_cut_off, double iniphy);
+
+double f_getTauMass();
+
+} // namespace Tauolapp
+#endif
diff --git a/TEvtGen/Tauola/f_Variables.h b/TEvtGen/Tauola/f_Variables.h
new file mode 100644 (file)
index 0000000..71e605e
--- /dev/null
@@ -0,0 +1,75 @@
+#ifndef _f_TauolaVariables_h_included_
+#define _f_TauolaVariables_h_included_
+
+/**
+ * This file contains definitions of tauola fortran routines and common
+ * blocks so they can be access by the C++ code.
+ *
+ * @author Nadia Davidson
+ * @date June 17 2008
+ */
+
+namespace Tauolapp
+{
+
+extern "C" {
+  extern struct { //particle masses
+    float amtau;
+    float amnuta;
+    float amell;
+    float amnue;
+    float ammu;
+    float amnumu;
+    float ampiz;
+    float ampi;
+    float amro;
+    float gamro;
+    float ama1;
+    float gama1;
+    float amk;
+    float amkz;
+    float amkst;
+    float gamkst;
+  } parmas_;
+
+  extern struct {
+    int jak1;
+    int jak2;
+    int jakp;
+    int jakm;
+    int ktom;
+  } jaki_;
+
+
+  extern struct {
+    double xk0dec;
+    int   itdkrc;
+  } taurad_;
+
+  extern struct {
+    float gamprt[30];
+    int   jlist[30];
+    int   nchan;
+  } taubra_;
+
+  extern struct {
+    float bra1,brk0,brk0b,brks;
+  } taukle_;
+
+  //extern float amas4_(float*);
+  //extern void bostr3_(float*, float*, float*);
+  extern void filhep_(int * N, int * IST, int * ID,
+                      int * JMO1, int * JMO2, int * JDA1, int * JDA2, 
+                      float P4[4], float * PINV, bool * PHFLAG);
+
+  extern void luhepc_(float flag=2);
+  extern void lulist_(float flag=2);
+  
+  // Initialization of RChL currents
+  // Dummy for default CLEO installation
+  extern void inirchl_(int *flag);
+
+}
+
+} // namespace Tauolapp
+#endif
diff --git a/TEvtGen/Tauola/tauola-fortran/curr_cleo.f b/TEvtGen/Tauola/tauola-fortran/curr_cleo.f
new file mode 100644 (file)
index 0000000..32b7994
--- /dev/null
@@ -0,0 +1,288 @@
+
+
+*AJW 1 version of CURR from KORALB.
+      SUBROUTINE CURR_CLEO(MNUM,PIM1,PIM2,PIM3,PIM4,HADCUR)
+C     ==================================================================
+C AJW, 11/97 - based on original CURR from TAUOLA:
+C     hadronic current for 4 pi final state
+C     R. Fisher, J. Wess and F. Wagner Z. Phys C3 (1980) 313
+C     R. Decker Z. Phys C36 (1987) 487.
+C     M. Gell-Mann, D. Sharp, W. Wagner Phys. Rev. Lett 8 (1962) 261.
+C BUT, rewritten to be more general and less "theoretical",
+C  using parameters tuned by Vasia and DSC.
+C     ==================================================================
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL  PIM1(4),PIM2(4),PIM3(4),PIM4(4)
+      COMPLEX HADCUR(4)
+
+      INTEGER K,L,MNUM,K1,K2,IRO,I,J,KK
+      REAL PA(4),PB(4),PAA(4)
+      REAL AA(4,4),PP(4,4)
+      REAL A,XM,XG,G1,G2,G,AMRO2,GAMRO2,AMRO3,GAMRO3,AMOM,GAMOM
+      REAL FRO,COEF1,FPI,COEF2,QQ,SK,DENOM,SIG,QQA,SS23,SS24,SS34,QP1P2
+      REAL QP1P3,QP1P4,P1P2,P1P3,P1P4,SIGN
+      REAL PKORB,AMPA
+      COMPLEX ALF0,ALF1,ALF2,ALF3
+      COMPLEX LAM0,LAM1,LAM2,LAM3
+      COMPLEX BET1,BET2,BET3
+      COMPLEX FORM1,FORM2,FORM3,FORM4,FORM2PI
+      COMPLEX BWIGM,WIGFOR,FPIKM,FPIKMD
+      COMPLEX AMPL(7),AMPR
+      COMPLEX BWIGN
+C
+      BWIGN(A,XM,XG)=1.0/CMPLX(A-XM**2,XM*XG)
+C*******************************************************************************
+C
+C --- masses and constants
+      IF (G1.NE.12.924) THEN
+      G1=12.924
+      G2=1475.98
+      FPI=93.3E-3
+      G =G1*G2
+      FRO=0.266*AMRO**2
+      COEF1=2.0*SQRT(3.0)/FPI**2
+      COEF2=FRO*G ! overall constant for the omega current
+      COEF2= COEF2*0.56  ! factor 0.56 reduces contribution of omega from 68% to 40 %
+
+C masses and widths for for rho-prim and rho-bis:
+      AMRO2 = 1.465
+      GAMRO2= 0.310
+      AMRO3=1.700
+      GAMRO3=0.235
+C
+      AMOM  = PKORB(1,14)
+      GAMOM = PKORB(2,14)
+      AMRO2 = PKORB(1,21)
+      GAMRO2= PKORB(2,21)
+      AMRO3 = PKORB(1,22)
+      GAMRO3= PKORB(2,22)
+C
+C Amplitudes for (pi-pi-pi0pi+) -> PS, rho0, rho-, rho+, omega.
+      AMPL(1) = CMPLX(PKORB(3,31)*COEF1,0.)
+      AMPL(2) = CMPLX(PKORB(3,32)*COEF1,0.)*CEXP(CMPLX(0.,PKORB(3,42)))
+      AMPL(3) = CMPLX(PKORB(3,33)*COEF1,0.)*CEXP(CMPLX(0.,PKORB(3,43)))
+      AMPL(4) = CMPLX(PKORB(3,34)*COEF1,0.)*CEXP(CMPLX(0.,PKORB(3,44)))
+      AMPL(5) = CMPLX(PKORB(3,35)*COEF2,0.)*CEXP(CMPLX(0.,PKORB(3,45)))
+C Amplitudes for (pi0pi0pi0pi-) -> PS, rho-.
+      AMPL(6) = CMPLX(PKORB(3,36)*COEF1)
+      AMPL(7) = CMPLX(PKORB(3,37)*COEF1)
+C
+C rho' contributions to rho' -> pi-omega:
+      ALF0 = CMPLX(PKORB(3,51),0.0)
+      ALF1 = CMPLX(PKORB(3,52)*AMRO**2,0.0)
+      ALF2 = CMPLX(PKORB(3,53)*AMRO2**2,0.0)
+      ALF3 = CMPLX(PKORB(3,54)*AMRO3**2,0.0)
+C rho' contribtions to rho' -> rhopipi:
+      LAM0 = CMPLX(PKORB(3,55),0.0)
+      LAM1 = CMPLX(PKORB(3,56)*AMRO**2,0.0)
+      LAM2 = CMPLX(PKORB(3,57)*AMRO2**2,0.0)
+      LAM3 = CMPLX(PKORB(3,58)*AMRO3**2,0.0)
+C rho contributions to rhopipi, rho -> 2pi:
+      BET1 = CMPLX(PKORB(3,59)*AMRO**2,0.0)
+      BET2 = CMPLX(PKORB(3,60)*AMRO2**2,0.0)
+      BET3 = CMPLX(PKORB(3,61)*AMRO3**2,0.0)
+C
+      END IF
+C**************************************************
+C
+C --- initialization of four vectors
+      DO 7 K=1,4
+      DO 8 L=1,4
+ 8    AA(K,L)=0.0
+      HADCUR(K)=CMPLX(0.0)
+      PAA(K)=PIM1(K)+PIM2(K)+PIM3(K)+PIM4(K)
+      PP(1,K)=PIM1(K)
+      PP(2,K)=PIM2(K)
+      PP(3,K)=PIM3(K)
+ 7    PP(4,K)=PIM4(K)
+C
+      IF (MNUM.EQ.1) THEN
+C ===================================================================
+C pi- pi- p0 pi+ case                                            ====
+C ===================================================================
+       QQ=PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2
+
+C  Add M(4pi)-dependence to rhopipi channels:
+       FORM4= LAM0+LAM1*BWIGN(QQ,AMRO,GAMRO)
+     *            +LAM2*BWIGN(QQ,AMRO2,GAMRO2)
+     *            +LAM3*BWIGN(QQ,AMRO3,GAMRO3)
+
+C --- loop over five contributions of the rho-pi-pi
+       DO 201 K1=1,3
+       DO 201 K2=3,4
+C
+         IF (K2.EQ.K1) THEN
+           GOTO 201
+         ELSEIF (K2.EQ.3) THEN
+C rho-
+            AMPR = AMPL(3)
+            AMPA = AMPIZ
+         ELSEIF (K1.EQ.3) THEN
+C rho+
+            AMPR = AMPL(4)
+            AMPA = AMPIZ
+         ELSE
+C rho0
+            AMPR = AMPL(2)
+            AMPA = AMPI
+         END IF
+C
+         SK=(PP(K1,4)+PP(K2,4))**2-(PP(K1,3)+PP(K2,3))**2
+     $     -(PP(K1,2)+PP(K2,2))**2-(PP(K1,1)+PP(K2,1))**2
+
+C -- definition of AA matrix
+C -- cronecker delta
+        DO 202 I=1,4
+         DO 203 J=1,4
+ 203     AA(I,J)=0.0
+ 202    AA(I,I)=1.0
+C ... and the rest ...
+        DO 204 L=1,4
+         IF (L.NE.K1.AND.L.NE.K2) THEN
+          DENOM=(PAA(4)-PP(L,4))**2-(PAA(3)-PP(L,3))**2
+     $         -(PAA(2)-PP(L,2))**2-(PAA(1)-PP(L,1))**2
+          DO 205 I=1,4
+          DO 205 J=1,4
+                      SIG= 1.0
+           IF(J.NE.4) SIG=-SIG
+           AA(I,J)=AA(I,J)
+     $            -SIG*(PAA(I)-2.0*PP(L,I))*(PAA(J)-PP(L,J))/DENOM
+ 205      CONTINUE
+         ENDIF
+ 204    CONTINUE
+C
+C --- lets add something to HADCURR
+C        FORM1= FPIKM(SQRT(SK),AMPI,AMPI) *FPIKM(SQRT(QQ),AMPI,AMPI)
+C        FORM1= AMPL(1)+AMPR*FPIKM(SQRT(SK),AMPI,AMPI)
+
+        FORM2PI= BET1*BWIGM(SK,AMRO,GAMRO,AMPA,AMPI)
+     1          +BET2*BWIGM(SK,AMRO2,GAMRO2,AMPA,AMPI)
+     2          +BET3*BWIGM(SK,AMRO3,GAMRO3,AMPA,AMPI)
+        FORM1= AMPL(1)+AMPR*FORM2PI
+C
+       DO 206 I=1,4
+       DO 206 J=1,4
+        HADCUR(I)=HADCUR(I)+FORM1*FORM4*AA(I,J)*(PP(K1,J)-PP(K2,J))
+ 206   CONTINUE
+C --- end of the rho-pi-pi current (5 possibilities)
+ 201   CONTINUE
+C
+C ===================================================================
+C Now modify the coefficient for the omega-pi current:              =
+C ===================================================================
+       IF (AMPL(5).EQ.CMPLX(0.,0.)) GOTO 311
+
+C Overall rho+rhoprime for the 4pi system:
+C       FORM2=AMPL(5)*(BWIGN(QQ,AMRO,GAMRO)+ELPHA*BWIGN(QQ,AMROP,GAMROP))
+C Modified M(4pi)-dependence:
+       FORM2=AMPL(5)*(ALF0+ALF1*BWIGN(QQ,AMRO,GAMRO)
+     *                    +ALF2*BWIGN(QQ,AMRO2,GAMRO2)
+     *                    +ALF3*BWIGN(QQ,AMRO3,GAMRO3))
+C
+C --- there are two possibilities for omega current
+C --- PA PB are corresponding first and second pi-s
+       DO 301 KK=1,2
+        DO 302 I=1,4
+         PA(I)=PP(KK,I)
+         PB(I)=PP(3-KK,I)
+ 302    CONTINUE
+C --- lorentz invariants
+         QQA=0.0
+         SS23=0.0
+         SS24=0.0
+         SS34=0.0
+         QP1P2=0.0
+         QP1P3=0.0
+         QP1P4=0.0
+         P1P2 =0.0
+         P1P3 =0.0
+         P1P4 =0.0
+        DO 303 K=1,4
+                     SIGN=-1.0
+         IF (K.EQ.4) SIGN= 1.0
+         QQA=QQA+SIGN*(PAA(K)-PA(K))**2
+         SS23=SS23+SIGN*(PB(K)  +PIM3(K))**2
+         SS24=SS24+SIGN*(PB(K)  +PIM4(K))**2
+         SS34=SS34+SIGN*(PIM3(K)+PIM4(K))**2
+         QP1P2=QP1P2+SIGN*(PAA(K)-PA(K))*PB(K)
+         QP1P3=QP1P3+SIGN*(PAA(K)-PA(K))*PIM3(K)
+         QP1P4=QP1P4+SIGN*(PAA(K)-PA(K))*PIM4(K)
+         P1P2=P1P2+SIGN*PA(K)*PB(K)
+         P1P3=P1P3+SIGN*PA(K)*PIM3(K)
+         P1P4=P1P4+SIGN*PA(K)*PIM4(K)
+ 303    CONTINUE
+C
+C omega -> rho pi for the 3pi system:
+C       FORM3=BWIGN(QQA,AMOM,GAMOM)*(BWIGN(SS23,AMRO,GAMRO)+
+C     $        BWIGN(SS24,AMRO,GAMRO)+BWIGN(SS34,AMRO,GAMRO))
+C No omega -> rho pi; just straight omega:
+        FORM3=BWIGN(QQA,AMOM,GAMOM)
+C
+        DO 304 K=1,4
+         HADCUR(K)=HADCUR(K)+FORM2*FORM3*(
+     $             PB  (K)*(QP1P3*P1P4-QP1P4*P1P3)
+     $            +PIM3(K)*(QP1P4*P1P2-QP1P2*P1P4)
+     $            +PIM4(K)*(QP1P2*P1P3-QP1P3*P1P2) )
+ 304    CONTINUE
+ 301   CONTINUE
+ 311   CONTINUE
+C
+      ELSE
+C ===================================================================
+C pi0 pi0 p0 pi- case                                            ====
+C ===================================================================
+       QQ=PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2
+
+C --- loop over three contribution of the non-omega current
+       DO 101 K=1,3
+        SK=(PP(K,4)+PIM4(4))**2-(PP(K,3)+PIM4(3))**2
+     $    -(PP(K,2)+PIM4(2))**2-(PP(K,1)+PIM4(1))**2
+
+C -- definition of AA matrix
+C -- cronecker delta
+        DO 102 I=1,4
+         DO 103 J=1,4
+ 103     AA(I,J)=0.0
+ 102    AA(I,I)=1.0
+C
+C ... and the rest ...
+        DO 104 L=1,3
+         IF (L.NE.K) THEN
+          DENOM=(PAA(4)-PP(L,4))**2-(PAA(3)-PP(L,3))**2
+     $         -(PAA(2)-PP(L,2))**2-(PAA(1)-PP(L,1))**2
+          DO 105 I=1,4
+          DO 105 J=1,4
+                      SIG=1.0
+           IF(J.NE.4) SIG=-SIG
+           AA(I,J)=AA(I,J)
+     $            -SIG*(PAA(I)-2.0*PP(L,I))*(PAA(J)-PP(L,J))/DENOM
+ 105      CONTINUE
+         ENDIF
+ 104    CONTINUE
+
+C --- lets add something to HADCURR
+C       FORM1= FPIKM(SQRT(SK),AMPI,AMPI) *FPIKMD(SQRT(QQ),AMPI,AMPI)
+CCCCCCCCCCCCC       FORM1=WIGFOR(SK,AMRO,GAMRO)        (tests)
+C       FORM1= FPIKM(SQRT(SK),AMPI,AMPI) *FPIKM(SQRT(QQ),AMPI,AMPI)
+       FORM1 = AMPL(6)+AMPL(7)*FPIKM(SQRT(SK),AMPI,AMPI)
+
+        DO 106 I=1,4
+        DO 106 J=1,4
+         HADCUR(I)=HADCUR(I)+FORM1*AA(I,J)*(PP(K,J)-PP(4,J))
+ 106    CONTINUE
+C --- end of the non omega current (3 possibilities)
+ 101   CONTINUE
+
+      ENDIF
+      END
+
+
diff --git a/TEvtGen/Tauola/tauola-fortran/f3pi.f b/TEvtGen/Tauola/tauola-fortran/f3pi.f
new file mode 100644 (file)
index 0000000..5c6cde4
--- /dev/null
@@ -0,0 +1,406 @@
+
+
+*AJW 1 version of a1 form factor
+      COMPLEX FUNCTION F3PI(IFORM,QQ,SA,SB)
+C.......................................................................
+C.
+C. F3PI - 1 version of a1 form factor, used in TAUOLA
+C.
+C. Inputs    : None
+C.           :
+C. Outputs   : None
+C.
+C. COMMON    : None
+C.
+C. Calls     : 
+C. Called    : by FORM1-FORM3 in $C_CVSSRC/korb/koralb/formf.F
+C. Author    : Alan Weinstein 2/98
+C.
+C. Detailed description
+C.   First determine whether we are doing pi-2pi0 or 3pi.
+C.   Then implement full form-factor from fit:
+C.   [(rho-pi S-wave) + (rho-prim-pi S-wave) +
+C.    (rho-pi D-wave) + (rho-prim-pi D-wave) + 
+C.    (f2 pi D-wave) + (sigmapi S-wave) + (f0pi S-wave)]
+C.   based on fit to pi-2pi0 by M. Schmidler, CBX 97-64-Update (4/22/98)
+C.   All the parameters in this routine are hard-coded!!
+C.
+C.......................................................................
+
+
+
+* -------------------- Argument declarations ---------------
+      INTEGER IFORM
+      REAL QQ,SA,SB
+* -------------------- EXTERNAL declarations ---------------
+*
+      REAL PKORB
+      COMPLEX BWIGML
+* -------------------- SEQUENCE declarations ---------------
+*
+* -------------------- Local    declarations ---------------
+*
+      CHARACTER*(*) CRNAME
+      PARAMETER(    CRNAME = 'F3PI' )
+*
+      INTEGER IFIRST,IDK
+      REAL MRO,GRO,MRP,GRP,MF2,GF2,MF0,GF0,MSG,GSG
+      REAL M1,M2,M3,M1SQ,M2SQ,M3SQ,MPIZ,MPIC
+      REAL S1,S2,S3,R,PI
+      REAL F134,F150,F15A,F15B,F167
+      REAL F34A,F34B,F35,F35A,F35B,F36A,F36B
+      COMPLEX BT1,BT2,BT3,BT4,BT5,BT6,BT7
+      COMPLEX FRO1,FRO2,FRP1,FRP2
+      COMPLEX FF21,FF22,FF23,FSG1,FSG2,FSG3,FF01,FF02,FF03
+      COMPLEX FA1A1P,FORMA1
+
+* -------------------- SAVE     declarations ---------------
+*
+* -------------------- DATA  initializations ---------------
+*
+      DATA IFIRST/0/
+* ----------------- Executable code starts here ------------
+*
+C. Hard-code the fit parameters:
+      IF (IFIRST.EQ.0) THEN
+        IFIRST = 1
+C rho, rhoprime, f2(1275), f0(1186), sigma(made up!)
+        MRO = 0.7743
+        GRO = 0.1491
+        MRP = 1.370 
+        GRP = 0.386 
+        MF2 = 1.275
+        GF2 = 0.185
+        MF0 = 1.186
+        GF0 = 0.350
+        MSG = 0.860
+        GSG = 0.880
+        MPIZ = PKORB(1,7)
+        MPIC = PKORB(1,8)
+
+C Fit coefficients for each of the contributions:
+        PI = 3.14159
+        BT1 = CMPLX(1.,0.)
+        BT2 = CMPLX(0.12,0.)*CEXP(CMPLX(0., 0.99*PI))
+        BT3 = CMPLX(0.37,0.)*CEXP(CMPLX(0.,-0.15*PI))
+        BT4 = CMPLX(0.87,0.)*CEXP(CMPLX(0., 0.53*PI))
+        BT5 = CMPLX(0.71,0.)*CEXP(CMPLX(0., 0.56*PI))
+        BT6 = CMPLX(2.10,0.)*CEXP(CMPLX(0., 0.23*PI))
+        BT7 = CMPLX(0.77,0.)*CEXP(CMPLX(0.,-0.54*PI))
+
+        PRINT *,' In F3pi: add (rho-pi S-wave) + (rhop-pi S-wave) +'
+        PRINT *,'              (rho-pi D-wave) + (rhop-pi D-wave) +'
+        PRINT *,'   (f2 pi D-wave) + (sigmapi S-wave) + (f0pi S-wave)'
+      END IF
+
+C Initialize to 0:
+      F3PI = CMPLX(0.,0.)
+
+C.   First determine whether we are doing pi-2pi0 or 3pi.
+C     PKORB is set up to remember what flavor of 3pi it gave to KORALB,
+C     since KORALB doesnt bother to remember!!
+      R = PKORB(4,11)
+      IF (R.EQ.0.) THEN
+C it is 2pi0pi-
+        IDK = 1
+        M1 = MPIZ
+        M2 = MPIZ
+        M3 = MPIC
+      ELSE
+C it is 3pi
+        IDK = 2
+        M1 = MPIC
+        M2 = MPIC
+        M3 = MPIC
+      END IF
+      M1SQ = M1*M1
+      M2SQ = M2*M2
+      M3SQ = M3*M3
+
+C.   Then implement full form-factor from fit:
+C.   [(rho-pi S-wave) + (rho-prim-pi S-wave) +
+C.    (rho-pi D-wave) + (rho-prim-pi D-wave) + 
+C.    (f2 pi D-wave) + (sigmapi S-wave) + (f0pi S-wave)]
+C.   based on fit to pi-2pi0 by M. Schmidler, CBX 97-64-Update (4/22/98)
+
+C Note that for FORM1, the arguments are S1, S2;
+C           for FORM2, the arguments are S2, S1;
+C           for FORM3, the arguments are S3, S1.
+C Here, we implement FORM1 and FORM2 at the same time,
+C so the above switch is just what we need!
+
+      IF (IFORM.EQ.1.OR.IFORM.EQ.2) THEN
+        S1 = SA
+        S2 = SB
+        S3 = QQ-SA-SB+M1SQ+M2SQ+M3SQ
+        IF (S3.LE.0..OR.S2.LE.0.) RETURN
+
+        IF (IDK.EQ.1) THEN
+C it is 2pi0pi-
+C Lorentz invariants for all the contributions:
+          F134 = -(1./3.)*((S3-M3SQ)-(S1-M1SQ))
+          F150 =  (1./18.)*(QQ-M3SQ+S3)*(2.*M1SQ+2.*M2SQ-S3)/S3
+          F167 =  (2./3.)
+
+C Breit Wigners for all the contributions:
+          FRO1 = BWIGML(S1,MRO,GRO,M2,M3,1)
+          FRP1 = BWIGML(S1,MRP,GRP,M2,M3,1)
+          FRO2 = BWIGML(S2,MRO,GRO,M3,M1,1)
+          FRP2 = BWIGML(S2,MRP,GRP,M3,M1,1)
+          FF23 = BWIGML(S3,MF2,GF2,M1,M2,2)
+          FSG3 = BWIGML(S3,MSG,GSG,M1,M2,0)
+          FF03 = BWIGML(S3,MF0,GF0,M1,M2,0)
+
+          F3PI = BT1*FRO1+BT2*FRP1+
+     1       BT3*CMPLX(F134,0.)*FRO2+BT4*CMPLX(F134,0.)*FRP2+
+     1       BT5*CMPLX(F150,0.)*FF23+
+     1       BT6*CMPLX(F167,0.)*FSG3+BT7*CMPLX(F167,0.)*FF03
+
+C         F3PI = FPIKM(SQRT(S1),M2,M3)
+        ELSEIF (IDK.EQ.2) THEN
+C it is 3pi
+C Lorentz invariants for all the contributions:
+          F134 = -(1./3.)*((S3-M3SQ)-(S1-M1SQ))
+          F15A = -(1./2.)*((S2-M2SQ)-(S3-M3SQ))
+          F15B = -(1./18.)*(QQ-M2SQ+S2)*(2.*M1SQ+2.*M3SQ-S2)/S2
+          F167 = -(2./3.)
+
+C Breit Wigners for all the contributions:
+          FRO1 = BWIGML(S1,MRO,GRO,M2,M3,1)
+          FRP1 = BWIGML(S1,MRP,GRP,M2,M3,1)
+          FRO2 = BWIGML(S2,MRO,GRO,M3,M1,1)
+          FRP2 = BWIGML(S2,MRP,GRP,M3,M1,1)
+          FF21 = BWIGML(S1,MF2,GF2,M2,M3,2)
+          FF22 = BWIGML(S2,MF2,GF2,M3,M1,2)
+          FSG2 = BWIGML(S2,MSG,GSG,M3,M1,0)
+          FF02 = BWIGML(S2,MF0,GF0,M3,M1,0)
+
+          F3PI = BT1*FRO1+BT2*FRP1+
+     1       BT3*CMPLX(F134,0.)*FRO2+BT4*CMPLX(F134,0.)*FRP2
+     1      -BT5*CMPLX(F15A,0.)*FF21-BT5*CMPLX(F15B,0.)*FF22
+     1      -BT6*CMPLX(F167,0.)*FSG2-BT7*CMPLX(F167,0.)*FF02
+
+C         F3PI = FPIKM(SQRT(S1),M2,M3)
+        END IF
+
+      ELSE IF (IFORM.EQ.3) THEN
+        S3 = SA
+        S1 = SB
+        S2 = QQ-SA-SB+M1SQ+M2SQ+M3SQ
+        IF (S1.LE.0..OR.S2.LE.0.) RETURN
+
+        IF (IDK.EQ.1) THEN
+C it is 2pi0pi-
+C Lorentz invariants for all the contributions:
+          F34A = (1./3.)*((S2-M2SQ)-(S3-M3SQ))
+          F34B = (1./3.)*((S3-M3SQ)-(S1-M1SQ))
+          F35  =-(1./2.)*((S1-M1SQ)-(S2-M2SQ))
+
+C Breit Wigners for all the contributions:
+          FRO1 = BWIGML(S1,MRO,GRO,M2,M3,1)
+          FRP1 = BWIGML(S1,MRP,GRP,M2,M3,1)
+          FRO2 = BWIGML(S2,MRO,GRO,M3,M1,1)
+          FRP2 = BWIGML(S2,MRP,GRP,M3,M1,1)
+          FF23 = BWIGML(S3,MF2,GF2,M1,M2,2)
+
+          F3PI = 
+     1       BT3*(CMPLX(F34A,0.)*FRO1+CMPLX(F34B,0.)*FRO2)+
+     1       BT4*(CMPLX(F34A,0.)*FRP1+CMPLX(F34B,0.)*FRP2)+
+     1       BT5*CMPLX(F35,0.)*FF23
+     
+C         F3PI = CMPLX(0.,0.)
+        ELSEIF (IDK.EQ.2) THEN
+C it is 3pi
+C Lorentz invariants for all the contributions:
+          F34A = (1./3.)*((S2-M2SQ)-(S3-M3SQ))
+          F34B = (1./3.)*((S3-M3SQ)-(S1-M1SQ))
+          F35A = -(1./18.)*(QQ-M1SQ+S1)*(2.*M2SQ+2.*M3SQ-S1)/S1
+          F35B =  (1./18.)*(QQ-M2SQ+S2)*(2.*M3SQ+2.*M1SQ-S2)/S2
+          F36A = -(2./3.)
+          F36B =  (2./3.)
+
+C Breit Wigners for all the contributions:
+          FRO1 = BWIGML(S1,MRO,GRO,M2,M3,1)
+          FRP1 = BWIGML(S1,MRP,GRP,M2,M3,1)
+          FRO2 = BWIGML(S2,MRO,GRO,M3,M1,1)
+          FRP2 = BWIGML(S2,MRP,GRP,M3,M1,1)
+          FF21 = BWIGML(S1,MF2,GF2,M2,M3,2)
+          FF22 = BWIGML(S2,MF2,GF2,M3,M1,2)
+          FSG1 = BWIGML(S1,MSG,GSG,M2,M3,0)
+          FSG2 = BWIGML(S2,MSG,GSG,M3,M1,0)
+          FF01 = BWIGML(S1,MF0,GF0,M2,M3,0)
+          FF02 = BWIGML(S2,MF0,GF0,M3,M1,0)
+
+          F3PI = 
+     1       BT3*(CMPLX(F34A,0.)*FRO1+CMPLX(F34B,0.)*FRO2)+
+     1       BT4*(CMPLX(F34A,0.)*FRP1+CMPLX(F34B,0.)*FRP2)
+     1      -BT5*(CMPLX(F35A,0.)*FF21+CMPLX(F35B,0.)*FF22)
+     1      -BT6*(CMPLX(F36A,0.)*FSG1+CMPLX(F36B,0.)*FSG2)
+     1      -BT7*(CMPLX(F36A,0.)*FF01+CMPLX(F36B,0.)*FF02)
+     
+C         F3PI = CMPLX(0.,0.)
+        END IF
+      END IF
+
+C Add overall a1/a1prime:
+      FORMA1 = FA1A1P(QQ)
+      F3PI = F3PI*FORMA1
+
+      RETURN
+      END
+C **********************************************************
+      COMPLEX FUNCTION BWIGML(S,M,G,M1,M2,L)
+C **********************************************************
+C     L-WAVE BREIT-WIGNER
+C **********************************************************
+      REAL S,M,G,M1,M2
+      INTEGER L,IPOW
+      REAL MSQ,W,WGS,MP,MM,QS,QM
+
+      MP = (M1+M2)**2
+      MM = (M1-M2)**2
+      MSQ = M*M
+      W = SQRT(S)
+      WGS = 0.0
+      IF (W.GT.(M1+M2)) THEN
+        QS=SQRT(ABS((S   -MP)*(S   -MM)))/W
+        QM=SQRT(ABS((MSQ -MP)*(MSQ -MM)))/M
+        IPOW = 2*L+1
+        WGS=G*(MSQ/W)*(QS/QM)**IPOW
+      ENDIF
+
+      BWIGML=CMPLX(MSQ,0.)/CMPLX(MSQ-S,-WGS)
+
+      RETURN
+      END
+C=======================================================================
+      COMPLEX FUNCTION FA1A1P(XMSQ)
+C     ==================================================================
+C     complex form-factor for a1+a1prime.                       AJW 1/98
+C     ==================================================================
+
+      REAL XMSQ
+      REAL PKORB,WGA1
+      REAL XM1,XG1,XM2,XG2,XM1SQ,XM2SQ,GG1,GG2,GF,FG1,FG2
+      COMPLEX BET,F1,F2
+      INTEGER IFIRST/0/
+
+      IF (IFIRST.EQ.0) THEN
+        IFIRST = 1
+
+C The user may choose masses and widths that differ from nominal:
+        XM1 = PKORB(1,10)
+        XG1 = PKORB(2,10)
+        XM2 = PKORB(1,17)
+        XG2 = PKORB(2,17)
+        BET = CMPLX(PKORB(3,17),0.)
+C scale factors relative to nominal:
+        GG1 = XM1*XG1/(1.3281*0.806)
+        GG2 = XM2*XG2/(1.3281*0.806)
+
+        XM1SQ = XM1*XM1
+        XM2SQ = XM2*XM2
+      END IF
+
+      GF = WGA1(XMSQ)
+      FG1 = GG1*GF
+      FG2 = GG2*GF
+      F1 = CMPLX(-XM1SQ,0.0)/CMPLX(XMSQ-XM1SQ,FG1)
+      F2 = CMPLX(-XM2SQ,0.0)/CMPLX(XMSQ-XM2SQ,FG2)
+      FA1A1P = F1+BET*F2
+
+      RETURN
+      END
+C=======================================================================
+      FUNCTION WGA1(QQ)
+
+C mass-dependent M*Gamma of a1 through its decays to 
+C.   [(rho-pi S-wave) + (rho-pi D-wave) + 
+C.    (f2 pi D-wave) + (f0pi S-wave)]
+C.  AND simple K*K S-wave
+
+      REAL QQ,WGA1
+      DOUBLE PRECISION MKST,MK,MK1SQ,MK2SQ,C3PI,CKST
+      DOUBLE PRECISION S,WGA1C,WGA1N,WG3PIC,WG3PIN,GKST
+      INTEGER IFIRST
+C-----------------------------------------------------------------------
+C
+      IF (IFIRST.NE.987) THEN
+        IFIRST = 987
+C
+C Contribution to M*Gamma(m(3pi)^2) from S-wave K*K:
+        MKST = 0.894D0
+        MK = 0.496D0
+        MK1SQ = (MKST+MK)**2
+        MK2SQ = (MKST-MK)**2
+C coupling constants squared:
+        C3PI = 0.2384D0**2
+        CKST = 4.7621D0**2*C3PI
+      END IF
+
+C-----------------------------------------------------------------------
+C Parameterization of numerical integral of total width of a1 to 3pi.
+C From M. Schmidtler, CBX-97-64-Update.
+      S = DBLE(QQ)
+      WG3PIC = WGA1C(S)
+      WG3PIN = WGA1N(S)
+
+C Contribution to M*Gamma(m(3pi)^2) from S-wave K*K, if above threshold
+      GKST = 0.D0
+      IF (S.GT.MK1SQ) GKST = SQRT((S-MK1SQ)*(S-MK2SQ))/(2.*S)
+
+      WGA1 = SNGL(C3PI*(WG3PIC+WG3PIN)+CKST*GKST)
+
+      RETURN 
+      END
+C=======================================================================
+      DOUBLE PRECISION FUNCTION WGA1C(S)
+C
+C parameterization of m*Gamma(m^2) for pi-2pi0 system
+C
+      DOUBLE PRECISION S,STH,Q0,Q1,Q2,P0,P1,P2,P3,P4,G1_IM
+C
+      PARAMETER(Q0 =   5.80900D0,Q1 =  -3.00980D0,Q2 =   4.57920D0,
+     1          P0 = -13.91400D0,P1 =  27.67900D0,P2 = -13.39300D0,
+     2          P3 =   3.19240D0,P4 =  -0.10487D0)
+C
+      PARAMETER (STH   = 0.1753D0)
+C---------------------------------------------------------------------
+
+      IF(S.LT.STH) THEN
+       G1_IM = 0.D0
+      ELSEIF((S.GT.STH).AND.(S.LT.0.823D0)) THEN
+       G1_IM = Q0*(S-STH)**3*(1. + Q1*(S-STH) + Q2*(S-STH)**2)
+      ELSE
+       G1_IM = P0 + P1*S + P2*S**2+ P3*S**3 + P4*S**4
+      ENDIF
+
+      WGA1C = G1_IM      
+      RETURN
+      END
+C=======================================================================
+      DOUBLE PRECISION FUNCTION WGA1N(S)
+C
+C parameterization of m*Gamma(m^2) for pi-pi+pi- system
+C
+      DOUBLE PRECISION S,STH,Q0,Q1,Q2,P0,P1,P2,P3,P4,G1_IM
+C
+      PARAMETER(Q0 =   6.28450D0,Q1 =  -2.95950D0,Q2 =   4.33550D0,
+     1          P0 = -15.41100D0,P1 =  32.08800D0,P2 = -17.66600D0,
+     2          P3 =   4.93550D0,P4 =  -0.37498D0)
+C
+      PARAMETER (STH   = 0.1676D0)
+C---------------------------------------------------------------------
+
+      IF(S.LT.STH) THEN
+       G1_IM = 0.D0
+      ELSEIF((S.GT.STH).AND.(S.LT.0.823D0)) THEN
+       G1_IM = Q0*(S-STH)**3*(1. + Q1*(S-STH) + Q2*(S-STH)**2)
+      ELSE
+       G1_IM = P0 + P1*S + P2*S**2+ P3*S**3 + P4*S**4
+      ENDIF
+
+      WGA1N = G1_IM      
+      RETURN
+      END
diff --git a/TEvtGen/Tauola/tauola-fortran/formf.f b/TEvtGen/Tauola/tauola-fortran/formf.f
new file mode 100644 (file)
index 0000000..f0b5f00
--- /dev/null
@@ -0,0 +1,1231 @@
+
+
+      FUNCTION FORMOM(XMAA,XMOM)
+C     ==================================================================
+C     formfactorfor pi-pi0 gamma final state
+C      R. Decker, Z. Phys C36 (1987) 487.
+C     ==================================================================
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON /TESTA1/ KEYA1
+      COMPLEX BWIGN,FORMOM
+      DATA ICONT /1/
+* THIS INLINE FUNCT. CALCULATES THE SCALAR PART OF THE PROPAGATOR
+      BWIGN(XM,AM,GAMMA)=1./CMPLX(XM**2-AM**2,GAMMA*AM)
+* HADRON CURRENT
+      FRO  =0.266*AMRO**2
+      ELPHA=- 0.1
+      AMROP = 1.7
+      GAMROP= 0.26
+      AMOM  =0.782
+      GAMOM =0.0085
+      AROMEG= 1.0
+      GCOUP=12.924
+      GCOUP=GCOUP*AROMEG
+      FQED  =SQRT(4.0*3.1415926535/137.03604)
+      FORMOM=FQED*FRO**2/SQRT(2.0)*GCOUP**2*BWIGN(XMOM,AMOM,GAMOM)
+     $     *(BWIGN(XMAA,AMRO,GAMRO)+ELPHA*BWIGN(XMAA,AMROP,GAMROP))
+     $     *(BWIGN( 0.0,AMRO,GAMRO)+ELPHA*BWIGN( 0.0,AMROP,GAMROP))
+      END
+
+
+
+C=======================================================================
+      COMPLEX FUNCTION FK1AB(XMSQ,INDX)
+C     ==================================================================
+C     complex form-factor for a1+a1prime.                       AJW 1/98
+C     ==================================================================
+
+      COMPLEX F1,F2,AMPA,AMPB
+      INTEGER IFIRST,INDX
+      DATA IFIRST/0/
+
+      IF (IFIRST.EQ.0) THEN
+        IFIRST = 1
+        XM1 = PKORB(1,19)
+        XG1 = PKORB(2,19)
+        XM2 = PKORB(1,20)
+        XG2 = PKORB(2,20)
+
+        XM1SQ = XM1*XM1
+        GF1 = GFUN(XM1SQ)
+        GG1 = XM1*XG1/GF1
+        XM2SQ = XM2*XM2
+        GF2 = GFUN(XM2SQ)
+        GG2 = XM2*XG2/GF2
+      END IF
+
+      IF (INDX.EQ.1) THEN
+        AMPA = CMPLX(PKORB(3,81),0.)
+        AMPB = CMPLX(PKORB(3,82),0.)
+      ELSE IF (INDX.EQ.2) THEN
+        AMPA = CMPLX(PKORB(3,83),0.)
+        AMPB = CMPLX(PKORB(3,84),0.)
+      ELSEIF (INDX.EQ.3) THEN
+        AMPA = CMPLX(PKORB(3,85),0.)
+        AMPB = CMPLX(PKORB(3,86),0.)
+      ELSEIF (INDX.EQ.4) THEN
+        AMPA = CMPLX(PKORB(3,87),0.)
+        AMPB = CMPLX(PKORB(3,88),0.)
+      END IF
+
+      GF = GFUN(XMSQ)
+      FG1 = GG1*GF
+      FG2 = GG2*GF
+      F1 = CMPLX(-XM1SQ,0.0)/CMPLX(XMSQ-XM1SQ,FG1)
+      F2 = CMPLX(-XM2SQ,0.0)/CMPLX(XMSQ-XM2SQ,FG2)
+      FK1AB = AMPA*F1+AMPB*F2
+
+      RETURN
+      END
+
+      FUNCTION FORM1(MNUM,QQ,S1,SDWA)
+C     ==================================================================
+C     formfactorfor F1 for 3 scalar final state
+C     R. Fisher, J. Wess and F. Wagner Z. Phys C3 (1980) 313
+C     H. Georgi, Weak interactions and modern particle theory,
+C     The Benjamin/Cummings Pub. Co., Inc. 1984.
+C     R. Decker, E. Mirkes, R. Sauer, Z. Was Karlsruhe preprint TTP92-25
+C     and erratum !!!!!!
+C     ==================================================================
+C
+      COMPLEX FORM1,WIGNER,WIGFOR,FPIKM,BWIGM
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+
+      COMPLEX FORMA1,FORMK1,FORMRO,FORMKS
+      COMPLEX FA1A1P,FK1AB,F3PI,F3PI_RCHT
+C
+      IF     (MNUM.EQ.0) THEN
+C ------------  3 pi hadronic state (a1)
+C       FORMRO = FPIKM(SQRT(S1),AMPI,AMPI)
+C       FORMRO = F3PI(1,QQ,S1,SDWA)
+C       FORMA1 = FA1A1P(QQ)
+C       FORM1 = FORMA1*FORMRO
+      IF (IVER.EQ.0) THEN
+        FORM1 = F3PI(1,QQ,S1,SDWA)
+      ELSE
+        FORM1 = F3PI_RCHT(1,QQ,S1,SDWA)
+      ENDIF
+
+      ELSEIF (MNUM.EQ.1) THEN
+C ------------ K- pi- K+ (K*0 K-)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMPI,AMK)
+       FORMA1 = FA1A1P(QQ)
+       FORM1 = FORMA1*FORMKS
+
+      ELSEIF (MNUM.EQ.2) THEN
+C ------------ K0 pi- K0B (K*- K0)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMPI,AMK)
+       FORMA1 = FA1A1P(QQ)
+       FORM1 = FORMA1*FORMKS
+
+      ELSEIF (MNUM.EQ.3) THEN
+C ------------ K- pi0 K0 (K*0 K-)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMPI,AMK)
+       FORMA1 = FA1A1P(QQ)
+       FORM1 = FORMA1*FORMKS
+
+      ELSEIF (MNUM.EQ.4) THEN
+C ------------ pi0 pi0 K-  (K*-pi0)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMPI,AMK)
+       FORMK1 = FK1AB(QQ,3)
+       FORM1 = FORMK1*FORMKS
+
+      ELSEIF (MNUM.EQ.5) THEN
+C ------------ K- pi- pi+ (rho0 K-)
+       FORMK1 = FK1AB(QQ,4)
+       FORMRO = FPIKM(SQRT(S1),AMPI,AMPI)
+       FORM1 = FORMK1*FORMRO
+
+      ELSEIF (MNUM.EQ.6) THEN
+C ------------ pi- K0B pi0 (pi- K*0B)
+       FORMK1 = FK1AB(QQ,1)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMK,AMPI)
+       FORM1 = FORMK1*FORMKS
+
+      ELSEIF (MNUM.EQ.7) THEN
+C -------------- eta pi- pi0 final state
+       FORM1=0.0
+      ENDIF
+      END
+      FUNCTION FORM2(MNUM,QQ,S1,SDWA)
+C     ==================================================================
+C     formfactorfor F2 for 3 scalar final state
+C     R. Fisher, J. Wess and F. Wagner Z. Phys C3 (1980) 313
+C     H. Georgi, Weak interactions and modern particle theory,
+C     The Benjamin/Cummings Pub. Co., Inc. 1984.
+C     R. Decker, E. Mirkes, R. Sauer, Z. Was Karlsruhe preprint TTP92-25
+C     and erratum !!!!!!
+C     ==================================================================
+C
+      COMPLEX FORM2,WIGNER,WIGFOR,FPIKM,BWIGM
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+
+      COMPLEX FORMA1,FORMK1,FORMRO,FORMKS
+      COMPLEX FA1A1P,FK1AB,F3PI,F3PI_RCHT
+
+      IF     (MNUM.EQ.0) THEN
+C ------------  3 pi hadronic state (a1)
+C       FORMRO = FPIKM(SQRT(S1),AMPI,AMPI)
+C       FORMRO = F3PI(2,QQ,S1,SDWA)
+C       FORMA1 = FA1A1P(QQ)
+C       FORM2 = FORMA1*FORMRO
+C       FORM2 = F3PI(2,QQ,S1,SDWA)
+      IF (IVER.EQ.0) THEN
+       FORM2 = F3PI(2,QQ,S1,SDWA)
+      ELSE
+       FORM2 = F3PI_RCHT(2,QQ,S1,SDWA)
+      ENDIF
+      ELSEIF (MNUM.EQ.1) THEN
+C ------------ K- pi- K+ (rho0 pi-)
+       FORMRO = FPIKM(SQRT(S1),AMK,AMK)
+       FORMA1 = FA1A1P(QQ)
+       FORM2 = FORMA1*FORMRO
+
+      ELSEIF (MNUM.EQ.2) THEN
+C ------------ K0 pi- K0B (rho0 pi-)
+       FORMRO = FPIKM(SQRT(S1),AMK,AMK)
+       FORMA1 = FA1A1P(QQ)
+       FORM2 = FORMA1*FORMRO
+
+      ELSEIF (MNUM.EQ.3) THEN
+C ------------ K- pi0 K0 (rho- pi0)
+       FORMRO = FPIKM(SQRT(S1),AMK,AMK)
+       FORMA1 = FA1A1P(QQ)
+       FORM2 = FORMA1*FORMRO
+
+      ELSEIF (MNUM.EQ.4) THEN
+C ------------ pi0 pi0 K-  (K*-pi0)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMPI,AMK)
+       FORMK1 = FK1AB(QQ,3)
+       FORM2 = FORMK1*FORMKS
+
+      ELSEIF (MNUM.EQ.5) THEN
+C ------------ K- pi- pi+  (K*0B pi-)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMPI,AMK)
+       FORMK1 = FK1AB(QQ,1)
+       FORM2 = FORMK1*FORMKS
+C
+      ELSEIF (MNUM.EQ.6) THEN
+C ------------ pi- K0B pi0 (rho- K0B)
+       FORMRO = FPIKM(SQRT(S1),AMPI,AMPI)
+       FORMK1 = FK1AB(QQ,2)
+       FORM2 = FORMK1*FORMRO
+C
+      ELSEIF (MNUM.EQ.7) THEN
+C -------------- eta pi- pi0 final state
+       FORM2=0.0
+      ENDIF
+C
+      END
+      COMPLEX FUNCTION BWIGM(S,M,G,XM1,XM2)
+C **********************************************************
+C     P-WAVE BREIT-WIGNER  FOR RHO
+C **********************************************************
+      REAL S,M,G,XM1,XM2
+      REAL PI,QS,QM,W,GS
+      DATA INIT /0/
+C ------------ PARAMETERS --------------------
+      IF (INIT.EQ.0) THEN
+      INIT=1
+      PI=3.141592654
+C -------  BREIT-WIGNER -----------------------
+         ENDIF
+       IF (S.GT.(XM1+XM2)**2) THEN
+         QS=SQRT(ABS((S   -(XM1+XM2)**2)*(S   -(XM1-XM2)**2)))/SQRT(S)
+         QM=SQRT(ABS((M**2-(XM1+XM2)**2)*(M**2-(XM1-XM2)**2)))/M
+         W=SQRT(S)
+         GS=G*(M/W)**2*(QS/QM)**3
+       ELSE
+         GS=0.0
+       ENDIF
+         BWIGM=M**2/CMPLX(M**2-S,-SQRT(S)*GS)
+      RETURN
+      END
+      COMPLEX FUNCTION FPIKM(W,XM1,XM2)
+C **********************************************************
+C     PION FORM FACTOR
+C **********************************************************
+      COMPLEX BWIGM
+      REAL ROM,ROG,ROM1,ROG1,BETA1,PI,PIM,S,W
+      EXTERNAL BWIG
+      DATA  INIT /0/
+C
+C ------------ PARAMETERS --------------------
+      IF (INIT.EQ.0 ) THEN
+      INIT=1
+      PI=3.141592654
+      PIM=.140
+      ROM=0.773
+      ROG=0.145
+      ROM1=1.370
+      ROG1=0.510
+      BETA1=-0.145
+      ENDIF
+C -----------------------------------------------
+      S=W**2
+      FPIKM=(BWIGM(S,ROM,ROG,XM1,XM2)+BETA1*BWIGM(S,ROM1,ROG1,XM1,XM2))
+     & /(1+BETA1)
+      RETURN
+      END
+      COMPLEX FUNCTION FPIKMD(W,XM1,XM2)
+C **********************************************************
+C     PION FORM FACTOR
+C **********************************************************
+      COMPLEX BWIGM
+      REAL ROM,ROG,ROM1,ROG1,PI,PIM,S,W
+      EXTERNAL BWIG
+      DATA  INIT /0/
+C
+C ------------ PARAMETERS --------------------
+      IF (INIT.EQ.0 ) THEN
+      INIT=1
+      PI=3.141592654
+      PIM=.140
+      ROM=0.773
+      ROG=0.145
+      ROM1=1.500
+      ROG1=0.220
+      ROM2=1.750
+      ROG2=0.120
+      BETA=6.5
+      DELTA=-26.0
+      ENDIF
+C -----------------------------------------------
+      S=W**2
+      FPIKMD=(DELTA*BWIGM(S,ROM,ROG,XM1,XM2)
+     $      +BETA*BWIGM(S,ROM1,ROG1,XM1,XM2)
+     $      +     BWIGM(S,ROM2,ROG2,XM1,XM2))
+     & /(1+BETA+DELTA)
+      RETURN
+      END
+      FUNCTION FORM3(MNUM,QQ,S1,SDWA)
+C     ==================================================================
+C     formfactorfor F3 for 3 scalar final state
+C     R. Fisher, J. Wess and F. Wagner Z. Phys C3 (1980) 313
+C     H. Georgi, Weak interactions and modern particle theory,
+C     The Benjamin/Cummings Pub. Co., Inc. 1984.
+C     R. Decker, E. Mirkes, R. Sauer, Z. Was Karlsruhe preprint TTP92-25
+C     and erratum !!!!!!
+C     ==================================================================
+C
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+      COMPLEX FORM3,BWIGM
+      COMPLEX FORMA1,FORMK1,FORMRO,FORMKS
+      COMPLEX FA1A1P,FK1AB,F3PI,F3PI_RCHT
+C
+      IF (MNUM.EQ.0) THEN
+C ------------  3 pi hadronic state (a1)
+C       FORMRO = FPIKM(SQRT(S1),AMPI,AMPI)
+C       FORMRO = F3PI(3,QQ,S1,SDWA)
+C       FORMA1 = FA1A1P(QQ)
+C       FORM3 = FORMA1*FORMRO
+      IF (IVER.EQ.0) THEN
+        FORM3 = F3PI(3,QQ,S1,SDWA)
+      ELSE
+        FORM3 = (0.,0.)
+      ENDIF
+
+      ELSEIF (MNUM.EQ.3) THEN
+C ------------ K- pi0 K0  (K*- K0)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMPIZ,AMK)
+       FORMA1 = FA1A1P(QQ)
+       FORM3 = FORMA1*FORMKS
+
+      ELSEIF (MNUM.EQ.6) THEN
+C ------------ pi- K0B pi0 (K*- pi0)
+       FORMKS = BWIGM(S1,AMKST,GAMKST,AMK,AMPI)
+       FORMK1 = FK1AB(QQ,3)
+       FORM3 = FORMK1*FORMKS
+
+      ELSE
+       FORM3=CMPLX(0.,0.)
+      ENDIF
+      END
+      FUNCTION FORM4(MNUM,QQ,S1,S2,S3)
+C     ==================================================================
+C     formfactorfor F4 for 3 scalar final state
+C     R. Decker, in preparation
+C     R. Decker, E. Mirkes, R. Sauer, Z. Was Karlsruhe preprint TTP92-25
+C     and erratum !!!!!!
+C     ==================================================================
+C
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+
+      COMPLEX FORM4,WIGNER,FPIKM,F3PI_RCHT
+      REAL*4 M
+C ---- this formfactor is switched off for cleo version
+       FORM4=CMPLX(0.0,0.0)
+      IF (MNUM.EQ.0) THEN
+C ------------  3 pi hadronic state (a1)
+C       FORMRO = FPIKM(SQRT(S1),AMPI,AMPI)
+C       FORMRO = F3PI(3,QQ,S1,SDWA)
+C       FORMA1 = FA1A1P(QQ)
+C       FORM3 = FORMA1*FORMRO
+C        FORM4 = CMPLX(-1., 0.) 
+       IF (IVER.EQ.1) FORM4 = F3PI_RCHT(4,QQ,S1,S2)* CMPLX(0., 1.)
+      ENDIF
+
+
+      END
+      FUNCTION FORM5(MNUM,QQ,S1,S2)
+C     ==================================================================
+C     formfactorfor F5 for 3 scalar final state
+C     G. Kramer, W. Palmer, S. Pinsky, Phys. Rev. D30 (1984) 89.
+C     G. Kramer, W. Palmer             Z. Phys. C25 (1984) 195.
+C     R. Decker, E. Mirkes, R. Sauer, Z. Was Karlsruhe preprint TTP92-25
+C     and erratum !!!!!!
+C     ==================================================================
+C
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMPLEX FORM5,WIGNER,FPIKM,FPIKMD,BWIGM
+      IF     (MNUM.EQ.0) THEN
+C ------------  3 pi hadronic state (a1)
+        FORM5=0.0
+      ELSEIF (MNUM.EQ.1) THEN
+C ------------ K- pi- K+
+         ELPHA=-0.2
+         FORM5=FPIKMD(SQRT(QQ),AMPI,AMPI)/(1+ELPHA)
+     $        *(       FPIKM(SQRT(S2),AMPI,AMPI)
+     $          +ELPHA*BWIGM(S1,AMKST,GAMKST,AMPI,AMK))
+      ELSEIF (MNUM.EQ.2) THEN
+C ------------ K0 pi- K0B
+         ELPHA=-0.2
+         FORM5=FPIKMD(SQRT(QQ),AMPI,AMPI)/(1+ELPHA)
+     $        *(       FPIKM(SQRT(S2),AMPI,AMPI)
+     $          +ELPHA*BWIGM(S1,AMKST,GAMKST,AMPI,AMK))
+      ELSEIF (MNUM.EQ.3) THEN
+C ------------ K- K0 pi0
+        FORM5=0.0
+      ELSEIF (MNUM.EQ.4) THEN
+C ------------ pi0 pi0 K-
+        FORM5=0.0
+      ELSEIF (MNUM.EQ.5) THEN
+C ------------ K- pi- pi+
+        ELPHA=-0.2
+        FORM5=BWIGM(QQ,AMKST,GAMKST,AMPI,AMK)/(1+ELPHA)
+     $       *(       FPIKM(SQRT(S1),AMPI,AMPI)
+     $         +ELPHA*BWIGM(S2,AMKST,GAMKST,AMPI,AMK))
+      ELSEIF (MNUM.EQ.6) THEN
+C ------------ pi- K0B pi0
+        ELPHA=-0.2
+        FORM5=BWIGM(QQ,AMKST,GAMKST,AMPI,AMKZ)/(1+ELPHA)
+     $       *(       FPIKM(SQRT(S2),AMPI,AMPI)
+     $         +ELPHA*BWIGM(S1,AMKST,GAMKST,AMPI,AMK))
+      ELSEIF (MNUM.EQ.7) THEN
+C -------------- eta pi- pi0 final state
+       FORM5=FPIKMD(SQRT(QQ),AMPI,AMPI)*FPIKM(SQRT(S1),AMPI,AMPI)
+      ENDIF
+C
+      END
+      SUBROUTINE CURRX(MNUM,PIM1,PIM2,PIM3,PIM4,HADCUR)
+C     ==================================================================
+C     hadronic current for 4 pi final state
+C     R. Fisher, J. Wess and F. Wagner Z. Phys C3 (1980) 313
+C     R. Decker Z. Phys C36 (1987) 487.
+C     M. Gell-Mann, D. Sharp, W. Wagner Phys. Rev. Lett 8 (1962) 261.
+C     ==================================================================
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+C ARBITRARY FIXING OF THE FOUR PI X-SECTION NORMALIZATION
+      COMMON /ARBIT/ ARFLAT,AROMEG
+      REAL  PIM1(4),PIM2(4),PIM3(4),PIM4(4),PAA(4)
+      COMPLEX HADCUR(4),FORM1,FORM2,FORM3,FPIKM
+      COMPLEX BWIGN
+      REAL PA(4),PB(4)
+      REAL AA(4,4),PP(4,4)
+      DATA PI /3.141592653589793238462643/
+      DATA  FPI /93.3E-3/
+      BWIGN(A,XM,XG)=1.0/CMPLX(A-XM**2,XM*XG)
+C
+C --- masses and constants
+      G1=12.924
+      G2=1475.98
+      G =G1*G2
+      ELPHA=-.1
+      AMROP=1.7
+      GAMROP=0.26
+      AMOM=.782
+      GAMOM=0.0085
+      ARFLAT=1.0
+      AROMEG=1.0
+C
+      FRO=0.266*AMRO**2
+      COEF1=2.0*SQRT(3.0)/FPI**2*ARFLAT
+      COEF2=FRO*G*AROMEG
+C --- initialization of four vectors
+      DO 7 K=1,4
+      DO 8 L=1,4
+ 8    AA(K,L)=0.0
+      HADCUR(K)=CMPLX(0.0)
+      PAA(K)=PIM1(K)+PIM2(K)+PIM3(K)+PIM4(K)
+      PP(1,K)=PIM1(K)
+      PP(2,K)=PIM2(K)
+      PP(3,K)=PIM3(K)
+ 7    PP(4,K)=PIM4(K)
+C
+      IF (MNUM.EQ.1) THEN
+C ===================================================================
+C pi- pi- p0 pi+ case                                            ====
+C ===================================================================
+       QQ=PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2
+C --- loop over thre contribution of the non-omega current
+       DO 201 K=1,3
+        SK=(PP(K,4)+PIM4(4))**2-(PP(K,3)+PIM4(3))**2
+     $    -(PP(K,2)+PIM4(2))**2-(PP(K,1)+PIM4(1))**2
+C -- definition of AA matrix
+C -- cronecker delta
+        DO 202 I=1,4
+         DO 203 J=1,4
+ 203     AA(I,J)=0.0
+ 202    AA(I,I)=1.0
+C ... and the rest ...
+        DO 204 L=1,3
+         IF (L.NE.K) THEN
+          DENOM=(PAA(4)-PP(L,4))**2-(PAA(3)-PP(L,3))**2
+     $         -(PAA(2)-PP(L,2))**2-(PAA(1)-PP(L,1))**2
+          DO 205 I=1,4
+          DO 205 J=1,4
+                      SIG= 1.0
+           IF(J.NE.4) SIG=-SIG
+           AA(I,J)=AA(I,J)
+     $            -SIG*(PAA(I)-2.0*PP(L,I))*(PAA(J)-PP(L,J))/DENOM
+ 205      CONTINUE
+         ENDIF
+ 204    CONTINUE
+C --- lets add something to HADCURR
+       FORM1= FPIKM(SQRT(SK),AMPI,AMPI) *FPIKM(SQRT(QQ),AMPI,AMPI)
+C       FORM1= FPIKM(SQRT(SK),AMPI,AMPI) *FPIKMD(SQRT(QQ),AMPI,AMPI)
+CCCCCCCCCCCCCCCCC       FORM1=WIGFOR(SK,AMRO,GAMRO)      (tests)
+C
+       FIX=1.0
+       IF (K.EQ.3) FIX=-2.0
+       DO 206 I=1,4
+       DO 206 J=1,4
+        HADCUR(I)=
+     $  HADCUR(I)+CMPLX(FIX*COEF1)*FORM1*AA(I,J)*(PP(K,J)-PP(4,J))
+ 206   CONTINUE
+C --- end of the non omega current (3 possibilities)
+ 201   CONTINUE
+C
+C
+C --- there are two possibilities for omega current
+C --- PA PB are corresponding first and second pi-s
+       DO 301 KK=1,2
+        DO 302 I=1,4
+         PA(I)=PP(KK,I)
+         PB(I)=PP(3-KK,I)
+ 302    CONTINUE
+C --- lorentz invariants
+         QQA=0.0
+         SS23=0.0
+         SS24=0.0
+         SS34=0.0
+         QP1P2=0.0
+         QP1P3=0.0
+         QP1P4=0.0
+         P1P2 =0.0
+         P1P3 =0.0
+         P1P4 =0.0
+        DO 303 K=1,4
+                     SIGN=-1.0
+         IF (K.EQ.4) SIGN= 1.0
+         QQA=QQA+SIGN*(PAA(K)-PA(K))**2
+         SS23=SS23+SIGN*(PB(K)  +PIM3(K))**2
+         SS24=SS24+SIGN*(PB(K)  +PIM4(K))**2
+         SS34=SS34+SIGN*(PIM3(K)+PIM4(K))**2
+         QP1P2=QP1P2+SIGN*(PAA(K)-PA(K))*PB(K)
+         QP1P3=QP1P3+SIGN*(PAA(K)-PA(K))*PIM3(K)
+         QP1P4=QP1P4+SIGN*(PAA(K)-PA(K))*PIM4(K)
+         P1P2=P1P2+SIGN*PA(K)*PB(K)
+         P1P3=P1P3+SIGN*PA(K)*PIM3(K)
+         P1P4=P1P4+SIGN*PA(K)*PIM4(K)
+ 303    CONTINUE
+C
+        FORM2=COEF2*(BWIGN(QQ,AMRO,GAMRO)+ELPHA*BWIGN(QQ,AMROP,GAMROP))
+C        FORM3=BWIGN(QQA,AMOM,GAMOM)*(BWIGN(SS23,AMRO,GAMRO)+
+C     $        BWIGN(SS24,AMRO,GAMRO)+BWIGN(SS34,AMRO,GAMRO))
+        FORM3=BWIGN(QQA,AMOM,GAMOM)
+C
+        DO 304 K=1,4
+         HADCUR(K)=HADCUR(K)+FORM2*FORM3*(
+     $             PB  (K)*(QP1P3*P1P4-QP1P4*P1P3)
+     $            +PIM3(K)*(QP1P4*P1P2-QP1P2*P1P4)
+     $            +PIM4(K)*(QP1P2*P1P3-QP1P3*P1P2) )
+ 304    CONTINUE
+ 301   CONTINUE
+C
+      ELSE
+C ===================================================================
+C pi0 pi0 p0 pi- case                                            ====
+C ===================================================================
+       QQ=PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2
+       DO 101 K=1,3
+C --- loop over thre contribution of the non-omega current
+        SK=(PP(K,4)+PIM4(4))**2-(PP(K,3)+PIM4(3))**2
+     $    -(PP(K,2)+PIM4(2))**2-(PP(K,1)+PIM4(1))**2
+C -- definition of AA matrix
+C -- cronecker delta
+        DO 102 I=1,4
+         DO 103 J=1,4
+ 103     AA(I,J)=0.0
+ 102    AA(I,I)=1.0
+C
+C ... and the rest ...
+        DO 104 L=1,3
+         IF (L.NE.K) THEN
+          DENOM=(PAA(4)-PP(L,4))**2-(PAA(3)-PP(L,3))**2
+     $         -(PAA(2)-PP(L,2))**2-(PAA(1)-PP(L,1))**2
+          DO 105 I=1,4
+          DO 105 J=1,4
+                      SIG=1.0
+           IF(J.NE.4) SIG=-SIG
+           AA(I,J)=AA(I,J)
+     $            -SIG*(PAA(I)-2.0*PP(L,I))*(PAA(J)-PP(L,J))/DENOM
+ 105      CONTINUE
+         ENDIF
+ 104    CONTINUE
+C --- lets add something to HADCURR
+       FORM1= FPIKM(SQRT(SK),AMPI,AMPI) *FPIKM(SQRT(QQ),AMPI,AMPI)
+C       FORM1= FPIKM(SQRT(SK),AMPI,AMPI) *FPIKMD(SQRT(QQ),AMPI,AMPI)
+CCCCCCCCCCCCC       FORM1=WIGFOR(SK,AMRO,GAMRO)        (tests)
+        DO 106 I=1,4
+        DO 106 J=1,4
+         HADCUR(I)=
+     $   HADCUR(I)+CMPLX(COEF1)*FORM1*AA(I,J)*(PP(K,J)-PP(4,J))
+ 106    CONTINUE
+C --- end of the non omega current (3 possibilities)
+ 101   CONTINUE
+      ENDIF
+      END
+      FUNCTION WIGFOR(S,XM,XGAM)
+      COMPLEX WIGFOR,WIGNOR
+      WIGNOR=CMPLX(-XM**2,XM*XGAM)
+      WIGFOR=WIGNOR/CMPLX(S-XM**2,XM*XGAM)
+      END
+      SUBROUTINE CURINF
+C HERE the form factors of M. Finkemeier et al. start
+C it ends with the string:  M. Finkemeier et al. END
+      COMMON /INOUT/ INUT, IOUT
+      WRITE (UNIT = IOUT,FMT = 99)
+      WRITE (UNIT = IOUT,FMT = 98)
+c                    print *, 'here is curinf'
+ 99   FORMAT(
+     . /,   ' *************************************************** ',
+     . /,   '   YOU ARE USING THE 4 PION DECAY MODE FORM FACTORS    ',
+     . /,   '   WHICH HAVE BEEN DESCRIBED IN:',
+     . /,   ' R. DECKER, M. FINKEMEIER, P. HEILIGER AND H.H. JONSSON',
+     . /,   '   "TAU DECAYS INTO FOUR PIONS" ',
+     . /,   '   UNIVERSITAET KARLSRUHE PREPRINT TTP 94-13 (1994);',
+     . /,   '                    LNF-94/066(IR); HEP-PH/9410260  ',
+     . /,   '  ',
+     . /,   ' PLEASE NOTE THAT THIS ROUTINE IS USING PARAMETERS',
+     . /,   ' RELATED TO THE 3 PION DECAY MODE (A1 MODE), SUCH AS',
+     . /,   ' THE A1 MASS AND WIDTH (TAKEN FROM THE COMMON /PARMAS/)',
+     . /,   ' AND THE 2 PION VECTOR RESONANCE FORM FACTOR (BY USING',
+     . /,   ' THE ROUTINE FPIKM)'                                   ,
+     . /,   ' THUS IF YOU DECIDE TO CHANGE ANY OF THESE, YOU WILL'  ,
+     . /,   ' HAVE TO REFIT THE 4 PION PARAMETERS IN THE COMMON'    )
+   98   FORMAT(
+     .      ' BLOCK /TAU4PI/, OR YOU MIGHT GET A BAD DISCRIPTION'   ,
+     . /,   ' OF TAU -> 4 PIONS'       ,
+     . /,   ' for these formfactors set in routine CHOICE for',
+     . /,  ' mnum.eq.102 -- AMRX=1.42 and GAMRX=.21',
+     . /,  ' mnum.eq.101 -- AMRX=1.3 and GAMRX=.46 PROB1,PROB2=0.2',
+     . /,  ' to optimize phase space parametrization',
+     . /,   ' *************************************************** ',
+     . /,   ' coded by M. Finkemeier and P. Heiliger, 29. sept. 1994',
+     . /,   ' incorporated to TAUOLA by Z. Was      17. jan. 1995',
+c     . /,   ' fitted on (day/month/year) by ...  ',
+c     . /,   ' to .... data ',
+     . /,   ' changed by: Z. Was on 17.01.95',
+     . /,   ' changes by: M. Finkemeier on 30.01.95' )
+      END
+C
+      SUBROUTINE CURINI
+      COMMON /TAU4PI/ GOMEGA,GAMMA1,GAMMA2,ROM1,ROG1,BETA1,
+     .                ROM2,ROG2,BETA2
+      REAL*4          GOMEGA,GAMMA1,GAMMA2,ROM1,ROG1,BETA1,
+     .                ROM2,ROG2,BETA2
+      GOMEGA = 1.4
+      GAMMA1 = 0.38
+      GAMMA2 = 0.38
+      ROM1   = 1.35
+      ROG1   = 0.3
+      BETA1  = 0.08
+      ROM2   = 1.70
+      ROG2   = 0.235
+      BETA2  = -0.0075                         
+      END                                              
+      COMPLEX FUNCTION BWIGA1(QA)
+C     ================================================================
+C     breit-wigner enhancement of a1
+C     ================================================================
+      COMPLEX WIGNER
+      COMMON / PARMAS/ AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU,
+     %                 AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1,
+     %                 AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4           AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU,
+     %                 AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1,
+     %                 AMK,AMKZ,AMKST,GAMKST
+      WIGNER(A,B,C)=CMPLX(1.0,0.0)/CMPLX(A-B**2,B*C)
+      GAMAX=GAMA1*GFUN(QA)/GFUN(AMA1**2)
+      BWIGA1=-AMA1**2*WIGNER(QA,AMA1,GAMAX)
+      RETURN
+      END
+      COMPLEX FUNCTION BWIGEPS(QEPS)
+C     =============================================================
+C     breit-wigner enhancement of epsilon
+C     =============================================================
+      REAL QEPS,MEPS,GEPS
+      MEPS=1.300
+      GEPS=.600
+      BWIGEPS=CMPLX(MEPS**2,-MEPS*GEPS)/
+     %        CMPLX(MEPS**2-QEPS,-MEPS*GEPS)
+      RETURN
+      END
+      COMPLEX FUNCTION FRHO4(W,XM1,XM2)
+C     ===========================================================
+C     rho-type resonance factor with higher radials, to be used
+C     by CURR for the four pion mode
+C     ===========================================================
+      COMPLEX BWIGM
+      COMMON /TAU4PI/ GOMEGA,GAMMA1,GAMMA2,ROM1,ROG1,BETA1,
+     .                ROM2,ROG2,BETA2
+      REAL*4          GOMEGA,GAMMA1,GAMMA2,ROM1,ROG1,BETA1,
+     .                ROM2,ROG2,BETA2
+      REAL ROM,ROG,PI,PIM,S,W
+      EXTERNAL BWIG
+      DATA  INIT /0/
+C
+C ------------ PARAMETERS --------------------
+      IF (INIT.EQ.0 ) THEN
+      INIT=1
+      PI=3.141592654
+      PIM=.140
+      ROM=0.773
+      ROG=0.145
+      ENDIF
+C -----------------------------------------------
+      S=W**2
+c             print *,'rom2,rog2 =',rom2,rog2
+      FRHO4=(BWIGM(S,ROM,ROG,XM1,XM2)+BETA1*BWIGM(S,ROM1,ROG1,XM1,XM2)
+     & +BETA2*BWIGM(S,ROM2,ROG2,XM1,XM2))
+     & /(1+BETA1+BETA2)
+      RETURN
+      END
+      SUBROUTINE CURR(MNUM,PIM1,PIM2,PIM3,PIM4,HADCUR)
+C     ==================================================================
+C     Hadronic current for 4 pi final state, according to:
+C     R. Decker, M. Finkemeier, P. Heiliger, H.H.Jonsson, TTP94-13
+C
+C     See also:
+C     R. Fisher, J. Wess and F. Wagner Z. Phys C3 (1980) 313
+C     R. Decker Z. Phys C36 (1987) 487.
+C     M. Gell-Mann, D. Sharp, W. Wagner Phys. Rev. Lett 8 (1962) 261.
+C     ==================================================================
+      COMMON /TAU4PI/ GOMEGA,GAMMA1,GAMMA2,ROM1,ROG1,BETA1,
+     .                ROM2,ROG2,BETA2
+      REAL*4          GOMEGA,GAMMA1,GAMMA2,ROM1,ROG1,BETA1,
+     .                ROM2,ROG2,BETA2
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL  PIM1(4),PIM2(4),PIM3(4),PIM4(4),PAA(4)
+      COMPLEX HADCUR(4),FORM1,FORM2,FORM3,FPIKM
+      COMPLEX BWIGN,FRHO4
+      COMPLEX BWIGEPS,BWIGA1
+      COMPLEX HCOMP1(4),HCOMP2(4),HCOMP3(4),HCOMP4(4)
+      COMPLEX T243,T213,T143,T123,T341,T342
+      COMPLEX T124,T134,T214,T234,T314,T324
+      COMPLEX S2413,S2314,S1423,S1324,S34
+      COMPLEX S2431,S3421
+      COMPLEX BRACK1,BRACK2,BRACK3,BRACK4A,BRACK4B,BRACK4
+      REAL QMP1,QMP2,QMP3,QMP4
+      REAL PS43,PS41,PS42,PS34,PS14,PS13,PS24,PS23
+      REAL PS21,PS31
+      REAL PD243,PD241,PD213,PD143,PD142
+      REAL PD123,PD341,PD342,PD413,PD423
+      REAL PD124,PD134,PD214,PD234,PD314,PD324
+      REAL QP1,QP2,QP3,QP4
+      REAL PA(4),PB(4)
+      REAL AA(4,4),PP(4,4)
+      DATA PI /3.141592653589793238462643/
+      DATA  FPI /93.3E-3/
+      DATA INIT /0/    
+      BWIGN(A,XM,XG)=1.0/CMPLX(A-XM**2,XM*XG)
+C
+      IF (INIT.EQ.0) THEN
+       CALL CURINI
+       CALL CURINF
+       INIT = 1
+      ENDIF                    
+C
+C --- MASSES AND CONSTANTS
+      G1=12.924
+      G2=1475.98 * GOMEGA
+      G =G1*G2
+      ELPHA=-.1
+      AMROP=1.7
+      GAMROP=0.26
+      AMOM=.782
+      GAMOM=0.0085
+      ARFLAT=1.0
+      AROMEG=1.0
+C
+      FRO=0.266*AMRO**2
+      COEF1=2.0*SQRT(3.0)/FPI**2*ARFLAT
+      COEF2=FRO*G*AROMEG
+C --- INITIALIZATION OF FOUR VECTORS
+      DO 7 K=1,4
+      DO 8 L=1,4
+ 8    AA(K,L)=0.0
+      HADCUR(K)=CMPLX(0.0)
+      PAA(K)=PIM1(K)+PIM2(K)+PIM3(K)+PIM4(K)
+      PP(1,K)=PIM1(K)
+      PP(2,K)=PIM2(K)
+      PP(3,K)=PIM3(K)
+ 7    PP(4,K)=PIM4(K)
+C
+      IF (MNUM.EQ.1) THEN
+C ===================================================================
+C PI- PI- P0 PI+ CASE                                            ====
+C ===================================================================
+       QQ=PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2
+C FIRST DEFINITION OF SCALAR PRODUCTS OF MOMENTUM VECTORS
+C DEFINE (Q-PI)**2 AS QPI:
+      QMP1=(PIM2(4)+PIM3(4)+PIM4(4))**2-(PIM2(3)+PIM3(3)+PIM4(3))**2
+     %   -(PIM2(2)+PIM3(2)+PIM4(2))**2-(PIM2(1)+PIM3(1)+PIM4(1))**2
+      QMP2=(PIM1(4)+PIM3(4)+PIM4(4))**2-(PIM1(3)+PIM3(3)+PIM4(3))**2
+     %   -(PIM1(2)+PIM3(2)+PIM4(2))**2-(PIM1(1)+PIM3(1)+PIM4(1))**2
+      QMP3=(PIM1(4)+PIM2(4)+PIM4(4))**2-(PIM1(3)+PIM2(3)+PIM4(3))**2
+     %   -(PIM1(2)+PIM2(2)+PIM4(2))**2-(PIM1(1)+PIM2(1)+PIM4(1))**2
+      QMP4=(PIM1(4)+PIM2(4)+PIM3(4))**2-(PIM1(3)+PIM2(3)+PIM3(3))**2
+     %   -(PIM1(2)+PIM2(2)+PIM3(2))**2-(PIM1(1)+PIM2(1)+PIM3(1))**2
+C DEFINE (PI+PK)**2 AS PSIK:
+      PS43=(PIM4(4)+PIM3(4))**2-(PIM4(3)+PIM3(3))**2
+     %    -(PIM4(2)+PIM3(2))**2-(PIM4(1)+PIM3(1))**2
+      PS41=(PIM4(4)+PIM1(4))**2-(PIM4(3)+PIM1(3))**2
+     %    -(PIM4(2)+PIM1(2))**2-(PIM4(1)+PIM1(1))**2
+      PS42=(PIM4(4)+PIM2(4))**2-(PIM4(3)+PIM2(3))**2
+     %    -(PIM4(2)+PIM2(2))**2-(PIM4(1)+PIM2(1))**2
+      PS34=PS43
+      PS14=PS41
+      PS13=(PIM1(4)+PIM3(4))**2-(PIM1(3)+PIM3(3))**2
+     %    -(PIM1(2)+PIM3(2))**2-(PIM1(1)+PIM3(1))**2
+      PS24=PS42
+      PS23=(PIM2(4)+PIM3(4))**2-(PIM2(3)+PIM3(3))**2
+     %    -(PIM2(2)+PIM3(2))**2-(PIM2(1)+PIM3(1))**2
+      PD243=PIM2(4)*(PIM4(4)-PIM3(4))-PIM2(3)*(PIM4(3)-PIM3(3))
+     %     -PIM2(2)*(PIM4(2)-PIM3(2))-PIM2(1)*(PIM4(1)-PIM3(1))
+      PD241=PIM2(4)*(PIM4(4)-PIM1(4))-PIM2(3)*(PIM4(3)-PIM1(3))
+     %     -PIM2(2)*(PIM4(2)-PIM1(2))-PIM2(1)*(PIM4(1)-PIM1(1))
+      PD213=PIM2(4)*(PIM1(4)-PIM3(4))-PIM2(3)*(PIM1(3)-PIM3(3))
+     %     -PIM2(2)*(PIM1(2)-PIM3(2))-PIM2(1)*(PIM1(1)-PIM3(1))
+      PD143=PIM1(4)*(PIM4(4)-PIM3(4))-PIM1(3)*(PIM4(3)-PIM3(3))
+     %     -PIM1(2)*(PIM4(2)-PIM3(2))-PIM1(1)*(PIM4(1)-PIM3(1))
+      PD142=PIM1(4)*(PIM4(4)-PIM2(4))-PIM1(3)*(PIM4(3)-PIM2(3))
+     %     -PIM1(2)*(PIM4(2)-PIM2(2))-PIM1(1)*(PIM4(1)-PIM2(1))
+      PD123=PIM1(4)*(PIM2(4)-PIM3(4))-PIM1(3)*(PIM2(3)-PIM3(3))
+     %     -PIM1(2)*(PIM2(2)-PIM3(2))-PIM1(1)*(PIM2(1)-PIM3(1))
+      PD341=PIM3(4)*(PIM4(4)-PIM1(4))-PIM3(3)*(PIM4(3)-PIM1(3))
+     %     -PIM3(2)*(PIM4(2)-PIM1(2))-PIM3(1)*(PIM4(1)-PIM1(1))
+      PD342=PIM3(4)*(PIM4(4)-PIM2(4))-PIM3(3)*(PIM4(3)-PIM2(3))
+     %     -PIM3(2)*(PIM4(2)-PIM2(2))-PIM3(1)*(PIM4(1)-PIM2(1))
+      PD413=PIM4(4)*(PIM1(4)-PIM3(4))-PIM4(3)*(PIM1(3)-PIM3(3))
+     %     -PIM4(2)*(PIM1(2)-PIM3(2))-PIM4(1)*(PIM1(1)-PIM3(1))
+      PD423=PIM4(4)*(PIM2(4)-PIM3(4))-PIM4(3)*(PIM2(3)-PIM3(3))
+     %     -PIM4(2)*(PIM2(2)-PIM3(2))-PIM4(1)*(PIM2(1)-PIM3(1))
+C DEFINE Q*PI = QPI:
+      QP1=PIM1(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM1(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM1(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM1(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+      QP2=PIM2(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM2(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM2(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM2(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+      QP3=PIM3(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM3(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM3(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM3(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+      QP4=PIM4(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM4(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM4(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM4(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+C DEFINE T(PI;PJ,PK)= TIJK:
+      T243=BWIGA1(QMP2)*FPIKM(SQRT(PS43),AMPI,AMPI)*GAMMA1
+      T213=BWIGA1(QMP2)*FPIKM(SQRT(PS13),AMPI,AMPI)*GAMMA1
+      T143=BWIGA1(QMP1)*FPIKM(SQRT(PS43),AMPI,AMPI)*GAMMA1
+      T123=BWIGA1(QMP1)*FPIKM(SQRT(PS23),AMPI,AMPI)*GAMMA1
+      T341=BWIGA1(QMP3)*FPIKM(SQRT(PS41),AMPI,AMPI)*GAMMA1
+      T342=BWIGA1(QMP3)*FPIKM(SQRT(PS42),AMPI,AMPI)*GAMMA1
+C DEFINE S(I,J;K,L)= SIJKL:
+      S2413=FRHO4(SQRT(PS24),AMPI,AMPI)*GAMMA2
+      S2314=FRHO4(SQRT(PS23),AMPI,AMPI)*BWIGEPS(PS14)*GAMMA2
+      S1423=FRHO4(SQRT(PS14),AMPI,AMPI)*GAMMA2
+      S1324=FRHO4(SQRT(PS13),AMPI,AMPI)*BWIGEPS(PS24)*GAMMA2
+      S34=FRHO4(SQRT(PS34),AMPI,AMPI)*GAMMA2
+C DEFINITION OF AMPLITUDE, FIRST THE [] BRACKETS:
+      BRACK1=2.*T143+2.*T243+T123+T213
+     %    +T341*(PD241/QMP3-1.)+T342*(PD142/QMP3-1.)
+     %    +3./4.*(S1423+S2413-S2314-S1324)-3.*S34
+      BRACK2=2.*T143*PD243/QMP1+3.*T213
+     %    +T123*(2.*PD423/QMP1+1.)+T341*(PD241/QMP3+3.)
+     %    +T342*(PD142/QMP3+1.)
+     %    -3./4.*(S2314+3.*S1324+3.*S1423+S2413)
+      BRACK3=2.*T243*PD143/QMP2+3.*T123
+     %    +T213*(2.*PD413/QMP2+1.)+T341*(PD241/QMP3+1.)
+     %    +T342*(PD142/QMP3+3.)
+     %    -3./4.*(3.*S2314+S1324+S1423+3.*S2413)
+      BRACK4A=2.*T143*(PD243/QQ*(QP1/QMP1+1.)+PD143/QQ)
+     %     +2.*T243*(PD143/QQ*(QP2/QMP2+1.)+PD243/QQ)
+     %     +T123+T213
+     %     +2.*T123*(PD423/QQ*(QP1/QMP1+1.)+PD123/QQ)
+     %     +2.*T213*(PD413/QQ*(QP2/QMP2+1.)+PD213/QQ)
+     %     +T341*(PD241/QMP3+1.-2.*PD241/QQ*(QP3/QMP3+1.)
+     %           -2.*PD341/QQ)
+     %     +T342*(PD142/QMP3+1.-2.*PD142/QQ*(QP3/QMP3+1.)
+     %           -2.*PD342/QQ)
+      BRACK4B=-3./4.*(S2314*(2.*(QP2-QP3)/QQ+1.)
+     %             +S1324*(2.*(QP1-QP3)/QQ+1.)
+     %             +S1423*(2.*(QP1-QP4)/QQ+1.)
+     %             +S2413*(2.*(QP2-QP4)/QQ+1.)
+     %             +4.*S34*(QP4-QP3)/QQ)
+      BRACK4=BRACK4A+BRACK4B
+      DO 208 K=1,4
+      HCOMP1(K)=(PIM3(K)-PIM4(K))*BRACK1
+      HCOMP2(K)=PIM1(K)*BRACK2
+      HCOMP3(K)=PIM2(K)*BRACK3
+      HCOMP4(K)=(PIM1(K)+PIM2(K)+PIM3(K)+PIM4(K))*BRACK4
+ 208  CONTINUE
+      DO 209 I=1,4
+      HADCUR(I)=HCOMP1(I)-HCOMP2(I)-HCOMP3(I)+HCOMP4(I)
+      HADCUR(I)=-COEF1*FRHO4(SQRT(QQ),AMPI,AMPI)*HADCUR(I)
+ 209  CONTINUE
+C --- END OF THE NON OMEGA CURRENT (3 POSSIBILITIES)
+ 201   CONTINUE
+C
+C
+C --- THERE ARE TWO POSSIBILITIES FOR OMEGA CURRENT
+C --- PA PB ARE CORRESPONDING FIRST AND SECOND PI-S
+       DO 301 KK=1,2
+        DO 302 I=1,4
+         PA(I)=PP(KK,I)
+         PB(I)=PP(3-KK,I)
+ 302    CONTINUE
+C --- LORENTZ INVARIANTS
+         QQA=0.0
+         SS23=0.0
+         SS24=0.0
+         SS34=0.0
+         QP1P2=0.0
+         QP1P3=0.0
+         QP1P4=0.0
+         P1P2 =0.0
+         P1P3 =0.0
+         P1P4 =0.0
+        DO 303 K=1,4
+                     SIGN=-1.0
+         IF (K.EQ.4) SIGN= 1.0
+         QQA=QQA+SIGN*(PAA(K)-PA(K))**2
+         SS23=SS23+SIGN*(PB(K)  +PIM3(K))**2
+         SS24=SS24+SIGN*(PB(K)  +PIM4(K))**2
+         SS34=SS34+SIGN*(PIM3(K)+PIM4(K))**2
+         QP1P2=QP1P2+SIGN*(PAA(K)-PA(K))*PB(K)
+         QP1P3=QP1P3+SIGN*(PAA(K)-PA(K))*PIM3(K)
+         QP1P4=QP1P4+SIGN*(PAA(K)-PA(K))*PIM4(K)
+         P1P2=P1P2+SIGN*PA(K)*PB(K)
+         P1P3=P1P3+SIGN*PA(K)*PIM3(K)
+         P1P4=P1P4+SIGN*PA(K)*PIM4(K)
+ 303    CONTINUE
+C
+        FORM2=COEF2*(BWIGN(QQ,AMRO,GAMRO)+ELPHA*BWIGN(QQ,AMROP,GAMROP))
+C        FORM3=BWIGN(QQA,AMOM,GAMOM)*(BWIGN(SS23,AMRO,GAMRO)+
+C     $        BWIGN(SS24,AMRO,GAMRO)+BWIGN(SS34,AMRO,GAMRO))
+        FORM3=BWIGN(QQA,AMOM,GAMOM)
+C
+        DO 304 K=1,4
+          HADCUR(K)=HADCUR(K)+FORM2*FORM3*(
+     $              PB  (K)*(QP1P3*P1P4-QP1P4*P1P3)
+     $             +PIM3(K)*(QP1P4*P1P2-QP1P2*P1P4)
+     $             +PIM4(K)*(QP1P2*P1P3-QP1P3*P1P2) )
+ 304    CONTINUE
+ 301   CONTINUE
+C
+      ELSE
+C ===================================================================
+C PI0 PI0 P0 PI- CASE                                            ====
+C ===================================================================
+       QQ=PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2
+C FIRST DEFINITION OF SCALAR PRODUCTS OF MOMENTUM VECTORS
+C DEFINE (Q-PI)**2 AS QPI:
+      QMP1=(PIM2(4)+PIM3(4)+PIM4(4))**2-(PIM2(3)+PIM3(3)+PIM4(3))**2
+     %   -(PIM2(2)+PIM3(2)+PIM4(2))**2-(PIM2(1)+PIM3(1)+PIM4(1))**2
+      QMP2=(PIM1(4)+PIM3(4)+PIM4(4))**2-(PIM1(3)+PIM3(3)+PIM4(3))**2
+     %   -(PIM1(2)+PIM3(2)+PIM4(2))**2-(PIM1(1)+PIM3(1)+PIM4(1))**2
+      QMP3=(PIM1(4)+PIM2(4)+PIM4(4))**2-(PIM1(3)+PIM2(3)+PIM4(3))**2
+     %   -(PIM1(2)+PIM2(2)+PIM4(2))**2-(PIM1(1)+PIM2(1)+PIM4(1))**2
+      QMP4=(PIM1(4)+PIM2(4)+PIM3(4))**2-(PIM1(3)+PIM2(3)+PIM3(3))**2
+     %   -(PIM1(2)+PIM2(2)+PIM3(2))**2-(PIM1(1)+PIM2(1)+PIM3(1))**2
+C DEFINE (PI+PK)**2 AS PSIK:
+      PS14=(PIM1(4)+PIM4(4))**2-(PIM1(3)+PIM4(3))**2
+     %    -(PIM1(2)+PIM4(2))**2-(PIM1(1)+PIM4(1))**2
+      PS21=(PIM2(4)+PIM1(4))**2-(PIM2(3)+PIM1(3))**2
+     %    -(PIM2(2)+PIM1(2))**2-(PIM2(1)+PIM1(1))**2
+      PS23=(PIM2(4)+PIM3(4))**2-(PIM2(3)+PIM3(3))**2
+     %    -(PIM2(2)+PIM3(2))**2-(PIM2(1)+PIM3(1))**2
+      PS24=(PIM2(4)+PIM4(4))**2-(PIM2(3)+PIM4(3))**2
+     %    -(PIM2(2)+PIM4(2))**2-(PIM2(1)+PIM4(1))**2
+      PS31=(PIM3(4)+PIM1(4))**2-(PIM3(3)+PIM1(3))**2
+     %    -(PIM3(2)+PIM1(2))**2-(PIM3(1)+PIM1(1))**2
+      PS34=(PIM3(4)+PIM4(4))**2-(PIM3(3)+PIM4(3))**2
+     %    -(PIM3(2)+PIM4(2))**2-(PIM3(1)+PIM4(1))**2
+      PD324=PIM3(4)*(PIM2(4)-PIM4(4))-PIM3(3)*(PIM2(3)-PIM4(3))
+     %     -PIM3(2)*(PIM2(2)-PIM4(2))-PIM3(1)*(PIM2(1)-PIM4(1))
+      PD314=PIM3(4)*(PIM1(4)-PIM4(4))-PIM3(3)*(PIM1(3)-PIM4(3))
+     %     -PIM3(2)*(PIM1(2)-PIM4(2))-PIM3(1)*(PIM1(1)-PIM4(1))
+      PD234=PIM2(4)*(PIM3(4)-PIM4(4))-PIM2(3)*(PIM3(3)-PIM4(3))
+     %     -PIM2(2)*(PIM3(2)-PIM4(2))-PIM2(1)*(PIM3(1)-PIM4(1))
+      PD214=PIM2(4)*(PIM1(4)-PIM4(4))-PIM2(3)*(PIM1(3)-PIM4(3))
+     %     -PIM2(2)*(PIM1(2)-PIM4(2))-PIM2(1)*(PIM1(1)-PIM4(1))
+      PD134=PIM1(4)*(PIM3(4)-PIM4(4))-PIM1(3)*(PIM3(3)-PIM4(3))
+     %     -PIM1(2)*(PIM3(2)-PIM4(2))-PIM1(1)*(PIM3(1)-PIM4(1))
+      PD124=PIM1(4)*(PIM2(4)-PIM4(4))-PIM1(3)*(PIM2(3)-PIM4(3))
+     %     -PIM1(2)*(PIM2(2)-PIM4(2))-PIM1(1)*(PIM2(1)-PIM4(1))
+C DEFINE Q*PI = QPI:
+      QP1=PIM1(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM1(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM1(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM1(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+      QP2=PIM2(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM2(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM2(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM2(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+      QP3=PIM3(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM3(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM3(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM3(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+      QP4=PIM4(4)*(PIM1(4)+PIM2(4)+PIM3(4)+PIM4(4))
+     %   -PIM4(3)*(PIM1(3)+PIM2(3)+PIM3(3)+PIM4(3))
+     %   -PIM4(2)*(PIM1(2)+PIM2(2)+PIM3(2)+PIM4(2))
+     %   -PIM4(1)*(PIM1(1)+PIM2(1)+PIM3(1)+PIM4(1))
+C DEFINE T(PI;PJ,PK)= TIJK:
+      T324=BWIGA1(QMP3)*FPIKM(SQRT(PS24),AMPI,AMPI)*GAMMA1
+      T314=BWIGA1(QMP3)*FPIKM(SQRT(PS14),AMPI,AMPI)*GAMMA1
+      T234=BWIGA1(QMP2)*FPIKM(SQRT(PS34),AMPI,AMPI)*GAMMA1
+      T214=BWIGA1(QMP2)*FPIKM(SQRT(PS14),AMPI,AMPI)*GAMMA1
+      T134=BWIGA1(QMP1)*FPIKM(SQRT(PS34),AMPI,AMPI)*GAMMA1
+      T124=BWIGA1(QMP1)*FPIKM(SQRT(PS24),AMPI,AMPI)*GAMMA1
+C DEFINE S(I,J;K,L)= SIJKL:
+      S1423=FRHO4(SQRT(PS14),AMPI,AMPI)*BWIGEPS(PS23)*GAMMA2
+      S2431=FRHO4(SQRT(PS24),AMPI,AMPI)*BWIGEPS(PS31)*GAMMA2
+      S3421=FRHO4(SQRT(PS34),AMPI,AMPI)*BWIGEPS(PS21)*GAMMA2
+C DEFINITION OF AMPLITUDE, FIRST THE [] BRACKETS:
+      BRACK1=T234+T324+2.*T314+T134+2.*T214+T124
+     %    +T134*PD234/QMP1+T124*PD324/QMP1
+     %    -3./2.*(S3421+S2431+2.*S1423)
+      BRACK2=T234*(1.+2.*PD134/QMP2)+3.*T324+3.*T124
+     %    +T134*(1.-PD234/QMP1)+2.*T214*PD314/QMP2
+     %    -T124*PD324/QMP1
+     %    -3./2.*(S3421+3.*S2431)
+      BRACK3=T324*(1.+2.*PD124/QMP3)+3.*T234+3.*T134
+     %    +T124*(1.-PD324/QMP1)+2.*T314*PD214/QMP3
+     %    -T134*PD234/QMP1
+     %    -3./2.*(3.*S3421+S2431)
+      BRACK4A=2.*T234*(1./2.+PD134/QQ*(QP2/QMP2+1.)+PD234/QQ)
+     %     +2.*T324*(1./2.+PD124/QQ*(QP3/QMP3+1.)+PD324/QQ)
+     %     +2.*T134*(1./2.+PD234/QQ*(QP1/QMP1+1.)
+     %              -1./2.*PD234/QMP1+PD134/QQ)
+     %     +2.*T124*(1./2.+PD324/QQ*(QP1/QMP1+1.)
+     %              -1./2.*PD324/QMP1+PD124/QQ)
+     %     +2.*T214*(PD314/QQ*(QP2/QMP2+1.)+PD214/QQ)
+     %     +2.*T314*(PD214/QQ*(QP3/QMP3+1.)+PD314/QQ)
+      BRACK4B=-3./2.*(S3421*(2.*(QP3-QP4)/QQ+1.)
+     %             +S2431*(2.*(QP2-QP4)/QQ+1.)
+     %             +S1423*2.*(QP1-QP4)/QQ)
+      BRACK4=BRACK4A+BRACK4B
+      DO 308 K=1,4
+      HCOMP1(K)=(PIM1(K)-PIM4(K))*BRACK1
+      HCOMP2(K)=PIM2(K)*BRACK2
+      HCOMP3(K)=PIM3(K)*BRACK3
+      HCOMP4(K)=(PIM1(K)+PIM2(K)+PIM3(K)+PIM4(K))*BRACK4
+ 308  CONTINUE
+      DO 309 I=1,4
+      HADCUR(I)=HCOMP1(I)+HCOMP2(I)+HCOMP3(I)-HCOMP4(I)
+      HADCUR(I)=COEF1*FRHO4(SQRT(QQ),AMPI,AMPI)*HADCUR(I)
+ 309  CONTINUE
+ 101   CONTINUE
+      ENDIF
+C M. Finkemeier et al. END
+      END
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/README b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/README
new file mode 100644 (file)
index 0000000..ebed37c
--- /dev/null
@@ -0,0 +1,117 @@
+
+INTRODUCTION:
+------------
+
+The  RChL-currents directory should be placed as subdirectory of
+TAUOLA/tauola/new-currents directory.
+
+It contains files which need to be compiled 
+and loaded with TAUOLA  to replace its native hadronic currents with 
+the new ones. 
+
+Technical details on modification for native tauola code are given
+at the end of this README
+
+Directory RChL-currents/tabler/a1 includes program used for 
+calculation of numerical table(s) (tables are encapsulated in FORTRAN code
+file initA1Tab.f) used by the formfactors. 
+
+Directory RChL-currents/tabler/k0pi_scalar contains the table 
+(tables are encapsulated in FORTRAN code
+file initKpiScalTab.f) that is the scalar form factor used in the Kpi current. 
+initKpiScalTab.f is based on absF0KPi.dat sent by M. Jamin.
+
+Directory RChL-currents/cross-check include programs for the tests and 
+the results of TAUOLA run with the RChL version for the channels, at present
+for 2 and some 3 scalar modes, that means with JAK= 4,5,7,14,15,16,22
+
+Directory RChL-currents/backup is temporary
+
+Physics documentation is given in sub-directory  RChL-currents/paper. 
+In particular detailed description of the currents is given in 
+the paper, section ...
+
+
+Content of all mentioned above sub-directories  is not loaded
+(thus is not needed) for creation of TAUOLA library 
+(to be created by makefile in TAUOLA/tauola directory). 
+
+
+
+LIST OF FILES:
+-------------
+
+The files listed below are stored in RChL-currents directory.
+On top of each file brief info is given. It includes main physics 
+reference paper, our documentation chapter no and
+input/output parameters.
+
+1. f3pi_rcht.f
+current for the 3pi (both \pi+\pi-\pi- and \pi0\pi0\pi-) channels
+
+2. fkkpi.f
+current for the channels K+K-pi- and K0 \bar K0 pi- 
+
+3. fkk0pi0.f
+current for the channel K0 K- pi0 
+
+
+4. wid_a1_fit.f
+Calculates the value \Gamma(a1->3 scalars) at the fixed Q2 interpolating
+the value from the table initA1Tab.f. 
+It is needed by f3pi_rcht.f  fkkpi.f fkk0pi0.f 
+
+5. initA1Tab.f is a table used by  wid_a1_fit.f
+   initA1Tab.f is a copy of the table /tabler/a1/wida1_qq_tot_2e5.out
+
+6. frho_pi.f
+current for pi- pi0 channel
+
+7. fkpipl.f
+current for both K0 pi- and K0 pi0 channels. 
+
+8. initKpiScalTab.f
+is a table with the scalar Kpi form factor. It is called in fkpipl.f
+if the dipswitch FFKPISCAL is  fixed to be FFKPISCAL = 1 
+
+9. ff_scal_kpi.f
+Calculates the value of the Kpi scalar form factor for FFKPISCAL = 1 
+in value_parameter.f (M. Jamin parametrization)
+ at the fixed Q2 interpolating the value from the table initKpiScalTab.f.
+
+10. fkpisc_pass.f
+an adopted private code of E. Passermar for teh scalar Kpi form factor, 
+it runs when  FFKPISCAL = 2
+
+11. fk0k.f
+current for K-K0 channel
+
+12. funct_rpt.f
+Functions used  in calculation  of form factors, that is  in f3pi_rcht.f,
+fkkpi.f, fkk0pi0.f, frho_pi.f, fkpipl.f, fk0k.f
+
+13. value_parameter.f 
+fixes the value of dipswitches as well as the values of the model parameters
+(masses and width of the resonances, constant of decays etc.). 
+Numerical values of latest depend on the mode.
+#####
+Note:  dipswitches may affect choices for non-RChL currents as well
+##### 
+
+14. parameter.inc : declaration  masses of resonances and other parameters 
+used in all above currents.
+
+15. funct_declar.inc : declaration of the functions determined in funct_rpt.f
+
+
+MODIFICATION FOR TAUOLA/tauola
+------------------------------
+
+To load the currents update only the following files of native tauola 
+need to be updated:
+tauola/makefile tauola/f3pi.f tauola/formf.f tauola/tauola.f .
+
+At present  svn diff methods should be used for details. For users
+help from the authors is necessary.
+Once project reach maturity extracts from these diffs will be copied here.
\ No newline at end of file
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/funct_declar.inc b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/funct_declar.inc
new file mode 100644 (file)
index 0000000..01a13ed
--- /dev/null
@@ -0,0 +1,17 @@
+C==============================================================================
+C  declaration of function in funct_rpt
+C==============================================================================
+      COMPLEX           ALP1_RPT,BETA_RPT,ALP3_R,BETA3_RR,ALP1R_1
+     &                 ,ALP1R_2,ALP2R_1,ALP2R_2,ALP1R_3,ALP2R_3
+     &                 ,A_RCHT,JPQ1_FUNCT,JPQ2_FUNCT,compsqrt,complog
+     &                 ,HKPI,FKPIPL_GS,FKPIEXP,FKPIPL,FKPIPL_TOT
+     &                 ,DINT_DELKP,R0scal_3pi,R2scal_3pi,ALP1_RPT_RHO1
+     &                 ,BETA_RPT_RHO1,BWsig,FFsig
+       
+      REAL              GRHO_RCHT,GRHO1_RCHT,LAMB_RCHT,ALP_R,BETA_R
+     &                  ,ALP_RR,BETA_RR,GGMKST,DR,CRR,GRHO_RCHT_NOSU2
+     &                  ,GRHO1_RCHT_NOSU2,QQ_KPI,GGMKSTPR, FKPIPL_DISP
+     &                  ,DECOUL,COUL3PART,fattcoul,frepcoul
+
+      DOUBLE PRECISION  SIGP,FKPISC_PASS     
+
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/parameter.inc b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/parameter.inc
new file mode 100644 (file)
index 0000000..12962a0
--- /dev/null
@@ -0,0 +1,67 @@
+C==============================================================================
+C  common blocks and constants 
+C==============================================================================
+
+      COMMON/RCHT_3PI/        FPI_RPT,FV_RPT,GV_RPT,FA_RPT,BETA_RHO,FK_RPT
+     &                       ,FV1_RPT,GV1_RPT
+      DOUBLE PRECISION        FPI_RPT,FV_RPT,GV_RPT,FA_RPT,BETA_RHO,FK_RPT
+     &                       ,FV1_RPT,GV1_RPT
+
+      COMMON/MASS_RES/        MRO,GRO,MRHO1,GRHO1,MMA1,MKSP,MKS0
+     &                       ,MF2,GF2,MF0,GF0,MSG,GSG,MOM,GOM,MPHI,GPHI
+     &                       ,MKST,MSIG,GSIG
+      DOUBLE PRECISION        MRO,GRO,MRHO1,GRHO1,MMA1,MKSP,MKS0
+     &                       ,MF2,GF2,MF0,GF0,MSG,GSG,MOM,GOM,MPHI,GPHI
+     &                       ,MKST,MSIG,GSIG
+
+      COMMON/MASS_STABLE/     MPIZ,MPIC,MMPI_AV,MKZ,MKC,MMK,MTAU,MNUTA
+     &                       ,META
+      DOUBLE PRECISION        MPIZ,MPIC,MMPI_AV,MKZ,MKC,MMK,MTAU,MNUTA
+     &                       ,META
+
+      DOUBLE PRECISION        PI   
+      DATA                    PI /3.141592653589793238462643D0/
+
+      COMPLEX                 i
+      DATA                    i/(0.,1.)/
+
+      COMMON/PAR_KKPI/        G2,G13,G4,G5,C125,C1256,C1235,C4,D123,D3
+      REAL                    G2,G13,G4,G5,C125,C1256,C1235,C4,D123,D3
+
+      COMMON/RES_MIXING_RCHT/ THETA
+      REAL                    THETA
+      COMMON/PAR_RHOPRIME/    COEF_GA,COEF_DE,phi_1,phi_2,grho2,mrho2
+      DOUBLE PRECISION        COEF_GA,COEF_DE,phi_1,phi_2,grho2,mrho2
+
+      COMMON/PAR_KPI/         MKSTPR,GAMMA_KST,GAMMA_KSTPR,GAMMA_RCHT,Ht0
+     &                       ,lap_KPI,lapp_KPI,c1_KPI,c2_KPI
+      DOUBLE PRECISION        MKSTPR,GAMMA_KST,GAMMA_KSTPR,GAMMA_RCHT,Ht0
+     &                       ,lap_KPI,lapp_KPI,c1_KPI,c2_KPI
+
+      COMMON/VERSION_VECFF/   FFVEC,FFKPIVEC,FFKKVEC,FFKPISCAL,FF3PISCAL
+     &                       ,FF3PIRHOPR,FFKKPIRHOPR,FFKKPIKPR,FF2PIRHO
+     &                       ,FCOUL
+      INTEGER                 FFVEC,FFKPIVEC,FFKKVEC,FFKPISCAL,FF3PISCAL
+     &                       ,FF3PIRHOPR,FFKKPIRHOPR,FFKKPIKPR,FF2PIRHO
+     &                       ,FCOUL
+
+      COMMON/FF0SCKPI/        F00
+      REAL                    F00
+
+      COMMON/KPISC_EM/        lnC,lambda0
+      DOUBLE PRECISION        lnC,lambda0
+
+      COMMON/SCAL_3PI/        a00_3piscal,b00_3piscal,c00_3piscal
+     &                       ,d00_3piscal,x00_3piscal,a02_3piscal
+     &                       ,b02_3piscal,c02_3piscal,d02_3piscal 
+     &                       ,x02_3piscal,ALPHA0_3PI,ALPHA1_3PI
+     &                       ,GAMMA0_3PI,GAMMA1_3PI,MMF0
+     &                       ,alpsig,betasig,gamsig,delsig,rsigma
+
+      DOUBLE PRECISION        a00_3piscal,b00_3piscal,c00_3piscal
+     &                       ,d00_3piscal,x00_3piscal,a02_3piscal
+     &                       ,b02_3piscal,c02_3piscal,d02_3piscal 
+     &                       ,x02_3piscal,ALPHA0_3PI,ALPHA1_3PI
+     &                       ,GAMMA0_3PI,GAMMA1_3PI,MMF0
+     &                       ,alpsig,betasig,gamsig,delsig,rsigma
\ No newline at end of file
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/f3pi_rcht.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/f3pi_rcht.f
new file mode 100644 (file)
index 0000000..203c3aa
--- /dev/null
@@ -0,0 +1,245 @@
+C     JAK = 5  
+C
+      COMPLEX FUNCTION F3PI_RCHT(IFORM,QQ,SA,SB)
+      IMPLICIT NONE
+      INTEGER                    IFORM
+      REAL                             QQ,SA,SB
+C.......................................................................
+C.
+C.    F3PI - RchT version of the hadronic curent used in TAUOLA
+C.    References: [1] arXiv:0911.4436 (hep-ph) P. Roig et al.
+C.                eqs (5)-(9), (32) gives the main part of the current
+C                 (the part without the sigma contribution) 
+C.                [2] arXiv:1203.3955, 
+C.                the manual for the 3pi current without the sigma contribution
+C.                [3] http://annapurna.ifj.edu.pl/~wasm/RChL/RChLa1.pdf
+C                     eq (3) the sigma meson contribution to the 3 pi current
+C.    Inputs    : QQ,SA,SB - invariant masses**2  [GeV**2]
+C.              : IFORM formfactor no.
+C.    Outputs   : F3PI_RCHT formfactor value
+C.
+C.    COMMON    : RCHT_3PI content is defined in this routine
+C.
+C.    Calls     : functions from file ./funct_rpt.f,  ./fa1rchl.f
+C.    Called    : from file ../formf.f
+C.    Author    : O.S
+C.    Created   :
+C.    Modified  : 1. Feb 2011
+C                 a part with scalars added on the 1st May 2012
+C.......................................................................
+       include '../parameter.inc'
+       include '../funct_declar.inc'
+
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS    
+      INTEGER          J3PI  
+      REAL wid_a1_fit 
+*
+      CHARACTER*(*) CRNAME
+      PARAMETER(    CRNAME = 'F3PI' )
+*
+      INTEGER IDK
+      DOUBLE PRECISION M1,M2,M3,M1SQ,M2SQ,M3SQ
+      REAL GGMA1
+      REAL S1,S2,S3,FACT_RPT
+*
+      REAL R_RPT,KAP_RPT,FACT_ADD_RPT
+      COMPLEX ALP21_RPT,ALP22_RPT,ALP11_RPT,ALP12_RPT
+     $       ,BETA1_RPT,BETA2_RPT,BETA1_RPT_RHO1,ALP11_RPT_RHO1
+     $       ,ALP21_RPT_RHO1,ALP22_RPT_RHO1
+      COMPLEX FA1RCHL
+      INTEGER IFIRST
+      DATA IFIRST/0/
+
+C. GENERAL INITIALIZATION
+C. ======================
+
+      IF (IFIRST.EQ.0) THEN
+        IFIRST = 1     
+        PRINT *,' In F3pi: chpt + 1 resonance + 2 resonance (RchT)'
+      END IF
+
+C******************************************
+C    Initilisation of the mass of the particles
+C*****************************************
+        call rchl_parameters(5)
+
+C. We impose isospin symmetry requesting that charged and neutral pion mass
+C. are equal. This may need to be changed MMPI_AV = (2.*MPIC+MPIZ)/3.
+
+       M1 = MMPI_AV      
+        M2 = MMPI_AV     
+        M3 = MMPI_AV     
+
+
+C. normalization factor to compensate on different  
+C. convention for normalization constant  used in  TAUOLA and 
+C. TAUOLA documentation on one side and paper [1] on other.
+        FACT_ADD_RPT = 1./FPI_RPT
+
+
+
+C. FUNCTION VALUE, GENERAL CASE
+C. ============================
+
+C     Function value set to 0
+      F3PI_RCHT = CMPLX(0.,0.)
+
+C.    First determine whether we are doing pi-2pi0 or 3pi.
+C. we  CH3PI GET information (eg from phase space geneator of tauola.f)
+C. whether it is 3 prong J3pi=1 or 1 prong J3pi=2 final state of 3 pion.
+      CALL CH3PIGET(J3pi)
+
+      IF (J3pi.EQ.2) THEN  ! it is pi 2pi0
+          IDK     = 1
+         R_RPT   = -1. 
+          KAP_RPT = 0.5 
+      ELSE IF(J3pi.EQ.1) THEN              !  it is 3pi
+          IDK     = 2
+         R_RPT   = 1.
+         KAP_RPT = 1.
+      END IF
+
+      M1SQ = M1*M1
+      M2SQ = M2*M2
+      M3SQ = M3*M3
+
+
+C. Calculation, IFORM = 1 or 2.
+C.   VECTOR 3 PION FORM FACTORS
+C. ============================ 
+      IF (IFORM.EQ.1.OR.IFORM.EQ.2) THEN
+        S1 = SA     ! t variable in  [2] (!!! vec1 = v2 !!!)
+        S2 = SB    ! s variable in [2]
+        S3 = QQ-SA-SB+M1SQ+M2SQ+M3SQ
+
+        IF (S3.LE.0..OR.S2.LE.0.) RETURN
+
+C.    FUNCTIONS BETA_RPT, ALP1_RPT are coded in ./funct_rpt.f
+C.    they are defined in Eq (6) of [2]
+        BETA1_RPT = BETA_RPT(QQ,S1,S2,M1SQ,M2SQ,M3SQ,MRO,MRHO1,GRHO1)
+       ALP11_RPT = ALP1_RPT(QQ,S1,S2,M1SQ,M2SQ,M3SQ,MRO,MRHO1,GRHO1)
+
+        F3pi_RCHT = - 2.*SQRT(2.)/(3.*FPI_RPT) -
+     $    SQRT(2.)*FV_RPT*GV_RPT/(3.*FPI_RPT**3)*ALP11_RPT +
+     $     4.*FA_RPT*GV_RPT/(3.*FPI_RPT**3)*BETA1_RPT*QQ
+     $     *FA1RCHL(QQ)
+
+C.    FA1RCHL(QQ) is the a1 propagator, is it coded in ./fa1rchl.f
+
+     
+        F3pi_RCHT =  F3pi_RCHT * R_RPT  
+   
+C.
+C.      The contribution from the scalar (sigma) resonance
+C.      
+      IF(FF3PISCAL.EQ.1) THEN
+C.      This parametrization does not fit
+         IF(J3PI.EQ.1) THEN
+        F3pi_RCHT = F3pi_RCHT + (
+     &            sqrt(2.)*(R0scal_3pi(QQ,S1)+R0scal_3pi(QQ,S2)) +
+     &            (R2scal_3pi(QQ,S1)+R2scal_3pi(QQ,S2))
+     &            )
+         ELSE IF(J3PI.EQ.2) THEN
+        F3pi_RCHT = F3pi_RCHT - (
+     &            (R0scal_3pi(QQ,S1)+R0scal_3pi(QQ,S2)) -
+     &            sqrt(2.)*(R2scal_3pi(QQ,S1)+R2scal_3pi(QQ,S2))
+     &            )
+         ENDIF
+       ELSE IF(FF3PISCAL.EQ.2) THEN
+C.    A new parametrization 10.02.2013 for the scalar contribution
+C.       analytical formulae in [3], eqs (3)-(6), 
+C.       functions BWsig(Mm,Gg,Qx), FFsig(QQ,Qx) coded in ./funct_rpt.f
+C.
+         IF(J3PI.EQ.1) THEN
+        F3pi_RCHT = F3pi_RCHT + 
+     &              SQRT(2.)*FV_RPT*GV_RPT/(3.*FPI_RPT**3)*
+     &             (alpsig*BWsig(MSIG,GSIG,S1)*FFsig(QQ,S1) +
+     &              betasig*BWsig(MSIG,GSIG,S2)*FFsig(QQ,S2))
+     &             +4.*FA_RPT*GV_RPT/(3.*FPI_RPT**3)*
+     &             (gamsig*BWsig(MSIG,GSIG,S1)*FFsig(QQ,S1) +
+     &              delsig*BWsig(MSIG,GSIG,S2)*FFsig(QQ,S2))
+     $     *FA1RCHL(QQ) 
+        ELSE IF(J3PI.EQ.2) THEN
+        F3pi_RCHT = F3pi_RCHT - (
+     &              SQRT(2.)*FV_RPT*GV_RPT/(3.*FPI_RPT**3)*
+     &             alpsig*BWsig(MSIG,GSIG,S3)*FFsig(QQ,S3) 
+     &             +4.*FA_RPT*GV_RPT/(3.*FPI_RPT**3)*
+     &             gamsig*BWsig(MSIG,GSIG,S3)*FFsig(QQ,S3) 
+     $     *FA1RCHL(QQ) )
+         ENDIF
+
+C.
+C.     The Coulomb interaction effects for the final pions
+C.          only for pi-pi+pi- should be included
+C.     Functions fattcoul(m1,m2,s),frepcoul(m1,m2,s) are coded in ./funct_rpt.f
+C.          
+      IF (FCOUL.EQ.1.AND.(J3pi.EQ.1)) THEN !  it is 3pi
+        F3PI_RCHT = F3PI_RCHT*sqrt(fattcoul(m2,m3,s1)
+     &      *fattcoul(m1,m3,s2)*frepcoul(m1,m2,s3))
+      END IF        
+       ENDIF
+
+
+C.
+C. The factor 1/FACT_ADD_RPT = FPI_RPT comes to compensate an additional factor
+C.  in the hadronic current F3pi_rcht  above compare with eq (6) in [2]
+
+
+       F3pi_RCHT = F3pi_RCHT/FACT_ADD_RPT 
+
+C. Calculation, for  IFORM = 3 is not needed
+C. ======================= 
+C.   F3PI_RCHT is set to zero in ../formf.f. 
+
+C. Calculation, IFORM = 4.
+C. PSEUDOSCALAR 3 PION FORM FACTOR
+C. ======================= 
+      ELSEIF (IFORM.EQ.4) THEN
+        S1 = SA
+        S2 = SB
+        S3 = QQ-SA-SB+M1SQ+M2SQ+M3SQ
+
+        IF (S3.LE.0..OR.S2.LE.0.) RETURN
+
+C. Functions  ALP21_RPT,  ALP22_RPT are Eq(10) in [2]
+C. GRHO_RCHT, GRHO1_RCHT s1 or s2 dependent widths of rho or rho1
+C. coded in ./funct_rpt.f 
+        ALP21_RPT = 3.*GV_RPT*S1*M1SQ*(S3-S2)/
+     &   (FV_RPT*QQ*(QQ-M1SQ)*(1.+BETA_RHO))*
+     &    (1./(S1-MRO**2+i*MRO*GRHO_RCHT(S1,MRO))+
+     &     BETA_RHO/(S1-MRHO1**2+i*MRHO1*GRHO1_RCHT(S1,MRHO1,GRHO1)))
+        ALP22_RPT = 3.*GV_RPT*S2*M1SQ*(S3-S1)/
+     &   (FV_RPT*QQ*(QQ-M1SQ)*(1.+BETA_RHO))*
+     &    (1./(S2-MRO**2+i*MRO*GRHO_RCHT(S2,MRO))+
+     &     BETA_RHO/(S2-MRHO1**2+i*MRHO1*GRHO1_RCHT(S2,MRHO1,GRHO1)))
+
+C.  PSEUDOSCALAR 3 PION FORM FACTOR. Eqs (9) in [2]
+        F3PI_RCHT = SQRT(2.)/(3.*FPI_RPT*QQ*(QQ-M1SQ))*
+     &      M1SQ*(3.*(S3-M3SQ)-QQ*(1.+2.*KAP_RPT*R_RPT))
+
+        F3PI_RCHT = F3PI_RCHT -  sqrt(2.)*FV_RPT*GV_RPT/(3.*FPI_RPT**3)*
+     &   ( ALP21_RPT + ALP22_RPT)
+
+C.
+C. The factor 1/FACT_ADD_RPT = FPI_RPT comes to compensate an additional factor
+C.  in the hadronic current F3pi_rcht  above compare with eq (9) in [2]
+       F3PI_RCHT = R_RPT * F3PI_RCHT/FACT_ADD_RPT
+
+C.
+C.     The Coulomb interaction effects for the final pions
+C.          only for pi-pi+pi- should be included
+C.     Functions fattcoul(m1,m2,s),frepcoul(m1,m2,s) are coded in ./funct_rpt.f
+C. 
+      IF (FCOUL.EQ.1.AND.(J3pi.EQ.1)) THEN !  it is 3pi
+        F3PI_RCHT = F3PI_RCHT*sqrt(fattcoul(m2,m3,s1)
+     &      *fattcoul(m1,m3,s2)*frepcoul(m1,m2,s3))
+      END IF
+
+      END IF
+
+      RETURN
+      END
+
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/funct_3pi.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_3pi/funct_3pi.f
new file mode 100644 (file)
index 0000000..4abc1ae
--- /dev/null
@@ -0,0 +1,160 @@
+C **********************************************************
+C library of functions used in calculation of currents 
+C references:
+C [1]   arXiv:0911.4436 (hep-ph)  D. Gomez Dumm et al. (tau -> 3pi nu) 
+C [2]   arXiv:0911.2640 (hep-ph) D. Gomezz Dumm et al. (tau -> KKpi nu)
+C [3]   arXiv:0807.4883 (hep-ph) D. R. Boito et al. (tau -> Kpi nu)
+C [4]   P. Roig, talk at (tau -> 2 pi nu)
+C [5]   arXiv:0803.2039  (hep-ph) E. Arganda et al., Appendix B (tau -> KK nu)
+C **********************************************************
+
+      FUNCTION ALP1_RPT(Q,S,T,M1SQ,M2SQ,M3SQ,
+     $                           MMM,MMM2,GGG)
+      IMPLICIT NONE
+      REAL                      Q,S,T 
+      DOUBLE PRECISION                M1SQ,M2SQ,M3SQ,
+     &                           MMM,MMM2,GGG
+C **********************************************************
+C     COMPLEX FUNCTION ALP1_RPT;  
+C     one-resonance contribution to 
+C     F3pi_rcht(iform=1,2) at f3pi_rcht.f;
+C     corrected  formula (8) of REF [1] including rho1, 
+C     the factor sqrt(2)*FV_RPT*GV_RPT/(3.*FPI_RPT**3) is included in
+C     F3pi_rcht(iform1=1,2) at f3pi_rcht.f 
+C **********************************************************
+      REAL U
+      include '../parameter.inc'
+      include '../funct_declar.inc'
+
+       U= Q-S-T+M1SQ+M2SQ+M3SQ
+       ALP1_RPT = - 3.*S/(1.+BETA_RHO)*
+     $     (1./(S-MMM**2+i*MMM*GRHO_RCHT(S,MMM))+
+     $      BETA_RHO/(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG)))
+     $      +(2.*GV_RPT/FV_RPT-1.)*
+     $      ((2.*Q-2.*S-U)/(1.+BETA_RHO)*
+     $      (1./(S-MMM**2+i*MMM*GRHO_RCHT(S,MMM))+
+     $      BETA_RHO/(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG)))+
+     $      (U-S)/(1.+BETA_RHO)*
+     $      (1./(T-MMM**2+i*MMM*GRHO_RCHT(T,MMM))+
+     $       BETA_RHO/(T-MMM2**2+i*MMM2*GRHO1_RCHT(T,MMM2,GGG))))
+
+      RETURN
+
+      END
+
+
+
+      FUNCTION BETA_RPT(Q,S,T,M1SQ,M2SQ,M3SQ,MMM,MMM2,GGG)
+      IMPLICIT NONE
+      REAL                      Q,S,T
+      DOUBLE PRECISION                M1SQ,M2SQ,M3SQ,MMM,MMM2,GGG
+C **********************************************************
+C     COMPLEX FUNCTION BETA_RPT ; two-resonance contribution to 
+C     F3pi_rcht(iform=1,2) at f3pi_rcht.f;
+C     corrected  formula (8) of REF [1] including rho1, 
+C     the factor 4*FA_RPT*GV_RPT/(3.*FPI_RPT**3)*QQ/D_a1(QQ) 
+C     is included in F3pi_rcht(iform1=1,2) at f3pi_rcht.f  
+C **********************************************************
+      include '../parameter.inc'
+      include '../funct_declar.inc'
+
+      REAL U,LAM0_RPT,LAM1_RPT,LAM2_RPT,FF1_RPT,FF2_RPT,FF_REL    
+
+      FF_REL = FPI_RPT*FPI_RPT/(FV_RPT*FV_RPT)
+
+       LAM1_RPT = FPI_RPT*FPI_RPT/(2.D0*SQRT(2.D0)*FA_RPT*GV_RPT)
+       LAM2_RPT = -(1.-2.*FF_REL)*LAM1_RPT
+       LAM0_RPT = (LAM1_RPT + LAM2_RPT)/4.
+
+       U= Q-S-T+M1SQ+M2SQ+M3SQ
+  
+      FF1_RPT = -LAM0_RPT*M1SQ/Q +LAM1_RPT*S/Q+LAM2_RPT
+      FF2_RPT = -LAM0_RPT*M1SQ/Q +LAM1_RPT*T/Q+LAM2_RPT
+
+      BETA_RPT = -3.*(LAM1_RPT+LAM2_RPT)*S/(1.+BETA_RHO)*
+     $     (1./(S-MMM**2+i*MMM*GRHO_RCHT(S,MMM))+
+     $      BETA_RHO/(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG)))+
+     $         FF1_RPT*(2.*Q+S-U)/(1.+BETA_RHO)*
+     $     (1./(S-MMM**2+i*MMM*GRHO_RCHT(S,MMM))+
+     $      BETA_RHO/(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG)))+
+     $         FF2_RPT*(U-S)/(1.+BETA_RHO)*
+     $     (1./(T-MMM**2+i*MMM*GRHO_RCHT(T,MMM))+
+     $      BETA_RHO/(T-MMM2**2+i*MMM2*GRHO1_RCHT(T,MMM2,GGG)))
+
+      RETURN
+
+      END
+
+      FUNCTION ALP1_RPT_RHO1(Q,S,T,M1SQ,M2SQ,M3SQ,
+     $                           MMM,MMM2,GGG)
+      IMPLICIT NONE
+      REAL                      Q,S,T 
+      DOUBLE PRECISION                M1SQ,M2SQ,M3SQ,
+     &                           MMM,MMM2,GGG
+C **********************************************************
+C     COMPLEX FUNCTION ALP1_RPT_RHO1;  
+C     one-resonance contribution to 
+C     F3pi_rcht(iform=1,2) at f3pi_rcht.f;
+C     corrected  formula (8) of REF [1] including rho1, 
+C     the factor sqrt(2)*FV_RPT*GV_RPT/(3.*FPI_RPT**3) is included in
+C     F3pi_rcht(iform1=1,2) at f3pi_rcht.f 
+C **********************************************************
+      REAL U
+      include '../parameter.inc'
+      include '../funct_declar.inc'
+
+       U= Q-S-T+M1SQ+M2SQ+M3SQ
+       ALP1_RPT_RHO1 = - 3.*S
+     $      /(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG))
+     $      +(2.*GV1_RPT/FV1_RPT-1.)*
+     $      (  (2.*Q-2.*S-U)
+     $      /(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG))+
+     $      (U-S)/(T-MMM2**2+i*MMM2*GRHO1_RCHT(T,MMM2,GGG))  )
+
+      RETURN
+
+      END
+
+
+
+      FUNCTION BETA_RPT_RHO1(Q,S,T,M1SQ,M2SQ,M3SQ,MMM,MMM2,GGG)
+      IMPLICIT NONE
+      REAL                      Q,S,T
+      DOUBLE PRECISION                M1SQ,M2SQ,M3SQ,MMM,MMM2,GGG
+C **********************************************************
+C     COMPLEX FUNCTION BETA_RPT_RHO1 ; two-resonance contribution to 
+C     F3pi_rcht(iform=1,2) at f3pi_rcht.f;
+C     corrected  formula (8) of REF [1] including rho1, 
+C     the factor 4*FA_RPT*GV_RPT/(3.*FPI_RPT**3)*QQ/D_a1(QQ) 
+C     is included in F3pi_rcht(iform1=1,2) at f3pi_rcht.f  
+C **********************************************************
+      include '../parameter.inc'
+      include '../funct_declar.inc'
+
+      REAL U,LAM0_RPT,LAM1_RPT,LAM2_RPT,FF1_RPT,FF2_RPT,FF_REL    
+
+      FF_REL = FPI_RPT*FPI_RPT/(FV1_RPT*FV1_RPT)
+
+       LAM1_RPT = FPI_RPT*FPI_RPT/(2.D0*SQRT(2.D0)*FA_RPT*GV1_RPT)
+       LAM2_RPT = -(1.-2.*FF_REL)*LAM1_RPT
+       LAM0_RPT = (LAM1_RPT + LAM2_RPT)/4.
+
+       U= Q-S-T+M1SQ+M2SQ+M3SQ
+  
+      FF1_RPT = -LAM0_RPT*M1SQ/Q +LAM1_RPT*S/Q+LAM2_RPT
+      FF2_RPT = -LAM0_RPT*M1SQ/Q +LAM1_RPT*T/Q+LAM2_RPT
+
+      BETA_RPT_RHO1 = -3.*(LAM1_RPT+LAM2_RPT)*S
+     $     /(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG)) +
+     $         FF1_RPT*(2.*Q+S-U)
+     $     /(S-MMM2**2+i*MMM2*GRHO1_RCHT(S,MMM2,GGG))+
+     $         FF2_RPT*(U-S)
+     $     /(T-MMM2**2+i*MMM2*GRHO1_RCHT(T,MMM2,GGG))
+
+      RETURN
+
+      END
+
+
+
+
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/FA1RCHL.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/FA1RCHL.f
new file mode 100644 (file)
index 0000000..c3e599d
--- /dev/null
@@ -0,0 +1,63 @@
+      COMPLEX FUNCTION FA1RCHL(QQ)
+      IMPLICIT NONE
+      REAL                     QQ
+      DOUBLE PRECISION M1,M2,M3
+      REAL GGMA1
+      REAL wid_a1_fit 
+C.......................................................................
+C.
+C.    FA1CHL - RchT version of  the A1 propagator
+C.
+C.    Inputs    : QQ - invariant masses**2  [GeV**2]
+C.    Outputs   : FA1RCHL formfactor value at QQ
+C.
+C.    COMMON    : RCHT_3PI content is defined in this routine
+C.
+C.    Calls     : functions from file ./wid_a1_fit.f
+C.    Called    : from file f3pi_rcht.f, fkkpi.f, fkk0pi0.f
+C************************************************************************
+       include '../parameter.inc'
+       include '../funct_declar.inc'
+C******************************************
+C    Initilisation of the mass of the particles
+C*****************************************
+        call rchl_parameters(5)
+
+c$$$C we impose isospin symmetry requesting that charged and neutral pion mass
+c$$$C are equal. This may need to be changed
+c$$$        MMPI_AV = (2.*MPIC+MPIZ)/3.
+
+       M1 = MMPI_AV      
+        M2 = MMPI_AV     
+        M3 = MMPI_AV  
+c
+C   Function wid_a1_fit.f calculates the energy dependence of 
+C   the a1 meson width
+C   
+      IF(QQ.GE.(M1+M2+M3)**2) THEN
+        GGMA1 = wid_a1_fit(QQ)
+      ELSE 
+        GGMA1 = 0.
+      ENDIF
+
+
+      FA1RCHL = 1./(QQ-MMA1*MMA1+i*MMA1*GGMA1)
+
+      RETURN
+      END
+
+C to switch on/off remotely option for scalar contr. 
+C to FORM1 FORM2 of 3 pi mode.     
+      subroutine getFF3PISCAL(INUM)
+      INTEGER INUM
+      include '../parameter.inc'
+      INUM=FF3PISCAL
+      return
+      end
+
+      subroutine setFF3PISCAL(INUM)
+      INTEGER INUM
+      include '../parameter.inc'
+      FF3PISCAL=INUM
+      return
+      end
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/ffwid3pi.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/ffwid3pi.f
new file mode 100644 (file)
index 0000000..4758434
--- /dev/null
@@ -0,0 +1,184 @@
+      DOUBLE PRECISION FUNCTION FFWID3PI(QQ,S1,S3)
+      IMPLICIT NONE      
+      DOUBLE PRECISION                   QQ,S1,S3
+C **************************************************************
+C     Input:  QQ S1 S3   ! mpi-pi-pi+**2   mpi-pi+**2  mpi-pi-**2
+C     Calls: functions FORM1, FORM2, FORM4
+C     Uses constants: tau mass, pi mass, normalization constant.
+C     Load: Initialized tauola library, 
+C     Output:  d\Gamma(tau --> 3pi nu)/(dQQ dS1 dS3)
+C     Remark: If QQ S1 S3 are outside of the phase space 
+C             function FFWID3PI returns zero.
+C **************************************************************
+      COMPLEX F1,F2,F4, FORM1,FORM2, FORM4
+      DOUBLE PRECISION V11,V12,V22,GGF2,VUD2,ABS1,QQMIN,
+     &                 QQMAX,S3MAX,S3MIN,S1MIN,S1MAX
+      REAL XQQ,XS1,XS3, XS2,RQQ 
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      DOUBLE PRECISION  XLAM,X,Y,Z
+      DOUBLE PRECISION  XAMPI2
+      DOUBLE PRECISION  GETFPIRPT
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      DOUBLE PRECISION        PI   
+      DATA                    PI /3.141592653589793238462643D0/
+      INTEGER  IMODE,IDUM,IFRCHL
+      REAL RRQ,RCHLWIDA1PI
+
+
+      XLAM(X,Y,Z)= sqrt(abs((x-y-z)**2 - 4.*y*z))
+     
+      ABS1 = 1.d-5
+
+
+      GGF2 = GFERMI**2
+      VUD2 = CCABIB**2
+
+
+C     TO CHANGE THE VARIABLES TO SINGLE PRECISION
+C     INPUT FOR FORM1,FORM2,FORM4 IS SINGLE PRECISION
+
+      XQQ = QQ
+      XS1 = S1
+      XS2 = QQ -S1-S3 + 3.*AMPI**2
+      XS3 = S3
+      XAMPI2 = AMPI**2
+C     Limits for PHASE SPACE
+C     Limits for QQ
+      QQMIN = 9.D0*AMPI**2
+      QQMAX  = (AMTAU-AMNUTA)**2
+
+C     Limits for S1
+      S1MAX=(DSQRT(QQ) - AMPI)**2 -ABS1
+      S1MIN=4.D0*AMPI**2 +ABS1
+
+C    LIMIT FOR XS3
+      S3MAX = (QQ - AMPI**2)**2 - 
+     &    ( XLAM(QQ,S1,XAMPI2) 
+     &         - XLAM(S1,XAMPI2,XAMPI2) )**2
+      S3MIN = (QQ - AMPI**2)**2 - 
+     &    (XLAM(QQ,S1,XAMPI2) 
+     &          + XLAM(S1,XAMPI2,XAMPI2) )**2
+
+      S3MAX = S3MAX/4./S1
+      S3MIN = S3MIN/4./S1
+
+C     Check on PHASE SPACE
+C 
+      IF((XS2.LE.0.) .OR.(S3MAX.LE.S3MIN)
+     &   .OR.(XS1.LE.S1MIN).OR.(XS1.GE.S1MAX)
+     &   .OR.(XS3.LE.S3MIN).OR.(XS3.GE.S3MAX)
+     &   .OR.(QQ.LE.QQMIN).OR.(QQ.GE.QQMAX)
+     &    )  THEN 
+        FFWID3PI = 0.D0
+        RETURN
+      ENDIF
+
+C
+      V11 = -XS1+4.D0*AMPI**2 -(XS2-XS3)**2/(4.D0*XQQ)
+      V22 = -XS2+4.D0*AMPI**2 - (XS3-XS1)**2/(4.D0*XQQ)
+      V12 = 0.5D0*(XS3-XS1-XS2+4.D0*AMPI**2)-0.25D0*(XS3-XS2)*(XS3-XS1)/XQQ
+
+
+      F1 = FORM1(0,XQQ,XS1,XS2)
+      F2 = FORM2(0,XQQ,XS2,XS1)
+      F4 = FORM4(0,XQQ,XS2,XS1,XS3)
+
+C formula 3.46 of [3]   
+      FFWID3PI = ABS(F1*CONJG(F1))*V11+ABS(F2*CONJG(F2))*V22+
+     $       2.D0*REAL(F1*CONJG(F2))*V12 
+
+      CALL IFGFACT(2,IMODE,IDUM)
+      CALL INIRChLget(IFRCHL)
+      IF (IMODE.EQ.0) THEN
+C      VERSION A: The 3 pion contribution to the a1 width  
+C      factor of a1 phase space and zeroing a1 propagator etc.is 
+C      done in RCHLWIDA1PI 
+       RQQ=QQ
+       IF (IFRCHL.EQ.1) THEN
+C       CASE OF RCHL 
+        FFWID3PI   = RCHLWIDA1PI(RQQ,FFWID3PI)
+       ELSE
+C       NOT READY YET
+        WRITE(*,*) 'FFWID3PI is not ready for non rchl currents'
+        STOP
+       ENDIF
+C      to get the total a1 width the contribution from (KKPI)- and K-K0pi0
+C      channels have to be added
+      ELSE
+C      VERSION B: calculation of 3 pion spectra in tau to 3pi nu channel.
+
+C      factor for phase space of tau to XQQ nu decay and contribution from F4
+C      (formula 3.21 of [3]) 
+
+      FFWID3PI = (- FFWID3PI/3.D0*(1.D0+2.D0*XQQ/(AMTAU**2))+ 
+     $       XQQ*ABS(F4*CONJG(F4)))*(AMTAU**2/XQQ-1.D0)**2
+
+C Flux factor and normalization const.
+        FFWID3PI =     
+     &       GGF2*VUD2/(128.D0*(2.D0*PI)**5*AMTAU)/2.d0
+     &            *FFWID3PI  
+       IF (IFRCHL.EQ.1) THEN
+C       CASE OF RCHL 
+C RChL normalization constant 
+        FFWID3PI =FFWID3PI/GETFPIRPT(1)**2
+       ELSE
+C       NOT READY YET
+        WRITE(*,*) 'FFWID3PI is not ready for non rchl currents'
+        STOP
+       ENDIF
+
+      ENDIF
+
+      RETURN
+      END
+
+      REAL FUNCTION RCHLWIDA1PI(RQQ,FFWID3PI)
+C The 3 pion contribution to the a1 width   
+C (in [3] simple pretabulation is used through formula 3.48)
+C for calculation of g(QQ) of 3.45 3.46 of [3] in RChL style
+C a1 propagator has to be taken with the zero width.
+
+      IMPLICIT NONE
+      COMPLEX FA1RCHL
+      REAL RQQ
+      DOUBLE PRECISION FFWID3PI
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      DOUBLE PRECISION  XLAM,X,Y,Z
+      DOUBLE PRECISION  XAMPI2
+      DOUBLE PRECISION  GETFPIRPT
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+
+      COMMON/RCHT_3PI/        FPI_RPT,FV_RPT,GV_RPT,FA_RPT,BETA_RHO,FK_RPT
+     &                       ,FV1_RPT,GV1_RPT
+      DOUBLE PRECISION        FPI_RPT,FV_RPT,GV_RPT,FA_RPT,BETA_RHO,FK_RPT
+     &                       ,FV1_RPT,GV1_RPT
+      DOUBLE PRECISION        PI   
+      DATA                    PI /3.141592653589793238462643D0/
+
+C     AMA1 should be replaced by variable from the rchl namespace.
+      RCHLWIDA1PI=- 1.0/REAL(FA1RCHL(RQQ)*CONJG(FA1RCHL(RQQ)))/RQQ**2 
+     $            /(96.D0*8.D0*PI**3*AMA1)/(FA_RPT**2*FPI_RPT**2)
+     $            *FFWID3PI/2.d0 
+      END
+
+      DOUBLE PRECISION FUNCTION  GETFPIRPT(I)
+      IMPLICIT NONE
+      COMMON/RCHT_3PI/        FPI_RPT,FV_RPT,GV_RPT,FA_RPT,BETA_RHO,FK_RPT
+     &                       ,FV1_RPT,GV1_RPT
+      DOUBLE PRECISION        FPI_RPT,FV_RPT,GV_RPT,FA_RPT,BETA_RHO,FK_RPT
+     &                       ,FV1_RPT,GV1_RPT
+      INTEGER I
+      GETFPIRPT=FPI_RPT
+      END
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/funct_rpt.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/funct_rpt.f
new file mode 100644 (file)
index 0000000..d2dffe3
--- /dev/null
@@ -0,0 +1,377 @@
+
+C **********************************************************
+C library of functions used in calculation of currents 
+C references:
+C [1]   arXiv:0911.4436 (hep-ph)  D. Gomez Dumm et al. (tau -> 3pi nu) 
+C [2]   arXiv:0911.2640 (hep-ph) D. Gomezz Dumm et al. (tau -> KKpi nu)
+C [3]   arXiv:0807.4883 (hep-ph) D. R. Boito et al. (tau -> Kpi nu)
+C [4]   P. Roig, talk at (tau -> 2 pi nu)
+C [5]   arXiv:0803.2039  (hep-ph) E. Arganda et al., Appendix B (tau -> KK nu)
+C **********************************************************
+      FUNCTION GRHO_RCHT(XS,XMMM)
+      IMPLICIT NONE
+      REAL               XS
+      DOUBLE PRECISION      XMMM
+C **********************************************************
+C     REAL FUNCTION Gamma Rho ; energy-dependent width of  rho meson
+c     in SU(2) limit mpi=mpi0, mk=mk0;
+C     formula (14) of REF [1]
+C **********************************************************
+       include '../parameter.inc'
+      include '../funct_declar.inc'
+
+       REAL MMPI_AV2,MMK_2
+
+      MMPI_AV2 = MMPI_AV**2
+      MMK_2 = MMK**2
+
+      IF(XS.GE.(4.*MMK_2)) THEN
+           GRHO_RCHT=XMMM*XS*((1.-4.*MMPI_AV2/XS)**1.5
+     $              +0.5*(1.-4.*MMK_2/XS)**1.5)
+     $                  /(96.*PI*FPI_RPT**2)
+      ELSE IF((XS.GE.(4.*MMPI_AV2)).AND.(XS.LE.(4.*MMK_2))) THEN 
+        GRHO_RCHT=XMMM*XS*(1.-4.*MMPI_AV2/XS)**1.5
+     $            /(96.*PI*FPI_RPT**2)
+      ELSE
+        GRHO_RCHT = 0.
+      ENDIF
+
+      RETURN
+
+      END
+
+
+      FUNCTION GRHO1_RCHT(XS,XMMM,XGGG)
+      IMPLICIT NONE
+      REAL                XS
+      DOUBLE PRECISION       XMMM,XGGG
+C **********************************************************
+C     REAL FUNCTION Gamma Rho1 ; energy-dependent width of  rho1 meson;
+c     in SU(2) limit mpi=mpi0; only rho' -> 2pi loop;
+C     formula (33) of REF [1]
+C **********************************************************
+      include '../parameter.inc'
+      include '../funct_declar.inc'
+
+       REAL MMPI_AV2
+      MMPI_AV2 = MMPI_AV**2
+
+      IF (XS.GE.(4.*MMPI_AV2)) THEN 
+        GRHO1_RCHT=XGGG*SQRT(XMMM**2/XS)*  
+     &      ((XS-4.*MMPI_AV2)/(XMMM**2-4.*MMPI_AV2))**1.5
+      ELSE
+        GRHO1_RCHT = 0.
+      ENDIF
+
+      RETURN
+      END
+
+
+
+      FUNCTION SIGP(SS)
+      IMPLICIT NONE
+      DOUBLE PRECISION               SS
+C***********************************************************
+C     DOUBLRE PRECISION FUNCTION 
+c     of two body phase space threshold: equal mass scalars
+C***********************************************************
+      REAL TT
+      include '../parameter.inc'
+      include '../funct_declar.inc'
+      
+      TT = 1. - 4.*MMPI_AV**2/SS 
+
+      IF (TT.GE.0) THEN 
+      SIGP = SQRT(TT)
+      ELSE
+      SIGP = 0.
+      ENDIF
+
+      RETURN
+      END
+
+
+
+
+      FUNCTION LAMB_RCHT(X1,X2,X3)
+      IMPLICIT NONE
+      REAL               X1,X2,X3,ARG_RCHT      
+C***********************************************************
+C     REAL FUNCTION LAMDA of three body phase space
+C***********************************************************
+      include '../funct_declar.inc'
+
+      ARG_RCHT = (X1-X2-X3)**2 - 4.*X3*X2
+      IF(ARG_RCHT.GE.0.) THEN
+      LAMB_RCHT = ARG_RCHT
+      ELSE
+      LAMB_RCHT = 0.
+      ENDIF
+
+      RETURN
+      END
+
+
+
+C******************** FUNCTIONS FOR 2 SCALAR MODES ***********************
+
+
+
+C****************************************************************
+      FUNCTION R0SCAL_3PI(QX,SX)
+C****************************************************************
+C     Complex Function: R_0 function (Pablo notes) 
+C     for the scalar contribution for three pion modes
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            QX,SX,delta0_3piscal,xsx,xst
+      DOUBLE PRECISION    XM1,XM2,DSX
+      include '../funct_declar.inc'
+       include '../parameter.inc'
+c$$$      a00_3piscal = 0.220
+c$$$      b00_3piscal = 0.268/mmpi_av**2
+c$$$      c00_3piscal = -0.0139/mmpi_av**4
+c$$$      d00_3piscal = -0.00139/mmpi_av**6
+c$$$      x00_3piscal = 36.77*mmpi_av**2
+c$$$c      MMF0 = 0.98
+c$$$
+      dsx = sx
+      xsx = sx/4.*sigp(dsx)**2
+      xst = sqrt(sx)
+
+      if(sx.le.0.7) then
+      delta0_3piscal = sigp(dsx)*(a00_3piscal + b00_3piscal*xsx +
+     &               c00_3piscal*xsx**2 + d00_3piscal*xsx**3)
+
+      delta0_3piscal = delta0_3piscal*
+     &         (4*mmpi_av**2 - x00_3piscal)/(sx-x00_3piscal) 
+      else if (xst.le.1.21) then
+      delta0_3piscal = -10572.0+50658.0*xst-87903.0*xst**2+66886.0*xst**3
+     & -18699.0*xst**4
+      delta0_3piscal = delta0_3piscal*pi/180.0
+      else
+      delta0_3piscal = 255.0*pi/180.0
+      endif
+      
+
+      delta0_3piscal = atan(delta0_3piscal)
+
+      R0SCAL_3PI = ALPHA0_3PI/QX + 
+     &          ALPHA1_3PI/QX**2*(SX - MMF0**2)
+
+      R0SCAL_3PI = R0SCAL_3PI*(cos(delta0_3piscal) +
+     &              i*sin(delta0_3piscal))
+
+      RETURN
+      END
+
+C****************************************************************
+      FUNCTION R2SCAL_3PI(QX,SX)
+C****************************************************************
+C     Complex Function: R_2 function (Pablo notes) 
+C     for the scalar contribution for three pion modes
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            QX,SX,delta2_3piscal,xsx,xst
+      DOUBLE PRECISION    XM1,XM2,DSX
+      include '../funct_declar.inc'
+       include '../parameter.inc'
+c$$$      a02_3piscal = -0.0444
+c$$$      b02_3piscal = -0.0857/mmpi_av**2
+c$$$      c02_3piscal = -0.00221/mmpi_av**4
+c$$$      d02_3piscal = -0.000129/mmpi_av**6
+c$$$      x02_3piscal = -21.62*mmpi_av**2
+c$$$c      MMF0 = 0.98
+
+      dsx = sx
+      xsx = sx/4.*sigp(dsx)**2
+      xst = sqrt(sx)
+
+      if(sx.le.0.7) then
+      delta2_3piscal = sigp(dsx)*(a02_3piscal + b02_3piscal*xsx +
+     &               c02_3piscal*xsx**2 + d02_3piscal*xsx**3)
+
+      delta2_3piscal = delta2_3piscal*
+     &         (4*mmpi_av**2 - x02_3piscal)/(sx-x02_3piscal) 
+      else if(xst.le.1.21) then
+      delta2_3piscal = 282.9-1314.9*xst+2153.4*xst**2-1574.5d0*xst**3+
+     & 428.06d0*xst**4
+      delta2_3piscal = delta2_3piscal*pi/180.0
+      else
+      delta2_3piscal = -27.0*pi/180.0
+      endif
+
+      delta2_3piscal = atan(delta2_3piscal)      
+
+      R2SCAL_3PI = GAMMA0_3PI/QX + 
+     &          GAMMA1_3PI/QX**2*(SX - MMF0**2)
+
+      R2SCAL_3PI = R2SCAL_3PI*(cos(delta2_3piscal) +
+     &              i*sin(delta2_3piscal))
+
+      RETURN
+      END
+
+
+
+
+C*************************************************************************
+C         Functions for sigma contributions
+C*************************************************************************
+      FUNCTION FFsig(QX,XX)
+C **********************************************************
+C     Complex Function:  
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            QX,XX,mm2
+      DOUBLE PRECISION    XM1,XM2,xphi
+      include '../funct_declar.inc'
+      include '../parameter.inc'
+
+      mm2 = MMPI_AV**2
+
+      xphi = - rsigma**2* LAMB_RCHT(QX,XX,mm2)/(8.*QX)
+   
+      FFsig = dexp(xphi)
+
+
+       RETURN
+       END
+
+
+
+C*************************************************************************
+      FUNCTION BWsig(XM,XG,XQ)
+C **********************************************************
+C     Complex Function: S-wave Breit-Wigner  
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            XQ
+      DOUBLE PRECISION    XM,XG,XM2,XXQ,GAMMA
+      include '../funct_declar.inc'
+      include '../parameter.inc'
+
+      XXQ = XQ
+      XM2 = XM**2
+      GAMMA = XG*SIGP(XXQ)/SIGP(XM2)
+      BWsig = XM*XM/CMPLX(XM*XM-XQ, -XM*GAMMA)
+
+
+       RETURN
+       END
+
+C*************************************************************************
+      FUNCTION DECOUL(mm1,mm3,ss2)
+C **********************************************************
+C     Real Function: Coulomb interaction effects of two particles
+C                    with mm1 and mm2 
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            ss2
+      DOUBLE PRECISION    mm1,mm3,betam1m3
+
+      include '../funct_declar.inc'
+      include '../parameter.inc'
+C*******************************************
+C   COMMON  block fixed in SUBROUTINE INIPHY
+c*******************************************
+      COMMON / QEDPRM /ALFINV,ALFPI,XK0
+      REAL*8           ALFINV,ALFPI,XK0
+      betam1m3 = 1.d0 - (mm1 +mm3)**2/ss2
+      betam1m3 = dsqrt(betam1m3)
+
+      if(ss2.gt.(mm1+mm3)**2)      
+     &    decoul = pi/2.d0/betam1m3/ALFINV
+
+       RETURN
+       END
+
+C*************************************************************************
+      FUNCTION COUL3PART(mm1,mm2,mm3,ss1,ss2,ss3)
+C **********************************************************
+C     Real Function: Coulomb interaction effects of two particles
+C                    with mm1 and mm2 
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            ss3,ss2,ss1
+      DOUBLE PRECISION    mm1,mm2,mm3
+      include '../funct_declar.inc'
+      include '../parameter.inc'
+
+      coul3part = decoul(mm1,mm3,ss2) + decoul(mm2,mm3,ss1) 
+     &          - decoul(mm1,mm2,ss3)
+
+       coul3part = exp(coul3part)
+
+       RETURN
+       END
+C*************************************************************************
+      FUNCTION fattcoul(mm1,mm3,ss2)
+C **********************************************************
+C     Real Function: Coulomb attraction of two particles
+C                    with mm1 and mm3 
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            ss2
+      DOUBLE PRECISION    mm1,mm3,betam1m3
+
+      include '../funct_declar.inc'
+      include '../parameter.inc'
+C*******************************************
+C   COMMON  block fixed in SUBROUTINE INIPHY
+c*******************************************
+      COMMON / QEDPRM /ALFINV,ALFPI,XK0
+      REAL*8           ALFINV,ALFPI,XK0
+      if(ss2.gt.(mm1+mm3)**2) then      
+      betam1m3 = 2.*dsqrt(1.d0 - (mm1 +mm3)**2/ss2)
+     &            /(1.+ (1.d0 - (mm1 +mm3)**2/ss2))
+
+
+         fattcoul = 2.*pi/betam1m3/ALFINV
+     &               /(1.-exp(-2.*pi/betam1m3/ALFINV))
+       else
+         fattcoul = 1
+          endif
+
+       RETURN
+       END
+
+C*************************************************************************
+C*************************************************************************
+      FUNCTION frepcoul(mm1,mm3,ss2)
+C **********************************************************
+C     Real Function: Coulomb repuslcion of two particles
+C                    with mm1 and mm3 
+C     Called by f3pi_rcht.f
+C **********************************************************
+      IMPLICIT NONE
+      REAL            ss2
+      DOUBLE PRECISION    mm1,mm3,betam1m3
+
+      include '../funct_declar.inc'
+      include '../parameter.inc'
+C*******************************************
+C   COMMON  block fixed in SUBROUTINE INIPHY
+c*******************************************
+      COMMON / QEDPRM /ALFINV,ALFPI,XK0
+      REAL*8           ALFINV,ALFPI,XK0
+        if(ss2.gt.(mm1+mm3)**2) then      
+      betam1m3 = 2.*dsqrt(1.d0 - (mm1 +mm3)**2/ss2)
+     &           /(1.+ (1.d0 - (mm1 +mm3)**2/ss2))
+
+         frepcoul = 2.*pi/betam1m3/ALFINV
+     &               /(-1.+exp(2.*pi/betam1m3/ALFINV))
+       else
+         frepcoul = 1
+          endif
+       RETURN
+       END
+
+C*************************************************************************
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gaus_integr.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gaus_integr.f
new file mode 100644 (file)
index 0000000..037653e
--- /dev/null
@@ -0,0 +1,527 @@
+* THIS IS ITERATIVE INTEGRATION PROCEDURE
+* ORIGINATES  PROBABLY FROM CERN LIBRARY
+* IT SUBDIVIDES INEGRATION RANGE UNTIL REQUIRED PRECISION IS REACHED
+* PRECISION IS A DIFFERENCE FROM 8 AND 16 POINT GAUSS ITEGR. RESULT
+* EEPS POSITIVE TREATED AS ABSOLUTE PRECISION
+* EEPS NEGATIVE TREATED AS RELATIVE PRECISION
+      DOUBLE PRECISION FUNCTION GAUS(F,A,B,EEPS)
+*     *************************
+      IMPLICIT REAL*8(A-H,O-Z)
+      EXTERNAL F
+      DIMENSION W(12),X(12)
+      DATA CONST /1.0D-19/
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+
+C-----------------------------------------------------------------------------
+C NEW INTEGRATION METHOD - constant step size (provided by fourth parameter)
+C comment out following 5 lines to return to old solutions of advantages too
+C-----------------------------------------------------------------------------
+      RESULT=0
+      EPS=0
+c      CALL STEPGAUSS(F,A,B,6,RESULT,EPS)
+      CALL CHANGEGAUSS(F,A,B,2,RESULT,EPS)
+      GAUS=RESULT
+      RETURN
+C-----------------------------------------------------------------------------
+C PREVIOUS INTEGRATION METHOD - step size depends on EPSSQ
+C-----------------------------------------------------------------------------
+      EPS=dABS(EEPS)
+      DELTA=CONST*dABS(A-B)
+      GAUS=0.d0
+      AA=A
+    5 Y=B-AA
+      IF(dABS(Y) .LE. DELTA) RETURN
+    2 BB=AA+Y
+      C1=0.5d0*(AA+BB)
+      C2=C1-AA
+      S8=0.d0
+      S16=0.d0
+      DO 1 I=1,4
+      U=X(I)*C2
+    1 S8=S8+W(I)*(F(C1+U)+F(C1-U))
+      DO 3 I=5,12
+      U=X(I)*C2
+    3 S16=S16+W(I)*(F(C1+U)+F(C1-U))
+      S8=S8*C2
+      S16=S16*C2
+      IF(EEPS.LT.0D0) THEN
+        IF(dABS(S16-S8) .GT. EPS*dABS(S16)) GO TO 4
+      ELSE
+        IF(dABS(S16-S8) .GT. EPS) GO TO 4
+      ENDIF
+      GAUS=GAUS+S16
+      AA=BB
+      GO TO 5
+    4 Y=0.5d0*Y
+      IF(dABS(Y) .GT. DELTA) GOTO 2
+      PRINT 7
+      GAUS=0.d0
+      RETURN
+    7 FORMAT(1X,36HGAUS  ... TOO HIGH ACCURACY REQUIRED)
+      END
+
+
+      DOUBLE PRECISION FUNCTION GAUS2(F,A,B,EEPS)
+*     *************************
+      IMPLICIT REAL*8(A-H,O-Z)
+      EXTERNAL F
+      DIMENSION W(12),X(12)
+      DATA CONST /1.0D-19/
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+
+C-----------------------------------------------------------------------------
+C NEW INTEGRATION METHOD - constant step size (provided by fourth parameter)
+C comment out following 5 lines to return to old solutions of advantages too
+C-----------------------------------------------------------------------------
+      RESULT=0
+      EPS=0
+c      CALL STEPGAUSS2(F,A,B,6,RESULT,EPS)
+      CALL CHANGEGAUSS2(F,A,B,2,RESULT,EPS)
+      GAUS2=RESULT
+      RETURN
+C-----------------------------------------------------------------------------
+C PREVIOUS INTEGRATION METHOD - step size depends on EPSSQ
+C----------------------------------------------------------------------------- 
+      EPS=dABS(EEPS)
+      DELTA=CONST*dABS(A-B)
+      GAUS2=0.D0
+      AA=A
+    5 Y=B-AA
+      IF(dABS(Y) .LE. DELTA) RETURN
+    2 BB=AA+Y
+      C1=0.5d0*(AA+BB)
+      C2=C1-AA
+      S8=0.d0
+      S16=0.d0
+      DO 1 I=1,4
+      U=X(I)*C2
+    1 S8=S8+W(I)*(F(C1+U)+F(C1-U))
+      DO 3 I=5,12
+      U=X(I)*C2
+    3 S16=S16+W(I)*(F(C1+U)+F(C1-U))
+      S8=S8*C2
+      S16=S16*C2
+      IF(EEPS.LT.0D0) THEN
+        IF(dABS(S16-S8) .GT. EPS*dABS(S16)) GO TO 4
+      ELSE
+        IF(dABS(S16-S8) .GT. EPS) GO TO 4
+      ENDIF
+      GAUS2=GAUS2+S16
+      AA=BB
+      GO TO 5
+    4 Y=0.5d0*Y
+      IF(dABS(Y) .GT. DELTA) GOTO 2
+      PRINT 7
+      GAUS2=0.D0
+      RETURN
+    7 FORMAT(1X,36HGAUS2 ... TOO HIGH ACCURACY REQUIRED)
+      END
+
+      DOUBLE PRECISION FUNCTION GAUS3(F,A,B,EEPS)
+*     *************************
+      IMPLICIT REAL*8(A-H,O-Z)
+      EXTERNAL F
+      DIMENSION W(12),X(12)
+      DATA CONST /1.0D-19/
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+
+C-----------------------------------------------------------------------------
+C NEW INTEGRATION METHOD - constant step size (provided by fourth parameter)
+C comment out following 5 lines to return to old solutions of advantages too
+C-----------------------------------------------------------------------------
+      RESULT=0
+      EPS=0
+c      CALL STEPGAUSS3(F,A,B,6,RESULT,EPS)
+      CALL CHANGEGAUSS3(F,A,B,2,RESULT,EPS)
+      GAUS3=RESULT
+      RETURN
+C-----------------------------------------------------------------------------
+C PREVIOUS INTEGRATION METHOD - step size depends on EPSSQ
+C-----------------------------------------------------------------------------
+      EPS=dABS(EEPS)
+      DELTA=CONST*dABS(A-B)
+      GAUS3=0.D0
+      AA=A
+    5 Y=B-AA
+      IF(dABS(Y) .LE. DELTA) RETURN
+    2 BB=AA+Y
+      C1=0.5d0*(AA+BB)
+      C2=C1-AA
+      S8=0.d0
+      S16=0.d0
+      DO 1 I=1,4
+      U=X(I)*C2
+    1 S8=S8+W(I)*(F(C1+U)+F(C1-U))
+      DO 3 I=5,12
+      U=X(I)*C2
+    3 S16=S16+W(I)*(F(C1+U)+F(C1-U))
+      S8=S8*C2
+      S16=S16*C2
+      IF(EEPS.LT.0D0) THEN
+        IF(dABS(S16-S8) .GT. EPS*dABS(S16)) GO TO 4
+      ELSE
+        IF(dABS(S16-S8) .GT. EPS) GO TO 4
+      ENDIF
+      GAUS3=GAUS3+S16
+      AA=BB
+      GO TO 5
+    4 Y=0.5d0*Y
+      IF(dABS(Y) .GT. DELTA) GOTO 2
+      PRINT 7
+      GAUS3=0.D0
+      RETURN
+    7 FORMAT(1X,36HGAUS3 ... TOO HIGH ACCURACY REQUIRED)
+      END
+
+C--------------------------------------------------------------------------------------------------
+C--------------------------------------------------------------------------------------------------
+C--------------------------------------------------------------------------------------------------
+C OBSOLETE 1.13      901108  3.40 CERN PROGRAM LIBRARY OBSOLETE PAM
+C          CERN OBSOLETE PROGRAMS AND SUBROUTINES PAM-FILE.
+C          MANY OF THE ROUTINES ARE FOR ONE FORTRAN DIALECT ONLY.
+C          THE FLAG PATCH F77 SHOULD BE USED FOR THE FORTRAN 77 VERSIONS
+C          SHOULD THEY EXIST - IF NOT FORTRAN 4 WILL BE OBTAINED.
+C          THE CERN LIBRARIES GENLIB AND KERNLIB ARE USUALLY REQUIRED.
+C          OBSOLETE ROUTINES OF THE PROGRAM LIBRARY ARE OFTEN REQUIRED.
+C
+      SUBROUTINE STEPGAUSS(F,A,B,LAMBDA,RESULT,EPS)
+      implicit real*8 (a-h,o-z)
+      DIMENSION W(12),X(12)
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+      RESULT=0.
+      EPS=0.
+      AU=A
+      C=(B-A)/FLOAT(LAMBDA)
+      DO 1 I = 1,LAMBDA
+      FI=I
+      AO=A+FI*C
+      C1=0.5*(AU+AO)
+      C2=C1-AU
+      S8=0.
+      S16=0.
+      DO 2 J = 1,4
+      U=X(J)*C2
+    2 S8=S8+W(J)*(F(C1+U)+F(C1-U))
+      DO 3 J = 5,12
+      U=X(J)*C2
+    3 S16=S16+W(J)*(F(C1+U)+F(C1-U))
+      RESULT=RESULT+C2*S16
+      EPS=EPS+ABS(C2*(S16-S8))
+    1 AU=AO
+      RETURN
+      END
+
+      SUBROUTINE STEPGAUSS2(F,A,B,LAMBDA,RESULT,EPS)
+      implicit real*8 (a-h,o-z)
+      DIMENSION W(12),X(12)
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+      RESULT=0.
+      EPS=0.
+      AU=A
+      C=(B-A)/FLOAT(LAMBDA)
+      DO 1 I = 1,LAMBDA
+      FI=I
+      AO=A+FI*C
+      C1=0.5*(AU+AO)
+      C2=C1-AU
+      S8=0.
+      S16=0.
+      DO 2 J = 1,4
+      U=X(J)*C2
+    2 S8=S8+W(J)*(F(C1+U)+F(C1-U))
+      DO 3 J = 5,12
+      U=X(J)*C2
+    3 S16=S16+W(J)*(F(C1+U)+F(C1-U))
+      RESULT=RESULT+C2*S16
+      EPS=EPS+ABS(C2*(S16-S8))
+    1 AU=AO
+      RETURN
+      END
+
+      SUBROUTINE STEPGAUSS3(F,A,B,LAMBDA,RESULT,EPS)
+      implicit real*8 (a-h,o-z)
+      DIMENSION W(12),X(12)
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+      RESULT=0.
+      EPS=0.
+      AU=A
+      C=(B-A)/FLOAT(LAMBDA)
+      DO 1 I = 1,LAMBDA
+      FI=I
+      AO=A+FI*C
+      C1=0.5*(AU+AO)
+      C2=C1-AU
+      S8=0.
+      S16=0.
+      DO 2 J = 1,4
+      U=X(J)*C2
+    2 S8=S8+W(J)*(F(C1+U)+F(C1-U))
+      DO 3 J = 5,12
+      U=X(J)*C2
+    3 S16=S16+W(J)*(F(C1+U)+F(C1-U))
+      RESULT=RESULT+C2*S16
+      EPS=EPS+ABS(C2*(S16-S8))
+    1 AU=AO
+      RETURN
+      END
+
+*******************************************************************************
+* FUNCTIONS FOR CHANGE OF VARIABLES *******************************************
+*******************************************************************************
+      DOUBLE PRECISION FUNCTION F_CHANGE(X,F,AMS1,AMS2)
+      IMPLICIT NONE
+      EXTERNAL F
+      DOUBLE PRECISION F
+      DOUBLE PRECISION X, NEW_X
+      DOUBLE PRECISION AMS1,AMS2
+      DOUBLE PRECISION ALP1,ALP2,ALP
+      DOUBLE PRECISION AMRX,GAMRX
+      DATA AMRX/0.77/,GAMRX/1.8/
+
+      ALP1  = ATAN((AMS1-AMRX**2)/AMRX/GAMRX) ! integration range for ALP
+      ALP2  = ATAN((AMS2-AMRX**2)/AMRX/GAMRX) ! integration range for ALP
+      ALP   = ALP1 + X*(ALP2-ALP1)            ! change of variables
+
+      NEW_X = AMRX**2+AMRX*GAMRX*TAN(ALP)     ! second change of variables
+
+      F_CHANGE = F(NEW_X)
+
+! Jacobian for change of variables
+      F_CHANGE = F_CHANGE * (ALP2-ALP1) * ((NEW_X-AMRX**2)**2+(AMRX*GAMRX)**2)/(AMRX*GAMRX)
+
+      RETURN
+      END
+
+      DOUBLE PRECISION FUNCTION F_CHANGE2(X,F,AMS1,AMS2)
+      IMPLICIT NONE
+      EXTERNAL F
+      DOUBLE PRECISION F
+      DOUBLE PRECISION X, NEW_X
+      DOUBLE PRECISION AMS1,AMS2
+      DOUBLE PRECISION ALP1,ALP2,ALP
+      DOUBLE PRECISION AMRX,GAMRX
+      DATA AMRX/0.77/,GAMRX/1.8/
+
+      ALP1  = ATAN((AMS1-AMRX**2)/AMRX/GAMRX) ! integration range for ALP
+      ALP2  = ATAN((AMS2-AMRX**2)/AMRX/GAMRX) ! integration range for ALP
+      ALP   = ALP1 + X*(ALP2-ALP1)            ! change of variables
+
+      NEW_X = AMRX**2+AMRX*GAMRX*TAN(ALP)     ! second change of variables
+
+      F_CHANGE2 = F(NEW_X)
+
+! Jacobian for change of variables
+      F_CHANGE2 = F_CHANGE2 * (ALP2-ALP1) * ((NEW_X-AMRX**2)**2+(AMRX*GAMRX)**2)/(AMRX*GAMRX)
+
+      RETURN
+      END
+
+      DOUBLE PRECISION FUNCTION F_CHANGE3(X,F,AMS1,AMS2)
+      IMPLICIT NONE
+      EXTERNAL F
+      DOUBLE PRECISION F
+      DOUBLE PRECISION X, NEW_X
+      DOUBLE PRECISION AMS1,AMS2
+      DOUBLE PRECISION ALP1,ALP2,ALP
+      DOUBLE PRECISION AMRX,GAMRX
+      DATA AMRX/0.77/,GAMRX/1.8/
+
+      ALP1  = ATAN((AMS1-AMRX**2)/AMRX/GAMRX) ! integration range for ALP
+      ALP2  = ATAN((AMS2-AMRX**2)/AMRX/GAMRX) ! integration range for ALP
+      ALP   = ALP1 + X*(ALP2-ALP1)            ! change of variables
+
+      NEW_X = AMRX**2+AMRX*GAMRX*TAN(ALP)     ! second change of variables
+
+      F_CHANGE3 = F(NEW_X)
+
+! Jacobian for change of variables
+      F_CHANGE3 = F_CHANGE3 * (ALP2-ALP1) * ((NEW_X-AMRX**2)**2+(AMRX*GAMRX)**2)/(AMRX*GAMRX)
+
+      RETURN
+      END
+
+*******************************************************************************
+* INTEGRATION WITH CHANGED VARIABLES ******************************************
+*******************************************************************************
+      SUBROUTINE CHANGEGAUSS(F,AMS1,AMS2,LAMBDA,RESULT,EPS)
+      implicit real*8 (a-h,o-z)
+      EXTERNAL F,F2
+      DIMENSION W(12),X(12)
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+      RESULT=0.
+      EPS=0.
+
+! Range is changed from [AMS1,AMS2] to [0,1]
+! F, AMS1 and AMS2 are parameters of F_CHANGE
+      A=0
+      B=1
+
+      AU=A
+      C=(B-A)/FLOAT(LAMBDA)
+      DO 1 I = 1,LAMBDA
+      FI=I
+      AO=A+FI*C
+      C1=0.5*(AU+AO)
+      C2=C1-AU
+      S8=0.
+      S16=0.
+      DO 2 J = 1,4
+      U=X(J)*C2
+    2 S8=S8+W(J)*(F_CHANGE(C1+U,F,AMS1,AMS2)+F_CHANGE(C1-U,F,AMS1,AMS2))
+      DO 3 J = 5,12
+      U=X(J)*C2
+    3 S16=S16+W(J)*(F_CHANGE(C1+U,F,AMS1,AMS2)+F_CHANGE(C1-U,F,AMS1,AMS2))
+      RESULT=RESULT+C2*S16
+      EPS=EPS+ABS(C2*(S16-S8))
+    1 AU=AO
+      RETURN
+      END
+
+      SUBROUTINE CHANGEGAUSS2(F,AMS1,AMS2,LAMBDA,RESULT,EPS)
+      implicit real*8 (a-h,o-z)
+      EXTERNAL F,F2
+      DIMENSION W(12),X(12)
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+      RESULT=0.
+      EPS=0.
+
+! Range is changed from [AMS1,AMS2] to [0,1]
+! F, AMS1 and AMS2 are parameters of F_CHANGE
+      A=0
+      B=1
+
+      AU=A
+      C=(B-A)/FLOAT(LAMBDA)
+      DO 1 I = 1,LAMBDA
+      FI=I
+      AO=A+FI*C
+      C1=0.5*(AU+AO)
+      C2=C1-AU
+      S8=0.
+      S16=0.
+      DO 2 J = 1,4
+      U=X(J)*C2
+    2 S8=S8+W(J)*(F_CHANGE2(C1+U,F,AMS1,AMS2)+F_CHANGE2(C1-U,F,AMS1,AMS2))
+      DO 3 J = 5,12
+      U=X(J)*C2
+    3 S16=S16+W(J)*(F_CHANGE2(C1+U,F,AMS1,AMS2)+F_CHANGE2(C1-U,F,AMS1,AMS2))
+      RESULT=RESULT+C2*S16
+      EPS=EPS+ABS(C2*(S16-S8))
+    1 AU=AO
+      RETURN
+      END
+
+      SUBROUTINE CHANGEGAUSS3(F,AMS1,AMS2,LAMBDA,RESULT,EPS)
+      implicit real*8 (a-h,o-z)
+      EXTERNAL F,F2
+      DIMENSION W(12),X(12)
+      DATA W
+     1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
+     2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
+     3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
+     4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
+      DATA X
+     1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
+     2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
+     3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
+     4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
+      RESULT=0.
+      EPS=0.
+
+! Range is changed from [AMS1,AMS2] to [0,1]
+! F, AMS1 and AMS2 are parameters of F_CHANGE
+      A=0
+      B=1
+
+      AU=A
+      C=(B-A)/FLOAT(LAMBDA)
+      DO 1 I = 1,LAMBDA
+      FI=I
+      AO=A+FI*C
+      C1=0.5*(AU+AO)
+      C2=C1-AU
+      S8=0.
+      S16=0.
+      DO 2 J = 1,4
+      U=X(J)*C2
+    2 S8=S8+W(J)*(F_CHANGE3(C1+U,F,AMS1,AMS2)+F_CHANGE3(C1-U,F,AMS1,AMS2))
+      DO 3 J = 5,12
+      U=X(J)*C2
+    3 S16=S16+W(J)*(F_CHANGE3(C1+U,F,AMS1,AMS2)+F_CHANGE3(C1-U,F,AMS1,AMS2))
+      RESULT=RESULT+C2*S16
+      EPS=EPS+ABS(C2*(S16-S8))
+    1 AU=AO
+      RETURN
+      END
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gfact.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/gfact.f
new file mode 100644 (file)
index 0000000..704e3a1
--- /dev/null
@@ -0,0 +1,192 @@
+      DOUBLE PRECISION FUNCTION GFACT(QQ)
+      IMPLICIT NONE
+C factor G to be used as inteligent retabulation as in paper 
+C Kuhn Santamaria
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      DOUBLE PRECISION DGAMQQ,QQ,THR,THU,TH0,LAM
+      INTEGER II,INIT,INUM
+      DOUBLE PRECISION AF4,AF5,AA1,AA2,AA4
+      DOUBLE PRECISION F1,F2,F3,F4,F5
+      DOUBLE PRECISION AA,BB,CC,DD,A,B,C,D,X
+      SAVE A,B,C,D,AF4,AF5,AA,BB,CC,DD,THR,THU,TH0
+      
+      CALL IFGFACT(1,II,INIT)
+      IF(INIT.EQ.0) THEN
+       THR=(AMPI+AMRO)**2
+       TH0=9*AMPI**2
+       THU=THR
+       CALL getFF3PISCAL(INUM)  ! we switch off part of the contr to 3 pi mode
+       CALL setFF3PISCAL(0)
+C below THR , we calculate at distance 1/4 1/2 and 1 between 
+C minimum and maximum for this range
+       LAM=(THR-TH0)/4
+       AA1=DGAMQQ(TH0+  LAM)
+       AA2=DGAMQQ(TH0+2*LAM)
+       AA4=DGAMQQ(TH0+4*LAM)
+C above THR we calculate at THR times 1 2 3 and 4 for higher range
+       F1=DGAMQQ(THU)
+       F2=DGAMQQ(1.5*THU)
+       F3=DGAMQQ(2.*THU)
+       F4=DGAMQQ(3*THU)
+       F5=DGAMQQ(3.5*THU)
+       CALL setFF3PISCAL(INUM) ! we switch back part of the contr to 3 pi mode
+
+C we calculate coefs for expansion  ( polynomial of order 2 once 
+C                                     X**2 factorized out, X=QQ-TH0 )
+
+       AA1 = AA1/LAM**2            ! RESCALING due to factorized X**2
+       AA2 = AA2/(2.*LAM)**2       !
+       AA4 = AA4/(4.*LAM)**2       !
+
+       BB=1./8.*(10.*AA2-AA4-16.*AA1)
+       AA=(8.*AA1-AA2-4.*BB)/6.
+       CC=AA1-AA-BB
+       AA=AA/LAM
+       BB=BB/LAM**2
+       CC=CC/LAM**3
+C calulate coefs, assuming it is polynomial order 3 note negative pwrs
+       D=-9*(-4*F3-F1+4*F2+F4)
+       C=3*(F4+F1-2*F3-11./18.*D)
+       A=F3-F1+0.5*C+0.75*D
+       B=F1-A-C-D
+       A=A/THU
+       B=B
+       C=C*THU
+       D=D*THU**2
+       AF4=F4
+       AF5=F5
+c       write(*,*) "A=",AA,"B=",-BB,"C=",CC,"D=",A,"E=",-B,"F=",C
+c       write(*,*) "G=",-D,"H=",AF4,"P=",AF5-AF4
+      ENDIF
+      IF (QQ.GT.3*THU) THEN
+        GFACT=AF4+(AF5-AF4)*(QQ-3*THU)*2/THU
+      ELSEIF (QQ.GT.THR) THEN
+        GFACT=A*QQ+B+C/QQ+D/QQ**2
+      ELSEIF(QQ.LE.TH0) THEN
+        GFACT=0.0
+      ELSE
+        X=QQ-TH0
+        GFACT=AA*X+BB*X**2+CC*X**3
+        GFACT=X**2*GFACT
+      ENDIF
+      END
+
+
+      DOUBLE PRECISION FUNCTION DGAMQQ(XQQB)
+C **************************************************************
+C     calculates \tau^- -> pi^- pi^- pi^+ nu width as function of QQ (XQQB)
+C     formulas (19) of ref [2a] integration over S1
+C     limit of integration (21) of ref [2a]  see also [4]
+C     called from main function
+C **************************************************************
+      IMPLICIT NONE 
+      COMMON/PRECINT/          EPSSQ,ABS1
+      DOUBLE PRECISION         EPSSQ,ABS1
+      COMMON /EXTERNAL/ XQQA
+      DOUBLE PRECISION  XQQA
+      EXTERNAL          GAUS,DGAMQQS1
+      DOUBLE PRECISION  GAUS,DGAMQQS1
+      DOUBLE PRECISION  XQQB,EPS,UPS1,DOWNS1
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+
+      XQQA = XQQB
+      EPS = EPSSQ/3.D0
+      UPS1=(DSQRT(XQQB) - AMPI)**2-ABS1              ! limits on S1
+      DOWNS1=4.D0*AMPI**2+ABS1
+
+      DGAMQQ = GAUS(DGAMQQS1,DOWNS1,UPS1,EPS)
+
+      RETURN
+      END
+
+
+
+      DOUBLE PRECISION FUNCTION DGAMQQS1(S1)
+      IMPLICIT NONE
+      DOUBLE PRECISION                   S1
+C **************************************************************
+C     calculates \tau^- -> pi^- pi^- pi^+ nu width 
+C           as function of QQ,S1 
+C     GAUS integrant in DGAMQQ (XQQA- hidden argument)
+C     calculates tau^- -> pi^- pi^- pi^+ nu spectrum as function of S1
+C     formulas (19) of ref [2a] see also [4]
+C     limit of integration (21) of ref [2a]
+C **************************************************************
+      EXTERNAL          GAUS2,FFWID3PI,DGAMQQS1S3
+      DOUBLE PRECISION  GAUS2,FFWID3PI,DGAMQQS1S3
+      COMMON /INTERNAL/ S1A
+      DOUBLE PRECISION  S1A
+      COMMON /EXTERNAL/   XQQA
+      DOUBLE PRECISION    XQQA
+      COMMON/PRECINT/          EPSSQ,ABS1
+      DOUBLE PRECISION         EPSSQ,ABS1
+      DOUBLE PRECISION EPS,UPS3,DOWNS3
+      DOUBLE PRECISION XLAM,X,Y,Z
+      DOUBLE PRECISION XAMPI2
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+
+      Xlam(x,y,z) = sqrt(abs((x-y-z)**2 - 4.*y*z))
+      S1A = S1
+      EPS = EPSSQ/9.D0
+      XAMPI2=AMPI**2
+      
+      UPS3 = (XQQA - AMPI**2)**2 -                              ! limits on S3
+     &    ( XLAM(XQQA,S1,XAMPI2) 
+     &         - XLAM(S1,XAMPI2,XAMPI2) )**2
+      DOWNS3 = (XQQA - AMPI**2)**2 - 
+     &    (XLAM(XQQA,S1,XAMPI2) 
+     &          + XLAM(S1,XAMPI2,XAMPI2) )**2
+
+      UPS3 = UPS3/4./S1
+      DOWNS3 = DOWNS3/4./S1
+      
+      DGAMQQS1 = GAUS2(DGAMQQS1S3,DOWNS3,UPS3,EPS)
+
+      RETURN
+      END
+
+
+      DOUBLE PRECISION FUNCTION DGAMQQS1S3(XS3)
+      IMPLICIT NONE
+C **************************************************************
+C     calculates \tau^- -> pi^- pi^- pi^+ nu width 
+C           as function of QQ,S1,S3
+C **************************************************************
+C      EXTERNAL          GAUS2,FFWID3PI
+      DOUBLE PRECISION  FFWID3PI,XS3
+      COMMON /INTERNAL/ XS1A
+      DOUBLE PRECISION  XS1A
+      COMMON /EXTERNAL/   XQQA
+      DOUBLE PRECISION    XQQA
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+
+
+      DGAMQQS1S3 = FFWID3PI(XQQA,XS1A,XS3)
+
+      RETURN
+
+      END
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1Tab.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1Tab.f
new file mode 100644 (file)
index 0000000..382cc03
--- /dev/null
@@ -0,0 +1,2010 @@
+       SUBROUTINE InitA1TAB(qk_min    ,w_qmin    )
+       PARAMETER (Nq=1001)    
+       real*8               qk_min(Nq),w_qmin(Nq)
+   
+ ! this routine was automatically created by  a1-tabler
+   
+       qk_min(   1)=0.171492857E+00
+       w_qmin(   1)=0.000000000E+00
+       qk_min(   2)=0.174479093E+00
+       w_qmin(   2)=0.629755564E-07
+       qk_min(   3)=0.177465328E+00
+       w_qmin(   3)=0.492358834E-06
+       qk_min(   4)=0.180451564E+00
+       w_qmin(   4)=0.162470857E-05
+       qk_min(   5)=0.183437800E+00
+       w_qmin(   5)=0.376709625E-05
+       qk_min(   6)=0.186424036E+00
+       w_qmin(   6)=0.720012925E-05
+       qk_min(   7)=0.189410272E+00
+       w_qmin(   7)=0.121806627E-04
+       qk_min(   8)=0.192396508E+00
+       w_qmin(   8)=0.189441916E-04
+       qk_min(   9)=0.195382744E+00
+       w_qmin(   9)=0.277070270E-04
+       qk_min(  10)=0.198368980E+00
+       w_qmin(  10)=0.386681867E-04
+       qk_min(  11)=0.201355216E+00
+       w_qmin(  11)=0.520111478E-04
+       qk_min(  12)=0.204341452E+00
+       w_qmin(  12)=0.679053591E-04
+       qk_min(  13)=0.207327688E+00
+       w_qmin(  13)=0.865076882E-04
+       qk_min(  14)=0.210313924E+00
+       w_qmin(  14)=0.107963592E-03
+       qk_min(  15)=0.213300160E+00
+       w_qmin(  15)=0.132408251E-03
+       qk_min(  16)=0.216286396E+00
+       w_qmin(  16)=0.159967766E-03
+       qk_min(  17)=0.219272632E+00
+       w_qmin(  17)=0.190759703E-03
+       qk_min(  18)=0.222258868E+00
+       w_qmin(  18)=0.224894342E-03
+       qk_min(  19)=0.225245104E+00
+       w_qmin(  19)=0.262475065E-03
+       qk_min(  20)=0.228231340E+00
+       w_qmin(  20)=0.303599320E-03
+       qk_min(  21)=0.231217576E+00
+       w_qmin(  21)=0.348358980E-03
+       qk_min(  22)=0.234203812E+00
+       w_qmin(  22)=0.396841130E-03
+       qk_min(  23)=0.237190048E+00
+       w_qmin(  23)=0.449128509E-03
+       qk_min(  24)=0.240176284E+00
+       w_qmin(  24)=0.505299824E-03
+       qk_min(  25)=0.243162520E+00
+       w_qmin(  25)=0.565430276E-03
+       qk_min(  26)=0.246148756E+00
+       w_qmin(  26)=0.629592245E-03
+       qk_min(  27)=0.249134992E+00
+       w_qmin(  27)=0.697855178E-03
+       qk_min(  28)=0.252121228E+00
+       w_qmin(  28)=0.770286144E-03
+       qk_min(  29)=0.255107464E+00
+       w_qmin(  29)=0.846949458E-03
+       qk_min(  30)=0.258093700E+00
+       w_qmin(  30)=0.927908699E-03
+       qk_min(  31)=0.261079936E+00
+       w_qmin(  31)=0.101322560E-02
+       qk_min(  32)=0.264066172E+00
+       w_qmin(  32)=0.110295947E-02
+       qk_min(  33)=0.267052408E+00
+       w_qmin(  33)=0.119716975E-02
+       qk_min(  34)=0.270038643E+00
+       w_qmin(  34)=0.129591394E-02
+       qk_min(  35)=0.273024879E+00
+       w_qmin(  35)=0.139924978E-02
+       qk_min(  36)=0.276011115E+00
+       w_qmin(  36)=0.150723308E-02
+       qk_min(  37)=0.278997351E+00
+       w_qmin(  37)=0.161992059E-02
+       qk_min(  38)=0.281983587E+00
+       w_qmin(  38)=0.173736751E-02
+       qk_min(  39)=0.284969823E+00
+       w_qmin(  39)=0.185962999E-02
+       qk_min(  40)=0.287956059E+00
+       w_qmin(  40)=0.198676282E-02
+       qk_min(  41)=0.290942295E+00
+       w_qmin(  41)=0.211882209E-02
+       qk_min(  42)=0.293928531E+00
+       w_qmin(  42)=0.225586359E-02
+       qk_min(  43)=0.296914767E+00
+       w_qmin(  43)=0.239794313E-02
+       qk_min(  44)=0.299901003E+00
+       w_qmin(  44)=0.254511773E-02
+       qk_min(  45)=0.302887239E+00
+       w_qmin(  45)=0.269744335E-02
+       qk_min(  46)=0.305873475E+00
+       w_qmin(  46)=0.285497820E-02
+       qk_min(  47)=0.308859711E+00
+       w_qmin(  47)=0.301777964E-02
+       qk_min(  48)=0.311845947E+00
+       w_qmin(  48)=0.318590749E-02
+       qk_min(  49)=0.314832183E+00
+       w_qmin(  49)=0.335942016E-02
+       qk_min(  50)=0.317818419E+00
+       w_qmin(  50)=0.353837928E-02
+       qk_min(  51)=0.320804655E+00
+       w_qmin(  51)=0.372284553E-02
+       qk_min(  52)=0.323790891E+00
+       w_qmin(  52)=0.391288143E-02
+       qk_min(  53)=0.326777127E+00
+       w_qmin(  53)=0.410855094E-02
+       qk_min(  54)=0.329763363E+00
+       w_qmin(  54)=0.430991813E-02
+       qk_min(  55)=0.332749599E+00
+       w_qmin(  55)=0.451704899E-02
+       qk_min(  56)=0.335735835E+00
+       w_qmin(  56)=0.473001097E-02
+       qk_min(  57)=0.338722071E+00
+       w_qmin(  57)=0.494887236E-02
+       qk_min(  58)=0.341708307E+00
+       w_qmin(  58)=0.517370225E-02
+       qk_min(  59)=0.344694543E+00
+       w_qmin(  59)=0.540457306E-02
+       qk_min(  60)=0.347680779E+00
+       w_qmin(  60)=0.564155599E-02
+       qk_min(  61)=0.350667015E+00
+       w_qmin(  61)=0.588472630E-02
+       qk_min(  62)=0.353653251E+00
+       w_qmin(  62)=0.613416049E-02
+       qk_min(  63)=0.356639487E+00
+       w_qmin(  63)=0.638993469E-02
+       qk_min(  64)=0.359625722E+00
+       w_qmin(  64)=0.665212895E-02
+       qk_min(  65)=0.362611958E+00
+       w_qmin(  65)=0.692082301E-02
+       qk_min(  66)=0.365598194E+00
+       w_qmin(  66)=0.719610191E-02
+       qk_min(  67)=0.368584430E+00
+       w_qmin(  67)=0.747804819E-02
+       qk_min(  68)=0.371570666E+00
+       w_qmin(  68)=0.776674972E-02
+       qk_min(  69)=0.374556902E+00
+       w_qmin(  69)=0.806229452E-02
+       qk_min(  70)=0.377543138E+00
+       w_qmin(  70)=0.836477374E-02
+       qk_min(  71)=0.380529374E+00
+       w_qmin(  71)=0.867427853E-02
+       qk_min(  72)=0.383515610E+00
+       w_qmin(  72)=0.899090516E-02
+       qk_min(  73)=0.386501846E+00
+       w_qmin(  73)=0.931475228E-02
+       qk_min(  74)=0.389488082E+00
+       w_qmin(  74)=0.964591670E-02
+       qk_min(  75)=0.392474318E+00
+       w_qmin(  75)=0.998450149E-02
+       qk_min(  76)=0.395460554E+00
+       w_qmin(  76)=0.103306093E-01
+       qk_min(  77)=0.398446790E+00
+       w_qmin(  77)=0.106843494E-01
+       qk_min(  78)=0.401433026E+00
+       w_qmin(  78)=0.110458285E-01
+       qk_min(  79)=0.404419262E+00
+       w_qmin(  79)=0.114151601E-01
+       qk_min(  80)=0.407405498E+00
+       w_qmin(  80)=0.117924571E-01
+       qk_min(  81)=0.410391734E+00
+       w_qmin(  81)=0.121778394E-01
+       qk_min(  82)=0.413377970E+00
+       w_qmin(  82)=0.125714246E-01
+       qk_min(  83)=0.416364206E+00
+       w_qmin(  83)=0.129733356E-01
+       qk_min(  84)=0.419350442E+00
+       w_qmin(  84)=0.133837007E-01
+       qk_min(  85)=0.422336678E+00
+       w_qmin(  85)=0.138026463E-01
+       qk_min(  86)=0.425322914E+00
+       w_qmin(  86)=0.142303061E-01
+       qk_min(  87)=0.428309150E+00
+       w_qmin(  87)=0.146668143E-01
+       qk_min(  88)=0.431295386E+00
+       w_qmin(  88)=0.151123120E-01
+       qk_min(  89)=0.434281622E+00
+       w_qmin(  89)=0.155669372E-01
+       qk_min(  90)=0.437267858E+00
+       w_qmin(  90)=0.160308391E-01
+       qk_min(  91)=0.440254094E+00
+       w_qmin(  91)=0.165041642E-01
+       qk_min(  92)=0.443240330E+00
+       w_qmin(  92)=0.169870675E-01
+       qk_min(  93)=0.446226566E+00
+       w_qmin(  93)=0.174797039E-01
+       qk_min(  94)=0.449212802E+00
+       w_qmin(  94)=0.179822341E-01
+       qk_min(  95)=0.452199037E+00
+       w_qmin(  95)=0.184948231E-01
+       qk_min(  96)=0.455185273E+00
+       w_qmin(  96)=0.190176372E-01
+       qk_min(  97)=0.458171509E+00
+       w_qmin(  97)=0.195508546E-01
+       qk_min(  98)=0.461157745E+00
+       w_qmin(  98)=0.200946463E-01
+       qk_min(  99)=0.464143981E+00
+       w_qmin(  99)=0.206491980E-01
+       qk_min( 100)=0.467130217E+00
+       w_qmin( 100)=0.212146893E-01
+       qk_min( 101)=0.470116453E+00
+       w_qmin( 101)=0.217913198E-01
+       qk_min( 102)=0.473102689E+00
+       w_qmin( 102)=0.223792750E-01
+       qk_min( 103)=0.476088925E+00
+       w_qmin( 103)=0.229787614E-01
+       qk_min( 104)=0.479075161E+00
+       w_qmin( 104)=0.235899856E-01
+       qk_min( 105)=0.482061397E+00
+       w_qmin( 105)=0.242131536E-01
+       qk_min( 106)=0.485047633E+00
+       w_qmin( 106)=0.248484858E-01
+       qk_min( 107)=0.488033869E+00
+       w_qmin( 107)=0.254961973E-01
+       qk_min( 108)=0.491020105E+00
+       w_qmin( 108)=0.261565231E-01
+       qk_min( 109)=0.494006341E+00
+       w_qmin( 109)=0.268296892E-01
+       qk_min( 110)=0.496992577E+00
+       w_qmin( 110)=0.275159405E-01
+       qk_min( 111)=0.499978813E+00
+       w_qmin( 111)=0.282155152E-01
+       qk_min( 112)=0.502965049E+00
+       w_qmin( 112)=0.289286682E-01
+       qk_min( 113)=0.505951285E+00
+       w_qmin( 113)=0.296556595E-01
+       qk_min( 114)=0.508937521E+00
+       w_qmin( 114)=0.303967464E-01
+       qk_min( 115)=0.511923757E+00
+       w_qmin( 115)=0.311522080E-01
+       qk_min( 116)=0.514909993E+00
+       w_qmin( 116)=0.319223193E-01
+       qk_min( 117)=0.517896229E+00
+       w_qmin( 117)=0.327073638E-01
+       qk_min( 118)=0.520882465E+00
+       w_qmin( 118)=0.335076407E-01
+       qk_min( 119)=0.523868701E+00
+       w_qmin( 119)=0.343234413E-01
+       qk_min( 120)=0.526854937E+00
+       w_qmin( 120)=0.351550793E-01
+       qk_min( 121)=0.529841173E+00
+       w_qmin( 121)=0.360028709E-01
+       qk_min( 122)=0.532827409E+00
+       w_qmin( 122)=0.368671391E-01
+       qk_min( 123)=0.535813645E+00
+       w_qmin( 123)=0.377482165E-01
+       qk_min( 124)=0.538799881E+00
+       w_qmin( 124)=0.386464530E-01
+       qk_min( 125)=0.541786116E+00
+       w_qmin( 125)=0.395621863E-01
+       qk_min( 126)=0.544772352E+00
+       w_qmin( 126)=0.404957853E-01
+       qk_min( 127)=0.547758588E+00
+       w_qmin( 127)=0.414476179E-01
+       qk_min( 128)=0.550744824E+00
+       w_qmin( 128)=0.424180670E-01
+       qk_min( 129)=0.553731060E+00
+       w_qmin( 129)=0.434075151E-01
+       qk_min( 130)=0.556717296E+00
+       w_qmin( 130)=0.444163612E-01
+       qk_min( 131)=0.559703532E+00
+       w_qmin( 131)=0.454450215E-01
+       qk_min( 132)=0.562689768E+00
+       w_qmin( 132)=0.464939133E-01
+       qk_min( 133)=0.565676004E+00
+       w_qmin( 133)=0.475634622E-01
+       qk_min( 134)=0.568662240E+00
+       w_qmin( 134)=0.486541189E-01
+       qk_min( 135)=0.571648476E+00
+       w_qmin( 135)=0.497663408E-01
+       qk_min( 136)=0.574634712E+00
+       w_qmin( 136)=0.509005855E-01
+       qk_min( 137)=0.577620948E+00
+       w_qmin( 137)=0.520573344E-01
+       qk_min( 138)=0.580607184E+00
+       w_qmin( 138)=0.532370803E-01
+       qk_min( 139)=0.583593420E+00
+       w_qmin( 139)=0.544403257E-01
+       qk_min( 140)=0.586579656E+00
+       w_qmin( 140)=0.556675790E-01
+       qk_min( 141)=0.589565892E+00
+       w_qmin( 141)=0.569193795E-01
+       qk_min( 142)=0.592552128E+00
+       w_qmin( 142)=0.581962668E-01
+       qk_min( 143)=0.595538364E+00
+       w_qmin( 143)=0.594988003E-01
+       qk_min( 144)=0.598524600E+00
+       w_qmin( 144)=0.608275376E-01
+       qk_min( 145)=0.601510836E+00
+       w_qmin( 145)=0.621830754E-01
+       qk_min( 146)=0.604497072E+00
+       w_qmin( 146)=0.635660133E-01
+       qk_min( 147)=0.607483308E+00
+       w_qmin( 147)=0.649769525E-01
+       qk_min( 148)=0.610469544E+00
+       w_qmin( 148)=0.664165334E-01
+       qk_min( 149)=0.613455780E+00
+       w_qmin( 149)=0.678853833E-01
+       qk_min( 150)=0.616442016E+00
+       w_qmin( 150)=0.693841730E-01
+       qk_min( 151)=0.619428252E+00
+       w_qmin( 151)=0.709135700E-01
+       qk_min( 152)=0.622414488E+00
+       w_qmin( 152)=0.724742457E-01
+       qk_min( 153)=0.625400724E+00
+       w_qmin( 153)=0.740669312E-01
+       qk_min( 154)=0.628386960E+00
+       w_qmin( 154)=0.756923306E-01
+       qk_min( 155)=0.631373196E+00
+       w_qmin( 155)=0.773511675E-01
+       qk_min( 156)=0.634359431E+00
+       w_qmin( 156)=0.790441825E-01
+       qk_min( 157)=0.637345667E+00
+       w_qmin( 157)=0.807721648E-01
+       qk_min( 158)=0.640331903E+00
+       w_qmin( 158)=0.825358806E-01
+       qk_min( 159)=0.643318139E+00
+       w_qmin( 159)=0.843360846E-01
+       qk_min( 160)=0.646304375E+00
+       w_qmin( 160)=0.861736137E-01
+       qk_min( 161)=0.649290611E+00
+       w_qmin( 161)=0.880492855E-01
+       qk_min( 162)=0.652276847E+00
+       w_qmin( 162)=0.899639046E-01
+       qk_min( 163)=0.655263083E+00
+       w_qmin( 163)=0.919183180E-01
+       qk_min( 164)=0.658249319E+00
+       w_qmin( 164)=0.939133758E-01
+       qk_min( 165)=0.661235555E+00
+       w_qmin( 165)=0.959499343E-01
+       qk_min( 166)=0.664221791E+00
+       w_qmin( 166)=0.980288583E-01
+       qk_min( 167)=0.667208027E+00
+       w_qmin( 167)=0.100150999E+00
+       qk_min( 168)=0.670194263E+00
+       w_qmin( 168)=0.102317274E+00
+       qk_min( 169)=0.673180499E+00
+       w_qmin( 169)=0.104528527E+00
+       qk_min( 170)=0.676166735E+00
+       w_qmin( 170)=0.106785656E+00
+       qk_min( 171)=0.679152971E+00
+       w_qmin( 171)=0.109089540E+00
+       qk_min( 172)=0.682139207E+00
+       w_qmin( 172)=0.111441042E+00
+       qk_min( 173)=0.685125443E+00
+       w_qmin( 173)=0.113841040E+00
+       qk_min( 174)=0.688111679E+00
+       w_qmin( 174)=0.116290378E+00
+       qk_min( 175)=0.691097915E+00
+       w_qmin( 175)=0.118789907E+00
+       qk_min( 176)=0.694084151E+00
+       w_qmin( 176)=0.121340451E+00
+       qk_min( 177)=0.697070387E+00
+       w_qmin( 177)=0.123942829E+00
+       qk_min( 178)=0.700056623E+00
+       w_qmin( 178)=0.126597840E+00
+       qk_min( 179)=0.703042859E+00
+       w_qmin( 179)=0.129306173E+00
+       qk_min( 180)=0.706029095E+00
+       w_qmin( 180)=0.132068605E+00
+       qk_min( 181)=0.709015331E+00
+       w_qmin( 181)=0.134885806E+00
+       qk_min( 182)=0.712001567E+00
+       w_qmin( 182)=0.137758367E+00
+       qk_min( 183)=0.714987803E+00
+       w_qmin( 183)=0.140686902E+00
+       qk_min( 184)=0.717974039E+00
+       w_qmin( 184)=0.143671942E+00
+       qk_min( 185)=0.720960275E+00
+       w_qmin( 185)=0.146713860E+00
+       qk_min( 186)=0.723946510E+00
+       w_qmin( 186)=0.149813125E+00
+       qk_min( 187)=0.726932746E+00
+       w_qmin( 187)=0.152970028E+00
+       qk_min( 188)=0.729918982E+00
+       w_qmin( 188)=0.156184758E+00
+       qk_min( 189)=0.732905218E+00
+       w_qmin( 189)=0.159457427E+00
+       qk_min( 190)=0.735891454E+00
+       w_qmin( 190)=0.162788087E+00
+       qk_min( 191)=0.738877690E+00
+       w_qmin( 191)=0.166176643E+00
+       qk_min( 192)=0.741863926E+00
+       w_qmin( 192)=0.169622853E+00
+       qk_min( 193)=0.744850162E+00
+       w_qmin( 193)=0.173126448E+00
+       qk_min( 194)=0.747836398E+00
+       w_qmin( 194)=0.176686927E+00
+       qk_min( 195)=0.750822634E+00
+       w_qmin( 195)=0.180303670E+00
+       qk_min( 196)=0.753808870E+00
+       w_qmin( 196)=0.183975975E+00
+       qk_min( 197)=0.756795106E+00
+       w_qmin( 197)=0.187702937E+00
+       qk_min( 198)=0.759781342E+00
+       w_qmin( 198)=0.191483510E+00
+       qk_min( 199)=0.762767578E+00
+       w_qmin( 199)=0.195316488E+00
+       qk_min( 200)=0.765753814E+00
+       w_qmin( 200)=0.199200519E+00
+       qk_min( 201)=0.768740050E+00
+       w_qmin( 201)=0.203134049E+00
+       qk_min( 202)=0.771726286E+00
+       w_qmin( 202)=0.207115438E+00
+       qk_min( 203)=0.774712522E+00
+       w_qmin( 203)=0.211142814E+00
+       qk_min( 204)=0.777698758E+00
+       w_qmin( 204)=0.215214139E+00
+       qk_min( 205)=0.780684994E+00
+       w_qmin( 205)=0.219327332E+00
+       qk_min( 206)=0.783671230E+00
+       w_qmin( 206)=0.223479985E+00
+       qk_min( 207)=0.786657466E+00
+       w_qmin( 207)=0.227669736E+00
+       qk_min( 208)=0.789643702E+00
+       w_qmin( 208)=0.231893987E+00
+       qk_min( 209)=0.792629938E+00
+       w_qmin( 209)=0.236149965E+00
+       qk_min( 210)=0.795616174E+00
+       w_qmin( 210)=0.240434886E+00
+       qk_min( 211)=0.798602410E+00
+       w_qmin( 211)=0.244745863E+00
+       qk_min( 212)=0.801588646E+00
+       w_qmin( 212)=0.249079798E+00
+       qk_min( 213)=0.804574882E+00
+       w_qmin( 213)=0.253433668E+00
+       qk_min( 214)=0.807561118E+00
+       w_qmin( 214)=0.257804281E+00
+       qk_min( 215)=0.810547354E+00
+       w_qmin( 215)=0.262188468E+00
+       qk_min( 216)=0.813533590E+00
+       w_qmin( 216)=0.266583002E+00
+       qk_min( 217)=0.816519825E+00
+       w_qmin( 217)=0.270984691E+00
+       qk_min( 218)=0.819506061E+00
+       w_qmin( 218)=0.275390257E+00
+       qk_min( 219)=0.822492297E+00
+       w_qmin( 219)=0.279796413E+00
+       qk_min( 220)=0.825478533E+00
+       w_qmin( 220)=0.284200109E+00
+       qk_min( 221)=0.828464769E+00
+       w_qmin( 221)=0.288598073E+00
+       qk_min( 222)=0.831451005E+00
+       w_qmin( 222)=0.292987345E+00
+       qk_min( 223)=0.834437241E+00
+       w_qmin( 223)=0.297364830E+00
+       qk_min( 224)=0.837423477E+00
+       w_qmin( 224)=0.301727636E+00
+       qk_min( 225)=0.840409713E+00
+       w_qmin( 225)=0.306072843E+00
+       qk_min( 226)=0.843395949E+00
+       w_qmin( 226)=0.310397878E+00
+       qk_min( 227)=0.846382185E+00
+       w_qmin( 227)=0.314699925E+00
+       qk_min( 228)=0.849368421E+00
+       w_qmin( 228)=0.318976548E+00
+       qk_min( 229)=0.852354657E+00
+       w_qmin( 229)=0.323225378E+00
+       qk_min( 230)=0.855340893E+00
+       w_qmin( 230)=0.327444127E+00
+       qk_min( 231)=0.858327129E+00
+       w_qmin( 231)=0.331630590E+00
+       qk_min( 232)=0.861313365E+00
+       w_qmin( 232)=0.335782836E+00
+       qk_min( 233)=0.864299601E+00
+       w_qmin( 233)=0.339898887E+00
+       qk_min( 234)=0.867285837E+00
+       w_qmin( 234)=0.343977060E+00
+       qk_min( 235)=0.870272073E+00
+       w_qmin( 235)=0.348015655E+00
+       qk_min( 236)=0.873258309E+00
+       w_qmin( 236)=0.352013175E+00
+       qk_min( 237)=0.876244545E+00
+       w_qmin( 237)=0.355968259E+00
+       qk_min( 238)=0.879230781E+00
+       w_qmin( 238)=0.359879663E+00
+       qk_min( 239)=0.882217017E+00
+       w_qmin( 239)=0.363746132E+00
+       qk_min( 240)=0.885203253E+00
+       w_qmin( 240)=0.367566742E+00
+       qk_min( 241)=0.888189489E+00
+       w_qmin( 241)=0.371340555E+00
+       qk_min( 242)=0.891175725E+00
+       w_qmin( 242)=0.375066698E+00
+       qk_min( 243)=0.894161961E+00
+       w_qmin( 243)=0.378744459E+00
+       qk_min( 244)=0.897148197E+00
+       w_qmin( 244)=0.382373302E+00
+       qk_min( 245)=0.900134433E+00
+       w_qmin( 245)=0.385952648E+00
+       qk_min( 246)=0.903120669E+00
+       w_qmin( 246)=0.389481991E+00
+       qk_min( 247)=0.906106904E+00
+       w_qmin( 247)=0.392961024E+00
+       qk_min( 248)=0.909093140E+00
+       w_qmin( 248)=0.396389433E+00
+       qk_min( 249)=0.912079376E+00
+       w_qmin( 249)=0.399767068E+00
+       qk_min( 250)=0.915065612E+00
+       w_qmin( 250)=0.403093691E+00
+       qk_min( 251)=0.918051848E+00
+       w_qmin( 251)=0.406369271E+00
+       qk_min( 252)=0.921038084E+00
+       w_qmin( 252)=0.409593802E+00
+       qk_min( 253)=0.924024320E+00
+       w_qmin( 253)=0.412767258E+00
+       qk_min( 254)=0.927010556E+00
+       w_qmin( 254)=0.415889743E+00
+       qk_min( 255)=0.929996792E+00
+       w_qmin( 255)=0.418961428E+00
+       qk_min( 256)=0.932983028E+00
+       w_qmin( 256)=0.421982410E+00
+       qk_min( 257)=0.935969264E+00
+       w_qmin( 257)=0.424952958E+00
+       qk_min( 258)=0.938955500E+00
+       w_qmin( 258)=0.427873267E+00
+       qk_min( 259)=0.941941736E+00
+       w_qmin( 259)=0.430743698E+00
+       qk_min( 260)=0.944927972E+00
+       w_qmin( 260)=0.433564510E+00
+       qk_min( 261)=0.947914208E+00
+       w_qmin( 261)=0.436336023E+00
+       qk_min( 262)=0.950900444E+00
+       w_qmin( 262)=0.439058676E+00
+       qk_min( 263)=0.953886680E+00
+       w_qmin( 263)=0.441732832E+00
+       qk_min( 264)=0.956872916E+00
+       w_qmin( 264)=0.444358892E+00
+       qk_min( 265)=0.959859152E+00
+       w_qmin( 265)=0.446937204E+00
+       qk_min( 266)=0.962845388E+00
+       w_qmin( 266)=0.449468407E+00
+       qk_min( 267)=0.965831624E+00
+       w_qmin( 267)=0.451952818E+00
+       qk_min( 268)=0.968817860E+00
+       w_qmin( 268)=0.454390902E+00
+       qk_min( 269)=0.971804096E+00
+       w_qmin( 269)=0.456783271E+00
+       qk_min( 270)=0.974790332E+00
+       w_qmin( 270)=0.459130352E+00
+       qk_min( 271)=0.977776568E+00
+       w_qmin( 271)=0.461432624E+00
+       qk_min( 272)=0.980762804E+00
+       w_qmin( 272)=0.463690551E+00
+       qk_min( 273)=0.983749040E+00
+       w_qmin( 273)=0.465904807E+00
+       qk_min( 274)=0.986735276E+00
+       w_qmin( 274)=0.468075779E+00
+       qk_min( 275)=0.989721512E+00
+       w_qmin( 275)=0.470204073E+00
+       qk_min( 276)=0.992707748E+00
+       w_qmin( 276)=0.472290120E+00
+       qk_min( 277)=0.995693984E+00
+       w_qmin( 277)=0.474334590E+00
+       qk_min( 278)=0.998680219E+00
+       w_qmin( 278)=0.476337904E+00
+       qk_min( 279)=0.100166646E+01
+       w_qmin( 279)=0.478300583E+00
+       qk_min( 280)=0.100465269E+01
+       w_qmin( 280)=0.480223343E+00
+       qk_min( 281)=0.100763893E+01
+       w_qmin( 281)=0.482106413E+00
+       qk_min( 282)=0.101062516E+01
+       w_qmin( 282)=0.483950519E+00
+       qk_min( 283)=0.101361140E+01
+       w_qmin( 283)=0.485756267E+00
+       qk_min( 284)=0.101659764E+01
+       w_qmin( 284)=0.487523890E+00
+       qk_min( 285)=0.101958387E+01
+       w_qmin( 285)=0.489254119E+00
+       qk_min( 286)=0.102257011E+01
+       w_qmin( 286)=0.490947531E+00
+       qk_min( 287)=0.102555634E+01
+       w_qmin( 287)=0.492604494E+00
+       qk_min( 288)=0.102854258E+01
+       w_qmin( 288)=0.494225644E+00
+       qk_min( 289)=0.103152882E+01
+       w_qmin( 289)=0.495811230E+00
+       qk_min( 290)=0.103451505E+01
+       w_qmin( 290)=0.497361969E+00
+       qk_min( 291)=0.103750129E+01
+       w_qmin( 291)=0.498878451E+00
+       qk_min( 292)=0.104048752E+01
+       w_qmin( 292)=0.500360890E+00
+       qk_min( 293)=0.104347376E+01
+       w_qmin( 293)=0.501809882E+00
+       qk_min( 294)=0.104645999E+01
+       w_qmin( 294)=0.503226110E+00
+       qk_min( 295)=0.104944623E+01
+       w_qmin( 295)=0.504609696E+00
+       qk_min( 296)=0.105243247E+01
+       w_qmin( 296)=0.505961288E+00
+       qk_min( 297)=0.105541870E+01
+       w_qmin( 297)=0.507281527E+00
+       qk_min( 298)=0.105840494E+01
+       w_qmin( 298)=0.508570536E+00
+       qk_min( 299)=0.106139117E+01
+       w_qmin( 299)=0.509828925E+00
+       qk_min( 300)=0.106437741E+01
+       w_qmin( 300)=0.511057261E+00
+       qk_min( 301)=0.106736365E+01
+       w_qmin( 301)=0.512255761E+00
+       qk_min( 302)=0.107034988E+01
+       w_qmin( 302)=0.513425076E+00
+       qk_min( 303)=0.107333612E+01
+       w_qmin( 303)=0.514565403E+00
+       qk_min( 304)=0.107632235E+01
+       w_qmin( 304)=0.515677265E+00
+       qk_min( 305)=0.107930859E+01
+       w_qmin( 305)=0.516761289E+00
+       qk_min( 306)=0.108229483E+01
+       w_qmin( 306)=0.517817503E+00
+       qk_min( 307)=0.108528106E+01
+       w_qmin( 307)=0.518846546E+00
+       qk_min( 308)=0.108826730E+01
+       w_qmin( 308)=0.519848956E+00
+       qk_min( 309)=0.109125353E+01
+       w_qmin( 309)=0.520824818E+00
+       qk_min( 310)=0.109423977E+01
+       w_qmin( 310)=0.521774666E+00
+       qk_min( 311)=0.109722601E+01
+       w_qmin( 311)=0.522699091E+00
+       qk_min( 312)=0.110021224E+01
+       w_qmin( 312)=0.523598083E+00
+       qk_min( 313)=0.110319848E+01
+       w_qmin( 313)=0.524472371E+00
+       qk_min( 314)=0.110618471E+01
+       w_qmin( 314)=0.525322030E+00
+       qk_min( 315)=0.110917095E+01
+       w_qmin( 315)=0.526147561E+00
+       qk_min( 316)=0.111215719E+01
+       w_qmin( 316)=0.526949538E+00
+       qk_min( 317)=0.111514342E+01
+       w_qmin( 317)=0.527727861E+00
+       qk_min( 318)=0.111812966E+01
+       w_qmin( 318)=0.528483162E+00
+       qk_min( 319)=0.112111589E+01
+       w_qmin( 319)=0.529215940E+00
+       qk_min( 320)=0.112410213E+01
+       w_qmin( 320)=0.529926124E+00
+       qk_min( 321)=0.112708837E+01
+       w_qmin( 321)=0.530614345E+00
+       qk_min( 322)=0.113007460E+01
+       w_qmin( 322)=0.531281004E+00
+       qk_min( 323)=0.113306084E+01
+       w_qmin( 323)=0.531926110E+00
+       qk_min( 324)=0.113604707E+01
+       w_qmin( 324)=0.532550319E+00
+       qk_min( 325)=0.113903331E+01
+       w_qmin( 325)=0.533153644E+00
+       qk_min( 326)=0.114201955E+01
+       w_qmin( 326)=0.533736493E+00
+       qk_min( 327)=0.114500578E+01
+       w_qmin( 327)=0.534299452E+00
+       qk_min( 328)=0.114799202E+01
+       w_qmin( 328)=0.534842376E+00
+       qk_min( 329)=0.115097825E+01
+       w_qmin( 329)=0.535365735E+00
+       qk_min( 330)=0.115396449E+01
+       w_qmin( 330)=0.535870152E+00
+       qk_min( 331)=0.115695073E+01
+       w_qmin( 331)=0.536355393E+00
+       qk_min( 332)=0.115993696E+01
+       w_qmin( 332)=0.536821972E+00
+       qk_min( 333)=0.116292320E+01
+       w_qmin( 333)=0.537270389E+00
+       qk_min( 334)=0.116590943E+01
+       w_qmin( 334)=0.537700432E+00
+       qk_min( 335)=0.116889567E+01
+       w_qmin( 335)=0.538112944E+00
+       qk_min( 336)=0.117188191E+01
+       w_qmin( 336)=0.538507669E+00
+       qk_min( 337)=0.117486814E+01
+       w_qmin( 337)=0.538885100E+00
+       qk_min( 338)=0.117785438E+01
+       w_qmin( 338)=0.539245715E+00
+       qk_min( 339)=0.118084061E+01
+       w_qmin( 339)=0.539589356E+00
+       qk_min( 340)=0.118382685E+01
+       w_qmin( 340)=0.539916440E+00
+       qk_min( 341)=0.118681309E+01
+       w_qmin( 341)=0.540227405E+00
+       qk_min( 342)=0.118979932E+01
+       w_qmin( 342)=0.540522272E+00
+       qk_min( 343)=0.119278556E+01
+       w_qmin( 343)=0.540801246E+00
+       qk_min( 344)=0.119577179E+01
+       w_qmin( 344)=0.541064908E+00
+       qk_min( 345)=0.119875803E+01
+       w_qmin( 345)=0.541313059E+00
+       qk_min( 346)=0.120174427E+01
+       w_qmin( 346)=0.541546322E+00
+       qk_min( 347)=0.120473050E+01
+       w_qmin( 347)=0.541764479E+00
+       qk_min( 348)=0.120771674E+01
+       w_qmin( 348)=0.541968063E+00
+       qk_min( 349)=0.121070297E+01
+       w_qmin( 349)=0.542157403E+00
+       qk_min( 350)=0.121368921E+01
+       w_qmin( 350)=0.542332339E+00
+       qk_min( 351)=0.121667545E+01
+       w_qmin( 351)=0.542493333E+00
+       qk_min( 352)=0.121966168E+01
+       w_qmin( 352)=0.542640711E+00
+       qk_min( 353)=0.122264792E+01
+       w_qmin( 353)=0.542774338E+00
+       qk_min( 354)=0.122563415E+01
+       w_qmin( 354)=0.542894618E+00
+       qk_min( 355)=0.122862039E+01
+       w_qmin( 355)=0.543001938E+00
+       qk_min( 356)=0.123160662E+01
+       w_qmin( 356)=0.543096128E+00
+       qk_min( 357)=0.123459286E+01
+       w_qmin( 357)=0.543177701E+00
+       qk_min( 358)=0.123757910E+01
+       w_qmin( 358)=0.543246522E+00
+       qk_min( 359)=0.124056533E+01
+       w_qmin( 359)=0.543302958E+00
+       qk_min( 360)=0.124355157E+01
+       w_qmin( 360)=0.543347446E+00
+       qk_min( 361)=0.124653780E+01
+       w_qmin( 361)=0.543379671E+00
+       qk_min( 362)=0.124952404E+01
+       w_qmin( 362)=0.543400084E+00
+       qk_min( 363)=0.125251028E+01
+       w_qmin( 363)=0.543409059E+00
+       qk_min( 364)=0.125549651E+01
+       w_qmin( 364)=0.543406400E+00
+       qk_min( 365)=0.125848275E+01
+       w_qmin( 365)=0.543392428E+00
+       qk_min( 366)=0.126146898E+01
+       w_qmin( 366)=0.543367507E+00
+       qk_min( 367)=0.126445522E+01
+       w_qmin( 367)=0.543331472E+00
+       qk_min( 368)=0.126744146E+01
+       w_qmin( 368)=0.543284860E+00
+       qk_min( 369)=0.127042769E+01
+       w_qmin( 369)=0.543227392E+00
+       qk_min( 370)=0.127341393E+01
+       w_qmin( 370)=0.543159509E+00
+       qk_min( 371)=0.127640016E+01
+       w_qmin( 371)=0.543081523E+00
+       qk_min( 372)=0.127938640E+01
+       w_qmin( 372)=0.542993193E+00
+       qk_min( 373)=0.128237264E+01
+       w_qmin( 373)=0.542894873E+00
+       qk_min( 374)=0.128535887E+01
+       w_qmin( 374)=0.542786982E+00
+       qk_min( 375)=0.128834511E+01
+       w_qmin( 375)=0.542669147E+00
+       qk_min( 376)=0.129133134E+01
+       w_qmin( 376)=0.542541860E+00
+       qk_min( 377)=0.129431758E+01
+       w_qmin( 377)=0.542405370E+00
+       qk_min( 378)=0.129730382E+01
+       w_qmin( 378)=0.542259464E+00
+       qk_min( 379)=0.130029005E+01
+       w_qmin( 379)=0.542104674E+00
+       qk_min( 380)=0.130327629E+01
+       w_qmin( 380)=0.541940738E+00
+       qk_min( 381)=0.130626252E+01
+       w_qmin( 381)=0.541767974E+00
+       qk_min( 382)=0.130924876E+01
+       w_qmin( 382)=0.541586815E+00
+       qk_min( 383)=0.131223500E+01
+       w_qmin( 383)=0.541396898E+00
+       qk_min( 384)=0.131522123E+01
+       w_qmin( 384)=0.541198618E+00
+       qk_min( 385)=0.131820747E+01
+       w_qmin( 385)=0.540992289E+00
+       qk_min( 386)=0.132119370E+01
+       w_qmin( 386)=0.540777604E+00
+       qk_min( 387)=0.132417994E+01
+       w_qmin( 387)=0.540554936E+00
+       qk_min( 388)=0.132716618E+01
+       w_qmin( 388)=0.540324661E+00
+       qk_min( 389)=0.133015241E+01
+       w_qmin( 389)=0.540086396E+00
+       qk_min( 390)=0.133313865E+01
+       w_qmin( 390)=0.539840736E+00
+       qk_min( 391)=0.133612488E+01
+       w_qmin( 391)=0.539587426E+00
+       qk_min( 392)=0.133911112E+01
+       w_qmin( 392)=0.539326728E+00
+       qk_min( 393)=0.134209736E+01
+       w_qmin( 393)=0.539058968E+00
+       qk_min( 394)=0.134508359E+01
+       w_qmin( 394)=0.538783923E+00
+       qk_min( 395)=0.134806983E+01
+       w_qmin( 395)=0.538501861E+00
+       qk_min( 396)=0.135105606E+01
+       w_qmin( 396)=0.538213123E+00
+       qk_min( 397)=0.135404230E+01
+       w_qmin( 397)=0.537917360E+00
+       qk_min( 398)=0.135702854E+01
+       w_qmin( 398)=0.537614984E+00
+       qk_min( 399)=0.136001477E+01
+       w_qmin( 399)=0.537306213E+00
+       qk_min( 400)=0.136300101E+01
+       w_qmin( 400)=0.536990875E+00
+       qk_min( 401)=0.136598724E+01
+       w_qmin( 401)=0.536669385E+00
+       qk_min( 402)=0.136897348E+01
+       w_qmin( 402)=0.536341436E+00
+       qk_min( 403)=0.137195972E+01
+       w_qmin( 403)=0.536007425E+00
+       qk_min( 404)=0.137494595E+01
+       w_qmin( 404)=0.535667621E+00
+       qk_min( 405)=0.137793219E+01
+       w_qmin( 405)=0.535321655E+00
+       qk_min( 406)=0.138091842E+01
+       w_qmin( 406)=0.534969909E+00
+       qk_min( 407)=0.138390466E+01
+       w_qmin( 407)=0.534612668E+00
+       qk_min( 408)=0.138689090E+01
+       w_qmin( 408)=0.534249689E+00
+       qk_min( 409)=0.138987713E+01
+       w_qmin( 409)=0.533881140E+00
+       qk_min( 410)=0.139286337E+01
+       w_qmin( 410)=0.533507407E+00
+       qk_min( 411)=0.139584960E+01
+       w_qmin( 411)=0.533128187E+00
+       qk_min( 412)=0.139883584E+01
+       w_qmin( 412)=0.532744012E+00
+       qk_min( 413)=0.140182208E+01
+       w_qmin( 413)=0.532354469E+00
+       qk_min( 414)=0.140480831E+01
+       w_qmin( 414)=0.531959918E+00
+       qk_min( 415)=0.140779455E+01
+       w_qmin( 415)=0.531560676E+00
+       qk_min( 416)=0.141078078E+01
+       w_qmin( 416)=0.531156400E+00
+       qk_min( 417)=0.141376702E+01
+       w_qmin( 417)=0.530747389E+00
+       qk_min( 418)=0.141675325E+01
+       w_qmin( 418)=0.530333888E+00
+       qk_min( 419)=0.141973949E+01
+       w_qmin( 419)=0.529915692E+00
+       qk_min( 420)=0.142272573E+01
+       w_qmin( 420)=0.529492975E+00
+       qk_min( 421)=0.142571196E+01
+       w_qmin( 421)=0.529066088E+00
+       qk_min( 422)=0.142869820E+01
+       w_qmin( 422)=0.528634723E+00
+       qk_min( 423)=0.143168443E+01
+       w_qmin( 423)=0.528199314E+00
+       qk_min( 424)=0.143467067E+01
+       w_qmin( 424)=0.527759608E+00
+       qk_min( 425)=0.143765691E+01
+       w_qmin( 425)=0.527315821E+00
+       qk_min( 426)=0.144064314E+01
+       w_qmin( 426)=0.526868363E+00
+       qk_min( 427)=0.144362938E+01
+       w_qmin( 427)=0.526416729E+00
+       qk_min( 428)=0.144661561E+01
+       w_qmin( 428)=0.525961361E+00
+       qk_min( 429)=0.144960185E+01
+       w_qmin( 429)=0.525502422E+00
+       qk_min( 430)=0.145258809E+01
+       w_qmin( 430)=0.525039686E+00
+       qk_min( 431)=0.145557432E+01
+       w_qmin( 431)=0.524573407E+00
+       qk_min( 432)=0.145856056E+01
+       w_qmin( 432)=0.524103775E+00
+       qk_min( 433)=0.146154679E+01
+       w_qmin( 433)=0.523630614E+00
+       qk_min( 434)=0.146453303E+01
+       w_qmin( 434)=0.523154084E+00
+       qk_min( 435)=0.146751927E+01
+       w_qmin( 435)=0.522674555E+00
+       qk_min( 436)=0.147050550E+01
+       w_qmin( 436)=0.522191583E+00
+       qk_min( 437)=0.147349174E+01
+       w_qmin( 437)=0.521705726E+00
+       qk_min( 438)=0.147647797E+01
+       w_qmin( 438)=0.521216638E+00
+       qk_min( 439)=0.147946421E+01
+       w_qmin( 439)=0.520724590E+00
+       qk_min( 440)=0.148245045E+01
+       w_qmin( 440)=0.520229833E+00
+       qk_min( 441)=0.148543668E+01
+       w_qmin( 441)=0.519732090E+00
+       qk_min( 442)=0.148842292E+01
+       w_qmin( 442)=0.519231598E+00
+       qk_min( 443)=0.149140915E+01
+       w_qmin( 443)=0.518728584E+00
+       qk_min( 444)=0.149439539E+01
+       w_qmin( 444)=0.518222796E+00
+       qk_min( 445)=0.149738163E+01
+       w_qmin( 445)=0.517714472E+00
+       qk_min( 446)=0.150036786E+01
+       w_qmin( 446)=0.517203847E+00
+       qk_min( 447)=0.150335410E+01
+       w_qmin( 447)=0.516690634E+00
+       qk_min( 448)=0.150634033E+01
+       w_qmin( 448)=0.516175256E+00
+       qk_min( 449)=0.150932657E+01
+       w_qmin( 449)=0.515657396E+00
+       qk_min( 450)=0.151231281E+01
+       w_qmin( 450)=0.515137294E+00
+       qk_min( 451)=0.151529904E+01
+       w_qmin( 451)=0.514615279E+00
+       qk_min( 452)=0.151828528E+01
+       w_qmin( 452)=0.514091024E+00
+       qk_min( 453)=0.152127151E+01
+       w_qmin( 453)=0.513564681E+00
+       qk_min( 454)=0.152425775E+01
+       w_qmin( 454)=0.513036626E+00
+       qk_min( 455)=0.152724399E+01
+       w_qmin( 455)=0.512506443E+00
+       qk_min( 456)=0.153023022E+01
+       w_qmin( 456)=0.511974495E+00
+       qk_min( 457)=0.153321646E+01
+       w_qmin( 457)=0.511440948E+00
+       qk_min( 458)=0.153620269E+01
+       w_qmin( 458)=0.510905468E+00
+       qk_min( 459)=0.153918893E+01
+       w_qmin( 459)=0.510368563E+00
+       qk_min( 460)=0.154217517E+01
+       w_qmin( 460)=0.509829851E+00
+       qk_min( 461)=0.154516140E+01
+       w_qmin( 461)=0.509289616E+00
+       qk_min( 462)=0.154814764E+01
+       w_qmin( 462)=0.508748070E+00
+       qk_min( 463)=0.155113387E+01
+       w_qmin( 463)=0.508204964E+00
+       qk_min( 464)=0.155412011E+01
+       w_qmin( 464)=0.507660398E+00
+       qk_min( 465)=0.155710635E+01
+       w_qmin( 465)=0.507114773E+00
+       qk_min( 466)=0.156009258E+01
+       w_qmin( 466)=0.506567686E+00
+       qk_min( 467)=0.156307882E+01
+       w_qmin( 467)=0.506019400E+00
+       qk_min( 468)=0.156606505E+01
+       w_qmin( 468)=0.505470120E+00
+       qk_min( 469)=0.156905129E+01
+       w_qmin( 469)=0.504919604E+00
+       qk_min( 470)=0.157203753E+01
+       w_qmin( 470)=0.504368231E+00
+       qk_min( 471)=0.157502376E+01
+       w_qmin( 471)=0.503815639E+00
+       qk_min( 472)=0.157801000E+01
+       w_qmin( 472)=0.503262117E+00
+       qk_min( 473)=0.158099623E+01
+       w_qmin( 473)=0.502707951E+00
+       qk_min( 474)=0.158398247E+01
+       w_qmin( 474)=0.502152789E+00
+       qk_min( 475)=0.158696871E+01
+       w_qmin( 475)=0.501596826E+00
+       qk_min( 476)=0.158995494E+01
+       w_qmin( 476)=0.501040318E+00
+       qk_min( 477)=0.159294118E+01
+       w_qmin( 477)=0.500482902E+00
+       qk_min( 478)=0.159592741E+01
+       w_qmin( 478)=0.499924909E+00
+       qk_min( 479)=0.159891365E+01
+       w_qmin( 479)=0.499366604E+00
+       qk_min( 480)=0.160189988E+01
+       w_qmin( 480)=0.498807513E+00
+       qk_min( 481)=0.160488612E+01
+       w_qmin( 481)=0.498248118E+00
+       qk_min( 482)=0.160787236E+01
+       w_qmin( 482)=0.497688151E+00
+       qk_min( 483)=0.161085859E+01
+       w_qmin( 483)=0.497127798E+00
+       qk_min( 484)=0.161384483E+01
+       w_qmin( 484)=0.496567364E+00
+       qk_min( 485)=0.161683106E+01
+       w_qmin( 485)=0.496006401E+00
+       qk_min( 486)=0.161981730E+01
+       w_qmin( 486)=0.495445240E+00
+       qk_min( 487)=0.162280354E+01
+       w_qmin( 487)=0.494884131E+00
+       qk_min( 488)=0.162578977E+01
+       w_qmin( 488)=0.494322710E+00
+       qk_min( 489)=0.162877601E+01
+       w_qmin( 489)=0.493761162E+00
+       qk_min( 490)=0.163176224E+01
+       w_qmin( 490)=0.493199736E+00
+       qk_min( 491)=0.163474848E+01
+       w_qmin( 491)=0.492638233E+00
+       qk_min( 492)=0.163773472E+01
+       w_qmin( 492)=0.492076930E+00
+       qk_min( 493)=0.164072095E+01
+       w_qmin( 493)=0.491515523E+00
+       qk_min( 494)=0.164370719E+01
+       w_qmin( 494)=0.490954318E+00
+       qk_min( 495)=0.164669342E+01
+       w_qmin( 495)=0.490393470E+00
+       qk_min( 496)=0.164967966E+01
+       w_qmin( 496)=0.489832666E+00
+       qk_min( 497)=0.165266590E+01
+       w_qmin( 497)=0.489272158E+00
+       qk_min( 498)=0.165565213E+01
+       w_qmin( 498)=0.488712218E+00
+       qk_min( 499)=0.165863837E+01
+       w_qmin( 499)=0.488152449E+00
+       qk_min( 500)=0.166162460E+01
+       w_qmin( 500)=0.487593148E+00
+       qk_min( 501)=0.166461084E+01
+       w_qmin( 501)=0.487034420E+00
+       qk_min( 502)=0.166759708E+01
+       w_qmin( 502)=0.486476058E+00
+       qk_min( 503)=0.167058331E+01
+       w_qmin( 503)=0.485918525E+00
+       qk_min( 504)=0.167356955E+01
+       w_qmin( 504)=0.485361316E+00
+       qk_min( 505)=0.167655578E+01
+       w_qmin( 505)=0.484804867E+00
+       qk_min( 506)=0.167954202E+01
+       w_qmin( 506)=0.484249219E+00
+       qk_min( 507)=0.168252826E+01
+       w_qmin( 507)=0.483694177E+00
+       qk_min( 508)=0.168551449E+01
+       w_qmin( 508)=0.483139964E+00
+       qk_min( 509)=0.168850073E+01
+       w_qmin( 509)=0.482586753E+00
+       qk_min( 510)=0.169148696E+01
+       w_qmin( 510)=0.482034212E+00
+       qk_min( 511)=0.169447320E+01
+       w_qmin( 511)=0.481482667E+00
+       qk_min( 512)=0.169745944E+01
+       w_qmin( 512)=0.480932319E+00
+       qk_min( 513)=0.170044567E+01
+       w_qmin( 513)=0.480382781E+00
+       qk_min( 514)=0.170343191E+01
+       w_qmin( 514)=0.479834505E+00
+       qk_min( 515)=0.170641814E+01
+       w_qmin( 515)=0.479287223E+00
+       qk_min( 516)=0.170940438E+01
+       w_qmin( 516)=0.478741097E+00
+       qk_min( 517)=0.171239062E+01
+       w_qmin( 517)=0.478196318E+00
+       qk_min( 518)=0.171537685E+01
+       w_qmin( 518)=0.477652681E+00
+       qk_min( 519)=0.171836309E+01
+       w_qmin( 519)=0.477110392E+00
+       qk_min( 520)=0.172134932E+01
+       w_qmin( 520)=0.476569620E+00
+       qk_min( 521)=0.172433556E+01
+       w_qmin( 521)=0.476030097E+00
+       qk_min( 522)=0.172732180E+01
+       w_qmin( 522)=0.475492019E+00
+       qk_min( 523)=0.173030803E+01
+       w_qmin( 523)=0.474955653E+00
+       qk_min( 524)=0.173329427E+01
+       w_qmin( 524)=0.474420744E+00
+       qk_min( 525)=0.173628050E+01
+       w_qmin( 525)=0.473887491E+00
+       qk_min( 526)=0.173926674E+01
+       w_qmin( 526)=0.473355784E+00
+       qk_min( 527)=0.174225298E+01
+       w_qmin( 527)=0.472825855E+00
+       qk_min( 528)=0.174523921E+01
+       w_qmin( 528)=0.472297828E+00
+       qk_min( 529)=0.174822545E+01
+       w_qmin( 529)=0.471771411E+00
+       qk_min( 530)=0.175121168E+01
+       w_qmin( 530)=0.471246842E+00
+       qk_min( 531)=0.175419792E+01
+       w_qmin( 531)=0.470724461E+00
+       qk_min( 532)=0.175718416E+01
+       w_qmin( 532)=0.470203938E+00
+       qk_min( 533)=0.176017039E+01
+       w_qmin( 533)=0.469685388E+00
+       qk_min( 534)=0.176315663E+01
+       w_qmin( 534)=0.469169078E+00
+       qk_min( 535)=0.176614286E+01
+       w_qmin( 535)=0.468654804E+00
+       qk_min( 536)=0.176912910E+01
+       w_qmin( 536)=0.468142913E+00
+       qk_min( 537)=0.177211533E+01
+       w_qmin( 537)=0.467633090E+00
+       qk_min( 538)=0.177510157E+01
+       w_qmin( 538)=0.467125676E+00
+       qk_min( 539)=0.177808781E+01
+       w_qmin( 539)=0.466620768E+00
+       qk_min( 540)=0.178107404E+01
+       w_qmin( 540)=0.466118218E+00
+       qk_min( 541)=0.178406028E+01
+       w_qmin( 541)=0.465618229E+00
+       qk_min( 542)=0.178704651E+01
+       w_qmin( 542)=0.465120957E+00
+       qk_min( 543)=0.179003275E+01
+       w_qmin( 543)=0.464626218E+00
+       qk_min( 544)=0.179301899E+01
+       w_qmin( 544)=0.464134308E+00
+       qk_min( 545)=0.179600522E+01
+       w_qmin( 545)=0.463645353E+00
+       qk_min( 546)=0.179899146E+01
+       w_qmin( 546)=0.463159109E+00
+       qk_min( 547)=0.180197769E+01
+       w_qmin( 547)=0.462676061E+00
+       qk_min( 548)=0.180496393E+01
+       w_qmin( 548)=0.462195894E+00
+       qk_min( 549)=0.180795017E+01
+       w_qmin( 549)=0.461718899E+00
+       qk_min( 550)=0.181093640E+01
+       w_qmin( 550)=0.461245308E+00
+       qk_min( 551)=0.181392264E+01
+       w_qmin( 551)=0.460774970E+00
+       qk_min( 552)=0.181690887E+01
+       w_qmin( 552)=0.460308043E+00
+       qk_min( 553)=0.181989511E+01
+       w_qmin( 553)=0.459844769E+00
+       qk_min( 554)=0.182288135E+01
+       w_qmin( 554)=0.459385040E+00
+       qk_min( 555)=0.182586758E+01
+       w_qmin( 555)=0.458928991E+00
+       qk_min( 556)=0.182885382E+01
+       w_qmin( 556)=0.458477051E+00
+       qk_min( 557)=0.183184005E+01
+       w_qmin( 557)=0.458028918E+00
+       qk_min( 558)=0.183482629E+01
+       w_qmin( 558)=0.457584775E+00
+       qk_min( 559)=0.183781253E+01
+       w_qmin( 559)=0.457145134E+00
+       qk_min( 560)=0.184079876E+01
+       w_qmin( 560)=0.456709548E+00
+       qk_min( 561)=0.184378500E+01
+       w_qmin( 561)=0.456278691E+00
+       qk_min( 562)=0.184677123E+01
+       w_qmin( 562)=0.455852184E+00
+       qk_min( 563)=0.184975747E+01
+       w_qmin( 563)=0.455430482E+00
+       qk_min( 564)=0.185274371E+01
+       w_qmin( 564)=0.455013800E+00
+       qk_min( 565)=0.185572994E+01
+       w_qmin( 565)=0.454601965E+00
+       qk_min( 566)=0.185871618E+01
+       w_qmin( 566)=0.454195356E+00
+       qk_min( 567)=0.186170241E+01
+       w_qmin( 567)=0.453794181E+00
+       qk_min( 568)=0.186468865E+01
+       w_qmin( 568)=0.453398279E+00
+       qk_min( 569)=0.186767489E+01
+       w_qmin( 569)=0.453007960E+00
+       qk_min( 570)=0.187066112E+01
+       w_qmin( 570)=0.452623488E+00
+       qk_min( 571)=0.187364736E+01
+       w_qmin( 571)=0.452244727E+00
+       qk_min( 572)=0.187663359E+01
+       w_qmin( 572)=0.451872140E+00
+       qk_min( 573)=0.187961983E+01
+       w_qmin( 573)=0.451505427E+00
+       qk_min( 574)=0.188260607E+01
+       w_qmin( 574)=0.451144991E+00
+       qk_min( 575)=0.188559230E+01
+       w_qmin( 575)=0.450790965E+00
+       qk_min( 576)=0.188857854E+01
+       w_qmin( 576)=0.450443152E+00
+       qk_min( 577)=0.189156477E+01
+       w_qmin( 577)=0.450101827E+00
+       qk_min( 578)=0.189455101E+01
+       w_qmin( 578)=0.449767107E+00
+       qk_min( 579)=0.189753725E+01
+       w_qmin( 579)=0.449438788E+00
+       qk_min( 580)=0.190052348E+01
+       w_qmin( 580)=0.449116874E+00
+       qk_min( 581)=0.190350972E+01
+       w_qmin( 581)=0.448801707E+00
+       qk_min( 582)=0.190649595E+01
+       w_qmin( 582)=0.448492636E+00
+       qk_min( 583)=0.190948219E+01
+       w_qmin( 583)=0.448190064E+00
+       qk_min( 584)=0.191246843E+01
+       w_qmin( 584)=0.447893625E+00
+       qk_min( 585)=0.191545466E+01
+       w_qmin( 585)=0.447603192E+00
+       qk_min( 586)=0.191844090E+01
+       w_qmin( 586)=0.447318726E+00
+       qk_min( 587)=0.192142713E+01
+       w_qmin( 587)=0.447039829E+00
+       qk_min( 588)=0.192441337E+01
+       w_qmin( 588)=0.446766438E+00
+       qk_min( 589)=0.192739961E+01
+       w_qmin( 589)=0.446498400E+00
+       qk_min( 590)=0.193038584E+01
+       w_qmin( 590)=0.446235093E+00
+       qk_min( 591)=0.193337208E+01
+       w_qmin( 591)=0.445976490E+00
+       qk_min( 592)=0.193635831E+01
+       w_qmin( 592)=0.445722525E+00
+       qk_min( 593)=0.193934455E+01
+       w_qmin( 593)=0.445472463E+00
+       qk_min( 594)=0.194233079E+01
+       w_qmin( 594)=0.445226434E+00
+       qk_min( 595)=0.194531702E+01
+       w_qmin( 595)=0.444983799E+00
+       qk_min( 596)=0.194830326E+01
+       w_qmin( 596)=0.444744462E+00
+       qk_min( 597)=0.195128949E+01
+       w_qmin( 597)=0.444508317E+00
+       qk_min( 598)=0.195427573E+01
+       w_qmin( 598)=0.444274700E+00
+       qk_min( 599)=0.195726196E+01
+       w_qmin( 599)=0.444043671E+00
+       qk_min( 600)=0.196024820E+01
+       w_qmin( 600)=0.443815056E+00
+       qk_min( 601)=0.196323444E+01
+       w_qmin( 601)=0.443588401E+00
+       qk_min( 602)=0.196622067E+01
+       w_qmin( 602)=0.443363527E+00
+       qk_min( 603)=0.196920691E+01
+       w_qmin( 603)=0.443140523E+00
+       qk_min( 604)=0.197219314E+01
+       w_qmin( 604)=0.442918871E+00
+       qk_min( 605)=0.197517938E+01
+       w_qmin( 605)=0.442698666E+00
+       qk_min( 606)=0.197816562E+01
+       w_qmin( 606)=0.442479554E+00
+       qk_min( 607)=0.198115185E+01
+       w_qmin( 607)=0.442261491E+00
+       qk_min( 608)=0.198413809E+01
+       w_qmin( 608)=0.442044628E+00
+       qk_min( 609)=0.198712432E+01
+       w_qmin( 609)=0.441828483E+00
+       qk_min( 610)=0.199011056E+01
+       w_qmin( 610)=0.441613110E+00
+       qk_min( 611)=0.199309680E+01
+       w_qmin( 611)=0.441398474E+00
+       qk_min( 612)=0.199608303E+01
+       w_qmin( 612)=0.441184405E+00
+       qk_min( 613)=0.199906927E+01
+       w_qmin( 613)=0.440970956E+00
+       qk_min( 614)=0.200205550E+01
+       w_qmin( 614)=0.440758017E+00
+       qk_min( 615)=0.200504174E+01
+       w_qmin( 615)=0.440545795E+00
+       qk_min( 616)=0.200802798E+01
+       w_qmin( 616)=0.440333851E+00
+       qk_min( 617)=0.201101421E+01
+       w_qmin( 617)=0.440122243E+00
+       qk_min( 618)=0.201400045E+01
+       w_qmin( 618)=0.439911113E+00
+       qk_min( 619)=0.201698668E+01
+       w_qmin( 619)=0.439700340E+00
+       qk_min( 620)=0.201997292E+01
+       w_qmin( 620)=0.439490007E+00
+       qk_min( 621)=0.202295916E+01
+       w_qmin( 621)=0.439280374E+00
+       qk_min( 622)=0.202594539E+01
+       w_qmin( 622)=0.439070781E+00
+       qk_min( 623)=0.202893163E+01
+       w_qmin( 623)=0.438861636E+00
+       qk_min( 624)=0.203191786E+01
+       w_qmin( 624)=0.438652871E+00
+       qk_min( 625)=0.203490410E+01
+       w_qmin( 625)=0.438444506E+00
+       qk_min( 626)=0.203789034E+01
+       w_qmin( 626)=0.438236817E+00
+       qk_min( 627)=0.204087657E+01
+       w_qmin( 627)=0.438029311E+00
+       qk_min( 628)=0.204386281E+01
+       w_qmin( 628)=0.437822142E+00
+       qk_min( 629)=0.204684904E+01
+       w_qmin( 629)=0.437615533E+00
+       qk_min( 630)=0.204983528E+01
+       w_qmin( 630)=0.437409289E+00
+       qk_min( 631)=0.205282152E+01
+       w_qmin( 631)=0.437203640E+00
+       qk_min( 632)=0.205580775E+01
+       w_qmin( 632)=0.436998714E+00
+       qk_min( 633)=0.205879399E+01
+       w_qmin( 633)=0.436794000E+00
+       qk_min( 634)=0.206178022E+01
+       w_qmin( 634)=0.436589930E+00
+       qk_min( 635)=0.206476646E+01
+       w_qmin( 635)=0.436386245E+00
+       qk_min( 636)=0.206775270E+01
+       w_qmin( 636)=0.436183265E+00
+       qk_min( 637)=0.207073893E+01
+       w_qmin( 637)=0.435981103E+00
+       qk_min( 638)=0.207372517E+01
+       w_qmin( 638)=0.435779330E+00
+       qk_min( 639)=0.207671140E+01
+       w_qmin( 639)=0.435578204E+00
+       qk_min( 640)=0.207969764E+01
+       w_qmin( 640)=0.435377642E+00
+       qk_min( 641)=0.208268388E+01
+       w_qmin( 641)=0.435177798E+00
+       qk_min( 642)=0.208567011E+01
+       w_qmin( 642)=0.434978644E+00
+       qk_min( 643)=0.208865635E+01
+       w_qmin( 643)=0.434780538E+00
+       qk_min( 644)=0.209164258E+01
+       w_qmin( 644)=0.434582760E+00
+       qk_min( 645)=0.209462882E+01
+       w_qmin( 645)=0.434385882E+00
+       qk_min( 646)=0.209761506E+01
+       w_qmin( 646)=0.434189713E+00
+       qk_min( 647)=0.210060129E+01
+       w_qmin( 647)=0.433994294E+00
+       qk_min( 648)=0.210358753E+01
+       w_qmin( 648)=0.433799996E+00
+       qk_min( 649)=0.210657376E+01
+       w_qmin( 649)=0.433606223E+00
+       qk_min( 650)=0.210956000E+01
+       w_qmin( 650)=0.433413285E+00
+       qk_min( 651)=0.211254624E+01
+       w_qmin( 651)=0.433221235E+00
+       qk_min( 652)=0.211553247E+01
+       w_qmin( 652)=0.433030134E+00
+       qk_min( 653)=0.211851871E+01
+       w_qmin( 653)=0.432839735E+00
+       qk_min( 654)=0.212150494E+01
+       w_qmin( 654)=0.432650622E+00
+       qk_min( 655)=0.212449118E+01
+       w_qmin( 655)=0.432462082E+00
+       qk_min( 656)=0.212747742E+01
+       w_qmin( 656)=0.432274568E+00
+       qk_min( 657)=0.213046365E+01
+       w_qmin( 657)=0.432087939E+00
+       qk_min( 658)=0.213344989E+01
+       w_qmin( 658)=0.431902265E+00
+       qk_min( 659)=0.213643612E+01
+       w_qmin( 659)=0.431717845E+00
+       qk_min( 660)=0.213942236E+01
+       w_qmin( 660)=0.431534055E+00
+       qk_min( 661)=0.214240859E+01
+       w_qmin( 661)=0.431351397E+00
+       qk_min( 662)=0.214539483E+01
+       w_qmin( 662)=0.431169650E+00
+       qk_min( 663)=0.214838107E+01
+       w_qmin( 663)=0.430988927E+00
+       qk_min( 664)=0.215136730E+01
+       w_qmin( 664)=0.430809172E+00
+       qk_min( 665)=0.215435354E+01
+       w_qmin( 665)=0.430630735E+00
+       qk_min( 666)=0.215733977E+01
+       w_qmin( 666)=0.430453213E+00
+       qk_min( 667)=0.216032601E+01
+       w_qmin( 667)=0.430276570E+00
+       qk_min( 668)=0.216331225E+01
+       w_qmin( 668)=0.430100990E+00
+       qk_min( 669)=0.216629848E+01
+       w_qmin( 669)=0.429926630E+00
+       qk_min( 670)=0.216928472E+01
+       w_qmin( 670)=0.429753425E+00
+       qk_min( 671)=0.217227095E+01
+       w_qmin( 671)=0.429581112E+00
+       qk_min( 672)=0.217525719E+01
+       w_qmin( 672)=0.429409943E+00
+       qk_min( 673)=0.217824343E+01
+       w_qmin( 673)=0.429239857E+00
+       qk_min( 674)=0.218122966E+01
+       w_qmin( 674)=0.429070807E+00
+       qk_min( 675)=0.218421590E+01
+       w_qmin( 675)=0.428902973E+00
+       qk_min( 676)=0.218720213E+01
+       w_qmin( 676)=0.428736351E+00
+       qk_min( 677)=0.219018837E+01
+       w_qmin( 677)=0.428570846E+00
+       qk_min( 678)=0.219317461E+01
+       w_qmin( 678)=0.428406256E+00
+       qk_min( 679)=0.219616084E+01
+       w_qmin( 679)=0.428242836E+00
+       qk_min( 680)=0.219914708E+01
+       w_qmin( 680)=0.428080605E+00
+       qk_min( 681)=0.220213331E+01
+       w_qmin( 681)=0.427919878E+00
+       qk_min( 682)=0.220511955E+01
+       w_qmin( 682)=0.427759946E+00
+       qk_min( 683)=0.220810579E+01
+       w_qmin( 683)=0.427601150E+00
+       qk_min( 684)=0.221109202E+01
+       w_qmin( 684)=0.427443439E+00
+       qk_min( 685)=0.221407826E+01
+       w_qmin( 685)=0.427287027E+00
+       qk_min( 686)=0.221706449E+01
+       w_qmin( 686)=0.427131635E+00
+       qk_min( 687)=0.222005073E+01
+       w_qmin( 687)=0.426977770E+00
+       qk_min( 688)=0.222303697E+01
+       w_qmin( 688)=0.426824760E+00
+       qk_min( 689)=0.222602320E+01
+       w_qmin( 689)=0.426672886E+00
+       qk_min( 690)=0.222900944E+01
+       w_qmin( 690)=0.426522195E+00
+       qk_min( 691)=0.223199567E+01
+       w_qmin( 691)=0.426372740E+00
+       qk_min( 692)=0.223498191E+01
+       w_qmin( 692)=0.426224617E+00
+       qk_min( 693)=0.223796815E+01
+       w_qmin( 693)=0.426077496E+00
+       qk_min( 694)=0.224095438E+01
+       w_qmin( 694)=0.425931487E+00
+       qk_min( 695)=0.224394062E+01
+       w_qmin( 695)=0.425786782E+00
+       qk_min( 696)=0.224692685E+01
+       w_qmin( 696)=0.425643151E+00
+       qk_min( 697)=0.224991309E+01
+       w_qmin( 697)=0.425500645E+00
+       qk_min( 698)=0.225289933E+01
+       w_qmin( 698)=0.425359677E+00
+       qk_min( 699)=0.225588556E+01
+       w_qmin( 699)=0.425219639E+00
+       qk_min( 700)=0.225887180E+01
+       w_qmin( 700)=0.425080800E+00
+       qk_min( 701)=0.226185803E+01
+       w_qmin( 701)=0.424943155E+00
+       qk_min( 702)=0.226484427E+01
+       w_qmin( 702)=0.424806756E+00
+       qk_min( 703)=0.226783051E+01
+       w_qmin( 703)=0.424671810E+00
+       qk_min( 704)=0.227081674E+01
+       w_qmin( 704)=0.424537798E+00
+       qk_min( 705)=0.227380298E+01
+       w_qmin( 705)=0.424404996E+00
+       qk_min( 706)=0.227678921E+01
+       w_qmin( 706)=0.424273362E+00
+       qk_min( 707)=0.227977545E+01
+       w_qmin( 707)=0.424143043E+00
+       qk_min( 708)=0.228276169E+01
+       w_qmin( 708)=0.424013824E+00
+       qk_min( 709)=0.228574792E+01
+       w_qmin( 709)=0.423886073E+00
+       qk_min( 710)=0.228873416E+01
+       w_qmin( 710)=0.423759328E+00
+       qk_min( 711)=0.229172039E+01
+       w_qmin( 711)=0.423633786E+00
+       qk_min( 712)=0.229470663E+01
+       w_qmin( 712)=0.423509341E+00
+       qk_min( 713)=0.229769287E+01
+       w_qmin( 713)=0.423386290E+00
+       qk_min( 714)=0.230067910E+01
+       w_qmin( 714)=0.423264588E+00
+       qk_min( 715)=0.230366534E+01
+       w_qmin( 715)=0.423143812E+00
+       qk_min( 716)=0.230665157E+01
+       w_qmin( 716)=0.423024215E+00
+       qk_min( 717)=0.230963781E+01
+       w_qmin( 717)=0.422905902E+00
+       qk_min( 718)=0.231262405E+01
+       w_qmin( 718)=0.422788711E+00
+       qk_min( 719)=0.231561028E+01
+       w_qmin( 719)=0.422672726E+00
+       qk_min( 720)=0.231859652E+01
+       w_qmin( 720)=0.422558089E+00
+       qk_min( 721)=0.232158275E+01
+       w_qmin( 721)=0.422444571E+00
+       qk_min( 722)=0.232456899E+01
+       w_qmin( 722)=0.422332205E+00
+       qk_min( 723)=0.232755522E+01
+       w_qmin( 723)=0.422220969E+00
+       qk_min( 724)=0.233054146E+01
+       w_qmin( 724)=0.422110965E+00
+       qk_min( 725)=0.233352770E+01
+       w_qmin( 725)=0.422002384E+00
+       qk_min( 726)=0.233651393E+01
+       w_qmin( 726)=0.421894768E+00
+       qk_min( 727)=0.233950017E+01
+       w_qmin( 727)=0.421788434E+00
+       qk_min( 728)=0.234248640E+01
+       w_qmin( 728)=0.421683337E+00
+       qk_min( 729)=0.234547264E+01
+       w_qmin( 729)=0.421579294E+00
+       qk_min( 730)=0.234845888E+01
+       w_qmin( 730)=0.421476620E+00
+       qk_min( 731)=0.235144511E+01
+       w_qmin( 731)=0.421375333E+00
+       qk_min( 732)=0.235443135E+01
+       w_qmin( 732)=0.421275019E+00
+       qk_min( 733)=0.235741758E+01
+       w_qmin( 733)=0.421176101E+00
+       qk_min( 734)=0.236040382E+01
+       w_qmin( 734)=0.421078203E+00
+       qk_min( 735)=0.236339006E+01
+       w_qmin( 735)=0.420981495E+00
+       qk_min( 736)=0.236637629E+01
+       w_qmin( 736)=0.420886382E+00
+       qk_min( 737)=0.236936253E+01
+       w_qmin( 737)=0.420792297E+00
+       qk_min( 738)=0.237234876E+01
+       w_qmin( 738)=0.420699280E+00
+       qk_min( 739)=0.237533500E+01
+       w_qmin( 739)=0.420607569E+00
+       qk_min( 740)=0.237832124E+01
+       w_qmin( 740)=0.420516928E+00
+       qk_min( 741)=0.238130747E+01
+       w_qmin( 741)=0.420427695E+00
+       qk_min( 742)=0.238429371E+01
+       w_qmin( 742)=0.420339885E+00
+       qk_min( 743)=0.238727994E+01
+       w_qmin( 743)=0.420252997E+00
+       qk_min( 744)=0.239026618E+01
+       w_qmin( 744)=0.420167183E+00
+       qk_min( 745)=0.239325242E+01
+       w_qmin( 745)=0.420082598E+00
+       qk_min( 746)=0.239623865E+01
+       w_qmin( 746)=0.419999125E+00
+       qk_min( 747)=0.239922489E+01
+       w_qmin( 747)=0.419917219E+00
+       qk_min( 748)=0.240221112E+01
+       w_qmin( 748)=0.419835982E+00
+       qk_min( 749)=0.240519736E+01
+       w_qmin( 749)=0.419756184E+00
+       qk_min( 750)=0.240818360E+01
+       w_qmin( 750)=0.419677361E+00
+       qk_min( 751)=0.241116983E+01
+       w_qmin( 751)=0.419599736E+00
+       qk_min( 752)=0.241415607E+01
+       w_qmin( 752)=0.419523267E+00
+       qk_min( 753)=0.241714230E+01
+       w_qmin( 753)=0.419448087E+00
+       qk_min( 754)=0.242012854E+01
+       w_qmin( 754)=0.419373828E+00
+       qk_min( 755)=0.242311478E+01
+       w_qmin( 755)=0.419300734E+00
+       qk_min( 756)=0.242610101E+01
+       w_qmin( 756)=0.419228732E+00
+       qk_min( 757)=0.242908725E+01
+       w_qmin( 757)=0.419157933E+00
+       qk_min( 758)=0.243207348E+01
+       w_qmin( 758)=0.419088375E+00
+       qk_min( 759)=0.243505972E+01
+       w_qmin( 759)=0.419019684E+00
+       qk_min( 760)=0.243804596E+01
+       w_qmin( 760)=0.418952174E+00
+       qk_min( 761)=0.244103219E+01
+       w_qmin( 761)=0.418885790E+00
+       qk_min( 762)=0.244401843E+01
+       w_qmin( 762)=0.418820479E+00
+       qk_min( 763)=0.244700466E+01
+       w_qmin( 763)=0.418756407E+00
+       qk_min( 764)=0.244999090E+01
+       w_qmin( 764)=0.418693566E+00
+       qk_min( 765)=0.245297714E+01
+       w_qmin( 765)=0.418631618E+00
+       qk_min( 766)=0.245596337E+01
+       w_qmin( 766)=0.418570856E+00
+       qk_min( 767)=0.245894961E+01
+       w_qmin( 767)=0.418511290E+00
+       qk_min( 768)=0.246193584E+01
+       w_qmin( 768)=0.418452610E+00
+       qk_min( 769)=0.246492208E+01
+       w_qmin( 769)=0.418395480E+00
+       qk_min( 770)=0.246790832E+01
+       w_qmin( 770)=0.418339268E+00
+       qk_min( 771)=0.247089455E+01
+       w_qmin( 771)=0.418284168E+00
+       qk_min( 772)=0.247388079E+01
+       w_qmin( 772)=0.418230108E+00
+       qk_min( 773)=0.247686702E+01
+       w_qmin( 773)=0.418177159E+00
+       qk_min( 774)=0.247985326E+01
+       w_qmin( 774)=0.418125396E+00
+       qk_min( 775)=0.248283950E+01
+       w_qmin( 775)=0.418074852E+00
+       qk_min( 776)=0.248582573E+01
+       w_qmin( 776)=0.418025387E+00
+       qk_min( 777)=0.248881197E+01
+       w_qmin( 777)=0.417976794E+00
+       qk_min( 778)=0.249179820E+01
+       w_qmin( 778)=0.417929350E+00
+       qk_min( 779)=0.249478444E+01
+       w_qmin( 779)=0.417883051E+00
+       qk_min( 780)=0.249777068E+01
+       w_qmin( 780)=0.417838039E+00
+       qk_min( 781)=0.250075691E+01
+       w_qmin( 781)=0.417793664E+00
+       qk_min( 782)=0.250374315E+01
+       w_qmin( 782)=0.417750561E+00
+       qk_min( 783)=0.250672938E+01
+       w_qmin( 783)=0.417708424E+00
+       qk_min( 784)=0.250971562E+01
+       w_qmin( 784)=0.417667126E+00
+       qk_min( 785)=0.251270185E+01
+       w_qmin( 785)=0.417627067E+00
+       qk_min( 786)=0.251568809E+01
+       w_qmin( 786)=0.417588083E+00
+       qk_min( 787)=0.251867433E+01
+       w_qmin( 787)=0.417549905E+00
+       qk_min( 788)=0.252166056E+01
+       w_qmin( 788)=0.417512662E+00
+       qk_min( 789)=0.252464680E+01
+       w_qmin( 789)=0.417476336E+00
+       qk_min( 790)=0.252763303E+01
+       w_qmin( 790)=0.417440995E+00
+       qk_min( 791)=0.253061927E+01
+       w_qmin( 791)=0.417406728E+00
+       qk_min( 792)=0.253360551E+01
+       w_qmin( 792)=0.417373123E+00
+       qk_min( 793)=0.253659174E+01
+       w_qmin( 793)=0.417340483E+00
+       qk_min( 794)=0.253957798E+01
+       w_qmin( 794)=0.417308720E+00
+       qk_min( 795)=0.254256421E+01
+       w_qmin( 795)=0.417277690E+00
+       qk_min( 796)=0.254555045E+01
+       w_qmin( 796)=0.417247521E+00
+       qk_min( 797)=0.254853669E+01
+       w_qmin( 797)=0.417218395E+00
+       qk_min( 798)=0.255152292E+01
+       w_qmin( 798)=0.417189876E+00
+       qk_min( 799)=0.255450916E+01
+       w_qmin( 799)=0.417162311E+00
+       qk_min( 800)=0.255749539E+01
+       w_qmin( 800)=0.417135566E+00
+       qk_min( 801)=0.256048163E+01
+       w_qmin( 801)=0.417109384E+00
+       qk_min( 802)=0.256346787E+01
+       w_qmin( 802)=0.417084383E+00
+       qk_min( 803)=0.256645410E+01
+       w_qmin( 803)=0.417059850E+00
+       qk_min( 804)=0.256944034E+01
+       w_qmin( 804)=0.417036166E+00
+       qk_min( 805)=0.257242657E+01
+       w_qmin( 805)=0.417013231E+00
+       qk_min( 806)=0.257541281E+01
+       w_qmin( 806)=0.416991167E+00
+       qk_min( 807)=0.257839905E+01
+       w_qmin( 807)=0.416969663E+00
+       qk_min( 808)=0.258138528E+01
+       w_qmin( 808)=0.416949225E+00
+       qk_min( 809)=0.258437152E+01
+       w_qmin( 809)=0.416929324E+00
+       qk_min( 810)=0.258735775E+01
+       w_qmin( 810)=0.416910287E+00
+       qk_min( 811)=0.259034399E+01
+       w_qmin( 811)=0.416891862E+00
+       qk_min( 812)=0.259333023E+01
+       w_qmin( 812)=0.416874231E+00
+       qk_min( 813)=0.259631646E+01
+       w_qmin( 813)=0.416857581E+00
+       qk_min( 814)=0.259930270E+01
+       w_qmin( 814)=0.416841411E+00
+       qk_min( 815)=0.260228893E+01
+       w_qmin( 815)=0.416826065E+00
+       qk_min( 816)=0.260527517E+01
+       w_qmin( 816)=0.416811573E+00
+       qk_min( 817)=0.260826141E+01
+       w_qmin( 817)=0.416797766E+00
+       qk_min( 818)=0.261124764E+01
+       w_qmin( 818)=0.416784748E+00
+       qk_min( 819)=0.261423388E+01
+       w_qmin( 819)=0.416772741E+00
+       qk_min( 820)=0.261722011E+01
+       w_qmin( 820)=0.416761080E+00
+       qk_min( 821)=0.262020635E+01
+       w_qmin( 821)=0.416750303E+00
+       qk_min( 822)=0.262319259E+01
+       w_qmin( 822)=0.416740399E+00
+       qk_min( 823)=0.262617882E+01
+       w_qmin( 823)=0.416731210E+00
+       qk_min( 824)=0.262916506E+01
+       w_qmin( 824)=0.416722860E+00
+       qk_min( 825)=0.263215129E+01
+       w_qmin( 825)=0.416715056E+00
+       qk_min( 826)=0.263513753E+01
+       w_qmin( 826)=0.416708245E+00
+       qk_min( 827)=0.263812377E+01
+       w_qmin( 827)=0.416701947E+00
+       qk_min( 828)=0.264111000E+01
+       w_qmin( 828)=0.416696476E+00
+       qk_min( 829)=0.264409624E+01
+       w_qmin( 829)=0.416691823E+00
+       qk_min( 830)=0.264708247E+01
+       w_qmin( 830)=0.416688036E+00
+       qk_min( 831)=0.265006871E+01
+       w_qmin( 831)=0.416684648E+00
+       qk_min( 832)=0.265305495E+01
+       w_qmin( 832)=0.416682209E+00
+       qk_min( 833)=0.265604118E+01
+       w_qmin( 833)=0.416680447E+00
+       qk_min( 834)=0.265902742E+01
+       w_qmin( 834)=0.416679214E+00
+       qk_min( 835)=0.266201365E+01
+       w_qmin( 835)=0.416679097E+00
+       qk_min( 836)=0.266499989E+01
+       w_qmin( 836)=0.416679330E+00
+       qk_min( 837)=0.266798613E+01
+       w_qmin( 837)=0.416680213E+00
+       qk_min( 838)=0.267097236E+01
+       w_qmin( 838)=0.416681818E+00
+       qk_min( 839)=0.267395860E+01
+       w_qmin( 839)=0.416684115E+00
+       qk_min( 840)=0.267694483E+01
+       w_qmin( 840)=0.416687081E+00
+       qk_min( 841)=0.267993107E+01
+       w_qmin( 841)=0.416690710E+00
+       qk_min( 842)=0.268291730E+01
+       w_qmin( 842)=0.416694802E+00
+       qk_min( 843)=0.268590354E+01
+       w_qmin( 843)=0.416699643E+00
+       qk_min( 844)=0.268888978E+01
+       w_qmin( 844)=0.416704850E+00
+       qk_min( 845)=0.269187601E+01
+       w_qmin( 845)=0.416710788E+00
+       qk_min( 846)=0.269486225E+01
+       w_qmin( 846)=0.416717432E+00
+       qk_min( 847)=0.269784848E+01
+       w_qmin( 847)=0.416724497E+00
+       qk_min( 848)=0.270083472E+01
+       w_qmin( 848)=0.416731992E+00
+       qk_min( 849)=0.270382096E+01
+       w_qmin( 849)=0.416740184E+00
+       qk_min( 850)=0.270680719E+01
+       w_qmin( 850)=0.416748775E+00
+       qk_min( 851)=0.270979343E+01
+       w_qmin( 851)=0.416757893E+00
+       qk_min( 852)=0.271277966E+01
+       w_qmin( 852)=0.416767655E+00
+       qk_min( 853)=0.271576590E+01
+       w_qmin( 853)=0.416777899E+00
+       qk_min( 854)=0.271875214E+01
+       w_qmin( 854)=0.416788451E+00
+       qk_min( 855)=0.272173837E+01
+       w_qmin( 855)=0.416799633E+00
+       qk_min( 856)=0.272472461E+01
+       w_qmin( 856)=0.416811034E+00
+       qk_min( 857)=0.272771084E+01
+       w_qmin( 857)=0.416823228E+00
+       qk_min( 858)=0.273069708E+01
+       w_qmin( 858)=0.416835674E+00
+       qk_min( 859)=0.273368332E+01
+       w_qmin( 859)=0.416848655E+00
+       qk_min( 860)=0.273666955E+01
+       w_qmin( 860)=0.416861949E+00
+       qk_min( 861)=0.273965579E+01
+       w_qmin( 861)=0.416875863E+00
+       qk_min( 862)=0.274264202E+01
+       w_qmin( 862)=0.416890002E+00
+       qk_min( 863)=0.274562826E+01
+       w_qmin( 863)=0.416904920E+00
+       qk_min( 864)=0.274861450E+01
+       w_qmin( 864)=0.416919949E+00
+       qk_min( 865)=0.275160073E+01
+       w_qmin( 865)=0.416935558E+00
+       qk_min( 866)=0.275458697E+01
+       w_qmin( 866)=0.416951582E+00
+       qk_min( 867)=0.275757320E+01
+       w_qmin( 867)=0.416967951E+00
+       qk_min( 868)=0.276055944E+01
+       w_qmin( 868)=0.416984879E+00
+       qk_min( 869)=0.276354568E+01
+       w_qmin( 869)=0.417002279E+00
+       qk_min( 870)=0.276653191E+01
+       w_qmin( 870)=0.417019985E+00
+       qk_min( 871)=0.276951815E+01
+       w_qmin( 871)=0.417038117E+00
+       qk_min( 872)=0.277250438E+01
+       w_qmin( 872)=0.417056789E+00
+       qk_min( 873)=0.277549062E+01
+       w_qmin( 873)=0.417075838E+00
+       qk_min( 874)=0.277847686E+01
+       w_qmin( 874)=0.417095599E+00
+       qk_min( 875)=0.278146309E+01
+       w_qmin( 875)=0.417115495E+00
+       qk_min( 876)=0.278444933E+01
+       w_qmin( 876)=0.417135994E+00
+       qk_min( 877)=0.278743556E+01
+       w_qmin( 877)=0.417156892E+00
+       qk_min( 878)=0.279042180E+01
+       w_qmin( 878)=0.417178162E+00
+       qk_min( 879)=0.279340804E+01
+       w_qmin( 879)=0.417200124E+00
+       qk_min( 880)=0.279639427E+01
+       w_qmin( 880)=0.417222614E+00
+       qk_min( 881)=0.279938051E+01
+       w_qmin( 881)=0.417245462E+00
+       qk_min( 882)=0.280236674E+01
+       w_qmin( 882)=0.417268802E+00
+       qk_min( 883)=0.280535298E+01
+       w_qmin( 883)=0.417292628E+00
+       qk_min( 884)=0.280833922E+01
+       w_qmin( 884)=0.417317034E+00
+       qk_min( 885)=0.281132545E+01
+       w_qmin( 885)=0.417342034E+00
+       qk_min( 886)=0.281431169E+01
+       w_qmin( 886)=0.417367399E+00
+       qk_min( 887)=0.281729792E+01
+       w_qmin( 887)=0.417393442E+00
+       qk_min( 888)=0.282028416E+01
+       w_qmin( 888)=0.417419853E+00
+       qk_min( 889)=0.282327040E+01
+       w_qmin( 889)=0.417446876E+00
+       qk_min( 890)=0.282625663E+01
+       w_qmin( 890)=0.417474595E+00
+       qk_min( 891)=0.282924287E+01
+       w_qmin( 891)=0.417502880E+00
+       qk_min( 892)=0.283222910E+01
+       w_qmin( 892)=0.417531699E+00
+       qk_min( 893)=0.283521534E+01
+       w_qmin( 893)=0.417560957E+00
+       qk_min( 894)=0.283820158E+01
+       w_qmin( 894)=0.417590881E+00
+       qk_min( 895)=0.284118781E+01
+       w_qmin( 895)=0.417621424E+00
+       qk_min( 896)=0.284417405E+01
+       w_qmin( 896)=0.417652705E+00
+       qk_min( 897)=0.284716028E+01
+       w_qmin( 897)=0.417684488E+00
+       qk_min( 898)=0.285014652E+01
+       w_qmin( 898)=0.417716795E+00
+       qk_min( 899)=0.285313276E+01
+       w_qmin( 899)=0.417749770E+00
+       qk_min( 900)=0.285611899E+01
+       w_qmin( 900)=0.417783415E+00
+       qk_min( 901)=0.285910523E+01
+       w_qmin( 901)=0.417817650E+00
+       qk_min( 902)=0.286209146E+01
+       w_qmin( 902)=0.417852756E+00
+       qk_min( 903)=0.286507770E+01
+       w_qmin( 903)=0.417888196E+00
+       qk_min( 904)=0.286806393E+01
+       w_qmin( 904)=0.417924287E+00
+       qk_min( 905)=0.287105017E+01
+       w_qmin( 905)=0.417961065E+00
+       qk_min( 906)=0.287403641E+01
+       w_qmin( 906)=0.417998507E+00
+       qk_min( 907)=0.287702264E+01
+       w_qmin( 907)=0.418036673E+00
+       qk_min( 908)=0.288000888E+01
+       w_qmin( 908)=0.418075365E+00
+       qk_min( 909)=0.288299511E+01
+       w_qmin( 909)=0.418114664E+00
+       qk_min( 910)=0.288598135E+01
+       w_qmin( 910)=0.418154584E+00
+       qk_min( 911)=0.288896759E+01
+       w_qmin( 911)=0.418195201E+00
+       qk_min( 912)=0.289195382E+01
+       w_qmin( 912)=0.418236414E+00
+       qk_min( 913)=0.289494006E+01
+       w_qmin( 913)=0.418278474E+00
+       qk_min( 914)=0.289792629E+01
+       w_qmin( 914)=0.418320916E+00
+       qk_min( 915)=0.290091253E+01
+       w_qmin( 915)=0.418363923E+00
+       qk_min( 916)=0.290389877E+01
+       w_qmin( 916)=0.418407579E+00
+       qk_min( 917)=0.290688500E+01
+       w_qmin( 917)=0.418451921E+00
+       qk_min( 918)=0.290987124E+01
+       w_qmin( 918)=0.418496849E+00
+       qk_min( 919)=0.291285747E+01
+       w_qmin( 919)=0.418542473E+00
+       qk_min( 920)=0.291584371E+01
+       w_qmin( 920)=0.418588574E+00
+       qk_min( 921)=0.291882995E+01
+       w_qmin( 921)=0.418635091E+00
+       qk_min( 922)=0.292181618E+01
+       w_qmin( 922)=0.418682232E+00
+       qk_min( 923)=0.292480242E+01
+       w_qmin( 923)=0.418730162E+00
+       qk_min( 924)=0.292778865E+01
+       w_qmin( 924)=0.418778683E+00
+       qk_min( 925)=0.293077489E+01
+       w_qmin( 925)=0.418827430E+00
+       qk_min( 926)=0.293376113E+01
+       w_qmin( 926)=0.418877012E+00
+       qk_min( 927)=0.293674736E+01
+       w_qmin( 927)=0.418926996E+00
+       qk_min( 928)=0.293973360E+01
+       w_qmin( 928)=0.418977476E+00
+       qk_min( 929)=0.294271983E+01
+       w_qmin( 929)=0.419028829E+00
+       qk_min( 930)=0.294570607E+01
+       w_qmin( 930)=0.419080234E+00
+       qk_min( 931)=0.294869231E+01
+       w_qmin( 931)=0.419132533E+00
+       qk_min( 932)=0.295167854E+01
+       w_qmin( 932)=0.419185102E+00
+       qk_min( 933)=0.295466478E+01
+       w_qmin( 933)=0.419238273E+00
+       qk_min( 934)=0.295765101E+01
+       w_qmin( 934)=0.419291930E+00
+       qk_min( 935)=0.296063725E+01
+       w_qmin( 935)=0.419346255E+00
+       qk_min( 936)=0.296362349E+01
+       w_qmin( 936)=0.419400775E+00
+       qk_min( 937)=0.296660972E+01
+       w_qmin( 937)=0.419455873E+00
+       qk_min( 938)=0.296959596E+01
+       w_qmin( 938)=0.419511534E+00
+       qk_min( 939)=0.297258219E+01
+       w_qmin( 939)=0.419567570E+00
+       qk_min( 940)=0.297556843E+01
+       w_qmin( 940)=0.419624267E+00
+       qk_min( 941)=0.297855467E+01
+       w_qmin( 941)=0.419681302E+00
+       qk_min( 942)=0.298154090E+01
+       w_qmin( 942)=0.419738750E+00
+       qk_min( 943)=0.298452714E+01
+       w_qmin( 943)=0.419796740E+00
+       qk_min( 944)=0.298751337E+01
+       w_qmin( 944)=0.419855138E+00
+       qk_min( 945)=0.299049961E+01
+       w_qmin( 945)=0.419913962E+00
+       qk_min( 946)=0.299348585E+01
+       w_qmin( 946)=0.419973372E+00
+       qk_min( 947)=0.299647208E+01
+       w_qmin( 947)=0.420033065E+00
+       qk_min( 948)=0.299945832E+01
+       w_qmin( 948)=0.420093276E+00
+       qk_min( 949)=0.300244455E+01
+       w_qmin( 949)=0.420153950E+00
+       qk_min( 950)=0.300543079E+01
+       w_qmin( 950)=0.420215081E+00
+       qk_min( 951)=0.300841703E+01
+       w_qmin( 951)=0.420276759E+00
+       qk_min( 952)=0.301140326E+01
+       w_qmin( 952)=0.420338767E+00
+       qk_min( 953)=0.301438950E+01
+       w_qmin( 953)=0.420401147E+00
+       qk_min( 954)=0.301737573E+01
+       w_qmin( 954)=0.420464001E+00
+       qk_min( 955)=0.302036197E+01
+       w_qmin( 955)=0.420527289E+00
+       qk_min( 956)=0.302334821E+01
+       w_qmin( 956)=0.420591146E+00
+       qk_min( 957)=0.302633444E+01
+       w_qmin( 957)=0.420655400E+00
+       qk_min( 958)=0.302932068E+01
+       w_qmin( 958)=0.420719993E+00
+       qk_min( 959)=0.303230691E+01
+       w_qmin( 959)=0.420785033E+00
+       qk_min( 960)=0.303529315E+01
+       w_qmin( 960)=0.420850599E+00
+       qk_min( 961)=0.303827939E+01
+       w_qmin( 961)=0.420916605E+00
+       qk_min( 962)=0.304126562E+01
+       w_qmin( 962)=0.420983049E+00
+       qk_min( 963)=0.304425186E+01
+       w_qmin( 963)=0.421049871E+00
+       qk_min( 964)=0.304723809E+01
+       w_qmin( 964)=0.421117200E+00
+       qk_min( 965)=0.305022433E+01
+       w_qmin( 965)=0.421185009E+00
+       qk_min( 966)=0.305321056E+01
+       w_qmin( 966)=0.421253111E+00
+       qk_min( 967)=0.305619680E+01
+       w_qmin( 967)=0.421321834E+00
+       qk_min( 968)=0.305918304E+01
+       w_qmin( 968)=0.421390933E+00
+       qk_min( 969)=0.306216927E+01
+       w_qmin( 969)=0.421460475E+00
+       qk_min( 970)=0.306515551E+01
+       w_qmin( 970)=0.421530529E+00
+       qk_min( 971)=0.306814174E+01
+       w_qmin( 971)=0.421600942E+00
+       qk_min( 972)=0.307112798E+01
+       w_qmin( 972)=0.421671707E+00
+       qk_min( 973)=0.307411422E+01
+       w_qmin( 973)=0.421743221E+00
+       qk_min( 974)=0.307710045E+01
+       w_qmin( 974)=0.421815057E+00
+       qk_min( 975)=0.308008669E+01
+       w_qmin( 975)=0.421887359E+00
+       qk_min( 976)=0.308307292E+01
+       w_qmin( 976)=0.421960061E+00
+       qk_min( 977)=0.308605916E+01
+       w_qmin( 977)=0.422033248E+00
+       qk_min( 978)=0.308904540E+01
+       w_qmin( 978)=0.422106903E+00
+       qk_min( 979)=0.309203163E+01
+       w_qmin( 979)=0.422181094E+00
+       qk_min( 980)=0.309501787E+01
+       w_qmin( 980)=0.422255771E+00
+       qk_min( 981)=0.309800410E+01
+       w_qmin( 981)=0.422330828E+00
+       qk_min( 982)=0.310099034E+01
+       w_qmin( 982)=0.422406359E+00
+       qk_min( 983)=0.310397658E+01
+       w_qmin( 983)=0.422482453E+00
+       qk_min( 984)=0.310696281E+01
+       w_qmin( 984)=0.422559102E+00
+       qk_min( 985)=0.310994905E+01
+       w_qmin( 985)=0.422636031E+00
+       qk_min( 986)=0.311293528E+01
+       w_qmin( 986)=0.422713635E+00
+       qk_min( 987)=0.311592152E+01
+       w_qmin( 987)=0.422791554E+00
+       qk_min( 988)=0.311890776E+01
+       w_qmin( 988)=0.422870031E+00
+       qk_min( 989)=0.312189399E+01
+       w_qmin( 989)=0.422949021E+00
+       qk_min( 990)=0.312488023E+01
+       w_qmin( 990)=0.423028519E+00
+       qk_min( 991)=0.312786646E+01
+       w_qmin( 991)=0.423108604E+00
+       qk_min( 992)=0.313085270E+01
+       w_qmin( 992)=0.423189024E+00
+       qk_min( 993)=0.313383894E+01
+       w_qmin( 993)=0.423269934E+00
+       qk_min( 994)=0.313682517E+01
+       w_qmin( 994)=0.423351608E+00
+       qk_min( 995)=0.313981141E+01
+       w_qmin( 995)=0.423433622E+00
+       qk_min( 996)=0.314279764E+01
+       w_qmin( 996)=0.423516074E+00
+       qk_min( 997)=0.314578388E+01
+       w_qmin( 997)=0.423599178E+00
+       qk_min( 998)=0.314877012E+01
+       w_qmin( 998)=0.423682779E+00
+       qk_min( 999)=0.315175635E+01
+       w_qmin( 999)=0.423766988E+00
+       qk_min(1000)=0.315474259E+01
+       w_qmin(1000)=0.423851339E+00
+       qk_min(1001)=0.315772882E+01
+       w_qmin(1001)=0.423936557E+00
+   
+       END
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1TabKKpi.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/initA1TabKKpi.f
new file mode 100644 (file)
index 0000000..eb17c7f
--- /dev/null
@@ -0,0 +1,2010 @@
+       SUBROUTINE InitA1TABKKpi(qk_min    ,w_qmin    )
+       PARAMETER (Nq=1001)    
+       real*8               qk_min(Nq),w_qmin(Nq)
+   
+ ! this routine was automatically created by  a1-tabler
+   
+       qk_min(   1)=0.171492857E+00
+       w_qmin(   1)=0.000000000E+00
+       qk_min(   2)=0.174479093E+00
+       w_qmin(   2)=0.000000000E+00
+       qk_min(   3)=0.177465328E+00
+       w_qmin(   3)=0.000000000E+00
+       qk_min(   4)=0.180451564E+00
+       w_qmin(   4)=0.000000000E+00
+       qk_min(   5)=0.183437800E+00
+       w_qmin(   5)=0.000000000E+00
+       qk_min(   6)=0.186424036E+00
+       w_qmin(   6)=0.000000000E+00
+       qk_min(   7)=0.189410272E+00
+       w_qmin(   7)=0.000000000E+00
+       qk_min(   8)=0.192396508E+00
+       w_qmin(   8)=0.000000000E+00
+       qk_min(   9)=0.195382744E+00
+       w_qmin(   9)=0.000000000E+00
+       qk_min(  10)=0.198368980E+00
+       w_qmin(  10)=0.000000000E+00
+       qk_min(  11)=0.201355216E+00
+       w_qmin(  11)=0.000000000E+00
+       qk_min(  12)=0.204341452E+00
+       w_qmin(  12)=0.000000000E+00
+       qk_min(  13)=0.207327688E+00
+       w_qmin(  13)=0.000000000E+00
+       qk_min(  14)=0.210313924E+00
+       w_qmin(  14)=0.000000000E+00
+       qk_min(  15)=0.213300160E+00
+       w_qmin(  15)=0.000000000E+00
+       qk_min(  16)=0.216286396E+00
+       w_qmin(  16)=0.000000000E+00
+       qk_min(  17)=0.219272632E+00
+       w_qmin(  17)=0.000000000E+00
+       qk_min(  18)=0.222258868E+00
+       w_qmin(  18)=0.000000000E+00
+       qk_min(  19)=0.225245104E+00
+       w_qmin(  19)=0.000000000E+00
+       qk_min(  20)=0.228231340E+00
+       w_qmin(  20)=0.000000000E+00
+       qk_min(  21)=0.231217576E+00
+       w_qmin(  21)=0.000000000E+00
+       qk_min(  22)=0.234203812E+00
+       w_qmin(  22)=0.000000000E+00
+       qk_min(  23)=0.237190048E+00
+       w_qmin(  23)=0.000000000E+00
+       qk_min(  24)=0.240176284E+00
+       w_qmin(  24)=0.000000000E+00
+       qk_min(  25)=0.243162520E+00
+       w_qmin(  25)=0.000000000E+00
+       qk_min(  26)=0.246148756E+00
+       w_qmin(  26)=0.000000000E+00
+       qk_min(  27)=0.249134992E+00
+       w_qmin(  27)=0.000000000E+00
+       qk_min(  28)=0.252121228E+00
+       w_qmin(  28)=0.000000000E+00
+       qk_min(  29)=0.255107464E+00
+       w_qmin(  29)=0.000000000E+00
+       qk_min(  30)=0.258093700E+00
+       w_qmin(  30)=0.000000000E+00
+       qk_min(  31)=0.261079936E+00
+       w_qmin(  31)=0.000000000E+00
+       qk_min(  32)=0.264066172E+00
+       w_qmin(  32)=0.000000000E+00
+       qk_min(  33)=0.267052408E+00
+       w_qmin(  33)=0.000000000E+00
+       qk_min(  34)=0.270038643E+00
+       w_qmin(  34)=0.000000000E+00
+       qk_min(  35)=0.273024879E+00
+       w_qmin(  35)=0.000000000E+00
+       qk_min(  36)=0.276011115E+00
+       w_qmin(  36)=0.000000000E+00
+       qk_min(  37)=0.278997351E+00
+       w_qmin(  37)=0.000000000E+00
+       qk_min(  38)=0.281983587E+00
+       w_qmin(  38)=0.000000000E+00
+       qk_min(  39)=0.284969823E+00
+       w_qmin(  39)=0.000000000E+00
+       qk_min(  40)=0.287956059E+00
+       w_qmin(  40)=0.000000000E+00
+       qk_min(  41)=0.290942295E+00
+       w_qmin(  41)=0.000000000E+00
+       qk_min(  42)=0.293928531E+00
+       w_qmin(  42)=0.000000000E+00
+       qk_min(  43)=0.296914767E+00
+       w_qmin(  43)=0.000000000E+00
+       qk_min(  44)=0.299901003E+00
+       w_qmin(  44)=0.000000000E+00
+       qk_min(  45)=0.302887239E+00
+       w_qmin(  45)=0.000000000E+00
+       qk_min(  46)=0.305873475E+00
+       w_qmin(  46)=0.000000000E+00
+       qk_min(  47)=0.308859711E+00
+       w_qmin(  47)=0.000000000E+00
+       qk_min(  48)=0.311845947E+00
+       w_qmin(  48)=0.000000000E+00
+       qk_min(  49)=0.314832183E+00
+       w_qmin(  49)=0.000000000E+00
+       qk_min(  50)=0.317818419E+00
+       w_qmin(  50)=0.000000000E+00
+       qk_min(  51)=0.320804655E+00
+       w_qmin(  51)=0.000000000E+00
+       qk_min(  52)=0.323790891E+00
+       w_qmin(  52)=0.000000000E+00
+       qk_min(  53)=0.326777127E+00
+       w_qmin(  53)=0.000000000E+00
+       qk_min(  54)=0.329763363E+00
+       w_qmin(  54)=0.000000000E+00
+       qk_min(  55)=0.332749599E+00
+       w_qmin(  55)=0.000000000E+00
+       qk_min(  56)=0.335735835E+00
+       w_qmin(  56)=0.000000000E+00
+       qk_min(  57)=0.338722071E+00
+       w_qmin(  57)=0.000000000E+00
+       qk_min(  58)=0.341708307E+00
+       w_qmin(  58)=0.000000000E+00
+       qk_min(  59)=0.344694543E+00
+       w_qmin(  59)=0.000000000E+00
+       qk_min(  60)=0.347680779E+00
+       w_qmin(  60)=0.000000000E+00
+       qk_min(  61)=0.350667015E+00
+       w_qmin(  61)=0.000000000E+00
+       qk_min(  62)=0.353653251E+00
+       w_qmin(  62)=0.000000000E+00
+       qk_min(  63)=0.356639487E+00
+       w_qmin(  63)=0.000000000E+00
+       qk_min(  64)=0.359625722E+00
+       w_qmin(  64)=0.000000000E+00
+       qk_min(  65)=0.362611958E+00
+       w_qmin(  65)=0.000000000E+00
+       qk_min(  66)=0.365598194E+00
+       w_qmin(  66)=0.000000000E+00
+       qk_min(  67)=0.368584430E+00
+       w_qmin(  67)=0.000000000E+00
+       qk_min(  68)=0.371570666E+00
+       w_qmin(  68)=0.000000000E+00
+       qk_min(  69)=0.374556902E+00
+       w_qmin(  69)=0.000000000E+00
+       qk_min(  70)=0.377543138E+00
+       w_qmin(  70)=0.000000000E+00
+       qk_min(  71)=0.380529374E+00
+       w_qmin(  71)=0.000000000E+00
+       qk_min(  72)=0.383515610E+00
+       w_qmin(  72)=0.000000000E+00
+       qk_min(  73)=0.386501846E+00
+       w_qmin(  73)=0.000000000E+00
+       qk_min(  74)=0.389488082E+00
+       w_qmin(  74)=0.000000000E+00
+       qk_min(  75)=0.392474318E+00
+       w_qmin(  75)=0.000000000E+00
+       qk_min(  76)=0.395460554E+00
+       w_qmin(  76)=0.000000000E+00
+       qk_min(  77)=0.398446790E+00
+       w_qmin(  77)=0.000000000E+00
+       qk_min(  78)=0.401433026E+00
+       w_qmin(  78)=0.000000000E+00
+       qk_min(  79)=0.404419262E+00
+       w_qmin(  79)=0.000000000E+00
+       qk_min(  80)=0.407405498E+00
+       w_qmin(  80)=0.000000000E+00
+       qk_min(  81)=0.410391734E+00
+       w_qmin(  81)=0.000000000E+00
+       qk_min(  82)=0.413377970E+00
+       w_qmin(  82)=0.000000000E+00
+       qk_min(  83)=0.416364206E+00
+       w_qmin(  83)=0.000000000E+00
+       qk_min(  84)=0.419350442E+00
+       w_qmin(  84)=0.000000000E+00
+       qk_min(  85)=0.422336678E+00
+       w_qmin(  85)=0.000000000E+00
+       qk_min(  86)=0.425322914E+00
+       w_qmin(  86)=0.000000000E+00
+       qk_min(  87)=0.428309150E+00
+       w_qmin(  87)=0.000000000E+00
+       qk_min(  88)=0.431295386E+00
+       w_qmin(  88)=0.000000000E+00
+       qk_min(  89)=0.434281622E+00
+       w_qmin(  89)=0.000000000E+00
+       qk_min(  90)=0.437267858E+00
+       w_qmin(  90)=0.000000000E+00
+       qk_min(  91)=0.440254094E+00
+       w_qmin(  91)=0.000000000E+00
+       qk_min(  92)=0.443240330E+00
+       w_qmin(  92)=0.000000000E+00
+       qk_min(  93)=0.446226566E+00
+       w_qmin(  93)=0.000000000E+00
+       qk_min(  94)=0.449212802E+00
+       w_qmin(  94)=0.000000000E+00
+       qk_min(  95)=0.452199037E+00
+       w_qmin(  95)=0.000000000E+00
+       qk_min(  96)=0.455185273E+00
+       w_qmin(  96)=0.000000000E+00
+       qk_min(  97)=0.458171509E+00
+       w_qmin(  97)=0.000000000E+00
+       qk_min(  98)=0.461157745E+00
+       w_qmin(  98)=0.000000000E+00
+       qk_min(  99)=0.464143981E+00
+       w_qmin(  99)=0.000000000E+00
+       qk_min( 100)=0.467130217E+00
+       w_qmin( 100)=0.000000000E+00
+       qk_min( 101)=0.470116453E+00
+       w_qmin( 101)=0.000000000E+00
+       qk_min( 102)=0.473102689E+00
+       w_qmin( 102)=0.000000000E+00
+       qk_min( 103)=0.476088925E+00
+       w_qmin( 103)=0.000000000E+00
+       qk_min( 104)=0.479075161E+00
+       w_qmin( 104)=0.000000000E+00
+       qk_min( 105)=0.482061397E+00
+       w_qmin( 105)=0.000000000E+00
+       qk_min( 106)=0.485047633E+00
+       w_qmin( 106)=0.000000000E+00
+       qk_min( 107)=0.488033869E+00
+       w_qmin( 107)=0.000000000E+00
+       qk_min( 108)=0.491020105E+00
+       w_qmin( 108)=0.000000000E+00
+       qk_min( 109)=0.494006341E+00
+       w_qmin( 109)=0.000000000E+00
+       qk_min( 110)=0.496992577E+00
+       w_qmin( 110)=0.000000000E+00
+       qk_min( 111)=0.499978813E+00
+       w_qmin( 111)=0.000000000E+00
+       qk_min( 112)=0.502965049E+00
+       w_qmin( 112)=0.000000000E+00
+       qk_min( 113)=0.505951285E+00
+       w_qmin( 113)=0.000000000E+00
+       qk_min( 114)=0.508937521E+00
+       w_qmin( 114)=0.000000000E+00
+       qk_min( 115)=0.511923757E+00
+       w_qmin( 115)=0.000000000E+00
+       qk_min( 116)=0.514909993E+00
+       w_qmin( 116)=0.000000000E+00
+       qk_min( 117)=0.517896229E+00
+       w_qmin( 117)=0.000000000E+00
+       qk_min( 118)=0.520882465E+00
+       w_qmin( 118)=0.000000000E+00
+       qk_min( 119)=0.523868701E+00
+       w_qmin( 119)=0.000000000E+00
+       qk_min( 120)=0.526854937E+00
+       w_qmin( 120)=0.000000000E+00
+       qk_min( 121)=0.529841173E+00
+       w_qmin( 121)=0.000000000E+00
+       qk_min( 122)=0.532827409E+00
+       w_qmin( 122)=0.000000000E+00
+       qk_min( 123)=0.535813645E+00
+       w_qmin( 123)=0.000000000E+00
+       qk_min( 124)=0.538799881E+00
+       w_qmin( 124)=0.000000000E+00
+       qk_min( 125)=0.541786116E+00
+       w_qmin( 125)=0.000000000E+00
+       qk_min( 126)=0.544772352E+00
+       w_qmin( 126)=0.000000000E+00
+       qk_min( 127)=0.547758588E+00
+       w_qmin( 127)=0.000000000E+00
+       qk_min( 128)=0.550744824E+00
+       w_qmin( 128)=0.000000000E+00
+       qk_min( 129)=0.553731060E+00
+       w_qmin( 129)=0.000000000E+00
+       qk_min( 130)=0.556717296E+00
+       w_qmin( 130)=0.000000000E+00
+       qk_min( 131)=0.559703532E+00
+       w_qmin( 131)=0.000000000E+00
+       qk_min( 132)=0.562689768E+00
+       w_qmin( 132)=0.000000000E+00
+       qk_min( 133)=0.565676004E+00
+       w_qmin( 133)=0.000000000E+00
+       qk_min( 134)=0.568662240E+00
+       w_qmin( 134)=0.000000000E+00
+       qk_min( 135)=0.571648476E+00
+       w_qmin( 135)=0.000000000E+00
+       qk_min( 136)=0.574634712E+00
+       w_qmin( 136)=0.000000000E+00
+       qk_min( 137)=0.577620948E+00
+       w_qmin( 137)=0.000000000E+00
+       qk_min( 138)=0.580607184E+00
+       w_qmin( 138)=0.000000000E+00
+       qk_min( 139)=0.583593420E+00
+       w_qmin( 139)=0.000000000E+00
+       qk_min( 140)=0.586579656E+00
+       w_qmin( 140)=0.000000000E+00
+       qk_min( 141)=0.589565892E+00
+       w_qmin( 141)=0.000000000E+00
+       qk_min( 142)=0.592552128E+00
+       w_qmin( 142)=0.000000000E+00
+       qk_min( 143)=0.595538364E+00
+       w_qmin( 143)=0.000000000E+00
+       qk_min( 144)=0.598524600E+00
+       w_qmin( 144)=0.000000000E+00
+       qk_min( 145)=0.601510836E+00
+       w_qmin( 145)=0.000000000E+00
+       qk_min( 146)=0.604497072E+00
+       w_qmin( 146)=0.000000000E+00
+       qk_min( 147)=0.607483308E+00
+       w_qmin( 147)=0.000000000E+00
+       qk_min( 148)=0.610469544E+00
+       w_qmin( 148)=0.000000000E+00
+       qk_min( 149)=0.613455780E+00
+       w_qmin( 149)=0.000000000E+00
+       qk_min( 150)=0.616442016E+00
+       w_qmin( 150)=0.000000000E+00
+       qk_min( 151)=0.619428252E+00
+       w_qmin( 151)=0.000000000E+00
+       qk_min( 152)=0.622414488E+00
+       w_qmin( 152)=0.000000000E+00
+       qk_min( 153)=0.625400724E+00
+       w_qmin( 153)=0.000000000E+00
+       qk_min( 154)=0.628386960E+00
+       w_qmin( 154)=0.000000000E+00
+       qk_min( 155)=0.631373196E+00
+       w_qmin( 155)=0.000000000E+00
+       qk_min( 156)=0.634359431E+00
+       w_qmin( 156)=0.000000000E+00
+       qk_min( 157)=0.637345667E+00
+       w_qmin( 157)=0.000000000E+00
+       qk_min( 158)=0.640331903E+00
+       w_qmin( 158)=0.000000000E+00
+       qk_min( 159)=0.643318139E+00
+       w_qmin( 159)=0.000000000E+00
+       qk_min( 160)=0.646304375E+00
+       w_qmin( 160)=0.000000000E+00
+       qk_min( 161)=0.649290611E+00
+       w_qmin( 161)=0.000000000E+00
+       qk_min( 162)=0.652276847E+00
+       w_qmin( 162)=0.000000000E+00
+       qk_min( 163)=0.655263083E+00
+       w_qmin( 163)=0.000000000E+00
+       qk_min( 164)=0.658249319E+00
+       w_qmin( 164)=0.000000000E+00
+       qk_min( 165)=0.661235555E+00
+       w_qmin( 165)=0.000000000E+00
+       qk_min( 166)=0.664221791E+00
+       w_qmin( 166)=0.000000000E+00
+       qk_min( 167)=0.667208027E+00
+       w_qmin( 167)=0.000000000E+00
+       qk_min( 168)=0.670194263E+00
+       w_qmin( 168)=0.000000000E+00
+       qk_min( 169)=0.673180499E+00
+       w_qmin( 169)=0.000000000E+00
+       qk_min( 170)=0.676166735E+00
+       w_qmin( 170)=0.000000000E+00
+       qk_min( 171)=0.679152971E+00
+       w_qmin( 171)=0.000000000E+00
+       qk_min( 172)=0.682139207E+00
+       w_qmin( 172)=0.000000000E+00
+       qk_min( 173)=0.685125443E+00
+       w_qmin( 173)=0.000000000E+00
+       qk_min( 174)=0.688111679E+00
+       w_qmin( 174)=0.000000000E+00
+       qk_min( 175)=0.691097915E+00
+       w_qmin( 175)=0.000000000E+00
+       qk_min( 176)=0.694084151E+00
+       w_qmin( 176)=0.000000000E+00
+       qk_min( 177)=0.697070387E+00
+       w_qmin( 177)=0.000000000E+00
+       qk_min( 178)=0.700056623E+00
+       w_qmin( 178)=0.000000000E+00
+       qk_min( 179)=0.703042859E+00
+       w_qmin( 179)=0.000000000E+00
+       qk_min( 180)=0.706029095E+00
+       w_qmin( 180)=0.000000000E+00
+       qk_min( 181)=0.709015331E+00
+       w_qmin( 181)=0.000000000E+00
+       qk_min( 182)=0.712001567E+00
+       w_qmin( 182)=0.000000000E+00
+       qk_min( 183)=0.714987803E+00
+       w_qmin( 183)=0.000000000E+00
+       qk_min( 184)=0.717974039E+00
+       w_qmin( 184)=0.000000000E+00
+       qk_min( 185)=0.720960275E+00
+       w_qmin( 185)=0.000000000E+00
+       qk_min( 186)=0.723946510E+00
+       w_qmin( 186)=0.000000000E+00
+       qk_min( 187)=0.726932746E+00
+       w_qmin( 187)=0.000000000E+00
+       qk_min( 188)=0.729918982E+00
+       w_qmin( 188)=0.000000000E+00
+       qk_min( 189)=0.732905218E+00
+       w_qmin( 189)=0.000000000E+00
+       qk_min( 190)=0.735891454E+00
+       w_qmin( 190)=0.000000000E+00
+       qk_min( 191)=0.738877690E+00
+       w_qmin( 191)=0.000000000E+00
+       qk_min( 192)=0.741863926E+00
+       w_qmin( 192)=0.000000000E+00
+       qk_min( 193)=0.744850162E+00
+       w_qmin( 193)=0.000000000E+00
+       qk_min( 194)=0.747836398E+00
+       w_qmin( 194)=0.000000000E+00
+       qk_min( 195)=0.750822634E+00
+       w_qmin( 195)=0.000000000E+00
+       qk_min( 196)=0.753808870E+00
+       w_qmin( 196)=0.000000000E+00
+       qk_min( 197)=0.756795106E+00
+       w_qmin( 197)=0.000000000E+00
+       qk_min( 198)=0.759781342E+00
+       w_qmin( 198)=0.000000000E+00
+       qk_min( 199)=0.762767578E+00
+       w_qmin( 199)=0.000000000E+00
+       qk_min( 200)=0.765753814E+00
+       w_qmin( 200)=0.000000000E+00
+       qk_min( 201)=0.768740050E+00
+       w_qmin( 201)=0.000000000E+00
+       qk_min( 202)=0.771726286E+00
+       w_qmin( 202)=0.000000000E+00
+       qk_min( 203)=0.774712522E+00
+       w_qmin( 203)=0.000000000E+00
+       qk_min( 204)=0.777698758E+00
+       w_qmin( 204)=0.000000000E+00
+       qk_min( 205)=0.780684994E+00
+       w_qmin( 205)=0.000000000E+00
+       qk_min( 206)=0.783671230E+00
+       w_qmin( 206)=0.000000000E+00
+       qk_min( 207)=0.786657466E+00
+       w_qmin( 207)=0.000000000E+00
+       qk_min( 208)=0.789643702E+00
+       w_qmin( 208)=0.000000000E+00
+       qk_min( 209)=0.792629938E+00
+       w_qmin( 209)=0.000000000E+00
+       qk_min( 210)=0.795616174E+00
+       w_qmin( 210)=0.000000000E+00
+       qk_min( 211)=0.798602410E+00
+       w_qmin( 211)=0.000000000E+00
+       qk_min( 212)=0.801588646E+00
+       w_qmin( 212)=0.000000000E+00
+       qk_min( 213)=0.804574882E+00
+       w_qmin( 213)=0.000000000E+00
+       qk_min( 214)=0.807561118E+00
+       w_qmin( 214)=0.000000000E+00
+       qk_min( 215)=0.810547354E+00
+       w_qmin( 215)=0.000000000E+00
+       qk_min( 216)=0.813533590E+00
+       w_qmin( 216)=0.000000000E+00
+       qk_min( 217)=0.816519825E+00
+       w_qmin( 217)=0.000000000E+00
+       qk_min( 218)=0.819506061E+00
+       w_qmin( 218)=0.000000000E+00
+       qk_min( 219)=0.822492297E+00
+       w_qmin( 219)=0.000000000E+00
+       qk_min( 220)=0.825478533E+00
+       w_qmin( 220)=0.000000000E+00
+       qk_min( 221)=0.828464769E+00
+       w_qmin( 221)=0.000000000E+00
+       qk_min( 222)=0.831451005E+00
+       w_qmin( 222)=0.000000000E+00
+       qk_min( 223)=0.834437241E+00
+       w_qmin( 223)=0.000000000E+00
+       qk_min( 224)=0.837423477E+00
+       w_qmin( 224)=0.000000000E+00
+       qk_min( 225)=0.840409713E+00
+       w_qmin( 225)=0.000000000E+00
+       qk_min( 226)=0.843395949E+00
+       w_qmin( 226)=0.000000000E+00
+       qk_min( 227)=0.846382185E+00
+       w_qmin( 227)=0.000000000E+00
+       qk_min( 228)=0.849368421E+00
+       w_qmin( 228)=0.000000000E+00
+       qk_min( 229)=0.852354657E+00
+       w_qmin( 229)=0.000000000E+00
+       qk_min( 230)=0.855340893E+00
+       w_qmin( 230)=0.000000000E+00
+       qk_min( 231)=0.858327129E+00
+       w_qmin( 231)=0.000000000E+00
+       qk_min( 232)=0.861313365E+00
+       w_qmin( 232)=0.000000000E+00
+       qk_min( 233)=0.864299601E+00
+       w_qmin( 233)=0.000000000E+00
+       qk_min( 234)=0.867285837E+00
+       w_qmin( 234)=0.000000000E+00
+       qk_min( 235)=0.870272073E+00
+       w_qmin( 235)=0.000000000E+00
+       qk_min( 236)=0.873258309E+00
+       w_qmin( 236)=0.000000000E+00
+       qk_min( 237)=0.876244545E+00
+       w_qmin( 237)=0.000000000E+00
+       qk_min( 238)=0.879230781E+00
+       w_qmin( 238)=0.000000000E+00
+       qk_min( 239)=0.882217017E+00
+       w_qmin( 239)=0.000000000E+00
+       qk_min( 240)=0.885203253E+00
+       w_qmin( 240)=0.000000000E+00
+       qk_min( 241)=0.888189489E+00
+       w_qmin( 241)=0.000000000E+00
+       qk_min( 242)=0.891175725E+00
+       w_qmin( 242)=0.000000000E+00
+       qk_min( 243)=0.894161961E+00
+       w_qmin( 243)=0.000000000E+00
+       qk_min( 244)=0.897148197E+00
+       w_qmin( 244)=0.000000000E+00
+       qk_min( 245)=0.900134433E+00
+       w_qmin( 245)=0.000000000E+00
+       qk_min( 246)=0.903120669E+00
+       w_qmin( 246)=0.000000000E+00
+       qk_min( 247)=0.906106904E+00
+       w_qmin( 247)=0.000000000E+00
+       qk_min( 248)=0.909093140E+00
+       w_qmin( 248)=0.000000000E+00
+       qk_min( 249)=0.912079376E+00
+       w_qmin( 249)=0.000000000E+00
+       qk_min( 250)=0.915065612E+00
+       w_qmin( 250)=0.000000000E+00
+       qk_min( 251)=0.918051848E+00
+       w_qmin( 251)=0.000000000E+00
+       qk_min( 252)=0.921038084E+00
+       w_qmin( 252)=0.000000000E+00
+       qk_min( 253)=0.924024320E+00
+       w_qmin( 253)=0.000000000E+00
+       qk_min( 254)=0.927010556E+00
+       w_qmin( 254)=0.000000000E+00
+       qk_min( 255)=0.929996792E+00
+       w_qmin( 255)=0.000000000E+00
+       qk_min( 256)=0.932983028E+00
+       w_qmin( 256)=0.000000000E+00
+       qk_min( 257)=0.935969264E+00
+       w_qmin( 257)=0.000000000E+00
+       qk_min( 258)=0.938955500E+00
+       w_qmin( 258)=0.000000000E+00
+       qk_min( 259)=0.941941736E+00
+       w_qmin( 259)=0.000000000E+00
+       qk_min( 260)=0.944927972E+00
+       w_qmin( 260)=0.000000000E+00
+       qk_min( 261)=0.947914208E+00
+       w_qmin( 261)=0.000000000E+00
+       qk_min( 262)=0.950900444E+00
+       w_qmin( 262)=0.000000000E+00
+       qk_min( 263)=0.953886680E+00
+       w_qmin( 263)=0.000000000E+00
+       qk_min( 264)=0.956872916E+00
+       w_qmin( 264)=0.000000000E+00
+       qk_min( 265)=0.959859152E+00
+       w_qmin( 265)=0.000000000E+00
+       qk_min( 266)=0.962845388E+00
+       w_qmin( 266)=0.000000000E+00
+       qk_min( 267)=0.965831624E+00
+       w_qmin( 267)=0.000000000E+00
+       qk_min( 268)=0.968817860E+00
+       w_qmin( 268)=0.000000000E+00
+       qk_min( 269)=0.971804096E+00
+       w_qmin( 269)=0.000000000E+00
+       qk_min( 270)=0.974790332E+00
+       w_qmin( 270)=0.000000000E+00
+       qk_min( 271)=0.977776568E+00
+       w_qmin( 271)=0.000000000E+00
+       qk_min( 272)=0.980762804E+00
+       w_qmin( 272)=0.000000000E+00
+       qk_min( 273)=0.983749040E+00
+       w_qmin( 273)=0.000000000E+00
+       qk_min( 274)=0.986735276E+00
+       w_qmin( 274)=0.000000000E+00
+       qk_min( 275)=0.989721512E+00
+       w_qmin( 275)=0.000000000E+00
+       qk_min( 276)=0.992707748E+00
+       w_qmin( 276)=0.000000000E+00
+       qk_min( 277)=0.995693984E+00
+       w_qmin( 277)=0.000000000E+00
+       qk_min( 278)=0.998680219E+00
+       w_qmin( 278)=0.000000000E+00
+       qk_min( 279)=0.100166646E+01
+       w_qmin( 279)=0.000000000E+00
+       qk_min( 280)=0.100465269E+01
+       w_qmin( 280)=0.000000000E+00
+       qk_min( 281)=0.100763893E+01
+       w_qmin( 281)=0.000000000E+00
+       qk_min( 282)=0.101062516E+01
+       w_qmin( 282)=0.000000000E+00
+       qk_min( 283)=0.101361140E+01
+       w_qmin( 283)=0.000000000E+00
+       qk_min( 284)=0.101659764E+01
+       w_qmin( 284)=0.000000000E+00
+       qk_min( 285)=0.101958387E+01
+       w_qmin( 285)=0.000000000E+00
+       qk_min( 286)=0.102257011E+01
+       w_qmin( 286)=0.000000000E+00
+       qk_min( 287)=0.102555634E+01
+       w_qmin( 287)=0.000000000E+00
+       qk_min( 288)=0.102854258E+01
+       w_qmin( 288)=0.000000000E+00
+       qk_min( 289)=0.103152882E+01
+       w_qmin( 289)=0.000000000E+00
+       qk_min( 290)=0.103451505E+01
+       w_qmin( 290)=0.000000000E+00
+       qk_min( 291)=0.103750129E+01
+       w_qmin( 291)=0.000000000E+00
+       qk_min( 292)=0.104048752E+01
+       w_qmin( 292)=0.000000000E+00
+       qk_min( 293)=0.104347376E+01
+       w_qmin( 293)=0.000000000E+00
+       qk_min( 294)=0.104645999E+01
+       w_qmin( 294)=0.000000000E+00
+       qk_min( 295)=0.104944623E+01
+       w_qmin( 295)=0.000000000E+00
+       qk_min( 296)=0.105243247E+01
+       w_qmin( 296)=0.000000000E+00
+       qk_min( 297)=0.105541870E+01
+       w_qmin( 297)=0.000000000E+00
+       qk_min( 298)=0.105840494E+01
+       w_qmin( 298)=0.000000000E+00
+       qk_min( 299)=0.106139117E+01
+       w_qmin( 299)=0.000000000E+00
+       qk_min( 300)=0.106437741E+01
+       w_qmin( 300)=0.000000000E+00
+       qk_min( 301)=0.106736365E+01
+       w_qmin( 301)=0.000000000E+00
+       qk_min( 302)=0.107034988E+01
+       w_qmin( 302)=0.000000000E+00
+       qk_min( 303)=0.107333612E+01
+       w_qmin( 303)=0.000000000E+00
+       qk_min( 304)=0.107632235E+01
+       w_qmin( 304)=0.000000000E+00
+       qk_min( 305)=0.107930859E+01
+       w_qmin( 305)=0.000000000E+00
+       qk_min( 306)=0.108229483E+01
+       w_qmin( 306)=0.000000000E+00
+       qk_min( 307)=0.108528106E+01
+       w_qmin( 307)=0.000000000E+00
+       qk_min( 308)=0.108826730E+01
+       w_qmin( 308)=0.000000000E+00
+       qk_min( 309)=0.109125353E+01
+       w_qmin( 309)=0.000000000E+00
+       qk_min( 310)=0.109423977E+01
+       w_qmin( 310)=0.000000000E+00
+       qk_min( 311)=0.109722601E+01
+       w_qmin( 311)=0.000000000E+00
+       qk_min( 312)=0.110021224E+01
+       w_qmin( 312)=0.000000000E+00
+       qk_min( 313)=0.110319848E+01
+       w_qmin( 313)=0.000000000E+00
+       qk_min( 314)=0.110618471E+01
+       w_qmin( 314)=0.000000000E+00
+       qk_min( 315)=0.110917095E+01
+       w_qmin( 315)=0.000000000E+00
+       qk_min( 316)=0.111215719E+01
+       w_qmin( 316)=0.000000000E+00
+       qk_min( 317)=0.111514342E+01
+       w_qmin( 317)=0.000000000E+00
+       qk_min( 318)=0.111812966E+01
+       w_qmin( 318)=0.000000000E+00
+       qk_min( 319)=0.112111589E+01
+       w_qmin( 319)=0.000000000E+00
+       qk_min( 320)=0.112410213E+01
+       w_qmin( 320)=0.000000000E+00
+       qk_min( 321)=0.112708837E+01
+       w_qmin( 321)=0.000000000E+00
+       qk_min( 322)=0.113007460E+01
+       w_qmin( 322)=0.000000000E+00
+       qk_min( 323)=0.113306084E+01
+       w_qmin( 323)=0.000000000E+00
+       qk_min( 324)=0.113604707E+01
+       w_qmin( 324)=0.000000000E+00
+       qk_min( 325)=0.113903331E+01
+       w_qmin( 325)=0.000000000E+00
+       qk_min( 326)=0.114201955E+01
+       w_qmin( 326)=0.000000000E+00
+       qk_min( 327)=0.114500578E+01
+       w_qmin( 327)=0.000000000E+00
+       qk_min( 328)=0.114799202E+01
+       w_qmin( 328)=0.000000000E+00
+       qk_min( 329)=0.115097825E+01
+       w_qmin( 329)=0.000000000E+00
+       qk_min( 330)=0.115396449E+01
+       w_qmin( 330)=0.000000000E+00
+       qk_min( 331)=0.115695073E+01
+       w_qmin( 331)=0.000000000E+00
+       qk_min( 332)=0.115993696E+01
+       w_qmin( 332)=0.000000000E+00
+       qk_min( 333)=0.116292320E+01
+       w_qmin( 333)=0.000000000E+00
+       qk_min( 334)=0.116590943E+01
+       w_qmin( 334)=0.000000000E+00
+       qk_min( 335)=0.116889567E+01
+       w_qmin( 335)=0.000000000E+00
+       qk_min( 336)=0.117188191E+01
+       w_qmin( 336)=0.000000000E+00
+       qk_min( 337)=0.117486814E+01
+       w_qmin( 337)=0.000000000E+00
+       qk_min( 338)=0.117785438E+01
+       w_qmin( 338)=0.000000000E+00
+       qk_min( 339)=0.118084061E+01
+       w_qmin( 339)=0.000000000E+00
+       qk_min( 340)=0.118382685E+01
+       w_qmin( 340)=0.000000000E+00
+       qk_min( 341)=0.118681309E+01
+       w_qmin( 341)=0.000000000E+00
+       qk_min( 342)=0.118979932E+01
+       w_qmin( 342)=0.000000000E+00
+       qk_min( 343)=0.119278556E+01
+       w_qmin( 343)=0.000000000E+00
+       qk_min( 344)=0.119577179E+01
+       w_qmin( 344)=0.000000000E+00
+       qk_min( 345)=0.119875803E+01
+       w_qmin( 345)=0.000000000E+00
+       qk_min( 346)=0.120174427E+01
+       w_qmin( 346)=0.000000000E+00
+       qk_min( 347)=0.120473050E+01
+       w_qmin( 347)=0.000000000E+00
+       qk_min( 348)=0.120771674E+01
+       w_qmin( 348)=0.000000000E+00
+       qk_min( 349)=0.121070297E+01
+       w_qmin( 349)=0.000000000E+00
+       qk_min( 350)=0.121368921E+01
+       w_qmin( 350)=0.000000000E+00
+       qk_min( 351)=0.121667545E+01
+       w_qmin( 351)=0.000000000E+00
+       qk_min( 352)=0.121966168E+01
+       w_qmin( 352)=0.000000000E+00
+       qk_min( 353)=0.122264792E+01
+       w_qmin( 353)=0.000000000E+00
+       qk_min( 354)=0.122563415E+01
+       w_qmin( 354)=0.000000000E+00
+       qk_min( 355)=0.122862039E+01
+       w_qmin( 355)=0.000000000E+00
+       qk_min( 356)=0.123160662E+01
+       w_qmin( 356)=0.000000000E+00
+       qk_min( 357)=0.123459286E+01
+       w_qmin( 357)=0.000000000E+00
+       qk_min( 358)=0.123757910E+01
+       w_qmin( 358)=0.000000000E+00
+       qk_min( 359)=0.124056533E+01
+       w_qmin( 359)=0.000000000E+00
+       qk_min( 360)=0.124355157E+01
+       w_qmin( 360)=0.000000000E+00
+       qk_min( 361)=0.124653780E+01
+       w_qmin( 361)=0.000000000E+00
+       qk_min( 362)=0.124952404E+01
+       w_qmin( 362)=0.000000000E+00
+       qk_min( 363)=0.125251028E+01
+       w_qmin( 363)=0.000000000E+00
+       qk_min( 364)=0.125549651E+01
+       w_qmin( 364)=0.000000000E+00
+       qk_min( 365)=0.125848275E+01
+       w_qmin( 365)=0.000000000E+00
+       qk_min( 366)=0.126146898E+01
+       w_qmin( 366)=0.000000000E+00
+       qk_min( 367)=0.126445522E+01
+       w_qmin( 367)=0.000000000E+00
+       qk_min( 368)=0.126744146E+01
+       w_qmin( 368)=0.000000000E+00
+       qk_min( 369)=0.127042769E+01
+       w_qmin( 369)=0.000000000E+00
+       qk_min( 370)=0.127341393E+01
+       w_qmin( 370)=0.000000000E+00
+       qk_min( 371)=0.127640016E+01
+       w_qmin( 371)=0.467385957E-11
+       qk_min( 372)=0.127938640E+01
+       w_qmin( 372)=0.336675634E-09
+       qk_min( 373)=0.128237264E+01
+       w_qmin( 373)=0.180589425E-08
+       qk_min( 374)=0.128535887E+01
+       w_qmin( 374)=0.521060960E-08
+       qk_min( 375)=0.128834511E+01
+       w_qmin( 375)=0.112917588E-07
+       qk_min( 376)=0.129133134E+01
+       w_qmin( 376)=0.207377627E-07
+       qk_min( 377)=0.129431758E+01
+       w_qmin( 377)=0.341888871E-07
+       qk_min( 378)=0.129730382E+01
+       w_qmin( 378)=0.522393827E-07
+       qk_min( 379)=0.130029005E+01
+       w_qmin( 379)=0.754446882E-07
+       qk_min( 380)=0.130327629E+01
+       w_qmin( 380)=0.104319866E-06
+       qk_min( 381)=0.130626252E+01
+       w_qmin( 381)=0.139349343E-06
+       qk_min( 382)=0.130924876E+01
+       w_qmin( 382)=0.180986475E-06
+       qk_min( 383)=0.131223500E+01
+       w_qmin( 383)=0.229654233E-06
+       qk_min( 384)=0.131522123E+01
+       w_qmin( 384)=0.285754285E-06
+       qk_min( 385)=0.131820747E+01
+       w_qmin( 385)=0.349669848E-06
+       qk_min( 386)=0.132119370E+01
+       w_qmin( 386)=0.421756559E-06
+       qk_min( 387)=0.132417994E+01
+       w_qmin( 387)=0.502363262E-06
+       qk_min( 388)=0.132716618E+01
+       w_qmin( 388)=0.591822610E-06
+       qk_min( 389)=0.133015241E+01
+       w_qmin( 389)=0.690452213E-06
+       qk_min( 390)=0.133313865E+01
+       w_qmin( 390)=0.798572685E-06
+       qk_min( 391)=0.133612488E+01
+       w_qmin( 391)=0.916480606E-06
+       qk_min( 392)=0.133911112E+01
+       w_qmin( 392)=0.104448389E-05
+       qk_min( 393)=0.134209736E+01
+       w_qmin( 393)=0.118288886E-05
+       qk_min( 394)=0.134508359E+01
+       w_qmin( 394)=0.133198624E-05
+       qk_min( 395)=0.134806983E+01
+       w_qmin( 395)=0.149208590E-05
+       qk_min( 396)=0.135105606E+01
+       w_qmin( 396)=0.166349876E-05
+       qk_min( 397)=0.135404230E+01
+       w_qmin( 397)=0.184652662E-05
+       qk_min( 398)=0.135702854E+01
+       w_qmin( 398)=0.204149727E-05
+       qk_min( 399)=0.136001477E+01
+       w_qmin( 399)=0.224874847E-05
+       qk_min( 400)=0.136300101E+01
+       w_qmin( 400)=0.246860209E-05
+       qk_min( 401)=0.136598724E+01
+       w_qmin( 401)=0.270143320E-05
+       qk_min( 402)=0.136897348E+01
+       w_qmin( 402)=0.294758441E-05
+       qk_min( 403)=0.137195972E+01
+       w_qmin( 403)=0.320745294E-05
+       qk_min( 404)=0.137494595E+01
+       w_qmin( 404)=0.348143917E-05
+       qk_min( 405)=0.137793219E+01
+       w_qmin( 405)=0.376994513E-05
+       qk_min( 406)=0.138091842E+01
+       w_qmin( 406)=0.407341659E-05
+       qk_min( 407)=0.138390466E+01
+       w_qmin( 407)=0.439231612E-05
+       qk_min( 408)=0.138689090E+01
+       w_qmin( 408)=0.472710275E-05
+       qk_min( 409)=0.138987713E+01
+       w_qmin( 409)=0.507828748E-05
+       qk_min( 410)=0.139286337E+01
+       w_qmin( 410)=0.544639815E-05
+       qk_min( 411)=0.139584960E+01
+       w_qmin( 411)=0.583197441E-05
+       qk_min( 412)=0.139883584E+01
+       w_qmin( 412)=0.623560306E-05
+       qk_min( 413)=0.140182208E+01
+       w_qmin( 413)=0.665787419E-05
+       qk_min( 414)=0.140480831E+01
+       w_qmin( 414)=0.709942081E-05
+       qk_min( 415)=0.140779455E+01
+       w_qmin( 415)=0.756091702E-05
+       qk_min( 416)=0.141078078E+01
+       w_qmin( 416)=0.804302920E-05
+       qk_min( 417)=0.141376702E+01
+       w_qmin( 417)=0.854648533E-05
+       qk_min( 418)=0.141675325E+01
+       w_qmin( 418)=0.907205680E-05
+       qk_min( 419)=0.141973949E+01
+       w_qmin( 419)=0.962050306E-05
+       qk_min( 420)=0.142272573E+01
+       w_qmin( 420)=0.101926529E-04
+       qk_min( 421)=0.142571196E+01
+       w_qmin( 421)=0.107893739E-04
+       qk_min( 422)=0.142869820E+01
+       w_qmin( 422)=0.114115273E-04
+       qk_min( 423)=0.143168443E+01
+       w_qmin( 423)=0.120600685E-04
+       qk_min( 424)=0.143467067E+01
+       w_qmin( 424)=0.127359231E-04
+       qk_min( 425)=0.143765691E+01
+       w_qmin( 425)=0.134401138E-04
+       qk_min( 426)=0.144064314E+01
+       w_qmin( 426)=0.141736967E-04
+       qk_min( 427)=0.144362938E+01
+       w_qmin( 427)=0.149377099E-04
+       qk_min( 428)=0.144661561E+01
+       w_qmin( 428)=0.157332917E-04
+       qk_min( 429)=0.144960185E+01
+       w_qmin( 429)=0.165616119E-04
+       qk_min( 430)=0.145258809E+01
+       w_qmin( 430)=0.174238532E-04
+       qk_min( 431)=0.145557432E+01
+       w_qmin( 431)=0.183212644E-04
+       qk_min( 432)=0.145856056E+01
+       w_qmin( 432)=0.192551614E-04
+       qk_min( 433)=0.146154679E+01
+       w_qmin( 433)=0.202268169E-04
+       qk_min( 434)=0.146453303E+01
+       w_qmin( 434)=0.212376507E-04
+       qk_min( 435)=0.146751927E+01
+       w_qmin( 435)=0.222890955E-04
+       qk_min( 436)=0.147050550E+01
+       w_qmin( 436)=0.233825795E-04
+       qk_min( 437)=0.147349174E+01
+       w_qmin( 437)=0.245196597E-04
+       qk_min( 438)=0.147647797E+01
+       w_qmin( 438)=0.257018674E-04
+       qk_min( 439)=0.147946421E+01
+       w_qmin( 439)=0.269308165E-04
+       qk_min( 440)=0.148245045E+01
+       w_qmin( 440)=0.282082199E-04
+       qk_min( 441)=0.148543668E+01
+       w_qmin( 441)=0.295357207E-04
+       qk_min( 442)=0.148842292E+01
+       w_qmin( 442)=0.309151355E-04
+       qk_min( 443)=0.149140915E+01
+       w_qmin( 443)=0.323482962E-04
+       qk_min( 444)=0.149439539E+01
+       w_qmin( 444)=0.338370198E-04
+       qk_min( 445)=0.149738163E+01
+       w_qmin( 445)=0.353832483E-04
+       qk_min( 446)=0.150036786E+01
+       w_qmin( 446)=0.369890317E-04
+       qk_min( 447)=0.150335410E+01
+       w_qmin( 447)=0.386563318E-04
+       qk_min( 448)=0.150634033E+01
+       w_qmin( 448)=0.403872831E-04
+       qk_min( 449)=0.150932657E+01
+       w_qmin( 449)=0.421839819E-04
+       qk_min( 450)=0.151231281E+01
+       w_qmin( 450)=0.440487213E-04
+       qk_min( 451)=0.151529904E+01
+       w_qmin( 451)=0.459837761E-04
+       qk_min( 452)=0.151828528E+01
+       w_qmin( 452)=0.479914037E-04
+       qk_min( 453)=0.152127151E+01
+       w_qmin( 453)=0.500740716E-04
+       qk_min( 454)=0.152425775E+01
+       w_qmin( 454)=0.522342430E-04
+       qk_min( 455)=0.152724399E+01
+       w_qmin( 455)=0.544743776E-04
+       qk_min( 456)=0.153023022E+01
+       w_qmin( 456)=0.567971198E-04
+       qk_min( 457)=0.153321646E+01
+       w_qmin( 457)=0.592052189E-04
+       qk_min( 458)=0.153620269E+01
+       w_qmin( 458)=0.617012423E-04
+       qk_min( 459)=0.153918893E+01
+       w_qmin( 459)=0.642881487E-04
+       qk_min( 460)=0.154217517E+01
+       w_qmin( 460)=0.669687132E-04
+       qk_min( 461)=0.154516140E+01
+       w_qmin( 461)=0.697458622E-04
+       qk_min( 462)=0.154814764E+01
+       w_qmin( 462)=0.726227948E-04
+       qk_min( 463)=0.155113387E+01
+       w_qmin( 463)=0.756024033E-04
+       qk_min( 464)=0.155412011E+01
+       w_qmin( 464)=0.786879653E-04
+       qk_min( 465)=0.155710635E+01
+       w_qmin( 465)=0.818828300E-04
+       qk_min( 466)=0.156009258E+01
+       w_qmin( 466)=0.851901657E-04
+       qk_min( 467)=0.156307882E+01
+       w_qmin( 467)=0.886134930E-04
+       qk_min( 468)=0.156606505E+01
+       w_qmin( 468)=0.921564139E-04
+       qk_min( 469)=0.156905129E+01
+       w_qmin( 469)=0.958223661E-04
+       qk_min( 470)=0.157203753E+01
+       w_qmin( 470)=0.996152064E-04
+       qk_min( 471)=0.157502376E+01
+       w_qmin( 471)=0.103538575E-03
+       qk_min( 472)=0.157801000E+01
+       w_qmin( 472)=0.107596429E-03
+       qk_min( 473)=0.158099623E+01
+       w_qmin( 473)=0.111792857E-03
+       qk_min( 474)=0.158398247E+01
+       w_qmin( 474)=0.116131714E-03
+       qk_min( 475)=0.158696871E+01
+       w_qmin( 475)=0.120617363E-03
+       qk_min( 476)=0.158995494E+01
+       w_qmin( 476)=0.125254114E-03
+       qk_min( 477)=0.159294118E+01
+       w_qmin( 477)=0.130046282E-03
+       qk_min( 478)=0.159592741E+01
+       w_qmin( 478)=0.134998333E-03
+       qk_min( 479)=0.159891365E+01
+       w_qmin( 479)=0.140115085E-03
+       qk_min( 480)=0.160189988E+01
+       w_qmin( 480)=0.145401211E-03
+       qk_min( 481)=0.160488612E+01
+       w_qmin( 481)=0.150861547E-03
+       qk_min( 482)=0.160787236E+01
+       w_qmin( 482)=0.156501094E-03
+       qk_min( 483)=0.161085859E+01
+       w_qmin( 483)=0.162324989E-03
+       qk_min( 484)=0.161384483E+01
+       w_qmin( 484)=0.168338617E-03
+       qk_min( 485)=0.161683106E+01
+       w_qmin( 485)=0.174547287E-03
+       qk_min( 486)=0.161981730E+01
+       w_qmin( 486)=0.180956528E-03
+       qk_min( 487)=0.162280354E+01
+       w_qmin( 487)=0.187572222E-03
+       qk_min( 488)=0.162578977E+01
+       w_qmin( 488)=0.194400044E-03
+       qk_min( 489)=0.162877601E+01
+       w_qmin( 489)=0.201446006E-03
+       qk_min( 490)=0.163176224E+01
+       w_qmin( 490)=0.208716558E-03
+       qk_min( 491)=0.163474848E+01
+       w_qmin( 491)=0.216217754E-03
+       qk_min( 492)=0.163773472E+01
+       w_qmin( 492)=0.223956400E-03
+       qk_min( 493)=0.164072095E+01
+       w_qmin( 493)=0.231938975E-03
+       qk_min( 494)=0.164370719E+01
+       w_qmin( 494)=0.240172480E-03
+       qk_min( 495)=0.164669342E+01
+       w_qmin( 495)=0.248664180E-03
+       qk_min( 496)=0.164967966E+01
+       w_qmin( 496)=0.257421259E-03
+       qk_min( 497)=0.165266590E+01
+       w_qmin( 497)=0.266451259E-03
+       qk_min( 498)=0.165565213E+01
+       w_qmin( 498)=0.275762188E-03
+       qk_min( 499)=0.165863837E+01
+       w_qmin( 499)=0.285361592E-03
+       qk_min( 500)=0.166162460E+01
+       w_qmin( 500)=0.295258054E-03
+       qk_min( 501)=0.166461084E+01
+       w_qmin( 501)=0.305460085E-03
+       qk_min( 502)=0.166759708E+01
+       w_qmin( 502)=0.315976296E-03
+       qk_min( 503)=0.167058331E+01
+       w_qmin( 503)=0.326815911E-03
+       qk_min( 504)=0.167356955E+01
+       w_qmin( 504)=0.337987974E-03
+       qk_min( 505)=0.167655578E+01
+       w_qmin( 505)=0.349502332E-03
+       qk_min( 506)=0.167954202E+01
+       w_qmin( 506)=0.361369081E-03
+       qk_min( 507)=0.168252826E+01
+       w_qmin( 507)=0.373598144E-03
+       qk_min( 508)=0.168551449E+01
+       w_qmin( 508)=0.386200398E-03
+       qk_min( 509)=0.168850073E+01
+       w_qmin( 509)=0.399186814E-03
+       qk_min( 510)=0.169148696E+01
+       w_qmin( 510)=0.412568599E-03
+       qk_min( 511)=0.169447320E+01
+       w_qmin( 511)=0.426357630E-03
+       qk_min( 512)=0.169745944E+01
+       w_qmin( 512)=0.440566135E-03
+       qk_min( 513)=0.170044567E+01
+       w_qmin( 513)=0.455206668E-03
+       qk_min( 514)=0.170343191E+01
+       w_qmin( 514)=0.470292258E-03
+       qk_min( 515)=0.170641814E+01
+       w_qmin( 515)=0.485836517E-03
+       qk_min( 516)=0.170940438E+01
+       w_qmin( 516)=0.501853310E-03
+       qk_min( 517)=0.171239062E+01
+       w_qmin( 517)=0.518357580E-03
+       qk_min( 518)=0.171537685E+01
+       w_qmin( 518)=0.535364141E-03
+       qk_min( 519)=0.171836309E+01
+       w_qmin( 519)=0.552888807E-03
+       qk_min( 520)=0.172134932E+01
+       w_qmin( 520)=0.570948256E-03
+       qk_min( 521)=0.172433556E+01
+       w_qmin( 521)=0.589558827E-03
+       qk_min( 522)=0.172732180E+01
+       w_qmin( 522)=0.608738722E-03
+       qk_min( 523)=0.173030803E+01
+       w_qmin( 523)=0.628506301E-03
+       qk_min( 524)=0.173329427E+01
+       w_qmin( 524)=0.648880463E-03
+       qk_min( 525)=0.173628050E+01
+       w_qmin( 525)=0.669881735E-03
+       qk_min( 526)=0.173926674E+01
+       w_qmin( 526)=0.691529804E-03
+       qk_min( 527)=0.174225298E+01
+       w_qmin( 527)=0.713847476E-03
+       qk_min( 528)=0.174523921E+01
+       w_qmin( 528)=0.736857210E-03
+       qk_min( 529)=0.174822545E+01
+       w_qmin( 529)=0.760582053E-03
+       qk_min( 530)=0.175121168E+01
+       w_qmin( 530)=0.785047285E-03
+       qk_min( 531)=0.175419792E+01
+       w_qmin( 531)=0.810279012E-03
+       qk_min( 532)=0.175718416E+01
+       w_qmin( 532)=0.836303084E-03
+       qk_min( 533)=0.176017039E+01
+       w_qmin( 533)=0.863148241E-03
+       qk_min( 534)=0.176315663E+01
+       w_qmin( 534)=0.890844941E-03
+       qk_min( 535)=0.176614286E+01
+       w_qmin( 535)=0.919422666E-03
+       qk_min( 536)=0.176912910E+01
+       w_qmin( 536)=0.948914732E-03
+       qk_min( 537)=0.177211533E+01
+       w_qmin( 537)=0.979354556E-03
+       qk_min( 538)=0.177510157E+01
+       w_qmin( 538)=0.101077768E-02
+       qk_min( 539)=0.177808781E+01
+       w_qmin( 539)=0.104322263E-02
+       qk_min( 540)=0.178107404E+01
+       w_qmin( 540)=0.107672683E-02
+       qk_min( 541)=0.178406028E+01
+       w_qmin( 541)=0.111133165E-02
+       qk_min( 542)=0.178704651E+01
+       w_qmin( 542)=0.114708143E-02
+       qk_min( 543)=0.179003275E+01
+       w_qmin( 543)=0.118402019E-02
+       qk_min( 544)=0.179301899E+01
+       w_qmin( 544)=0.122219555E-02
+       qk_min( 545)=0.179600522E+01
+       w_qmin( 545)=0.126165782E-02
+       qk_min( 546)=0.179899146E+01
+       w_qmin( 546)=0.130245871E-02
+       qk_min( 547)=0.180197769E+01
+       w_qmin( 547)=0.134465404E-02
+       qk_min( 548)=0.180496393E+01
+       w_qmin( 548)=0.138830074E-02
+       qk_min( 549)=0.180795017E+01
+       w_qmin( 549)=0.143345950E-02
+       qk_min( 550)=0.181093640E+01
+       w_qmin( 550)=0.148019468E-02
+       qk_min( 551)=0.181392264E+01
+       w_qmin( 551)=0.152857157E-02
+       qk_min( 552)=0.181690887E+01
+       w_qmin( 552)=0.157866061E-02
+       qk_min( 553)=0.181989511E+01
+       w_qmin( 553)=0.163053610E-02
+       qk_min( 554)=0.182288135E+01
+       w_qmin( 554)=0.168427316E-02
+       qk_min( 555)=0.182586758E+01
+       w_qmin( 555)=0.173995289E-02
+       qk_min( 556)=0.182885382E+01
+       w_qmin( 556)=0.179765952E-02
+       qk_min( 557)=0.183184005E+01
+       w_qmin( 557)=0.185747904E-02
+       qk_min( 558)=0.183482629E+01
+       w_qmin( 558)=0.191950230E-02
+       qk_min( 559)=0.183781253E+01
+       w_qmin( 559)=0.198382641E-02
+       qk_min( 560)=0.184079876E+01
+       w_qmin( 560)=0.205054436E-02
+       qk_min( 561)=0.184378500E+01
+       w_qmin( 561)=0.211976203E-02
+       qk_min( 562)=0.184677123E+01
+       w_qmin( 562)=0.219158092E-02
+       qk_min( 563)=0.184975747E+01
+       w_qmin( 563)=0.226610813E-02
+       qk_min( 564)=0.185274371E+01
+       w_qmin( 564)=0.234345373E-02
+       qk_min( 565)=0.185572994E+01
+       w_qmin( 565)=0.242372713E-02
+       qk_min( 566)=0.185871618E+01
+       w_qmin( 566)=0.250704165E-02
+       qk_min( 567)=0.186170241E+01
+       w_qmin( 567)=0.259350806E-02
+       qk_min( 568)=0.186468865E+01
+       w_qmin( 568)=0.268323895E-02
+       qk_min( 569)=0.186767489E+01
+       w_qmin( 569)=0.277634333E-02
+       qk_min( 570)=0.187066112E+01
+       w_qmin( 570)=0.287292872E-02
+       qk_min( 571)=0.187364736E+01
+       w_qmin( 571)=0.297309477E-02
+       qk_min( 572)=0.187663359E+01
+       w_qmin( 572)=0.307693952E-02
+       qk_min( 573)=0.187961983E+01
+       w_qmin( 573)=0.318454804E-02
+       qk_min( 574)=0.188260607E+01
+       w_qmin( 574)=0.329599762E-02
+       qk_min( 575)=0.188559230E+01
+       w_qmin( 575)=0.341135647E-02
+       qk_min( 576)=0.188857854E+01
+       w_qmin( 576)=0.353067138E-02
+       qk_min( 577)=0.189156477E+01
+       w_qmin( 577)=0.365398018E-02
+       qk_min( 578)=0.189455101E+01
+       w_qmin( 578)=0.378129690E-02
+       qk_min( 579)=0.189753725E+01
+       w_qmin( 579)=0.391261592E-02
+       qk_min( 580)=0.190052348E+01
+       w_qmin( 580)=0.404791404E-02
+       qk_min( 581)=0.190350972E+01
+       w_qmin( 581)=0.418713972E-02
+       qk_min( 582)=0.190649595E+01
+       w_qmin( 582)=0.433021438E-02
+       qk_min( 583)=0.190948219E+01
+       w_qmin( 583)=0.447704605E-02
+       qk_min( 584)=0.191246843E+01
+       w_qmin( 584)=0.462750363E-02
+       qk_min( 585)=0.191545466E+01
+       w_qmin( 585)=0.478143724E-02
+       qk_min( 586)=0.191844090E+01
+       w_qmin( 586)=0.493868030E-02
+       qk_min( 587)=0.192142713E+01
+       w_qmin( 587)=0.509903314E-02
+       qk_min( 588)=0.192441337E+01
+       w_qmin( 588)=0.526228436E-02
+       qk_min( 589)=0.192739961E+01
+       w_qmin( 589)=0.542820514E-02
+       qk_min( 590)=0.193038584E+01
+       w_qmin( 590)=0.559654903E-02
+       qk_min( 591)=0.193337208E+01
+       w_qmin( 591)=0.576706235E-02
+       qk_min( 592)=0.193635831E+01
+       w_qmin( 592)=0.593948743E-02
+       qk_min( 593)=0.193934455E+01
+       w_qmin( 593)=0.611355365E-02
+       qk_min( 594)=0.194233079E+01
+       w_qmin( 594)=0.628900004E-02
+       qk_min( 595)=0.194531702E+01
+       w_qmin( 595)=0.646555578E-02
+       qk_min( 596)=0.194830326E+01
+       w_qmin( 596)=0.664296362E-02
+       qk_min( 597)=0.195128949E+01
+       w_qmin( 597)=0.682098036E-02
+       qk_min( 598)=0.195427573E+01
+       w_qmin( 598)=0.699935510E-02
+       qk_min( 599)=0.195726196E+01
+       w_qmin( 599)=0.717785742E-02
+       qk_min( 600)=0.196024820E+01
+       w_qmin( 600)=0.735627661E-02
+       qk_min( 601)=0.196323444E+01
+       w_qmin( 601)=0.753439863E-02
+       qk_min( 602)=0.196622067E+01
+       w_qmin( 602)=0.771203465E-02
+       qk_min( 603)=0.196920691E+01
+       w_qmin( 603)=0.788901168E-02
+       qk_min( 604)=0.197219314E+01
+       w_qmin( 604)=0.806515833E-02
+       qk_min( 605)=0.197517938E+01
+       w_qmin( 605)=0.824033396E-02
+       qk_min( 606)=0.197816562E+01
+       w_qmin( 606)=0.841439593E-02
+       qk_min( 607)=0.198115185E+01
+       w_qmin( 607)=0.858722323E-02
+       qk_min( 608)=0.198413809E+01
+       w_qmin( 608)=0.875871271E-02
+       qk_min( 609)=0.198712432E+01
+       w_qmin( 609)=0.892875728E-02
+       qk_min( 610)=0.199011056E+01
+       w_qmin( 610)=0.909727135E-02
+       qk_min( 611)=0.199309680E+01
+       w_qmin( 611)=0.926418915E-02
+       qk_min( 612)=0.199608303E+01
+       w_qmin( 612)=0.942943341E-02
+       qk_min( 613)=0.199906927E+01
+       w_qmin( 613)=0.959294908E-02
+       qk_min( 614)=0.200205550E+01
+       w_qmin( 614)=0.975468924E-02
+       qk_min( 615)=0.200504174E+01
+       w_qmin( 615)=0.991462229E-02
+       qk_min( 616)=0.200802798E+01
+       w_qmin( 616)=0.100726954E-01
+       qk_min( 617)=0.201101421E+01
+       w_qmin( 617)=0.102288893E-01
+       qk_min( 618)=0.201400045E+01
+       w_qmin( 618)=0.103831838E-01
+       qk_min( 619)=0.201698668E+01
+       w_qmin( 619)=0.105355603E-01
+       qk_min( 620)=0.201997292E+01
+       w_qmin( 620)=0.106860098E-01
+       qk_min( 621)=0.202295916E+01
+       w_qmin( 621)=0.108345319E-01
+       qk_min( 622)=0.202594539E+01
+       w_qmin( 622)=0.109811024E-01
+       qk_min( 623)=0.202893163E+01
+       w_qmin( 623)=0.111257341E-01
+       qk_min( 624)=0.203191786E+01
+       w_qmin( 624)=0.112684298E-01
+       qk_min( 625)=0.203490410E+01
+       w_qmin( 625)=0.114091923E-01
+       qk_min( 626)=0.203789034E+01
+       w_qmin( 626)=0.115480445E-01
+       qk_min( 627)=0.204087657E+01
+       w_qmin( 627)=0.116849705E-01
+       qk_min( 628)=0.204386281E+01
+       w_qmin( 628)=0.118199965E-01
+       qk_min( 629)=0.204684904E+01
+       w_qmin( 629)=0.119531346E-01
+       qk_min( 630)=0.204983528E+01
+       w_qmin( 630)=0.120844006E-01
+       qk_min( 631)=0.205282152E+01
+       w_qmin( 631)=0.122138135E-01
+       qk_min( 632)=0.205580775E+01
+       w_qmin( 632)=0.123414023E-01
+       qk_min( 633)=0.205879399E+01
+       w_qmin( 633)=0.124671592E-01
+       qk_min( 634)=0.206178022E+01
+       w_qmin( 634)=0.125911196E-01
+       qk_min( 635)=0.206476646E+01
+       w_qmin( 635)=0.127132995E-01
+       qk_min( 636)=0.206775270E+01
+       w_qmin( 636)=0.128337247E-01
+       qk_min( 637)=0.207073893E+01
+       w_qmin( 637)=0.129524278E-01
+       qk_min( 638)=0.207372517E+01
+       w_qmin( 638)=0.130694050E-01
+       qk_min( 639)=0.207671140E+01
+       w_qmin( 639)=0.131846907E-01
+       qk_min( 640)=0.207969764E+01
+       w_qmin( 640)=0.132983123E-01
+       qk_min( 641)=0.208268388E+01
+       w_qmin( 641)=0.134102859E-01
+       qk_min( 642)=0.208567011E+01
+       w_qmin( 642)=0.135206395E-01
+       qk_min( 643)=0.208865635E+01
+       w_qmin( 643)=0.136294069E-01
+       qk_min( 644)=0.209164258E+01
+       w_qmin( 644)=0.137365862E-01
+       qk_min( 645)=0.209462882E+01
+       w_qmin( 645)=0.138422124E-01
+       qk_min( 646)=0.209761506E+01
+       w_qmin( 646)=0.139463108E-01
+       qk_min( 647)=0.210060129E+01
+       w_qmin( 647)=0.140489012E-01
+       qk_min( 648)=0.210358753E+01
+       w_qmin( 648)=0.141500199E-01
+       qk_min( 649)=0.210657376E+01
+       w_qmin( 649)=0.142496662E-01
+       qk_min( 650)=0.210956000E+01
+       w_qmin( 650)=0.143478715E-01
+       qk_min( 651)=0.211254624E+01
+       w_qmin( 651)=0.144446632E-01
+       qk_min( 652)=0.211553247E+01
+       w_qmin( 652)=0.145400583E-01
+       qk_min( 653)=0.211851871E+01
+       w_qmin( 653)=0.146340828E-01
+       qk_min( 654)=0.212150494E+01
+       w_qmin( 654)=0.147267691E-01
+       qk_min( 655)=0.212449118E+01
+       w_qmin( 655)=0.148181103E-01
+       qk_min( 656)=0.212747742E+01
+       w_qmin( 656)=0.149081453E-01
+       qk_min( 657)=0.213046365E+01
+       w_qmin( 657)=0.149968931E-01
+       qk_min( 658)=0.213344989E+01
+       w_qmin( 658)=0.150843719E-01
+       qk_min( 659)=0.213643612E+01
+       w_qmin( 659)=0.151706188E-01
+       qk_min( 660)=0.213942236E+01
+       w_qmin( 660)=0.152556261E-01
+       qk_min( 661)=0.214240859E+01
+       w_qmin( 661)=0.153394238E-01
+       qk_min( 662)=0.214539483E+01
+       w_qmin( 662)=0.154220366E-01
+       qk_min( 663)=0.214838107E+01
+       w_qmin( 663)=0.155034801E-01
+       qk_min( 664)=0.215136730E+01
+       w_qmin( 664)=0.155837748E-01
+       qk_min( 665)=0.215435354E+01
+       w_qmin( 665)=0.156629538E-01
+       qk_min( 666)=0.215733977E+01
+       w_qmin( 666)=0.157410074E-01
+       qk_min( 667)=0.216032601E+01
+       w_qmin( 667)=0.158179681E-01
+       qk_min( 668)=0.216331225E+01
+       w_qmin( 668)=0.158938541E-01
+       qk_min( 669)=0.216629848E+01
+       w_qmin( 669)=0.159686826E-01
+       qk_min( 670)=0.216928472E+01
+       w_qmin( 670)=0.160424840E-01
+       qk_min( 671)=0.217227095E+01
+       w_qmin( 671)=0.161152479E-01
+       qk_min( 672)=0.217525719E+01
+       w_qmin( 672)=0.161870103E-01
+       qk_min( 673)=0.217824343E+01
+       w_qmin( 673)=0.162577788E-01
+       qk_min( 674)=0.218122966E+01
+       w_qmin( 674)=0.163275787E-01
+       qk_min( 675)=0.218421590E+01
+       w_qmin( 675)=0.163964232E-01
+       qk_min( 676)=0.218720213E+01
+       w_qmin( 676)=0.164643391E-01
+       qk_min( 677)=0.219018837E+01
+       w_qmin( 677)=0.165313205E-01
+       qk_min( 678)=0.219317461E+01
+       w_qmin( 678)=0.165973881E-01
+       qk_min( 679)=0.219616084E+01
+       w_qmin( 679)=0.166625641E-01
+       qk_min( 680)=0.219914708E+01
+       w_qmin( 680)=0.167268572E-01
+       qk_min( 681)=0.220213331E+01
+       w_qmin( 681)=0.167903009E-01
+       qk_min( 682)=0.220511955E+01
+       w_qmin( 682)=0.168528775E-01
+       qk_min( 683)=0.220810579E+01
+       w_qmin( 683)=0.169146152E-01
+       qk_min( 684)=0.221109202E+01
+       w_qmin( 684)=0.169755246E-01
+       qk_min( 685)=0.221407826E+01
+       w_qmin( 685)=0.170356213E-01
+       qk_min( 686)=0.221706449E+01
+       w_qmin( 686)=0.170949171E-01
+       qk_min( 687)=0.222005073E+01
+       w_qmin( 687)=0.171534415E-01
+       qk_min( 688)=0.222303697E+01
+       w_qmin( 688)=0.172111728E-01
+       qk_min( 689)=0.222602320E+01
+       w_qmin( 689)=0.172681398E-01
+       qk_min( 690)=0.222900944E+01
+       w_qmin( 690)=0.173243582E-01
+       qk_min( 691)=0.223199567E+01
+       w_qmin( 691)=0.173798301E-01
+       qk_min( 692)=0.223498191E+01
+       w_qmin( 692)=0.174345971E-01
+       qk_min( 693)=0.223796815E+01
+       w_qmin( 693)=0.174886299E-01
+       qk_min( 694)=0.224095438E+01
+       w_qmin( 694)=0.175419632E-01
+       qk_min( 695)=0.224394062E+01
+       w_qmin( 695)=0.175946025E-01
+       qk_min( 696)=0.224692685E+01
+       w_qmin( 696)=0.176465629E-01
+       qk_min( 697)=0.224991309E+01
+       w_qmin( 697)=0.176978608E-01
+       qk_min( 698)=0.225289933E+01
+       w_qmin( 698)=0.177485202E-01
+       qk_min( 699)=0.225588556E+01
+       w_qmin( 699)=0.177985286E-01
+       qk_min( 700)=0.225887180E+01
+       w_qmin( 700)=0.178478959E-01
+       qk_min( 701)=0.226185803E+01
+       w_qmin( 701)=0.178966537E-01
+       qk_min( 702)=0.226484427E+01
+       w_qmin( 702)=0.179448012E-01
+       qk_min( 703)=0.226783051E+01
+       w_qmin( 703)=0.179923681E-01
+       qk_min( 704)=0.227081674E+01
+       w_qmin( 704)=0.180393329E-01
+       qk_min( 705)=0.227380298E+01
+       w_qmin( 705)=0.180857222E-01
+       qk_min( 706)=0.227678921E+01
+       w_qmin( 706)=0.181315403E-01
+       qk_min( 707)=0.227977545E+01
+       w_qmin( 707)=0.181767980E-01
+       qk_min( 708)=0.228276169E+01
+       w_qmin( 708)=0.182215072E-01
+       qk_min( 709)=0.228574792E+01
+       w_qmin( 709)=0.182656858E-01
+       qk_min( 710)=0.228873416E+01
+       w_qmin( 710)=0.183093106E-01
+       qk_min( 711)=0.229172039E+01
+       w_qmin( 711)=0.183524032E-01
+       qk_min( 712)=0.229470663E+01
+       w_qmin( 712)=0.183949727E-01
+       qk_min( 713)=0.229769287E+01
+       w_qmin( 713)=0.184370255E-01
+       qk_min( 714)=0.230067910E+01
+       w_qmin( 714)=0.184785801E-01
+       qk_min( 715)=0.230366534E+01
+       w_qmin( 715)=0.185196119E-01
+       qk_min( 716)=0.230665157E+01
+       w_qmin( 716)=0.185601483E-01
+       qk_min( 717)=0.230963781E+01
+       w_qmin( 717)=0.186001946E-01
+       qk_min( 718)=0.231262405E+01
+       w_qmin( 718)=0.186397515E-01
+       qk_min( 719)=0.231561028E+01
+       w_qmin( 719)=0.186788294E-01
+       qk_min( 720)=0.231859652E+01
+       w_qmin( 720)=0.187174615E-01
+       qk_min( 721)=0.232158275E+01
+       w_qmin( 721)=0.187556096E-01
+       qk_min( 722)=0.232456899E+01
+       w_qmin( 722)=0.187933082E-01
+       qk_min( 723)=0.232755522E+01
+       w_qmin( 723)=0.188305624E-01
+       qk_min( 724)=0.233054146E+01
+       w_qmin( 724)=0.188673824E-01
+       qk_min( 725)=0.233352770E+01
+       w_qmin( 725)=0.189037949E-01
+       qk_min( 726)=0.233651393E+01
+       w_qmin( 726)=0.189397778E-01
+       qk_min( 727)=0.233950017E+01
+       w_qmin( 727)=0.189753492E-01
+       qk_min( 728)=0.234248640E+01
+       w_qmin( 728)=0.190105254E-01
+       qk_min( 729)=0.234547264E+01
+       w_qmin( 729)=0.190453153E-01
+       qk_min( 730)=0.234845888E+01
+       w_qmin( 730)=0.190797269E-01
+       qk_min( 731)=0.235144511E+01
+       w_qmin( 731)=0.191137845E-01
+       qk_min( 732)=0.235443135E+01
+       w_qmin( 732)=0.191474604E-01
+       qk_min( 733)=0.235741758E+01
+       w_qmin( 733)=0.191807822E-01
+       qk_min( 734)=0.236040382E+01
+       w_qmin( 734)=0.192137587E-01
+       qk_min( 735)=0.236339006E+01
+       w_qmin( 735)=0.192463875E-01
+       qk_min( 736)=0.236637629E+01
+       w_qmin( 736)=0.192786988E-01
+       qk_min( 737)=0.236936253E+01
+       w_qmin( 737)=0.193106570E-01
+       qk_min( 738)=0.237234876E+01
+       w_qmin( 738)=0.193422911E-01
+       qk_min( 739)=0.237533500E+01
+       w_qmin( 739)=0.193736007E-01
+       qk_min( 740)=0.237832124E+01
+       w_qmin( 740)=0.194045867E-01
+       qk_min( 741)=0.238130747E+01
+       w_qmin( 741)=0.194352575E-01
+       qk_min( 742)=0.238429371E+01
+       w_qmin( 742)=0.194656293E-01
+       qk_min( 743)=0.238727994E+01
+       w_qmin( 743)=0.194956639E-01
+       qk_min( 744)=0.239026618E+01
+       w_qmin( 744)=0.195253908E-01
+       qk_min( 745)=0.239325242E+01
+       w_qmin( 745)=0.195548023E-01
+       qk_min( 746)=0.239623865E+01
+       w_qmin( 746)=0.195839100E-01
+       qk_min( 747)=0.239922489E+01
+       w_qmin( 747)=0.196127197E-01
+       qk_min( 748)=0.240221112E+01
+       w_qmin( 748)=0.196412099E-01
+       qk_min( 749)=0.240519736E+01
+       w_qmin( 749)=0.196693885E-01
+       qk_min( 750)=0.240818360E+01
+       w_qmin( 750)=0.196972667E-01
+       qk_min( 751)=0.241116983E+01
+       w_qmin( 751)=0.197248463E-01
+       qk_min( 752)=0.241415607E+01
+       w_qmin( 752)=0.197521245E-01
+       qk_min( 753)=0.241714230E+01
+       w_qmin( 753)=0.197791298E-01
+       qk_min( 754)=0.242012854E+01
+       w_qmin( 754)=0.198058300E-01
+       qk_min( 755)=0.242311478E+01
+       w_qmin( 755)=0.198322465E-01
+       qk_min( 756)=0.242610101E+01
+       w_qmin( 756)=0.198583839E-01
+       qk_min( 757)=0.242908725E+01
+       w_qmin( 757)=0.198842496E-01
+       qk_min( 758)=0.243207348E+01
+       w_qmin( 758)=0.199098720E-01
+       qk_min( 759)=0.243505972E+01
+       w_qmin( 759)=0.199352178E-01
+       qk_min( 760)=0.243804596E+01
+       w_qmin( 760)=0.199603180E-01
+       qk_min( 761)=0.244103219E+01
+       w_qmin( 761)=0.199851764E-01
+       qk_min( 762)=0.244401843E+01
+       w_qmin( 762)=0.200098100E-01
+       qk_min( 763)=0.244700466E+01
+       w_qmin( 763)=0.200342154E-01
+       qk_min( 764)=0.244999090E+01
+       w_qmin( 764)=0.200584302E-01
+       qk_min( 765)=0.245297714E+01
+       w_qmin( 765)=0.200824225E-01
+       qk_min( 766)=0.245596337E+01
+       w_qmin( 766)=0.201062163E-01
+       qk_min( 767)=0.245894961E+01
+       w_qmin( 767)=0.201298320E-01
+       qk_min( 768)=0.246193584E+01
+       w_qmin( 768)=0.201532643E-01
+       qk_min( 769)=0.246492208E+01
+       w_qmin( 769)=0.201765465E-01
+       qk_min( 770)=0.246790832E+01
+       w_qmin( 770)=0.201996489E-01
+       qk_min( 771)=0.247089455E+01
+       w_qmin( 771)=0.202225967E-01
+       qk_min( 772)=0.247388079E+01
+       w_qmin( 772)=0.202453918E-01
+       qk_min( 773)=0.247686702E+01
+       w_qmin( 773)=0.202680411E-01
+       qk_min( 774)=0.247985326E+01
+       w_qmin( 774)=0.202905521E-01
+       qk_min( 775)=0.248283950E+01
+       w_qmin( 775)=0.203129378E-01
+       qk_min( 776)=0.248582573E+01
+       w_qmin( 776)=0.203351772E-01
+       qk_min( 777)=0.248881197E+01
+       w_qmin( 777)=0.203572820E-01
+       qk_min( 778)=0.249179820E+01
+       w_qmin( 778)=0.203792539E-01
+       qk_min( 779)=0.249478444E+01
+       w_qmin( 779)=0.204011005E-01
+       qk_min( 780)=0.249777068E+01
+       w_qmin( 780)=0.204228238E-01
+       qk_min( 781)=0.250075691E+01
+       w_qmin( 781)=0.204444094E-01
+       qk_min( 782)=0.250374315E+01
+       w_qmin( 782)=0.204658525E-01
+       qk_min( 783)=0.250672938E+01
+       w_qmin( 783)=0.204871663E-01
+       qk_min( 784)=0.250971562E+01
+       w_qmin( 784)=0.205083419E-01
+       qk_min( 785)=0.251270185E+01
+       w_qmin( 785)=0.205293734E-01
+       qk_min( 786)=0.251568809E+01
+       w_qmin( 786)=0.205502826E-01
+       qk_min( 787)=0.251867433E+01
+       w_qmin( 787)=0.205710219E-01
+       qk_min( 788)=0.252166056E+01
+       w_qmin( 788)=0.205916076E-01
+       qk_min( 789)=0.252464680E+01
+       w_qmin( 789)=0.206120492E-01
+       qk_min( 790)=0.252763303E+01
+       w_qmin( 790)=0.206323276E-01
+       qk_min( 791)=0.253061927E+01
+       w_qmin( 791)=0.206524614E-01
+       qk_min( 792)=0.253360551E+01
+       w_qmin( 792)=0.206724200E-01
+       qk_min( 793)=0.253659174E+01
+       w_qmin( 793)=0.206922093E-01
+       qk_min( 794)=0.253957798E+01
+       w_qmin( 794)=0.207118259E-01
+       qk_min( 795)=0.254256421E+01
+       w_qmin( 795)=0.207312799E-01
+       qk_min( 796)=0.254555045E+01
+       w_qmin( 796)=0.207505596E-01
+       qk_min( 797)=0.254853669E+01
+       w_qmin( 797)=0.207696884E-01
+       qk_min( 798)=0.255152292E+01
+       w_qmin( 798)=0.207886275E-01
+       qk_min( 799)=0.255450916E+01
+       w_qmin( 799)=0.208073986E-01
+       qk_min( 800)=0.255749539E+01
+       w_qmin( 800)=0.208260043E-01
+       qk_min( 801)=0.256048163E+01
+       w_qmin( 801)=0.208444481E-01
+       qk_min( 802)=0.256346787E+01
+       w_qmin( 802)=0.208627364E-01
+       qk_min( 803)=0.256645410E+01
+       w_qmin( 803)=0.208808634E-01
+       qk_min( 804)=0.256944034E+01
+       w_qmin( 804)=0.208988348E-01
+       qk_min( 805)=0.257242657E+01
+       w_qmin( 805)=0.209166573E-01
+       qk_min( 806)=0.257541281E+01
+       w_qmin( 806)=0.209343399E-01
+       qk_min( 807)=0.257839905E+01
+       w_qmin( 807)=0.209518904E-01
+       qk_min( 808)=0.258138528E+01
+       w_qmin( 808)=0.209693308E-01
+       qk_min( 809)=0.258437152E+01
+       w_qmin( 809)=0.209866286E-01
+       qk_min( 810)=0.258735775E+01
+       w_qmin( 810)=0.210038226E-01
+       qk_min( 811)=0.259034399E+01
+       w_qmin( 811)=0.210209134E-01
+       qk_min( 812)=0.259333023E+01
+       w_qmin( 812)=0.210379105E-01
+       qk_min( 813)=0.259631646E+01
+       w_qmin( 813)=0.210548386E-01
+       qk_min( 814)=0.259930270E+01
+       w_qmin( 814)=0.210716804E-01
+       qk_min( 815)=0.260228893E+01
+       w_qmin( 815)=0.210884458E-01
+       qk_min( 816)=0.260527517E+01
+       w_qmin( 816)=0.211051674E-01
+       qk_min( 817)=0.260826141E+01
+       w_qmin( 817)=0.211218344E-01
+       qk_min( 818)=0.261124764E+01
+       w_qmin( 818)=0.211384647E-01
+       qk_min( 819)=0.261423388E+01
+       w_qmin( 819)=0.211550795E-01
+       qk_min( 820)=0.261722011E+01
+       w_qmin( 820)=0.211716577E-01
+       qk_min( 821)=0.262020635E+01
+       w_qmin( 821)=0.211882200E-01
+       qk_min( 822)=0.262319259E+01
+       w_qmin( 822)=0.212047806E-01
+       qk_min( 823)=0.262617882E+01
+       w_qmin( 823)=0.212213377E-01
+       qk_min( 824)=0.262916506E+01
+       w_qmin( 824)=0.212379084E-01
+       qk_min( 825)=0.263215129E+01
+       w_qmin( 825)=0.212544766E-01
+       qk_min( 826)=0.263513753E+01
+       w_qmin( 826)=0.212710628E-01
+       qk_min( 827)=0.263812377E+01
+       w_qmin( 827)=0.212876624E-01
+       qk_min( 828)=0.264111000E+01
+       w_qmin( 828)=0.213042839E-01
+       qk_min( 829)=0.264409624E+01
+       w_qmin( 829)=0.213209307E-01
+       qk_min( 830)=0.264708247E+01
+       w_qmin( 830)=0.213376112E-01
+       qk_min( 831)=0.265006871E+01
+       w_qmin( 831)=0.213542997E-01
+       qk_min( 832)=0.265305495E+01
+       w_qmin( 832)=0.213710178E-01
+       qk_min( 833)=0.265604118E+01
+       w_qmin( 833)=0.213877536E-01
+       qk_min( 834)=0.265902742E+01
+       w_qmin( 834)=0.214045146E-01
+       qk_min( 835)=0.266201365E+01
+       w_qmin( 835)=0.214212992E-01
+       qk_min( 836)=0.266499989E+01
+       w_qmin( 836)=0.214380876E-01
+       qk_min( 837)=0.266798613E+01
+       w_qmin( 837)=0.214548824E-01
+       qk_min( 838)=0.267097236E+01
+       w_qmin( 838)=0.214716909E-01
+       qk_min( 839)=0.267395860E+01
+       w_qmin( 839)=0.214884922E-01
+       qk_min( 840)=0.267694483E+01
+       w_qmin( 840)=0.215052997E-01
+       qk_min( 841)=0.267993107E+01
+       w_qmin( 841)=0.215221154E-01
+       qk_min( 842)=0.268291730E+01
+       w_qmin( 842)=0.215388959E-01
+       qk_min( 843)=0.268590354E+01
+       w_qmin( 843)=0.215556562E-01
+       qk_min( 844)=0.268888978E+01
+       w_qmin( 844)=0.215723984E-01
+       qk_min( 845)=0.269187601E+01
+       w_qmin( 845)=0.215891019E-01
+       qk_min( 846)=0.269486225E+01
+       w_qmin( 846)=0.216057878E-01
+       qk_min( 847)=0.269784848E+01
+       w_qmin( 847)=0.216224100E-01
+       qk_min( 848)=0.270083472E+01
+       w_qmin( 848)=0.216389850E-01
+       qk_min( 849)=0.270382096E+01
+       w_qmin( 849)=0.216555078E-01
+       qk_min( 850)=0.270680719E+01
+       w_qmin( 850)=0.216719646E-01
+       qk_min( 851)=0.270979343E+01
+       w_qmin( 851)=0.216883554E-01
+       qk_min( 852)=0.271277966E+01
+       w_qmin( 852)=0.217046927E-01
+       qk_min( 853)=0.271576590E+01
+       w_qmin( 853)=0.217209473E-01
+       qk_min( 854)=0.271875214E+01
+       w_qmin( 854)=0.217371074E-01
+       qk_min( 855)=0.272173837E+01
+       w_qmin( 855)=0.217531950E-01
+       qk_min( 856)=0.272472461E+01
+       w_qmin( 856)=0.217692009E-01
+       qk_min( 857)=0.272771084E+01
+       w_qmin( 857)=0.217851223E-01
+       qk_min( 858)=0.273069708E+01
+       w_qmin( 858)=0.218009415E-01
+       qk_min( 859)=0.273368332E+01
+       w_qmin( 859)=0.218166714E-01
+       qk_min( 860)=0.273666955E+01
+       w_qmin( 860)=0.218323080E-01
+       qk_min( 861)=0.273965579E+01
+       w_qmin( 861)=0.218478544E-01
+       qk_min( 862)=0.274264202E+01
+       w_qmin( 862)=0.218633094E-01
+       qk_min( 863)=0.274562826E+01
+       w_qmin( 863)=0.218786805E-01
+       qk_min( 864)=0.274861450E+01
+       w_qmin( 864)=0.218939532E-01
+       qk_min( 865)=0.275160073E+01
+       w_qmin( 865)=0.219091338E-01
+       qk_min( 866)=0.275458697E+01
+       w_qmin( 866)=0.219242331E-01
+       qk_min( 867)=0.275757320E+01
+       w_qmin( 867)=0.219392516E-01
+       qk_min( 868)=0.276055944E+01
+       w_qmin( 868)=0.219542071E-01
+       qk_min( 869)=0.276354568E+01
+       w_qmin( 869)=0.219690692E-01
+       qk_min( 870)=0.276653191E+01
+       w_qmin( 870)=0.219838618E-01
+       qk_min( 871)=0.276951815E+01
+       w_qmin( 871)=0.219985889E-01
+       qk_min( 872)=0.277250438E+01
+       w_qmin( 872)=0.220132414E-01
+       qk_min( 873)=0.277549062E+01
+       w_qmin( 873)=0.220278473E-01
+       qk_min( 874)=0.277847686E+01
+       w_qmin( 874)=0.220424160E-01
+       qk_min( 875)=0.278146309E+01
+       w_qmin( 875)=0.220569198E-01
+       qk_min( 876)=0.278444933E+01
+       w_qmin( 876)=0.220713889E-01
+       qk_min( 877)=0.278743556E+01
+       w_qmin( 877)=0.220858345E-01
+       qk_min( 878)=0.279042180E+01
+       w_qmin( 878)=0.221002366E-01
+       qk_min( 879)=0.279340804E+01
+       w_qmin( 879)=0.221146318E-01
+       qk_min( 880)=0.279639427E+01
+       w_qmin( 880)=0.221290153E-01
+       qk_min( 881)=0.279938051E+01
+       w_qmin( 881)=0.221433895E-01
+       qk_min( 882)=0.280236674E+01
+       w_qmin( 882)=0.221577555E-01
+       qk_min( 883)=0.280535298E+01
+       w_qmin( 883)=0.221721332E-01
+       qk_min( 884)=0.280833922E+01
+       w_qmin( 884)=0.221865214E-01
+       qk_min( 885)=0.281132545E+01
+       w_qmin( 885)=0.222009499E-01
+       qk_min( 886)=0.281431169E+01
+       w_qmin( 886)=0.222154001E-01
+       qk_min( 887)=0.281729792E+01
+       w_qmin( 887)=0.222298815E-01
+       qk_min( 888)=0.282028416E+01
+       w_qmin( 888)=0.222444115E-01
+       qk_min( 889)=0.282327040E+01
+       w_qmin( 889)=0.222589981E-01
+       qk_min( 890)=0.282625663E+01
+       w_qmin( 890)=0.222736348E-01
+       qk_min( 891)=0.282924287E+01
+       w_qmin( 891)=0.222883526E-01
+       qk_min( 892)=0.283222910E+01
+       w_qmin( 892)=0.223031301E-01
+       qk_min( 893)=0.283521534E+01
+       w_qmin( 893)=0.223179987E-01
+       qk_min( 894)=0.283820158E+01
+       w_qmin( 894)=0.223329387E-01
+       qk_min( 895)=0.284118781E+01
+       w_qmin( 895)=0.223479838E-01
+       qk_min( 896)=0.284417405E+01
+       w_qmin( 896)=0.223631308E-01
+       qk_min( 897)=0.284716028E+01
+       w_qmin( 897)=0.223783701E-01
+       qk_min( 898)=0.285014652E+01
+       w_qmin( 898)=0.223937147E-01
+       qk_min( 899)=0.285313276E+01
+       w_qmin( 899)=0.224091676E-01
+       qk_min( 900)=0.285611899E+01
+       w_qmin( 900)=0.224247395E-01
+       qk_min( 901)=0.285910523E+01
+       w_qmin( 901)=0.224404371E-01
+       qk_min( 902)=0.286209146E+01
+       w_qmin( 902)=0.224562550E-01
+       qk_min( 903)=0.286507770E+01
+       w_qmin( 903)=0.224721864E-01
+       qk_min( 904)=0.286806393E+01
+       w_qmin( 904)=0.224882382E-01
+       qk_min( 905)=0.287105017E+01
+       w_qmin( 905)=0.225044056E-01
+       qk_min( 906)=0.287403641E+01
+       w_qmin( 906)=0.225207191E-01
+       qk_min( 907)=0.287702264E+01
+       w_qmin( 907)=0.225371498E-01
+       qk_min( 908)=0.288000888E+01
+       w_qmin( 908)=0.225536978E-01
+       qk_min( 909)=0.288299511E+01
+       w_qmin( 909)=0.225703591E-01
+       qk_min( 910)=0.288598135E+01
+       w_qmin( 910)=0.225871495E-01
+       qk_min( 911)=0.288896759E+01
+       w_qmin( 911)=0.226040409E-01
+       qk_min( 912)=0.289195382E+01
+       w_qmin( 912)=0.226210497E-01
+       qk_min( 913)=0.289494006E+01
+       w_qmin( 913)=0.226381881E-01
+       qk_min( 914)=0.289792629E+01
+       w_qmin( 914)=0.226554163E-01
+       qk_min( 915)=0.290091253E+01
+       w_qmin( 915)=0.226727412E-01
+       qk_min( 916)=0.290389877E+01
+       w_qmin( 916)=0.226901695E-01
+       qk_min( 917)=0.290688500E+01
+       w_qmin( 917)=0.227076836E-01
+       qk_min( 918)=0.290987124E+01
+       w_qmin( 918)=0.227252900E-01
+       qk_min( 919)=0.291285747E+01
+       w_qmin( 919)=0.227429806E-01
+       qk_min( 920)=0.291584371E+01
+       w_qmin( 920)=0.227607376E-01
+       qk_min( 921)=0.291882995E+01
+       w_qmin( 921)=0.227785663E-01
+       qk_min( 922)=0.292181618E+01
+       w_qmin( 922)=0.227964612E-01
+       qk_min( 923)=0.292480242E+01
+       w_qmin( 923)=0.228144070E-01
+       qk_min( 924)=0.292778865E+01
+       w_qmin( 924)=0.228324315E-01
+       qk_min( 925)=0.293077489E+01
+       w_qmin( 925)=0.228504829E-01
+       qk_min( 926)=0.293376113E+01
+       w_qmin( 926)=0.228685835E-01
+       qk_min( 927)=0.293674736E+01
+       w_qmin( 927)=0.228867053E-01
+       qk_min( 928)=0.293973360E+01
+       w_qmin( 928)=0.229048652E-01
+       qk_min( 929)=0.294271983E+01
+       w_qmin( 929)=0.229230603E-01
+       qk_min( 930)=0.294570607E+01
+       w_qmin( 930)=0.229412501E-01
+       qk_min( 931)=0.294869231E+01
+       w_qmin( 931)=0.229594679E-01
+       qk_min( 932)=0.295167854E+01
+       w_qmin( 932)=0.229776894E-01
+       qk_min( 933)=0.295466478E+01
+       w_qmin( 933)=0.229959141E-01
+       qk_min( 934)=0.295765101E+01
+       w_qmin( 934)=0.230141333E-01
+       qk_min( 935)=0.296063725E+01
+       w_qmin( 935)=0.230323669E-01
+       qk_min( 936)=0.296362349E+01
+       w_qmin( 936)=0.230505769E-01
+       qk_min( 937)=0.296660972E+01
+       w_qmin( 937)=0.230687806E-01
+       qk_min( 938)=0.296959596E+01
+       w_qmin( 938)=0.230869536E-01
+       qk_min( 939)=0.297258219E+01
+       w_qmin( 939)=0.231051289E-01
+       qk_min( 940)=0.297556843E+01
+       w_qmin( 940)=0.231232707E-01
+       qk_min( 941)=0.297855467E+01
+       w_qmin( 941)=0.231413792E-01
+       qk_min( 942)=0.298154090E+01
+       w_qmin( 942)=0.231594641E-01
+       qk_min( 943)=0.298452714E+01
+       w_qmin( 943)=0.231775183E-01
+       qk_min( 944)=0.298751337E+01
+       w_qmin( 944)=0.231955454E-01
+       qk_min( 945)=0.299049961E+01
+       w_qmin( 945)=0.232135373E-01
+       qk_min( 946)=0.299348585E+01
+       w_qmin( 946)=0.232315001E-01
+       qk_min( 947)=0.299647208E+01
+       w_qmin( 947)=0.232494192E-01
+       qk_min( 948)=0.299945832E+01
+       w_qmin( 948)=0.232673042E-01
+       qk_min( 949)=0.300244455E+01
+       w_qmin( 949)=0.232851580E-01
+       qk_min( 950)=0.300543079E+01
+       w_qmin( 950)=0.233029694E-01
+       qk_min( 951)=0.300841703E+01
+       w_qmin( 951)=0.233207514E-01
+       qk_min( 952)=0.301140326E+01
+       w_qmin( 952)=0.233384939E-01
+       qk_min( 953)=0.301438950E+01
+       w_qmin( 953)=0.233561936E-01
+       qk_min( 954)=0.301737573E+01
+       w_qmin( 954)=0.233738681E-01
+       qk_min( 955)=0.302036197E+01
+       w_qmin( 955)=0.233914984E-01
+       qk_min( 956)=0.302334821E+01
+       w_qmin( 956)=0.234091148E-01
+       qk_min( 957)=0.302633444E+01
+       w_qmin( 957)=0.234266923E-01
+       qk_min( 958)=0.302932068E+01
+       w_qmin( 958)=0.234442482E-01
+       qk_min( 959)=0.303230691E+01
+       w_qmin( 959)=0.234617565E-01
+       qk_min( 960)=0.303529315E+01
+       w_qmin( 960)=0.234792575E-01
+       qk_min( 961)=0.303827939E+01
+       w_qmin( 961)=0.234967327E-01
+       qk_min( 962)=0.304126562E+01
+       w_qmin( 962)=0.235141912E-01
+       qk_min( 963)=0.304425186E+01
+       w_qmin( 963)=0.235316186E-01
+       qk_min( 964)=0.304723809E+01
+       w_qmin( 964)=0.235490383E-01
+       qk_min( 965)=0.305022433E+01
+       w_qmin( 965)=0.235664448E-01
+       qk_min( 966)=0.305321056E+01
+       w_qmin( 966)=0.235838473E-01
+       qk_min( 967)=0.305619680E+01
+       w_qmin( 967)=0.236012407E-01
+       qk_min( 968)=0.305918304E+01
+       w_qmin( 968)=0.236186374E-01
+       qk_min( 969)=0.306216927E+01
+       w_qmin( 969)=0.236360168E-01
+       qk_min( 970)=0.306515551E+01
+       w_qmin( 970)=0.236534103E-01
+       qk_min( 971)=0.306814174E+01
+       w_qmin( 971)=0.236708031E-01
+       qk_min( 972)=0.307112798E+01
+       w_qmin( 972)=0.236882071E-01
+       qk_min( 973)=0.307411422E+01
+       w_qmin( 973)=0.237056372E-01
+       qk_min( 974)=0.307710045E+01
+       w_qmin( 974)=0.237230797E-01
+       qk_min( 975)=0.308008669E+01
+       w_qmin( 975)=0.237405326E-01
+       qk_min( 976)=0.308307292E+01
+       w_qmin( 976)=0.237580036E-01
+       qk_min( 977)=0.308605916E+01
+       w_qmin( 977)=0.237755219E-01
+       qk_min( 978)=0.308904540E+01
+       w_qmin( 978)=0.237930688E-01
+       qk_min( 979)=0.309203163E+01
+       w_qmin( 979)=0.238106525E-01
+       qk_min( 980)=0.309501787E+01
+       w_qmin( 980)=0.238282891E-01
+       qk_min( 981)=0.309800410E+01
+       w_qmin( 981)=0.238459565E-01
+       qk_min( 982)=0.310099034E+01
+       w_qmin( 982)=0.238636744E-01
+       qk_min( 983)=0.310397658E+01
+       w_qmin( 983)=0.238814546E-01
+       qk_min( 984)=0.310696281E+01
+       w_qmin( 984)=0.238993028E-01
+       qk_min( 985)=0.310994905E+01
+       w_qmin( 985)=0.239171986E-01
+       qk_min( 986)=0.311293528E+01
+       w_qmin( 986)=0.239351669E-01
+       qk_min( 987)=0.311592152E+01
+       w_qmin( 987)=0.239532177E-01
+       qk_min( 988)=0.311890776E+01
+       w_qmin( 988)=0.239713333E-01
+       qk_min( 989)=0.312189399E+01
+       w_qmin( 989)=0.239895409E-01
+       qk_min( 990)=0.312488023E+01
+       w_qmin( 990)=0.240078380E-01
+       qk_min( 991)=0.312786646E+01
+       w_qmin( 991)=0.240262264E-01
+       qk_min( 992)=0.313085270E+01
+       w_qmin( 992)=0.240447070E-01
+       qk_min( 993)=0.313383894E+01
+       w_qmin( 993)=0.240632838E-01
+       qk_min( 994)=0.313682517E+01
+       w_qmin( 994)=0.240819687E-01
+       qk_min( 995)=0.313981141E+01
+       w_qmin( 995)=0.241007713E-01
+       qk_min( 996)=0.314279764E+01
+       w_qmin( 996)=0.241196804E-01
+       qk_min( 997)=0.314578388E+01
+       w_qmin( 997)=0.241387052E-01
+       qk_min( 998)=0.314877012E+01
+       w_qmin( 998)=0.241578507E-01
+       qk_min( 999)=0.315175635E+01
+       w_qmin( 999)=0.241771224E-01
+       qk_min(1000)=0.315474259E+01
+       w_qmin(1000)=0.241965235E-01
+       qk_min(1001)=0.315772882E+01
+       w_qmin(1001)=0.242160684E-01
+   
+       END
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/value_parameter.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/value_parameter.f
new file mode 100644 (file)
index 0000000..4f70bd9
--- /dev/null
@@ -0,0 +1,488 @@
+      SUBROUTINE CH3PISET(JJ)
+C information on 3 pion sub-channel under construction obtained
+C J3PI=1 means 3 prong 
+C J3PI=2 means 1 prong
+C to be initialized in routine DPHSAA of tauola.f
+      COMMON /CHANOPT/ J3PI
+      INTEGER          J3PI
+      J3PI=JJ
+      end
+     
+      SUBROUTINE CH3PIGET(JJ)
+C information on 3 pion sub-channel under construction obtained
+C J3PI=1 means 3 prong 
+C J3PI=2 means 1 prong
+C to be initialized in routine DPHSAA of tauola.f
+      COMMON /CHANOPT/ J3PI
+      INTEGER          J3PI
+      IF (J3PI.EQ.1.OR.J3PI.EQ.2) THEN
+        JJ=J3PI
+      ELSE
+       write(*,*) 'FROM value_parameter.f CH3PIGET, wrong J3PI=',J3PI
+       stop
+      ENDIF
+      end
+
+      SUBROUTINE GETFF2PIRHO(JJ)
+      IMPLICIT NONE
+      include '../parameter.inc'
+      INTEGER JJ
+      JJ = FF2PIRHO
+      END
+
+      SUBROUTINE OLACHNL(SIGN)
+C provides sign of tau, to be used in CP dependent parts of current.
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+      INTEGER            JAK1,JAK2,JAKP,JAKM,KTOM
+      COMMON / IDFC  / IDFF
+      INTEGER KTO
+      REAL    SIGN
+      IF     (KTOM.EQ.1.OR.KTOM.EQ.-1) THEN
+        SIGN= IDFF/ABS(IDFF)
+      ELSEIF (KTOM.EQ.2) THEN
+        SIGN=-IDFF/ABS(IDFF)
+      ELSE
+        PRINT *, 'STOP IN OLACHNL: KTOM=',KTOM
+        STOP
+      ENDIF
+      END
+
+      FUNCTION COEFrr(I,J)
+C clebsh gordan (or so ...)  coefs for 3 scalar final states
+      implicit none
+C TAUOLA RChL COEF(I,J) =  COEFr(I,J)
+      REAL COEFr(1:5,0:7)
+      REAL COEFrr
+      DATA PI /3.141592653589793238462643/
+      REAL PI
+      DATA ICONT /0/
+      INTEGER ICONT
+      INTEGER I,J
+      REAL FPIr
+
+C initialization of FPI matrix defined in ...
+C FPIc is to be used with cleo initialization
+C FPIr is to be used with RChL initialization
+C actual choice is made in ???
+
+
+      DATA  FPIr /92.4E-3/
+
+
+C initialization of COEF matrix defined in ...
+C COEFc is to be used with cleo initialization
+C COEFr is to be used with RChL initialization
+      IF (ICONT.EQ.0) THEN
+       ICONT=1
+C
+C********* COEFr(I,J) *******
+
+       COEFr(1,0)= 1.
+       COEFr(2,0)= -1.
+       COEFr(3,0)= 0.
+       COEFr(4,0)= 1.
+       COEFr(5,0)= 0.
+
+       COEFr(1,1)= 1.
+       COEFr(2,1)= -1.
+       COEFr(3,1)= 0.
+       COEFr(4,1)= 1.
+       COEFr(5,1)= 1.
+C
+       COEFr(1,2)=1.
+       COEFr(2,2)= -1.
+       COEFr(3,2)= 0.0
+       COEFr(4,2)= 1.
+       COEFr(5,2)=1.
+C
+       COEFr(1,3)= 0.
+       COEFr(2,3)= 1.
+       COEFr(3,3)= -1.
+       COEFr(4,3)= 1.
+       COEFr(5,3)= - 1.
+C
+       COEFr(1,4)= 1.0/SQRT(2.)/3.0
+       COEFr(2,4)=-1.0/SQRT(2.)/3.0
+       COEFr(3,4)= 0.0
+       COEFr(4,4)= 0.0
+       COEFr(5,4)= 0.0
+C
+       COEFr(1,5)=-SQRT(2.)/3.0
+       COEFr(2,5)= SQRT(2.)/3.0
+       COEFr(3,5)= 0.0
+       COEFr(4,5)= 0.0
+       COEFr(5,5)=-SQRT(2.)
+C
+       COEFr(1,6)= 1./3.
+       COEFr(2,6)=-2./3.
+       COEFr(3,6)= 2./3.
+       COEFr(4,6)= 0.0
+       COEFr(5,6)=-2.0
+C
+       COEFr(1,7)= 0.0
+       COEFr(2,7)= 0.0
+       COEFr(3,7)= 0.0
+       COEFr(4,7)= 0.0
+       COEFr(5,7)=-SQRT(2.0/3.0)
+      ENDIF
+
+      COEFrr=COEFr(I,J)
+      END
+
+      subroutine rchl_parameters(KAK)
+      implicit none
+C==============================================================================
+C  Initialization, of '../parameter.inc' common block group 
+C 
+C  KAK may be equal to JAK of TAUOLA namespace, but it is not always the case 
+C  Hard-coded  fit parameters:
+C  rho, rhoprime, f2(1275), f0(1186), sigma(made up!)
+C  The value of both the mass and width of resonances are taken 
+C  from  fit to ALEPH data  (ref [1], Set 1) 
+C  References: [1] arXiv: 0911.4436 [hep-ph] D.  Gomez Dumm et al
+C              [2] arXiv: 0911.2640 [hep-ph] D.  Gomez Dumm et al. 
+C              [3] P Roig, talk PhiPsi2011, Novosibirsk
+C              [4] arXiv:0807.4883 [hep-ph] Diogo R. Boito et al.
+C              [5] arXiv:0803.1786 [hep-ph] M. Jamin et al.
+C  WARNING:    some of parameters require RERUN of da1wid_tot_rho1_gauss.f
+C              pretabulating Q dependent a1 width,
+C              directory RChL-currents/tabler/a1
+C==============================================================================
+      include '../parameter.inc'
+      INTEGER KAK
+      DATA IWARM/0/
+      INTEGER IWARM
+      INTEGER          J3PI
+      COMMON /CHANOPT/ J3PI
+
+         IF(KAK.EQ.4) THEN  
+C  /MASS_RES/; resonances parameters initialization: 
+C                           ! at present only for two pion mode non-default 
+c                           ! values are used:
+      mro = 0.77554d0
+      mrho1 = 1.453d0
+      grho1 = 0.50155D0
+c   /PAR_RHOPRIME/; parameters of rho' and rho'' 
+C                   used for 2 pion form factor, reference [3]
+      COEF_GA =  0.14199D0    
+      COEF_DE = -0.12623D0    
+      phi_1   = -0.17377D0 
+      phi_2   =  0.27632D0  
+      grho2   =  0.41786D0  
+      mrho2   =  1.8105d0
+         ELSE IF(KAK.EQ.5) THEN 
+      MRO   = 0.771849d0      !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MRHO1 = 1.35d0     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      GRHO1 = 0.448379d0 !0.473287d0       !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+
+      ELSE
+      MRO   = 0.775     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MRHO1 = 1.465     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      GRHO1 = 0.4       !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+
+c   /PAR_RHOPRIME/; parameters of rho' and rho'' 
+C                   used for 2 kaon form factor, reference [3]
+c                   FOR THE MOMENT THEIR NUMERICAL VALUES COINCIDE WITH
+c                   ONES FOR THE TWO PION MODE !!!!
+      COEF_GA =  0.14199D0    
+      COEF_DE = -0.12623D0    
+      phi_1   = -0.17377D0 
+      phi_2   =  0.27632D0  
+      grho2   =  0.41786D0  
+      mrho2   =  1.8105d0
+         ENDIF
+
+
+        IF(KAK.EQ.70)  THEN    ! non default values to be used
+                               ! for KPI MODE NO FSR INTERACTION
+c   /PAR_KPI/; parameters for Kpi mode, reference [4], table 4, row2
+      MKST        = 0.943d0
+      MKSTPR      = 1.374D0
+      GAMMA_KST   = 0.06672d0  
+      GAMMA_KSTPR = 0.240d0
+      GAMMA_RCHT  =-0.039d0
+        ELSE IF(KAK.EQ.71)  THEN     ! non default values to be used 
+                                     ! for KPI MODE WITH FSR INTERACTION
+c   parameters for Kpi mode, reference [5]
+      MKST = 0.8953d0
+      GAMMA_KST = 0.0475d0
+      MKSTPR = 1.307d0
+      GAMMA_KSTPR = 0.206d0
+      GAMMA_RCHT = -0.043d0
+        ELSE
+C   /MASS_SCAL/; stable particles - final scalars 
+      Mksp  = 0.89166d0   !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      Mks0  = 0.89610d0   !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MKST = (Mksp +Mks0)/2.
+      MKSTPR = 1.374d0    !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      GAMMA_KST   = 0.06672  
+      GAMMA_KSTPR = 0.240
+      GAMMA_RCHT  = -0.043 !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+        ENDIF
+
+C  /RCHT_3PI/; model parameters; their value are from fit,
+c             reference [1], set 1
+C              CHANGE OF THEIR VALUES REQUIRES 
+C              RERUN /tabler/a1/da1wid_tot_rho1_gauss.f
+      IF(KAK.EQ.5) THEN
+      FPI_RPT  = 0.091337d0
+      FV_RPT   = 0.168652d0   
+      FA_RPT   = 0.131425d0                 
+      BETA_RHO = -0.318551d0 
+      ELSE
+      FPI_RPT  = 0.0924
+      FV_RPT   = 0.18  
+      FA_RPT   = 0.149                
+      BETA_RHO =  -0.25  
+      ENDIF
+      FK_RPT = FPI_RPT*1.198d0  
+      GV_RPT   = FPI_RPT*FPI_RPT/FV_RPT
+
+c$$$c   It has to be used for a new parametrization of rho1 for 3pions, 
+C$$$c   that is not checked yet
+c$$$c        IF(KAK.EQ.5)  THEN  ! high energy behaviour imposes these relations   
+c$$$c      GV_RPT   = 0.066  
+c$$$c      FV1_RPT = 0.18D0
+c$$$c      GV1_RPT = (FPI_RPT*FPI_RPT- FV_RPT*GV_RPT)/FV1_RPT
+c$$$c        ELSE
+c$$$c      GV_RPT   = FPI_RPT*FPI_RPT/FV_RPT
+c$$$c      ENDIF
+
+c   /SCAL_3PI/; parameters of sigma meson for 3 pion mode
+C* Parameteres for the sigma contribution, using BW for sigma
+      IF(KAK.EQ.5)  THEN
+          IF (J3PI.EQ.1) THEN
+      alpsig = -8.795938d0 
+      betasig = 9.763701d0 
+      gamsig =  1.264263d0 
+      delsig =  0.656762d0 
+      rsigma =  1.866913d0 
+           ELSE IF (J3PI.EQ.2) THEN
+      alpsig = 1.139486d0*0.63d0
+      betasig = 1.139486d0*0.63d0
+      gamsig =  0.889769d0*0.63d0
+      delsig =  0.889769d0*0.63d0 
+      rsigma =  0.000013d0
+           ENDIF
+       ENDIF
+
+C  /MASS_RES/ 
+      IF(KAK.EQ.5)  THEN
+      MMA1  = 1.091865d0      !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+          IF (J3PI.EQ.1) THEN
+      MSIG  = 0.487512d0 
+      GSIG  = 0.70d0     
+          ELSE IF(J3PI.EQ.2) THEN
+      MSIG  = 0.55d0 
+      GSIG  = 0.7d0 
+          ENDIF
+      ELSE
+      MMA1 = 1.12
+      MSIG = 0.475
+      GSIG = 0.550
+      ENDIF
+        call rchl_REparam(0,IWARM,KAK)     
+         IF (IWARM.EQ.1) RETURN  ! parameters below do not need 
+         IWARM=1                 ! re-initialization
+
+C  /MASS_RES/ 
+      GRO   = 0.149d0     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MF2   = 1.275d0
+      GF2   = 0.185d0
+      MF0   = 1.186d0
+      GF0   = 0.350d0
+      MSG   = 0.860d0
+      GSG   = 0.880d0
+      MPHI  = 1.019d0     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      GPHI  = 0.0042d0    !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MOM   = 0.781940d0  !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      GOM   = 0.00843d0   !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+
+C    /RES_MIXING_RCHT/; a parameter defines w-phi angle mixing
+      THETA = 35.*PI/180. 
+
+C    /FF0SCKPI/ a parameter normalized FFSC_KPI 
+      F00 = 0.972
+
+
+
+C   /MASS_SCAL/; stable particles - final scalars 
+C              CHANGE OF THEIR VALUES (useful for some tests) REQUIRES, 
+C              RERUN /tabler/a1/da1wid_tot_rho1_gauss.f
+
+      MPIZ    = 0.1349766d0           !PKORB(1,7)    ! NEUTRAL PION MASS
+      MPIC    = 0.13957018d0          !PKORB(1,8)    ! CHARGED PION MASS
+      MMPI_AV = (MPIZ+2.*MPIC)/3.d0
+      MKZ     = 0.497648d0            !PKORB(1,12)    ! NEUTRAL KAON MASS
+      MKC     = 0.493677d0            !PKORB(1,11)    ! CHARGED KAON MASS
+      MMK     = (MKC+MKZ)/2.d0
+      MTAU    = 1.777
+      MNUTA   = 0.001
+      META    = 0.547d0
+
+
+c   /PAR_KKPI/; parameters to describe KKpi modes, reference [2]
+C              CHANGE OF THEIR VALUES REQUIRES 
+C              RERUN /tabler/a1/da1wid_tot_rho1_gauss.f
+
+      G2    =  mro/(192.*pi*pi*sqrt(2.)*FV_RPT)*3.
+      G13   = -2.*g2 
+      G4    = -0.72
+      G5    = -0.6-2.*g4 
+      C125  =  0.
+      C1256 = -3/96./pi**2*FV_RPT*MRO/SQRT(2.)/FPI_RPT**2 
+      C1235 =  0.
+      C4    = -0.07
+      D123  =  0.05 
+      D3    = -MRO**2/(64.*PI*PI*FPI_RPT**2) 
+
+
+c   /PAR_KPI/; parameters to describe Kpi mode, reference [4]
+      Ht0 = -1.2400398216503017D-2
+C     Ht0 = !!!!! TO ADD A FORMULAE FOR Ht0 (Jamin's email) !!!!!
+      lap_KPI = 24.66e-3
+      lapp_KPI = 11.99e-4
+      c1_KPI = lap_KPI/mpic**2
+      c2_KPI = (lapp_KPI - lap_kpi**2)/2.d0/mpic**4
+
+c /KPISC_EM/; parameters for Kpi scalar FF from 
+c  http://arxiv.org/pdf/1103.4855.pdf
+      lnC = 0.20193d0
+      lambda0 = 0.013139d0
+
+c   /SCAL_3PI/; parameters of sigma meson for 3 pion mode
+      a00_3piscal = 0.220
+      b00_3piscal = 0.268/mmpi_av**2
+      c00_3piscal = -0.0139/mmpi_av**4
+      d00_3piscal = -0.00139/mmpi_av**6
+      x00_3piscal = 36.77*mmpi_av**2
+      a02_3piscal = -0.0444
+      b02_3piscal = -0.0857/mmpi_av**2
+      c02_3piscal = -0.00221/mmpi_av**4
+      d02_3piscal = -0.000129/mmpi_av**6
+      x02_3piscal = -21.62*mmpi_av**2
+      MMF0 = 0.441
+
+c /SCAL_3PI/; parameters for the scalar part 3 pion modes
+c   Pablo private
+      ALPHA0_3PI = 1.
+      ALPHA1_3PI = 1.
+      GAMMA0_3PI = 1.
+      GAMMA1_3PI = 1.
+
+
+C FFVEC: dipswitch for Final State interaction in two scalar modes
+C     with FSI (default FFVEC =1) and
+C     without FSI (FFVEC =0)
+
+      FFVEC = 1
+
+C  FFKPIVEC : parameter to choose the parametrization for 
+C             vector Kpi form factor with FSI effects
+C    FFKPIVEC = 0 parametrization Eqs.(17),(18) of [4]
+C    FFKPIVEC = 1 parametrization Eq.(5) of [5]
+C    FFKPIVEC = 2 parmetrization [4], total result
+      FFKPIVEC = 2
+C  FFKPISCAL : parameter to choose the parametrization for 
+C             scalar Kpi form factor with FSI effects
+C  FFKPISCAL = 0 no scalar contribution
+C  FFKPISCAL = 1 parametrization of Mathias Jamin,adopted his private code
+C  FFKPISCAL = 2 parametrization of Emilie Passerman,
+C               adopted her private code []
+      FFKPISCAL = 1 
+
+C FFKKVEC: dipswitch for K0K- mode
+C     with rho' and rho'' (FFKKVEC =1) and
+C     without rho' and rho''  (default FFKKVEC =0)
+      FFKKVEC = 0
+
+C FF3PISCAL: dipswitch for the scalar contribution for 3 pion modes
+C     with the scalar contribution ( default FF3PISCAL = 2) 
+c     FF3PISCAL = 2 BW parametrization for sigma meson
+c     FF3PISCAL = 1 simplified RCHT results
+C     FF3PISCAL =0  no sigma contribution
+      FF3PISCAL = 2
+
+C  Implemetation of another parametrization rho1, not checked yet by tests 
+C FF3PIRHOPR: dipswitch for the parametrization for rho' contribution 
+C     For 3 pion modes
+C     general parametrization  ( default FF3RHOPR =1) and
+C     simplified  (FF3PIRHOPR =0)
+      FF3PIRHOPR = 0
+
+
+C FF2PIRHO: dipswitch for the two pion form factor (default FF2PIRHO = 1) 
+C FF2PIRHO =1   RChL parametrization 
+C FF2PIRHO = 2  Belle parametrization, 
+C               all parameters par (1...11) of fit are free 
+C FF2PIRHO = 3  Belle parametrization, 
+C               parameters of fit are free 
+C               except for fixed par(1)=F_pi(0)=1
+      FF2PIRHO =2
+
+
+C FCOUL: dipswitch for the Coulomb interaction 
+C FCOUL = 1  with 
+C FCOUL = 0  without
+      FCOUL = 0
+
+      call rchl_REparam(1,IWARM,KAK)
+      return
+      end
+
+      subroutine rchl_REparam(IMODE,IWARM,KAK)
+      include '../parameter.inc'
+      common / PARAMS / P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,IUSE
+      INTEGER                                                                  IUSE
+      DOUBLE PRECISION  P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16
+      DATA IUSE /0/
+
+      IF(IUSE.EQ.0) RETURN
+      
+      IF (IMODE.EQ.-1) THEN
+        IWARM=IWARM
+      ELSE
+
+C FF3PISCAL: dipswitch for the scalar contribution for 3 pion modes
+C     with the scalar contribution ( default FF3PISCAL = 2) 
+c     FF3PISCAL = 2 BW parametrization for sigma meson
+c     FF3PISCAL = 1 simplified RCHT results
+C     FF3PISCAL =0  no sigma contribution
+c      FF3PISCAL = 2
+
+C     CANDIDATES FOR PARAMETERS TO FIT with default values
+C* Parameteres for the sigma contribution, using BW for sigma
+      alpsig  = P1
+      betasig = P2
+      gamsig  = P3
+      delsig  = P4
+      rsigma  = P5
+
+
+      MRO   = P6     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MRHO1 = P7     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      GRHO1 = P8       !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+C  /MASS_RES/ 
+      GRO   = P9     !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MMA1  = P10    !CHANGE REQUIRES RERUN da1wid_tot_rho1_gauss.f
+      MSIG  = P11
+      GSIG  = P12
+
+C  /RCHT_3PI/; model parameters; their value are from fit,
+c             reference [1], set 1
+C              CHANGE OF THEIR VALUES REQUIRES 
+C              RERUN /tabler/a1/da1wid_tot_rho1_gauss.f
+      FPI_RPT  = P13
+      FV_RPT   = P14
+      FA_RPT   = P15
+      BETA_RHO = P16
+      FK_RPT = FPI_RPT*1.198d0  
+      GV_RPT   = FPI_RPT*FPI_RPT/FV_RPT
+
+      ENDIF
+      return
+      end
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fit.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fit.f
new file mode 100644 (file)
index 0000000..2012ad4
--- /dev/null
@@ -0,0 +1,110 @@
+      SUBROUTINE IFGFACT(IKEY,ITYPE,IINIT)
+C stores and manages options for   wid_a1_fit
+C ITYPE=0,1,2 means zero value, from full table, from GFACT plus table for KKpi
+C IINIT is for GFACT, whether it  has to reinitialize itself or just be used
+C IKEY 0,1,2 means  initialization  use by GFUNCT (reini) other use
+C IKEY -1 mieans initialization with recalculation og GFUNCT constats
+
+      DATA ITYPE0,IINIT0 /1,0/
+      SAVE ITYPE0,IINIT0
+
+      IF    (IKEY.EQ.-1) THEN
+        ITYPE0=ITYPE
+        IINIT0=IINIT
+      ELSEIF(IKEY.EQ.0) THEN
+        ITYPE0=ITYPE
+      ELSEIF(IKEY.EQ.1) THEN
+        IINIT=IINIT0
+        IINIT0=1
+      ELSEIF(IKEY.EQ.2) THEN
+        ITYPE= ITYPE0
+      ENDIF
+      END
+
+      real function wid_a1_fit(qq)
+      implicit none
+      real                     qq
+C..............................................................
+C.    Output:    a1 width  as function of qq (formula (29) of ref [1]) 
+C.               but to speed up execution linear interpolation 
+C.               from numerical table is used. From read in table 
+C.               linear interpolation (extrapolation) is used.
+C.    Input:     qq  [GeV**2]
+C.               table wida1_qq_tot_table.txt prepared in 
+C.               ./a1-tabler directory
+C.    References:[1] arXiv:0911.4436 (hep-ph) D.Gomez Dumm et al.(tau ->3pi nu)
+C.    Called    : files f3pi_rcht.f  fkkpi.f fkk0pi0.f
+C                       ./demo-standalone/tautestroman.f 
+C..............................................................
+
+      integer Nq
+      PARAMETER (Nq=1001)   
+      integer ik
+      common /a1_width/ qmax,qmin,qk_min,    w_qmin,    del_qq
+      real*8            qmax,qmin,qk_min(Nq),w_qmin(Nq),del_qq
+      integer kq
+      character path*120 
+
+      real*8 aq,bq,qk_max,w_qmax
+      real*8 xqq,GFACT
+      real wid_a1_fitKKpi
+
+
+      INTEGER IFIRST,ITYPE
+      DATA    IFIRST,ITYPE /0,1/
+      INTEGER  IMODE,IINIT
+!      DATA IMODE /0/
+
+
+C. READING TABLE AND INITIALIZATION
+C. ================================
+
+      IF (IFIRST.EQ.0) THEN
+        IFIRST = 1
+C Initialization from automatically created routine
+        call InitA1TAB(qk_min    ,w_qmin    )
+        qmax = qk_min(Nq) 
+        qmin = qk_min(1)  
+        del_qq = (qmax-qmin)/float(Nq-1)
+      ENDIF
+
+      CALL IFGFACT(2,ITYPE,IINIT)
+C ALTERNATIVE CALCULATIONS FOR SPECIAL PURPOSES
+C. ============================================
+      IF (ITYPE.EQ.0) THEN
+       wid_a1_fit=0
+       RETURN
+      ELSEIF (ITYPE.EQ.2) THEN
+       xqq=qq
+       wid_a1_fit=wid_a1_fitKKpi(qq)+GFACT(xqq)
+!       write(*,*) 'uwaga', wid_a1_fit, wid_a1_fitKKpi(qq)
+       RETURN
+      ENDIF
+
+
+C. INTEPOLATION, for extrapolation values at ends are used
+C. =======================================================
+      if(qq.gt.qmin.and.qq.le.qmax) then
+        kq = (qq-qmin)/del_qq
+        kq = kq +1
+
+        qk_max = qk_min(kq+1)
+        w_qmax = w_qmin(kq+1)
+
+        aq = (w_qmax-w_qmin(kq))/(qk_max-qk_min(kq))
+        bq = (w_qmax*qk_min(kq) -w_qmin(kq)*qk_max)
+     $      /(qk_min(kq)-qk_max)
+        wid_a1_fit = aq*qq+bq
+
+      elseif(qq.ge.qmax) then               ! above maximun
+        wid_a1_fit = w_qmin(Nq) 
+
+      else                                  ! below minimum     
+        wid_a1_fit = w_qmin(1)
+
+      endif
+
+      return 
+      end
+
+
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fitKKpi.f b/TEvtGen/Tauola/tauola-fortran/new-currents/RChL-currents/rcht_common/wid_a1_fitKKpi.f
new file mode 100644 (file)
index 0000000..03ae1e7
--- /dev/null
@@ -0,0 +1,69 @@
+      real function wid_a1_fitKKpi(qq)
+      implicit none
+      real                     qq
+C..............................................................
+C.    Output:    KKpi part ofa1 width  as function of qq 
+C.               but to speed up execution linear interpolation 
+C.               from numerical table is used. From read in table 
+C.               linear interpolation (extrapolation) is used.
+C.    Input:     qq  [GeV**2]
+C..............................................................
+
+      integer Nq
+      PARAMETER (Nq=1001)   
+      integer ik
+      real*8 qmax,qmin,qk_min(Nq),w_qmin(Nq),del_qq
+      integer kq
+      character path*120 
+
+      real*8 aq,bq,qk_max,w_qmax
+
+      INTEGER IFIRST
+      DATA IFIRST/0/
+      INTEGER  IMODE
+!      DATA IMODE /0/
+      COMMON   /IMODE/  IMODE      ! 0 is for calculation of G , 1 is for spectra, 2 is for use of G
+
+      IF (IMODE.EQ.0) THEN
+       wid_a1_fitKKpi=0
+      ENDIF
+
+C. READING TABLE AND INITIALIZATION
+C. ================================
+
+      IF (IFIRST.EQ.0) THEN
+        IFIRST = 1
+C Initialization from automatically created routine
+        call InitA1TABKKpi(qk_min    ,w_qmin    )
+        qmax = qk_min(Nq) 
+        qmin = qk_min(1)  
+        del_qq = (qmax-qmin)/float(Nq-1)
+      ENDIF
+
+
+C. INTEPOLATION, for extrapolation values at ends are used
+C. =======================================================
+      if(qq.gt.qmin.and.qq.le.qmax) then
+        kq = (qq-qmin)/del_qq
+        kq = kq +1
+
+        qk_max = qk_min(kq+1)
+        w_qmax = w_qmin(kq+1)
+
+        aq = (w_qmax-w_qmin(kq))/(qk_max-qk_min(kq))
+        bq = (w_qmax*qk_min(kq) -w_qmin(kq)*qk_max)
+     $      /(qk_min(kq)-qk_max)
+        wid_a1_fitKKpi = aq*qq+bq
+
+      elseif(qq.ge.qmax) then               ! above maximun
+        wid_a1_fitKKpi = w_qmin(Nq) 
+
+      else                                  ! below minimum     
+        wid_a1_fitKKpi = w_qmin(1)
+
+      endif
+
+      return 
+      end
+
+
diff --git a/TEvtGen/Tauola/tauola-fortran/new-currents/other-currents/frho_pi_belle.f b/TEvtGen/Tauola/tauola-fortran/new-currents/other-currents/frho_pi_belle.f
new file mode 100644 (file)
index 0000000..a8d60af
--- /dev/null
@@ -0,0 +1,262 @@
+      Complex*16 FUNCTION FPIBEL(W,flpar) 
+C**************************************************************************** 
+C                       PION FORM FACTOR FROM BELLE 
+C
+C            Rho(770)+rho(1450)+rho(1700) model is used as in:
+C             M.Fujikawa et al., Phys.Rev.D 78 (2008) 072006
+C                          -------------------
+C       * flpar: = 0 - (all free) fit result for par(1...11) 
+C                = 1 - (par(1)=F_pi(0)=1-fixed) fit result for par(2...11) 
+C
+C       * parameter : par(1)=overall norm. factor (=F_pi(0)) 
+C                   : par(2)=rho(770) mass
+C                   : par(3)=rho(770) width 
+C                   : par(4)=rho(1450) mass
+C                   : par(5)=rho(1450) width 
+C                   : par(6)=rho(1450) admixture abs. value (|beta|)
+C                   : par(7)=rho(1450) admixture phase (phi=arg(beta))
+C                   : par(8)=rho(1700) mass
+C                   : par(9)=rho(1700) width 
+C                   : par(10)=rho(1700) admixture abs. value (|gamma|)
+C                   : par(11)=rho(1700) admixture phase (phi3=arg(gamma)) 
+C
+C       * x:=s=(M_pipi0)^2=W^2 
+C
+C       * Notice: the following code was extracted (and checked) directly 
+C                 from the Belle fit function with minor cosmetic changes 
+C                 (this is internal comment of Belle)
+C
+C       * Notice: the following code was extracted (and checked) directly 
+C                 from  tauola_with_belle_fpi.F sent by D. Epifanov and
+C                 it is an identical copy of 
+C                 Complex*16 FUNCTION FPIBEL(W,flpar) 
+C                 used in tauola_with_belle_fpi.F
+C
+C       * Called: CURR_PIPI0  if (FF2PIRHO = 2  or FF2PIRHO =3) 
+C                 in ../RChL-currents/value_parameter.f
+C                 FF2PIRHO = 2 is for flpar = 0 
+C                 FF2PIRHO = 3 is for flpar = 1  
+C
+C**************************************************************************** 
+      implicit none 
+      integer flpar 
+      real W 
+      real*8 x,par(11),pi,pimas,pi0mas,taumas
+      real*8 beta,berho1,berho2,berho3 
+      real*8 ps,prho1,prho2,prho3
+      real*8 gamma1,gamma2,gamma3 
+      real*8 hs,h1,h2,h3,dhds1,dhds2,dhds3 
+      real*8 d1,d2,d3,fs1,fs2,fs3 
+      real*8 a1,b1,c1,bw_re1,bw_im1
+      real*8 a2,b2,c2,bw_re2,bw_im2 
+      real*8 a3,b3,c3,bw_re3,bw_im3 
+      real*8 sinphi,cosphi,sinphi3,cosphi3 
+      complex*16 mbw1,mbw2,mbw3,mff,mephi,mephi3
+      parameter(pi=3.141592653589)
+
+      x=dble(W**2)
+C------------- PARAMETERS --------------------
+C     Particle mass (unit: GeV)
+
+      pimas  = 0.1395702
+      pi0mas = 0.13498
+      taumas = 1.77699
+
+C---------------------------------------------
+C Opt. par. from Table VII of PRD78 (2008) 072006
+
+      if(flpar.eq.0) then 
+         par(1) = 1.02 
+         par(2) = 0.7749 
+         par(3) = 0.1486 
+         par(4) = 1.428 
+         par(5) = 0.413 
+         par(6) = 0.13 
+         par(7) = 197 
+         par(8) = 1.694 
+         par(9) = 0.135 
+         par(10)= 0.028 
+         par(11)= -3 
+      else 
+         par(1) = 1.0 
+         par(2) = 0.7746 
+         par(3) = 0.1481 
+         par(4) = 1.446 
+         par(5) = 0.434 
+         par(6) = 0.15 
+         par(7) = 202 
+         par(8) = 1.728 
+         par(9) = 0.164 
+         par(10)= 0.037 
+         par(11)= 24 
+      endif   
+
+C========= Beta (s, rho(770), rho(1450), rho(1700)) ================== 
+
+       beta  =sqrt( (1.0 - (pimas - pi0mas)**2/x)
+     +             *(1.0 - (pimas + pi0mas)**2/x) )
+
+c      ----- rho(770) -----
+       berho1=sqrt( ( 1.0 - (pimas - pi0mas)**2/(par(2)*par(2)) )
+     +             *( 1.0 - (pimas + pi0mas)**2/(par(2)*par(2)) ) )
+
+c      ----- rho(1450) -----
+       berho2=sqrt( ( 1.0 - (pimas - pi0mas)**2/(par(4)*par(4)) )
+     +             *( 1.0 - (pimas + pi0mas)**2/(par(4)*par(4)) ) )
+
+c      ----- rho(1700) -----
+       berho3=sqrt( ( 1.0 - (pimas - pi0mas)**2/(par(8)*par(8)) )
+     +             *( 1.0 - (pimas + pi0mas)**2/(par(8)*par(8)) ) )
+
+C========= Momentum (s, rho(770), rho(1450), rho(1700)) ==============
+C
+C       ps    : momentum of pi at s
+C       prho1 : momentum of pi at s=rho(770)**2
+C       prho2 : momentum of pi at s=rho(1450)**2
+C       prho3 : momentum of pi at s=rho(1700)**2
+
+       ps  = 0.5 * sqrt(x) * beta
+c      ----- rho(770) -----
+       prho1 = 0.5* par(2) * berho1
+c      ----- rho(1450) -----
+       prho2 = 0.5* par(4) * berho2
+c      ----- rho(1700) -----
+       prho3 = 0.5* par(8) * berho3
+
+C========= Width (rho(770), rho(1450), rho(1700)) ====================
+
+C      ----- rho(770) -----
+       gamma1 = par(3) * ( par(2)*par(2)/x ) * (ps/prho1)**3
+C      ----- rho(1450) -----
+       gamma2 = par(5) * ( par(4)*par(4)/x ) * (ps/prho2)**3
+C      ----- rho(1700) -----
+       gamma3 = par(9) * ( par(8)*par(8)/x ) * (ps/prho3)**3
+
+C============== h(rho(770), rho(1450), rho(1700)) ====================
+C
+C       hs : h(s)...s(s=x)
+C       h1 : h(s) for s=rho(770)**2
+C       h2 : h(s) for s=rho(1450)**2
+C       h3 : h(s) for s=rho(1700)**2
+
+        hs = (2.0/pi)*(ps/sqrt(x))*
+     +       log( (sqrt(x) + 2.0*ps)/(2.0*pimas) )
+C      ----- rho(770) ----- 
+        h1 = (2.0/pi)*(prho1/par(2))*
+     +       log( (par(2) + 2.0*prho1)/(2.0*pimas) )
+C      ----- rho(1450) ----- 
+        h2 = (2.0/pi)*(prho2/par(4))*
+     +       log( (par(4) + 2.0*prho2)/(2.0*pimas) )
+C      ----- rho(1700) ----- 
+        h3 = (2.0/pi)*(prho3/par(8))*
+     +       log( (par(8) + 2.0*prho3)/(2.0*pimas) )
+
+C============ dhds(rho(770), rho(1450), rho(1700)) ===================
+C
+C       dhds = dh/ds = h(M_rho)[1/(8*p(M_rho)^2) - 1/(2M_rho^2)
+C                                              + 1/(2pi*M_rho^2)
+C       dhds1 : dh/ds for M_rho=rho(770)
+C       dhds2 : dh/ds for M_rho=rho(1450) 
+C       dhds3 : dh/ds for M_rho=rho(1700)
+
+C      ----- rho(770) ----- 
+        dhds1 = h1*( 1.0/(8.0*prho1**2) - 1.0/(2.0*par(2)**2) )
+     +                       +  1.0/(2.0*pi*par(2)**2)
+C      ----- rho(1450) ----- 
+        dhds2 = h2*( 1.0/(8.0*prho2**2) - 1.0/(2.0*par(4)**2) )
+     +                       +  1.0/(2.0*pi*par(4)**2)
+C      ----- rho(1700) ----- 
+        dhds3 = h3*( 1.0/(8.0*prho3**2) - 1.0/(2.0*par(8)**2) )
+     +                       +  1.0/(2.0*pi*par(8)**2)
+
+C============ d(rho(770), rho(1450), rho(1700)) ====================== 
+C
+C       d = 3/pi * (m_pi^2/p(M_rho)^2) *
+C            ln {(M_rho+2*p(M_rho))/2M_pi} + M_rho/(2pi*p(M_rho))   
+C                               - (m_pi^2 * M_rho)/(pi*p(M_rho)^3)       
+C       d1 : d for M_rho=rho(770)
+C       d2 : d for M_rho=rho(1450) 
+C       d2 : d for M_rho=rho(1700) 
+
+C      ----- rho(770) ----- 
+        d1 = (3.0/pi)*(pimas**2/prho1**2) 
+     +         * log((par(2) + 2.0*prho1)/(2.0*pimas))
+     +         + par(2)/(2.0*pi*prho1) 
+     +         - ((pimas**2)*par(2))/(pi*prho1**3)
+C      ----- rho(1450) ----- 
+        d2 = (3.0/pi)*(pimas**2/prho2**2) 
+     +         * log((par(4) + 2.0*prho2)/(2.0*pimas))
+     +         + par(4)/(2.0*pi*prho2) 
+     +         - ((pimas**2)*par(4))/(pi*prho2**3)
+C      ----- rho(1700) ----- 
+        d3 = (3.0/pi)*(pimas**2/prho3**2) 
+     +         * log((par(8) + 2.0*prho3)/(2.0*pimas)) 
+     +         + par(8)/(2.0*pi*prho3) 
+     +         - ((pimas**2)*par(8))/(pi*prho3**3)
+
+C================ f(s) (rho(770), rho(1450), rho(1700) ) ==========
+C 
+C       f(s) = gamma-rho * M_rhp**2/p(M_rho)[ p(s)^2(h(s)-h(M_rho)
+C                                 + (M_rho^2 -s)p(M_rho)^2 * dh/ds]
+C       fs1 : f(s) for M_rho=rho(770)
+C       fs2 : f(s) for M_rho=rho(1450) 
+C       fs3 : f(s) for M_rho=rho(1700) 
+C  
+C      ----- rho(770) ----- 
+        fs1 = par(3) * (par(2)**2/prho1**3) *
+     +        ( ps**2 *(hs - h1) + (par(2)**2 -x)*prho1**2 * dhds1 )
+C      ----- rho(1450) ----- 
+        fs2 = par(5) * (par(4)**2/prho2**3) *
+     +        ( ps**2 *(hs - h2) + (par(4)**2 -x)*prho2**2 * dhds2 )
+C      ----- rho(1700) ----- 
+        fs3 = par(9) * (par(8)**2/prho3**3) *
+     +        ( ps**2 *(hs - h3) + (par(8)**2 -x)*prho3**2 * dhds3 )
+
+C====== BW form G&S model (rho(770) + rho(1450) + rho(1700)) ====== 
+C    bw_re - real part ; bw_im - imaginary part 
+
+C      ----- rho(770) -----
+       a1=par(2)*par(2) - x + fs1
+       b1=sqrt(x)*gamma1
+       c1=par(2)*par(2) + d1*par(2)*par(3)
+
+       bw_re1= (a1*c1)/(a1**2 + b1**2) 
+       bw_im1= (b1*c1)/(a1**2 + b1**2) 
+       mbw1=dcmplx(bw_re1,bw_im1)
+
+c      ----- rho(1450) -----
+       a2=par(4)*par(4) - x + fs2
+       b2=sqrt(x)*gamma2
+       c2=par(4)*par(4)+ d2*par(4)*par(5)
+
+       bw_re2= (a2*c2)/(a2**2 + b2**2) 
+       bw_im2= (b2*c2)/(a2**2 + b2**2) 
+       mbw2=dcmplx(bw_re2,bw_im2)
+
+c      ----- rho(1700) -----
+       a3=par(8)*par(8) - x + fs3
+       b3=sqrt(x)*gamma3
+       c3=par(8)*par(8)+ d3*par(8)*par(9)
+
+       bw_re3= (a3*c3)/(a3**2 + b3**2) 
+       bw_im3= (b3*c3)/(a3**2 + b3**2) 
+       mbw3=dcmplx(bw_re3,bw_im3)
+
+C====== admixtures of rho(1450) and rho(1700) ====== 
+
+C --------- exp(i*arg(beta)) ---------- 
+       sinphi=sin(par(7)*(pi/180.0))  ! use degree
+       cosphi=cos(par(7)*(pi/180.0))  ! use degree
+       mephi=dcmplx(cosphi,sinphi)
+
+C --------- exp(i*arg(gamma)) ---------
+       sinphi3=sin(par(11)*(pi/180.0))  ! use degree
+       cosphi3=cos(par(11)*(pi/180.0))  ! use degree
+       mephi3=dcmplx(cosphi3,sinphi3)
+
+C================= Form factor ===================== 
+
+       mff = 1.0/(1.0+par(6)*mephi+par(10)*mephi3) 
+       FPIBEL=par(1)*mff*(mbw1+par(6)*mephi*mbw2+par(10)*mephi3*mbw3) 
+      RETURN
+      END
diff --git a/TEvtGen/Tauola/tauola-fortran/pkorb.f b/TEvtGen/Tauola/tauola-fortran/pkorb.f
new file mode 100644 (file)
index 0000000..c9bde0a
--- /dev/null
@@ -0,0 +1,288 @@
+
+
+      REAL FUNCTION PKORB(IF1,IF2)
+**********************************************************************
+*
+* This function returns a real value
+* needed in the 1 version of KORALB/TAUOLA
+* corresponding to a mass, width, mixing amplitude, or branching fraction
+* depending on whether IF1 = 1, 2, 3, 4 respectively.
+* The idea is to make minimal mods to the 3-rd party KORALB/TAUOLA code,
+* so this function supplies all the 1-specific parameters.
+*
+*  Alan Weinstein, ajw, 11/97
+**********************************************************************
+
+* Arguments:
+      INTEGER IF1   ! input, flag for type of data required
+      INTEGER IF2   ! input, flag for type of data required
+
+* MC info
+*#include "seq/clinc/qqpars.inc"
+*#include "seq/clinc/qqprop.inc"
+*#include "qqlib/seq/qqbrat.inc"
+
+      INTEGER            JAK1,JAK2,JAKP,JAKM,KTOM
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+      REAL*4 RRR(1)
+      REAL PARM(4,100)
+      integer imixpp(300)
+      INTEGER INIT,I,J
+      REAL C1270,C1402,A1270_KSPI,A1270_KRHO,A1402_KSPI,A1402_KRHO
+      REAL CG1,CG2,R,BRA1,BRKS
+      SAVE INIT,PARM
+      DATA INIT/0/
+
+**********************************************************************
+* Initialize return variable:
+      PKORB = 0.
+
+**********************************************************************
+* Initialize:
+      IF (INIT.EQ.0) THEN
+        INIT = 1
+
+C        CALL VZERO(PARM,400)
+        DO I=1,4
+        DO J=1,100
+          PARM(I,J) = 0
+        END DO
+        END DO
+
+C Youd better be using korb.dec, NOT decay.dec!!!!
+C masses (needed in dist/inimas, formf/form*, etc)
+        PARM(1, 1) = 1.777000   ! TAU
+        PARM(1, 2) = 0.         ! NUTA
+        PARM(1, 3) = 0.000511   ! EL
+        PARM(1, 4) = 0.         ! NUEL
+        PARM(1, 5) = 0.105658   ! MU
+        PARM(1, 6) = 0.         ! NUMU
+        PARM(1, 7) = 0.134976   ! PIZ
+        PARM(1, 8) = 0.139570   ! PI+
+        PARM(1, 9) = 0.769900   ! RHO+
+        PARM(1,10) = 1.275000   ! A1+
+        PARM(1,11) = 0.493677   ! K+
+        PARM(1,12) = 0.497670   ! KZ
+        PARM(1,13) = 0.891590   ! K*+
+        PARM(1,14) = 0.781940   ! OMEG
+        PARM(1,15) = 1.370000   ! RHOP+
+        PARM(1,16) = 1.700000   ! K*P+
+        PARM(1,17) = 1.461000   ! A1P+
+        PARM(1,18) = 1.300000   ! PIP+
+        PARM(1,19) = 1.270000   ! K1A+
+        PARM(1,20) = 1.402000   ! K1B+
+        PARM(1,21) = 1.465000   ! RHOPP+
+        PARM(1,22) = 1.700000   ! RHOPPP+
+       
+C widths (needed in dist/inimas, formf/form*, etc)
+        PARM(2, 1) = 0.          ! TAU
+        PARM(2, 2) = 0.          ! NUTA
+        PARM(2, 3) = 0.          ! EL
+        PARM(2, 4) = 0.          ! NUEL
+        PARM(2, 5) = 0.          ! MU
+        PARM(2, 6) = 0.          ! NUMU
+        PARM(2, 7) = 0.          ! PIZ
+        PARM(2, 8) = 0.          ! PI+
+        PARM(2, 9) = 0.1512      ! RHO+
+        PARM(2,10) = 0.700       ! A1+
+        PARM(2,11) = 0.          ! K+
+        PARM(2,12) = 0.          ! KZ
+        PARM(2,13) = 0.0498      ! K*+
+        PARM(2,14) = 0.00843     ! OMEG
+        PARM(2,15) = 0.510       ! RHOP+
+        PARM(2,16) = 0.235       ! K*P+
+        PARM(2,17) = 0.250       ! A1P+
+        PARM(2,18) = 0.400       ! PIP+
+        PARM(2,19) = 0.090       ! K1A+
+        PARM(2,20) = 0.174       ! K1B+
+        PARM(2,21) = 0.310       ! RHOPP+
+        PARM(2,22) = 0.235       ! RHOPPP+
+
+C Now store mixing parameters for 2pi and 4pi FFs 
+C needed in tauola/fpik, tauola/bwigs, formf/form* , formf/curr :
+
+        PARM(3,15) = -0.145
+
+        IMIXPP(205)=1
+        IMIXPP(207)=1
+        IMIXPP(209)=1
+        IMIXPP(211)=1
+        IMIXPP(201)=1
+        IMIXPP(203)=1
+        IMIXPP(213)=1
+        IMIXPP(215)=1
+
+
+        IF (IMIXPP(205).NE.0) PARM(3,15) = -0.110
+        IF (IMIXPP(207).NE.0) PARM(3,16) = -0.038
+        IF (IMIXPP(209).NE.0) PARM(3,17) = 0.00
+        IF (IMIXPP(211).NE.0) PARM(3,18) = 0.00
+        IF (IMIXPP(201).NE.0) PARM(3,19) = 1.0
+        IF (IMIXPP(203).NE.0) PARM(3,20) = 0.8
+        IF (IMIXPP(213).NE.0) PARM(3,21) = -0.110
+        IF (IMIXPP(215).NE.0) PARM(3,22) = -0.110
+
+        PRINT *,' KORB: rho/rhop -> pi-pi0 mixing:'
+        PRINT *,' KORB: rho   =',PARM(1,9) ,PARM(2,9)
+        PRINT *,' KORB: rhop  =',PARM(1,15),PARM(2,15),PARM(3,15)
+        PRINT *,' KORB: K*/K*prime -> Kpi mixing:'
+        PRINT *,' KORB: kstp  =',PARM(1,16),PARM(2,16),PARM(3,16)
+        PRINT *,' KORB: a1/a1prime -> 3pi, KKpi mixing:'
+        PRINT *,' KORB: a1    =',PARM(1,10),PARM(2,10)
+        PRINT *,' KORB: a1prim=',PARM(1,17),PARM(2,17),PARM(3,17)
+        PRINT *,' KORB: K1A/K1B -> Kpipi mixing:'
+        PRINT *,' KORB: K1A   =',PARM(1,19),PARM(2,19),PARM(3,19)
+        PRINT *,' KORB: K1B   =',PARM(1,20),PARM(2,20),PARM(3,20)
+        PRINT *,' KORB: rho/rhop/rhopp -> 4pi mixing:'
+        PRINT *,' KORB: rho   =',PARM(1,9) ,PARM(2,9)
+        PRINT *,' KORB: rhopp =',PARM(1,21),PARM(2,21),PARM(3,21)
+        PRINT *,' KORB: rhoppp=',PARM(1,22),PARM(2,22),PARM(3,22)
+
+C amplitudes for curr_cleo.F:
+C for (3pi)-pi0: 4pi phase space; rho0pi-pi0; rho-pi+pi-; rho+pi-pi-; pi-omega
+        PARM(3,31) = 0.
+        PARM(3,32) = 0.1242
+        PARM(3,33) = 0.1604
+        PARM(3,34) = 0.2711
+        PARM(3,35) = 0.4443
+C for pi-3pi0: 4pi phase space; rho-pi0pi0
+        PARM(3,36) = 0.
+        PARM(3,37) = 1.0
+
+C Modify amplitudes for 4pi form-factor in formf/curr, from korb.dec:
+CCC        IF (IPLIST(2,282).EQ.5) THEN
+        IPLIST=0
+        IF (IPLIST.EQ.5) THEN
+        PARM(3,31) = 0.0000
+        PARM(3,32) = 0.1242
+        PARM(3,33) = 0.1604
+        PARM(3,34) = 0.2711
+        PARM(3,35) = 0.4443
+        PARM(3,36) = 0.0000
+        PARM(3,37) = 1.0000
+        END IF
+
+        PRINT *,' KORB: 3PI-PI0 PARAMS:',(PARM(3,I),I=31,35)
+        PRINT *,' KORB: PI-3PI0 PARAMS:',(PARM(3,I),I=36,37)
+
+C The 4pi models are the most complicated in TAUOLA.
+C If the user has not modified any parameters of the 4pi model,
+C we can use the WTMAX determined with many trials.
+        IF (ABS(PARM(3,31)-0.0000).GT.0.0001 .OR. 
+     1      ABS(PARM(3,32)-0.1242).GT.0.0001 .OR.
+     1      ABS(PARM(3,33)-0.1604).GT.0.0001 .OR.
+     1      ABS(PARM(3,34)-0.2711).GT.0.0001 .OR.
+     1      ABS(PARM(3,35)-0.4443).GT.0.0001 ) THEN
+           PARM(3,38) = -1.
+        ELSE
+           PARM(3,38) = 6.9673671E-14
+        END IF
+
+        IF (ABS(PARM(3,36)-0.0000).GT.0.0001 .OR. 
+     1      ABS(PARM(3,37)-1.0000).GT.0.0001 ) THEN
+           PARM(3,39) = -1.
+        ELSE
+           PARM(3,39) = 3.5374880E-13
+        END IF
+
+
+C phases for curr_cleo.F:
+        PARM(3,42) = -0.40
+        PARM(3,43) =  0.00
+        PARM(3,44) = -0.20+3.1416
+        PARM(3,45) = -1.50
+
+C rho' contributions to rho' -> pi-omega:
+        PARM(3,51) = -0.10
+        PARM(3,52) =  1.00
+        PARM(3,53) = -0.10
+        PARM(3,54) = -0.04
+
+C rho' contribtions to rho' -> rhopipi:
+        PARM(3,55) =  1.00
+        PARM(3,56) =  0.14
+        PARM(3,57) = -0.05
+        PARM(3,58) = -0.05
+
+C rho contributions to rhopipi, rho -> 2pi:
+        PARM(3,59) =  1.000
+        PARM(3,60) = -0.145
+        PARM(3,61) =  0.000
+
+C Set the BRs for (A1+ -> rho+ pi0) and (K*+ -> K0 pi+)
+C needed in dist/taurdf:
+        PARM(4,1) = 0.4920                 ! BRA1+
+        PARM(4,2) = 0.4920                 ! BRA1-
+        PARM(4,3) = 0.6660                 ! BRKS+
+        PARM(4,4) = 0.6660                 ! BRKS-
+        PARM(4,5) = 0.5                    ! BRK0
+        PARM(4,6) = 0.5                    ! BRK0B
+
+C amplitude coefficients for tau -> K1(1270) / K1(1402)
+        C1270 = PARM(3,19)
+        C1402 = PARM(3,20)
+        IF (C1270.EQ.0.AND.C1402.EQ.0.) THEN
+           C1270 = 1.
+           C1402 = 0.6
+        END IF
+C From PDG96, square roots of branching fractions:
+        A1270_KSPI = SQRT(0.16)
+        A1270_KRHO = SQRT(0.42)
+        A1402_KSPI = SQRT(0.94)
+        A1402_KRHO = SQRT(0.03)
+C C-G coefficients for K1- -> CG1 * |K- pi0> + CG2 * |K0bar pi->
+        CG1 = -SQRT(2./3.)
+        CG2 =  SQRT(1./3.)
+C and the resulting amplitudes (times normalized FF):
+        PARM(3,81) = C1270*A1270_KSPI*CG1  ! K1270 -> K*0B pi- 
+        PARM(3,82) = C1402*A1402_KSPI*CG1  ! K1402 -> K*0B pi- 
+        PARM(3,83) = C1270*A1270_KRHO*CG1  ! K1270 -> K0B rho- 
+        PARM(3,84) = C1402*A1402_KRHO*CG1  ! K1402 -> K0B rho-
+        PARM(3,85) = C1270*A1270_KSPI*CG2  ! K1270 -> K*- pi0
+        PARM(3,86) = C1402*A1402_KSPI*CG2  ! K1402 -> K*- pi0
+        PARM(3,87) = C1270*A1270_KRHO*CG2  ! K1270 -> K- rho0
+        PARM(3,88) = C1402*A1402_KRHO*CG2  ! K1402 -> K- rho0
+
+      END IF
+**********************************************************************
+
+      R = 0.
+      IF (IF1.GE.1 .AND. IF1.LE.4 .AND. IF2.GE.1 .AND. IF2.LE.100) THEN
+         R = PARM(IF1,IF2)
+
+CAJW 4/4/94  Better to decide on A1 br now, avoid DADMAA/DPHSAA problem.
+        IF (IF1.EQ.4.AND.JAK1.EQ.5) THEN 
+          IF (IF2.EQ.11) THEN
+C Return the BR used in the last call:
+             R = BRA1
+          ELSE IF (IF2.EQ.1) THEN
+            BRA1 = R
+            CALL RANMAR(RRR,1)
+            IF (RRR(1).LT.BRA1) THEN
+              R = 1.     ! 3pi
+            ELSE 
+              R = 0.     ! pi-2pi0
+            END IF
+            BRA1 = R
+          END IF
+        ELSEIF (IF1.EQ.4.AND.JAK1.EQ.7) THEN
+          IF (IF2.EQ.13) THEN
+C Return the BR used in the last call:
+             R = BRKS
+          ELSE IF (IF2.EQ.3) THEN
+            BRKS = R
+            CALL RANMAR(RRR,1)
+            IF (RRR(1).LT.BRKS) THEN
+              R = 1.     ! K0 pi-
+            ELSE 
+              R = 0.     ! K- pi0
+            END IF
+            BRKS = R
+          END IF
+        END IF
+
+      END IF
+
+      PKORB = R
+      RETURN
+      END
diff --git a/TEvtGen/Tauola/tauola-fortran/tauola.f b/TEvtGen/Tauola/tauola-fortran/tauola.f
new file mode 100644 (file)
index 0000000..f538813
--- /dev/null
@@ -0,0 +1,5758 @@
+
+
+
+
+
+      SUBROUTINE JAKER(JAK)
+C     *********************
+C
+C **********************************************************************
+C                                                                      *
+
+
+
+
+C           *********TAUOLA LIBRARY: VERSION 2.9 ********              *
+C           **************October  2011******************              *
+
+C           **      AUTHORS: S.JADACH, Z.WAS        *****              *
+C           **  R. DECKER, M. JEZABEK, J.H.KUEHN,   *****              *
+C           ********AVAILABLE FROM: www.cern.ch/wasm ****              *
+C           *******PUBLISHED IN COMP. PHYS. COMM.********              *
+C           *** 76 (1993) 361                        ****              *
+C           *** 64 (1990) 275                        ****              *
+C           *** 70 (1992) 69                         ****              *
+C           *** CLEO initialization:                 ****              *
+C           *** Alain Weinstein www home page:       ****              *
+C           *** http://www.cithep.caltech.edu/~ajw/  ****              *
+C           *** RChL initialization:                 ****              *
+C           *** O. Shekhovtsova, T. Przedzinski,     ****              *
+C           *** P. Roig and Z. Was                   ****              *
+C           *** IFJPAN-2013-5, UAB-FT-731            ****              *
+C **********************************************************************
+C
+C ----------------------------------------------------------------------
+c SUBROUTINE JAKER,
+C CHOOSES DECAY MODE ACCORDING TO LIST OF BRANCHING RATIOS
+C JAK=1 ELECTRON MODE
+C JAK=2 MUON MODE
+C JAK=3 PION MODE
+C JAK=4 RHO  MODE
+C JAK=5 A1   MODE
+C JAK=6 K    MODE
+C JAK=7 K*   MODE
+
+
+
+
+
+C JAK=8 nPI  MODE
+
+C
+C     called by : DEXAY
+C ----------------------------------------------------------------------
+      COMMON / TAUBRA / GAMPRT(30),JLIST(30),NCHAN
+
+
+C      REAL   CUMUL(20)
+
+      REAL   CUMUL(30),RRR(1)
+C
+      IF(NCHAN.LE.0.OR.NCHAN.GT.30) GOTO 902
+      CALL RANMAR(RRR,1)
+      SUM=0
+      DO 20 I=1,NCHAN
+      SUM=SUM+GAMPRT(I)
+  20  CUMUL(I)=SUM
+      DO 25 I=NCHAN,1,-1
+      IF(RRR(1).LT.CUMUL(I)/CUMUL(NCHAN)) JI=I
+  25  CONTINUE
+      JAK=JLIST(JI)
+      RETURN
+ 902  PRINT 9020
+ 9020 FORMAT(' ----- JAKER: WRONG NCHAN')
+      STOP
+      END
+      SUBROUTINE DEKAY(KTO,HX)
+C     ***********************
+C THIS DEKAY IS IN SPIRIT OF THE 'DECAY' WHICH
+C WAS INCLUDED IN KORAL-B PROGRAM, COMP. PHYS. COMMUN.
+C VOL. 36 (1985) 191, SEE COMMENTS  ON GENERAL PHILOSOPHY THERE.
+C KTO=0 INITIALISATION (OBLIGATORY)
+C KTO=1,11 DENOTES TAU+ AND KTO=2,12 TAU-
+C DEKAY(1,H) AND DEKAY(2,H) IS CALLED INTERNALLY BY MC GENERATOR.
+C H DENOTES THE POLARIMETRIC VECTOR, USED BY THE HOST PROGRAM FOR
+C CALCULATION OF THE SPIN WEIGHT.
+C USER MAY OPTIONALLY CALL DEKAY(11,H) DEKAY(12,H) IN ORDER
+C TO TRANSFORM DECAY PRODUCTS TO CMS AND WRITE LUND RECORD IN /LUJETS/.
+C KTO=100, PRINT FINAL REPORT  (OPTIONAL).
+C DECAY MODES:
+C JAK=1 ELECTRON DECAY
+C JAK=2 MU  DECAY
+C JAK=3 PI  DECAY
+C JAK=4 RHO DECAY
+C JAK=5 A1  DECAY
+C JAK=6 K   DECAY
+C JAK=7 K*  DECAY
+
+
+
+
+
+
+C JAK=8 NPI DECAY
+C JAK=0 INCLUSIVE:  JAK=1,2,3,4,5,6,7,8
+
+      REAL  H(4)
+      REAL*8 HX(4)
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+
+
+
+      COMMON / IDFC  / IDF
+
+      COMMON /TAUPOS/ NP1,NP2                
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+
+
+
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+
+     &                ,NAMES
+      CHARACTER NAMES(NMODE)*31
+      COMMON / INOUT / INUT,IOUT
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+
+      REAL  PDUM1(4),PDUM2(4),PDUM3(4),PDUM4(4),PDUM5(4),HDUM(4)
+      REAL  PDUMX(4,9)
+      DATA IWARM/0/
+      KTOM=KTO
+
+
+
+      IF(KTO.EQ.-1) THEN
+C     ==================
+C       INITIALISATION OR REINITIALISATION
+C       first or second tau positions in HEPEVT as in KORALB/Z
+        NP1=3
+        NP2=4
+        KTOM=1
+        IF (IWARM.EQ.1) X=5/(IWARM-1)
+        IWARM=1
+        WRITE(IOUT,7001) JAK1,JAK
+        WRITE(IOUT,7002) IVER
+        NEVTOT=0
+        NEV1=0
+        NEV2=0
+        IF(JAK1.NE.-1.OR.JAK2.NE.-1) THEN
+          CALL DADMEL(-1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DADMMU(-1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DADMPI(-1,IDUM,HDUM,PDUM1,PDUM2)
+          CALL DADMRO(-1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4)
+          CALL DADMAA(-1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5,JDUM)
+          CALL DADMKK(-1,IDUM,HDUM,PDUM1,PDUM2)
+          CALL DADMKS(-1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,JDUM)
+          CALL DADNEW(-1,IDUM,HDUM,PDUM1,PDUM2,PDUMX,JDUM)
+        ENDIF
+        DO 21 I=1,30
+        NEVDEC(I)=0
+        GAMPMC(I)=0
+ 21     GAMPER(I)=0
+      ELSEIF(KTO.EQ.1) THEN
+C     =====================
+C DECAY OF TAU+ IN THE TAU REST FRAME
+        NEVTOT=NEVTOT+1
+        IF(IWARM.EQ.0) GOTO 902
+        ISGN= IDF/IABS(IDF)
+
+
+
+C AJWMOD to change BRs depending on sign:
+        CALL TAURDF(KTO)
+
+        CALL DEKAY1(0,H,ISGN)
+      ELSEIF(KTO.EQ.2) THEN
+C     =================================
+C DECAY OF TAU- IN THE TAU REST FRAME
+        NEVTOT=NEVTOT+1
+        IF(IWARM.EQ.0) GOTO 902
+        ISGN=-IDF/IABS(IDF)
+
+
+
+C AJWMOD to change BRs depending on sign:
+        CALL TAURDF(KTO)
+
+        CALL DEKAY2(0,H,ISGN)
+      ELSEIF(KTO.EQ.11) THEN
+C     ======================
+C REST OF DECAY PROCEDURE FOR ACCEPTED TAU+ DECAY
+        NEV1=NEV1+1
+        ISGN= IDF/IABS(IDF)
+        CALL DEKAY1(1,H,ISGN)
+      ELSEIF(KTO.EQ.12) THEN
+C     ======================
+C REST OF DECAY PROCEDURE FOR ACCEPTED TAU- DECAY
+        NEV2=NEV2+1
+        ISGN=-IDF/IABS(IDF)
+        CALL DEKAY2(1,H,ISGN)
+      ELSEIF(KTO.EQ.100) THEN
+C     =======================
+        IF(JAK1.NE.-1.OR.JAK2.NE.-1) THEN
+          CALL DADMEL( 1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DADMMU( 1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DADMPI( 1,IDUM,HDUM,PDUM1,PDUM2)
+          CALL DADMRO( 1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4)
+          CALL DADMAA( 1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5,JDUM)
+          CALL DADMKK( 1,IDUM,HDUM,PDUM1,PDUM2)
+          CALL DADMKS( 1,IDUM,HDUM,PDUM1,PDUM2,PDUM3,PDUM4,JDUM)
+          CALL DADNEW( 1,IDUM,HDUM,PDUM1,PDUM2,PDUMX,JDUM)
+          WRITE(IOUT,7010) NEV1,NEV2,NEVTOT
+          WRITE(IOUT,7011) (NEVDEC(I),GAMPMC(I),GAMPER(I),I= 1,7)
+          WRITE(IOUT,7012) 
+     $         (NEVDEC(I),GAMPMC(I),GAMPER(I),NAMES(I-7),I=8,7+NMODE)
+          WRITE(IOUT,7013) 
+        ENDIF
+      ELSE
+C     ====
+        GOTO 910
+      ENDIF
+C     =====
+        DO 78 K=1,4
+ 78     HX(K)=H(K)
+      RETURN
+ 7001 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'*****TAUOLA LIBRARY: VERSION 2.9 ******',9X,1H*,
+     $ /,' *',     25X,'***********October 2011 ***************',9X,1H*,
+     $ /,' *',     25X,'**AUTHORS: S.JADACH, Z.WAS*************',9X,1H*,
+     $ /,' *',     25X,'**R. DECKER, M. JEZABEK, J.H.KUEHN*****',9X,1H*,
+     $ /,' *',     25X,'**AVAILABLE FROM: www.cern.ch/wasm**** ',9X,1H*,
+     $ /,' *',     25X,'***** PUBLISHED IN COMP. PHYS. COMM.***',9X,1H*,
+     $ /,' *',     25X,'0: Physics initialization  CLEO collab ',9X,1H*,
+     $ /,' *',     25X,' see Alain Weinstein www home page:    ',9X,1H*,
+     $ /,' *',     25X,'http://www.cithep.caltech.edu/~ajw/    ',9X,1H*,
+     $ /,' *',     25X,'/korb_doc.html#files                   ',9X,1H*,
+     $ /,' *',     25X,'1: Physics initialization RChL of:     ',9X,1H*,
+     $ /,' *',     25X,' O. Shekhovtsova, T. Przedzinski,      ',9X,1H*,
+     $ /,' *',     25X,' P. Roig and Z. Was                    ',9X,1H*,
+     $ /,' *',     25X,' IFJPAN-2013-5, UAB-FT-731             ',9X,1H*,
+     $ /,' *',     25X,'*******CPC 76 (1993) 361          *****',9X,1H*,
+     $ /,' *',     25X,'**5 or more pi dec.: precision limited ',9X,1H*,
+     $ /,' *',     25X,'****DEKAY ROUTINE: INITIALIZATION******',9X,1H*,
+     $ /,' *',I20  ,5X,'JAK1   = DECAY MODE TAU+               ',9X,1H*,
+     $ /,' *',I20  ,5X,'JAK2   = DECAY MODE TAU-               ',9X,1H*,
+     $  /,1X,15(5H*****)/)
+ 7002 FORMAT(' *',I20  ,5X,'IVER   = hadronic current version  ',9X,1H*)
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'*****TAUOLA LIBRARY: VERSION 2.9 ******',9X,1H*,
+     $ /,' *',     25X,'***********October 2011 ***************',9X,1H*,
+     $ /,' *',     25X,'**AUTHORS: S.JADACH, Z.WAS*************',9X,1H*,
+     $ /,' *',     25X,'**R. DECKER, M. JEZABEK, J.H.KUEHN*****',9X,1H*,
+     $ /,' *',     25X,'**AVAILABLE FROM: www.cern.ch/wasm ****',9X,1H*,
+     $ /,' *',     25X,'***** PUBLISHED IN COMP. PHYS. COMM.***',9X,1H*,
+     $ /,' *',     25X,'******* 64 (1990) 275             *****',9X,1H*,
+     $ /,' *',     25X,'******* 70 (1992) 69              *****',9X,1H*,
+     $ /,' *',     25X,'******* 76 (1993) 361             *****',9X,1H*,
+     $ /,' *',     25X,'******* IFJPAN-2013-5, UAB-FT-731    **',9X,1H*,
+     $ /,' *',     25X,'*****DEKAY ROUTINE: FINAL REPORT*******',9X,1H*,
+     $ /,' *',I20  ,5X,'NEV1   = NO. OF TAU+ DECS. ACCEPTED    ',9X,1H*,
+     $ /,' *',I20  ,5X,'NEV2   = NO. OF TAU- DECS. ACCEPTED    ',9X,1H*,
+     $ /,' *',I20  ,5X,'NEVTOT = SUM                           ',9X,1H*,
+     $ /,' *','    NOEVTS ',
+     $   ' PART.WIDTH     ERROR       ROUTINE    DECAY MODE    ',9X,1H*)
+ 7011 FORMAT(1X,'*'
+     $       ,I10,2F12.7       ,'     DADMEL     ELECTRON      ',9X,1H*
+     $ /,' *',I10,2F12.7       ,'     DADMMU     MUON          ',9X,1H*
+     $ /,' *',I10,2F12.7       ,'     DADMPI     PION          ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMRO     RHO (->2PI)   ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMAA     A1  (->3PI)   ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMKK     KAON          ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMKS     K*            ',9X,1H*)
+ 7012 FORMAT(1X,'*'
+     $       ,I10,2F12.7,A31                                    ,8X,1H*)
+ 7013 FORMAT(1X,'*'
+     $       ,20X,'THE ERROR IS RELATIVE AND  PART.WIDTH      ',10X,1H*
+     $ /,' *',20X,'IN UNITS GFERMI**2*MASS**5/192/PI**3       ',10X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  PRINT 9020
+ 9020 FORMAT(' ----- DEKAY: LACK OF INITIALISATION')
+      STOP
+ 910  PRINT 9100
+ 9100 FORMAT(' ----- DEKAY: WRONG VALUE OF KTO ')
+      STOP
+      END
+      SUBROUTINE DEKAY1(IMOD,HH,ISGN)
+C     *******************************
+C THIS ROUTINE  SIMULATES TAU+  DECAY
+      COMMON / DECP4 / PP1(4),PP2(4),KF1,KF2
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      REAL  HH(4)
+      REAL  HV(4),PNU(4),PPI(4)
+      REAL  PWB(4),PMU(4),PNM(4)
+      REAL  PRHO(4),PIC(4),PIZ(4)
+      REAL  PAA(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL  PKK(4),PKS(4)
+      REAL  PNPI(4,9)
+      REAL  PHOT(4)
+      REAL  PDUM(4)
+      DATA NEV,NPRIN/0,10/
+      KTO=1
+      IF(JAK1.EQ.-1) RETURN
+      IMD=IMOD
+      IF(IMD.EQ.0) THEN
+C     =================
+      JAK=JAK1
+      IF(JAK1.EQ.0) CALL JAKER(JAK)
+      IF(JAK.EQ.1) THEN
+        CALL DADMEL(0, ISGN,HV,PNU,PWB,PMU,PNM,PHOT)
+      ELSEIF(JAK.EQ.2) THEN
+        CALL DADMMU(0, ISGN,HV,PNU,PWB,PMU,PNM,PHOT)
+      ELSEIF(JAK.EQ.3) THEN
+        CALL DADMPI(0, ISGN,HV,PPI,PNU)
+      ELSEIF(JAK.EQ.4) THEN
+        CALL DADMRO(0, ISGN,HV,PNU,PRHO,PIC,PIZ)
+      ELSEIF(JAK.EQ.5) THEN
+        CALL DADMAA(0, ISGN,HV,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+      ELSEIF(JAK.EQ.6) THEN
+        CALL DADMKK(0, ISGN,HV,PKK,PNU)
+      ELSEIF(JAK.EQ.7) THEN
+        CALL DADMKS(0, ISGN,HV,PNU,PKS ,PKK,PPI,JKST)
+      ELSE
+        CALL DADNEW(0, ISGN,HV,PNU,PWB,PNPI,JAK-7)
+      ENDIF
+      DO 33 I=1,3
+ 33   HH(I)=HV(I)
+      HH(4)=1.0
+      ELSEIF(IMD.EQ.1) THEN
+C     =====================
+      NEV=NEV+1
+        IF (JAK.LT.31) THEN
+           NEVDEC(JAK)=NEVDEC(JAK)+1
+         ENDIF
+      DO 34 I=1,4
+ 34   PDUM(I)=.0
+      IF(JAK.EQ.1) THEN
+        CALL DWLUEL(1,ISGN,PNU,PWB,PMU,PNM)
+        CALL DWRPH(KTOM,PHOT)
+        DO 10 I=1,4
+ 10     PP1(I)=PMU(I)
+      ELSEIF(JAK.EQ.2) THEN
+        CALL DWLUMU(1,ISGN,PNU,PWB,PMU,PNM)
+        CALL DWRPH(KTOM,PHOT)
+        DO 20 I=1,4
+ 20     PP1(I)=PMU(I)
+      ELSEIF(JAK.EQ.3) THEN
+        CALL DWLUPI(1,ISGN,PPI,PNU)
+        DO 30 I=1,4
+ 30     PP1(I)=PPI(I)
+      ELSEIF(JAK.EQ.4) THEN
+        CALL DWLURO(1,ISGN,PNU,PRHO,PIC,PIZ)
+        DO 40 I=1,4
+ 40     PP1(I)=PRHO(I)
+      ELSEIF(JAK.EQ.5) THEN
+        CALL DWLUAA(1,ISGN,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+        DO 50 I=1,4
+ 50     PP1(I)=PAA(I)
+      ELSEIF(JAK.EQ.6) THEN
+        CALL DWLUKK(1,ISGN,PKK,PNU)
+        DO 60 I=1,4
+ 60     PP1(I)=PKK(I)
+      ELSEIF(JAK.EQ.7) THEN
+        CALL DWLUKS(1,ISGN,PNU,PKS,PKK,PPI,JKST)
+        DO 70 I=1,4
+ 70     PP1(I)=PKS(I)
+      ELSE
+CAM     MULTIPION DECAY
+        CALL DWLNEW(1,ISGN,PNU,PWB,PNPI,JAK)
+        DO 80 I=1,4
+ 80     PP1(I)=PWB(I)
+      ENDIF
+      ENDIF
+C     =====
+      END
+      SUBROUTINE DEKAY2(IMOD,HH,ISGN)
+C     *******************************
+C THIS ROUTINE  SIMULATES TAU-  DECAY
+      COMMON / DECP4 / PP1(4),PP2(4),KF1,KF2
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      REAL  HH(4)
+      REAL  HV(4),PNU(4),PPI(4)
+      REAL  PWB(4),PMU(4),PNM(4)
+      REAL  PRHO(4),PIC(4),PIZ(4)
+      REAL  PAA(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL  PKK(4),PKS(4)
+      REAL  PNPI(4,9)
+      REAL  PHOT(4)
+      REAL  PDUM(4)
+      DATA NEV,NPRIN/0,10/
+      KTO=2
+      IF(JAK2.EQ.-1) RETURN
+      IMD=IMOD
+      IF(IMD.EQ.0) THEN
+C     =================
+      JAK=JAK2
+      IF(JAK2.EQ.0) CALL JAKER(JAK)
+      IF(JAK.EQ.1) THEN
+        CALL DADMEL(0, ISGN,HV,PNU,PWB,PMU,PNM,PHOT)
+      ELSEIF(JAK.EQ.2) THEN
+        CALL DADMMU(0, ISGN,HV,PNU,PWB,PMU,PNM,PHOT)
+      ELSEIF(JAK.EQ.3) THEN
+        CALL DADMPI(0, ISGN,HV,PPI,PNU)
+      ELSEIF(JAK.EQ.4) THEN
+        CALL DADMRO(0, ISGN,HV,PNU,PRHO,PIC,PIZ)
+      ELSEIF(JAK.EQ.5) THEN
+        CALL DADMAA(0, ISGN,HV,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+      ELSEIF(JAK.EQ.6) THEN
+        CALL DADMKK(0, ISGN,HV,PKK,PNU)
+      ELSEIF(JAK.EQ.7) THEN
+        CALL DADMKS(0, ISGN,HV,PNU,PKS ,PKK,PPI,JKST)
+      ELSE
+        CALL DADNEW(0, ISGN,HV,PNU,PWB,PNPI,JAK-7)
+      ENDIF
+      DO 33 I=1,3
+ 33   HH(I)=HV(I)
+      HH(4)=1.0
+      ELSEIF(IMD.EQ.1) THEN
+C     =====================
+      NEV=NEV+1
+        IF (JAK.LT.31) THEN
+           NEVDEC(JAK)=NEVDEC(JAK)+1
+         ENDIF
+      DO 34 I=1,4
+ 34   PDUM(I)=.0
+      IF(JAK.EQ.1) THEN
+        CALL DWLUEL(2,ISGN,PNU,PWB,PMU,PNM)
+        CALL DWRPH(KTOM,PHOT)
+        DO 10 I=1,4
+ 10     PP2(I)=PMU(I)
+      ELSEIF(JAK.EQ.2) THEN
+        CALL DWLUMU(2,ISGN,PNU,PWB,PMU,PNM)
+        CALL DWRPH(KTOM,PHOT)
+        DO 20 I=1,4
+ 20     PP2(I)=PMU(I)
+      ELSEIF(JAK.EQ.3) THEN
+        CALL DWLUPI(2,ISGN,PPI,PNU)
+        DO 30 I=1,4
+ 30     PP2(I)=PPI(I)
+      ELSEIF(JAK.EQ.4) THEN
+        CALL DWLURO(2,ISGN,PNU,PRHO,PIC,PIZ)
+        DO 40 I=1,4
+ 40     PP2(I)=PRHO(I)
+      ELSEIF(JAK.EQ.5) THEN
+        CALL DWLUAA(2,ISGN,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+        DO 50 I=1,4
+ 50     PP2(I)=PAA(I)
+      ELSEIF(JAK.EQ.6) THEN
+        CALL DWLUKK(2,ISGN,PKK,PNU)
+        DO 60 I=1,4
+ 60     PP1(I)=PKK(I)
+      ELSEIF(JAK.EQ.7) THEN
+        CALL DWLUKS(2,ISGN,PNU,PKS,PKK,PPI,JKST)
+        DO 70 I=1,4
+ 70     PP1(I)=PKS(I)
+      ELSE
+CAM     MULTIPION DECAY
+        CALL DWLNEW(2,ISGN,PNU,PWB,PNPI,JAK)
+        DO 80 I=1,4
+ 80     PP1(I)=PWB(I)
+      ENDIF
+C 
+      ENDIF
+C     =====
+      END
+      SUBROUTINE DEXAY(KTO,POL)
+C ----------------------------------------------------------------------
+C THIS 'DEXAY' IS A ROUTINE WHICH GENERATES DECAY OF THE SINGLE
+C POLARIZED TAU,  POL IS A POLARIZATION VECTOR (NOT A POLARIMETER
+C VECTOR AS IN DEKAY) OF THE TAU AND IT IS AN INPUT PARAMETER.
+C KTO=0 INITIALISATION (OBLIGATORY)
+C KTO=1 DENOTES TAU+ AND KTO=2 TAU-
+C DEXAY(1,POL) AND DEXAY(2,POL) ARE CALLED INTERNALLY BY MC GENERATOR.
+C DECAY PRODUCTS ARE TRANSFORMED READILY
+C TO CMS AND WRITEN IN THE  LUND RECORD IN /LUJETS/
+C KTO=100, PRINT FINAL REPORT (OPTIONAL).
+C
+C     called by : KORALZ
+C ----------------------------------------------------------------------
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+      COMMON / IDFC  / IDFF
+      COMMON /TAUPOS/ NP1,NP2                
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+     &                ,NAMES
+      CHARACTER NAMES(NMODE)*31
+      COMMON / INOUT / INUT,IOUT
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+
+      REAL  POL(4)
+      REAL  PDUM1(4),PDUM2(4),PDUM3(4),PDUM4(4),PDUM5(4)
+      REAL  PDUM(4)
+      REAL  PDUMI(4,9)
+      DATA IWARM/0/
+      KTOM=KTO
+C
+      IF(KTO.EQ.-1) THEN
+C     ==================
+
+C       INITIALISATION OR REINITIALISATION
+C       first or second tau positions in HEPEVT as in KORALB/Z
+        NP1=3
+        NP2=4
+        IWARM=1
+        WRITE(IOUT, 7001) JAK1,JAK2
+        WRITE(IOUT,7002) IVER
+        NEVTOT=0
+        NEV1=0
+        NEV2=0
+        IF(JAK1.NE.-1.OR.JAK2.NE.-1) THEN
+          CALL DEXEL(-1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DEXMU(-1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DEXPI(-1,IDUM,PDUM,PDUM1,PDUM2)
+          CALL DEXRO(-1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4)
+          CALL DEXAA(-1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5,IDUM)
+          CALL DEXKK(-1,IDUM,PDUM,PDUM1,PDUM2)
+          CALL DEXKS(-1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,IDUM)
+          CALL DEXNEW(-1,IDUM,PDUM,PDUM1,PDUM2,PDUMI,IDUM)
+        ENDIF
+        DO 21 I=1,30
+        NEVDEC(I)=0
+        GAMPMC(I)=0
+ 21     GAMPER(I)=0
+      ELSEIF(KTO.EQ.1) THEN
+C     =====================
+C DECAY OF TAU+ IN THE TAU REST FRAME
+        NEVTOT=NEVTOT+1
+        NEV1=NEV1+1
+        IF(IWARM.EQ.0) GOTO 902
+        ISGN=IDFF/IABS(IDFF)
+CAM     CALL DEXAY1(POL,ISGN)
+        CALL DEXAY1(KTO,JAK1,JAKP,POL,ISGN)
+      ELSEIF(KTO.EQ.2) THEN
+C     =================================
+C DECAY OF TAU- IN THE TAU REST FRAME
+        NEVTOT=NEVTOT+1
+        NEV2=NEV2+1
+        IF(IWARM.EQ.0) GOTO 902
+        ISGN=-IDFF/IABS(IDFF)
+CAM     CALL DEXAY2(POL,ISGN)
+        CALL DEXAY1(KTO,JAK2,JAKM,POL,ISGN)
+      ELSEIF(KTO.EQ.100) THEN
+C     =======================
+        IF(JAK1.NE.-1.OR.JAK2.NE.-1) THEN
+          CALL DEXEL( 1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DEXMU( 1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+          CALL DEXPI( 1,IDUM,PDUM,PDUM1,PDUM2)
+          CALL DEXRO( 1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4)
+          CALL DEXAA( 1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5,IDUM)
+          CALL DEXKK( 1,IDUM,PDUM,PDUM1,PDUM2)
+          CALL DEXKS( 1,IDUM,PDUM,PDUM1,PDUM2,PDUM3,PDUM4,IDUM)
+          CALL DEXNEW( 1,IDUM,PDUM,PDUM1,PDUM2,PDUMI,IDUM)
+          WRITE(IOUT,7010) NEV1,NEV2,NEVTOT
+          WRITE(IOUT,7011) (NEVDEC(I),GAMPMC(I),GAMPER(I),I= 1,7)
+          WRITE(IOUT,7012) 
+     $         (NEVDEC(I),GAMPMC(I),GAMPER(I),NAMES(I-7),I=8,7+NMODE)
+          WRITE(IOUT,7013) 
+        ENDIF
+      ELSE
+        GOTO 910
+      ENDIF
+      RETURN
+ 7001 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'*****TAUOLA LIBRARY: VERSION 2.9 ******',9X,1H*,
+     $ /,' *',     25X,'***********October  2011***************',9X,1H*,
+     $ /,' *',     25X,'**AUTHORS: S.JADACH, Z.WAS*************',9X,1H*,
+     $ /,' *',     25X,'**R. DECKER, M. JEZABEK, J.H.KUEHN*****',9X,1H*,
+     $ /,' *',     25X,'**AVAILABLE FROM: www.cern.ch/wasm****',9X,1H*,
+     $ /,' *',     25X,'***** PUBLISHED IN COMP. PHYS. COMM.***',9X,1H*,
+     $ /,' *',     25X,'0: Physics initialization  CLEO collab ',9X,1H*,
+     $ /,' *',     25X,' see Alain Weinstein www home page:    ',9X,1H*,
+     $ /,' *',     25X,'http://www.cithep.caltech.edu/~ajw/    ',9X,1H*,
+     $ /,' *',     25X,'/korb_doc.html#files                   ',9X,1H*,
+     $ /,' *',     25X,'1: Physics initialization RChL of:     ',9X,1H*,
+     $ /,' *',     25X,' O. Shekhovtsova, T. Przedzinski,      ',9X,1H*,
+     $ /,' *',     25X,' P. Roig and Z. Was                    ',9X,1H*,
+     $ /,' *',     25X,' IFJPAN-2013-5, UAB-FT-731             ',9X,1H*,
+     $ /,' *',     25X,'****** CPC 76 (1993) 361         ******',9X,1H*,
+     $ /,' *',     25X,'**5 or more pi dec.: precision limited ',9X,1H*,
+     $ /,' *',     25X,'******DEXAY ROUTINE: INITIALIZATION****',9X,1H*
+     $ /,' *',I20  ,5X,'JAK1   = DECAY MODE FERMION1 (TAU+)    ',9X,1H*
+     $ /,' *',I20  ,5X,'JAK2   = DECAY MODE FERMION2 (TAU-)    ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 7002 FORMAT(' *',I20  ,5X,'IVER   = hadronic current version  ',9X,1H*)
+CHBU  format 7010 had more than 19 continuation lines
+CHBU  split into two
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'*****TAUOLA LIBRARY: VERSION 2.9 ******',9X,1H*,
+     $ /,' *',     25X,'***********October   2011***************',9X,1H*,
+     $ /,' *',     25X,'**AUTHORS: S.JADACH, Z.WAS*************',9X,1H*,
+     $ /,' *',     25X,'**R. DECKER, M. JEZABEK, J.H.KUEHN*****',9X,1H*,
+     $ /,' *',     25X,'**AVAILABLE FROM: www.cern.ch/wasm ****',9X,1H*,
+     $ /,' *',     25X,'***** PUBLISHED IN COMP. PHYS. COMM.***',9X,1H*,
+     $ /,' *',     25X,'******* 64 (1990) 275             *****',9X,1H*,
+     $ /,' *',     25X,'******* 70 (1992) 69              *****',9X,1H*,
+     $ /,' *',     25X,'******* 76 (1993) 361             *****',9X,1H*,
+     $ /,' *',     25X,'******* IFJPAN-2013-5, UAB-FT-731   **',9X,1H*,
+     $ /,' *',     25X,'******DEXAY ROUTINE: FINAL REPORT******',9X,1H*
+     $ /,' *',I20  ,5X,'NEV1   = NO. OF TAU+ DECS. ACCEPTED    ',9X,1H*
+     $ /,' *',I20  ,5X,'NEV2   = NO. OF TAU- DECS. ACCEPTED    ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVTOT = SUM                           ',9X,1H*
+     $ /,' *','    NOEVTS ',
+     $   ' PART.WIDTH     ERROR       ROUTINE    DECAY MODE    ',9X,1H*)
+ 7011 FORMAT(1X,'*'
+     $       ,I10,2F12.7       ,'     DADMEL     ELECTRON      ',9X,1H*
+     $ /,' *',I10,2F12.7       ,'     DADMMU     MUON          ',9X,1H*
+     $ /,' *',I10,2F12.7       ,'     DADMPI     PION          ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMRO     RHO (->2PI)   ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMAA     A1  (->3PI)   ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMKK     KAON          ',9X,1H*
+     $ /,' *',I10,2F12.7,       '     DADMKS     K*            ',9X,1H*)
+ 7012 FORMAT(1X,'*'
+     $       ,I10,2F12.7,A31                                    ,8X,1H*)
+ 7013 FORMAT(1X,'*'
+     $       ,20X,'THE ERROR IS RELATIVE AND  PART.WIDTH      ',10X,1H*
+     $ /,' *',20X,'IN UNITS GFERMI**2*MASS**5/192/PI**3       ',10X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DEXAY: LACK OF INITIALISATION')
+      STOP
+ 910  WRITE(IOUT, 9100)
+ 9100 FORMAT(' ----- DEXAY: WRONG VALUE OF KTO ')
+      STOP
+      END
+      SUBROUTINE DEXAY1(KTO,JAKIN,JAK,POL,ISGN)
+C ---------------------------------------------------------------------
+C THIS ROUTINE  SIMULATES TAU+-  DECAY
+C
+C     called by : DEXAY
+C ---------------------------------------------------------------------
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / INOUT / INUT,IOUT
+      REAL  POL(4),POLAR(4)
+      REAL  PNU(4),PPI(4)
+      REAL  PRHO(4),PIC(4),PIZ(4)
+      REAL  PWB(4),PMU(4),PNM(4)
+      REAL  PAA(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL  PKK(4),PKS(4)
+      REAL  PNPI(4,9)
+      REAL PHOT(4)
+      REAL PDUM(4)
+C
+      IF(JAKIN.EQ.-1) RETURN
+      DO 33 I=1,3
+ 33   POLAR(I)=POL(I)
+      POLAR(4)=0.
+      DO 34 I=1,4
+ 34   PDUM(I)=.0
+      JAK=JAKIN
+      IF(JAK.EQ.0) CALL JAKER(JAK)
+CAM
+      IF(JAK.EQ.1) THEN
+        CALL DEXEL(0, ISGN,POLAR,PNU,PWB,PMU,PNM,PHOT)
+        CALL DWLUEL(KTO,ISGN,PNU,PWB,PMU,PNM)
+        CALL DWRPH(KTO,PHOT )
+      ELSEIF(JAK.EQ.2) THEN
+        CALL DEXMU(0, ISGN,POLAR,PNU,PWB,PMU,PNM,PHOT)
+        CALL DWLUMU(KTO,ISGN,PNU,PWB,PMU,PNM)
+        CALL DWRPH(KTO,PHOT )
+      ELSEIF(JAK.EQ.3) THEN
+        CALL DEXPI(0, ISGN,POLAR,PPI,PNU)
+        CALL DWLUPI(KTO,ISGN,PPI,PNU)
+      ELSEIF(JAK.EQ.4) THEN
+        CALL DEXRO(0, ISGN,POLAR,PNU,PRHO,PIC,PIZ)
+        CALL DWLURO(KTO,ISGN,PNU,PRHO,PIC,PIZ)
+      ELSEIF(JAK.EQ.5) THEN
+        CALL DEXAA(0, ISGN,POLAR,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+        CALL DWLUAA(KTO,ISGN,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+      ELSEIF(JAK.EQ.6) THEN
+        CALL DEXKK(0, ISGN,POLAR,PKK,PNU)
+        CALL DWLUKK(KTO,ISGN,PKK,PNU)
+      ELSEIF(JAK.EQ.7) THEN
+        CALL DEXKS(0, ISGN,POLAR,PNU,PKS,PKK,PPI,JKST)
+        CALL DWLUKS(KTO,ISGN,PNU,PKS,PKK,PPI,JKST)
+      ELSE
+        JNPI=JAK-7
+        CALL DEXNEW(0, ISGN,POLAR,PNU,PWB,PNPI,JNPI)
+        CALL DWLNEW(KTO,ISGN,PNU,PWB,PNPI,JAK)
+      ENDIF
+      NEVDEC(JAK)=NEVDEC(JAK)+1
+      END
+      SUBROUTINE DEXEL(MODE,ISGN,POL,PNU,PWB,Q1,Q2,PH)
+C ----------------------------------------------------------------------
+C THIS SIMULATES TAU DECAY IN TAU REST FRAME
+C INTO ELECTRON AND TWO NEUTRINOS
+C
+C     called by : DEXAY,DEXAY1
+C ----------------------------------------------------------------------
+      REAL  POL(4),HV(4),PWB(4),PNU(4),Q1(4),Q2(4),PH(4),RN(1)
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        CALL DADMEL( -1,ISGN,HV,PNU,PWB,Q1,Q2,PH)
+CC      CALL HBOOK1(813,'WEIGHT DISTRIBUTION  DEXEL    $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DADMEL(  0,ISGN,HV,PNU,PWB,Q1,Q2,PH)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(813,WT)
+        CALL RANMAR(RN,1)
+        IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        CALL DADMEL(  1,ISGN,HV,PNU,PWB,Q1,Q2,PH)
+CC      CALL HPRINT(813)
+      ENDIF
+C     =====
+      RETURN
+ 902  PRINT 9020
+ 9020 FORMAT(' ----- DEXEL: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DEXMU(MODE,ISGN,POL,PNU,PWB,Q1,Q2,PH)
+C ----------------------------------------------------------------------
+C THIS SIMULATES TAU DECAY IN ITS REST FRAME
+C INTO MUON AND TWO NEUTRINOS
+C OUTPUT FOUR MOMENTA: PNU   TAUNEUTRINO,
+C                      PWB   W-BOSON
+C                      Q1    MUON
+C                      Q2    MUON-NEUTRINO
+C ----------------------------------------------------------------------
+      COMMON / INOUT / INUT,IOUT
+      REAL  POL(4),HV(4),PWB(4),PNU(4),Q1(4),Q2(4),PH(4),RN(1)
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        CALL DADMMU( -1,ISGN,HV,PNU,PWB,Q1,Q2,PH)
+CC      CALL HBOOK1(814,'WEIGHT DISTRIBUTION  DEXMU    $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DADMMU(  0,ISGN,HV,PNU,PWB,Q1,Q2,PH)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(814,WT)
+        CALL RANMAR(RN,1)
+        IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        CALL DADMMU(  1,ISGN,HV,PNU,PWB,Q1,Q2,PH)
+CC      CALL HPRINT(814)
+      ENDIF
+C     =====
+      RETURN
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DEXMU: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DADMEL(MODE,ISGN,HHV,PNU,PWB,Q1,Q2,PHX)
+C ----------------------------------------------------------------------
+C
+C     called by : DEXEL,(DEKAY,DEKAY1)
+C ----------------------------------------------------------------------
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      REAL*4         PHX(4)
+      COMMON / INOUT / INUT,IOUT
+      REAL  HHV(4),HV(4),PWB(4),PNU(4),Q1(4),Q2(4)
+      REAL  PDUM1(4),PDUM2(4),PDUM3(4),PDUM4(4),PDUM5(4)
+      REAL*4 RRR(3)
+      REAL*8 SWT, SSWT
+      DATA PI /3.141592653589793238462643/
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        NEVRAW=0
+        NEVACC=0
+        NEVOVR=0
+        SWT=0
+        SSWT=0
+        WTMAX=1E-20
+        DO 15 I=1,500
+        CALL DPHSEL(WT,HV,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+        IF(WT.GT.WTMAX/1.2) WTMAX=WT*1.2
+15      CONTINUE
+CC      CALL HBOOK1(803,'WEIGHT DISTRIBUTION  DADMEL    $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        NEVRAW=NEVRAW+1
+        CALL DPHSEL(WT,HV,PNU,PWB,Q1,Q2,PHX)
+CC      CALL HFILL(803,WT/WTMAX)
+        SWT=SWT+WT
+        SSWT=SSWT+WT**2
+        CALL RANMAR(RRR,3)
+        RN=RRR(1)
+        IF(WT.GT.WTMAX) NEVOVR=NEVOVR+1
+        IF(RN*WTMAX.GT.WT) GOTO 300
+C ROTATIONS TO BASIC TAU REST FRAME
+        RR2=RRR(2)
+        COSTHE=-1.+2.*RR2
+        THET=ACOS(COSTHE)
+        RR3=RRR(3)
+        PHI =2*PI*RR3
+        CALL ROTOR2(THET,PNU,PNU)
+        CALL ROTOR3( PHI,PNU,PNU)
+        CALL ROTOR2(THET,PWB,PWB)
+        CALL ROTOR3( PHI,PWB,PWB)
+        CALL ROTOR2(THET,Q1,Q1)
+        CALL ROTOR3( PHI,Q1,Q1)
+        CALL ROTOR2(THET,Q2,Q2)
+        CALL ROTOR3( PHI,Q2,Q2)
+        CALL ROTOR2(THET,HV,HV)
+        CALL ROTOR3( PHI,HV,HV)
+        CALL ROTOR2(THET,PHX,PHX)
+        CALL ROTOR3( PHI,PHX,PHX)
+        DO 44,I=1,3
+ 44     HHV(I)=-ISGN*HV(I)
+        NEVACC=NEVACC+1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        IF(NEVRAW.EQ.0) RETURN
+        PARGAM=SWT/FLOAT(NEVRAW+1)
+        ERROR=0
+        IF(NEVRAW.NE.0) ERROR=SQRT(SSWT/SWT**2-1./FLOAT(NEVRAW))
+        RAT=PARGAM/GAMEL
+        WRITE(IOUT, 7010) NEVRAW,NEVACC,NEVOVR,PARGAM,RAT,ERROR
+CC      CALL HPRINT(803)
+        GAMPMC(1)=RAT
+        GAMPER(1)=ERROR
+CAM     NEVDEC(1)=NEVACC
+      ENDIF
+C     =====
+      RETURN
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMEL FINAL REPORT  ******** ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVRAW = NO. OF EL  DECAYS TOTAL       ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVACC = NO. OF EL   DECS. ACCEPTED    ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVOVR = NO. OF OVERWEIGHTED EVENTS    ',9X,1H*
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH ( ELECTRON) IN GEV UNITS ',9X,1H*
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.9,5X,'RELATIVE ERROR OF PARTIAL WIDTH        ',9X,1H*
+     $ /,' *',25X,     'COMPLETE QED CORRECTIONS INCLUDED      ',9X,1H*
+     $ /,' *',25X,     'BUT ONLY V-A CUPLINGS                  ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DADMEL: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DADMMU(MODE,ISGN,HHV,PNU,PWB,Q1,Q2,PHX)
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / INOUT / INUT,IOUT
+      REAL*4         PHX(4)
+      REAL  HHV(4),HV(4),PNU(4),PWB(4),Q1(4),Q2(4)
+      REAL  PDUM1(4),PDUM2(4),PDUM3(4),PDUM4(4),PDUM5(4)
+      REAL*4 RRR(3)
+      REAL*8 SWT, SSWT
+      DATA PI /3.141592653589793238462643/
+      DATA IWARM /0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        NEVRAW=0
+        NEVACC=0
+        NEVOVR=0
+        SWT=0
+        SSWT=0
+        WTMAX=1E-20
+        DO 15 I=1,500
+        CALL DPHSMU(WT,HV,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5)
+        IF(WT.GT.WTMAX/1.2) WTMAX=WT*1.2
+15      CONTINUE
+CC      CALL HBOOK1(802,'WEIGHT DISTRIBUTION  DADMMU    $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        NEVRAW=NEVRAW+1
+        CALL DPHSMU(WT,HV,PNU,PWB,Q1,Q2,PHX)
+CC      CALL HFILL(802,WT/WTMAX)
+        SWT=SWT+WT
+        SSWT=SSWT+WT**2
+        CALL RANMAR(RRR,3)
+        RN=RRR(1)
+        IF(WT.GT.WTMAX) NEVOVR=NEVOVR+1
+        IF(RN*WTMAX.GT.WT) GOTO 300
+C ROTATIONS TO BASIC TAU REST FRAME
+        COSTHE=-1.+2.*RRR(2)
+        THET=ACOS(COSTHE)
+        PHI =2*PI*RRR(3)
+        CALL ROTOR2(THET,PNU,PNU)
+        CALL ROTOR3( PHI,PNU,PNU)
+        CALL ROTOR2(THET,PWB,PWB)
+        CALL ROTOR3( PHI,PWB,PWB)
+        CALL ROTOR2(THET,Q1,Q1)
+        CALL ROTOR3( PHI,Q1,Q1)
+        CALL ROTOR2(THET,Q2,Q2)
+        CALL ROTOR3( PHI,Q2,Q2)
+        CALL ROTOR2(THET,HV,HV)
+        CALL ROTOR3( PHI,HV,HV)
+        CALL ROTOR2(THET,PHX,PHX)
+        CALL ROTOR3( PHI,PHX,PHX)
+        DO 44,I=1,3
+ 44     HHV(I)=-ISGN*HV(I)
+        NEVACC=NEVACC+1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        IF(NEVRAW.EQ.0) RETURN
+        PARGAM=SWT/FLOAT(NEVRAW+1)
+        ERROR=0
+        IF(NEVRAW.NE.0) ERROR=SQRT(SSWT/SWT**2-1./FLOAT(NEVRAW))
+        RAT=PARGAM/GAMEL
+        WRITE(IOUT, 7010) NEVRAW,NEVACC,NEVOVR,PARGAM,RAT,ERROR
+CC      CALL HPRINT(802)
+        GAMPMC(2)=RAT
+        GAMPER(2)=ERROR
+CAM     NEVDEC(2)=NEVACC
+      ENDIF
+C     =====
+      RETURN
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMMU FINAL REPORT  ******** ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVRAW = NO. OF MU  DECAYS TOTAL       ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVACC = NO. OF MU   DECS. ACCEPTED    ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVOVR = NO. OF OVERWEIGHTED EVENTS    ',9X,1H*
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH (MU  DECAY) IN GEV UNITS ',9X,1H*
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.9,5X,'RELATIVE ERROR OF PARTIAL WIDTH        ',9X,1H*
+     $ /,' *',25X,     'COMPLETE QED CORRECTIONS INCLUDED      ',9X,1H*
+     $ /,' *',25X,     'BUT ONLY V-A CUPLINGS                  ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DADMMU: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DPHSEL(DGAMX,HVX,XNX,PAAX,QPX,XAX,PHX)
+C XNX,XNA was flipped in parameters of dphsel and dphsmu
+C *********************************************************************
+C *   ELECTRON DECAY MODE                                             *
+C *********************************************************************
+      REAL*4         PHX(4)
+      REAL*4  HVX(4),PAAX(4),XAX(4),QPX(4),XNX(4)
+      REAL*8  HV(4),PH(4),PAA(4),XA(4),QP(4),XN(4)
+      REAL*8  DGAMT
+      IELMU=1
+      CALL DRCMU(DGAMT,HV,PH,PAA,XA,QP,XN,IELMU)
+      DO 7 K=1,4
+        HVX(K)=HV(K)
+        PHX(K)=PH(K)
+        PAAX(K)=PAA(K)
+        XAX(K)=XA(K)
+        QPX(K)=QP(K)
+        XNX(K)=XN(K)
+  7   CONTINUE
+      DGAMX=DGAMT
+      END
+      SUBROUTINE DPHSMU(DGAMX,HVX,XNX,PAAX,QPX,XAX,PHX)
+C XNX,XNA was flipped in parameters of dphsel and dphsmu
+C *********************************************************************
+C *   MUON     DECAY MODE                                             *
+C *********************************************************************
+      REAL*4         PHX(4)
+      REAL*4  HVX(4),PAAX(4),XAX(4),QPX(4),XNX(4)
+      REAL*8  HV(4),PH(4),PAA(4),XA(4),QP(4),XN(4)
+      REAL*8  DGAMT
+      IELMU=2
+      CALL DRCMU(DGAMT,HV,PH,PAA,XA,QP,XN,IELMU)
+      DO 7 K=1,4
+        HVX(K)=HV(K)
+        PHX(K)=PH(K)
+        PAAX(K)=PAA(K)
+        XAX(K)=XA(K)
+        QPX(K)=QP(K)
+        XNX(K)=XN(K)
+  7   CONTINUE
+      DGAMX=DGAMT
+      END
+      SUBROUTINE DRCMU(DGAMT,HV,PH,PAA,XA,QP,XN,IELMU)
+      IMPLICIT REAL*8 (A-H,O-Z)
+C ----------------------------------------------------------------------
+* IT SIMULATES E,MU CHANNELS OF TAU  DECAY IN ITS REST FRAME WITH
+* QED ORDER ALPHA CORRECTIONS
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / INOUT / INUT,IOUT
+      COMMON / TAURAD / XK0DEC,ITDKRC
+      REAL*8            XK0DEC
+      REAL*8  HV(4),PT(4),PH(4),PAA(4),XA(4),QP(4),XN(4)
+      REAL*8  PR(4)
+      REAL*4 RRR(6)
+      LOGICAL IHARD
+      DATA PI /3.141592653589793238462643D0/
+C AJWMOD to satisfy compiler, comment out this unused function.
+C AMRO, GAMRO IS ONLY A PARAMETER FOR GETING HIGHT EFFICIENCY
+C
+C THREE BODY PHASE SPACE NORMALISED AS IN BJORKEN-DRELL
+C D**3 P /2E/(2PI)**3 (2PI)**4 DELTA4(SUM P)
+      PHSPAC=1./2**17/PI**8
+      AMTAX=AMTAU
+C TAU MOMENTUM
+      PT(1)=0.D0
+      PT(2)=0.D0
+      PT(3)=0.D0
+      PT(4)=AMTAX
+C
+      CALL RANMAR(RRR,6)
+C
+        IF (IELMU.EQ.1) THEN
+          AMU=AMEL
+        ELSE
+          AMU=AMMU
+        ENDIF
+C
+        PRHARD=0.30D0
+        IF (  ITDKRC.EQ.0) PRHARD=0D0
+        PRSOFT=1.-PRHARD
+         IF(PRSOFT.LT.0.1) THEN
+           PRINT *, 'ERROR IN DRCMU; PRSOFT=',PRSOFT
+           STOP
+         ENDIF
+C
+        RR5=RRR(5)
+        IHARD=(RR5.GT.PRSOFT)
+       IF (IHARD) THEN
+C                     TAU DECAY TO 'TAU+photon'
+          RR1=RRR(1)
+          AMS1=(AMU+AMNUTA)**2
+          AMS2=(AMTAX)**2
+          XK1=1-AMS1/AMS2
+          XL1=LOG(XK1/2/XK0DEC)
+          XL0=LOG(2*XK0DEC)
+          XK=EXP(XL1*RR1+XL0)
+          AM3SQ=(1-XK)*AMS2
+          AM3 =SQRT(AM3SQ)
+          PHSPAC=PHSPAC*AMS2*XL1*XK
+          PHSPAC=PHSPAC/PRHARD
+        ELSE
+          AM3=AMTAX
+          PHSPAC=PHSPAC*2**6*PI**3
+          PHSPAC=PHSPAC/PRSOFT
+        ENDIF
+C MASS OF NEUTRINA SYSTEM
+        RR2=RRR(2)
+        AMS1=(AMNUTA)**2
+        AMS2=(AM3-AMU)**2
+CAM
+CAM
+* FLAT PHASE SPACE;
+      AM2SQ=AMS1+   RR2*(AMS2-AMS1)
+      AM2 =SQRT(AM2SQ)
+      PHSPAC=PHSPAC*(AMS2-AMS1)
+* NEUTRINA REST FRAME, DEFINE XN AND XA
+        ENQ1=(AM2SQ+AMNUTA**2)/(2*AM2)
+        ENQ2=(AM2SQ-AMNUTA**2)/(2*AM2)
+        PPI=         ENQ1**2-AMNUTA**2
+        PPPI=SQRT(ABS(ENQ1**2-AMNUTA**2))
+        PHSPAC=PHSPAC*(4*PI)*(2*PPPI/AM2)
+* NU TAU IN NUNU REST FRAME
+        CALL SPHERD(PPPI,XN)
+        XN(4)=ENQ1
+* NU LIGHT IN NUNU REST FRAME
+        DO 30 I=1,3
+ 30     XA(I)=-XN(I)
+        XA(4)=ENQ2
+* TAU-prim REST FRAME, DEFINE QP (muon
+*       NUNU  MOMENTUM
+        PR(1)=0
+        PR(2)=0
+        PR(4)=1.D0/(2*AM3)*(AM3**2+AM2**2-AMU**2)
+        PR(3)= SQRT(ABS(PR(4)**2-AM2**2))
+        PPI  =          PR(4)**2-AM2**2
+*       MUON MOMENTUM
+        QP(1)=0
+        QP(2)=0
+        QP(4)=1.D0/(2*AM3)*(AM3**2-AM2**2+AMU**2)
+        QP(3)=-PR(3)
+      PHSPAC=PHSPAC*(4*PI)*(2*PR(3)/AM3)
+* NEUTRINA BOOSTED FROM THEIR FRAME TO TAU-prim REST FRAME
+      EXE=(PR(4)+PR(3))/AM2
+      CALL BOSTD3(EXE,XN,XN)
+      CALL BOSTD3(EXE,XA,XA)
+      RR3=RRR(3)
+      RR4=RRR(4)
+      IF (IHARD) THEN
+        EPS=4*(AMU/AMTAX)**2
+        XL1=LOG((2+EPS)/EPS)
+        XL0=LOG(EPS)
+        ETA  =EXP(XL1*RR3+XL0)
+        CTHET=1+EPS-ETA
+        THET =ACOS(CTHET)
+        PHSPAC=PHSPAC*XL1/2*ETA
+        PHI = 2*PI*RR4
+        CALL ROTPOX(THET,PHI,XN)
+        CALL ROTPOX(THET,PHI,XA)
+        CALL ROTPOX(THET,PHI,QP)
+        CALL ROTPOX(THET,PHI,PR)
+C
+* NOW TO THE TAU REST FRAME, DEFINE TAU-prim AND GAMMA MOMENTA
+* tau-prim  MOMENTUM
+        PAA(1)=0
+        PAA(2)=0
+        PAA(4)=1/(2*AMTAX)*(AMTAX**2+AM3**2)
+        PAA(3)= SQRT(ABS(PAA(4)**2-AM3**2))
+        PPI   =          PAA(4)**2-AM3**2
+        PHSPAC=PHSPAC*(4*PI)*(2*PAA(3)/AMTAX)
+* GAMMA MOMENTUM
+        PH(1)=0
+        PH(2)=0
+        PH(4)=PAA(3)
+        PH(3)=-PAA(3)
+* ALL MOMENTA BOOSTED FROM TAU-prim REST FRAME TO TAU REST FRAME
+* Z-AXIS ANTIPARALLEL TO PHOTON MOMENTUM
+        EXE=(PAA(4)+PAA(3))/AM3
+        CALL BOSTD3(EXE,XN,XN)
+        CALL BOSTD3(EXE,XA,XA)
+        CALL BOSTD3(EXE,QP,QP)
+        CALL BOSTD3(EXE,PR,PR)
+      ELSE
+        THET =ACOS(-1.+2*RR3)
+        PHI = 2*PI*RR4
+        CALL ROTPOX(THET,PHI,XN)
+        CALL ROTPOX(THET,PHI,XA)
+        CALL ROTPOX(THET,PHI,QP)
+        CALL ROTPOX(THET,PHI,PR)
+C
+* NOW TO THE TAU REST FRAME, DEFINE TAU-prim AND GAMMA MOMENTA
+* tau-prim  MOMENTUM
+        PAA(1)=0
+        PAA(2)=0
+        PAA(4)=AMTAX
+        PAA(3)=0
+* GAMMA MOMENTUM
+        PH(1)=0
+        PH(2)=0
+        PH(4)=0
+        PH(3)=0
+      ENDIF
+C PARTIAL WIDTH CONSISTS OF PHASE SPACE AND AMPLITUDE
+      CALL DAMPRY(ITDKRC,XK0DEC,PH,XA,QP,XN,AMPLIT,HV)
+      DGAMT=1/(2.*AMTAX)*AMPLIT*PHSPAC
+      END
+      SUBROUTINE DAMPRY(ITDKRC,XK0DEC,XK,XA,QP,XN,AMPLIT,HV)
+      IMPLICIT REAL*8 (A-H,O-Z)
+C ----------------------------------------------------------------------
+C IT CALCULATES MATRIX ELEMENT FOR THE
+C TAU --> MU(E) NU NUBAR DECAY MODE
+C INCLUDING COMPLETE ORDER ALPHA QED CORRECTIONS.
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      REAL*8  HV(4),QP(4),XN(4),XA(4),XK(4)
+C
+      HV(4)=1.D0
+      AK0=XK0DEC*AMTAU
+      IF(XK(4).LT.0.1D0*AK0) THEN
+        AMPLIT=THB(ITDKRC,QP,XN,XA,AK0,HV)
+      ELSE
+        AMPLIT=SQM2(ITDKRC,QP,XN,XA,XK,AK0,HV)
+      ENDIF
+      RETURN
+      END
+      FUNCTION SQM2(ITDKRC,QP,XN,XA,XK,AK0,HV)
+C
+C **********************************************************************
+C     REAL PHOTON MATRIX ELEMENT SQUARED                               *
+C     PARAMETERS:                                                      *
+C     HV- POLARIMETRIC FOUR-VECTOR OF TAU                              *
+C     QP,XN,XA,XK - 4-momenta of electron (muon), NU, NUBAR and PHOTON *
+C                   All four-vectors in TAU rest frame (in GeV)        *
+C     AK0 - INFRARED CUTOFF, MINIMAL ENERGY OF HARD PHOTONS (GEV)      *
+C     SQM2 - value for S=0                                             *
+C     see Eqs. (2.9)-(2.10) from CJK ( Nucl.Phys.B(1991) )             *
+C **********************************************************************
+C
+      IMPLICIT REAL*8(A-H,O-Z)
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / QEDPRM /ALFINV,ALFPI,XK0
+      REAL*8           ALFINV,ALFPI,XK0
+      REAL*8    QP(4),XN(4),XA(4),XK(4)
+      REAL*8    R(4)
+      REAL*8   HV(4)
+      REAL*8 S0(3),RXA(3),RXK(3),RQP(3)
+      DATA PI /3.141592653589793238462643D0/
+C
+      TMASS=AMTAU
+      GF=GFERMI
+      ALPHAI=ALFINV
+      TMASS2=TMASS**2
+      EMASS2=QP(4)**2-QP(1)**2-QP(2)**2-QP(3)**2
+      R(4)=TMASS
+C     SCALAR PRODUCTS OF FOUR-MOMENTA
+      DO 7 I=1,3
+        R(1)=0.D0
+        R(2)=0.D0
+        R(3)=0.D0
+        R(I)=TMASS
+        RXA(I)=R(4)*XA(4)-R(1)*XA(1)-R(2)*XA(2)-R(3)*XA(3)
+C       RXN(I)=R(4)*XN(4)-R(1)*XN(1)-R(2)*XN(2)-R(3)*XN(3)
+        RXK(I)=R(4)*XK(4)-R(1)*XK(1)-R(2)*XK(2)-R(3)*XK(3)
+        RQP(I)=R(4)*QP(4)-R(1)*QP(1)-R(2)*QP(2)-R(3)*QP(3)
+  7   CONTINUE
+      QPXN=QP(4)*XN(4)-QP(1)*XN(1)-QP(2)*XN(2)-QP(3)*XN(3)
+      QPXA=QP(4)*XA(4)-QP(1)*XA(1)-QP(2)*XA(2)-QP(3)*XA(3)
+      QPXK=QP(4)*XK(4)-QP(1)*XK(1)-QP(2)*XK(2)-QP(3)*XK(3)
+c     XNXA=XN(4)*XA(4)-XN(1)*XA(1)-XN(2)*XA(2)-XN(3)*XA(3)
+      XNXK=XN(4)*XK(4)-XN(1)*XK(1)-XN(2)*XK(2)-XN(3)*XK(3)
+      XAXK=XA(4)*XK(4)-XA(1)*XK(1)-XA(2)*XK(2)-XA(3)*XK(3)
+      TXN=TMASS*XN(4)
+      TXA=TMASS*XA(4)
+      TQP=TMASS*QP(4)
+      TXK=TMASS*XK(4)
+C
+      X= XNXK/QPXN
+      Z= TXK/TQP
+      A= 1+X
+      B= 1+ X*(1+Z)/2+Z/2
+      S1= QPXN*TXA*( -EMASS2/QPXK**2*A + 2*TQP/(QPXK*TXK)*B-
+     $TMASS2/TXK**2)  +
+     $QPXN/TXK**2* ( TMASS2*XAXK - TXA*TXK+ XAXK*TXK) -
+     $TXA*TXN/TXK - QPXN/(QPXK*TXK)* (TQP*XAXK-TXK*QPXA)
+      CONST4=256*PI/ALPHAI*GF**2
+      IF (ITDKRC.EQ.0) CONST4=0D0
+      SQM2=S1*CONST4
+      DO 5 I=1,3
+        S0(I) = QPXN*RXA(I)*(-EMASS2/QPXK**2*A + 2*TQP/(QPXK*TXK)*B-
+     $  TMASS2/TXK**2) +
+     $  QPXN/TXK**2* (TMASS2*XAXK - TXA*RXK(I)+ XAXK*RXK(I))-
+     $  RXA(I)*TXN/TXK - QPXN/(QPXK*TXK)*(RQP(I)*XAXK- RXK(I)*QPXA)
+  5     HV(I)=S0(I)/S1-1.D0
+      RETURN
+      END
+      FUNCTION THB(ITDKRC,QP,XN,XA,AK0,HV)
+C
+C **********************************************************************
+C     BORN +VIRTUAL+SOFT PHOTON MATRIX ELEMENT**2  O(ALPHA)            *
+C     PARAMETERS:                                                      *
+C     HV- POLARIMETRIC FOUR-VECTOR OF TAU                              *
+C     QP,XN,XA - FOUR-MOMENTA OF ELECTRON (MUON), NU AND NUBAR IN GEV  *
+C     ALL FOUR-VECTORS IN TAU REST FRAME                               *
+C     AK0 - INFRARED CUTOFF, MINIMAL ENERGY OF HARD PHOTONS            *
+C     THB - VALUE FOR S=0                                              *
+C     SEE EQS. (2.2),(2.4)-(2.5) FROM CJK (NUCL.PHYS.B351(1991)70      *
+C     AND (C.2) FROM JK (NUCL.PHYS.B320(1991)20 )                      *
+C **********************************************************************
+C
+      IMPLICIT REAL*8(A-H,O-Z)
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / QEDPRM /ALFINV,ALFPI,XK0
+      REAL*8           ALFINV,ALFPI,XK0
+      DIMENSION QP(4),XN(4),XA(4)
+      REAL*8 HV(4)
+      DIMENSION R(4)
+      REAL*8 RXA(3),RXN(3),RQP(3)
+      REAL*8 BORNPL(3),AM3POL(3),XM3POL(3)
+      DATA PI /3.141592653589793238462643D0/
+C
+      TMASS=AMTAU
+      GF=GFERMI
+      ALPHAI=ALFINV
+C
+      TMASS2=TMASS**2
+      R(4)=TMASS
+      DO 7 I=1,3
+        R(1)=0.D0
+        R(2)=0.D0
+        R(3)=0.D0
+        R(I)=TMASS
+        RXA(I)=R(4)*XA(4)-R(1)*XA(1)-R(2)*XA(2)-R(3)*XA(3)
+        RXN(I)=R(4)*XN(4)-R(1)*XN(1)-R(2)*XN(2)-R(3)*XN(3)
+C       RXK(I)=R(4)*XK(4)-R(1)*XK(1)-R(2)*XK(2)-R(3)*XK(3)
+        RQP(I)=R(4)*QP(4)-R(1)*QP(1)-R(2)*QP(2)-R(3)*QP(3)
+  7   CONTINUE
+C     QUASI TWO-BODY VARIABLES
+      U0=QP(4)/TMASS
+      U3=SQRT(QP(1)**2+QP(2)**2+QP(3)**2)/TMASS
+      W3=U3
+      W0=(XN(4)+XA(4))/TMASS
+      UP=U0+U3
+      UM=U0-U3
+      WP=W0+W3
+      WM=W0-W3
+      YU=LOG(UP/UM)/2
+      YW=LOG(WP/WM)/2
+      EPS2=U0**2-U3**2
+      EPS=SQRT(EPS2)
+      Y=W0**2-W3**2
+      AL=AK0/TMASS
+C     FORMFACTORS
+      F0=2*U0/U3*(  DILOGT(1-(UM*WM/(UP*WP)))- DILOGT(1-WM/WP) +
+     $DILOGT(1-UM/UP) -2*YU+ 2*LOG(UP)*(YW+YU) ) +
+     $1/Y* ( 2*U3*YU + (1-EPS2- 2*Y)*LOG(EPS) ) +
+     $ 2 - 4*(U0/U3*YU -1)* LOG(2*AL)
+      FP= YU/(2*U3)*(1 + (1-EPS2)/Y ) + LOG(EPS)/Y
+      FM= YU/(2*U3)*(1 - (1-EPS2)/Y ) - LOG(EPS)/Y
+      F3= EPS2*(FP+FM)/2
+C     SCALAR PRODUCTS OF FOUR-MOMENTA
+      QPXN=QP(4)*XN(4)-QP(1)*XN(1)-QP(2)*XN(2)-QP(3)*XN(3)
+      QPXA=QP(4)*XA(4)-QP(1)*XA(1)-QP(2)*XA(2)-QP(3)*XA(3)
+      XNXA=XN(4)*XA(4)-XN(1)*XA(1)-XN(2)*XA(2)-XN(3)*XA(3)
+      TXN=TMASS*XN(4)
+      TXA=TMASS*XA(4)
+      TQP=TMASS*QP(4)
+C     DECAY DIFFERENTIAL WIDTH WITHOUT AND WITH POLARIZATION
+      CONST3=1/(2*ALPHAI*PI)*64*GF**2
+      IF (ITDKRC.EQ.0) CONST3=0D0
+      XM3= -( F0* QPXN*TXA +  FP*EPS2* TXN*TXA +
+     $FM* QPXN*QPXA + F3* TMASS2*XNXA )
+      AM3=XM3*CONST3
+C V-A  AND  V+A COUPLINGS, BUT IN THE BORN PART ONLY
+      BRAK= (GV+GA)**2*TQP*XNXA+(GV-GA)**2*TXA*QPXN
+     &     -(GV**2-GA**2)*TMASS*AMNUTA*QPXA
+      BORN= 32*(GFERMI**2/2.)*BRAK
+      DO 5 I=1,3
+        XM3POL(I)= -( F0* QPXN*RXA(I) +  FP*EPS2* TXN*RXA(I) +
+     $  FM* QPXN* (QPXA + (RXA(I)*TQP-TXA*RQP(I))/TMASS2 ) +
+     $  F3* (TMASS2*XNXA +TXN*RXA(I) -RXN(I)*TXA)  )
+        AM3POL(I)=XM3POL(I)*CONST3
+C V-A  AND  V+A COUPLINGS, BUT IN THE BORN PART ONLY
+        BORNPL(I)=BORN+(
+     &            (GV+GA)**2*TMASS*XNXA*QP(I)
+     &           -(GV-GA)**2*TMASS*QPXN*XA(I)
+     &           +(GV**2-GA**2)*AMNUTA*TXA*QP(I)
+     &           -(GV**2-GA**2)*AMNUTA*TQP*XA(I) )*
+     &                                             32*(GFERMI**2/2.)
+  5     HV(I)=(BORNPL(I)+AM3POL(I))/(BORN+AM3)-1.D0
+      THB=BORN+AM3
+      IF (THB/BORN.LT.0.1D0) THEN
+        PRINT *, 'ERROR IN THB, THB/BORN=',THB/BORN
+        THB=0.D0
+      ENDIF
+      RETURN
+      END
+      SUBROUTINE DEXPI(MODE,ISGN,POL,PPI,PNU)
+C ----------------------------------------------------------------------
+C TAU DECAY INTO PION AND TAU-NEUTRINO
+C IN TAU REST FRAME
+C OUTPUT FOUR MOMENTA: PNU   TAUNEUTRINO,
+C                      PPI   PION CHARGED
+C ----------------------------------------------------------------------
+      REAL  POL(4),HV(4),PNU(4),PPI(4),RN(1)
+CC
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        CALL DADMPI(-1,ISGN,HV,PPI,PNU)
+CC      CALL HBOOK1(815,'WEIGHT DISTRIBUTION  DEXPI    $',100,0,2)
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        CALL DADMPI( 0,ISGN,HV,PPI,PNU)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(815,WT)
+        CALL RANMAR(RN,1)
+        IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        CALL DADMPI( 1,ISGN,HV,PPI,PNU)
+CC      CALL HPRINT(815)
+      ENDIF
+C     =====
+      RETURN
+      END
+      SUBROUTINE DADMPI(MODE,ISGN,HV,PPI,PNU)
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / INOUT / INUT,IOUT
+      REAL  PPI(4),PNU(4),HV(4)
+      DATA PI /3.141592653589793238462643/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        NEVTOT=0
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+        NEVTOT=NEVTOT+1
+        EPI= (AMTAU**2+AMPI**2-AMNUTA**2)/(2*AMTAU)
+        ENU= (AMTAU**2-AMPI**2+AMNUTA**2)/(2*AMTAU)
+        XPI= SQRT(EPI**2-AMPI**2)
+C PI MOMENTUM
+        CALL SPHERA(XPI,PPI)
+        PPI(4)=EPI
+C TAU-NEUTRINO MOMENTUM
+        DO 30 I=1,3
+30      PNU(I)=-PPI(I)
+        PNU(4)=ENU
+        PXQ=AMTAU*EPI
+        PXN=AMTAU*ENU
+        QXN=PPI(4)*PNU(4)-PPI(1)*PNU(1)-PPI(2)*PNU(2)-PPI(3)*PNU(3)
+        BRAK=(GV**2+GA**2)*(2*PXQ*QXN-AMPI**2*PXN)
+     &      +(GV**2-GA**2)*AMTAU*AMNUTA*AMPI**2
+        DO 40 I=1,3
+40      HV(I)=-ISGN*2*GA*GV*AMTAU*(2*PPI(I)*QXN-PNU(I)*AMPI**2)/BRAK
+        HV(4)=1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        IF(NEVTOT.EQ.0) RETURN
+        FPI=0.1284
+C        GAMM=(GFERMI*FPI)**2/(16.*PI)*AMTAU**3*
+C     *       (BRAK/AMTAU**4)**2
+CZW 7.02.93 here was an error affecting non standard model
+C       configurations only
+        GAMM=(GFERMI*FPI)**2/(16.*PI)*AMTAU**3*
+     $       (BRAK/AMTAU**4)*
+     $       SQRT((AMTAU**2-AMPI**2-AMNUTA**2)**2
+     $            -4*AMPI**2*AMNUTA**2           )/AMTAU**2
+        ERROR=0
+        RAT=GAMM/GAMEL
+        WRITE(IOUT, 7010) NEVTOT,GAMM,RAT,ERROR
+        GAMPMC(3)=RAT
+        GAMPER(3)=ERROR
+CAM     NEVDEC(3)=NEVTOT
+      ENDIF
+C     =====
+      RETURN
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMPI FINAL REPORT  ******** ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVTOT = NO. OF PI  DECAYS TOTAL       ',9X,1H*
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH ( PI DECAY) IN GEV UNITS ',9X,1H*
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.8,5X,'RELATIVE ERROR OF PARTIAL WIDTH (STAT.)',9X,1H*
+     $  /,1X,15(5H*****)/)
+      END
+      SUBROUTINE DEXRO(MODE,ISGN,POL,PNU,PRO,PIC,PIZ)
+C ----------------------------------------------------------------------
+C THIS SIMULATES TAU DECAY IN TAU REST FRAME
+C INTO NU RHO, NEXT RHO DECAYS INTO PION PAIR.
+C OUTPUT FOUR MOMENTA: PNU   TAUNEUTRINO,
+C                      PRO   RHO
+C                      PIC   PION CHARGED
+C                      PIZ   PION ZERO
+C ----------------------------------------------------------------------
+      COMMON / INOUT / INUT,IOUT
+      REAL  POL(4),HV(4),PRO(4),PNU(4),PIC(4),PIZ(4),RN(1)
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        CALL DADMRO( -1,ISGN,HV,PNU,PRO,PIC,PIZ)
+CC      CALL HBOOK1(816,'WEIGHT DISTRIBUTION  DEXRO    $',100,0,2)
+CC      CALL HBOOK1(916,'ABS2 OF HV IN ROUTINE DEXRO   $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DADMRO(  0,ISGN,HV,PNU,PRO,PIC,PIZ)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(816,WT)
+CC      XHELP=HV(1)**2+HV(2)**2+HV(3)**2
+CC      CALL HFILL(916,XHELP)
+        CALL RANMAR(RN,1)
+        IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        CALL DADMRO(  1,ISGN,HV,PNU,PRO,PIC,PIZ)
+CC      CALL HPRINT(816)
+CC      CALL HPRINT(916)
+      ENDIF
+C     =====
+      RETURN
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DEXRO: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DADMRO(MODE,ISGN,HHV,PNU,PRO,PIC,PIZ)
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / INOUT / INUT,IOUT
+      REAL  HHV(4)
+      REAL  HV(4),PRO(4),PNU(4),PIC(4),PIZ(4)
+      REAL  PDUM1(4),PDUM2(4),PDUM3(4),PDUM4(4)
+      REAL*4 RRR(3)
+      REAL*8 SWT, SSWT
+      DATA PI /3.141592653589793238462643/
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        NEVRAW=0
+        NEVACC=0
+        NEVOVR=0
+        SWT=0
+        SSWT=0
+        WTMAX=1E-20
+        DO 15 I=1,500
+        CALL DPHSRO(WT,HV,PDUM1,PDUM2,PDUM3,PDUM4)
+        IF(WT.GT.WTMAX/1.2) WTMAX=WT*1.2
+15      CONTINUE
+CC      CALL HBOOK1(801,'WEIGHT DISTRIBUTION  DADMRO    $',100,0,2)
+CC      PRINT 7003,WTMAX
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DPHSRO(WT,HV,PNU,PRO,PIC,PIZ)
+CC      CALL HFILL(801,WT/WTMAX)
+        NEVRAW=NEVRAW+1
+        SWT=SWT+WT
+        SSWT=SSWT+WT**2
+        CALL RANMAR(RRR,3)
+        RN=RRR(1)
+        IF(WT.GT.WTMAX) NEVOVR=NEVOVR+1
+        IF(RN*WTMAX.GT.WT) GOTO 300
+C ROTATIONS TO BASIC TAU REST FRAME
+        COSTHE=-1.+2.*RRR(2)
+        THET=ACOS(COSTHE)
+        PHI =2*PI*RRR(3)
+        CALL ROTOR2(THET,PNU,PNU)
+        CALL ROTOR3( PHI,PNU,PNU)
+        CALL ROTOR2(THET,PRO,PRO)
+        CALL ROTOR3( PHI,PRO,PRO)
+        CALL ROTOR2(THET,PIC,PIC)
+        CALL ROTOR3( PHI,PIC,PIC)
+        CALL ROTOR2(THET,PIZ,PIZ)
+        CALL ROTOR3( PHI,PIZ,PIZ)
+        CALL ROTOR2(THET,HV,HV)
+        CALL ROTOR3( PHI,HV,HV)
+        DO 44 I=1,3
+ 44     HHV(I)=-ISGN*HV(I)
+        NEVACC=NEVACC+1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        IF(NEVRAW.EQ.0) RETURN
+        PARGAM=SWT/FLOAT(NEVRAW+1)
+        ERROR=0
+        IF(NEVRAW.NE.0) ERROR=SQRT(SSWT/SWT**2-1./FLOAT(NEVRAW))
+        RAT=PARGAM/GAMEL
+        WRITE(IOUT, 7010) NEVRAW,NEVACC,NEVOVR,PARGAM,RAT,ERROR
+CC      CALL HPRINT(801)
+        GAMPMC(4)=RAT
+        GAMPER(4)=ERROR
+CAM     NEVDEC(4)=NEVACC
+      ENDIF
+C     =====
+      RETURN
+ 7003 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMRO INITIALISATION ********',9X,1H*
+     $ /,' *',E20.5,5X,'WTMAX  = MAXIMUM WEIGHT                ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMRO FINAL REPORT  ******** ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVRAW = NO. OF RHO DECAYS TOTAL       ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVACC = NO. OF RHO  DECS. ACCEPTED    ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVOVR = NO. OF OVERWEIGHTED EVENTS    ',9X,1H*
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH (RHO DECAY) IN GEV UNITS ',9X,1H*
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.8,5X,'RELATIVE ERROR OF PARTIAL WIDTH        ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DADMRO: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DPHSRO(DGAMT,HV,PN,PR,PIC,PIZ)
+C ----------------------------------------------------------------------
+C IT SIMULATES RHO DECAY IN TAU REST FRAME WITH
+C Z-AXIS ALONG RHO MOMENTUM
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      REAL  HV(4),PT(4),PN(4),PR(4),PIC(4),PIZ(4),QQ(4),RR1(1)
+      DATA PI /3.141592653589793238462643/
+      DATA ICONT /0/
+C
+C THREE BODY PHASE SPACE NORMALISED AS IN BJORKEN-DRELL
+      PHSPAC=1./2**11/PI**5
+C TAU MOMENTUM
+      PT(1)=0.
+      PT(2)=0.
+      PT(3)=0.
+      PT(4)=AMTAU
+C MASS OF (REAL/VIRTUAL) RHO
+      AMS1=(AMPI+AMPIZ)**2
+      AMS2=(AMTAU-AMNUTA)**2
+C FLAT PHASE SPACE
+C     AMX2=AMS1+   RR1*(AMS2-AMS1)
+C     AMX=SQRT(AMX2)
+C     PHSPAC=PHSPAC*(AMS2-AMS1)
+C PHASE SPACE WITH SAMPLING FOR RHO RESONANCE
+      ALP1=ATAN((AMS1-AMRO**2)/AMRO/GAMRO)
+      ALP2=ATAN((AMS2-AMRO**2)/AMRO/GAMRO)
+CAM
+ 100  CONTINUE
+      CALL RANMAR(RR1,1)
+      ALP=ALP1+RR1(1)*(ALP2-ALP1)
+      AMX2=AMRO**2+AMRO*GAMRO*TAN(ALP)
+      AMX=SQRT(AMX2)
+      IF(AMX.LT.2.*AMPI) GO TO 100
+CAM
+      PHSPAC=PHSPAC*((AMX2-AMRO**2)**2+(AMRO*GAMRO)**2)/(AMRO*GAMRO)
+      PHSPAC=PHSPAC*(ALP2-ALP1)
+C
+C TAU-NEUTRINO MOMENTUM
+      PN(1)=0
+      PN(2)=0
+      PN(4)=1./(2*AMTAU)*(AMTAU**2+AMNUTA**2-AMX**2)
+      PN(3)=-SQRT(ABS((PN(4)-AMNUTA)*(PN(4)+AMNUTA)))
+C RHO MOMENTUM
+      PR(1)=0
+      PR(2)=0
+      PR(4)=1./(2*AMTAU)*(AMTAU**2-AMNUTA**2+AMX**2)
+      PR(3)=-PN(3)
+      PHSPAC=PHSPAC*(4*PI)*(2*PR(3)/AMTAU)
+C
+CAM
+      ENQ1=(AMX2+AMPI**2-AMPIZ**2)/(2.*AMX)
+      ENQ2=(AMX2-AMPI**2+AMPIZ**2)/(2.*AMX)
+      PPPI=SQRT((ENQ1-AMPI)*(ENQ1+AMPI))
+      PHSPAC=PHSPAC*(4*PI)*(2*PPPI/AMX)
+C CHARGED PI MOMENTUM IN RHO REST FRAME
+      CALL SPHERA(PPPI,PIC)
+      PIC(4)=ENQ1
+C NEUTRAL PI MOMENTUM IN RHO REST FRAME
+      DO 20 I=1,3
+20    PIZ(I)=-PIC(I)
+      PIZ(4)=ENQ2
+      EXE=(PR(4)+PR(3))/AMX
+C PIONS BOOSTED FROM RHO REST FRAME TO TAU REST FRAME
+      CALL BOSTR3(EXE,PIC,PIC)
+      CALL BOSTR3(EXE,PIZ,PIZ)
+
+      CALL DAM2PI(0,PT,PN,PIC,PIZ,AMPLIT,HV)
+      DGAMT=1/(2.*AMTAU)*AMPLIT*PHSPAC
+      
+      RETURN
+      END
+      
+
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+C RCHL UPDATE - NEW FUNCTIONS
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+
+      
+      SUBROUTINE DAM2PI(MNUM,PT,PN,PIM1,PIM2,AMPLIT,HV)
+C ----------------------------------------------------------------------
+* CALCULATES DIFFERENTIAL CROSS SECTION AND POLARIMETER VECTOR
+* FOR TAU DECAY INTO 2 scalar MODES
+* ALL SPIN EFFECTS IN THE FULL DECAY CHAIN ARE TAKEN INTO ACCOUNT.
+* CALCULATIONS DONE IN TAU REST FRAME WITH Z-AXIS ALONG NEUTRINO MOMENT
+C MNUM DECAY MODE IDENTIFIER.
+C
+C     called by : DPHSAA
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL  HV(4),PT(4),PN(4),PIM1(4),PIM2(4)
+      REAL  PIVEC(4),PIAKS(4),HVM(4)
+      COMPLEX HADCUR(4)
+      DATA PI /3.141592653589793238462643/
+      DATA ICONT /0/
+C
+      IF     (MNUM.EQ.0) THEN
+       CALL CURR_PIPI0(PIM1,PIM2,HADCUR)
+      ELSEIF (MNUM.EQ.1) THEN
+        CALL CURR_PIK0(PIM1,PIM2,HADCUR)
+      ELSEIF (MNUM.EQ.2) THEN
+        CALL CURR_KPI0(PIM1,PIM2,HADCUR)
+      ELSEIF (MNUM.EQ.3) THEN
+        CALL CURR_KK0(PIM1,PIM2,HADCUR)
+      ELSE
+       write(*,*) 'DAM2PI: wrong MNUM= ',MNUM
+        STOP
+      ENDIF
+
+C
+* CALCULATE PI-VECTORS: VECTOR AND AXIAL
+      CALL CLVEC(HADCUR,PN,PIVEC)
+      CALL CLAXI(HADCUR,PN,PIAKS)
+      CALL CLNUT(HADCUR,BRAKM,HVM)
+* SPIN INDEPENDENT PART OF DECAY DIFF-CROSS-SECT. IN TAU REST  FRAME
+      BRAK= (GV**2+GA**2)*PT(4)*PIVEC(4) +2.*GV*GA*PT(4)*PIAKS(4)
+     &     +2.*(GV**2-GA**2)*AMNUTA*AMTAU*BRAKM
+      IF (MNUM.EQ.0.OR.MNUM.EQ.3) THEN
+        AMPLIT=(CCABIB*GFERMI)**2*BRAK
+      ELSE
+        AMPLIT=(SCABIB*GFERMI)**2*BRAK
+      ENDIF
+C POLARIMETER VECTOR IN TAU REST FRAME
+      DO 90 I=1,3
+      HV(I)=-(AMTAU*((GV**2+GA**2)*PIAKS(I)+2.*GV*GA*PIVEC(I)))
+     &      +(GV**2-GA**2)*AMNUTA*AMTAU*HVM(I)
+C HV IS DEFINED FOR TAU-    WITH GAMMA=B+HV*POL
+      HV(I)=-HV(I)/BRAK
+ 90   CONTINUE
+      END
+
+
+      SUBROUTINE CURR_PIPI0(PC,PN,HADCUR)
+C standard TAUOLA current for tau to pi pi0 nu decay 
+C now it has universal form eg. it is straighforward to add 
+C scalar part
+C NOTE:
+C       PC 4-momentum of pi
+C       PN 4-momentum of pi0
+C       06.08.2011  
+      IMPLICIT NONE
+      COMPLEX BWIGS,HADCUR(4),FKPIPL,FRHO_PI
+      COMPLEX*16              FPIBEL
+      REAL  PC(4),PN(4),QQ(4),PKS(4),FPIRHO
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+      INTEGER FF2PIRHO
+      
+      
+      REAL PKSD,QQPKS
+      INTEGER IK,K
+        DO IK=1,4
+         PKS(IK)=PC(IK)+ PN(IK)
+          QQ(IK)=PC(IK)- PN(IK)
+        ENDDO
+C QQ transverse to PKS
+        PKSD =PKS(4)*PKS(4)-PKS(3)*PKS(3)-PKS(2)*PKS(2)-PKS(1)*PKS(1)
+        QQPKS=PKS(4)* QQ(4)-PKS(3)* QQ(3)-PKS(2)* QQ(2)-PKS(1)* QQ(1)
+        DO 31 IK=1,4
+ 31      QQ(IK)=QQ(IK)-PKS(IK)*QQPKS/PKSD
+
+      IF (IVER.EQ.1) THEN 
+       CALL GETFF2PIRHO(FF2PIRHO)
+       IF (FF2PIRHO.EQ.2) THEN ! Belle, 
+C                                  ! all fit parameters, par(1...11), are free
+        DO K=1,4
+         HADCUR(K)=QQ(k)* fpibel(sqrt(pksd),0)
+        ENDDO
+       ELSEIF (FF2PIRHO.EQ.3) THEN ! Belle
+c                             ! all fit parameter free except for 
+c                             !  par(1)=F_pi(0)=1-fixed
+
+        DO K=1,4
+         HADCUR(K)=QQ(k)* fpibel(sqrt(pksd),1)
+        ENDDO
+       ELSE
+        write(*,*) 'problem in 2-scalars current FF2PIRHO=',FF2PIRHO
+        stop
+       ENDIF
+      ELSEIF (IVER.EQ.0) THEN ! cleo
+        DO K=1,4
+         HADCUR(K)=QQ(k)* sqrt(fpirho(sqrt(pksd)))
+        ENDDO
+
+      ELSE
+        write(*,*) 'problem in 2-scalars current IVER=',IVER
+        stop
+      ENDIF
+      END
+
+
+      SUBROUTINE CURR_PIK0(PC,PN,HADCUR)
+C standard TAUOLA current for tau to pi K0 nu decay 
+C now it has universal form eg. it is straighforward to add 
+C scalar part
+C NOTE:
+C       PC 4-momentum of pi
+C       PN 4-momentum of K0
+C       06.08.2011  
+      implicit none
+      COMPLEX BWIGS,HADCUR(4),FKPIPL
+      REAL  PC(4),PN(4),QQ(4),PKS(4),FKPISC,PKSD,QQPKS
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     &                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     &                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     &                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     &                 ,AMK,AMKZ,AMKST,GAMKST,FACT_K0PI
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS 
+      Integer           I,K
+      
+        DO I=1,4
+         PKS(I)=PC(I)+ PN(I)
+          QQ(I)=PC(I)- PN(I)
+        ENDDO
+C QQ transverse to PKS
+        PKSD =PKS(4)*PKS(4)-PKS(3)*PKS(3)-PKS(2)*PKS(2)-PKS(1)*PKS(1)
+        QQPKS=PKS(4)* QQ(4)-PKS(3)* QQ(3)-PKS(2)* QQ(2)-PKS(1)* QQ(1)
+        DO 31 I=1,4
+ 31      QQ(I)=QQ(I)-PKS(I)*QQPKS/PKSD
+
+
+        DO K=1,4
+         HADCUR(K)=QQ(k)*BWIGS(pksd,AMKST,GAMKST)
+        ENDDO
+
+      END
+
+
+      SUBROUTINE CURR_KPI0(PC,PN,HADCUR)
+C standard TAUOLA current for tau to pi pi0 nu decay 
+C now it has universal form eg. it is straighforward to add 
+C scalar part
+C NOTE:
+C       PC 4-momentum of K
+C       PN 4-momentum of pi0
+C       06.08.2011  
+      implicit none
+      COMPLEX BWIGS,HADCUR(4),FKPIPL
+      REAL  PC(4),PN(4),QQ(4),PKS(4),FKPISC,PKSD,QQPKS
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST,FACT_KPI0
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS
+      INTEGER        I,K
+
+        DO 30 I=1,4
+         PKS(I)=PC(I)+ PN(I)
+ 30       QQ(I)=PC(I)- PN(I)
+C QQ transverse to PKS
+        PKSD =PKS(4)*PKS(4)-PKS(3)*PKS(3)-PKS(2)*PKS(2)-PKS(1)*PKS(1)
+        QQPKS=PKS(4)* QQ(4)-PKS(3)* QQ(3)-PKS(2)* QQ(2)-PKS(1)* QQ(1)
+        DO 31 I=1,4
+ 31      QQ(I)=QQ(I)-PKS(I)*QQPKS/PKSD
+        DO K=1,4
+         HADCUR(K)=QQ(k)*BWIGS(pksd,AMKST,GAMKST)
+        ENDDO
+
+      END   
+
+
+      SUBROUTINE CURR_KK0(PC,PN,HADCUR)
+C standard TAUOLA current for tau to K K0 nu decay 
+C now it has universal form eg. it is straighforward to add 
+C scalar part
+C NOTE:
+C       PC 4-momentum of K
+C       PN 4-momentum of K0
+C       06.08.2011  
+      IMPLICIT NONE
+      COMPLEX BWIGS,HADCUR(4),FKK0_RCHT
+      REAL  PC(4),PN(4),QQ(4),PKS(4),PKSD,QQPKS,FPIRK
+      INTEGER I,K
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+        DO I=1,4
+         PKS(I)=PC(I)+ PN(I)
+          QQ(I)=PC(I)- PN(I)
+        ENDDO
+C QQ transverse to PKS
+        PKSD =PKS(4)*PKS(4)-PKS(3)*PKS(3)-PKS(2)*PKS(2)-PKS(1)*PKS(1)
+        QQPKS=PKS(4)* QQ(4)-PKS(3)* QQ(3)-PKS(2)* QQ(2)-PKS(1)* QQ(1)
+        DO 31 I=1,4
+ 31      QQ(I)=QQ(I)-PKS(I)*QQPKS/PKSD
+
+        DO K=1,4
+         HADCUR(K)=QQ(k)*sqrt(fpirk(sqrt(pksd)))
+        ENDDO
+      END
+
+
+      FUNCTION COEF(I,J)
+C clebsh gordan (or so ...)  coefs for 3 scalar final states
+      implicit none
+C IVER=0  TAUOLA cleo COEF(I,J) =  COEFc(I,J)
+C IVER=1  TAUOLA RChL COEF(I,J) =  COEFr(I,J)
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+      REAL COEFc(1:5,0:7)
+      REAL COEFr(1:5,0:7)
+      REAL COEF,COEFrr
+      DATA PI /3.141592653589793238462643/
+      REAL PI
+      DATA ICONT /0/
+      INTEGER ICONT
+      INTEGER I,J
+      REAL FPIc,FPIr
+
+C initialization of FPI matrix defined in ...
+C FPIc is to be used with cleo initialization
+
+C actual choice is made in ???
+
+      DATA  FPIc /93.3E-3/
+
+
+C initialization of COEF matrix defined in ...
+C COEFc is to be used with cleo initialization
+
+      IF (ICONT.EQ.0) THEN
+       ICONT=1
+C
+C*****COEFc(I,J)
+
+       COEFc(1,0)= 2.0*SQRT(2.)/3.0
+       COEFc(2,0)=-2.0*SQRT(2.)/3.0
+C AJW 2/98: Add in the D-wave and I=0 3pi substructure:
+       COEFc(3,0)= 2.0*SQRT(2.)/3.0
+       COEFc(4,0)= FPIc
+       COEFc(5,0)= 0.0
+C
+       COEFc(1,1)=-SQRT(2.)/3.0
+       COEFc(2,1)= SQRT(2.)/3.0
+       COEFc(3,1)= 0.0
+       COEFc(4,1)= FPIc
+       COEFc(5,1)= SQRT(2.)
+
+C
+       COEFc(1,2)=-SQRT(2.)/3.0
+       COEFc(2,2)= SQRT(2.)/3.0
+       COEFc(3,2)= 0.0
+
+       COEFc(4,2)= 0.0
+       COEFc(5,2)=-SQRT(2.)
+
+
+C AJW 11/97: Add in the K*-prim-s, ala Finkemeier&Mirkes
+       COEFc(1,3)= 1./3.
+       COEFc(2,3)=-2./3.
+       COEFc(3,3)= 2./3.
+       COEFc(4,3)= 0.0
+       COEFc(5,3)= 0.0
+C
+       COEFc(1,4)= 1.0/SQRT(2.)/3.0
+       COEFc(2,4)=-1.0/SQRT(2.)/3.0
+       COEFc(3,4)= 0.0
+       COEFc(4,4)= 0.0
+       COEFc(5,4)= 0.0
+C
+       COEFc(1,5)=-SQRT(2.)/3.0
+       COEFc(2,5)= SQRT(2.)/3.0
+       COEFc(3,5)= 0.0
+       COEFc(4,5)= 0.0
+       COEFc(5,5)=-SQRT(2.)
+C
+C AJW 11/97: Add in the K*-prim-s, ala Finkemeier&Mirkes
+       COEFc(1,6)= 1./3.
+       COEFc(2,6)=-2./3.
+       COEFc(3,6)= 2./3.
+       COEFc(4,6)= 0.0
+       COEFc(5,6)=-2.0
+C
+       COEFc(1,7)= 0.0
+       COEFc(2,7)= 0.0
+       COEFc(3,7)= 0.0
+       COEFc(4,7)= 0.0
+       COEFc(5,7)=-SQRT(2.0/3.0)
+
+      ENDIF
+      IF (IVER.EQ.0.OR.J.NE.0) THEN   ! so far rchl only for 3pi modes
+       COEF=COEFc(I,J)
+      ELSEIF (IVER.EQ.1) THEN
+       COEF=COEFrr(I,J)
+      ELSE
+       write(*,*) 'wrong IVER=',IVER
+       stop
+      ENDIF
+      END
+
+
+      SUBROUTINE INIRChL(IVERI)
+C routine to set version no for the currents physics initialization
+C IVER=0  TAUOLA cleo
+C IVER=1  TAUOLA RChL
+
+      implicit none
+      INTEGER IVERI
+
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+      IVER=IVERI
+
+      IF (IVER.EQ.1) THEN
+        CALL RCHL_PARAMETERS(1)
+      ENDIF
+      end
+
+
+      SUBROUTINE INIRChLget(I)
+C routine to get version no for the currents physics initialization
+C IVER=0  TAUOLA cleo
+C IVER=1  TAUOLA RChL
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+
+      I=IVER
+      end
+
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+C RCHL UPDATE - END OF NEW FUNCTIONS
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+C ----------------------------------------------------------------------
+
+
+      SUBROUTINE DEXAA(MODE,ISGN,POL,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+C ----------------------------------------------------------------------
+* THIS SIMULATES TAU DECAY IN TAU REST FRAME
+* INTO NU A1, NEXT A1 DECAYS INTO RHO PI AND FINALLY RHO INTO PI PI.
+* OUTPUT FOUR MOMENTA: PNU   TAUNEUTRINO,
+*                      PAA   A1
+*                      PIM1  PION MINUS (OR PI0) 1      (FOR TAU MINUS)
+*                      PIM2  PION MINUS (OR PI0) 2
+*                      PIPL  PION PLUS  (OR PI-)
+*                      (PIPL,PIM1) FORM A RHO
+C ----------------------------------------------------------------------
+      COMMON / INOUT / INUT,IOUT
+      REAL  POL(4),HV(4),PAA(4),PNU(4),PIM1(4),PIM2(4),PIPL(4),RN(1)
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        CALL DADMAA( -1,ISGN,HV,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+CC      CALL HBOOK1(816,'WEIGHT DISTRIBUTION  DEXAA    $',100,-2.,2.)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+*     =======================
+ 300    CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DADMAA(  0,ISGN,HV,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(816,WT)
+        CALL RANMAR(RN,1)
+        IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+*     =======================
+        CALL DADMAA(  1,ISGN,HV,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+CC      CALL HPRINT(816)
+      ENDIF
+C     =====
+      RETURN
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DEXAA: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DADMAA(MODE,ISGN,HHV,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+C ----------------------------------------------------------------------
+* A1 DECAY UNWEIGHTED EVENTS
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / INOUT / INUT,IOUT
+      REAL  HHV(4)
+      REAL  HV(4),PAA(4),PNU(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL  PDUM1(4),PDUM2(4),PDUM3(4),PDUM4(4),PDUM5(4)
+      REAL*4 RRR(3)
+      REAL*8 SWT, SSWT
+      DATA PI /3.141592653589793238462643/
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        NEVRAW=0
+        NEVACC=0
+        NEVOVR=0
+        SWT=0
+        SSWT=0
+        WTMAX=1E-20
+        DO 15 I=1,500
+        CALL DPHSAA(WT,HV,PDUM1,PDUM2,PDUM3,PDUM4,PDUM5,JAA)
+        IF(WT.GT.WTMAX/1.2) WTMAX=WT*1.2
+15      CONTINUE
+CC      CALL HBOOK1(801,'WEIGHT DISTRIBUTION  DADMAA    $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DPHSAA(WT,HV,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+CC      CALL HFILL(801,WT/WTMAX)
+        NEVRAW=NEVRAW+1
+        SWT=SWT+WT
+ccM.S.>>>>>>
+cc        SSWT=SSWT+WT**2
+        SSWT=SSWT+dble(WT)**2
+ccM.S.<<<<<<
+        CALL RANMAR(RRR,3)
+        RN=RRR(1)
+        IF(WT.GT.WTMAX) NEVOVR=NEVOVR+1
+        IF(RN*WTMAX.GT.WT) GOTO 300
+C ROTATIONS TO BASIC TAU REST FRAME
+        COSTHE=-1.+2.*RRR(2)
+        THET=ACOS(COSTHE)
+        PHI =2*PI*RRR(3)
+        CALL ROTPOL(THET,PHI,PNU)
+        CALL ROTPOL(THET,PHI,PAA)
+        CALL ROTPOL(THET,PHI,PIM1)
+        CALL ROTPOL(THET,PHI,PIM2)
+        CALL ROTPOL(THET,PHI,PIPL)
+        CALL ROTPOL(THET,PHI,HV)
+        DO 44 I=1,3
+ 44     HHV(I)=-ISGN*HV(I)
+        NEVACC=NEVACC+1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        IF(NEVRAW.EQ.0) RETURN
+        PARGAM=SWT/FLOAT(NEVRAW+1)
+        ERROR=0
+        IF(NEVRAW.NE.0) ERROR=SQRT(SSWT/SWT**2-1./FLOAT(NEVRAW))
+        RAT=PARGAM/GAMEL
+        WRITE(IOUT, 7010) NEVRAW,NEVACC,NEVOVR,PARGAM,RAT,ERROR
+CC      CALL HPRINT(801)
+        GAMPMC(5)=RAT
+        GAMPER(5)=ERROR
+CAM     NEVDEC(5)=NEVACC
+      ENDIF
+C     =====
+      RETURN
+ 7003 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMAA INITIALISATION ********',9X,1H*
+     $ /,' *',E20.5,5X,'WTMAX  = MAXIMUM WEIGHT                ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMAA FINAL REPORT  ******** ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVRAW = NO. OF A1  DECAYS TOTAL       ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVACC = NO. OF A1   DECS. ACCEPTED    ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVOVR = NO. OF OVERWEIGHTED EVENTS    ',9X,1H*
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH (A1  DECAY) IN GEV UNITS ',9X,1H*
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.8,5X,'RELATIVE ERROR OF PARTIAL WIDTH        ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DADMAA: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DPHSAA(DGAMT,HV,PN,PAA,PIM1,PIM2,PIPL,JAA)
+C ----------------------------------------------------------------------
+* IT SIMULATES A1  DECAY IN TAU REST FRAME WITH
+* Z-AXIS ALONG A1  MOMENTUM
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS
+      REAL  HV(4),PN(4),PAA(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL*4 RRR(1)
+C MATRIX ELEMENT NUMBER:
+      MNUM=0
+C TYPE OF THE GENERATION:
+      KEYT=1
+      CALL RANMAR(RRR,1)
+      RMOD=RRR(1)
+      IF (RMOD.LT.BRA1) THEN
+       JAA=1
+       AMP1=AMPI
+       AMP2=AMPI
+       AMP3=AMPI
+      ELSE
+       JAA=2
+       AMP1=AMPIZ
+       AMP2=AMPIZ
+       AMP3=AMPI
+      ENDIF
+       CALL CH3PISET(JAA)  ! information on sub-chanel passed for further use.
+      CALL
+     $   DPHTRE(DGAMT,HV,PN,PAA,PIM1,AMP1,PIM2,AMP2,PIPL,AMP3,KEYT,MNUM)
+      END
+      SUBROUTINE DEXKK(MODE,ISGN,POL,PKK,PNU)
+C ----------------------------------------------------------------------
+C TAU DECAY INTO KAON  AND TAU-NEUTRINO
+C IN TAU REST FRAME
+C OUTPUT FOUR MOMENTA: PNU   TAUNEUTRINO,
+C                      PKK   KAON CHARGED
+C ----------------------------------------------------------------------
+      REAL  POL(4),HV(4),PNU(4),PKK(4),RN(1)
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        CALL DADMKK(-1,ISGN,HV,PKK,PNU)
+CC      CALL HBOOK1(815,'WEIGHT DISTRIBUTION  DEXPI    $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        CALL DADMKK( 0,ISGN,HV,PKK,PNU)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(815,WT)
+        CALL RANMAR(RN,1)
+        IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        CALL DADMKK( 1,ISGN,HV,PKK,PNU)
+CC      CALL HPRINT(815)
+      ENDIF
+C     =====
+      RETURN
+      END
+      SUBROUTINE DADMKK(MODE,ISGN,HV,PKK,PNU)
+C ----------------------------------------------------------------------
+C FZ
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / INOUT / INUT,IOUT
+      REAL  PKK(4),PNU(4),HV(4)
+      DATA PI /3.141592653589793238462643/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        NEVTOT=0
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+        NEVTOT=NEVTOT+1
+        EKK= (AMTAU**2+AMK**2-AMNUTA**2)/(2*AMTAU)
+        ENU= (AMTAU**2-AMK**2+AMNUTA**2)/(2*AMTAU)
+        XKK= SQRT(EKK**2-AMK**2)
+C K MOMENTUM
+        CALL SPHERA(XKK,PKK)
+        PKK(4)=EKK
+C TAU-NEUTRINO MOMENTUM
+        DO 30 I=1,3
+30      PNU(I)=-PKK(I)
+        PNU(4)=ENU
+        PXQ=AMTAU*EKK
+        PXN=AMTAU*ENU
+        QXN=PKK(4)*PNU(4)-PKK(1)*PNU(1)-PKK(2)*PNU(2)-PKK(3)*PNU(3)
+        BRAK=(GV**2+GA**2)*(2*PXQ*QXN-AMK**2*PXN)
+     &      +(GV**2-GA**2)*AMTAU*AMNUTA*AMK**2
+        DO 40 I=1,3
+40      HV(I)=-ISGN*2*GA*GV*AMTAU*(2*PKK(I)*QXN-PNU(I)*AMK**2)/BRAK
+        HV(4)=1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        IF(NEVTOT.EQ.0) RETURN
+        FKK=0.0354
+CFZ THERE WAS BRAK/AMTAU**4 BEFORE
+C        GAMM=(GFERMI*FKK)**2/(16.*PI)*AMTAU**3*
+C     *       (BRAK/AMTAU**4)**2
+CZW 7.02.93 here was an error affecting non standard model
+C       configurations only
+        GAMM=(GFERMI*FKK)**2/(16.*PI)*AMTAU**3*
+     $       (BRAK/AMTAU**4)*
+     $       SQRT((AMTAU**2-AMK**2-AMNUTA**2)**2
+     $            -4*AMK**2*AMNUTA**2           )/AMTAU**2
+        ERROR=0
+
+        ERROR=0
+        RAT=GAMM/GAMEL
+        WRITE(IOUT, 7010) NEVTOT,GAMM,RAT,ERROR
+        GAMPMC(6)=RAT
+        GAMPER(6)=ERROR
+CAM     NEVDEC(6)=NEVTOT
+      ENDIF
+C     =====
+      RETURN
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMKK FINAL REPORT   ********',9X,1H*
+     $ /,' *',I20  ,5X,'NEVTOT = NO. OF K  DECAYS TOTAL        ',9X,1H*,
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH ( K DECAY) IN GEV UNITS  ',9X,1H*,
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.8,5X,'RELATIVE ERROR OF PARTIAL WIDTH (STAT.)',9X,1H*
+     $  /,1X,15(5H*****)/)
+      END
+      SUBROUTINE DEXKS(MODE,ISGN,POL,PNU,PKS,PKK,PPI,JKST)
+C ----------------------------------------------------------------------
+C THIS SIMULATES TAU DECAY IN TAU REST FRAME
+C INTO NU K*, THEN K* DECAYS INTO PI0,K+-(JKST=20)
+C OR PI+-,K0(JKST=10).
+C OUTPUT FOUR MOMENTA: PNU   TAUNEUTRINO,
+C                      PKS   K* CHARGED
+C                      PK0   K ZERO
+C                      PKC   K CHARGED
+C                      PIC   PION CHARGED
+C                      PIZ   PION ZERO
+C ----------------------------------------------------------------------
+      COMMON / INOUT / INUT,IOUT
+      REAL  POL(4),HV(4),PKS(4),PNU(4),PKK(4),PPI(4),RN(1)
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+CFZ INITIALISATION DONE WITH THE GHARGED PION NEUTRAL KAON MODE(JKST=10
+        CALL DADMKS( -1,ISGN,HV,PNU,PKS,PKK,PPI,JKST)
+CC      CALL HBOOK1(816,'WEIGHT DISTRIBUTION  DEXKS    $',100,0,2)
+CC      CALL HBOOK1(916,'ABS2 OF HV IN ROUTINE DEXKS   $',100,0,2)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+300     CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DADMKS(  0,ISGN,HV,PNU,PKS,PKK,PPI,JKST)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(816,WT)
+CC      XHELP=HV(1)**2+HV(2)**2+HV(3)**2
+CC      CALL HFILL(916,XHELP)
+        CALL RANMAR(RN,1)
+        IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     ======================================
+        CALL DADMKS( 1,ISGN,HV,PNU,PKS,PKK,PPI,JKST)
+CC      CALL HPRINT(816)
+CC      CALL HPRINT(916)
+      ENDIF
+C     =====
+      RETURN
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DEXKS: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DADMKS(MODE,ISGN,HHV,PNU,PKS,PKK,PPI,JKST)
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS
+      COMMON / INOUT / INUT,IOUT
+      REAL  HHV(4)
+      REAL  HV(4),PKS(4),PNU(4),PKK(4),PPI(4)
+      REAL  PDUM1(4),PDUM2(4),PDUM3(4),PDUM4(4)
+      REAL*4 RRR(3),RMOD(1)
+      REAL*8 SWT, SSWT
+      DATA PI /3.141592653589793238462643/
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        NEVRAW=0
+        NEVACC=0
+        NEVOVR=0
+        SWT=0
+        SSWT=0
+        WTMAX=1E-20
+        DO 15 I=1,5000
+C THE INITIALISATION IS DONE WITH THE 66.7% MODE
+        JKST=10
+        CALL DPHSKS(WT,HV,PDUM1,PDUM2,PDUM3,PDUM4,JKST)
+        IF(WT.GT.WTMAX/1.2) WTMAX=WT*1.2
+15      CONTINUE
+CC      CALL HBOOK1(801,'WEIGHT DISTRIBUTION  DADMKS    $',100,0,2)
+CC      PRINT 7003,WTMAX
+CC      CALL HBOOK1(112,'-------- K* MASS -------- $',100,0.,2.)
+      ELSEIF(MODE.EQ. 0) THEN
+C     =====================================
+        IF(IWARM.EQ.0) GOTO 902
+C  HERE WE CHOOSE RANDOMLY BETWEEN K0 PI+_ (66.7%)
+C  AND K+_ PI0 (33.3%)
+        DEC1=BRKS
+400     CONTINUE
+        CALL RANMAR(RMOD,1)
+        IF(RMOD(1).LT.DEC1) THEN
+          JKST=10
+        ELSE
+          JKST=20
+        ENDIF
+        CALL DPHSKS(WT,HV,PNU,PKS,PKK,PPI,JKST)
+        CALL RANMAR(RRR,3)
+        RN=RRR(1)
+        IF(WT.GT.WTMAX) NEVOVR=NEVOVR+1
+        NEVRAW=NEVRAW+1
+        SWT=SWT+WT
+        SSWT=SSWT+WT**2
+        IF(RN*WTMAX.GT.WT) GOTO 400
+C ROTATIONS TO BASIC TAU REST FRAME
+        COSTHE=-1.+2.*RRR(2)
+        THET=ACOS(COSTHE)
+        PHI =2*PI*RRR(3)
+        CALL ROTOR2(THET,PNU,PNU)
+        CALL ROTOR3( PHI,PNU,PNU)
+        CALL ROTOR2(THET,PKS,PKS)
+        CALL ROTOR3( PHI,PKS,PKS)
+        CALL ROTOR2(THET,PKK,PKK)
+        CALL ROTOR3(PHI,PKK,PKK)
+        CALL ROTOR2(THET,PPI,PPI)
+        CALL ROTOR3( PHI,PPI,PPI)
+        CALL ROTOR2(THET,HV,HV)
+        CALL ROTOR3( PHI,HV,HV)
+        DO 44 I=1,3
+ 44     HHV(I)=-ISGN*HV(I)
+        NEVACC=NEVACC+1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        IF(NEVRAW.EQ.0) RETURN
+        PARGAM=SWT/FLOAT(NEVRAW+1)
+        ERROR=0
+        IF(NEVRAW.NE.0) ERROR=SQRT(SSWT/SWT**2-1./FLOAT(NEVRAW))
+        RAT=PARGAM/GAMEL
+        WRITE(IOUT, 7010) NEVRAW,NEVACC,NEVOVR,PARGAM,RAT,ERROR
+CC      CALL HPRINT(801)
+        GAMPMC(7)=RAT
+        GAMPER(7)=ERROR
+CAM     NEVDEC(7)=NEVACC
+      ENDIF
+C     =====
+      RETURN
+ 7003 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMKS INITIALISATION ********',9X,1H*
+     $ /,' *',E20.5,5X,'WTMAX  = MAXIMUM WEIGHT                ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADMKS FINAL REPORT   ********',9X,1H*
+     $ /,' *',I20  ,5X,'NEVRAW = NO. OF K* DECAYS TOTAL        ',9X,1H*,
+     $ /,' *',I20  ,5X,'NEVACC = NO. OF K*  DECS. ACCEPTED     ',9X,1H*,
+     $ /,' *',I20  ,5X,'NEVOVR = NO. OF OVERWEIGHTED EVENTS    ',9X,1H*
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH (K* DECAY) IN GEV UNITS  ',9X,1H*,
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.8,5X,'RELATIVE ERROR OF PARTIAL WIDTH        ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DADMKS: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DPHSKS(DGAMT,HV,PN,PKS,PKK,PPI,JKST)
+C ----------------------------------------------------------------------
+C IT SIMULATES KAON* DECAY IN TAU REST FRAME WITH
+C Z-AXIS ALONG KAON* MOMENTUM
+C     JKST=10 FOR K* --->K0 + PI+-
+C     JKST=20 FOR K* --->K+- + PI0
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      REAL  HV(4),PT(4),PN(4),PKS(4),PKK(4),PPI(4),QQ(4),RR1(1),RR2(1)
+      DATA PI /3.141592653589793238462643/
+C
+      DATA ICONT /0/
+C THREE BODY PHASE SPACE NORMALISED AS IN BJORKEN-DRELL
+      PHSPAC=1./2**11/PI**5
+C TAU MOMENTUM
+      PT(1)=0.
+      PT(2)=0.
+      PT(3)=0.
+      PT(4)=AMTAU
+      CALL RANMAR(RR1,1)
+C HERE BEGIN THE K0,PI+_ DECAY
+      IF(JKST.EQ.10)THEN
+C     ==================
+C MASS OF (REAL/VIRTUAL) K*
+        AMS1=(AMPI+AMKZ)**2
+        AMS2=(AMTAU-AMNUTA)**2
+        ALP1=ATAN((AMS1-AMKST**2)/AMKST/GAMKST)
+        ALP2=ATAN((AMS2-AMKST**2)/AMKST/GAMKST)
+        CALL RANMAR(RR2,1)
+        PROB1=0.2
+        IF (RR2(1).LT.PROB1) THEN
+C FLAT PHASE SPACE
+         AMX2=AMS1+   RR1(1)*(AMS2-AMS1)
+         AMX=SQRT(AMX2)
+        ELSE
+C PHASE SPACE WITH SAMPLING FOR K* RESONANCE
+         ALP=ALP1+RR1(1)*(ALP2-ALP1)
+         AMX2=AMKST**2+AMKST*GAMKST*TAN(ALP)
+         AMX=SQRT(AMX2)
+        ENDIF
+C merging of the two channels
+        PHSPAC1=(AMS2-AMS1)
+        PHSPAC2=((AMX2-AMKST**2)**2+(AMKST*GAMKST)**2)
+     &                /(AMKST*GAMKST)
+        PHSPAC2=PHSPAC2*(ALP2-ALP1)
+        A1=0.0
+        A2=0.0
+        IF (PHSPAC1.NE.0.0) A1=PROB1    /PHSPAC1
+        IF (PHSPAC2.NE.0.0) A2=(1-PROB1)/PHSPAC2
+
+
+        
+        IF (A1+A2.NE.0.0) THEN
+         PHSPAC=PHSPAC/(A1+A2)
+        ELSE
+         PHSPAC=0
+        ENDIF
+
+C
+C TAU-NEUTRINO MOMENTUM
+        PN(1)=0
+        PN(2)=0
+        PN(4)=1./(2*AMTAU)*(AMTAU**2+AMNUTA**2-AMX**2)
+        PN(3)=-SQRT(ABS((PN(4)-AMNUTA)*(PN(4)+AMNUTA)))
+C
+C K* MOMENTUM
+        PKS(1)=0
+        PKS(2)=0
+        PKS(4)=1./(2*AMTAU)*(AMTAU**2-AMNUTA**2+AMX**2)
+        PKS(3)=-PN(3)
+        PHSPAC=PHSPAC*(4*PI)*(2*PKS(3)/AMTAU)
+C
+CAM
+        ENPI=( AMX**2+AMPI**2-AMKZ**2 ) / ( 2*AMX )
+        PPPI=SQRT(abs(ENPI-AMPI)*(ENPI+AMPI))
+        PHSPAC=PHSPAC*(4*PI)*(2*PPPI/AMX)
+C CHARGED PI MOMENTUM IN KAON* REST FRAME
+        CALL SPHERA(PPPI,PPI)
+        PPI(4)=ENPI
+C NEUTRAL KAON MOMENTUM IN K* REST FRAME
+        DO 20 I=1,3
+20      PKK(I)=-PPI(I)
+        PKK(4)=( AMX**2+AMKZ**2-AMPI**2 ) / ( 2*AMX )
+        EXE=(PKS(4)+PKS(3))/AMX
+C PION AND K  BOOSTED FROM K* REST FRAME TO TAU REST FRAME
+        CALL BOSTR3(EXE,PPI,PPI)
+        CALL BOSTR3(EXE,PKK,PKK)
+
+        CALL DAM2PI(1,PT,PN,PPI,PKK,AMPLIT,HV)
+        DGAMT=1/(2.*AMTAU)*AMPLIT*PHSPAC
+C
+C HERE BEGIN THE K+-,PI0 DECAY
+      ELSEIF(JKST.EQ.20)THEN
+C     ======================
+C MASS OF (REAL/VIRTUAL) K*
+        AMS1=(AMPIZ+AMK)**2
+        AMS2=(AMTAU-AMNUTA)**2
+        ALP1=ATAN((AMS1-AMKST**2)/AMKST/GAMKST)
+        ALP2=ATAN((AMS2-AMKST**2)/AMKST/GAMKST)
+
+        CALL RANMAR(RR2,1)
+        PROB1=0.2
+        IF (RR2(1).LT.PROB1) THEN
+C FLAT PHASE SPACE
+         AMX2=AMS1+   RR1(1)*(AMS2-AMS1)
+         AMX=SQRT(AMX2)
+        ELSE
+C PHASE SPACE WITH SAMPLING FOR K* RESONANCE
+         ALP=ALP1+RR1(1)*(ALP2-ALP1)
+         AMX2=AMKST**2+AMKST*GAMKST*TAN(ALP)
+         AMX=SQRT(AMX2)
+        ENDIF
+C merging of the two channels
+        PHSPAC1=(AMS2-AMS1)
+        PHSPAC2=((AMX2-AMKST**2)**2+(AMKST*GAMKST)**2)
+     &                /(AMKST*GAMKST)
+        PHSPAC2=PHSPAC2*(ALP2-ALP1)
+        A1=0.0
+        A2=0.0
+        IF (PHSPAC1.NE.0.0) A1=PROB1    /PHSPAC1
+        IF (PHSPAC2.NE.0.0) A2=(1-PROB1)/PHSPAC2
+        
+        IF (A1+A2.NE.0.0) THEN
+         PHSPAC=PHSPAC/(A1+A2)
+        ELSE
+         PHSPAC=0
+        ENDIF
+
+C
+C TAU-NEUTRINO MOMENTUM
+        PN(1)=0
+        PN(2)=0
+        PN(4)=1./(2*AMTAU)*(AMTAU**2+AMNUTA**2-AMX**2)
+        PN(3)=-SQRT(ABS((PN(4)-AMNUTA)*(PN(4)+AMNUTA)))
+C KAON* MOMENTUM
+        PKS(1)=0
+        PKS(2)=0
+        PKS(4)=1./(2*AMTAU)*(AMTAU**2-AMNUTA**2+AMX**2)
+        PKS(3)=-PN(3)
+        PHSPAC=PHSPAC*(4*PI)*(2*PKS(3)/AMTAU)
+C
+CAM
+        ENPI=( AMX**2+AMPIZ**2-AMK**2 ) / ( 2*AMX )
+        PPPI=SQRT(abs(ENPI-AMPIZ)*(ENPI+AMPIZ))
+        PHSPAC=PHSPAC*(4*PI)*(2*PPPI/AMX)
+C NEUTRAL PI MOMENTUM IN K* REST FRAME
+        CALL SPHERA(PPPI,PPI)
+        PPI(4)=ENPI
+C CHARGED KAON MOMENTUM IN K* REST FRAME
+        DO 50 I=1,3
+50      PKK(I)=-PPI(I)
+        PKK(4)=( AMX**2+AMK**2-AMPIZ**2 ) / ( 2*AMX )
+        EXE=(PKS(4)+PKS(3))/AMX
+C PION AND K  BOOSTED FROM K* REST FRAME TO TAU REST FRAME
+        CALL BOSTR3(EXE,PPI,PPI)
+        CALL BOSTR3(EXE,PKK,PKK)
+
+        CALL DAM2PI(2,PT,PN,PKK,PPI,AMPLIT,HV)
+        DGAMT=1/(2.*AMTAU)*AMPLIT*PHSPAC
+
+      ENDIF
+
+      RETURN
+      END
+
+
+
+      SUBROUTINE DPHNPI(DGAMT,HVX,PNX,PRX,PPIX,JNPI)
+C ----------------------------------------------------------------------
+C IT SIMULATES MULTIPI DECAY IN TAU REST FRAME WITH
+C Z-AXIS OPPOSITE TO NEUTRINO MOMENTUM
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+     &                ,NAMES
+      CHARACTER NAMES(NMODE)*31
+      REAL*8 WETMAX(20)
+C
+      REAL*8  PN(4),PR(4),PPI(4,9),HV(4)
+      REAL*4  PNX(4),PRX(4),PPIX(4,9),HVX(4)
+      REAL*8  PV(5,9),PT(4),UE(3),BE(3)
+      REAL*8  PAWT,AMX,AMS1,AMS2,PA,PHS,PHSMAX,PMIN,PMAX
+!!! M.S. to fix underflow >>>
+      REAL*8  PHSPAC
+!!! M.S. to fix underflow <<<
+      REAL*8  GAM,BEP,PHI,A,B,C
+      REAL*8  AMPIK
+      REAL*4 RRR(9),RRX(2),RN(1),RR2(1)
+C
+      DATA PI /3.141592653589793238462643/
+      DATA WETMAX /20*1D-15/
+C
+CC--      PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2.*A)
+C
+      PAWT(A,B,C)=
+     $  SQRT(MAX(0.D0,(A**2-(B+C)**2)*(A**2-(B-C)**2)))/(2.D0*A)
+C
+      AMPIK(I,J)=DCDMAS(IDFFIN(I,J))
+C
+C
+      IF ((JNPI.LE.0).OR.JNPI.GT.20) THEN
+       WRITE(6,*) 'JNPI OUTSIDE RANGE DEFINED BY WETMAX; JNPI=',JNPI
+       STOP
+      ENDIF
+
+C TAU MOMENTUM
+      PT(1)=0.
+      PT(2)=0.
+      PT(3)=0.
+      PT(4)=AMTAU
+C
+ 500  CONTINUE
+C MASS OF VIRTUAL W
+      ND=MULPIK(JNPI)
+      PS=0.
+      PHSPAC = 1./2.**5 /PI**2
+      DO 4 I=1,ND
+4     PS  =PS+AMPIK(I,JNPI)
+      CALL RANMAR(RR2,1)
+      AMS1=PS**2
+      AMS2=(AMTAU-AMNUTA)**2
+C
+C
+      AMX2=AMS1+   RR2(1)*(AMS2-AMS1)
+      AMX =SQRT(AMX2)
+      AMW =AMX
+      PHSPAC=PHSPAC * (AMS2-AMS1)
+C
+C TAU-NEUTRINO MOMENTUM
+      PN(1)=0
+      PN(2)=0
+      PN(4)=1./(2*AMTAU)*(AMTAU**2+AMNUTA**2-AMX2)
+      PN(3)=-SQRT(ABS((PN(4)-AMNUTA)*(PN(4)+AMNUTA)))
+C W MOMENTUM
+      PR(1)=0
+      PR(2)=0
+      PR(4)=1./(2*AMTAU)*(AMTAU**2-AMNUTA**2+AMX2)
+      PR(3)=-PN(3)
+      PHSPAC=PHSPAC * (4.*PI) * (2.*PR(3)/AMTAU)
+C
+C AMPLITUDE  (cf YS.Tsai Phys.Rev.D4,2821(1971)
+C    or F.Gilman SH.Rhie Phys.Rev.D31,1066(1985)
+C
+        PXQ=AMTAU*PR(4)
+        PXN=AMTAU*PN(4)
+        QXN=PR(4)*PN(4)-PR(1)*PN(1)-PR(2)*PN(2)-PR(3)*PN(3)
+C HERE WAS AN ERROR. 20.10.91 (ZW)
+C       BRAK=2*(GV**2+GA**2)*(2*PXQ*PXN+AMX2*QXN)
+        BRAK=2*(GV**2+GA**2)*(2*PXQ*QXN+AMX2*PXN)
+     &      -6*(GV**2-GA**2)*AMTAU*AMNUTA*AMX2
+CAM     Assume neutrino mass=0. and sum over final polarisation
+C     BRAK= 2*(AMTAU**2-AMX2) * (AMTAU**2+2.*AMX2)
+      AMPLIT=CCABIB**2*GFERMI**2/2. * BRAK * AMX2*SIGEE(AMX2,JNPI)
+      DGAMT=1./(2.*AMTAU)*AMPLIT*PHSPAC
+C
+C   ISOTROPIC W DECAY IN W REST FRAME
+      PHSMAX = 1.
+      DO 200 I=1,4
+  200 PV(I,1)=PR(I)
+      PV(5,1)=AMW
+      PV(5,ND)=AMPIK(ND,JNPI)
+C    COMPUTE MAX. PHASE SPACE FACTOR
+      PMAX=AMW-PS+AMPIK(ND,JNPI)
+      PMIN=.0
+      DO 220 IL=ND-1,1,-1
+      PMAX=PMAX+AMPIK(IL,JNPI)
+      PMIN=PMIN+AMPIK(IL+1,JNPI)
+  220 PHSMAX=PHSMAX*PAWT(PMAX,PMIN,AMPIK(IL,JNPI))/PMAX
+
+C --- 2.02.94 ZW  9 lines
+      AMX=AMW
+      DO 222 IL=1,ND-2
+      AMS1=.0
+      DO 223 JL=IL+1,ND
+ 223  AMS1=AMS1+AMPIK(JL,JNPI)
+      AMS1=AMS1**2
+      AMX =(AMX-AMPIK(IL,JNPI))
+      AMS2=(AMX)**2
+      PHSMAX=PHSMAX * (AMS2-AMS1)
+ 222  CONTINUE
+      NCONT=0
+  100 CONTINUE
+      NCONT=NCONT+1
+CAM  GENERATE ND-2 EFFECTIVE MASSES
+      PHS=1.D0
+      PHSPAC = 1./2.**(6*ND-7) /PI**(3*ND-4)
+      AMX=AMW
+      CALL RANMAR(RRR,ND-2)
+      DO 230 IL=1,ND-2
+      AMS1=.0D0
+      DO 231 JL=IL+1,ND
+  231 AMS1=AMS1+AMPIK(JL,JNPI)
+      AMS1=AMS1**2
+      AMS2=(AMX-AMPIK(IL,JNPI))**2
+      RR1=RRR(IL)
+      AMX2=AMS1+  RR1*(AMS2-AMS1)
+      AMX=SQRT(AMX2)
+      PV(5,IL+1)=AMX
+      PHSPAC=PHSPAC * (AMS2-AMS1)
+C ---  2.02.94 ZW 1 line 
+      PHS=PHS* (AMS2-AMS1)
+      PA=PAWT(PV(5,IL),PV(5,IL+1),AMPIK(IL,JNPI))
+      PHS   =PHS    *PA/PV(5,IL)
+  230 CONTINUE
+      PA=PAWT(PV(5,ND-1),AMPIK(ND-1,JNPI),AMPIK(ND,JNPI))
+      PHS   =PHS    *PA/PV(5,ND-1)
+      CALL RANMAR(RN,1)
+
+      IF(PHSMAX.NE.0.0) THEN ! TP 5.10.2011 due to rounding errs. 
+                             ! PHSMAX may be zero, protect div. by it
+        WETMAX(JNPI)=1.2D0*MAX(WETMAX(JNPI)/1.2D0,PHS/PHSMAX)
+      ELSE
+        WETMAX(JNPI)=1.2D0*WETMAX(JNPI)/1.2D0
+      ENDIF
+      
+      IF (NCONT.EQ.500 000) THEN
+          XNPI=0.0
+          DO KK=1,ND
+            XNPI=XNPI+AMPIK(KK,JNPI)
+          ENDDO
+       WRITE(6,*) 'ROUNDING INSTABILITY IN DPHNPI ?'
+       WRITE(6,*) 'AMW=',AMW,'XNPI=',XNPI
+       WRITE(6,*) 'IF =AMW= IS NEARLY EQUAL =XNPI= THAT IS IT' 
+       WRITE(6,*) 'PHS=',PHS,'PHSMAX=',PHSMAX 
+       GOTO 500
+      ENDIF
+      IF(RN(1)*PHSMAX*WETMAX(JNPI).GT.PHS) GO TO 100
+C...PERFORM SUCCESSIVE TWO-PARTICLE DECAYS IN RESPECTIVE CM FRAME
+  280 DO 300 IL=1,ND-1
+      PA=PAWT(PV(5,IL),PV(5,IL+1),AMPIK(IL,JNPI))
+      CALL RANMAR(RRX,2)
+      UE(3)=2.*RRX(1)-1.
+      PHI=2.*PI*RRX(2)
+      UE(1)=SQRT(1.D0-UE(3)**2)*COS(PHI)
+      UE(2)=SQRT(1.D0-UE(3)**2)*SIN(PHI)
+      DO 290 J=1,3
+      PPI(J,IL)=PA*UE(J)
+  290 PV(J,IL+1)=-PA*UE(J)
+      PPI(4,IL)=SQRT(PA**2+AMPIK(IL,JNPI)**2)
+      PV(4,IL+1)=SQRT(PA**2+PV(5,IL+1)**2)
+      PHSPAC=PHSPAC *(4.*PI)*(2.*PA/PV(5,IL))
+  300 CONTINUE
+C...LORENTZ TRANSFORM DECAY PRODUCTS TO TAU FRAME
+      DO 310 J=1,4
+  310 PPI(J,ND)=PV(J,ND)
+      DO 340 IL=ND-1,1,-1
+      DO 320 J=1,3
+  320 BE(J)=PV(J,IL)/PV(4,IL)
+      GAM=PV(4,IL)/PV(5,IL)
+      DO 340 I=IL,ND
+      BEP=BE(1)*PPI(1,I)+BE(2)*PPI(2,I)+BE(3)*PPI(3,I)
+      DO 330 J=1,3
+  330 PPI(J,I)=PPI(J,I)+GAM*(GAM*BEP/(1.D0+GAM)+PPI(4,I))*BE(J)
+      PPI(4,I)=GAM*(PPI(4,I)+BEP)
+  340 CONTINUE
+C
+            HV(4)=1.
+            HV(3)=0.
+            HV(2)=0.
+            HV(1)=0.
+      DO K=1,4
+        PNX(K)=PN(K)
+        PRX(K)=PR(K)
+        HVX(K)=HV(K)
+        DO L=1,ND
+          PPIX(K,L)=PPI(K,L)
+        ENDDO
+      ENDDO
+      RETURN
+      END
+      FUNCTION SIGEE(Q2,JNP)                                           
+C ----------------------------------------------------------------------
+C  e+e- cross section in the (1.GEV2,AMTAU**2) region                   
+C  normalised to sig0 = 4/3 pi alfa2                                    
+C  used in matrix element for multipion tau decays                      
+C  cf YS.Tsai        Phys.Rev D4 ,2821(1971)                            
+C     F.Gilman et al Phys.Rev D17,1846(1978)                            
+C     C.Kiesling, to be pub. in High Energy e+e- Physics (1988)         
+C  DATSIG(*,1) = e+e- -> pi+pi-2pi0                                     
+C  DATSIG(*,2) = e+e- -> 2pi+2pi-                                       
+C  DATSIG(*,3) = 5-pion contribution (a la TN.Pham et al)               
+C                (Phys Lett 78B,623(1978)                               
+C  DATSIG(*,5) = e+e- -> 6pi                                            
+C                                                                       
+C  4- and 6-pion cross sections from data                               
+C  5-pion contribution related to 4-pion cross section                  
+C                                                                       
+C     Called by DPHNPI                                                  
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+C                                                                       
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+        REAL*4 DATSIG(17,6)                                             
+C                                                                       
+      DATA DATSIG/                                                      
+     1  7.40,12.00,16.15,21.25,24.90,29.55,34.15,37.40,37.85,37.40,     
+     2 36.00,33.25,30.50,27.70,24.50,21.25,18.90,                       
+     3  1.24, 2.50, 3.70, 5.40, 7.45,10.75,14.50,18.20,22.30,28.90,     
+     4 29.35,25.60,22.30,18.60,14.05,11.60, 9.10,                       
+     5 17*.0,                                                           
+     6 17*.0,                                                           
+     7 9*.0,.65,1.25,2.20,3.15,5.00,5.75,7.80,8.25,                     
+     8 17*.0/                                                           
+      DATA SIG0 / 86.8 /                                                
+      DATA PI /3.141592653589793238462643/                              
+      DATA INIT / 0 /                                                   
+C                          
+        JNPI=JNP
+        IF(JNP.EQ.4) JNPI=3                                             
+        IF(JNP.EQ.3) JNPI=4
+      IF(INIT.EQ.0) THEN                                                
+        INIT=1                                                          
+C AJWMOD: initialize if called from outside QQ:
+C        IF (AMPI.LT.0.139) AMPI = 0.1395675
+        AMPI2=AMPI**2                                                   
+        FPI = .943*AMPI                                                 
+        DO 100 I=1,17                                                   
+        DATSIG(I,2) = DATSIG(I,2)/2.                                    
+        DATSIG(I,1) = DATSIG(I,1) + DATSIG(I,2)                         
+        S = 1.025+(I-1)*.05                                             
+        FACT=0.                                                         
+        S2=S**2                                                         
+        DO 200 J=1,17                                                   
+        T= 1.025+(J-1)*.05                                              
+        IF(T . GT. S-AMPI ) GO TO 201                                   
+        T2=T**2                                                         
+        FACT=(T2/S2)**2*SQRT((S2-T2-AMPI2)**2-4.*T2*AMPI2)/S2 *2.*T*.05 
+        FACT = FACT * (DATSIG(J,1)+DATSIG(J+1,1))                       
+ 200    DATSIG(I,3) = DATSIG(I,3) + FACT                                
+ 201    DATSIG(I,3) = DATSIG(I,3) /(2*PI*FPI)**2                        
+        DATSIG(I,4) = DATSIG(I,3)                                       
+        DATSIG(I,6) = DATSIG(I,5)                                       
+ 100    CONTINUE                                                        
+C       WRITE(6,1000) DATSIG                                            
+ 1000   FORMAT(///1X,' EE SIGMA USED IN MULTIPI DECAYS'/                
+     %        (17F7.2/))                                                
+      ENDIF                                                             
+      Q=SQRT(Q2)                                                        
+      QMIN=1.                                                           
+      IF(Q.LT.QMIN) THEN                                                
+        SIGEE=DATSIG(1,JNPI)+                                           
+     &       (DATSIG(2,JNPI)-DATSIG(1,JNPI))*(Q-1.)/.05                 
+      ELSEIF(Q.LT.1.8) THEN                                             
+        DO 1 I=1,16                                                     
+        QMAX = QMIN + .05                                               
+        IF(Q.LT.QMAX) GO TO 2                                           
+        QMIN = QMIN + .05                                               
+ 1      CONTINUE                                                        
+ 2      SIGEE=DATSIG(I,JNPI)+                                           
+     &       (DATSIG(I+1,JNPI)-DATSIG(I,JNPI)) * (Q-QMIN)/.05           
+      ELSEIF(Q.GT.1.8) THEN                                             
+        SIGEE=DATSIG(17,JNPI)+                                          
+     &       (DATSIG(17,JNPI)-DATSIG(16,JNPI)) * (Q-1.8)/.05            
+      ENDIF                                                             
+      IF(SIGEE.LT..0) SIGEE=0.                                          
+C                                                                       
+      SIGEE = SIGEE/(6.*PI**2*SIG0)                                     
+C                                                                       
+      RETURN                                                            
+      END                                                               
+
+      FUNCTION SIGOLD(Q2,JNPI)
+C ----------------------------------------------------------------------
+C  e+e- cross section in the (1.GEV2,AMTAU**2) region
+C  normalised to sig0 = 4/3 pi alfa2
+C  used in matrix element for multipion tau decays
+C  cf YS.Tsai        Phys.Rev D4 ,2821(1971)
+C     F.Gilman et al Phys.Rev D17,1846(1978)
+C     C.Kiesling, to be pub. in High Energy e+e- Physics (1988)
+C  DATSIG(*,1) = e+e- -> pi+pi-2pi0
+C  DATSIG(*,2) = e+e- -> 2pi+2pi-
+C  DATSIG(*,3) = 5-pion contribution (a la TN.Pham et al)
+C                (Phys Lett 78B,623(1978)
+C  DATSIG(*,4) = e+e- -> 6pi
+C
+C  4- and 6-pion cross sections from data
+C  5-pion contribution related to 4-pion cross section
+C
+C     Called by DPHNPI
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      REAL*4 DATSIG(17,4)
+C
+      DATA DATSIG/
+     1  7.40,12.00,16.15,21.25,24.90,29.55,34.15,37.40,37.85,37.40,
+     2 36.00,33.25,30.50,27.70,24.50,21.25,18.90,
+     3  1.24, 2.50, 3.70, 5.40, 7.45,10.75,14.50,18.20,22.30,28.90,
+     4 29.35,25.60,22.30,18.60,14.05,11.60, 9.10,
+     5 17*.0,
+     6 9*.0,.65,1.25,2.20,3.15,5.00,5.75,7.80,8.25/
+      DATA SIG0 / 86.8 /
+      DATA PI /3.141592653589793238462643/
+      DATA INIT / 0 /
+C
+      IF(INIT.EQ.0) THEN
+        INIT=1
+        AMPI2=AMPI**2
+        FPI = .943*AMPI
+        DO 100 I=1,17
+        DATSIG(I,2) = DATSIG(I,2)/2.
+        DATSIG(I,1) = DATSIG(I,1) + DATSIG(I,2)
+        S = 1.025+(I-1)*.05
+        FACT=0.
+        S2=S**2
+        DO 200 J=1,17
+        T= 1.025+(J-1)*.05
+        IF(T . GT. S-AMPI ) GO TO 201
+        T2=T**2
+        FACT=(T2/S2)**2*SQRT((S2-T2-AMPI2)**2-4.*T2*AMPI2)/S2 *2.*T*.05
+        FACT = FACT * (DATSIG(J,1)+DATSIG(J+1,1))
+ 200    DATSIG(I,3) = DATSIG(I,3) + FACT
+ 201    DATSIG(I,3) = DATSIG(I,3) /(2*PI*FPI)**2
+ 100    CONTINUE
+C       WRITE(6,1000) DATSIG
+ 1000   FORMAT(///1X,' EE SIGMA USED IN MULTIPI DECAYS'/
+     %        (17F7.2/))
+      ENDIF
+      Q=SQRT(Q2)
+      QMIN=1.
+      IF(Q.LT.QMIN) THEN
+        SIGEE=DATSIG(1,JNPI)+
+     &       (DATSIG(2,JNPI)-DATSIG(1,JNPI))*(Q-1.)/.05
+      ELSEIF(Q.LT.1.8) THEN
+        DO 1 I=1,16
+        QMAX = QMIN + .05
+        IF(Q.LT.QMAX) GO TO 2
+        QMIN = QMIN + .05
+ 1      CONTINUE
+ 2      SIGEE=DATSIG(I,JNPI)+
+     &       (DATSIG(I+1,JNPI)-DATSIG(I,JNPI)) * (Q-QMIN)/.05
+      ELSEIF(Q.GT.1.8) THEN
+        SIGEE=DATSIG(17,JNPI)+
+     &       (DATSIG(17,JNPI)-DATSIG(16,JNPI)) * (Q-1.8)/.05
+      ENDIF
+      IF(SIGEE.LT..0) SIGEE=0.
+C
+      SIGEE = SIGEE/(6.*PI**2*SIG0)
+      SIGOLD=SIGEE
+C
+      RETURN
+      END
+      SUBROUTINE DPHSPK(DGAMT,HV,PN,PAA,PNPI,JAA)
+C ----------------------------------------------------------------------
+* IT SIMULATES THREE PI (K) DECAY IN THE TAU REST FRAME
+* Z-AXIS ALONG HADRONIC SYSTEM
+C ----------------------------------------------------------------------
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+     &                ,NAMES
+      CHARACTER NAMES(NMODE)*31
+
+      REAL  HV(4),PN(4),PAA(4),PIM1(4),PIM2(4),PIPL(4),PNPI(4,9)
+C MATRIX ELEMENT NUMBER:
+      MNUM=JAA
+C TYPE OF THE GENERATION:
+      KEYT=4
+      IF(JAA.EQ.7) KEYT=3
+C --- MASSES OF THE DECAY PRODUCTS
+       AMP1=DCDMAS(IDFFIN(1,JAA+NM4+NM5+NM6))
+       AMP2=DCDMAS(IDFFIN(2,JAA+NM4+NM5+NM6))
+       AMP3=DCDMAS(IDFFIN(3,JAA+NM4+NM5+NM6))
+      CALL
+     $   DPHTRE(DGAMT,HV,PN,PAA,PIM1,AMP1,PIM2,AMP2,PIPL,AMP3,KEYT,MNUM)
+            DO I=1,4
+              PNPI(I,1)=PIM1(I)
+              PNPI(I,2)=PIM2(I)
+              PNPI(I,3)=PIPL(I)
+            ENDDO
+      END
+
+
+
+
+      SUBROUTINE
+     $   DPHTRE(DGAMT,HV,PN,PAA,PIM1,AMPA,PIM2,AMPB,PIPL,AMP3,KEYT,MNUM)
+C ----------------------------------------------------------------------
+* IT SIMULATES A1  DECAY IN TAU REST FRAME WITH
+* Z-AXIS ALONG A1  MOMENTUM
+* it can be also used to generate K K pi and K pi pi tau decays.
+* INPUT PARAMETERS
+* KEYT - algorithm controlling switch
+*  2   - flat phase space PIM1 PIM2 symmetrized statistical factor 1/2
+*  1   - like 1 but peaked around a1 and rho (two channels) masses.
+*  3   - peaked around omega, all particles different
+* other- flat phase space, all particles different
+* AMP1 - mass of first pi, etc. (1-3)
+* MNUM - matrix element type
+*  0   - a1 matrix element
+* 1-6  - matrix element for K pi pi, K K pi decay modes
+*  7   - pi- pi0 gamma matrix element
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL  HV(4),PT(4),PN(4),PAA(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL  PR(4)
+      REAL*4 RRR(5)
+      DATA PI /3.141592653589793238462643/
+      DATA ICONT /0/
+      XLAM(X,Y,Z)=SQRT(ABS((X-Y-Z)**2-4.0*Y*Z))
+C AMRO, GAMRO IS ONLY A PARAMETER FOR GETING HIGHT EFFICIENCY
+C
+C THREE BODY PHASE SPACE NORMALISED AS IN BJORKEN-DRELL
+C D**3 P /2E/(2PI)**3 (2PI)**4 DELTA4(SUM P)
+      PHSPAC=1./2**17/PI**8
+C TAU MOMENTUM
+      PT(1)=0.
+      PT(2)=0.
+      PT(3)=0.
+      PT(4)=AMTAU
+C
+      CALL RANMAR(RRR,5)
+      RR=RRR(5)
+C
+      CALL CHOICE(MNUM,RR,ICHAN,PROB1,PROB2,PROB3,
+     $            AMRX,GAMRX,AMRA,GAMRA,AMRB,GAMRB)
+      IF     (ICHAN.EQ.1) THEN
+        AMP1=AMPB
+        AMP2=AMPA
+      ELSEIF (ICHAN.EQ.2) THEN
+        AMP1=AMPA
+        AMP2=AMPB
+      ELSE
+        AMP1=AMPB
+        AMP2=AMPA
+      ENDIF
+CAM
+        RR1=RRR(1)
+        AMS1=(AMP1+AMP2+AMP3)**2
+        AMS2=(AMTAU-AMNUTA)**2
+* PHASE SPACE WITH SAMPLING FOR A1  RESONANCE
+        ALP1=ATAN((AMS1-AMRX**2)/AMRX/GAMRX)
+        ALP2=ATAN((AMS2-AMRX**2)/AMRX/GAMRX)
+        ALP=ALP1+RR1*(ALP2-ALP1)
+        AM3SQ =AMRX**2+AMRX*GAMRX*TAN(ALP)
+        AM3 =SQRT(AM3SQ)
+        PHSPAC=PHSPAC*((AM3SQ-AMRX**2)**2+(AMRX*GAMRX)**2)/(AMRX*GAMRX)
+        PHSPAC=PHSPAC*(ALP2-ALP1)
+C MASS OF (REAL/VIRTUAL) RHO -
+        RR2=RRR(2)
+        AMS1=(AMP2+AMP3)**2
+        AMS2=(AM3-AMP1)**2
+      IF (ICHAN.LE.2) THEN
+* PHASE SPACE WITH SAMPLING FOR RHO RESONANCE,
+        ALP1=ATAN((AMS1-AMRA**2)/AMRA/GAMRA)
+        ALP2=ATAN((AMS2-AMRA**2)/AMRA/GAMRA)
+        ALP=ALP1+RR2*(ALP2-ALP1)
+        AM2SQ =AMRA**2+AMRA*GAMRA*TAN(ALP)
+        AM2 =SQRT(AM2SQ)
+C --- THIS PART OF THE JACOBIAN WILL BE RECOVERED LATER ---------------
+C     PHSPAC=PHSPAC*(ALP2-ALP1)
+C     PHSPAC=PHSPAC*((AM2SQ-AMRA**2)**2+(AMRA*GAMRA)**2)/(AMRA*GAMRA)
+C----------------------------------------------------------------------
+      ELSE
+* FLAT PHASE SPACE;
+        AM2SQ=AMS1+   RR2*(AMS2-AMS1)
+        AM2 =SQRT(AM2SQ)
+        PHF0=(AMS2-AMS1)
+      ENDIF
+* RHO RESTFRAME, DEFINE PIPL AND PIM1
+        ENQ1=(AM2SQ-AMP2**2+AMP3**2)/(2*AM2)
+        ENQ2=(AM2SQ+AMP2**2-AMP3**2)/(2*AM2)
+        PPI=         ENQ1**2-AMP3**2
+        PPPI=SQRT(ABS(ENQ1**2-AMP3**2))
+C --- this part of jacobian will be recovered later
+        PHF1=(4*PI)*(2*PPPI/AM2)
+* PI MINUS MOMENTUM IN RHO REST FRAME
+        CALL SPHERA(PPPI,PIPL)
+        PIPL(4)=ENQ1
+* PI0 1 MOMENTUM IN RHO REST FRAME
+        DO 30 I=1,3
+ 30     PIM1(I)=-PIPL(I)
+        PIM1(4)=ENQ2
+* A1 REST FRAME, DEFINE PIM2
+*       RHO  MOMENTUM
+        PR(1)=0
+        PR(2)=0
+        PR(4)=1./(2*AM3)*(AM3**2+AM2**2-AMP1**2)
+        PR(3)= SQRT(ABS(PR(4)**2-AM2**2))
+        PPI  =          PR(4)**2-AM2**2
+*       PI0 2 MOMENTUM
+        PIM2(1)=0
+        PIM2(2)=0
+        PIM2(4)=1./(2*AM3)*(AM3**2-AM2**2+AMP1**2)
+        PIM2(3)=-PR(3)
+      PHF2=(4*PI)*(2*PR(3)/AM3)
+* OLD PIONS BOOSTED FROM RHO REST FRAME TO A1 REST FRAME
+      EXE=(PR(4)+PR(3))/AM2
+      CALL BOSTR3(EXE,PIPL,PIPL)
+      CALL BOSTR3(EXE,PIM1,PIM1)
+      RR3=RRR(3)
+      RR4=RRR(4)
+CAM   THET =PI*RR3
+      THET =ACOS(-1.+2*RR3)
+      PHI = 2*PI*RR4
+      CALL ROTPOL(THET,PHI,PIPL)
+      CALL ROTPOL(THET,PHI,PIM1)
+      CALL ROTPOL(THET,PHI,PIM2)
+      CALL ROTPOL(THET,PHI,PR)
+C
+* NOW TO THE TAU REST FRAME, DEFINE A1 AND NEUTRINO MOMENTA
+* A1  MOMENTUM
+      PAA(1)=0
+      PAA(2)=0
+      PAA(4)=1./(2*AMTAU)*(AMTAU**2-AMNUTA**2+AM3**2)
+      PAA(3)= SQRT(ABS(PAA(4)**2-AM3**2))
+      PPI   =          PAA(4)**2-AM3**2
+      PHSPAC=PHSPAC*(4*PI)*(2*PAA(3)/AMTAU)
+* TAU-NEUTRINO MOMENTUM
+      PN(1)=0
+      PN(2)=0
+      PN(4)=1./(2*AMTAU)*(AMTAU**2+AMNUTA**2-AM3**2)
+      PN(3)=-PAA(3)
+C HERE WE CORRECT FOR THE JACOBIANS OF THE TWO CHAINS
+C ---FIRST CHANNEL ------- PIM1+PIPL
+        AMS1=(AMP2+AMP3)**2
+        AMS2=(AM3-AMP1)**2
+        ALP1=ATAN((AMS1-AMRA**2)/AMRA/GAMRA)
+        ALP2=ATAN((AMS2-AMRA**2)/AMRA/GAMRA)
+       XPRO =      (PIM1(3)+PIPL(3))**2
+     $            +(PIM1(2)+PIPL(2))**2+(PIM1(1)+PIPL(1))**2
+       AM2SQ=-XPRO+(PIM1(4)+PIPL(4))**2
+C JACOBIAN OF SPEEDING
+       FF1   =       ((AM2SQ-AMRA**2)**2+(AMRA*GAMRA)**2)/(AMRA*GAMRA)
+       FF1   =FF1     *(ALP2-ALP1)
+C LAMBDA OF RHO DECAY
+       GG1   =       (4*PI)*(XLAM(AM2SQ,AMP2**2,AMP3**2)/AM2SQ)
+C LAMBDA OF A1 DECAY
+       GG1   =GG1   *(4*PI)*SQRT(4*XPRO/AM3SQ)
+       XJAJE=GG1*(AMS2-AMS1)
+C ---SECOND CHANNEL ------ PIM2+PIPL
+       AMS1=(AMP1+AMP3)**2
+       AMS2=(AM3-AMP2)**2
+        ALP1=ATAN((AMS1-AMRB**2)/AMRB/GAMRB)
+        ALP2=ATAN((AMS2-AMRB**2)/AMRB/GAMRB)
+       XPRO =      (PIM2(3)+PIPL(3))**2
+     $            +(PIM2(2)+PIPL(2))**2+(PIM2(1)+PIPL(1))**2
+       AM2SQ=-XPRO+(PIM2(4)+PIPL(4))**2
+       FF2   =       ((AM2SQ-AMRB**2)**2+(AMRB*GAMRB)**2)/(AMRB*GAMRB)
+       FF2   =FF2     *(ALP2-ALP1)
+       GG2   =       (4*PI)*(XLAM(AM2SQ,AMP1**2,AMP3**2)/AM2SQ)
+       GG2   =GG2   *(4*PI)*SQRT(4*XPRO/AM3SQ)
+       XJADW=GG2*(AMS2-AMS1)
+C
+       A1=0.0
+       A2=0.0
+       A3=0.0
+       XJAC1=FF1*GG1
+       XJAC2=FF2*GG2
+       IF (ICHAN.EQ.2) THEN
+         XJAC3=XJADW
+       ELSE
+         XJAC3=XJAJE
+       ENDIF
+       IF (XJAC1.NE.0.0) A1=PROB1/XJAC1
+       IF (XJAC2.NE.0.0) A2=PROB2/XJAC2
+       IF (XJAC3.NE.0.0) A3=PROB3/XJAC3
+C
+       IF (A1+A2+A3.NE.0.0) THEN
+         PHSPAC=PHSPAC/(A1+A2+A3)
+       ELSE
+         PHSPAC=0.0
+       ENDIF
+       IF(ICHAN.EQ.2) THEN
+        DO 70 I=1,4
+        X=PIM1(I)
+        PIM1(I)=PIM2(I)
+ 70     PIM2(I)=X
+       ENDIF
+* ALL PIONS BOOSTED FROM A1  REST FRAME TO TAU REST FRAME
+* Z-AXIS ANTIPARALLEL TO NEUTRINO MOMENTUM
+      EXE=(PAA(4)+PAA(3))/AM3
+      CALL BOSTR3(EXE,PIPL,PIPL)
+      CALL BOSTR3(EXE,PIM1,PIM1)
+      CALL BOSTR3(EXE,PIM2,PIM2)
+      CALL BOSTR3(EXE,PR,PR)
+C PARTIAL WIDTH CONSISTS OF PHASE SPACE AND AMPLITUDE
+      IF (MNUM.EQ.8) THEN
+        CALL DAMPOG(PT,PN,PIM1,PIM2,PIPL,AMPLIT,HV)
+C      ELSEIF (MNUM.EQ.0) THEN
+C        CALL DAMPAA(PT,PN,PIM1,PIM2,PIPL,AMPLIT,HV)
+      ELSE
+        CALL DAMPPK(MNUM,PT,PN,PIM1,PIM2,PIPL,AMPLIT,HV)
+      ENDIF
+      IF (KEYT.EQ.1.OR.KEYT.EQ.2) THEN
+C THE STATISTICAL FACTOR FOR IDENTICAL PI-S IS CANCELLED WITH
+C TWO, FOR TWO MODES OF A1 DECAY NAMELLY PI+PI-PI- AND PI-PI0PI0
+        PHSPAC=PHSPAC*2.0
+        PHSPAC=PHSPAC/2.
+      ENDIF
+      DGAMT=1/(2.*AMTAU)*AMPLIT*PHSPAC
+      END
+      SUBROUTINE DAMPAA(PT,PN,PIM1,PIM2,PIPL,AMPLIT,HV)
+C ----------------------------------------------------------------------
+* CALCULATES DIFFERENTIAL CROSS SECTION AND POLARIMETER VECTOR
+* FOR TAU DECAY INTO A1, A1 DECAYS NEXT INTO RHO+PI AND RHO INTO PI+PI.
+* ALL SPIN EFFECTS IN THE FULL DECAY CHAIN ARE TAKEN INTO ACCOUNT.
+* CALCULATIONS DONE IN TAU REST FRAME WITH Z-AXIS ALONG NEUTRINO MOMENT
+* THE ROUTINE IS WRITEN FOR ZERO NEUTRINO MASS.
+C
+C     called by : DPHSAA
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON /TESTA1/ KEYA1
+      REAL  HV(4),PT(4),PN(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL  PAA(4),VEC1(4),VEC2(4)
+      REAL  PIVEC(4),PIAKS(4),HVM(4)
+      COMPLEX BWIGN,HADCUR(4),FPIK
+      DATA ICONT /1/
+C
+* F CONSTANTS FOR A1, A1-RHO-PI, AND RHO-PI-PI
+*
+      DATA  FPI /93.3E-3/
+* THIS INLINE FUNCT. CALCULATES THE SCALAR PART OF THE PROPAGATOR
+      BWIGN(XM,AM,GAMMA)=1./CMPLX(XM**2-AM**2,GAMMA*AM)
+C
+* FOUR MOMENTUM OF A1
+      DO 10 I=1,4
+   10 PAA(I)=PIM1(I)+PIM2(I)+PIPL(I)
+* MASSES OF A1, AND OF TWO PI-PAIRS WHICH MAY FORM RHO
+      XMAA   =SQRT(ABS(PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2))
+      XMRO1  =SQRT(ABS((PIPL(4)+PIM1(4))**2-(PIPL(1)+PIM1(1))**2
+     $                -(PIPL(2)+PIM1(2))**2-(PIPL(3)+PIM1(3))**2))
+      XMRO2  =SQRT(ABS((PIPL(4)+PIM2(4))**2-(PIPL(1)+PIM2(1))**2
+     $                -(PIPL(2)+PIM2(2))**2-(PIPL(3)+PIM2(3))**2))
+* ELEMENTS OF HADRON CURRENT
+      PROD1  =PAA(4)*(PIM1(4)-PIPL(4))-PAA(1)*(PIM1(1)-PIPL(1))
+     $       -PAA(2)*(PIM1(2)-PIPL(2))-PAA(3)*(PIM1(3)-PIPL(3))
+      PROD2  =PAA(4)*(PIM2(4)-PIPL(4))-PAA(1)*(PIM2(1)-PIPL(1))
+     $       -PAA(2)*(PIM2(2)-PIPL(2))-PAA(3)*(PIM2(3)-PIPL(3))
+      DO 40 I=1,4
+      VEC1(I)= PIM1(I)-PIPL(I) -PAA(I)*PROD1/XMAA**2
+ 40   VEC2(I)= PIM2(I)-PIPL(I) -PAA(I)*PROD2/XMAA**2
+* HADRON CURRENT SATURATED WITH A1 AND RHO RESONANCES
+      IF (KEYA1.EQ.1) THEN
+        FA1=9.87
+        FAROPI=1.0
+        FRO2PI=1.0
+        FNORM=FA1/SQRT(2.)*FAROPI*FRO2PI
+        DO 45 I=1,4
+        HADCUR(I)= CMPLX(FNORM) *AMA1**2*BWIGN(XMAA,AMA1,GAMA1)
+     $              *(CMPLX(VEC1(I))*AMRO**2*BWIGN(XMRO1,AMRO,GAMRO)
+     $               +CMPLX(VEC2(I))*AMRO**2*BWIGN(XMRO2,AMRO,GAMRO))
+ 45     CONTINUE
+      ELSE
+        FNORM=2.0*SQRT(2.)/3.0/FPI
+        GAMAX=GAMA1*GFUN(XMAA**2)/GFUN(AMA1**2)
+        DO 46 I=1,4
+        HADCUR(I)= CMPLX(FNORM) *AMA1**2*BWIGN(XMAA,AMA1,GAMAX)
+     $              *(CMPLX(VEC1(I))*FPIK(XMRO1)
+     $               +CMPLX(VEC2(I))*FPIK(XMRO2))
+ 46     CONTINUE
+      ENDIF
+C
+* CALCULATE PI-VECTORS: VECTOR AND AXIAL
+      CALL CLVEC(HADCUR,PN,PIVEC)
+      CALL CLAXI(HADCUR,PN,PIAKS)
+      CALL CLNUT(HADCUR,BRAKM,HVM)
+* SPIN INDEPENDENT PART OF DECAY DIFF-CROSS-SECT. IN TAU REST  FRAME
+      BRAK= (GV**2+GA**2)*PT(4)*PIVEC(4) +2.*GV*GA*PT(4)*PIAKS(4)
+     &     +2.*(GV**2-GA**2)*AMNUTA*AMTAU*BRAKM
+      AMPLIT=(GFERMI*CCABIB)**2*BRAK/2.
+C THE STATISTICAL FACTOR FOR IDENTICAL PI-S WAS CANCELLED WITH
+C TWO, FOR TWO MODES OF A1 DECAY NAMELLY PI+PI-PI- AND PI-PI0PI0
+C POLARIMETER VECTOR IN TAU REST FRAME
+      DO 90 I=1,3
+      HV(I)=-(AMTAU*((GV**2+GA**2)*PIAKS(I)+2.*GV*GA*PIVEC(I)))
+     &      +(GV**2-GA**2)*AMNUTA*AMTAU*HVM(I)
+C HV IS DEFINED FOR TAU-    WITH GAMMA=B+HV*POL
+      HV(I)=-HV(I)/BRAK
+ 90   CONTINUE
+      END
+      FUNCTION GFUN(QKWA)
+C ****************************************************************
+C     G-FUNCTION USED TO INRODUCE ENERGY DEPENDENCE IN A1 WIDTH
+C ****************************************************************
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+       IF (QKWA.LT.(AMRO+AMPI)**2) THEN
+          GFUN=4.1*(QKWA-9*AMPIZ**2)**3
+     $        *(1.-3.3*(QKWA-9*AMPIZ**2)+5.8*(QKWA-9*AMPIZ**2)**2)
+       ELSE
+          GFUN=QKWA*(1.623+10.38/QKWA-9.32/QKWA**2+0.65/QKWA**3)
+       ENDIF
+      END
+      COMPLEX FUNCTION BWIGS(S,M,G)
+C **********************************************************
+C     P-WAVE BREIT-WIGNER  FOR K*
+C **********************************************************
+      REAL S,M,G
+      REAL PI,PIM,QS,QM,W,GS,MK
+C AJW: add K*-prim possibility:
+      REAL PM, PG, PBETA
+      COMPLEX BW,BWP
+      DATA INIT /0/
+      P(A,B,C)=SQRT(ABS(ABS(((A+B-C)**2-4.*A*B)/4./A)
+     $                    +(((A+B-C)**2-4.*A*B)/4./A))/2.0)
+C ------------ PARAMETERS --------------------
+      IF (INIT.EQ.0) THEN
+      INIT=1
+      PI=3.141592654
+      PIM=.139
+      MK=.493667
+C AJW: add K*-prim possibility:
+      PM = PKORB(1,16)
+      PG = PKORB(2,16)
+      PBETA = PKORB(3,16)
+C -------  BREIT-WIGNER -----------------------
+         ENDIF
+         QS=P(S,PIM**2,MK**2)
+         QM=P(M**2,PIM**2,MK**2)
+         W=SQRT(S)
+         GS=G*(M/W)*(QS/QM)**3
+         BW=M**2/CMPLX(M**2-S,-M*GS)
+         QPM=P(PM**2,PIM**2,MK**2)
+         G1=PG*(PM/W)*(QS/QPM)**3
+         BWP=PM**2/CMPLX(PM**2-S,-PM*G1)
+         BWIGS= (BW+PBETA*BWP)/(1+PBETA)
+      RETURN
+      END
+      COMPLEX FUNCTION BWIG(S,M,G)
+C **********************************************************
+C     P-WAVE BREIT-WIGNER  FOR RHO
+C **********************************************************
+      REAL S,M,G
+      REAL PI,PIM,QS,QM,W,GS
+      DATA INIT /0/
+C ------------ PARAMETERS --------------------
+      IF (INIT.EQ.0) THEN
+      INIT=1
+      PI=3.141592654
+      PIM=.139
+C -------  BREIT-WIGNER -----------------------
+         ENDIF
+       IF (S.GT.4.*PIM**2) THEN
+         QS=SQRT(ABS(ABS(S/4.-PIM**2)+(S/4.-PIM**2))/2.0)
+         QM=SQRT(M**2/4.-PIM**2)
+         W=SQRT(S)
+         GS=G*(M/W)*(QS/QM)**3
+       ELSE
+         GS=0.0
+       ENDIF
+         BWIG=M**2/CMPLX(M**2-S,-M*GS)
+      RETURN
+      END
+      COMPLEX FUNCTION FPIK(W)
+C **********************************************************
+C     PION FORM FACTOR
+C **********************************************************
+      COMPLEX BWIG
+      REAL ROM,ROG,ROM1,ROG1,BETA1,PI,PIM,S,W
+      EXTERNAL BWIG
+      DATA  INIT /0/
+C
+C ------------ PARAMETERS --------------------
+      IF (INIT.EQ.0 ) THEN
+      INIT=1
+      PI=3.141592654
+      PIM=.140
+      ROM=PKORB(1,9)
+      ROG=PKORB(2,9)
+      ROM1=PKORB(1,15)
+      ROG1=PKORB(2,15)
+      BETA1=PKORB(3,15)
+      ENDIF
+C -----------------------------------------------
+      S=W**2
+      FPIK= (BWIG(S,ROM,ROG)+BETA1*BWIG(S,ROM1,ROG1))
+     & /(1+BETA1)
+      RETURN
+      END
+      FUNCTION FPIRHO(W)
+C **********************************************************
+C     SQUARE OF PION FORM FACTOR
+C **********************************************************
+      COMPLEX FPIK
+      FPIRHO=CABS(FPIK(W))**2
+      END
+      SUBROUTINE CLVEC(HJ,PN,PIV)
+C ----------------------------------------------------------------------
+* CALCULATES THE "VECTOR TYPE"  PI-VECTOR  PIV
+* NOTE THAT THE NEUTRINO MOM. PN IS ASSUMED TO BE ALONG Z-AXIS
+C
+C     called by : DAMPAA
+C ----------------------------------------------------------------------
+      REAL PIV(4),PN(4)
+      COMPLEX HJ(4),HN
+C
+      HN= HJ(4)*CMPLX(PN(4))-HJ(3)*CMPLX(PN(3))
+      HH= REAL(HJ(4)*CONJG(HJ(4))-HJ(3)*CONJG(HJ(3))
+     $        -HJ(2)*CONJG(HJ(2))-HJ(1)*CONJG(HJ(1)))
+      DO 10 I=1,4
+   10 PIV(I)=4.*REAL(HN*CONJG(HJ(I)))-2.*HH*PN(I)
+      RETURN
+      END
+      SUBROUTINE CLAXI(HJ,PN,PIA)
+C ----------------------------------------------------------------------
+* CALCULATES THE "AXIAL TYPE"  PI-VECTOR  PIA
+* NOTE THAT THE NEUTRINO MOM. PN IS ASSUMED TO BE ALONG Z-AXIS
+C SIGN is chosen +/- for decay of TAU +/- respectively
+C     called by : DAMPAA, CLNUT
+C ----------------------------------------------------------------------
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+      COMMON / IDFC  / IDFF
+      REAL PIA(4),PN(4)
+      COMPLEX HJ(4),HJC(4)
+C     DET2(I,J)=AIMAG(HJ(I)*HJC(J)-HJ(J)*HJC(I))
+C -- here was an error (ZW, 21.11.1991)
+      DET2(I,J)=AIMAG(HJC(I)*HJ(J)-HJC(J)*HJ(I))
+C -- it was affecting sign of A_LR asymmetry in a1 decay.
+C -- note also collision of notation of gamma_va as defined in
+C -- TAUOLA paper and J.H. Kuhn and Santamaria Z. Phys C 48 (1990) 445
+* -----------------------------------
+      IF     (KTOM.EQ.1.OR.KTOM.EQ.-1) THEN
+        SIGN= IDFF/ABS(IDFF)
+      ELSEIF (KTOM.EQ.2) THEN
+        SIGN=-IDFF/ABS(IDFF)
+      ELSE
+        PRINT *, 'STOP IN CLAXI: KTOM=',KTOM
+        STOP
+      ENDIF
+C
+      DO 10 I=1,4
+ 10   HJC(I)=CONJG(HJ(I))
+      PIA(1)= -2.*PN(3)*DET2(2,4)+2.*PN(4)*DET2(2,3)
+      PIA(2)= -2.*PN(4)*DET2(1,3)+2.*PN(3)*DET2(1,4)
+      PIA(3)=  2.*PN(4)*DET2(1,2)
+      PIA(4)=  2.*PN(3)*DET2(1,2)
+C ALL FOUR INDICES ARE UP SO  PIA(3) AND PIA(4) HAVE SAME SIGN
+      DO 20 I=1,4
+  20  PIA(I)=PIA(I)*SIGN
+      END
+      SUBROUTINE CLNUT(HJ,B,HV)
+C ----------------------------------------------------------------------
+* CALCULATES THE CONTRIBUTION BY NEUTRINO MASS
+* NOTE THE TAU IS ASSUMED TO BE AT REST
+C
+C     called by : DAMPAA
+C ----------------------------------------------------------------------
+      COMPLEX HJ(4)
+      REAL HV(4),P(4)
+      DATA P /3*0.,1.0/
+C
+      CALL CLAXI(HJ,P,HV)
+      B=REAL( HJ(4)*AIMAG(HJ(4)) - HJ(3)*AIMAG(HJ(3))
+     &      - HJ(2)*AIMAG(HJ(2)) - HJ(1)*AIMAG(HJ(1))  )
+      RETURN
+      END
+      SUBROUTINE DAMPOG(PT,PN,PIM1,PIM2,PIPL,AMPLIT,HV)
+C ----------------------------------------------------------------------
+* CALCULATES DIFFERENTIAL CROSS SECTION AND POLARIMETER VECTOR
+* FOR TAU DECAY INTO A1, A1 DECAYS NEXT INTO RHO+PI AND RHO INTO PI+PI.
+* ALL SPIN EFFECTS IN THE FULL DECAY CHAIN ARE TAKEN INTO ACCOUNT.
+* CALCULATIONS DONE IN TAU REST FRAME WITH Z-AXIS ALONG NEUTRINO MOMENT
+* THE ROUTINE IS WRITEN FOR ZERO NEUTRINO MASS.
+C
+C     called by : DPHSAA
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON /TESTA1/ KEYA1
+      REAL  HV(4),PT(4),PN(4),PIM1(4),PIM2(4),PIPL(4)
+      REAL  PAA(4),VEC1(4),VEC2(4)
+      REAL  PIVEC(4),PIAKS(4),HVM(4)
+      COMPLEX BWIGN,HADCUR(4),FNORM,FORMOM
+      DATA ICONT /1/
+* THIS INLINE FUNCT. CALCULATES THE SCALAR PART OF THE PROPAGATOR
+C AJWMOD to satisfy compiler, comment out this unused function.
+C
+* FOUR MOMENTUM OF A1
+      DO 10 I=1,4
+      VEC1(I)=0.0
+      VEC2(I)=0.0
+      HV(I)  =0.0
+   10 PAA(I)=PIM1(I)+PIM2(I)+PIPL(I)
+      VEC1(1)=1.0
+* MASSES OF A1, AND OF TWO PI-PAIRS WHICH MAY FORM RHO
+      XMAA   =SQRT(ABS(PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2))
+      XMOM   =SQRT(ABS( (PIM2(4)+PIPL(4))**2-(PIM2(3)+PIPL(3))**2
+     $                 -(PIM2(2)+PIPL(2))**2-(PIM2(1)+PIPL(1))**2   ))
+      XMRO2  =(PIPL(1))**2 +(PIPL(2))**2 +(PIPL(3))**2
+* ELEMENTS OF HADRON CURRENT
+      PROD1  =VEC1(1)*PIPL(1)
+      PROD2  =VEC2(2)*PIPL(2)
+      P12    =PIM1(4)*PIM2(4)-PIM1(1)*PIM2(1)
+     $       -PIM1(2)*PIM2(2)-PIM1(3)*PIM2(3)
+      P1PL   =PIM1(4)*PIPL(4)-PIM1(1)*PIPL(1)
+     $       -PIM1(2)*PIPL(2)-PIM1(3)*PIPL(3)
+      P2PL   =PIPL(4)*PIM2(4)-PIPL(1)*PIM2(1)
+     $       -PIPL(2)*PIM2(2)-PIPL(3)*PIM2(3)
+      DO 40 I=1,3
+        VEC1(I)= (VEC1(I)-PROD1/XMRO2*PIPL(I))
+ 40   CONTINUE
+        GNORM=SQRT(VEC1(1)**2+VEC1(2)**2+VEC1(3)**2)
+      DO 41 I=1,3
+        VEC1(I)= VEC1(I)/GNORM
+ 41   CONTINUE
+      VEC2(1)=(VEC1(2)*PIPL(3)-VEC1(3)*PIPL(2))/SQRT(XMRO2)
+      VEC2(2)=(VEC1(3)*PIPL(1)-VEC1(1)*PIPL(3))/SQRT(XMRO2)
+      VEC2(3)=(VEC1(1)*PIPL(2)-VEC1(2)*PIPL(1))/SQRT(XMRO2)
+      P1VEC1   =PIM1(4)*VEC1(4)-PIM1(1)*VEC1(1)
+     $         -PIM1(2)*VEC1(2)-PIM1(3)*VEC1(3)
+      P2VEC1   =VEC1(4)*PIM2(4)-VEC1(1)*PIM2(1)
+     $         -VEC1(2)*PIM2(2)-VEC1(3)*PIM2(3)
+      P1VEC2   =PIM1(4)*VEC2(4)-PIM1(1)*VEC2(1)
+     $         -PIM1(2)*VEC2(2)-PIM1(3)*VEC2(3)
+      P2VEC2   =VEC2(4)*PIM2(4)-VEC2(1)*PIM2(1)
+     $         -VEC2(2)*PIM2(2)-VEC2(3)*PIM2(3)
+* HADRON CURRENT
+      FNORM=FORMOM(XMAA,XMOM)
+      BRAK=0.0
+      DO 120 JJ=1,2
+        DO 45 I=1,4
+       IF (JJ.EQ.1) THEN
+        HADCUR(I) = FNORM *(
+     $             VEC1(I)*(AMPI**2*P1PL-P2PL*(P12-P1PL))
+     $            -PIM2(I)*(P2VEC1*P1PL-P1VEC1*P2PL)
+     $            +PIPL(I)*(P2VEC1*P12 -P1VEC1*(AMPI**2+P2PL))  )
+       ELSE
+        HADCUR(I) = FNORM *(
+     $             VEC2(I)*(AMPI**2*P1PL-P2PL*(P12-P1PL))
+     $            -PIM2(I)*(P2VEC2*P1PL-P1VEC2*P2PL)
+     $            +PIPL(I)*(P2VEC2*P12 -P1VEC2*(AMPI**2+P2PL))  )
+       ENDIF
+ 45     CONTINUE
+C
+* CALCULATE PI-VECTORS: VECTOR AND AXIAL
+      CALL CLVEC(HADCUR,PN,PIVEC)
+      CALL CLAXI(HADCUR,PN,PIAKS)
+      CALL CLNUT(HADCUR,BRAKM,HVM)
+* SPIN INDEPENDENT PART OF DECAY DIFF-CROSS-SECT. IN TAU REST  FRAME
+      BRAK=BRAK+(GV**2+GA**2)*PT(4)*PIVEC(4) +2.*GV*GA*PT(4)*PIAKS(4)
+     &         +2.*(GV**2-GA**2)*AMNUTA*AMTAU*BRAKM
+      DO 90 I=1,3
+      HV(I)=HV(I)-(AMTAU*((GV**2+GA**2)*PIAKS(I)+2.*GV*GA*PIVEC(I)))
+     &      +(GV**2-GA**2)*AMNUTA*AMTAU*HVM(I)
+  90  CONTINUE
+C HV IS DEFINED FOR TAU-    WITH GAMMA=B+HV*POL
+ 120  CONTINUE
+      AMPLIT=(GFERMI*CCABIB)**2*BRAK/2.
+C THE STATISTICAL FACTOR FOR IDENTICAL PI-S WAS CANCELLED WITH
+C TWO, FOR TWO MODES OF A1 DECAY NAMELLY PI+PI-PI- AND PI-PI0PI0
+C POLARIMETER VECTOR IN TAU REST FRAME
+      DO 91 I=1,3
+      HV(I)=-HV(I)/BRAK
+ 91   CONTINUE
+      END
+      SUBROUTINE DAMPPK(MNUM,PT,PN,PIM1,PIM2,PIM3,AMPLIT,HV)
+C ----------------------------------------------------------------------
+* CALCULATES DIFFERENTIAL CROSS SECTION AND POLARIMETER VECTOR
+* FOR TAU DECAY INTO K K pi, K pi pi.
+* ALL SPIN EFFECTS IN THE FULL DECAY CHAIN ARE TAKEN INTO ACCOUNT.
+* CALCULATIONS DONE IN TAU REST FRAME WITH Z-AXIS ALONG NEUTRINO MOMENT
+C MNUM DECAY MODE IDENTIFIER.
+C
+C     called by : DPHSAA
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON /IPChT/ IVER
+      INTEGER        IVER
+      REAL  HV(4),PT(4),PN(4),PIM1(4),PIM2(4),PIM3(4)
+      REAL  PAA(4),VEC1(4),VEC2(4),VEC3(4),VEC4(4),VEC5(4)
+      REAL  PIVEC(4),PIAKS(4),HVM(4)
+      REAL FNORM(0:7),COEF
+      DOUBLE PRECISION GETFPIRPT
+      COMPLEX HADCUR(4),FORM1,FORM2,FORM3,FORM4,FORM5,UROJ
+      COMPLEX F1,F2,F3,F4,F5
+      EXTERNAL FORM1,FORM2,FORM3,FORM4,FORM5
+      DATA PI /3.141592653589793238462643/
+      DATA ICONT /0/
+CC
+      DATA  FPIc /93.3E-3/
+      IF (ICONT.EQ.0) THEN    
+       ICONT=1
+       UROJ=CMPLX(0.0,1.0)
+       DWAPI0=SQRT(2.0)
+
+      ENDIF
+       IF (IVER.EQ.0.OR.MNUM.NE.0) THEN ! so far rchl only for 3pi modes
+         FPI=FPIc
+        ELSEIF (IVER.EQ.1) THEN
+         FPI=GETFPIRPT(1) ! GET  defined in in ffwid3pi.f  of RChL-currents
+        ELSE
+         write(*,*) 'wrong IVER=',IVER
+         stop
+        ENDIF  
+       FNORM(0)=CCABIB/FPI
+       FNORM(1)=CCABIB/FPI
+       FNORM(2)=CCABIB/FPI
+       FNORM(3)=CCABIB/FPI
+       FNORM(4)=SCABIB/FPI/DWAPI0
+       FNORM(5)=SCABIB/FPI
+       FNORM(6)=SCABIB/FPI
+       FNORM(7)=CCABIB/FPI
+
+
+C
+      DO 10 I=1,4
+   10 PAA(I)=PIM1(I)+PIM2(I)+PIM3(I)
+      XMAA   =SQRT(ABS(PAA(4)**2-PAA(3)**2-PAA(2)**2-PAA(1)**2))
+      XMRO1  =SQRT(ABS((PIM3(4)+PIM2(4))**2-(PIM3(1)+PIM2(1))**2
+     $                -(PIM3(2)+PIM2(2))**2-(PIM3(3)+PIM2(3))**2))
+      XMRO2  =SQRT(ABS((PIM3(4)+PIM1(4))**2-(PIM3(1)+PIM1(1))**2
+     $                -(PIM3(2)+PIM1(2))**2-(PIM3(3)+PIM1(3))**2))
+      XMRO3  =SQRT(ABS((PIM1(4)+PIM2(4))**2-(PIM1(1)+PIM2(1))**2
+     $                -(PIM1(2)+PIM2(2))**2-(PIM1(3)+PIM2(3))**2))
+* ELEMENTS OF HADRON CURRENT
+      PROD1  =PAA(4)*(PIM2(4)-PIM3(4))-PAA(1)*(PIM2(1)-PIM3(1))
+     $       -PAA(2)*(PIM2(2)-PIM3(2))-PAA(3)*(PIM2(3)-PIM3(3))
+      PROD2  =PAA(4)*(PIM3(4)-PIM1(4))-PAA(1)*(PIM3(1)-PIM1(1))
+     $       -PAA(2)*(PIM3(2)-PIM1(2))-PAA(3)*(PIM3(3)-PIM1(3))
+      PROD3  =PAA(4)*(PIM1(4)-PIM2(4))-PAA(1)*(PIM1(1)-PIM2(1))
+     $       -PAA(2)*(PIM1(2)-PIM2(2))-PAA(3)*(PIM1(3)-PIM2(3))
+      DO 40 I=1,4
+      VEC1(I)= PIM2(I)-PIM3(I) -PAA(I)*PROD1/XMAA**2
+      VEC2(I)= PIM3(I)-PIM1(I) -PAA(I)*PROD2/XMAA**2
+      VEC3(I)= PIM1(I)-PIM2(I) -PAA(I)*PROD3/XMAA**2
+ 40   VEC4(I)= PIM1(I)+PIM2(I)+PIM3(I)
+      CALL PROD5(PIM1,PIM2,PIM3,VEC5)
+* HADRON CURRENT
+C be aware that sign of vec2 is opposite to sign of vec1 in a1 case
+C Rationalize this code:
+      F1 = CMPLX(COEF(1,MNUM))*FORM1(MNUM,XMAA**2,XMRO1**2,XMRO2**2)
+      F2 = CMPLX(COEF(2,MNUM))*FORM2(MNUM,XMAA**2,XMRO2**2,XMRO1**2)
+      F3 = CMPLX(COEF(3,MNUM))*FORM3(MNUM,XMAA**2,XMRO3**2,XMRO1**2)
+      F4 = (-1.0*UROJ)*
+     $CMPLX(COEF(4,MNUM))*FORM4(MNUM,XMAA**2,XMRO1**2,XMRO2**2,XMRO3**2)
+      F5 = (-1.0)*UROJ/4.0/PI**2/FPI**2*
+     $     CMPLX(COEF(5,MNUM))*FORM5(MNUM,XMAA**2,XMRO1**2,XMRO2**2)
+
+      DO 45 I=1,4
+      HADCUR(I)= CMPLX(FNORM(MNUM)) * (
+     $  CMPLX(VEC1(I))*F1+CMPLX(VEC2(I))*F2+CMPLX(VEC3(I))*F3+
+     $  CMPLX(VEC4(I))*F4+CMPLX(VEC5(I))*F5)
+ 45   CONTINUE
+C
+* CALCULATE PI-VECTORS: VECTOR AND AXIAL
+      CALL CLVEC(HADCUR,PN,PIVEC)
+      CALL CLAXI(HADCUR,PN,PIAKS)
+      CALL CLNUT(HADCUR,BRAKM,HVM)
+* SPIN INDEPENDENT PART OF DECAY DIFF-CROSS-SECT. IN TAU REST  FRAME
+      BRAK= (GV**2+GA**2)*PT(4)*PIVEC(4) +2.*GV*GA*PT(4)*PIAKS(4)
+     &     +2.*(GV**2-GA**2)*AMNUTA*AMTAU*BRAKM
+      AMPLIT=(GFERMI)**2*BRAK/2.
+      IF (MNUM.GE.9) THEN
+        PRINT *, 'MNUM=',MNUM
+        ZNAK=-1.0
+        XM1=0.0
+        XM2=0.0
+        XM3=0.0
+        DO 77 K=1,4
+        IF (K.EQ.4) ZNAK=1.0
+        XM1=ZNAK*PIM1(K)**2+XM1
+        XM2=ZNAK*PIM2(K)**2+XM2
+        XM3=ZNAK*PIM3(K)**2+XM3
+ 77     PRINT *, 'PIM1=',PIM1(K),'PIM2=',PIM2(K),'PIM3=',PIM3(K)
+        PRINT *, 'XM1=',SQRT(XM1),'XM2=',SQRT(XM2),'XM3=',SQRT(XM3)
+        PRINT *, '************************************************'
+      ENDIF
+C POLARIMETER VECTOR IN TAU REST FRAME
+      DO 90 I=1,3
+      HV(I)=-(AMTAU*((GV**2+GA**2)*PIAKS(I)+2.*GV*GA*PIVEC(I)))
+     &      +(GV**2-GA**2)*AMNUTA*AMTAU*HVM(I)
+C HV IS DEFINED FOR TAU-    WITH GAMMA=B+HV*POL
+      HV(I)=-HV(I)/BRAK
+ 90   CONTINUE
+      END
+      SUBROUTINE PROD5(P1,P2,P3,PIA)
+C ----------------------------------------------------------------------
+C external product of P1, P2, P3 4-momenta.
+C SIGN is chosen +/- for decay of TAU +/- respectively
+C     called by : DAMPAA, CLNUT
+C ----------------------------------------------------------------------
+      COMMON / JAKI   /  JAK1,JAK2,JAKP,JAKM,KTOM
+      COMMON / IDFC  / IDFF
+      REAL PIA(4),P1(4),P2(4),P3(4)
+      DET2(I,J)=P1(I)*P2(J)-P2(I)*P1(J)
+* -----------------------------------
+      IF     (KTOM.EQ.1.OR.KTOM.EQ.-1) THEN
+        SIGN= IDFF/ABS(IDFF)
+      ELSEIF (KTOM.EQ.2) THEN
+        SIGN=-IDFF/ABS(IDFF)
+      ELSE
+        PRINT *, 'STOP IN PROD5: KTOM=',KTOM
+        STOP
+      ENDIF
+C
+C EPSILON( p1(1), p2(2), p3(3), (4) ) = 1
+C
+      PIA(1)= -P3(3)*DET2(2,4)+P3(4)*DET2(2,3)+P3(2)*DET2(3,4)
+      PIA(2)= -P3(4)*DET2(1,3)+P3(3)*DET2(1,4)-P3(1)*DET2(3,4)
+      PIA(3)=  P3(4)*DET2(1,2)-P3(2)*DET2(1,4)+P3(1)*DET2(2,4)
+      PIA(4)=  P3(3)*DET2(1,2)-P3(2)*DET2(1,3)+P3(1)*DET2(2,3)
+C ALL FOUR INDICES ARE UP SO  PIA(3) AND PIA(4) HAVE SAME SIGN
+      DO 20 I=1,4
+  20  PIA(I)=PIA(I)*SIGN
+      END
+      SUBROUTINE DEXNEW(MODE,ISGN,POL,PNU,PAA,PNPI,JNPI)
+C ----------------------------------------------------------------------
+* THIS SIMULATES TAU DECAY IN TAU REST FRAME
+* INTO NU A1, NEXT A1 DECAYS INTO RHO PI AND FINALLY RHO INTO PI PI.
+* OUTPUT FOUR MOMENTA: PNU   TAUNEUTRINO,
+*                      PAA   A1
+*                      PIM1  PION MINUS (OR PI0) 1      (FOR TAU MINUS)
+*                      PIM2  PION MINUS (OR PI0) 2
+*                      PIPL  PION PLUS  (OR PI-)
+*                      (PIPL,PIM1) FORM A RHO
+C ----------------------------------------------------------------------
+      COMMON / INOUT / INUT,IOUT
+      REAL  POL(4),HV(4),PAA(4),PNU(4),PNPI(4,9),RN(1)
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+        IWARM=1
+        CALL DADNEW( -1,ISGN,HV,PNU,PAA,PNPI,JDUMM)
+CC      CALL HBOOK1(816,'WEIGHT DISTRIBUTION  DEXAA    $',100,-2.,2.)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+*     =======================
+ 300    CONTINUE
+        IF(IWARM.EQ.0) GOTO 902
+        CALL DADNEW( 0,ISGN,HV,PNU,PAA,PNPI,JNPI)
+        WT=(1+POL(1)*HV(1)+POL(2)*HV(2)+POL(3)*HV(3))/2.
+CC      CALL HFILL(816,WT)
+          CALL RANMAR(RN,1)
+          IF(RN(1).GT.WT) GOTO 300
+C
+      ELSEIF(MODE.EQ. 1) THEN
+*     =======================
+        CALL DADNEW( 1,ISGN,HV,PNU,PAA,PNPI,JDUMM)
+CC      CALL HPRINT(816)
+      ENDIF
+C     =====
+      RETURN
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DEXNEW: LACK OF INITIALISATION')
+      STOP
+      END
+      SUBROUTINE DADNEW(MODE,ISGN,HV,PNU,PWB,PNPI,JNPI)
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / TAUBMC / GAMPMC(30),GAMPER(30),NEVDEC(30)
+      REAL*4            GAMPMC    ,GAMPER
+      COMMON / INOUT / INUT,IOUT
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+     &                ,NAMES
+      CHARACTER NAMES(NMODE)*31
+
+      REAL*4 PNU(4),PWB(4),PNPI(4,9),HV(4),HHV(4)
+      REAL*4 PDUM1(4),PDUM2(4),PDUMI(4,9)
+      REAL*4 RRR(3)
+      REAL*4 WTMAX(NMODE)
+      REAL*8              SWT(NMODE),SSWT(NMODE)
+      DIMENSION NEVRAW(NMODE),NEVOVR(NMODE),NEVACC(NMODE)
+C
+      DATA PI /3.141592653589793238462643/
+      DATA IWARM/0/
+C
+      IF(MODE.EQ.-1) THEN
+C     ===================
+C -- AT THE MOMENT ONLY TWO DECAY MODES OF MULTIPIONS HAVE M. ELEM
+        NMOD=NMODE
+        IWARM=1
+C       PRINT 7003
+        DO 1 JNPI=1,NMOD
+        NEVRAW(JNPI)=0
+        NEVACC(JNPI)=0
+        NEVOVR(JNPI)=0
+        SWT(JNPI)=0
+        SSWT(JNPI)=0
+        WTMAX(JNPI)=-1.
+C for 4pi phase space, need lots more trials at initialization,
+C or use the WTMAX determined with many trials for default model:
+        NTRIALS = 5000
+        IF (JNPI.LE.NM4) THEN
+C         11.Oct.11: fix for BINP and KARLSRUHE currents added
+          WTMAX(JNPI) = PKORB(3,37+JNPI)
+          NTRIALS = 20000
+        END IF
+        DO  I=1,NTRIALS
+          IF    (JNPI.LE.0) THEN
+            GOTO 903 
+          ELSEIF(JNPI.LE.NM4) THEN 
+            CALL DPH4PI(WT,HV,PDUM1,PDUM2,PDUMI,JNPI)
+          ELSEIF(JNPI.LE.NM4+NM5) THEN
+             CALL DPH5PI(WT,HV,PDUM1,PDUM2,PDUMI,JNPI)
+          ELSEIF(JNPI.LE.NM4+NM5+NM6) THEN
+            CALL DPHNPI(WT,HV,PDUM1,PDUM2,PDUMI,JNPI)
+          ELSEIF(JNPI.LE.NM4+NM5+NM6+NM3) THEN
+            INUM=JNPI-NM4-NM5-NM6
+            CALL DPHSPK(WT,HV,PDUM1,PDUM2,PDUMI,INUM)
+          ELSEIF(JNPI.LE.NM4+NM5+NM6+NM3+NM2) THEN
+            INUM=JNPI-NM4-NM5-NM6-NM3
+            CALL DPHSRK(WT,HV,PDUM1,PDUM2,PDUMI,INUM)
+          ELSE
+           GOTO 903
+          ENDIF   
+        IF(WT.GT.WTMAX(JNPI)/1.2) WTMAX(JNPI)=WT*1.2
+        ENDDO
+C       PRINT *,' DADNEW JNPI,NTRIALS,WTMAX =',JNPI,NTRIALS,WTMAX(JNPI)
+C       CALL HBOOK1(801,'WEIGHT DISTRIBUTION  DADNPI    $',100,0.,2.,.0)
+C       PRINT 7004,WTMAX(JNPI)
+1       CONTINUE
+        WRITE(IOUT,7005)
+C
+      ELSEIF(MODE.EQ. 0) THEN
+C     =======================
+        IF(IWARM.EQ.0) GOTO 902
+C
+300     CONTINUE
+          IF    (JNPI.LE.0) THEN
+            GOTO 903 
+          ELSEIF(JNPI.LE.NM4) THEN
+             CALL DPH4PI(WT,HHV,PNU,PWB,PNPI,JNPI)
+          ELSEIF(JNPI.LE.NM4+NM5) THEN
+             CALL DPH5PI(WT,HHV,PNU,PWB,PNPI,JNPI)
+          ELSEIF(JNPI.LE.NM4+NM5+NM6) THEN
+            CALL DPHNPI(WT,HHV,PNU,PWB,PNPI,JNPI) 
+          ELSEIF(JNPI.LE.NM4+NM5+NM6+NM3) THEN
+            INUM=JNPI-NM4-NM5-NM6
+            CALL DPHSPK(WT,HHV,PNU,PWB,PNPI,INUM)
+          ELSEIF(JNPI.LE.NM4+NM5+NM6+NM3+NM2) THEN
+            INUM=JNPI-NM4-NM5-NM6-NM3
+            CALL DPHSRK(WT,HHV,PNU,PWB,PNPI,INUM)
+          ELSE
+           GOTO 903
+          ENDIF   
+            DO I=1,4
+              HV(I)=-ISGN*HHV(I)
+            ENDDO
+C       CALL HFILL(801,WT/WTMAX(JNPI))
+        NEVRAW(JNPI)=NEVRAW(JNPI)+1
+        SWT(JNPI)=SWT(JNPI)+WT
+cccM.S.>>>>>>
+cc        SSWT(JNPI)=SSWT(JNPI)+WT**2
+        SSWT(JNPI)=SSWT(JNPI)+dble(WT)**2
+cccM.S.<<<<<<
+        CALL RANMAR(RRR,3)
+        RN=RRR(1)
+        IF(WT.GT.WTMAX(JNPI)) NEVOVR(JNPI)=NEVOVR(JNPI)+1
+        IF(RN*WTMAX(JNPI).GT.WT) GOTO 300
+C ROTATIONS TO BASIC TAU REST FRAME
+        COSTHE=-1.+2.*RRR(2)
+        THET=ACOS(COSTHE)
+        PHI =2*PI*RRR(3)
+        CALL ROTOR2(THET,PNU,PNU)
+        CALL ROTOR3( PHI,PNU,PNU)
+        CALL ROTOR2(THET,PWB,PWB)
+        CALL ROTOR3( PHI,PWB,PWB)
+        CALL ROTOR2(THET,HV,HV)
+        CALL ROTOR3( PHI,HV,HV)
+        ND=MULPIK(JNPI)
+        DO 301 I=1,ND
+        CALL ROTOR2(THET,PNPI(1,I),PNPI(1,I))
+        CALL ROTOR3( PHI,PNPI(1,I),PNPI(1,I))
+301     CONTINUE
+        NEVACC(JNPI)=NEVACC(JNPI)+1
+C
+      ELSEIF(MODE.EQ. 1) THEN
+C     =======================
+        DO 500 JNPI=1,NMOD
+          IF(NEVRAW(JNPI).EQ.0) GOTO 500
+          PARGAM=SWT(JNPI)/FLOAT(NEVRAW(JNPI)+1)
+          ERROR=0
+          IF(NEVRAW(JNPI).NE.0)
+     &    ERROR=SQRT(SSWT(JNPI)/SWT(JNPI)**2-1./FLOAT(NEVRAW(JNPI)))
+          RAT=PARGAM/GAMEL
+          WRITE(IOUT, 7010) NAMES(JNPI),
+     &     NEVRAW(JNPI),NEVACC(JNPI),NEVOVR(JNPI),PARGAM,RAT,ERROR
+CC        CALL HPRINT(801)
+          GAMPMC(8+JNPI-1)=RAT
+          GAMPER(8+JNPI-1)=ERROR
+CAM       NEVDEC(8+JNPI-1)=NEVACC(JNPI)
+  500     CONTINUE
+      ENDIF
+C     =====
+      RETURN
+ 7003 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADNEW INITIALISATION ********',9X,1H*
+     $ )
+ 7004 FORMAT(' *',E20.5,5X,'WTMAX  = MAXIMUM WEIGHT  ',9X,1H*/)
+ 7005 FORMAT(
+     $  /,1X,15(5H*****)/)
+ 7010 FORMAT(///1X,15(5H*****)
+     $ /,' *',     25X,'******** DADNEW FINAL REPORT  ******** ',9X,1H*
+     $ /,' *',     25X,'CHANNEL:',A31                           ,9X,1H*
+     $ /,' *',I20  ,5X,'NEVRAW = NO. OF DECAYS TOTAL           ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVACC = NO. OF DECAYS ACCEPTED        ',9X,1H*
+     $ /,' *',I20  ,5X,'NEVOVR = NO. OF OVERWEIGHTED EVENTS    ',9X,1H*
+     $ /,' *',E20.5,5X,'PARTIAL WTDTH IN GEV UNITS             ',9X,1H*
+     $ /,' *',F20.9,5X,'IN UNITS GFERMI**2*MASS**5/192/PI**3   ',9X,1H*
+     $ /,' *',F20.8,5X,'RELATIVE ERROR OF PARTIAL WIDTH        ',9X,1H*
+     $  /,1X,15(5H*****)/)
+ 902  WRITE(IOUT, 9020)
+ 9020 FORMAT(' ----- DADNEW: LACK OF INITIALISATION')
+      STOP
+ 903  WRITE(IOUT, 9030) JNPI,MODE
+ 9030 FORMAT(' ----- DADNEW: WRONG JNPI',2I5)
+      STOP
+      END
+      SUBROUTINE DPH4PI(DGAMT,HV,PN,PAA,PMULT,JNPI)
+C ----------------------------------------------------------------------
+* IT SIMULATES A1  DECAY IN TAU REST FRAME WITH
+* Z-AXIS ALONG A1  MOMENTUM
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL  HV(4),PT(4),PN(4),PAA(4),PIM1(4),PIM2(4),PIPL(4),PMULT(4,9)
+      REAL  PR(4),PIZ(4)
+      REAL*4 RRR(9)
+      REAL*8 UU,FF,FF1,FF2,FF3,FF4,GG1,GG2,GG3,GG4,RR
+      DATA PI /3.141592653589793238462643/
+      DATA ICONT /0/
+      XLAM(X,Y,Z)=SQRT(ABS((X-Y-Z)**2-4.0*Y*Z))
+C AMRO, GAMRO IS ONLY A PARAMETER FOR GETING HIGHT EFFICIENCY
+C
+C THREE BODY PHASE SPACE NORMALISED AS IN BJORKEN-DRELL
+C D**3 P /2E/(2PI)**3 (2PI)**4 DELTA4(SUM P)
+      PHSPAC=1./2**23/PI**11
+      PHSP=1./2**5/PI**2
+      IF (JNPI.EQ.1) THEN
+       PREZ=0.7
+       AMP1=AMPI
+       AMP2=AMPI
+       AMP3=AMPI
+       AMP4=AMPIZ
+       AMRX=PKORB(1,14)
+       GAMRX=PKORB(2,14)
+C AJW: cant simply change AMROP, etc, here!
+C CHOICE is a by-hand tuning/optimization, no simple relationship
+C to actual resonance masses (accd to Z.Was).
+C What matters in the end is what you put in formf/curr .
+        AMROP =1.2
+        GAMROP=.46
+      ELSE
+       PREZ=0.0
+       AMP1=AMPIZ
+       AMP2=AMPIZ
+       AMP3=AMPIZ
+       AMP4=AMPI
+       AMRX=1.4
+       GAMRX=.6
+        AMROP =AMRX
+        GAMROP=GAMRX
+      ENDIF
+      RRB=0.3
+      CALL CHOICE(100+JNPI,RRB,ICHAN,PROB1,PROB2,PROB3,
+     $            AMROP,GAMROP,AMRX,GAMRX,AMRB,GAMRB)
+      PREZ=PROB1+PROB2
+C TAU MOMENTUM
+      PT(1)=0.
+      PT(2)=0.
+      PT(3)=0.
+      PT(4)=AMTAU
+C
+      CALL RANMAR(RRR,9)
+C
+* MASSES OF 4, 3 AND 2 PI SYSTEMS
+C 3 PI WITH SAMPLING FOR RESONANCE
+CAM
+        RR1=RRR(6)
+        AMS1=(AMP1+AMP2+AMP3+AMP4)**2
+        AMS2=(AMTAU-AMNUTA)**2
+        ALP1=ATAN((AMS1-AMROP**2)/AMROP/GAMROP)
+        ALP2=ATAN((AMS2-AMROP**2)/AMROP/GAMROP)
+        ALP=ALP1+RR1*(ALP2-ALP1)
+        AM4SQ =AMROP**2+AMROP*GAMROP*TAN(ALP)
+        AM4 =SQRT(AM4SQ)
+        PHSPAC=PHSPAC*
+     $         ((AM4SQ-AMROP**2)**2+(AMROP*GAMROP)**2)/(AMROP*GAMROP)
+        PHSPAC=PHSPAC*(ALP2-ALP1)
+C
+        RR1=RRR(1)
+        AMS1=(AMP2+AMP3+AMP4)**2
+        AMS2=(AM4-AMP1)**2
+        IF (RRR(9).GT.PREZ) THEN
+          AM3SQ=AMS1+   RR1*(AMS2-AMS1)
+          AM3 =SQRT(AM3SQ)
+C --- this part of jacobian will be recovered later
+          FF1=AMS2-AMS1
+        ELSE
+* PHASE SPACE WITH SAMPLING FOR OMEGA RESONANCE,
+        ALP1=ATAN((AMS1-AMRX**2)/AMRX/GAMRX)
+        ALP2=ATAN((AMS2-AMRX**2)/AMRX/GAMRX)
+        ALP=ALP1+RR1*(ALP2-ALP1)
+        AM3SQ =AMRX**2+AMRX*GAMRX*TAN(ALP)
+        AM3 =SQRT(AM3SQ)
+C --- THIS PART OF THE JACOBIAN WILL BE RECOVERED LATER ---------------
+        FF1=((AM3SQ-AMRX**2)**2+(AMRX*GAMRX)**2)/(AMRX*GAMRX)
+        FF1=FF1*(ALP2-ALP1)
+        ENDIF
+C MASS OF 2
+        RR2=RRR(2)
+        AMS1=(AMP3+AMP4)**2
+        AMS2=(AM3-AMP2)**2
+* FLAT PHASE SPACE;
+        AM2SQ=AMS1+   RR2*(AMS2-AMS1)
+        AM2 =SQRT(AM2SQ)
+C --- this part of jacobian will be recovered later
+        FF2=(AMS2-AMS1)
+*  2 RESTFRAME, DEFINE PIZ AND PIPL
+        ENQ1=(AM2SQ-AMP3**2+AMP4**2)/(2*AM2)
+        ENQ2=(AM2SQ+AMP3**2-AMP4**2)/(2*AM2)
+        PPI=         ENQ1**2-AMP4**2
+        PPPI=SQRT(ABS(ENQ1**2-AMP4**2))
+        PHSPAC=PHSPAC*(4*PI)*(2*PPPI/AM2)
+* PIZ   MOMENTUM IN 2 REST FRAME
+        CALL SPHERA(PPPI,PIZ)
+        PIZ(4)=ENQ1
+* PIPL  MOMENTUM IN 2 REST FRAME
+        DO 30 I=1,3
+ 30     PIPL(I)=-PIZ(I)
+        PIPL(4)=ENQ2
+* 3 REST FRAME, DEFINE PIM1
+*       PR   MOMENTUM
+        PR(1)=0
+        PR(2)=0
+        PR(4)=1./(2*AM3)*(AM3**2+AM2**2-AMP2**2)
+        PR(3)= SQRT(ABS(PR(4)**2-AM2**2))
+        PPI  =          PR(4)**2-AM2**2
+*       PIM1  MOMENTUM
+        PIM1(1)=0
+        PIM1(2)=0
+        PIM1(4)=1./(2*AM3)*(AM3**2-AM2**2+AMP2**2)
+        PIM1(3)=-PR(3)
+C --- this part of jacobian will be recovered later
+        FF3=(4*PI)*(2*PR(3)/AM3)
+* OLD PIONS BOOSTED FROM 2 REST FRAME TO 3 REST FRAME
+      EXE=(PR(4)+PR(3))/AM2
+      CALL BOSTR3(EXE,PIZ,PIZ)
+      CALL BOSTR3(EXE,PIPL,PIPL)
+      RR3=RRR(3)
+      RR4=RRR(4)
+      THET =ACOS(-1.+2*RR3)
+      PHI = 2*PI*RR4
+      CALL ROTPOL(THET,PHI,PIPL)
+      CALL ROTPOL(THET,PHI,PIM1)
+      CALL ROTPOL(THET,PHI,PIZ)
+      CALL ROTPOL(THET,PHI,PR)
+* 4  REST FRAME, DEFINE PIM2
+*       PR   MOMENTUM
+        PR(1)=0
+        PR(2)=0
+        PR(4)=1./(2*AM4)*(AM4**2+AM3**2-AMP1**2)
+        PR(3)= SQRT(ABS(PR(4)**2-AM3**2))
+        PPI  =          PR(4)**2-AM3**2
+*       PIM2 MOMENTUM
+        PIM2(1)=0
+        PIM2(2)=0
+        PIM2(4)=1./(2*AM4)*(AM4**2-AM3**2+AMP1**2)
+        PIM2(3)=-PR(3)
+C --- this part of jacobian will be recovered later
+        FF4=(4*PI)*(2*PR(3)/AM4)
+* OLD PIONS BOOSTED FROM 3 REST FRAME TO 4 REST FRAME
+      EXE=(PR(4)+PR(3))/AM3
+      CALL BOSTR3(EXE,PIZ,PIZ)
+      CALL BOSTR3(EXE,PIPL,PIPL)
+      CALL BOSTR3(EXE,PIM1,PIM1)
+      RR3=RRR(7)
+      RR4=RRR(8)
+      THET =ACOS(-1.+2*RR3)
+      PHI = 2*PI*RR4
+      CALL ROTPOL(THET,PHI,PIPL)
+      CALL ROTPOL(THET,PHI,PIM1)
+      CALL ROTPOL(THET,PHI,PIM2)
+      CALL ROTPOL(THET,PHI,PIZ)
+      CALL ROTPOL(THET,PHI,PR)
+C
+* NOW TO THE TAU REST FRAME, DEFINE PAA AND NEUTRINO MOMENTA
+* PAA  MOMENTUM
+      PAA(1)=0
+      PAA(2)=0
+      PAA(4)=1./(2*AMTAU)*(AMTAU**2-AMNUTA**2+AM4**2)
+      PAA(3)= SQRT(ABS(PAA(4)**2-AM4**2))
+      PPI   =          PAA(4)**2-AM4**2
+      PHSPAC=PHSPAC*(4*PI)*(2*PAA(3)/AMTAU)
+      PHSP=PHSP*(4*PI)*(2*PAA(3)/AMTAU)
+* TAU-NEUTRINO MOMENTUM
+      PN(1)=0
+      PN(2)=0
+      PN(4)=1./(2*AMTAU)*(AMTAU**2+AMNUTA**2-AM4**2)
+      PN(3)=-PAA(3)
+C ZBW 20.12.2002 bug fix
+        IF(RRR(9).LE.0.5*PREZ) THEN
+         DO 72 I=1,4
+         X=PIM1(I)
+         PIM1(I)=PIM2(I)
+ 72      PIM2(I)=X
+        ENDIF           
+C end of bug fix
+C WE INCLUDE REMAINING PART OF THE JACOBIAN
+C --- FLAT CHANNEL
+        AM3SQ=(PIM1(4)+PIZ(4)+PIPL(4))**2-(PIM1(3)+PIZ(3)+PIPL(3))**2
+     $       -(PIM1(2)+PIZ(2)+PIPL(2))**2-(PIM1(1)+PIZ(1)+PIPL(1))**2
+        AMS2=(AM4-AMP2)**2
+        AMS1=(AMP1+AMP3+AMP4)**2
+        FF1=(AMS2-AMS1)
+        AMS1=(AMP3+AMP4)**2
+        AMS2=(SQRT(AM3SQ)-AMP1)**2
+        FF2=AMS2-AMS1
+        FF3=(4*PI)*(XLAM(AM2**2,AMP1**2,AM3SQ)/AM3SQ)
+        FF4=(4*PI)*(XLAM(AM3SQ,AMP2**2,AM4**2)/AM4**2)
+        UU=FF1*FF2*FF3*FF4
+C --- FIRST CHANNEL
+        AM3SQ=(PIM1(4)+PIZ(4)+PIPL(4))**2-(PIM1(3)+PIZ(3)+PIPL(3))**2
+     $       -(PIM1(2)+PIZ(2)+PIPL(2))**2-(PIM1(1)+PIZ(1)+PIPL(1))**2
+        AMS2=(AM4-AMP2)**2
+        AMS1=(AMP1+AMP3+AMP4)**2
+        ALP1=ATAN((AMS1-AMRX**2)/AMRX/GAMRX)
+        ALP2=ATAN((AMS2-AMRX**2)/AMRX/GAMRX)
+        FF1=((AM3SQ-AMRX**2)**2+(AMRX*GAMRX)**2)/(AMRX*GAMRX)
+        FF1=FF1*(ALP2-ALP1)
+        AMS1=(AMP3+AMP4)**2
+        AMS2=(SQRT(AM3SQ)-AMP1)**2
+        FF2=AMS2-AMS1
+        FF3=(4*PI)*(XLAM(AM2**2,AMP1**2,AM3SQ)/AM3SQ)
+        FF4=(4*PI)*(XLAM(AM3SQ,AMP2**2,AM4**2)/AM4**2)
+        FF=FF1*FF2*FF3*FF4
+C --- SECOND CHANNEL
+        AM3SQ=(PIM2(4)+PIZ(4)+PIPL(4))**2-(PIM2(3)+PIZ(3)+PIPL(3))**2
+     $       -(PIM2(2)+PIZ(2)+PIPL(2))**2-(PIM2(1)+PIZ(1)+PIPL(1))**2
+        AMS2=(AM4-AMP1)**2
+        AMS1=(AMP2+AMP3+AMP4)**2
+        ALP1=ATAN((AMS1-AMRX**2)/AMRX/GAMRX)
+        ALP2=ATAN((AMS2-AMRX**2)/AMRX/GAMRX)
+        GG1=((AM3SQ-AMRX**2)**2+(AMRX*GAMRX)**2)/(AMRX*GAMRX)
+        GG1=GG1*(ALP2-ALP1)
+        AMS1=(AMP3+AMP4)**2
+        AMS2=(SQRT(AM3SQ)-AMP2)**2
+        GG2=AMS2-AMS1
+        GG3=(4*PI)*(XLAM(AM2**2,AMP2**2,AM3SQ)/AM3SQ)
+        GG4=(4*PI)*(XLAM(AM3SQ,AMP1**2,AM4**2)/AM4**2)
+        GG=GG1*GG2*GG3*GG4
+C --- JACOBIAN AVERAGED OVER THE TWO
+        ! 05.10.2011 missing factor in IF( (0.5*PREZ* ... (1-PREZ)* ...) added 
+        IF ( (0.5*PREZ*(FF+GG)*UU+(1.0-PREZ)*FF*GG).GT.0.0D0) THEN
+          RR=FF*GG*UU/(0.5*PREZ*(FF+GG)*UU+(1.0-PREZ)*FF*GG)
+          PHSPAC=PHSPAC*RR
+        ELSE
+          PHSPAC=0.0
+        ENDIF
+* MOMENTA OF THE TWO PI-MINUS ARE RANDOMLY SYMMETRISED
+       IF (JNPI.EQ.1) THEN
+        RR5= RRR(5)
+        IF(RR5.LE.0.5) THEN
+         DO 70 I=1,4
+         X=PIM1(I)
+         PIM1(I)=PIM2(I)
+ 70      PIM2(I)=X
+        ENDIF
+        PHSPAC=PHSPAC/2.
+       ELSE
+C MOMENTA OF PI0-S ARE GENERATED UNIFORMLY ONLY IF PREZ=0.0
+        RR5= RRR(5)
+        IF(RR5.LE.0.5) THEN
+         DO 71 I=1,4
+         X=PIM1(I)
+         PIM1(I)=PIM2(I)
+ 71      PIM2(I)=X
+        ENDIF
+        PHSPAC=PHSPAC/6.
+       ENDIF
+* ALL PIONS BOOSTED FROM  4  REST FRAME TO TAU REST FRAME
+* Z-AXIS ANTIPARALLEL TO NEUTRINO MOMENTUM
+      EXE=(PAA(4)+PAA(3))/AM4
+      CALL BOSTR3(EXE,PIZ,PIZ)
+      CALL BOSTR3(EXE,PIPL,PIPL)
+      CALL BOSTR3(EXE,PIM1,PIM1)
+      CALL BOSTR3(EXE,PIM2,PIM2)
+      CALL BOSTR3(EXE,PR,PR)
+C PARTIAL WIDTH CONSISTS OF PHASE SPACE AND AMPLITUDE
+C CHECK ON CONSISTENCY WITH DADNPI, THEN, CODE BREAKES UNIFORM PION
+C DISTRIBUTION IN HADRONIC SYSTEM
+CAM     Assume neutrino mass=0. and sum over final polarisation
+C      AMX2=AM4**2
+C      BRAK= 2*(AMTAU**2-AMX2) * (AMTAU**2+2.*AMX2)
+C      AMPLIT=CCABIB**2*GFERMI**2/2. * BRAK * AMX2*SIGEE(AMX2,1)
+      IF     (JNPI.EQ.1) THEN
+        CALL DAM4PI(JNPI,PT,PN,PIM1,PIM2,PIZ,PIPL,AMPLIT,HV)
+      ELSEIF (JNPI.EQ.2) THEN
+        CALL DAM4PI(JNPI,PT,PN,PIM1,PIM2,PIPL,PIZ,AMPLIT,HV)
+      ENDIF
+      DGAMT=1/(2.*AMTAU)*AMPLIT*PHSPAC
+C PHASE SPACE CHECK
+C      DGAMT=PHSPAC
+      DO 77 K=1,4
+        PMULT(K,1)=PIM1(K)
+        PMULT(K,2)=PIM2(K)
+        PMULT(K,3)=PIPL(K)
+        PMULT(K,4)=PIZ (K)
+ 77   CONTINUE
+      END
+      SUBROUTINE DAM4PI(MNUM,PT,PN,PIM1,PIM2,PIM3,PIM4,AMPLIT,HV)
+C ----------------------------------------------------------------------
+* CALCULATES DIFFERENTIAL CROSS SECTION AND POLARIMETER VECTOR
+* FOR TAU DECAY INTO 4 PI MODES
+* ALL SPIN EFFECTS IN THE FULL DECAY CHAIN ARE TAKEN INTO ACCOUNT.
+* CALCULATIONS DONE IN TAU REST FRAME WITH Z-AXIS ALONG NEUTRINO MOMENT
+C MNUM DECAY MODE IDENTIFIER.
+C
+C     called by : DPHSAA
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL  HV(4),PT(4),PN(4),PIM1(4),PIM2(4),PIM3(4),PIM4(4)
+      REAL  PIVEC(4),PIAKS(4),HVM(4)
+      COMPLEX HADCUR(4),FORM1,FORM2,FORM3,FORM4,FORM5
+      EXTERNAL FORM1,FORM2,FORM3,FORM4,FORM5
+      DATA PI /3.141592653589793238462643/
+      DATA ICONT /0/
+C
+      CALL CURR_CLEO(MNUM,PIM1,PIM2,PIM3,PIM4,HADCUR)
+C
+* CALCULATE PI-VECTORS: VECTOR AND AXIAL
+      CALL CLVEC(HADCUR,PN,PIVEC)
+      CALL CLAXI(HADCUR,PN,PIAKS)
+      CALL CLNUT(HADCUR,BRAKM,HVM)
+* SPIN INDEPENDENT PART OF DECAY DIFF-CROSS-SECT. IN TAU REST  FRAME
+      BRAK= (GV**2+GA**2)*PT(4)*PIVEC(4) +2.*GV*GA*PT(4)*PIAKS(4)
+     &     +2.*(GV**2-GA**2)*AMNUTA*AMTAU*BRAKM
+      AMPLIT=(CCABIB*GFERMI)**2*BRAK/2.
+C POLARIMETER VECTOR IN TAU REST FRAME
+      DO 90 I=1,3
+      HV(I)=-(AMTAU*((GV**2+GA**2)*PIAKS(I)+2.*GV*GA*PIVEC(I)))
+     &      +(GV**2-GA**2)*AMNUTA*AMTAU*HVM(I)
+C HV IS DEFINED FOR TAU-    WITH GAMMA=B+HV*POL
+      HV(I)=-HV(I)/BRAK
+ 90   CONTINUE
+      END
+      SUBROUTINE DPH5PI(DGAMT,HV,PN,PAA,PMULT,JNPI)                    
+C ----------------------------------------------------------------------
+* IT SIMULATES 5pi DECAY IN TAU REST FRAME WITH                         
+* Z-AXIS ALONG 5pi MOMENTUM                                             
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+C                                                                       
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+
+
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL                
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL                
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+     &                ,NAMES
+      CHARACTER NAMES(NMODE)*31
+      REAL  HV(4),PT(4),PN(4),PAA(4),PMULT(4,9) 
+      REAL*4 PR(4),PI1(4),PI2(4),PI3(4),PI4(4),PI5(4)                   
+      REAL*8 AMP1,AMP2,AMP3,AMP4,AMP5,ams1,ams2,amom,gamom
+      REAL*8 AM5SQ,AM4SQ,AM3SQ,AM2SQ,AM5,AM4,AM3
+      REAL*4 RRR(10)                                                    
+      REAL*8 gg1,gg2,gg3,ff1,ff2,ff3,ff4,alp,alp1,alp2
+      REAL*8 XM,AM,GAMMA
+ccM.S.>>>>>>
+      real*8 phspac
+ccM.S.<<<<<<
+      DATA PI /3.141592653589793238462643/                              
+      DATA ICONT /0/                                                    
+      data fpi /93.3e-3/                                                
+c                                                                       
+      COMPLEX BWIGN                                                     
+C                                                                     
+      BWIGN(XM,AM,GAMMA)=XM**2/CMPLX(XM**2-AM**2,GAMMA*AM)            
+  
+C                              
+      AMOM=.782                                                         
+      GAMOM=0.0085                                                      
+c                                                                       
+C 6 BODY PHASE SPACE NORMALISED AS IN BJORKEN-DRELL                     
+C D**3 P /2E/(2PI)**3 (2PI)**4 DELTA4(SUM P)                            
+      PHSPAC=1./2**29/PI**14                                            
+c     PHSPAC=1./2**5/PI**2                                              
+C init 5pi decay mode (JNPI)                                            
+      AMP1=DCDMAS(IDFFIN(1,JNPI))
+      AMP2=DCDMAS(IDFFIN(2,JNPI))
+      AMP3=DCDMAS(IDFFIN(3,JNPI))
+      AMP4=DCDMAS(IDFFIN(4,JNPI))
+      AMP5=DCDMAS(IDFFIN(5,JNPI))
+c                                                                       
+C TAU MOMENTUM                                                          
+      PT(1)=0.                                                          
+      PT(2)=0.                                                          
+      PT(3)=0.                                                          
+      PT(4)=AMTAU                                                       
+C                                                                       
+      CALL RANMAR(RRR,10)                                               
+C                                                                       
+c masses of 5, 4, 3 and 2 pi systems                                    
+c 3 pi with sampling for omega resonance                                
+cam                                                                     
+c mass of 5   (12345)                                                   
+      rr1=rrr(10)                                                       
+      ams1=(amp1+amp2+amp3+amp4+amp5)**2                                
+      ams2=(amtau-amnuta)**2                                            
+      am5sq=ams1+   rr1*(ams2-ams1)                                     
+      am5 =sqrt(am5sq)                                                  
+      phspac=phspac*(ams2-ams1)  
+c                                                                       
+c mass of 4   (2345)                                                    
+c flat phase space                                                      
+      rr1=rrr(9)                                                        
+      ams1=(amp2+amp3+amp4+amp5)**2                                     
+      ams2=(am5-amp1)**2                                                
+      am4sq=ams1+   rr1*(ams2-ams1)                                     
+      am4 =sqrt(am4sq)                                                  
+      gg1=ams2-ams1                   
+c                                                                       
+c mass of 3   (234)                                                     
+C phase space with sampling for omega resonance                         
+      rr1=rrr(1)                                                        
+      ams1=(amp2+amp3+amp4)**2                                          
+      ams2=(am4-amp5)**2                                                
+      alp1=atan((ams1-amom**2)/amom/gamom)                              
+      alp2=atan((ams2-amom**2)/amom/gamom)                              
+      alp=alp1+rr1*(alp2-alp1)                                          
+      am3sq =amom**2+amom*gamom*tan(alp)                                
+      am3 =sqrt(am3sq)                                                  
+c --- this part of the jacobian will be recovered later --------------- 
+      gg2=((am3sq-amom**2)**2+(amom*gamom)**2)/(amom*gamom)             
+      gg2=gg2*(alp2-alp1)                          
+c flat phase space;                                                     
+C      am3sq=ams1+   rr1*(ams2-ams1)                                     
+C      am3 =sqrt(am3sq)                                                  
+c --- this part of jacobian will be recovered later                     
+C      gg2=ams2-ams1                                                     
+c                                                                       
+C mass of 2  (34)                                                       
+      rr2=rrr(2)                                                        
+      ams1=(amp3+amp4)**2                                               
+      ams2=(am3-amp2)**2                                                
+c flat phase space;                                                     
+      am2sq=ams1+   rr2*(ams2-ams1)                                     
+      am2 =sqrt(am2sq)                                                  
+c --- this part of jacobian will be recovered later                     
+      gg3=ams2-ams1                            
+c                                                                       
+c (34) restframe, define pi3 and pi4                                    
+      enq1=(am2sq+amp3**2-amp4**2)/(2*am2)                              
+      enq2=(am2sq-amp3**2+amp4**2)/(2*am2)                              
+      ppi=          enq1**2-amp3**2                                     
+      pppi=sqrt(abs(enq1**2-amp3**2))                                   
+      ff1=(4*pi)*(2*pppi/am2)                                           
+c pi3   momentum in (34) rest frame                                     
+      call sphera(pppi,pi3)                                             
+      pi3(4)=enq1                                                       
+c pi4   momentum in (34) rest frame                                     
+      do 30 i=1,3                                                       
+ 30   pi4(i)=-pi3(i)                                                    
+      pi4(4)=enq2                                                       
+c                                                                       
+c (234) rest frame, define pi2                                          
+c pr   momentum                                                         
+      pr(1)=0                                                           
+      pr(2)=0                                                           
+      pr(4)=1./(2*am3)*(am3**2+am2**2-amp2**2)                          
+      pr(3)= sqrt(abs(pr(4)**2-am2**2))                                 
+      ppi  =          pr(4)**2-am2**2                                   
+c pi2   momentum                                                        
+      pi2(1)=0                                                          
+      pi2(2)=0                                                          
+      pi2(4)=1./(2*am3)*(am3**2-am2**2+amp2**2)                         
+      pi2(3)=-pr(3)                                                     
+c --- this part of jacobian will be recovered later                     
+      ff2=(4*pi)*(2*pr(3)/am3)                                          
+c old pions boosted from 2 rest frame to 3 rest frame                   
+      exe=(pr(4)+pr(3))/am2                                             
+      call bostr3(exe,pi3,pi3)                                          
+      call bostr3(exe,pi4,pi4)                                          
+      rr3=rrr(3)                                                        
+      rr4=rrr(4)                                                        
+      thet =acos(-1.+2*rr3)                                             
+      phi = 2*pi*rr4                                                    
+      call rotpol(thet,phi,pi2)                                         
+      call rotpol(thet,phi,pi3)                                         
+      call rotpol(thet,phi,pi4)                                         
+C                                                                       
+C (2345)  rest frame, define pi5                                        
+c pr   momentum                                                         
+      pr(1)=0                                                           
+      pr(2)=0                                                           
+      pr(4)=1./(2*am4)*(am4**2+am3**2-amp5**2)                          
+      pr(3)= sqrt(abs(pr(4)**2-am3**2))                                 
+      ppi  =          pr(4)**2-am3**2                                   
+c pi5  momentum                                                         
+      pi5(1)=0                                                          
+      pi5(2)=0                                                          
+      pi5(4)=1./(2*am4)*(am4**2-am3**2+amp5**2)                         
+      pi5(3)=-pr(3)                                                     
+c --- this part of jacobian will be recovered later                     
+      ff3=(4*pi)*(2*pr(3)/am4)                                          
+c old pions boosted from 3 rest frame to 4 rest frame                   
+      exe=(pr(4)+pr(3))/am3                                             
+      call bostr3(exe,pi2,pi2)                                          
+      call bostr3(exe,pi3,pi3)                                          
+      call bostr3(exe,pi4,pi4)                                          
+      rr3=rrr(5)                                                        
+      rr4=rrr(6)                                                        
+      thet =acos(-1.+2*rr3)                                             
+      phi = 2*pi*rr4                                                    
+      call rotpol(thet,phi,pi2)                                         
+      call rotpol(thet,phi,pi3)                                         
+      call rotpol(thet,phi,pi4)                                         
+      call rotpol(thet,phi,pi5)                                         
+C                                                                       
+C (12345)  rest frame, define pi1                                       
+c pr   momentum                                                         
+      pr(1)=0                                                           
+      pr(2)=0                                                           
+      pr(4)=1./(2*am5)*(am5**2+am4**2-amp1**2)                          
+      pr(3)= sqrt(abs(pr(4)**2-am4**2))                                 
+      ppi  =          pr(4)**2-am4**2                                   
+c pi1  momentum                                                         
+      pi1(1)=0                                                          
+      pi1(2)=0                                                          
+      pi1(4)=1./(2*am5)*(am5**2-am4**2+amp1**2)                         
+      pi1(3)=-pr(3)                                                     
+c --- this part of jacobian will be recovered later                     
+      ff4=(4*pi)*(2*pr(3)/am5)                                          
+c old pions boosted from 4 rest frame to 5 rest frame                   
+      exe=(pr(4)+pr(3))/am4                                             
+      call bostr3(exe,pi2,pi2)                                          
+      call bostr3(exe,pi3,pi3)                                          
+      call bostr3(exe,pi4,pi4)                                          
+      call bostr3(exe,pi5,pi5)                                          
+      rr3=rrr(7)                                                        
+      rr4=rrr(8)                                                        
+      thet =acos(-1.+2*rr3)                                             
+      phi = 2*pi*rr4                                                    
+      call rotpol(thet,phi,pi1)                                         
+      call rotpol(thet,phi,pi2)                                         
+      call rotpol(thet,phi,pi3)                                         
+      call rotpol(thet,phi,pi4)                                         
+      call rotpol(thet,phi,pi5)                                         
+c                                                                       
+* now to the tau rest frame, define paa and neutrino momenta            
+* paa  momentum                                                         
+      paa(1)=0                                                          
+      paa(2)=0                                                          
+c     paa(4)=1./(2*amtau)*(amtau**2-amnuta**2+am5**2)                   
+c     paa(3)= sqrt(abs(paa(4)**2-am5**2))                               
+c     ppi   =          paa(4)**2-am5**2                                 
+      paa(4)=1./(2*amtau)*(amtau**2-amnuta**2+am5sq)                    
+      paa(3)= sqrt(abs(paa(4)**2-am5sq))                                
+      ppi   =          paa(4)**2-am5sq                                  
+      phspac=phspac*(4*pi)*(2*paa(3)/amtau)                             
+* tau-neutrino momentum                                                 
+      pn(1)=0                                                           
+      pn(2)=0                                                           
+      pn(4)=1./(2*amtau)*(amtau**2+amnuta**2-am5**2)                    
+      pn(3)=-paa(3)                                                     
+c                                                                       
+      phspac=phspac * gg1*gg2*gg3*ff1*ff2*ff3*ff4                       
+c                                                                       
+C all pions boosted from  5  rest frame to tau rest frame               
+C z-axis antiparallel to neutrino momentum                              
+      exe=(paa(4)+paa(3))/am5                                           
+      call bostr3(exe,pi1,pi1)                                          
+      call bostr3(exe,pi2,pi2)                                          
+      call bostr3(exe,pi3,pi3)                                          
+      call bostr3(exe,pi4,pi4)                                          
+      call bostr3(exe,pi5,pi5)                                          
+c                                                                       
+C partial width consists of phase space and amplitude                   
+C AMPLITUDE  (cf YS.Tsai Phys.Rev.D4,2821(1971)                         
+C    or F.Gilman SH.Rhie Phys.Rev.D31,1066(1985)                        
+C                                                                       
+      PXQ=AMTAU*PAA(4)                                                  
+      PXN=AMTAU*PN(4)                                                   
+      QXN=PAA(4)*PN(4)-PAA(1)*PN(1)-PAA(2)*PN(2)-PAA(3)*PN(3)           
+      BRAK=2*(GV**2+GA**2)*(2*PXQ*QXN+AM5SQ*PXN)                        
+     &    -6*(GV**2-GA**2)*AMTAU*AMNUTA*AM5SQ                           
+      fompp = cabs(bwign(am3,amom,gamom))**2                            
+c normalisation factor (to some numerical undimensioned factor;         
+c cf R.Fischer et al ZPhys C3, 313 (1980))                              
+      fnorm = 1/fpi**6                                                  
+c     AMPLIT=CCABIB**2*GFERMI**2/2. * BRAK * AM5SQ*SIGEE(AM5SQ,JNPI)    
+      AMPLIT=CCABIB**2*GFERMI**2/2. * BRAK                              
+      amplit = amplit * fompp * fnorm                                   
+c phase space test                                                      
+c     amplit = amplit * fnorm                                           
+      DGAMT=1/(2.*AMTAU)*AMPLIT*PHSPAC                                  
+c ignore spin terms                                                     
+      DO 40 I=1,3                                                       
+ 40   HV(I)=0.                                    
+c                                                                       
+      do 77 k=1,4                                                       
+        pmult(k,1)=pi1(k)                                               
+        pmult(k,2)=pi2(k)                                               
+        pmult(k,3)=pi3(k)                                               
+        pmult(k,4)=pi4(k)                                               
+        pmult(k,5)=pi5(k)                                               
+ 77   continue                                                          
+      return
+C missing: transposition of identical particles, startistical factors 
+C for identical matrices, polarimetric vector. Matrix element rather naive.
+C flat phase space in pion system + with breit wigner for omega
+C anyway it is better than nothing, and code is improvable.                                                  
+      end                                                               
+      SUBROUTINE DPHSRK(DGAMT,HV,PN,PR,PMULT,INUM)
+C ----------------------------------------------------------------------
+C IT SIMULATES RHO DECAY IN TAU REST FRAME WITH                         
+C Z-AXIS ALONG RHO MOMENTUM                                             
+C Rho decays to K Kbar                                                  
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+C                                                                       
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+
+      REAL  HV(4),PT(4),PN(4),PR(4),PKC(4),PKZ(4),QQ(4),PMULT(4,9)
+      REAL RR1(1)
+      DATA PI /3.141592653589793238462643/                              
+      DATA ICONT /0/                                                    
+C                                                                       
+C THREE BODY PHASE SPACE NORMALISED AS IN BJORKEN-DRELL                 
+      PHSPAC=1./2**11/PI**5      
+C TAU MOMENTUM                                                          
+      PT(1)=0.                                                          
+      PT(2)=0.                                                          
+      PT(3)=0.                                                          
+      PT(4)=AMTAU                                                       
+C MASS OF (REAL/VIRTUAL) RHO                                            
+      AMS1=(AMK+AMKZ)**2                                                
+      AMS2=(AMTAU-AMNUTA)**2                                            
+C FLAT PHASE SPACE                                                      
+      CALL RANMAR(RR1,1)                                                
+      AMX2=AMS1+   RR1(1)*(AMS2-AMS1)                                      
+      AMX=SQRT(AMX2)                                                    
+      PHSPAC=PHSPAC*(AMS2-AMS1)                                         
+C PHASE SPACE WITH SAMPLING FOR RHO RESONANCE                           
+c     ALP1=ATAN((AMS1-AMRO**2)/AMRO/GAMRO)                              
+c     ALP2=ATAN((AMS2-AMRO**2)/AMRO/GAMRO)                              
+CAM                                                                     
+ 100  CONTINUE                                                          
+c     CALL RANMAR(RR1,1)                                                
+c     ALP=ALP1+RR1(1)*(ALP2-ALP1)                                          
+c     AMX2=AMRO**2+AMRO*GAMRO*TAN(ALP)                                  
+c     AMX=SQRT(AMX2)                                                    
+c     IF(AMX.LT.(AMK+AMKZ)) GO TO 100                                   
+CAM                                                                     
+c     PHSPAC=PHSPAC*((AMX2-AMRO**2)**2+(AMRO*GAMRO)**2)/(AMRO*GAMRO)    
+c     PHSPAC=PHSPAC*(ALP2-ALP1)                                         
+C                                                                       
+C TAU-NEUTRINO MOMENTUM                                                 
+      PN(1)=0                                                           
+      PN(2)=0                                                           
+      PN(4)=1./(2*AMTAU)*(AMTAU**2+AMNUTA**2-AMX**2)                    
+      PN(3)=-SQRT(ABS((PN(4)-AMNUTA)*(PN(4)+AMNUTA)))                        
+C RHO MOMENTUM                                                          
+      PR(1)=0                                                           
+      PR(2)=0                                                           
+      PR(4)=1./(2*AMTAU)*(AMTAU**2-AMNUTA**2+AMX**2)                    
+      PR(3)=-PN(3)                                                      
+      PHSPAC=PHSPAC*(4*PI)*(2*PR(3)/AMTAU)                              
+C                                                                       
+CAM                                                                     
+      ENQ1=(AMX2+AMK**2-AMKZ**2)/(2.*AMX)                               
+      ENQ2=(AMX2-AMK**2+AMKZ**2)/(2.*AMX)                               
+      PPPI=SQRT(abs(ENQ1-AMK)*(ENQ1+AMK))                                  
+      PHSPAC=PHSPAC*(4*PI)*(2*PPPI/AMX)                                 
+C CHARGED PI MOMENTUM IN RHO REST FRAME                                 
+      CALL SPHERA(PPPI,PKC)                                             
+      PKC(4)=ENQ1                                                       
+C NEUTRAL PI MOMENTUM IN RHO REST FRAME                                 
+      DO 20 I=1,3                                                       
+20    PKZ(I)=-PKC(I)                                                    
+      PKZ(4)=ENQ2                                                       
+      EXE=(PR(4)+PR(3))/AMX                                             
+C PIONS BOOSTED FROM RHO REST FRAME TO TAU REST FRAME                   
+      CALL BOSTR3(EXE,PKC,PKC)                                          
+      CALL BOSTR3(EXE,PKZ,PKZ)     
+
+
+      CALL DAM2PI(3,PT,PN,PKC,PKZ,AMPLIT,HV)
+      DGAMT=1/(2.*AMTAU)*AMPLIT*PHSPAC
+
+      do 77 k=1,4                                                       
+        pmult(k,1)=pkc(k)
+        pmult(k,2)=pkz(k)
+ 77   continue           
+      RETURN             
+      END                
+      FUNCTION FPIRK(W)  
+C ----------------------------------------------------------            
+c     square of pion form factor                                        
+C ----------------------------------------------------------            
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+C                                                                       
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU             
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1                
+     *                 ,AMK,AMKZ,AMKST,GAMKST                           
+c     COMPLEX FPIKMK                                                    
+      COMPLEX FPIKM                                                     
+      FPIRK=CABS(FPIKM(W,AMK,AMKZ))**2                                  
+c     FPIRK=CABS(FPIKMK(W,AMK,AMKZ))**2                                 
+      END                                                               
+      COMPLEX FUNCTION FPIKMK(W,XM1,XM2)                                
+C **********************************************************            
+C     Kaon form factor                                                  
+C **********************************************************            
+      COMPLEX BWIGM                                                     
+      REAL ROM,ROG,ROM1,ROG1,BETA1,PI,PIM,S,W                           
+      EXTERNAL BWIG                                                     
+      DATA  INIT /0/                                                    
+C                                                                       
+C ------------ PARAMETERS --------------------                          
+      IF (INIT.EQ.0 ) THEN                                              
+      INIT=1                                                            
+      PI=3.141592654                                                    
+      PIM=.140                                                          
+      ROM=0.773                                                         
+      ROG=0.145                                                         
+      ROM1=1.570                                                        
+      ROG1=0.510                                                        
+c     BETA1=-0.111                                                      
+      BETA1=-0.221                                                      
+      ENDIF                                                             
+C -----------------------------------------------                       
+      S=W**2                                                            
+      FPIKMK=(BWIGM(S,ROM,ROG,XM1,XM2)+BETA1*BWIGM(S,ROM1,ROG1,XM1,XM2))
+     & /(1+BETA1)                                                       
+      RETURN                                                            
+      END                                                               
+      SUBROUTINE RESLUX
+C     ****************
+C INITIALIZE LUND COMMON
+      NHEP=0
+      END
+      SUBROUTINE DWRPH(KTO,PHX)
+C
+C -------------------------
+C
+      IMPLICIT REAL*8 (A-H,O-Z)
+      REAL*4         PHX(4)
+      REAL*4 QHOT(4)
+C
+      DO  9 K=1,4
+      QHOT(K)  =0.0
+  9   CONTINUE
+C CASE OF TAU RADIATIVE DECAYS.
+C FILLING OF THE LUND COMMON BLOCK.
+        DO 1002 I=1,4
+ 1002   QHOT(I)=PHX(I)
+        IF (QHOT(4).GT.1.E-5) CALL DWLUPH(KTO,QHOT)
+        RETURN
+      END
+      SUBROUTINE DWLUPH(KTO,PHOT)
+C---------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C     called by : DEXAY1,(DEKAY1,DEKAY2)
+C
+C used when radiative corrections in decays are generated
+C---------------------------------------------------------------------
+C
+      REAL  PHOT(4)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C check energy
+      IF (PHOT(4).LE.0.0) RETURN
+C
+C position of decaying particle:
+      IF((KTO.EQ. 1).OR.(KTO.EQ.11)) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+      KTOS=KTO
+      IF(KTOS.GT.10) KTOS=KTOS-10
+C boost and append photon (gamma is 22)
+      CALL TRALO4(KTOS,PHOT,PHOT,AM)
+      CALL FILHEP(0,1,22,NPS,NPS,0,0,PHOT,0.0,.TRUE.)
+C
+      RETURN
+      END
+      SUBROUTINE DWLUEL(KTO,ISGN,PNU,PWB,PEL,PNE)
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C
+C     called by : DEXAY,(DEKAY1,DEKAY2)
+C ----------------------------------------------------------------------
+C
+      REAL  PNU(4),PWB(4),PEL(4),PNE(4)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C position of decaying particle:
+      IF(KTO.EQ. 1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4(KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C W boson (W+ is 24)
+      CALL TRALO4(KTO,PWB,PWB,AM)
+C     CALL FILHEP(0,2,-24*ISGN,NPS,NPS,0,0,PWB,AM,.TRUE.)
+C
+C electron (e- is 11)
+      CALL TRALO4(KTO,PEL,PEL,AM)
+      CALL FILHEP(0,1,11*ISGN,NPS,NPS,0,0,PEL,AM,.FALSE.)
+C
+C anti electron neutrino (nu_e is 12)
+      CALL TRALO4(KTO,PNE,PNE,AM)
+      CALL FILHEP(0,1,-12*ISGN,NPS,NPS,0,0,PNE,AM,.TRUE.)
+C
+      RETURN
+      END
+      SUBROUTINE DWLUMU(KTO,ISGN,PNU,PWB,PMU,PNM)
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C
+C     called by : DEXAY,(DEKAY1,DEKAY2)
+C ----------------------------------------------------------------------
+C
+      REAL  PNU(4),PWB(4),PMU(4),PNM(4)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C position of decaying particle:
+      IF(KTO.EQ. 1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4(KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C W boson (W+ is 24)
+      CALL TRALO4(KTO,PWB,PWB,AM)
+C     CALL FILHEP(0,2,-24*ISGN,NPS,NPS,0,0,PWB,AM,.TRUE.)
+C
+C muon (mu- is 13)
+      CALL TRALO4(KTO,PMU,PMU,AM)
+      CALL FILHEP(0,1,13*ISGN,NPS,NPS,0,0,PMU,AM,.FALSE.)
+C
+C anti muon neutrino (nu_mu is 14)
+      CALL TRALO4(KTO,PNM,PNM,AM)
+      CALL FILHEP(0,1,-14*ISGN,NPS,NPS,0,0,PNM,AM,.TRUE.)
+C
+      RETURN
+      END
+      SUBROUTINE DWLUPI(KTO,ISGN,PPI,PNU)
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C
+C     called by : DEXAY,(DEKAY1,DEKAY2)
+C ----------------------------------------------------------------------
+C
+      REAL  PNU(4),PPI(4)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C position of decaying particle:
+      IF(KTO.EQ. 1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4(KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C charged pi meson (pi+ is 211)
+      CALL TRALO4(KTO,PPI,PPI,AM)
+      CALL FILHEP(0,1,-211*ISGN,NPS,NPS,0,0,PPI,AM,.TRUE.)
+C
+      RETURN
+      END
+      SUBROUTINE DWLURO(KTO,ISGN,PNU,PRHO,PIC,PIZ)
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C
+C     called by : DEXAY,(DEKAY1,DEKAY2)
+C ----------------------------------------------------------------------
+C
+      REAL  PNU(4),PRHO(4),PIC(4),PIZ(4)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C position of decaying particle:
+      IF(KTO.EQ. 1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4(KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C charged rho meson (rho+ is 213)
+      CALL TRALO4(KTO,PRHO,PRHO,AM)
+      CALL FILHEP(0,2,-213*ISGN,NPS,NPS,0,0,PRHO,AM,.TRUE.)
+C
+C charged pi meson (pi+ is 211)
+      CALL TRALO4(KTO,PIC,PIC,AM)
+      CALL FILHEP(0,1,-211*ISGN,-1,-1,0,0,PIC,AM,.TRUE.)
+C
+C pi0 meson (pi0 is 111)
+      CALL TRALO4(KTO,PIZ,PIZ,AM)
+      CALL FILHEP(0,1,111,-2,-2,0,0,PIZ,AM,.TRUE.)
+C
+      RETURN
+      END
+      SUBROUTINE DWLUAA(KTO,ISGN,PNU,PAA,PIM1,PIM2,PIPL,JAA)
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C JAA  = 1 (2) FOR A_1- DECAY TO PI+ 2PI- (PI- 2PI0)
+C
+C     called by : DEXAY,(DEKAY1,DEKAY2)
+C ----------------------------------------------------------------------
+C
+      REAL  PNU(4),PAA(4),PIM1(4),PIM2(4),PIPL(4)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C position of decaying particle:
+      IF(KTO.EQ. 1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4(KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C charged a_1 meson (a_1+ is 20213)
+      CALL TRALO4(KTO,PAA,PAA,AM)
+      CALL FILHEP(0,1,-20213*ISGN,NPS,NPS,0,0,PAA,AM,.TRUE.)
+C
+C two possible decays of the charged a1 meson
+      IF(JAA.EQ.1) THEN
+C
+C A1  --> PI+ PI-  PI- (or charged conjugate)
+C
+C pi minus (or c.c.) (pi+ is 211)
+        CALL TRALO4(KTO,PIM2,PIM2,AM)
+        CALL FILHEP(0,1,-211*ISGN,-1,-1,0,0,PIM2,AM,.TRUE.)
+C
+C pi minus (or c.c.) (pi+ is 211)
+        CALL TRALO4(KTO,PIM1,PIM1,AM)
+        CALL FILHEP(0,1,-211*ISGN,-2,-2,0,0,PIM1,AM,.TRUE.)
+C
+C pi plus (or c.c.) (pi+ is 211)
+        CALL TRALO4(KTO,PIPL,PIPL,AM)
+        CALL FILHEP(0,1, 211*ISGN,-3,-3,0,0,PIPL,AM,.TRUE.)
+C
+      ELSE IF (JAA.EQ.2) THEN
+C
+C A1  --> PI- PI0  PI0 (or charged conjugate)
+C
+C pi zero (pi0 is 111)
+        CALL TRALO4(KTO,PIM2,PIM2,AM)
+        CALL FILHEP(0,1,111,-1,-1,0,0,PIM2,AM,.TRUE.)
+C
+C pi zero (pi0 is 111)
+        CALL TRALO4(KTO,PIM1,PIM1,AM)
+        CALL FILHEP(0,1,111,-2,-2,0,0,PIM1,AM,.TRUE.)
+C
+C pi minus (or c.c.) (pi+ is 211)
+        CALL TRALO4(KTO,PIPL,PIPL,AM)
+        CALL FILHEP(0,1,-211*ISGN,-3,-3,0,0,PIPL,AM,.TRUE.)
+C
+      ENDIF
+C
+      RETURN
+      END
+      SUBROUTINE DWLUKK (KTO,ISGN,PKK,PNU)
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C
+C ----------------------------------------------------------------------
+C
+      REAL PKK(4),PNU(4)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C position of decaying particle
+      IF (KTO.EQ.1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4 (KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C K meson (K+ is 321)
+      CALL TRALO4 (KTO,PKK,PKK,AM)
+      CALL FILHEP(0,1,-321*ISGN,NPS,NPS,0,0,PKK,AM,.TRUE.)
+C
+      RETURN
+      END
+      SUBROUTINE DWLUKS(KTO,ISGN,PNU,PKS,PKK,PPI,JKST)
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C JKST=10 (20) corresponds to K0B pi- (K- pi0) decay
+C
+C ----------------------------------------------------------------------
+C
+      REAL  PNU(4),PKS(4),PKK(4),PPI(4),XIO(1)
+      COMMON /TAUPOS/ NP1,NP2
+C
+C position of decaying particle
+      IF(KTO.EQ. 1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4(KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C charged K* meson (K*+ is 323)
+      CALL TRALO4(KTO,PKS,PKS,AM)
+      CALL FILHEP(0,1,-323*ISGN,NPS,NPS,0,0,PKS,AM,.TRUE.)
+C
+C two possible decay modes of charged K*
+      IF(JKST.EQ.10) THEN
+C
+C K*- --> pi- K0B (or charged conjugate)
+C
+C charged pi meson  (pi+ is 211)
+        CALL TRALO4(KTO,PPI,PPI,AM)
+        CALL FILHEP(0,1,-211*ISGN,-1,-1,0,0,PPI,AM,.TRUE.)
+C
+        BRAN=BRK0B
+        IF (ISGN.EQ.-1) BRAN=BRK0
+C K0 --> K0_long (is 130) / K0_short (is 310) = 1/1
+        CALL RANMAR(XIO,1)
+        IF(XIO(1).GT.BRAN) THEN
+          K0TYPE = 130
+        ELSE
+          K0TYPE = 310
+        ENDIF
+C
+        CALL TRALO4(KTO,PKK,PKK,AM)
+        CALL FILHEP(0,1,K0TYPE,-2,-2,0,0,PKK,AM,.TRUE.)
+C
+      ELSE IF(JKST.EQ.20) THEN
+C
+C K*- --> pi0 K-
+C
+C pi zero (pi0 is 111)
+        CALL TRALO4(KTO,PPI,PPI,AM)
+        CALL FILHEP(0,1,111,-1,-1,0,0,PPI,AM,.TRUE.)
+C
+C charged K meson (K+ is 321)
+        CALL TRALO4(KTO,PKK,PKK,AM)
+        CALL FILHEP(0,1,-321*ISGN,-2,-2,0,0,PKK,AM,.TRUE.)
+C
+      ENDIF
+C
+      RETURN
+      END
+      SUBROUTINE DWLNEW(KTO,ISGN,PNU,PWB,PNPI,MODE)
+C ----------------------------------------------------------------------
+C Lorentz transformation to CMsystem and
+C Updating of HEPEVT record
+C
+C ISGN = 1/-1 for tau-/tau+
+C
+C     called by : DEXAY,(DEKAY1,DEKAY2)
+C ----------------------------------------------------------------------
+C
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+     &                ,NAMES
+      COMMON /TAUPOS/ NP1,NP2
+      CHARACTER NAMES(NMODE)*31
+      REAL  PNU(4),PWB(4),PNPI(4,9)
+      REAL  PPI(4)
+C
+      JNPI=MODE-7
+C position of decaying particle
+      IF(KTO.EQ. 1) THEN
+        NPS=NP1
+      ELSE
+        NPS=NP2
+      ENDIF
+C
+C tau neutrino (nu_tau is 16)
+      CALL TRALO4(KTO,PNU,PNU,AM)
+      CALL FILHEP(0,1,16*ISGN,NPS,NPS,0,0,PNU,AM,.TRUE.)
+C
+C W boson (W+ is 24)
+      CALL TRALO4(KTO,PWB,PWB,AM)
+      CALL FILHEP(0,1,-24*ISGN,NPS,NPS,0,0,PWB,AM,.TRUE.)
+C
+C multi pi mode JNPI
+C
+C get multiplicity of mode JNPI
+      ND=MULPIK(JNPI)
+      DO I=1,ND
+        KFPI=LUNPIK(IDFFIN(I,JNPI),-ISGN)
+C for charged conjugate case, change charged pions only
+C        IF(KFPI.NE.111)KFPI=KFPI*ISGN
+        DO J=1,4
+          PPI(J)=PNPI(J,I)
+        END DO
+        CALL TRALO4(KTO,PPI,PPI,AM)
+        CALL FILHEP(0,1,KFPI,-I,-I,0,0,PPI,AM,.TRUE.)
+      END DO
+C
+      RETURN
+      END
+      FUNCTION AMAST(PP)
+C ----------------------------------------------------------------------
+C CALCULATES MASS OF PP (DOUBLE PRECISION)
+C
+C     USED BY : RADKOR
+C ----------------------------------------------------------------------
+      IMPLICIT REAL*8 (A-H,O-Z)
+      REAL*8  PP(4)
+      AAA=PP(4)**2-PP(3)**2-PP(2)**2-PP(1)**2
+C
+      IF(AAA.NE.0.0) AAA=AAA/SQRT(ABS(AAA))
+      AMAST=AAA
+      RETURN
+      END
+      FUNCTION AMAS4(PP)
+C     ******************
+C ----------------------------------------------------------------------
+C CALCULATES MASS OF PP
+C
+C     USED BY :
+C ----------------------------------------------------------------------
+      REAL  PP(4)
+      AAA=PP(4)**2-PP(3)**2-PP(2)**2-PP(1)**2
+      IF(AAA.NE.0.0) AAA=AAA/SQRT(ABS(AAA))
+      AMAS4=AAA
+      RETURN
+      END
+      FUNCTION ANGXY(X,Y)
+C ----------------------------------------------------------------------
+C
+C     USED BY : KORALZ RADKOR
+C ----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      DATA PI /3.141592653589793238462643D0/
+C
+      IF(ABS(Y).LT.ABS(X)) THEN
+        THE=ATAN(ABS(Y/X))
+        IF(X.LE.0D0) THE=PI-THE
+      ELSE
+        THE=ACOS(X/SQRT(X**2+Y**2))
+      ENDIF
+      ANGXY=THE
+      RETURN
+      END
+      FUNCTION ANGFI(X,Y)
+C ----------------------------------------------------------------------
+* CALCULATES ANGLE IN (0,2*PI) RANGE OUT OF X-Y
+C
+C     USED BY : KORALZ RADKOR
+C ----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      DATA PI /3.141592653589793238462643D0/
+C
+      IF(ABS(Y).LT.ABS(X)) THEN
+        THE=ATAN(ABS(Y/X))
+        IF(X.LE.0D0) THE=PI-THE
+      ELSE
+        THE=ACOS(X/SQRT(X**2+Y**2))
+      ENDIF
+      IF(Y.LT.0D0) THE=2D0*PI-THE
+      ANGFI=THE
+      END
+      SUBROUTINE ROTOD1(PH1,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C
+C     USED BY : KORALZ
+C ----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      DIMENSION PVEC(4),QVEC(4),RVEC(4)
+C
+      PHI=PH1
+      CS=COS(PHI)
+      SN=SIN(PHI)
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      QVEC(1)=RVEC(1)
+      QVEC(2)= CS*RVEC(2)-SN*RVEC(3)
+      QVEC(3)= SN*RVEC(2)+CS*RVEC(3)
+      QVEC(4)=RVEC(4)
+      RETURN
+      END
+      SUBROUTINE ROTOD2(PH1,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C
+C     USED BY : KORALZ RADKOR
+C ----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      DIMENSION PVEC(4),QVEC(4),RVEC(4)
+C
+      PHI=PH1
+      CS=COS(PHI)
+      SN=SIN(PHI)
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      QVEC(1)= CS*RVEC(1)+SN*RVEC(3)
+      QVEC(2)=RVEC(2)
+      QVEC(3)=-SN*RVEC(1)+CS*RVEC(3)
+      QVEC(4)=RVEC(4)
+      RETURN
+      END
+      SUBROUTINE ROTOD3(PH1,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C
+C     USED BY : KORALZ RADKOR
+C ----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+C
+      DIMENSION PVEC(4),QVEC(4),RVEC(4)
+      PHI=PH1
+      CS=COS(PHI)
+      SN=SIN(PHI)
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      QVEC(1)= CS*RVEC(1)-SN*RVEC(2)
+      QVEC(2)= SN*RVEC(1)+CS*RVEC(2)
+      QVEC(3)=RVEC(3)
+      QVEC(4)=RVEC(4)
+      END
+      SUBROUTINE BOSTR3(EXE,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C BOOST ALONG Z AXIS, EXE=EXP(ETA), ETA= HIPERBOLIC VELOCITY.
+C
+C     USED BY : TAUOLA KORALZ (?)
+C ----------------------------------------------------------------------
+      REAL*4 PVEC(4),QVEC(4),RVEC(4)
+C
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      RPL=RVEC(4)+RVEC(3)
+      RMI=RVEC(4)-RVEC(3)
+      QPL=RPL*EXE
+      QMI=RMI/EXE
+      QVEC(1)=RVEC(1)
+      QVEC(2)=RVEC(2)
+      QVEC(3)=(QPL-QMI)/2
+      QVEC(4)=(QPL+QMI)/2
+      END
+      SUBROUTINE BOSTD3(EXE,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C BOOST ALONG Z AXIS, EXE=EXP(ETA), ETA= HIPERBOLIC VELOCITY.
+C
+C     USED BY : KORALZ RADKOR
+C ----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      DIMENSION PVEC(4),QVEC(4),RVEC(4)
+C
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      RPL=RVEC(4)+RVEC(3)
+      RMI=RVEC(4)-RVEC(3)
+      QPL=RPL*EXE
+      QMI=RMI/EXE
+      QVEC(1)=RVEC(1)
+      QVEC(2)=RVEC(2)
+      QVEC(3)=(QPL-QMI)/2
+      QVEC(4)=(QPL+QMI)/2
+      RETURN
+      END
+      SUBROUTINE ROTOR1(PH1,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C
+C     called by :
+C ----------------------------------------------------------------------
+      REAL*4 PVEC(4),QVEC(4),RVEC(4)
+C
+      PHI=PH1
+      CS=COS(PHI)
+      SN=SIN(PHI)
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      QVEC(1)=RVEC(1)
+      QVEC(2)= CS*RVEC(2)-SN*RVEC(3)
+      QVEC(3)= SN*RVEC(2)+CS*RVEC(3)
+      QVEC(4)=RVEC(4)
+      END
+      SUBROUTINE ROTOR2(PH1,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C
+C     USED BY : TAUOLA
+C ----------------------------------------------------------------------
+      IMPLICIT REAL*4(A-H,O-Z)
+      REAL*4 PVEC(4),QVEC(4),RVEC(4)
+C
+      PHI=PH1
+      CS=COS(PHI)
+      SN=SIN(PHI)
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      QVEC(1)= CS*RVEC(1)+SN*RVEC(3)
+      QVEC(2)=RVEC(2)
+      QVEC(3)=-SN*RVEC(1)+CS*RVEC(3)
+      QVEC(4)=RVEC(4)
+      END
+      SUBROUTINE ROTOR3(PHI,PVEC,QVEC)
+C ----------------------------------------------------------------------
+C
+C     USED BY : TAUOLA
+C ----------------------------------------------------------------------
+      REAL*4 PVEC(4),QVEC(4),RVEC(4)
+C
+      CS=COS(PHI)
+      SN=SIN(PHI)
+      DO 10 I=1,4
+  10  RVEC(I)=PVEC(I)
+      QVEC(1)= CS*RVEC(1)-SN*RVEC(2)
+      QVEC(2)= SN*RVEC(1)+CS*RVEC(2)
+      QVEC(3)=RVEC(3)
+      QVEC(4)=RVEC(4)
+      END
+      SUBROUTINE SPHERD(R,X)
+C ----------------------------------------------------------------------
+C GENERATES UNIFORMLY THREE-VECTOR X ON SPHERE  OF RADIUS R
+C DOUBLE PRECISON VERSION OF SPHERA
+C ----------------------------------------------------------------------
+      REAL*8  R,X(4),PI,COSTH,SINTH
+      REAL*4 RRR(2)
+      DATA PI /3.141592653589793238462643D0/
+C
+      CALL RANMAR(RRR,2)
+      COSTH=-1+2*RRR(1)
+      SINTH=SQRT(1 -COSTH**2)
+      X(1)=R*SINTH*COS(2*PI*RRR(2))
+      X(2)=R*SINTH*SIN(2*PI*RRR(2))
+      X(3)=R*COSTH
+      RETURN
+      END
+      SUBROUTINE ROTPOX(THET,PHI,PP)
+      IMPLICIT REAL*8 (A-H,O-Z)
+C ----------------------------------------------------------------------
+C
+C ----------------------------------------------------------------------
+      DIMENSION PP(4)
+C
+      CALL ROTOD2(THET,PP,PP)
+      CALL ROTOD3( PHI,PP,PP)
+      RETURN
+      END
+      SUBROUTINE SPHERA(R,X)
+C ----------------------------------------------------------------------
+C GENERATES UNIFORMLY THREE-VECTOR X ON SPHERE  OF RADIUS R
+C
+C     called by : DPHSxx,DADMPI,DADMKK
+C ----------------------------------------------------------------------
+      REAL  X(4)
+      REAL*4 RRR(2)
+      DATA PI /3.141592653589793238462643/
+C
+      CALL RANMAR(RRR,2)
+      COSTH=-1.+2.*RRR(1)
+      SINTH=SQRT(1.-COSTH**2)
+      X(1)=R*SINTH*COS(2*PI*RRR(2))
+      X(2)=R*SINTH*SIN(2*PI*RRR(2))
+      X(3)=R*COSTH
+      RETURN
+      END
+      SUBROUTINE ROTPOL(THET,PHI,PP)
+C ----------------------------------------------------------------------
+C
+C     called by : DADMAA,DPHSAA
+C ----------------------------------------------------------------------
+      REAL  PP(4)
+C
+      CALL ROTOR2(THET,PP,PP)
+      CALL ROTOR3( PHI,PP,PP)
+      RETURN
+      END
+      SUBROUTINE RANMAR(RVEC,LENV)
+C ----------------------------------------------------------------------
+C<<<<<FUNCTION RANMAR(IDUMM)
+C CERNLIB V113, VERSION WITH AUTOMATIC DEFAULT INITIALIZATION
+C     Transformed to SUBROUTINE to be as in CERNLIB
+C     AM.Lutz   November 1988, Feb. 1989
+C
+C!Universal random number generator proposed by Marsaglia and Zaman
+C in report FSU-SCRI-87-50
+C        modified by F. James, 1988 and 1989, to generate a vector
+C        of pseudorandom numbers RVEC of length LENV, and to put in
+C        the COMMON block everything needed to specify currrent state,
+C        and to add input and output entry points RMARIN, RMARUT.
+C
+C     Unique random number used in the program
+C ----------------------------------------------------------------------
+      COMMON / INOUT / INUT,IOUT
+      DIMENSION RVEC(*)
+      COMMON/RASET1/U(97),C,I97,J97
+      PARAMETER (MODCNS=1000000000)
+      DATA NTOT,NTOT2,IJKL/-1,0,0/
+C
+      IF (NTOT .GE. 0)  GO TO 50
+C
+C        Default initialization. User has called RANMAR without RMARIN.
+      IJKL = 54217137
+      NTOT = 0
+      NTOT2 = 0
+      KALLED = 0
+      GO TO 1
+C
+      ENTRY      RMARIN(IJKLIN, NTOTIN,NTOT2N)
+C         Initializing routine for RANMAR, may be called before
+C         generating pseudorandom numbers with RANMAR. The input
+C         values should be in the ranges:  0<=IJKLIN<=900 OOO OOO
+C                                          0<=NTOTIN<=999 999 999
+C                                          0<=NTOT2N<<999 999 999!
+C To get the standard values in Marsaglia-s paper, IJKLIN=54217137
+C                                            NTOTIN,NTOT2N=0
+      IJKL = IJKLIN
+      NTOT = MAX(NTOTIN,0)
+      NTOT2= MAX(NTOT2N,0)
+      KALLED = 1
+C          always come here to initialize
+    1 CONTINUE
+      IJ = IJKL/30082
+      KL = IJKL - 30082*IJ
+      I = MOD(IJ/177, 177) + 2
+      J = MOD(IJ, 177)     + 2
+      K = MOD(KL/169, 178) + 1
+      L = MOD(KL, 169)
+      WRITE(IOUT,201) IJKL,NTOT,NTOT2
+ 201  FORMAT(1X,' RANMAR INITIALIZED: ',I10,2X,2I10)
+      DO 2 II= 1, 97
+      S = 0.
+      T = .5
+      DO 3 JJ= 1, 24
+         M = MOD(MOD(I*J,179)*K, 179)
+         I = J
+         J = K
+         K = M
+         L = MOD(53*L+1, 169)
+         IF (MOD(L*M,64) .GE. 32)  S = S+T
+    3    T = 0.5*T
+    2 U(II) = S
+      TWOM24 = 1.0
+      DO 4 I24= 1, 24
+    4 TWOM24 = 0.5*TWOM24
+      C  =   362436.*TWOM24
+      CD =  7654321.*TWOM24
+      CM = 16777213.*TWOM24
+      I97 = 97
+      J97 = 33
+C       Complete initialization by skipping
+C            (NTOT2*MODCNS + NTOT) random numbers
+      DO 45 LOOP2= 1, NTOT2+1
+      NOW = MODCNS
+      IF (LOOP2 .EQ. NTOT2+1)  NOW=NTOT
+      IF (NOW .GT. 0)  THEN
+       WRITE (IOUT,'(A,I15)') ' RMARIN SKIPPING OVER ',NOW
+       DO 40 IDUM = 1, NTOT
+       UNI = U(I97)-U(J97)
+       IF (UNI .LT. 0.)  UNI=UNI+1.
+       U(I97) = UNI
+       I97 = I97-1
+       IF (I97 .EQ. 0)  I97=97
+       J97 = J97-1
+       IF (J97 .EQ. 0)  J97=97
+       C = C - CD
+       IF (C .LT. 0.)  C=C+CM
+   40  CONTINUE
+      ENDIF
+   45 CONTINUE
+      IF (KALLED .EQ. 1)  RETURN
+C
+C          Normal entry to generate LENV random numbers
+   50 CONTINUE
+      DO 100 IVEC= 1, LENV
+      UNI = U(I97)-U(J97)
+      IF (UNI .LT. 0.)  UNI=UNI+1.
+      U(I97) = UNI
+      I97 = I97-1
+      IF (I97 .EQ. 0)  I97=97
+      J97 = J97-1
+      IF (J97 .EQ. 0)  J97=97
+      C = C - CD
+      IF (C .LT. 0.)  C=C+CM
+      UNI = UNI-C
+      IF (UNI .LT. 0.) UNI=UNI+1.
+C        Replace exact zeroes by uniform distr. *2**-24
+         IF (UNI .EQ. 0.)  THEN
+         UNI = TWOM24*U(2)
+C             An exact zero here is very unlikely, but lets be safe.
+         IF (UNI .EQ. 0.) UNI= TWOM24*TWOM24
+         ENDIF
+      RVEC(IVEC) = UNI
+  100 CONTINUE
+      NTOT = NTOT + LENV
+         IF (NTOT .GE. MODCNS)  THEN
+         NTOT2 = NTOT2 + 1
+         NTOT = NTOT - MODCNS
+         ENDIF
+      RETURN
+C           Entry to output current status
+      ENTRY RMARUT(IJKLUT,NTOTUT,NTOT2T)
+      IJKLUT = IJKL
+      NTOTUT = NTOT
+      NTOT2T = NTOT2
+      RETURN
+      END
+      FUNCTION DILOGT(X)
+C     *****************
+      IMPLICIT REAL*8(A-H,O-Z)
+CERN      C304      VERSION    29/07/71 DILOG        59                C
+      Z=-1.64493406684822
+      IF(X .LT.-1.0) GO TO 1
+      IF(X .LE. 0.5) GO TO 2
+      IF(X .EQ. 1.0) GO TO 3
+      IF(X .LE. 2.0) GO TO 4
+      Z=3.2898681336964
+    1 T=1.0/X
+      S=-0.5
+      Z=Z-0.5* LOG(ABS(X))**2
+      GO TO 5
+    2 T=X
+      S=0.5
+      Z=0.
+      GO TO 5
+    3 DILOGT=1.64493406684822
+      RETURN
+    4 T=1.0-X
+      S=-0.5
+      Z=1.64493406684822 - LOG(X)* LOG(ABS(T))
+    5 Y=2.66666666666666 *T+0.66666666666666
+      B=      0.00000 00000 00001
+      A=Y*B  +0.00000 00000 00004
+      B=Y*A-B+0.00000 00000 00011
+      A=Y*B-A+0.00000 00000 00037
+      B=Y*A-B+0.00000 00000 00121
+      A=Y*B-A+0.00000 00000 00398
+      B=Y*A-B+0.00000 00000 01312
+      A=Y*B-A+0.00000 00000 04342
+      B=Y*A-B+0.00000 00000 14437
+      A=Y*B-A+0.00000 00000 48274
+      B=Y*A-B+0.00000 00001 62421
+      A=Y*B-A+0.00000 00005 50291
+      B=Y*A-B+0.00000 00018 79117
+      A=Y*B-A+0.00000 00064 74338
+      B=Y*A-B+0.00000 00225 36705
+      A=Y*B-A+0.00000 00793 87055
+      B=Y*A-B+0.00000 02835 75385
+      A=Y*B-A+0.00000 10299 04264
+      B=Y*A-B+0.00000 38163 29463
+      A=Y*B-A+0.00001 44963 00557
+      B=Y*A-B+0.00005 68178 22718
+      A=Y*B-A+0.00023 20021 96094
+      B=Y*A-B+0.00100 16274 96164
+      A=Y*B-A+0.00468 63619 59447
+      B=Y*A-B+0.02487 93229 24228
+      A=Y*B-A+0.16607 30329 27855
+      A=Y*A-B+1.93506 43008 6996
+      DILOGT=S*T*(A-B)+Z
+      RETURN
+C=======================================================================
+C===================END OF CPC PART ====================================
+C=======================================================================
+      END
diff --git a/TEvtGen/Tauola/tauola_extras.f b/TEvtGen/Tauola/tauola_extras.f
new file mode 100644 (file)
index 0000000..0ed2efb
--- /dev/null
@@ -0,0 +1,1187 @@
+
+      SUBROUTINE CHOICE(MNUM,RR,ICHAN,PROB1,PROB2,PROB3,
+     $            AMRX,GAMRX,AMRA,GAMRA,AMRB,GAMRB)
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+      AMROP=1.1
+      GAMROP=0.36
+      AMOM=.782
+      GAMOM=0.0084
+C     XXXXA CORRESPOND TO S2 CHANNEL !
+      IF(MNUM.EQ.0) THEN
+       PROB1=0.5
+       PROB2=0.5
+       AMRX =AMA1
+       GAMRX=GAMA1
+       AMRA =AMRO
+       GAMRA=GAMRO
+       AMRB =AMRO
+       GAMRB=GAMRO
+      ELSEIF(MNUM.EQ.1) THEN
+       PROB1=0.5
+       PROB2=0.5
+       AMRX =1.57
+       GAMRX=0.9
+       AMRB =AMKST
+       GAMRB=GAMKST
+       AMRA =AMRO
+       GAMRA=GAMRO
+      ELSEIF(MNUM.EQ.2) THEN
+       PROB1=0.5
+       PROB2=0.5
+       AMRX =1.57
+       GAMRX=0.9
+       AMRB =AMKST
+       GAMRB=GAMKST
+       AMRA =AMRO
+       GAMRA=GAMRO
+      ELSEIF(MNUM.EQ.3) THEN
+       PROB1=0.5
+       PROB2=0.5
+       AMRX =1.27
+       GAMRX=0.3
+       AMRA =AMKST
+       GAMRA=GAMKST
+       AMRB =AMKST
+       GAMRB=GAMKST
+      ELSEIF(MNUM.EQ.4) THEN
+       PROB1=0.5
+       PROB2=0.5
+       AMRX =1.27
+       GAMRX=0.3
+       AMRA =AMKST
+       GAMRA=GAMKST
+       AMRB =AMKST
+       GAMRB=GAMKST
+      ELSEIF(MNUM.EQ.5) THEN
+       PROB1=0.5
+       PROB2=0.5
+       AMRX =1.27
+       GAMRX=0.3
+       AMRA =AMKST
+       GAMRA=GAMKST
+       AMRB =AMRO
+       GAMRB=GAMRO
+      ELSEIF(MNUM.EQ.6) THEN
+       PROB1=0.4
+       PROB2=0.4
+       AMRX =1.27
+       GAMRX=0.3
+       AMRA =AMRO
+       GAMRA=GAMRO
+       AMRB =AMKST
+       GAMRB=GAMKST
+      ELSEIF(MNUM.EQ.7) THEN
+       PROB1=0.0
+       PROB2=1.0
+       AMRX =1.27
+       GAMRX=0.9
+       AMRA =AMRO
+       GAMRA=GAMRO
+       AMRB =AMRO
+       GAMRB=GAMRO
+      ELSEIF(MNUM.EQ.8) THEN
+       PROB1=0.0
+       PROB2=1.0
+       AMRX =AMROP
+       GAMRX=GAMROP
+       AMRB =AMOM
+       GAMRB=GAMOM
+       AMRA =AMRO
+       GAMRA=GAMRO
+      ELSEIF(MNUM.EQ.101) THEN
+       PROB1=.35
+       PROB2=.35
+       AMRX =1.2
+       GAMRX=.46
+       AMRB =AMOM
+       GAMRB=GAMOM
+       AMRA =AMOM
+       GAMRA=GAMOM
+      ELSEIF(MNUM.EQ.102) THEN
+       PROB1=0.0
+       PROB2=0.0
+       AMRX =1.4
+       GAMRX=.6
+       AMRB =AMOM
+       GAMRB=GAMOM
+       AMRA =AMOM
+       GAMRA=GAMOM
+      ELSE
+       PROB1=0.0
+       PROB2=0.0
+       AMRX =AMA1
+       GAMRX=GAMA1
+       AMRA =AMRO
+       GAMRA=GAMRO
+       AMRB =AMRO
+       GAMRB=GAMRO
+      ENDIF
+C
+      IF    (RR.LE.PROB1) THEN
+       ICHAN=1
+      ELSEIF(RR.LE.(PROB1+PROB2)) THEN
+       ICHAN=2
+        AX   =AMRA
+        GX   =GAMRA
+        AMRA =AMRB
+        GAMRA=GAMRB
+        AMRB =AX
+        GAMRB=GX
+        PX   =PROB1
+        PROB1=PROB2
+        PROB2=PX
+      ELSE
+       ICHAN=3
+      ENDIF
+C
+      PROB3=1.0-PROB1-PROB2
+      END
+      SUBROUTINE INITDK
+* ----------------------------------------------------------------------
+*     INITIALISATION OF TAU DECAY PARAMETERS  and routines
+*
+*     called by : KORALZ
+* ----------------------------------------------------------------------
+
+      COMMON / DECPAR / GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      REAL*4            GFERMI,GV,GA,CCABIB,SCABIB,GAMEL
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+*
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      COMMON / TAUBRA / GAMPRT(30),JLIST(30),NCHAN
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS
+
+
+
+
+
+
+      PARAMETER (NMODE=15,NM1=0,NM2=1,NM3=8,NM4=2,NM5=1,NM6=3)
+      COMMON / TAUDCD /IDFFIN(9,NMODE),MULPIK(NMODE)
+     &                ,NAMES
+      CHARACTER NAMES(NMODE)*31
+
+      CHARACTER OLDNAMES(7)*31
+      CHARACTER*80 bxINIT
+      PARAMETER (
+     $  bxINIT ='(1x,1h*,g17.8,            16x, a31,a4,a4, 1x,1h*)'
+     $ )
+      REAL*4 PI
+*
+*
+* LIST OF BRANCHING RATIOS
+CAM normalised to e nu nutau channel
+CAM                  enu   munu   pinu  rhonu   A1nu   Knu    K*nu   pi
+CAM   DATA JLIST  /    1,     2,     3,     4,     5,     6,     7,
+*AM   DATA GAMPRT /1.000,0.9730,0.6054,1.2432,0.8432,0.0432,O.O811,0.616
+*AM
+*AM  multipion decays
+*
+*    conventions of particles names
+*                 K-,P-,K+,  K0,P-,KB,  K-,P0,K0
+*                  3, 1,-3  , 4, 1,-4  , 3, 2, 4  ,
+*                 P0,P0,K-,  K-,P-,P+,  P-,KB,P0
+*                  2, 2, 3  , 3, 1,-1  , 1,-4, 2  ,
+*                 ET,P-,P0   P-,P0,GM
+*                  9, 1, 2  , 1, 2, 8
+*
+C
+      DIMENSION NOPIK(6,NMODE),NPIK(NMODE)
+*AM   outgoing multiplicity and flavors of multi-pion /multi-K modes    
+      DATA   NPIK  /                4,                    4,  
+     1                              5,                    5,
+     2                              6,                    6,
+     3                              3,                    3,            
+     4                              3,                    3,            
+     5                              3,                    3,            
+     6                              3,                    3,  
+     7                              2                         /         
+      DATA  NOPIK / -1,-1, 1, 2, 0, 0,     2, 2, 2,-1, 0, 0,  
+     1              -1,-1, 1, 2, 2, 0,    -1,-1,-1, 1, 1, 0,  
+     2              -1,-1,-1, 1, 1, 2,    -1,-1, 1, 2, 2, 2, 
+     3              -3,-1, 3, 0, 0, 0,    -4,-1, 4, 0, 0, 0,  
+     4              -3, 2,-4, 0, 0, 0,     2, 2,-3, 0, 0, 0,  
+     5              -3,-1, 1, 0, 0, 0,    -1, 4, 2, 0, 0, 0,  
+     6               9,-1, 2, 0, 0, 0,    -1, 2, 8, 0, 0, 0,
+C AJWMOD fix sign bug, 2/22/99
+     7              -3,-4, 0, 0, 0, 0                         /
+* LIST OF BRANCHING RATIOS
+      NCHAN = NMODE + 7
+      DO 1 I = 1,30
+      IF (I.LE.NCHAN) THEN
+        JLIST(I) = I
+        IF(I.EQ. 1) GAMPRT(I) =0.1800 
+        IF(I.EQ. 2) GAMPRT(I) =0.1751 
+        IF(I.EQ. 3) GAMPRT(I) =0.1110 
+        IF(I.EQ. 4) GAMPRT(I) =0.2515 
+        IF(I.EQ. 5) GAMPRT(I) =0.1790 
+        IF(I.EQ. 6) GAMPRT(I) =0.0071 
+        IF(I.EQ. 7) GAMPRT(I) =0.0134
+        IF(I.EQ. 8) GAMPRT(I) =0.0450
+        IF(I.EQ. 9) GAMPRT(I) =0.0100
+        IF(I.EQ.10) GAMPRT(I) =0.0009
+        IF(I.EQ.11) GAMPRT(I) =0.0004 
+        IF(I.EQ.12) GAMPRT(I) =0.0003 
+        IF(I.EQ.13) GAMPRT(I) =0.0005 
+        IF(I.EQ.14) GAMPRT(I) =0.0015 
+        IF(I.EQ.15) GAMPRT(I) =0.0015 
+        IF(I.EQ.16) GAMPRT(I) =0.0015 
+        IF(I.EQ.17) GAMPRT(I) =0.0005
+        IF(I.EQ.18) GAMPRT(I) =0.0050
+        IF(I.EQ.19) GAMPRT(I) =0.0055
+        IF(I.EQ.20) GAMPRT(I) =0.0017 
+        IF(I.EQ.21) GAMPRT(I) =0.0013 
+        IF(I.EQ.22) GAMPRT(I) =0.0010 
+        IF(I.EQ. 1) OLDNAMES(I)='  TAU-  -->   E-               '
+        IF(I.EQ. 2) OLDNAMES(I)='  TAU-  -->  MU-               '
+        IF(I.EQ. 3) OLDNAMES(I)='  TAU-  -->  PI-               '
+        IF(I.EQ. 4) OLDNAMES(I)='  TAU-  -->  PI-, PI0          '
+        IF(I.EQ. 5) OLDNAMES(I)='  TAU-  -->  A1- (two subch)   '
+        IF(I.EQ. 6) OLDNAMES(I)='  TAU-  -->   K-               '
+        IF(I.EQ. 7) OLDNAMES(I)='  TAU-  -->  K*- (two subch)   '
+        IF(I.EQ. 8) NAMES(I-7)='  TAU-  --> 2PI-,  PI0,  PI+   '
+        IF(I.EQ. 9) NAMES(I-7)='  TAU-  --> 3PI0,        PI-   '
+        IF(I.EQ.10) NAMES(I-7)='  TAU-  --> 2PI-,  PI+, 2PI0   '
+        IF(I.EQ.11) NAMES(I-7)='  TAU-  --> 3PI-, 2PI+,        '
+        IF(I.EQ.12) NAMES(I-7)='  TAU-  --> 3PI-, 2PI+,  PI0   '
+        IF(I.EQ.13) NAMES(I-7)='  TAU-  --> 2PI-,  PI+, 3PI0   '
+        IF(I.EQ.14) NAMES(I-7)='  TAU-  -->  K-, PI-,  K+      '
+        IF(I.EQ.15) NAMES(I-7)='  TAU-  -->  K0, PI-, K0B      '
+        IF(I.EQ.16) NAMES(I-7)='  TAU-  -->  K-,  K0, PI0      '
+        IF(I.EQ.17) NAMES(I-7)='  TAU-  --> PI0  PI0   K-      '
+        IF(I.EQ.18) NAMES(I-7)='  TAU-  -->  K-  PI-  PI+      '
+        IF(I.EQ.19) NAMES(I-7)='  TAU-  --> PI-  K0B  PI0      '
+        IF(I.EQ.20) NAMES(I-7)='  TAU-  --> ETA  PI-  PI0      '
+        IF(I.EQ.21) NAMES(I-7)='  TAU-  --> PI-  PI0  GAM      '
+        IF(I.EQ.22) NAMES(I-7)='  TAU-  -->  K-  K0            '
+      ELSE
+        JLIST(I) = 0
+        GAMPRT(I) = 0.
+      ENDIF
+   1  CONTINUE
+      DO I=1,NMODE
+        MULPIK(I)=NPIK(I)
+        DO J=1,MULPIK(I)
+         IDFFIN(J,I)=NOPIK(J,I)
+        ENDDO
+      ENDDO
+*
+*
+* --- COEFFICIENTS TO FIX RATIO OF:
+* --- A1 3CHARGED/ A1 1CHARGED 2 NEUTRALS MATRIX ELEMENTS (MASLESS LIM.)
+* --- PROBABILITY OF K0 TO BE KS
+* --- PROBABILITY OF K0B TO BE KS
+* --- RATIO OF COEFFICIENTS FOR K*--> K0 PI-
+* --- ALL COEFFICENTS SHOULD BE IN THE RANGE (0.0,1.0)
+* --- THEY MEANING IS PROBABILITY OF THE FIRST CHOICE ONLY IF ONE
+* --- NEGLECTS MASS-PHASE SPACE EFFECTS
+      BRA1=0.5
+      BRK0=0.5
+      BRK0B=0.5
+      BRKS=0.6667
+*
+
+      GFERMI = 1.16637E-5
+      CCABIB = 0.975
+      GV     = 1.0
+      GA     =-1.0
+
+
+
+* ZW 13.04.89 HERE WAS AN ERROR
+      SCABIB = SQRT(1.-CCABIB**2)
+      PI =4.*ATAN(1.)
+      GAMEL  = GFERMI**2*AMTAU**5/(192*PI**3)
+*
+*      CALL DEXAY(-1,pol1)
+*
+      RETURN
+      END
+      FUNCTION DCDMAS(IDENT)
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+*
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+      IF      (IDENT.EQ. 1) THEN
+        APKMAS=AMPI
+      ELSEIF  (IDENT.EQ.-1) THEN
+        APKMAS=AMPI
+      ELSEIF  (IDENT.EQ. 2) THEN
+        APKMAS=AMPIZ
+      ELSEIF  (IDENT.EQ.-2) THEN
+        APKMAS=AMPIZ
+      ELSEIF  (IDENT.EQ. 3) THEN
+        APKMAS=AMK
+      ELSEIF  (IDENT.EQ.-3) THEN
+        APKMAS=AMK
+      ELSEIF  (IDENT.EQ. 4) THEN
+        APKMAS=AMKZ
+      ELSEIF  (IDENT.EQ.-4) THEN
+        APKMAS=AMKZ
+      ELSEIF  (IDENT.EQ. 8) THEN
+        APKMAS=0.0001
+      ELSEIF  (IDENT.EQ.-8) THEN
+        APKMAS=0.0001
+      ELSEIF  (IDENT.EQ. 9) THEN
+        APKMAS=0.5488
+      ELSEIF  (IDENT.EQ.-9) THEN
+        APKMAS=0.5488
+      ELSE
+        PRINT *, 'STOP IN APKMAS, WRONG IDENT=',IDENT
+        STOP
+      ENDIF
+      DCDMAS=APKMAS
+      END
+      FUNCTION LUNPIK(ID,ISGN)
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS
+      REAL*4 XIO(1)
+      IDENT=ID*ISGN
+      IF      (IDENT.EQ. 1) THEN
+        IPKDEF=-211
+      ELSEIF  (IDENT.EQ.-1) THEN
+        IPKDEF= 211
+      ELSEIF  (IDENT.EQ. 2) THEN
+        IPKDEF=111
+      ELSEIF  (IDENT.EQ.-2) THEN
+        IPKDEF=111
+      ELSEIF  (IDENT.EQ. 3) THEN
+        IPKDEF=-321
+      ELSEIF  (IDENT.EQ.-3) THEN
+        IPKDEF= 321
+      ELSEIF  (IDENT.EQ. 4) THEN
+*
+* K0 --> K0_LONG (IS 130) / K0_SHORT (IS 310) = 1/1
+        CALL RANMAR(XIO,1)
+        IF (XIO(1).GT.BRK0) THEN
+          IPKDEF= 130
+        ELSE
+          IPKDEF= 310
+        ENDIF
+      ELSEIF  (IDENT.EQ.-4) THEN
+*
+* K0B--> K0_LONG (IS 130) / K0_SHORT (IS 310) = 1/1
+        CALL RANMAR(XIO,1)
+        IF (XIO(1).GT.BRK0B) THEN
+          IPKDEF= 130
+        ELSE
+          IPKDEF= 310
+        ENDIF
+      ELSEIF  (IDENT.EQ. 8) THEN
+        IPKDEF= 22
+      ELSEIF  (IDENT.EQ.-8) THEN
+        IPKDEF= 22
+      ELSEIF  (IDENT.EQ. 9) THEN
+        IPKDEF= 221
+      ELSEIF  (IDENT.EQ.-9) THEN
+        IPKDEF= 221
+      ELSE
+        PRINT *, 'STOP IN IPKDEF, WRONG IDENT=',IDENT
+        STOP
+      ENDIF
+      LUNPIK=IPKDEF
+      END
+
+
+
+      SUBROUTINE TAURDF(KTO)
+C THIS ROUTINE CAN BE CALLED BEFORE ANY TAU+ OR TAU- EVENT IS GENERATED
+C IT CAN BE USED TO GENERATE TAU+ AND TAU- SAMPLES OF DIFFERENT
+C CONTENTS
+      COMMON / TAUKLE / BRA1,BRK0,BRK0B,BRKS
+      REAL*4            BRA1,BRK0,BRK0B,BRKS
+      COMMON / TAUBRA / GAMPRT(30),JLIST(30),NCHAN
+
+C Subroutine TAURDF is disabled
+      RETURN
+
+
+      IF (KTO.EQ.1) THEN
+C     ==================
+C AJWMOD: Set the BRs for (A1+ -> rho+ pi0) and (K*+ -> K0 pi+)
+      BRA1 = PKORB(4,1)
+      BRKS = PKORB(4,3)
+      BRK0  = PKORB(4,5)
+      BRK0B  = PKORB(4,6)
+      ELSE
+C     ====
+C AJWMOD: Set the BRs for (A1+ -> rho+ pi0) and (K*+ -> K0 pi+)
+      BRA1 = PKORB(4,2)
+      BRKS = PKORB(4,4)
+      BRK0  = PKORB(4,5)
+      BRK0B  = PKORB(4,6)
+      ENDIF
+C     =====
+      END
+
+      SUBROUTINE INIPHY(XK00)
+* ----------------------------------------------------------------------
+*     INITIALISATION OF PARAMETERS
+*     USED IN QED and/or GSW ROUTINES
+* ----------------------------------------------------------------------
+      COMMON / QEDPRM /ALFINV,ALFPI,XK0
+      REAL*8           ALFINV,ALFPI,XK0
+      REAL*8 PI8,XK00
+*
+      PI8    = 4.D0*DATAN(1.D0)
+      ALFINV = 137.03604D0
+      ALFPI  = 1D0/(ALFINV*PI8)
+      XK0=XK00
+      END
+
+      SUBROUTINE INIMAS
+C ----------------------------------------------------------------------
+C     INITIALISATION OF MASSES
+C
+C     called by : KORALZ
+C ----------------------------------------------------------------------
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+*
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+C
+C IN-COMING / OUT-GOING  FERMION MASSES
+      AMTAU  = 1.7842
+C --- let us update tau mass ...
+      AMTAU  = 1.777
+      AMNUTA = 0.010
+      AMEL   = 0.0005111
+      AMNUE  = 0.0
+      AMMU   = 0.105659 
+      AMNUMU = 0.0
+*
+* MASSES USED IN TAU DECAYS
+      AMPIZ  = 0.134964
+      AMPI   = 0.139568
+      AMRO   = 0.773
+      GAMRO  = 0.145
+*C    GAMRO  = 0.666
+      AMA1   = 1.251
+      GAMA1  = 0.599
+      AMK    = 0.493667
+      AMKZ   = 0.49772
+      AMKST  = 0.8921
+      GAMKST = 0.0513
+C
+C
+C IN-COMING / OUT-GOING  FERMION MASSES
+!!      AMNUTA = PKORB(1,2)
+!!      AMNUE  = PKORB(1,4)
+!!      AMNUMU = PKORB(1,6)
+C
+C MASSES USED IN TAU DECAYS  Cleo settings
+!!      AMPIZ  = PKORB(1,7)
+!!      AMPI   = PKORB(1,8)
+!!      AMRO   = PKORB(1,9)
+!!      GAMRO  = PKORB(2,9)
+      AMA1   = 1.275   !! PKORB(1,10)
+      GAMA1  = 0.615   !! PKORB(2,10)
+!!      AMK    = PKORB(1,11)
+!!      AMKZ   = PKORB(1,12)
+!!      AMKST  = PKORB(1,13)
+!!      GAMKST = PKORB(2,13)
+C
+
+      RETURN
+      END
+      SUBROUTINE ANGULU(PD1,PD2,Q1,Q2,COSTHE)
+      REAL*8 PD1(4),PD2(4),Q1(4),Q2(4),COSTHE,P(4),QQ(4),QT(4)
+C take effective beam which is less massive, it should be irrelevant
+C but in case HEPEVT is particulary dirty may help.
+C this routine calculate reduced system transver and cosine of scattering 
+C angle.
+
+      XM1=ABS(PD1(4)**2-PD1(3)**2-PD1(2)**2-PD1(1)**2)
+      XM2=ABS(PD2(4)**2-PD2(3)**2-PD2(2)**2-PD2(1)**2)
+      IF (XM1.LT.XM2) THEN
+        SIGN=1D0
+        DO K=1,4
+          P(K)=PD1(K)
+        ENDDO
+      ELSE
+        SIGN=-1D0
+        DO K=1,4
+          P(K)=PD2(K)
+        ENDDO
+      ENDIF
+C calculate space like part of P (in Z restframe)
+      DO K=1,4
+       QQ(K)=Q1(k)+Q2(K)
+       QT(K)=Q1(K)-Q2(K)
+      ENDDO
+
+       XMQQ=SQRT(QQ(4)**2-QQ(3)**2-QQ(2)**2-QQ(1)**2)
+
+       QTXQQ=QT(4)*QQ(4)-QT(3)*QQ(3)-QT(2)*QQ(2)-QT(1)*QQ(1)
+      DO K=1,4
+       QT(K)=QT(K)-QQ(K)*QTXQQ/XMQQ**2
+      ENDDO
+
+       PXQQ=P(4)*QQ(4)-P(3)*QQ(3)-P(2)*QQ(2)-P(1)*QQ(1)
+      DO K=1,4
+       P(K)=P(K)-QQ(K)*PXQQ/XMQQ**2
+      ENDDO
+C calculate costhe
+       PXP  =SQRT(p(1)**2+p(2)**2+p(3)**2-p(4)**2)
+       QTXQT=SQRT(QT(3)**2+QT(2)**2+QT(1)**2-QT(4)**2)
+       PXQT =P(3)*QT(3)+P(2)*QT(2)+P(1)*QT(1)-P(4)*QT(4)
+       COSTHE=PXQT/PXP/QTXQT
+       COSTHE=COSTHE*SIGN
+      END
+
+      FUNCTION PLZAP0(IDE,IDF,SVAR,COSTH0)
+C this function calculates probability for the helicity +1 +1 configuration
+C of taus for given Z/gamma transfer and COSTH0 cosine of scattering angle
+      REAL*8 PLZAP0,SVAR,COSTHE,COSTH0,T_BORN
+
+      COSTHE=COSTH0
+C >>>>>      IF (IDE*IDF.LT.0) COSTHE=-COSTH0 ! this is probably not needed ID
+C >>>>>      of first beam is used by T_GIVIZ0 including sign
+
+      IF (IDF.GT.0) THEN
+        CALL INITWK(IDE,IDF,SVAR)
+      ELSE
+        CALL INITWK(-IDE,-IDF,SVAR)
+      ENDIF
+      PLZAP0=T_BORN(0,SVAR,COSTHE,1D0,1D0)
+     $  /(T_BORN(0,SVAR,COSTHE,1D0,1D0)+T_BORN(0,SVAR,COSTHE,-1D0,-1D0))
+
+
+C      write(*,*) 'svar=  ',  svar
+C      write(*,*) 'COSTHE=',  COSTHE
+C      write(*,*) ide,'  ',idf
+C      write(*,*) 'PLZAP0=', PLZAP0
+C      COSTHE=0.999
+C      write(*,*) 'TBORN+=', T_BORN(0,SVAR,COSTHE,1D0,1D0)
+
+C      COSTHE=-0.999
+C      write(*,*) 'TBORN-=', T_BORN(0,SVAR,COSTHE,-1D0,-1D0)
+C 100  format (A,E8.4)
+
+!      PLZAP0=0.5
+      END
+      FUNCTION T_BORN(MODE,SVAR,COSTHE,TA,TB)
+C ----------------------------------------------------------------------
+C THIS ROUTINE PROVIDES BORN CROSS SECTION. IT HAS THE SAME         
+C STRUCTURE AS FUNTIS AND FUNTIH, THUS CAN BE USED AS SIMPLER       
+C EXAMPLE OF THE METHOD APPLIED THERE                               
+C INPUT PARAMETERS ARE: SVAR    -- transfer
+C                       COSTHE  -- cosine of angle between tau+ and 1st beam
+C                       TA,TB   -- helicity states of tau+ tau-
+C
+C     called by : BORNY, BORAS, BORNV, WAGA, WEIGHT
+C ----------------------------------------------------------------------
+      IMPLICIT REAL*8(A-H,O-Z)
+      COMMON / T_BEAMPM / ENE ,AMIN,AMFIN,IDE,IDF
+      REAL*8              ENE ,AMIN,AMFIN
+      COMMON / T_GAUSPM /SS,POLN,T3E,QE,T3F,QF
+     &                  ,XUPGI   ,XUPZI   ,XUPGF   ,XUPZF
+     &                  ,NDIAG0,NDIAGA,KEYA,KEYZ
+     &                  ,ITCE,JTCE,ITCF,JTCF,KOLOR
+      REAL*8             SS,POLN,T3E,QE,T3F,QF
+     &                  ,XUPGI(2),XUPZI(2),XUPGF(2),XUPZF(2)
+      REAL*8            SEPS1,SEPS2
+C=====================================================================
+      COMMON / T_GSWPRM /SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
+      REAL*8             SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
+C     SWSQ        = sin2 (theta Weinberg)
+C     AMW,AMZ     = W & Z boson masses respectively
+C     AMH         = the Higgs mass
+C     AMTOP       = the top mass
+C     GAMMZ       = Z0 width
+      COMPLEX*16 ABORN(2,2),APHOT(2,2),AZETT(2,2)
+      COMPLEX*16 XUPZFP(2),XUPZIP(2)
+      COMPLEX*16 ABORNM(2,2),APHOTM(2,2),AZETTM(2,2)
+      COMPLEX*16 PROPA,PROPZ
+      COMPLEX*16 XR,XI
+      COMPLEX*16 XUPF,XUPI
+      COMPLEX*16 XTHING
+      DATA XI/(0.D0,1.D0)/,XR/(1.D0,0.D0)/
+      DATA MODE0 /-5/
+      DATA IDE0 /-55/
+      DATA SVAR0,COST0 /-5.D0,-6.D0/
+      DATA PI /3.141592653589793238462643D0/
+      DATA SEPS1,SEPS2 /0D0,0D0/
+C
+C MEMORIZATION =========================================================
+      IF ( MODE.NE.MODE0.OR.SVAR.NE.SVAR0.OR.COSTHE.NE.COST0
+     $    .OR.IDE0.NE.IDE)THEN
+C
+        KEYGSW=1
+C ** PROPAGATORS
+        IDE0=IDE
+        MODE0=MODE
+        SVAR0=SVAR
+        COST0=COSTHE
+        SINTHE=SQRT(1.D0-COSTHE**2)
+        BETA=SQRT(MAX(0D0,1D0-4D0*AMFIN**2/SVAR))
+C I MULTIPLY AXIAL COUPLING BY BETA FACTOR.
+        XUPZFP(1)=0.5D0*(XUPZF(1)+XUPZF(2))+0.5*BETA*(XUPZF(1)-XUPZF(2))
+        XUPZFP(2)=0.5D0*(XUPZF(1)+XUPZF(2))-0.5*BETA*(XUPZF(1)-XUPZF(2))
+        XUPZIP(1)=0.5D0*(XUPZI(1)+XUPZI(2))+0.5*(XUPZI(1)-XUPZI(2))
+        XUPZIP(2)=0.5D0*(XUPZI(1)+XUPZI(2))-0.5*(XUPZI(1)-XUPZI(2))
+C FINAL STATE VECTOR COUPLING
+        XUPF     =0.5D0*(XUPZF(1)+XUPZF(2))
+        XUPI     =0.5D0*(XUPZI(1)+XUPZI(2))
+        XTHING   =0D0
+
+        PROPA =1D0/SVAR
+        PROPZ =1D0/DCMPLX(SVAR-AMZ**2,SVAR/AMZ*GAMMZ)
+        IF (KEYGSW.EQ.0) PROPZ=0.D0
+        DO 50 I=1,2
+         DO 50 J=1,2
+          REGULA= (3-2*I)*(3-2*J) + COSTHE
+          REGULM=-(3-2*I)*(3-2*J) * SINTHE *2.D0*AMFIN/SQRT(SVAR)
+          APHOT(I,J)=PROPA*(XUPGI(I)*XUPGF(J)*REGULA)
+          AZETT(I,J)=PROPZ*(XUPZIP(I)*XUPZFP(J)+XTHING)*REGULA
+          ABORN(I,J)=APHOT(I,J)+AZETT(I,J)
+          APHOTM(I,J)=PROPA*DCMPLX(0D0,1D0)*XUPGI(I)*XUPGF(J)*REGULM
+          AZETTM(I,J)=PROPZ*DCMPLX(0D0,1D0)*(XUPZIP(I)*XUPF+XTHING)*REGULM
+          ABORNM(I,J)=APHOTM(I,J)+AZETTM(I,J)
+   50   CONTINUE
+      ENDIF
+C
+C******************
+C* IN CALCULATING CROSS SECTION ONLY DIAGONAL ELEMENTS
+C* OF THE SPIN DENSITY MATRICES ENTER (LONGITUD. POL. ONLY.)
+C* HELICITY CONSERVATION EXPLICITLY OBEYED
+      POLAR1=  (SEPS1)
+      POLAR2= (-SEPS2)
+      BORN=0D0
+      DO 150 I=1,2
+       HELIC= 3-2*I
+       DO 150 J=1,2
+        HELIT=3-2*J
+        FACTOR=KOLOR*(1D0+HELIC*POLAR1)*(1D0-HELIC*POLAR2)/4D0
+        FACTOM=FACTOR*(1+HELIT*TA)*(1-HELIT*TB)
+        FACTOR=FACTOR*(1+HELIT*TA)*(1+HELIT*TB)
+
+        BORN=BORN+CDABS(ABORN(I,J))**2*FACTOR
+C      MASS TERM IN BORN
+        IF (MODE.GE.1) THEN
+         BORN=BORN+CDABS(ABORNM(I,J))**2*FACTOM
+        ENDIF
+
+  150 CONTINUE
+C************
+      FUNT=BORN
+      IF(FUNT.LT.0.D0)  FUNT=BORN
+
+C
+      IF (SVAR.GT.4D0*AMFIN**2) THEN
+C PHASE SPACE THRESHOLD FACTOR
+        THRESH=SQRT(1-4D0*AMFIN**2/SVAR)
+        T_BORN= FUNT*SVAR**2*THRESH
+      ELSE
+        THRESH=0.D0
+        T_BORN=0.D0
+      ENDIF
+C ZW HERE WAS AN ERROR 19. 05. 1989
+!      write(*,*) 'KKKK ',PROPA,PROPZ,XUPGI,XUPGF,XUPZI,XUPZF
+!      write(*,*) 'KKKK X',svar,costhe,TA,TB,T_BORN
+      END
+
+      SUBROUTINE INITWK(IDEX,IDFX,SVAR)
+! initialization routine coupling masses etc.
+      IMPLICIT REAL*8 (A-H,O-Z)
+      COMMON / T_BEAMPM / ENE ,AMIN,AMFIN,IDE,IDF
+      REAL*8              ENE ,AMIN,AMFIN
+      COMMON / T_GAUSPM /SS,POLN,T3E,QE,T3F,QF
+     &                  ,XUPGI   ,XUPZI   ,XUPGF   ,XUPZF
+     &                  ,NDIAG0,NDIAGA,KEYA,KEYZ
+     &                  ,ITCE,JTCE,ITCF,JTCF,KOLOR
+      REAL*8             SS,POLN,T3E,QE,T3F,QF
+     &                  ,XUPGI(2),XUPZI(2),XUPGF(2),XUPZF(2)
+      COMMON / T_GSWPRM /SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
+      REAL*8             SWSQ,AMW,AMZ,AMH,AMTOP,GAMMZ
+C     SWSQ        = sin2 (theta Weinberg)
+C     AMW,AMZ     = W & Z boson masses respectively
+C     AMH         = the Higgs mass
+C     AMTOP       = the top mass
+C     GAMMZ       = Z0 width
+C
+      ENE=SQRT(SVAR)/2
+      AMIN=0.511D-3
+      SWSQ=0.23147
+      AMZ=91.1882
+      GAMMZ=2.4952
+      IF     (IDFX.EQ. 15) then       
+        IDF=2  ! denotes tau +2 tau-
+        AMFIN=1.77703 !this mass is irrelevant if small, used in ME only
+      ELSEIF (IDFX.EQ.-15) then
+        IDF=-2  ! denotes tau -2 tau-
+        AMFIN=1.77703 !this mass is irrelevant if small, used in ME only
+      ELSE
+        WRITE(*,*) 'INITWK: WRONG IDFX'
+        STOP
+      ENDIF
+
+      IF     (IDEX.EQ. 11) then      !electron
+        IDE= 2
+        AMIN=0.511D-3
+      ELSEIF (IDEX.EQ.-11) then      !positron
+        IDE=-2
+        AMIN=0.511D-3
+      ELSEIF (IDEX.EQ. 13) then      !mu+
+        IDE= 2
+        AMIN=0.105659
+      ELSEIF (IDEX.EQ.-13) then      !mu-
+        IDE=-2
+        AMIN=0.105659
+      ELSEIF (IDEX.EQ.  1) then      !d
+        IDE= 4
+        AMIN=0.05
+      ELSEIF (IDEX.EQ.- 1) then      !d~
+        IDE=-4
+        AMIN=0.05
+      ELSEIF (IDEX.EQ.  2) then      !u
+        IDE= 3
+        AMIN=0.02
+      ELSEIF (IDEX.EQ.- 2) then      !u~
+        IDE=-3
+        AMIN=0.02
+      ELSEIF (IDEX.EQ.  3) then      !s
+        IDE= 4
+        AMIN=0.3
+      ELSEIF (IDEX.EQ.- 3) then      !s~
+        IDE=-4
+        AMIN=0.3
+      ELSEIF (IDEX.EQ.  4) then      !c
+        IDE= 3
+        AMIN=1.3
+      ELSEIF (IDEX.EQ.- 4) then      !c~
+        IDE=-3
+        AMIN=1.3
+      ELSEIF (IDEX.EQ.  5) then      !b
+        IDE= 4
+        AMIN=4.5
+      ELSEIF (IDEX.EQ.- 5) then      !b~
+        IDE=-4
+        AMIN=4.5
+      ELSEIF (IDEX.EQ.  12) then     !nu_e
+        IDE= 1
+        AMIN=0.1D-3
+      ELSEIF (IDEX.EQ.- 12) then     !nu_e~
+        IDE=-1
+        AMIN=0.1D-3
+      ELSEIF (IDEX.EQ.  14) then     !nu_mu
+        IDE= 1
+        AMIN=0.1D-3
+      ELSEIF (IDEX.EQ.- 14) then     !nu_mu~
+        IDE=-1
+        AMIN=0.1D-3
+      ELSEIF (IDEX.EQ.  16) then     !nu_tau
+        IDE= 1
+        AMIN=0.1D-3
+      ELSEIF (IDEX.EQ.- 16) then     !nu_tau~
+        IDE=-1
+        AMIN=0.1D-3
+
+      ELSE
+        WRITE(*,*) 'INITWK: WRONG IDEX'
+        STOP
+      ENDIF
+
+C ----------------------------------------------------------------------
+C
+C     INITIALISATION OF COUPLING CONSTANTS AND FERMION-GAMMA / Z0 VERTEX
+C
+C     called by : KORALZ
+C ----------------------------------------------------------------------
+      ITCE=IDE/IABS(IDE)
+      JTCE=(1-ITCE)/2
+      ITCF=IDF/IABS(IDF)
+      JTCF=(1-ITCF)/2
+      CALL T_GIVIZO( IDE, 1,AIZOR,QE,KDUMM)
+      CALL T_GIVIZO( IDE,-1,AIZOL,QE,KDUMM)
+      XUPGI(1)=QE
+      XUPGI(2)=QE
+      T3E    = AIZOL+AIZOR
+      XUPZI(1)=(AIZOR-QE*SWSQ)/SQRT(SWSQ*(1-SWSQ))
+      XUPZI(2)=(AIZOL-QE*SWSQ)/SQRT(SWSQ*(1-SWSQ))
+      CALL T_GIVIZO( IDF, 1,AIZOR,QF,KOLOR)
+      CALL T_GIVIZO( IDF,-1,AIZOL,QF,KOLOR)
+      XUPGF(1)=QF
+      XUPGF(2)=QF
+      T3F    =  AIZOL+AIZOR
+      XUPZF(1)=(AIZOR-QF*SWSQ)/SQRT(SWSQ*(1-SWSQ))
+      XUPZF(2)=(AIZOL-QF*SWSQ)/SQRT(SWSQ*(1-SWSQ))
+C
+      NDIAG0=2
+      NDIAGA=11
+      KEYA  = 1
+      KEYZ  = 1
+C
+C
+      RETURN
+      END
+
+      SUBROUTINE T_GIVIZO(IDFERM,IHELIC,SIZO3,CHARGE,KOLOR)
+C ----------------------------------------------------------------------
+C PROVIDES ELECTRIC CHARGE AND WEAK IZOSPIN OF A FAMILY FERMION
+C IDFERM=1,2,3,4 DENOTES NEUTRINO, LEPTON, UP AND DOWN QUARK
+C NEGATIVE IDFERM=-1,-2,-3,-4, DENOTES ANTIPARTICLE
+C IHELIC=+1,-1 DENOTES RIGHT AND LEFT HANDEDNES ( CHIRALITY)
+C SIZO3 IS THIRD PROJECTION OF WEAK IZOSPIN (PLUS MINUS HALF)
+C AND CHARGE IS ELECTRIC CHARGE IN UNITS OF ELECTRON CHARGE
+C KOLOR IS A QCD COLOUR, 1 FOR LEPTON, 3 FOR QUARKS
+C
+C     called by : EVENTE, EVENTM, FUNTIH, .....
+C ----------------------------------------------------------------------
+      IMPLICIT REAL*8(A-H,O-Z)
+C
+      IF(IDFERM.EQ.0.OR.IABS(IDFERM).GT.4) GOTO 901
+      IF(IABS(IHELIC).NE.1)                GOTO 901
+      IH  =IHELIC
+      IDTYPE =IABS(IDFERM)
+      IC  =IDFERM/IDTYPE
+      LEPQUA=INT(IDTYPE*0.4999999D0)
+      IUPDOW=IDTYPE-2*LEPQUA-1
+      CHARGE  =(-IUPDOW+2D0/3D0*LEPQUA)*IC
+      SIZO3   =0.25D0*(IC-IH)*(1-2*IUPDOW)
+      KOLOR=1+2*LEPQUA
+C** NOTE THAT CONVENTIONALY Z0 COUPLING IS
+C** XOUPZ=(SIZO3-CHARGE*SWSQ)/SQRT(SWSQ*(1-SWSQ))
+      RETURN
+ 901  PRINT *,' STOP IN GIVIZO: WRONG PARAMS.'
+      STOP
+      END
+      SUBROUTINE PHYFIX(NSTOP,NSTART)
+      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
+      SAVE /LUJETS/ 
+C NSTOP NSTART : when PHYTIA history ends and event starts.
+      NSTOP=0
+      NSTART=1
+      DO I=1, N
+       IF(K(I,1).NE.21) THEN
+           NSTOP = I-1
+           NSTART= I
+           GOTO 500
+       ENDIF
+      ENDDO
+ 500  CONTINUE
+      END
+
+      SUBROUTINE TAUPI0(PI0,K)
+C no initialization required. Must be called once after every:
+C   1)    CALL DEKAY(1+10,...)
+C   2)    CALL DEKAY(2+10,...)
+C   3)    CALL DEXAY(1,...)
+C   4)    CALL DEXAY(2,...)
+C subroutine to decay originating from TAUOLA's taus: 
+C 1) etas (with CALL TAUETA(JAK))
+C 2) later pi0's from taus.
+C 3) extensions to other applications possible. 
+C this routine belongs to >tauola universal interface<, but uses 
+C routines from >tauola< utilities as well.  25.08.2005      
+C this is the hepevt class in old style. No d_h_ class pre-name
+C position of taus, must be defined by host program:
+      COMMON /TAUPOS/ NP1,NP2
+c
+      REAL  PHOT1(4),PHOT2(4)
+      REAL*8  R,X(4),Y(4),PI0(4)
+      INTEGER JEZELI(3),K
+      DATA JEZELI /0,0,0/
+      SAVE JEZELI
+
+! random 3 vector on the sphere, masless
+        R=SQRT(PI0(4)**2-PI0(3)**2-PI0(2)**2-PI0(1)**2)/2D0
+        CALL SPHERD(R,X)
+        X(4)=R
+        Y(4)=R
+        
+        Y(1)=-X(1)
+        Y(2)=-X(2)
+        Y(3)=-X(3)
+! boost to lab and to real*4
+        CALL bostdq(-1,PI0,X,X)
+        CALL bostdq(-1,PI0,Y,Y)
+        DO L=1,4
+         PHOT1(L)=X(L)
+         PHOT2(L)=Y(L)
+        ENDDO
+C to hepevt
+        CALL FILHEP(0,1,22,K,K,0,0,PHOT1,0.0,.TRUE.)
+        CALL FILHEP(0,1,22,K,K,0,0,PHOT2,0.0,.TRUE.)
+
+C
+      END
+      SUBROUTINE TAUETA(PETA,K)
+C subroutine to decay etas's from taus. 
+C this routine belongs to tauola universal interface, but uses 
+C routines from tauola utilities. Just flat phase space, but 4 channels.
+C it is called at the beginning of SUBR. TAUPI0(JAK)
+C and as far as hepevt search it is basically the same as TAUPI0.  25.08.2005    
+C this is the hepevt class in old style. No d_h_ class pre-name
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+*
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+
+C position of taus, must be defined by host program:
+c
+      REAL  RRR(1),BRSUM(3), RR(2)
+      REAL  PHOT1(4),PHOT2(4),PHOT3(4)
+      REAL*8    X(4),    Y(4),    Z(4)
+      REAL                                YM1,YM2,YM3
+      REAL*8  R,RU,PETA(4),XM1,XM2,XM3,XLAM
+      REAL*8 a,b,c
+      INTEGER K
+      XLAM(a,b,c)=SQRT(ABS((a-b-c)**2-4.0*b*c))
+C position of decaying particle:
+C        DO L=1,4
+C          PETA(L)= phep(L,K)  ! eta 4 momentum
+C        ENDDO
+C       eta cumulated branching ratios:
+        BRSUM(1)=0.389  ! gamma gamma
+        BRSUM(2)=BRSUM(1)+0.319  ! 3 pi0
+        BRSUM(3)=BRSUM(2)+0.237  ! pi+ pi- pi0 rest is thus pi+pi-gamma
+        CALL RANMAR(RRR,1) 
+        
+        IF (RRR(1).LT.BRSUM(1)) THEN ! gamma gamma channel exactly like pi0
+! random 3 vector on the sphere, masless   
+         R=SQRT(PETA(4)**2-PETA(3)**2-PETA(2)**2-PETA(1)**2)/2D0
+         CALL SPHERD(R,X) 
+         X(4)=R
+         Y(4)=R
+        
+         Y(1)=-X(1)
+         Y(2)=-X(2)
+         Y(3)=-X(3)
+! boost to lab and to real*4
+         CALL bostdq(-1,PETA,X,X)  
+         CALL bostdq(-1,PETA,Y,Y)
+         DO L=1,4
+          PHOT1(L)=X(L)
+          PHOT2(L)=Y(L)
+         ENDDO
+C to hepevt
+         CALL FILHEP(0,1,22,K,K,0,0,PHOT1,0.0,.TRUE.)
+         CALL FILHEP(0,1,22,K,K,0,0,PHOT2,0.0,.TRUE.)
+        ELSE ! 3 body channels
+         IF(RRR(1).LT.BRSUM(2)) THEN  ! 3 pi0
+          ID1= 111
+          ID2= 111
+          ID3= 111
+          XM1=AMPIZ ! masses
+          XM2=AMPIZ
+          XM3=AMPIZ
+         ELSEIF(RRR(1).LT.BRSUM(3)) THEN ! pi+ pi- pi0
+          ID1= 211
+          ID2=-211
+          ID3= 111
+          XM1=AMPI ! masses
+          XM2=AMPI
+          XM3=AMPIZ
+         ELSE                            ! pi+ pi- gamma 
+          ID1= 211
+          ID2=-211
+          ID3=  22
+          XM1=AMPI ! masses
+          XM2=AMPI
+          XM3=0.0
+         ENDIF
+ 7       CONTINUE  ! we generate mass of the first pair:
+          CALL RANMAR(RR,2)
+          R=SQRT(PETA(4)**2-PETA(3)**2-PETA(2)**2-PETA(1)**2)
+          AMIN=XM1+XM2
+          AMAX=R-XM3
+          AM2=SQRT(AMIN**2+RR(1)*(AMAX**2-AMIN**2))
+C         weight for flat phase space
+          WT=XLAM(1D0*R**2,1D0*AM2**2,1D0*XM3**2)
+     &      *XLAM(1D0*AM2**2,1D0*XM1**2,1D0*XM2**2)
+     &           /R**2                    /AM2**2
+         IF (RR(2).GT.WT) GOTO 7
+
+         RU=XLAM(1D0*AM2**2,1D0*XM1**2,1D0*XM2**2)/AM2/2  ! momenta of the
+                                              ! first two products
+                                              ! in the rest frame of that pair
+         CALL SPHERD(RU,X)
+         X(4)=SQRT(RU**2+XM1**2)
+         Y(4)=SQRT(RU**2+XM2**2)
+        
+         Y(1)=-X(1)
+         Y(2)=-X(2)
+         Y(3)=-X(3)
+C generate momentum of that pair in rest frame of eta:
+         RU=XLAM(1D0*R**2,1D0*AM2**2,1D0*XM3**2)/R/2
+         CALL SPHERD(RU,Z)
+         Z(4)=SQRT(RU**2+AM2**2)
+C and boost first two decay products to rest frame of eta.
+         CALL bostdq(-1,Z,X,X)
+         CALL bostdq(-1,Z,Y,Y)
+C redefine Z(4) to 4-momentum of the last decay product: 
+         Z(1)=-Z(1)
+         Z(2)=-Z(2)
+         Z(3)=-Z(3)
+         Z(4)=SQRT(RU**2+XM3**2)
+C boost all to lab and move to real*4; also masses
+         CALL bostdq(-1,PETA,X,X)
+         CALL bostdq(-1,PETA,Y,Y)
+         CALL bostdq(-1,PETA,Z,Z)
+         DO L=1,4
+          PHOT1(L)=X(L)
+          PHOT2(L)=Y(L)
+          PHOT3(L)=Z(L)
+         ENDDO
+         YM1=XM1
+         YM2=XM2
+         YM3=XM3
+C to hepevt
+         CALL FILHEP(0,1,ID1,K,K,0,0,PHOT1,YM1,.TRUE.)
+         CALL FILHEP(0,1,ID2,K,K,0,0,PHOT2,YM2,.TRUE.)
+         CALL FILHEP(0,1,ID3,K,K,0,0,PHOT3,YM3,.TRUE.)
+        ENDIF
+
+
+C
+      END
+      SUBROUTINE TAUK0S(PETA,K)
+C subroutine to decay K0S's from taus. 
+C this routine belongs to tauola universal interface, but uses 
+C routines from tauola utilities. Just flat phase space, but 4 channels.
+C it is called at the beginning of SUBR. TAUPI0(JAK)
+C and as far as hepevt search it is basically the same as TAUPI0.  25.08.2005   
+
+      COMMON / PARMAS / AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+*
+      REAL*4            AMTAU,AMNUTA,AMEL,AMNUE,AMMU,AMNUMU 
+     *                 ,AMPIZ,AMPI,AMRO,GAMRO,AMA1,GAMA1
+     *                 ,AMK,AMKZ,AMKST,GAMKST
+
+C position of taus, must be defined by host program:
+      COMMON /TAUPOS/ NP1,NP2
+c
+      REAL  RRR(1),BRSUM(3)
+      REAL  PHOT1(4),PHOT2(4)
+      REAL*8    X(4),    Y(4)
+      REAL                                YM1,YM2
+      REAL*8  R,PETA(4),XM1,XM2,XLAM
+      REAL*8 a,b,c
+      INTEGER K
+      XLAM(a,b,c)=SQRT(ABS((a-b-c)**2-4.0*b*c))
+C position of decaying particle:
+
+      
+!        DO L=1,4
+!          PETA(L)= phep(L,K)  ! K0S 4 momentum  (this is cloned from eta decay)
+!        ENDDO
+C       K0S cumulated branching ratios:
+        BRSUM(1)=0.313  ! 2 PI0
+        BRSUM(2)=1.0 ! BRSUM(1)+0.319  ! Pi+ PI-
+        BRSUM(3)=BRSUM(2)+0.237  ! pi+ pi- pi0 rest is thus pi+pi-gamma
+        CALL RANMAR(RRR,1) 
+
+         IF(RRR(1).LT.BRSUM(1)) THEN  ! 2 pi0
+          ID1= 111
+          ID2= 111
+          XM1=AMPIZ ! masses
+          XM2=AMPIZ
+         ELSEIF(RRR(1).LT.BRSUM(2)) THEN ! pi+ pi- 
+          ID1= 211
+          ID2=-211
+          XM1=AMPI ! masses
+          XM2=AMPI
+         ELSE                            ! gamma gamma unused !!!
+          ID1= 22
+          ID2= 22
+          XM1= 0.0 ! masses
+          XM2= 0.0
+         ENDIF
+        
+! random 3 vector on the sphere, of equal mass !!  
+         R=SQRT(PETA(4)**2-PETA(3)**2-PETA(2)**2-PETA(1)**2)/2D0
+         R4=R
+         R=SQRT(ABS(R**2-XM1**2))
+         CALL SPHERD(R,X) 
+         X(4)=R4
+         Y(4)=R4
+        
+         Y(1)=-X(1)
+         Y(2)=-X(2)
+         Y(3)=-X(3)
+! boost to lab and to real*4
+         CALL bostdq(-1,PETA,X,X)  
+         CALL bostdq(-1,PETA,Y,Y)
+         DO L=1,4
+          PHOT1(L)=X(L)
+          PHOT2(L)=Y(L)
+         ENDDO
+
+         YM1=XM1
+         YM2=XM2
+C to hepevt
+         CALL FILHEP(0,1,ID1,K,K,0,0,PHOT1,YM1,.TRUE.)
+         CALL FILHEP(0,1,ID2,K,K,0,0,PHOT2,YM2,.TRUE.)
+
+C
+      END
+
+      subroutine bostdq(idir,vv,pp,q)
+*     *******************************
+c Boost along arbitrary vector v (see eg. J.D. Jacson, Classical 
+c Electrodynamics).
+c Four-vector pp is boosted from an actual frame to the rest frame 
+c of the four-vector v (for idir=1) or back (for idir=-1). 
+c q is a resulting four-vector.
+c Note: v must be time-like, pp may be arbitrary.
+c
+c Written by: Wieslaw Placzek            date: 22.07.1994
+c Last update: 3/29/95                     by: M.S.
+c 
+      implicit DOUBLE PRECISION (a-h,o-z)
+      parameter (nout=6)
+      DOUBLE PRECISION v(4),p(4),q(4),pp(4),vv(4)  
+      save
+!
+      do 1 i=1,4
+      v(i)=vv(i)
+ 1    p(i)=pp(i)
+      amv=(v(4)**2-v(1)**2-v(2)**2-v(3)**2)
+      if (amv.le.0d0) then
+        write(6,*) 'bosstv: warning amv**2=',amv
+      endif
+      amv=sqrt(abs(amv))
+      if (idir.eq.-1) then
+        q(4)=( p(1)*v(1)+p(2)*v(2)+p(3)*v(3)+p(4)*v(4))/amv
+        wsp =(q(4)+p(4))/(v(4)+amv)
+      elseif (idir.eq.1) then
+        q(4)=(-p(1)*v(1)-p(2)*v(2)-p(3)*v(3)+p(4)*v(4))/amv
+        wsp =-(q(4)+p(4))/(v(4)+amv)
+      else
+        write(nout,*)' >>> boostv: wrong value of idir = ',idir
+      endif
+      q(1)=p(1)+wsp*v(1)
+      q(2)=p(2)+wsp*v(2)
+      q(3)=p(3)+wsp*v(3)
+      end
+        
+
+
+
index 4a57cb7d4b9b48d5ec2c40c9deafc3f59f5d2d38..61853ff7bb51d20e11558b0d19e3bd6523aa84a5 100644 (file)
@@ -64,6 +64,8 @@ AliTPCRecoParam::AliTPCRecoParam():
   fMaxSnpTracker(0.95),
   fMaxSnpTrack(0.999),
   fUseOuterDetectors(kFALSE),
+  fMaxChi2TPCTRD(36),     // maximal allowed chi2 between the TRD in and TPC out to be accepted for refit
+  fMaxChi2TPCITS(36),     // maximal allowed chi2 between the ITS in and TPC out to be accepted for backpropagation
   fDumpSignal(kFALSE),
   fFirstBin(0),
   fLastBin(-1),
@@ -100,6 +102,7 @@ AliTPCRecoParam::AliTPCRecoParam():
   fUseMultiplicityCorrectionDedx(kTRUE), // use Dedx multiplicity correction
   fUseAlignmentTime(kTRUE),              // use time dependent alignment correction
   fUseIonTailCorrection(0),   // no ion tail correction for now
+  fCrosstalkCorrection(0),   // crosstalk correction factor (fro each signal substracted by (mean signal in wite patch)xfCrosstalkCorrection) - Effect important only after removing oc capacitors in 2012
   //
   fUseTotCharge(kTRUE),          // switch use total or max charge
   fMinFraction(0.01),           // truncated mean - lower threshold
index 1479a46916cad2b603fed32e8c286c3ca6a90845..eba548e908e4b5b62cc2e0c7b616c7e390de903f 100644 (file)
@@ -32,6 +32,10 @@ class AliTPCRecoParam : public AliDetectorRecoParam
   Double_t GetMaxSnpTrack() const  { return fMaxSnpTrack;}
   Bool_t   GetUseOuterDetectors() const { return fUseOuterDetectors;}
   void     SetUseOuterDetectors(Bool_t flag)  { fUseOuterDetectors=flag;}
+  void     SetMaxChi2TPCTRD(Double_t maxChi2){fMaxChi2TPCTRD=maxChi2;}
+  Double_t GetMaxChi2TPCTRD() const {return fMaxChi2TPCTRD;}
+  void     SetMaxChi2TPCITS(Double_t maxChi2){fMaxChi2TPCITS=maxChi2;}
+  Double_t GetMaxChi2TPCITS() const {return fMaxChi2TPCITS;}
   Double_t GetCutSharedClusters(Int_t index)const { return fCutSharedClusters[index];}
   void  SetCutSharedClusters(Int_t index, Float_t value){ fCutSharedClusters[index]=value;}
   Int_t GetClusterMaxRange(Int_t index)const { return fClusterMaxRange[index];}
@@ -103,6 +107,7 @@ class AliTPCRecoParam : public AliDetectorRecoParam
   void  SetUseExBCorrection(Int_t flag){fUseExBCorrection=flag;}
   void  SetUseTOFCorrection(Bool_t flag) {fUseTOFCorrection = flag;}
   void  SetUseIonTailCorrection(Int_t flag) {fUseIonTailCorrection = flag;}
+  void  SetCrosstalkCorrection(Float_t crosstalkCorrection) {fCrosstalkCorrection= crosstalkCorrection; }
   //
   Int_t GetUseFieldCorrection() const {return fUseFieldCorrection;}
   Int_t GetUseComposedCorrection() const {return fUseComposedCorrection;}
@@ -116,6 +121,7 @@ class AliTPCRecoParam : public AliDetectorRecoParam
   Int_t GetUseExBCorrection() const {return fUseExBCorrection;}
   Bool_t GetUseTOFCorrection() {return fUseTOFCorrection;}
   Int_t GetUseIonTailCorrection() const {return fUseIonTailCorrection;}
+  Double_t GetCrosstalkCorrection() const {return fCrosstalkCorrection;}
 
   Bool_t GetUseMultiplicityCorrectionDedx() const {return fUseMultiplicityCorrectionDedx;}
   Int_t  GetGainCorrectionHVandPTMode() const  { return   fGainCorrectionHVandPTMode;}
@@ -151,6 +157,8 @@ class AliTPCRecoParam : public AliDetectorRecoParam
   Double_t fMaxSnpTracker;   // max sin of local angle  - for TPC tracker
   Double_t fMaxSnpTrack;     // max sin of local angle  - for track 
   Bool_t   fUseOuterDetectors; // switch - to use the outer detectors
+  Double_t fMaxChi2TPCTRD;     // maximal allowed chi2 between the TRD in and TPC out to be accepted for refit
+  Double_t fMaxChi2TPCITS;     // maximal allowed chi2 between the ITS in and TPC out to be accepted for backpropagation
   //
   //
   Double_t fCutSharedClusters[2]; // cut value - maximal amount  of shared clusters  
@@ -199,6 +207,7 @@ class AliTPCRecoParam : public AliDetectorRecoParam
   Bool_t fUseMultiplicityCorrectionDedx; // use Dedx multiplicity correction
   Bool_t fUseAlignmentTime;              // use time dependent alignment correction
   Int_t fUseIonTailCorrection;   // use ion tail correction
+  Double_t fCrosstalkCorrection;   // crosstalk correction factor (fro each signal substracted by (mean signal in wite patch)xfCrosstalkCorrection) - Effect important only after removing oc capacitors in 2012
   //
   // dEdx switches
   //
@@ -221,7 +230,7 @@ public:
                                       // to be switched off for pass 0 reconstruction
                                       // Use static function, other option will be to use 
                                       // additional specific storage ?
-  ClassDef(AliTPCRecoParam, 18)
+  ClassDef(AliTPCRecoParam, 19)
 };
 
 
index 1401ccaa285de79105abbab2bc1b0b48d2782502..09b8ede9cb78fbe07ec7c64d131a6aacdae62be7 100644 (file)
@@ -157,24 +157,38 @@ AliTPCtrack::AliTPCtrack(const AliESDtrack& t, TTreeSRedirector *pcstream) :
   const AliExternalTrackParam  *tpcout=(t.GetFriendTrack())? ((AliESDfriendTrack*)(t.GetFriendTrack()))->GetTPCOut():0;
   const AliExternalTrackParam  *tpcin = t.GetInnerParam();
   const AliExternalTrackParam  *tpc=(tpcout)?tpcout:tpcin;
+  Bool_t isBackProp = tpcout==0; // is this backpropagation?
   if (!tpc) tpc=&param;
-  Bool_t isOK=recoParam->GetUseOuterDetectors();
-  if (param.GetCovariance()[0]>kmaxC[0]*kmaxC[0]) isOK=kFALSE;
-  if (param.GetCovariance()[2]>kmaxC[1]*kmaxC[1]) isOK=kFALSE;
-  if (param.GetCovariance()[5]>kmaxC[2]*kmaxC[2]) isOK=kFALSE;
-  if (param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE;
-  param.Rotate(tpc->GetAlpha());
+
+  Bool_t isOK = (recoParam->GetUseOuterDetectors() && t.IsOn(AliESDtrack::kTRDrefit)) || isBackProp;
+  if (param.GetCovariance()[0]>kmaxC[0]*kmaxC[0] ||
+      param.GetCovariance()[2]>kmaxC[1]*kmaxC[1] ||
+      param.GetCovariance()[5]>kmaxC[2]*kmaxC[2] ||
+      param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE;
+  //
+  if (isOK) isOK &= param.Rotate(tpc->GetAlpha()); // using external seed
   Double_t oldX=param.GetX(),  oldY=param.GetY(),  oldZ=param.GetZ();
   if (!isOK ){
     param=*tpc;
     isOK=kTRUE;
     reject=1;
   }
-  isOK=AliTracker::PropagateTrackToBxByBz(&param,tpc->GetX(),t.GetMass(),2.,kFALSE);
-  if (param.GetCovariance()[0]>kmaxC[0]*kmaxC[0]) isOK=kFALSE;
-  if (param.GetCovariance()[2]>kmaxC[1]*kmaxC[1]) isOK=kFALSE;
-  if (param.GetCovariance()[5]>kmaxC[2]*kmaxC[2]) isOK=kFALSE;
-  if (param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE;
+  else { // using external seed
+    //  param.Rotate(tpc->GetAlpha()); // not needed
+    if (!AliTracker::PropagateTrackToBxByBz(&param,tpc->GetX(),t.GetMass(),2.,kFALSE) ||
+       param.GetCovariance()[0]>kmaxC[0]*kmaxC[0] ||
+       param.GetCovariance()[2]>kmaxC[1]*kmaxC[1] ||
+       param.GetCovariance()[5]>kmaxC[2]*kmaxC[2] ||
+       param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE;
+  }
+  if (isOK) {
+    Double_t chi2= param.GetPredictedChi2(tpc);
+    if (isBackProp) {
+      if (chi2>recoParam->GetMaxChi2TPCITS()) isOK=kFALSE; // protection against outliers in the ITS
+    }
+    else if (chi2>recoParam->GetMaxChi2TPCTRD()) isOK=kFALSE; // protection against outliers in the TRD
+  }
+
   if (!isOK){
     param=*tpc;
     isOK=kTRUE;
index f20a07ad2a09ef778aede19a35deaa3534c5aae6..e839d2859bd96e42bb805bd28c987244686b0388 100644 (file)
@@ -339,7 +339,8 @@ Int_t AliTPCtracker::AcceptCluster(AliTPCseed * seed, AliTPCclusterMI * cluster)
   Double_t rdistance2  = rdistancey2+rdistancez2;
   //Int_t  accept =0;
   
-  if (AliTPCReconstructor::StreamLevel()>2 && seed->GetNumberOfClusters()>20) {
+  if (AliTPCReconstructor::StreamLevel()>2) {
+    //  if (AliTPCReconstructor::StreamLevel()>2 && seed->GetNumberOfClusters()>20) {
     Float_t rmsy2 = seed->GetCurrentSigmaY2();
     Float_t rmsz2 = seed->GetCurrentSigmaZ2();
     Float_t rmsy2p30 = seed->GetCMeanSigmaY2p30();
@@ -352,12 +353,13 @@ Int_t AliTPCtracker::AcceptCluster(AliTPCseed * seed, AliTPCclusterMI * cluster)
     param.GetXYZ(gcl.GetMatrixArray());
     cluster->GetGlobalXYZ(gclf);
     gcl[0]=gclf[0];    gcl[1]=gclf[1];    gcl[2]=gclf[2];
-
+    Int_t nclSeed=seed->GetNumberOfClusters();
     
     if (AliTPCReconstructor::StreamLevel()>2) {
     (*fDebugStreamer)<<"ErrParam"<<
       "iter="<<fIteration<<
       "Cl.="<<cluster<<
+      "nclSeed="<<nclSeed<<
       "T.="<<&param<<
       "dy="<<dy<<
       "dz="<<dz<<
@@ -3261,6 +3263,7 @@ void AliTPCtracker::ReadSeeds(const AliESDEvent *const event, Int_t direction)
 
     }
     if (((status&AliESDtrack::kITSout)==0)&&(direction==1)) seed->ResetCovariance(10.); 
+    //RS    if ( direction ==2 &&(status & AliESDtrack::kTRDrefit) == 0 ) seed->ResetCovariance(10.);
     if ( direction ==2 &&(status & AliESDtrack::kTRDrefit) == 0 ) seed->ResetCovariance(10.);
     //if ( direction ==2 && ((status & AliESDtrack::kTPCout) == 0) ) {
     //  fSeeds->AddAt(0,i);
index 6006c800e57ee927b012f0c9fd64e6f8d6e9df76..97cca56918b99cd1ff533fb9bcf3468352a861e3 100644 (file)
   Class for creating of the sumable digits and digits from MC data
   //
   The input :  ideal signals (Hits->Diffusion->Attachment -Ideal signal)
-  The output:  raw digits
+  The output:  "raw digits"
 
   Effect implemented:
   1. Pad by pad gain map
-  2. Noise map
+  2. Noise map  
   3. The dead channels identified  - zerro noise for corresponding pads
      In this case the outpu equal zerro
+     
 */
 
 
@@ -55,6 +55,8 @@
 #include "AliTPCcalibDB.h"
 #include "AliTPCCalPad.h"
 #include "AliTPCCalROC.h"
+#include "TTreeStream.h"
+#include "AliTPCReconstructor.h"
 
 using std::cout;
 using std::cerr;
@@ -62,7 +64,7 @@ using std::endl;
 ClassImp(AliTPCDigitizer)
 
 //___________________________________________
-  AliTPCDigitizer::AliTPCDigitizer() :AliDigitizer(),fDebug(0)
+  AliTPCDigitizer::AliTPCDigitizer() :AliDigitizer(),fDebug(0), fDebugStreamer(0)
 {
   //
 // Default ctor - don't use it
@@ -72,18 +74,21 @@ ClassImp(AliTPCDigitizer)
 
 //___________________________________________
 AliTPCDigitizer::AliTPCDigitizer(AliDigitizationInput* digInput) 
-  :AliDigitizer(digInput),fDebug(0)
+  :AliDigitizer(digInput),fDebug(0), fDebugStreamer(0)
 {
   //
 // ctor which should be used
 //  
   AliDebug(2,"(AliDigitizationInput* digInput) was processed");
+  if (AliTPCReconstructor::StreamLevel()>0)  fDebugStreamer = new TTreeSRedirector("TPCDigitDebug.root");
+
 }
 
 //------------------------------------------------------------------------
 AliTPCDigitizer::~AliTPCDigitizer()
 {
 // Destructor
+  if (fDebugStreamer) delete fDebugStreamer;
 }
 
 
@@ -246,18 +251,18 @@ void AliTPCDigitizer::DigitizeFast(Option_t* option)
     
   for (Int_t segmentID=0; segmentID<param->GetNRowsTotal(); segmentID++) 
    {
-    Int_t sec, row;
-    if (!param->AdjustSectorRow(segmentID,sec,row)) 
+    Int_t sector, padRow;
+    if (!param->AdjustSectorRow(segmentID,sector,padRow)) 
      {
       cerr<<"AliTPC warning: invalid segment ID ! "<<segmentID<<endl;
       continue;
      }
-    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sec);  // pad gains per given sector
-    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sec);  // noise per given sector
+    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sector);  // pad gains per given sector
+    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sector);  // noise per given sector
     digrow->SetID(segmentID);
 
-    Int_t nrows = 0;
-    Int_t ncols = 0;
+    Int_t nTimeBins = 0;
+    Int_t nPads = 0;
 
     Bool_t digitize = kFALSE;
     for (Int_t i=0;i<nInputs; i++) 
@@ -269,8 +274,8 @@ void AliTPCDigitizer::DigitizeFast(Option_t* option)
       if (gime->TreeS()->GetEntryWithIndex(segmentID,segmentID) >= 0) {
        digarr[i]->ExpandBuffer();
        digarr[i]->ExpandTrackBuffer();
-        nrows = digarr[i]->GetNRows();
-        ncols = digarr[i]->GetNCols();
+        nTimeBins = digarr[i]->GetNRows();
+        nPads = digarr[i]->GetNCols();
        active[i] = kTRUE;
        if (!GetRegionOfInterest() || (i == 0)) digitize = kTRUE;
       } else {
@@ -280,14 +285,14 @@ void AliTPCDigitizer::DigitizeFast(Option_t* option)
      }   
     if (!digitize) continue;
 
-    digrow->Allocate(nrows,ncols);
+    digrow->Allocate(nTimeBins,nPads);
     digrow->AllocateTrack(3);
 
     Float_t q=0;
     Int_t label[1000]; //stack for 300 events 
     Int_t labptr = 0;
 
-    Int_t nElems = nrows*ncols;     
+    Int_t nElems = nTimeBins*nPads;     
  
     for (Int_t i=0;i<nInputs; i++)
      if (active[i]) { 
@@ -325,12 +330,12 @@ void AliTPCDigitizer::DigitizeFast(Option_t* option)
            ptr[i]++;
          }
         q/=16.;  //conversion factor
-       Float_t gain = gainROC->GetValue(row,elem/nrows);  // get gain for given - pad-row pad
+       Float_t gain = gainROC->GetValue(padRow,elem/nTimeBins);  // get gain for given - pad-row pad
        //if (gain<0.5){
          //printf("problem\n");
        //}
        q*= gain;
-       Float_t noisePad = noiseROC->GetValue(row,elem/nrows);
+       Float_t noisePad = noiseROC->GetValue(padRow,elem/nTimeBins);
         //       Float_t noise  = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());  
         Float_t noise  = pTPC->GetNoise();
         q+=noise*noisePad;
@@ -357,7 +362,7 @@ void AliTPCDigitizer::DigitizeFast(Option_t* option)
     digrow->CompresBuffer(1,zerosup);
     digrow->CompresTrackBuffer(1);
     tree->Fill();
-    if (fDebug>0) cerr<<sec<<"\t"<<row<<"\n";  
+    if (fDebug>0) cerr<<sector<<"\t"<<padRow<<"\n";  
    } //for (Int_t n=0; n<param->GetNRowsTotal(); n++) 
   
 
@@ -381,10 +386,14 @@ void AliTPCDigitizer::DigitizeFast(Option_t* option)
 //------------------------------------------------------------------------
 void AliTPCDigitizer::DigitizeSave(Option_t* option)
 {
-  
-  // merge input tree's with summable digits
-  //output stored in TreeTPCD
-
+  //
+  // Merge input tree's with summable digits
+  // Output digits stored in TreeTPCD
+  // 
+  // Not active for long time.
+  // Before adding modification (for ion tail calucation and for the crorsstalk) it should be 
+  //  checked one by one with currenlty used AliTPCDigitizer::DigitizeFast
+  //
   TString optionString = option;
   if (!strcmp(optionString.Data(),"deb")) {
     cout<<"AliTPCDigitizer::Digitize: called with option deb "<<endl;
@@ -480,19 +489,19 @@ void AliTPCDigitizer::DigitizeSave(Option_t* option)
     
     }   
     
-    Int_t sec, row;
-    if (!param->AdjustSectorRow(digarr[0]->GetID(),sec,row)) {
+    Int_t sector, padRow;
+    if (!param->AdjustSectorRow(digarr[0]->GetID(),sector,padRow)) {
       cerr<<"AliTPC warning: invalid segment ID ! "<<digarr[0]->GetID()<<endl;
       continue;
     }
 
-    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sec);  // pad gains per given sector
-    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sec);  // noise per given sector
+    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sector);  // pad gains per given sector
+    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sector);  // noise per given sector
     digrow->SetID(digarr[0]->GetID());
 
-    Int_t nrows = digarr[0]->GetNRows();
-    Int_t ncols = digarr[0]->GetNCols();
-    digrow->Allocate(nrows,ncols);
+    Int_t nTimeBins = digarr[0]->GetNRows();
+    Int_t nPads = digarr[0]->GetNCols();
+    digrow->Allocate(nTimeBins,nPads);
     digrow->AllocateTrack(3);
 
     Float_t q=0;
@@ -501,18 +510,18 @@ void AliTPCDigitizer::DigitizeSave(Option_t* option)
 
     
 
-    for (Int_t rows=0;rows<nrows; rows++){
-      for (Int_t col=0;col<ncols; col++){
+    for (Int_t iTimeBin=0;iTimeBin<nTimeBins; iTimeBin++){   // iTimeBin
+      for (Int_t iPad=0;iPad<nPads; iPad++){    // pad
     
        q=0;
        labptr=0;
        // looop over digits 
         for (Int_t i=0;i<nInputs; i++){ 
-         q  += digarr[i]->GetDigitFast(rows,col);
+         q  += digarr[i]->GetDigitFast(iTimeBin,iPad);
           //q  += *(pdig[i]);
          
           for (Int_t tr=0;tr<3;tr++) {
-           Int_t lab = digarr[i]->GetTrackIDFast(rows,col,tr);
+           Int_t lab = digarr[i]->GetTrackIDFast(iTimeBin,iPad,tr);
            //Int_t lab = ptr[i][tr*nElems];
             if ( (lab > 1) ) {
               label[labptr]=lab+masks[i];
@@ -525,25 +534,32 @@ void AliTPCDigitizer::DigitizeSave(Option_t* option)
         }
        q/=16.;  //conversion factor
        //       Float_t noise  = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());  
-       Float_t gain = gainROC->GetValue(row,col);
+       Float_t gain = gainROC->GetValue(padRow,iPad);
        q*= gain;
-       Float_t noisePad = noiseROC->GetValue(row, col);
+       Float_t noisePad = noiseROC->GetValue(padRow, iPad);
 
        Float_t noise  = pTPC->GetNoise();
        q+=noise*noisePad;
+       //
+       // here we can get digits from past and add signal
+       //
+       //
+       //for (Int_t jTimeBin=0; jTimeBin<iTimeBin; jTimeBin++)
+       //  q+=ionTail
+       //
 
         q=TMath::Nint(q);
         if (q > zerosup){ 
          
          if(q >= param->GetADCSat()) q = (Short_t)(param->GetADCSat() - 1);
-         digrow->SetDigitFast((Short_t)q,rows,col);  
+         digrow->SetDigitFast((Short_t)q,iTimeBin,iPad);  
          // *pdig1 =Short_t(q);
          for (Int_t tr=0;tr<3;tr++){
            if (tr<labptr) 
-             ((AliSimDigits*)digrow)->SetTrackIDFast(label[tr],rows,col,tr);
+             ((AliSimDigits*)digrow)->SetTrackIDFast(label[tr],iTimeBin,iPad,tr);
            //ptr1[tr*nElems] = label[tr];
            //else
-             //           ((AliSimDigits*)digrow)->SetTrackIDFast(-1,rows,col,tr);          
+             //           ((AliSimDigits*)digrow)->SetTrackIDFast(-1,iTimeBin,iPad,tr);          
            //  ptr1[tr*nElems] = 1;
          }
        }
@@ -555,7 +571,7 @@ void AliTPCDigitizer::DigitizeSave(Option_t* option)
     digrow->CompresBuffer(1,zerosup);
     digrow->CompresTrackBuffer(1);
     tree->Fill();
-    if (fDebug>0) cerr<<sec<<"\t"<<row<<"\n";  
+    if (fDebug>0) cerr<<sector<<"\t"<<padRow<<"\n";  
   } 
 //  printf("end TPC merging - end -Tree %s\t%p\n",fDigInput->GetInputTreeH(0)->GetName(),fDigInput->GetInputTreeH(0)->GetListOfBranches()->At(3));
   //fDigInput->GetTreeDTPC()->Write(0,TObject::kOverwrite);
@@ -574,3 +590,324 @@ void AliTPCDigitizer::DigitizeSave(Option_t* option)
   delete [] masks;
   delete [] digarr;  
 }
+
+
+
+//------------------------------------------------------------------------
+void AliTPCDigitizer::DigitizeWithTailAndCrossTalk(Option_t* option) 
+{
+  // Modified version of the digitization function
+  // Modification: adding the ion tail and crosstalk:
+  //
+  // pcstream used in order to visually inspect data
+  //
+  //
+  // Crosstalk simulation:
+  //   1.) Calculate per time bin mean charge (per pad)  within anode wire segment 
+  //   2.) Subsract for the clusters at given time bin fraction of (mean charge) normalized by add hoc constant
+  //       AliTPCRecoParam::GetCrosstalkCorrection() (0 if not crosstalk, 1 if ideal crosstalk)
+  //       for simplicity we are assuming that wire segents are related to pad-rows
+  //       Wire segmentationn is obtatined from the      
+  //       AliTPCParam::GetWireSegment(Int_t sector, Int_t row); // to be implemented
+  //       AliTPCParam::GetNPadsPerSegment(Int_t segmentID); // to be implemented
+  //
+  // Ion tail simulation:
+  //    1.) Needs signal from pad+-1, taking signal from history
+  // merge input tree's with summable digits
+  // output stored in TreeTPCD
+  //
+  char s[100]; 
+  char ss[100];
+  TString optionString = option;
+  if (!strcmp(optionString.Data(),"deb")) {
+    cout<<"AliTPCDigitizer:::DigitizeFast called with option deb "<<endl;
+    fDebug = 3;
+  }
+  //get detector and geometry
+
+
+  AliRunLoader *rl, *orl;
+  AliLoader *gime, *ogime;
+  
+  if (gAlice == 0x0)
+   {
+     Warning("DigitizeFast","gAlice is NULL. Loading from input 0");
+     rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(0));
+     if (rl == 0x0)
+      {
+        Error("DigitizeFast","Can not find Run Loader for input 0. Can not proceed.");
+        return;
+      }
+     rl->LoadgAlice();
+     rl->GetAliRun();
+   }
+  AliTPC *pTPC  = (AliTPC *) gAlice->GetModule("TPC");
+  AliTPCParam * param = pTPC->GetParam();
+  
+  //sprintf(s,param->GetTitle());
+  snprintf(s,100,"%s",param->GetTitle());
+  //sprintf(ss,"75x40_100x60");
+  snprintf(ss,100,"75x40_100x60");
+  if(strcmp(s,ss)==0){
+    printf("2 pad-length geom hits with 3 pad-lenght geom digits...\n");
+    delete param;
+    param=new AliTPCParamSR();
+  }
+  else{
+    //sprintf(ss,"75x40_100x60_150x60");
+    snprintf(ss,100,"75x40_100x60_150x60");
+   if(strcmp(s,ss)!=0) {
+     printf("No TPC parameters found...\n");
+     exit(2); 
+   }
+  }
+  
+  pTPC->GenerNoise(500000); //create table with noise
+  //
+  Int_t nInputs = fDigInput->GetNinputs();
+  Int_t * masks = new Int_t[nInputs];
+  for (Int_t i=0; i<nInputs;i++)
+    masks[i]= fDigInput->GetMask(i);
+  Short_t **pdig= new Short_t*[nInputs];   //pointers to the expanded digits array
+  Int_t **ptr=  new Int_t*[nInputs];       //pointers to the expanded tracks array
+  Bool_t *active=  new Bool_t[nInputs];    //flag for active input segments
+  Char_t phname[100];
+  
+  //create digits array for given sectors
+  // make indexes
+  //
+  //create branch's in TPC treeD
+  orl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
+  ogime = orl->GetLoader("TPCLoader");
+  TTree * tree  = ogime->TreeD();
+  AliSimDigits * digrow = new AliSimDigits;  
+
+  if (tree == 0x0)
+   {
+     ogime->MakeTree("D");
+     tree  = ogime->TreeD();
+   }
+  tree->Branch("Segment","AliSimDigits",&digrow);
+  //  
+  AliSimDigits ** digarr = new AliSimDigits*[nInputs]; 
+  for (Int_t i1=0;i1<nInputs; i1++)
+    {
+      digarr[i1]=0;
+     //    intree[i1]
+      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i1));
+      gime = rl->GetLoader("TPCLoader");
+      gime->LoadSDigits("read");
+      TTree * treear =  gime->TreeS();
+     
+      if (!treear) 
+       {
+        cerr<<"AliTPCDigitizer: Input tree with SDigits not found in"
+            <<" input "<< i1<<endl;
+        for (Int_t i2=0;i2<i1+1; i2++){ 
+          
+          if(digarr[i2])  delete digarr[i2];
+       }
+        delete [] digarr;
+        delete [] active;
+        delete []masks;
+        delete []pdig;
+        delete []ptr;
+        return;
+       }
+
+      //sprintf(phname,"lhcphase%d",i1);
+      snprintf(phname,100,"lhcphase%d",i1);
+      TParameter<float> *ph = (TParameter<float>*)treear->GetUserInfo()
+                              ->FindObject("lhcphase0");
+      if(!ph){
+        cerr<<"AliTPCDigitizer: LHC phase  not found in"
+            <<" input "<< i1<<endl;
+        for (Int_t i2=0;i2<i1+1; i2++){ 
+          if(digarr[i2])  delete digarr[i2];
+       }
+        delete [] digarr;
+        delete [] active;
+        delete []masks;
+        delete []pdig;
+        delete []ptr;
+        return;
+      }
+      tree->GetUserInfo()->Add(new TParameter<float>(phname,ph->GetVal()));
+             //
+      if (treear->GetIndex()==0)  
+       treear->BuildIndex("fSegmentID","fSegmentID");
+      treear->GetBranch("Segment")->SetAddress(&digarr[i1]);
+    }
+
+
+
+
+  //
+
+  param->SetZeroSup(2);
+  Int_t zerosup = param->GetZeroSup(); 
+  AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetDedxGainFactor(); 
+  AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise(); 
+  //
+  // 1.) Make first loop to calculate mean amplitude per pad per segment
+  //
+  // TObjArray * crossTalkSignalArray(nsectors); 
+  // TMatrixD  crossTalkSignal(nWireSegments, timeBin);  // structure with mean signal per pad to be filled in first loop
+  //
+  //
+  //2.) Loop over segments (padrows) of the TPC 
+  //  
+  for (Int_t segmentID=0; segmentID<param->GetNRowsTotal(); segmentID++) 
+   {
+    Int_t sector, padRow;
+    if (!param->AdjustSectorRow(segmentID,sector,padRow)) 
+     {
+      cerr<<"AliTPC warning: invalid segment ID ! "<<segmentID<<endl;
+      continue;
+     }
+    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sector);  // pad gains per given sector
+    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sector);  // noise per given sector
+    digrow->SetID(segmentID);
+
+    Int_t nTimeBins = 0;
+    Int_t nPads = 0;
+
+    Bool_t digitize = kFALSE;
+    for (Int_t i=0;i<nInputs; i++) 
+      { 
+       
+      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i));
+      gime = rl->GetLoader("TPCLoader");
+      
+      if (gime->TreeS()->GetEntryWithIndex(segmentID,segmentID) >= 0) {
+       digarr[i]->ExpandBuffer();
+       digarr[i]->ExpandTrackBuffer();
+        nTimeBins = digarr[i]->GetNRows();
+        nPads = digarr[i]->GetNCols();
+       active[i] = kTRUE;
+       if (!GetRegionOfInterest() || (i == 0)) digitize = kTRUE;
+      } else {
+       active[i] = kFALSE;
+      }
+      if (GetRegionOfInterest() && !digitize) break;
+     }   
+    if (!digitize) continue;
+
+    digrow->Allocate(nTimeBins,nPads);
+    digrow->AllocateTrack(3);
+
+    Float_t q=0;
+    Int_t label[1000]; //stack for 300 events 
+    Int_t labptr = 0;
+
+    Int_t nElems = nTimeBins*nPads;     
+    for (Int_t i=0;i<nInputs; i++)
+     if (active[i]) { 
+       pdig[i] = digarr[i]->GetDigits();
+       ptr[i]  = digarr[i]->GetTracks();
+      }
+     
+    Short_t *pdig1= digrow->GetDigits();
+    Int_t   *ptr1= digrow->GetTracks() ;
+
+    
+
+    for (Int_t elem=0;elem<nElems; elem++) 
+     {    
+       // padNumber=elem/nTimeBins
+       // timeBin=elem%nTimeBins 
+       q=0;
+       labptr=0;
+       // looop over digits 
+        for (Int_t i=0;i<nInputs; i++) if (active[i]) 
+         { 
+          //          q  += digarr[i]->GetDigitFast(rows,col);
+            q  += *(pdig[i]);
+         
+           for (Int_t tr=0;tr<3;tr++) 
+            {
+             //             Int_t lab = digarr[i]->GetTrackIDFast(rows,col,tr);
+             Int_t lab = ptr[i][tr*nElems];
+             if ( (lab > 1) && *(pdig[i])>zerosup) 
+              {
+                label[labptr]=lab+masks[i];
+                labptr++;
+              }          
+            }
+           pdig[i]++;
+           ptr[i]++;
+         }
+       Int_t padNumber=elem/nTimeBins;
+       
+        q/=16.;  //conversion factor
+       Float_t gain = gainROC->GetValue(padRow,padNumber);  // get gain for given - pad-row pad
+       //if (gain<0.5){
+         //printf("problem\n");
+       //}
+       q*= gain;
+       // Crosstalk correction:
+       //      Double_t qCrossTalk=crossTalkSignal(wireSegment,timeBin); // signal matrix from per sector array
+       //
+       //
+       // Ion tail correction:
+       //   padNumber=elem/nTimeBins
+       //   timeBin=elem%nTimeBins 
+       //   elem=padNumber*nTimeBins+timeBin;
+       //    lowerElem=elem-nIonTailBins;    
+        //    if (lowerElem<0) lowerElem=0;
+       //    if (lowerElem in previospad) lowerElem = padNumber*nTimeBins;
+       // 
+       // for (Int_t celem=elem-1; celem>lowerElem; celem--){
+       //  Int_t deltaT=elem-celem
+       //
+       // }
+       //
+       Float_t noisePad = noiseROC->GetValue(padRow,padNumber);
+        //       Float_t noise  = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());  
+        Float_t noise  = pTPC->GetNoise();
+        q+=noise*noisePad;     
+        q=TMath::Nint(q);  // round to the nearest integer
+       /*
+         fill infor to check consistency of the data 
+        */
+        if (q > zerosup)
+         { 
+          if(q >= param->GetADCSat()) q = (Short_t)(param->GetADCSat() - 1);
+          //digrow->SetDigitFast((Short_t)q,rows,col);  
+          *pdig1 =Short_t(q);
+          for (Int_t tr=0;tr<3;tr++)
+           {
+            if (tr<labptr) 
+             ptr1[tr*nElems] = label[tr];
+           }
+          }
+        pdig1++;
+        ptr1++;
+     }
+    //
+    //  glitch filter
+    //
+    digrow->GlitchFilter();
+    //
+    digrow->CompresBuffer(1,zerosup);
+    digrow->CompresTrackBuffer(1);
+    tree->Fill();
+    if (fDebug>0) cerr<<sector<<"\t"<<padRow<<"\n";  
+   } //for (Int_t n=0; n<param->GetNRowsTotal(); n++) 
+  
+
+  orl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
+  ogime = orl->GetLoader("TPCLoader");
+  ogime->WriteDigits("OVERWRITE");
+  
+  //fDigInput->GetTreeDTPC()->Write(0,TObject::kOverwrite);
+  
+  delete digrow;     
+  for (Int_t i1=0;i1<nInputs; i1++) delete digarr[i1];
+  delete []masks;
+  delete []pdig;
+  delete []ptr;
+  delete []active;
+  delete []digarr;  
+}
index ee73291de08187f38882a7ad822c76139e618f22..e7a4aaeee54d844d212ae079ed4ab6c907e106c5 100644 (file)
@@ -6,6 +6,7 @@
 /* $Id$ */
 
 #include "AliDigitizer.h"
+class TTreeSRedirector;
 
 class AliDigitizationInput;
 
@@ -23,8 +24,12 @@ class AliTPCDigitizer : public AliDigitizer {
  private: 
     void DigitizeFast(Option_t* option=0); //digitize - using row pointers
     void DigitizeSave(Option_t* option=0); // digitize using controlled arrays   
-    Int_t fDebug;
+    void DigitizeWithTailAndCrossTalk(Option_t* option=0); 
+    Int_t fDebug;                         //
+    TTreeSRedirector *fDebugStreamer;     //!debug streamer
  private:
+    AliTPCDigitizer& operator=(const AliTPCDigitizer&);
+    AliTPCDigitizer(const AliTPCDigitizer&);
     ClassDef(AliTPCDigitizer,2)  // MUON merging/digitization
 };    
 #endif
index 800a448b0ba80eaf108b2ed74d37e38c8ac99832..f82b22805550190981a5b0c2ada0f3844c46963b 100644 (file)
 // AliTPCclusterFast::Simul("cluterSimul.root",20000); 
 */
 
+
+
+
+/*
+  Modifications to add:
+  1.) modigy mode ==> dEdxMode
+  2.) Create hardware setup class 
+      (fNoise, fGain, fBRounding, fBAddpedestal, ....)
+  3.) Create arrays of registered hardware setups
+  4.) Extend on the fly functions to use registered hardware setups, identified by ID.
+      hwMode 
+
+ */
+
+
+
 #include "TObject.h"
 #include "TF1.h"
 #include "TMath.h"
@@ -89,13 +105,13 @@ public:
   static void Simul(const char* simul, Int_t ntracks);
   Double_t  CookdEdxNtot(Double_t f0,Float_t f1);
   Double_t  CookdEdxQtot(Double_t f0,Float_t f1);
-  Double_t  CookdEdxNtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t mode);
-  Double_t  CookdEdxQtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t mode);
+  Double_t  CookdEdxNtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t dEdxMode);
+  Double_t  CookdEdxQtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t dEdxMode);
   //
-  Double_t  CookdEdxDtot(Double_t f0,Float_t f1, Float_t gain,Float_t thr, Float_t noise, Bool_t corr, Int_t mode);
-  Double_t  CookdEdxDmax(Double_t f0,Float_t f1,Float_t gain,Float_t thr, Float_t noise, Bool_t corr, Int_t mode);
+  Double_t  CookdEdxDtot(Double_t f0,Float_t f1, Float_t gain,Float_t thr, Float_t noise, Bool_t corr, Int_t dEdxMode);
+  Double_t  CookdEdxDmax(Double_t f0,Float_t f1,Float_t gain,Float_t thr, Float_t noise, Bool_t corr, Int_t dEdxMode);
   //
-  Double_t  CookdEdx(Int_t npoints, Double_t *amp, Double_t f0,Float_t f1, Int_t mode);
+  Double_t  CookdEdx(Int_t npoints, Double_t *amp, Double_t f0,Float_t f1, Int_t dEdxMode);
   //
   Float_t fMNprim;     // mean number of primary electrons
   Float_t fAngleY;     // y angle - tan(y)
@@ -198,11 +214,11 @@ Double_t  AliTPCtrackFast::CookdEdxQtot(Double_t f0,Float_t f1){
 }
 
 
-Double_t  AliTPCtrackFast::CookdEdxNtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t mode){
+Double_t  AliTPCtrackFast::CookdEdxNtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t dEdxMode){
   //
   //   dEdx_{hit}  reconstructed mean number of  electrons 
   //     thr  = threshold in terms of the number of electrons
-  //     mode = algorithm to deal with trhesold values replacing
+  //     dEdxMode = algorithm to deal with trhesold values replacing
   //
   Double_t amp[160];
   Int_t nBellow=0;
@@ -219,37 +235,37 @@ Double_t  AliTPCtrackFast::CookdEdxNtotThr(Double_t f0,Float_t f1, Double_t thr,
     if (minAbove>clQ) minAbove=clQ;
   }
   //
-  if (mode==-1) return Double_t(nBellow)/Double_t(fN);
+  if (dEdxMode==-1) return Double_t(nBellow)/Double_t(fN);
 
   for (Int_t i=0;i<fN;i++){ 
     AliTPCclusterFast * cluster = ( AliTPCclusterFast *)((*fCl)[i]);
     Double_t clQ= cluster->fNtot;
     //
-    if (mode==0)  amp[i]=clQ;              // mode0 - not threshold  - keep default
+    if (dEdxMode==0)  amp[i]=clQ;              // dEdxMode0 - not threshold  - keep default
     //
     //
-    if (mode==1 && clQ>thr) amp[i]=clQ;    // mode1 - skip if bellow 
-    if (mode==1 && clQ<thr) amp[i]=0;      // mode1 - skip if bellow 
+    if (dEdxMode==1 && clQ>thr) amp[i]=clQ;    // dEdxMode1 - skip if bellow 
+    if (dEdxMode==1 && clQ<thr) amp[i]=0;      // dEdxMode1 - skip if bellow 
     //
     //
-    if (mode==2 && clQ>thr) amp[i]=clQ;    // mode2 - use 0 if below
-    if (mode==2 && clQ<thr) amp[i]=0;      // mode2 - use 0 if below
+    if (dEdxMode==2 && clQ>thr) amp[i]=clQ;    // dEdxMode2 - use 0 if below
+    if (dEdxMode==2 && clQ<thr) amp[i]=0;      // dEdxMode2 - use 0 if below
     //
     //
-    if (mode==3)  amp[i]=(clQ>thr)?clQ:thr; // mode3 - use thr if below
-    if (mode==4)  amp[i]=(clQ>thr)?clQ:minAbove; // mode4 -  use minimal above threshold if bellow thr
+    if (dEdxMode==3)  amp[i]=(clQ>thr)?clQ:thr; // dEdxMode3 - use thr if below
+    if (dEdxMode==4)  amp[i]=(clQ>thr)?clQ:minAbove; // dEdxMode4 -  use minimal above threshold if bellow thr
   }
-  return CookdEdx(fN,amp,f0,f1, mode);
+  return CookdEdx(fN,amp,f0,f1, dEdxMode);
 }
 
 
 
-Double_t  AliTPCtrackFast::CookdEdxQtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t mode){
+Double_t  AliTPCtrackFast::CookdEdxQtotThr(Double_t f0,Float_t f1, Double_t thr, Int_t dEdxMode){
   //
   //
   //   dEdx_{Q}  reconstructed mean number of  electrons xgain
   //     thr  = threshold in terms of the number of electrons
-  //     mode = algorithm to deal with trhesold values replacing
+  //     dEdxMode = algorithm to deal with trhesold values replacing
   //
 
   //
@@ -268,34 +284,34 @@ Double_t  AliTPCtrackFast::CookdEdxQtotThr(Double_t f0,Float_t f1, Double_t thr,
     if (minAbove>clQ) minAbove=clQ;
   }
   //
-  if (mode==-1) return Double_t(nBellow)/Double_t(fN);
+  if (dEdxMode==-1) return Double_t(nBellow)/Double_t(fN);
 
   for (Int_t i=0;i<fN;i++){ 
     AliTPCclusterFast * cluster = ( AliTPCclusterFast *)((*fCl)[i]);
     Double_t clQ= cluster->fQtot;
     //
-    if (mode==0)  amp[i]=clQ;              // mode0 - not threshold  - keep default
+    if (dEdxMode==0)  amp[i]=clQ;              // dEdxMode0 - not threshold  - keep default
     //
     //
-    if (mode==1 && clQ>thr) amp[i]=clQ;    // mode1 - skip if bellow 
-    if (mode==1 && clQ<thr) amp[i]=0;      // mode1 - skip if bellow 
+    if (dEdxMode==1 && clQ>thr) amp[i]=clQ;    // dEdxMode1 - skip if bellow 
+    if (dEdxMode==1 && clQ<thr) amp[i]=0;      // dEdxMode1 - skip if bellow 
     //
     //
-    if (mode==2 && clQ>thr) amp[i]=clQ;    // mode2 - use 0 if below
-    if (mode==2 && clQ<thr) amp[i]=0;      // mode2 - use 0 if below
+    if (dEdxMode==2 && clQ>thr) amp[i]=clQ;    // dEdxMode2 - use 0 if below
+    if (dEdxMode==2 && clQ<thr) amp[i]=0;      // dEdxMode2 - use 0 if below
     //
     //
-    if (mode==3)  amp[i]=(clQ>thr)?clQ:thr; // mode3 - use thr if below
-    if (mode==4)  amp[i]=(clQ>thr)?clQ:minAbove; // mode4 -  use minimal above threshold if bellow thr
+    if (dEdxMode==3)  amp[i]=(clQ>thr)?clQ:thr; // dEdxMode3 - use thr if below
+    if (dEdxMode==4)  amp[i]=(clQ>thr)?clQ:minAbove; // dEdxMode4 -  use minimal above threshold if bellow thr
   }
-  return CookdEdx(fN,amp,f0,f1, mode);
+  return CookdEdx(fN,amp,f0,f1, dEdxMode);
 }
 
 
 
 
 
-Double_t   AliTPCtrackFast::CookdEdxDtot(Double_t f0,Float_t f1, Float_t gain,Float_t thr, Float_t noise, Bool_t doCorr, Int_t mode){
+Double_t   AliTPCtrackFast::CookdEdxDtot(Double_t f0,Float_t f1, Float_t gain,Float_t thr, Float_t noise, Bool_t doCorr, Int_t dEdxMode){
   //
   // total charge in the cluster (sum of the pad x time matrix ), hits were digitized before, but additional 
   // actions can be specified by switches  // dEdx_{Qtot}
@@ -306,7 +322,7 @@ Double_t   AliTPCtrackFast::CookdEdxDtot(Double_t f0,Float_t f1, Float_t gain,Fl
   for (Int_t i=0;i<fN;i++){ 
     AliTPCclusterFast * cluster = ( AliTPCclusterFast *)((*fCl)[i]);
     Float_t camp = 0;
-    if (mode==0) camp = cluster->GetQtot(gain,0,noise);
+    if (dEdxMode==0) camp = cluster->GetQtot(gain,0,noise);
     else
       camp = cluster->GetQtot(gain,thr,noise);
     Float_t corr =  1;
@@ -318,14 +334,14 @@ Double_t   AliTPCtrackFast::CookdEdxDtot(Double_t f0,Float_t f1, Float_t gain,Fl
       if (minAmp >camp) minAmp=camp;
     }
   }
-  if (mode==3) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=thr;
-  if (mode==4) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=minAmp;
-  return CookdEdx(fN,amp,f0,f1, mode);
+  if (dEdxMode==3) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=thr;
+  if (dEdxMode==4) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=minAmp;
+  return CookdEdx(fN,amp,f0,f1, dEdxMode);
 }
 
 
 
-Double_t   AliTPCtrackFast::CookdEdxDmax(Double_t f0,Float_t f1, Float_t gain,Float_t thr, Float_t noise, Bool_t doCorr, Int_t mode){
+Double_t   AliTPCtrackFast::CookdEdxDmax(Double_t f0,Float_t f1, Float_t gain,Float_t thr, Float_t noise, Bool_t doCorr, Int_t dEdxMode){
   //
   // maximal charge in the cluster (maximal amplitude in the digit matrix), hits were digitized before, 
   // but additional actions can be specified by switches  
@@ -336,7 +352,7 @@ Double_t   AliTPCtrackFast::CookdEdxDmax(Double_t f0,Float_t f1, Float_t gain,Fl
   for (Int_t i=0;i<fN;i++){ 
     AliTPCclusterFast * cluster = ( AliTPCclusterFast *)((*fCl)[i]);
     Float_t camp = 0;
-    if (mode==0) camp =  cluster->GetQmax(gain,0,noise);
+    if (dEdxMode==0) camp =  cluster->GetQmax(gain,0,noise);
     else
       camp =  cluster->GetQmax(gain,thr,noise);
     Float_t corr =  1;
@@ -348,24 +364,24 @@ Double_t   AliTPCtrackFast::CookdEdxDmax(Double_t f0,Float_t f1, Float_t gain,Fl
       if (minAmp >camp) minAmp=camp;
     }
   }
-  if (mode==3) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=thr;
-  if (mode==4) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=minAmp;
-  return CookdEdx(fN,amp,f0,f1, mode);
+  if (dEdxMode==3) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=thr;
+  if (dEdxMode==4) for (Int_t i=0;i<fN;i++) if (amp[i]<=0) amp[i]=minAmp;
+  return CookdEdx(fN,amp,f0,f1, dEdxMode);
 }
 
 
-Double_t  AliTPCtrackFast::CookdEdx(Int_t npoints, Double_t *amp,Double_t f0,Float_t f1, Int_t mode){
+Double_t  AliTPCtrackFast::CookdEdx(Int_t npoints, Double_t *amp,Double_t f0,Float_t f1, Int_t dEdxMode){
   //
   // Calculate truncated mean
   //   npoints   - number of points in array
   //   amp       - array with points
   //   f0-f1     - truncation range
-  //   mode      - specify handling of the 0 clusters, actual handling - filling of amplitude defiend in algorithm above
-  //      mode =  0     - accept everything
-  //      mode =  1     - do not count 0 amplitudes
-  //      mode =  2     - use 0 amplitude as it is 
-  //      mode =  3     - use amplitude as it is (in above function amp. replace by the thr)
-  //      mode =  4     - use amplitude as it is (in above function amp. replace by the minimal amplitude)
+  //   dEdxMode      - specify handling of the 0 clusters, actual handling - filling of amplitude defiend in algorithm above
+  //      dEdxMode =  0     - accept everything
+  //      dEdxMode =  1     - do not count 0 amplitudes
+  //      dEdxMode =  2     - use 0 amplitude as it is 
+  //      dEdxMode =  3     - use amplitude as it is (in above function amp. replace by the thr)
+  //      dEdxMode =  4     - use amplitude as it is (in above function amp. replace by the minimal amplitude)
   //
 
   //
@@ -375,7 +391,7 @@ Double_t  AliTPCtrackFast::CookdEdx(Int_t npoints, Double_t *amp,Double_t f0,Flo
   TMath::Sort(npoints,amp,index,kFALSE);
   //
   // 1.) Calculate truncated mean from the selected range of the array (ranking statistic )
-  //     dependening on the mode 0 amplitude can be skipped
+  //     dependening on the dEdxMode 0 amplitude can be skipped
   Float_t sum0=0, sum1=0,sum2=0;
   Int_t   accepted=0;
   Int_t above=0;
@@ -383,7 +399,7 @@ Double_t  AliTPCtrackFast::CookdEdx(Int_t npoints, Double_t *amp,Double_t f0,Flo
 
   for (Int_t i=0;i<npoints;i++){
     //
-    if (mode==1 && amp[index[i]]==0) {
+    if (dEdxMode==1 && amp[index[i]]==0) {
       continue;
     }
     if (accepted<npoints*f0) continue;
@@ -393,7 +409,7 @@ Double_t  AliTPCtrackFast::CookdEdx(Int_t npoints, Double_t *amp,Double_t f0,Flo
     sum2+= amp[index[i]];
     accepted++;
   }
-  if (mode==-1) return 1-Double_t(above)/Double_t(npoints);
+  if (dEdxMode==-1) return 1-Double_t(above)/Double_t(npoints);
   if (sum0<=0) return 0;
   return sum1/sum0;
 }
@@ -403,7 +419,7 @@ void AliTPCtrackFast::Simul(const char* fname, Int_t ntracks){
   // 
   //
   AliTPCtrackFast fast;
-  TTreeSRedirector cstream(fname,"recreate");
+  TTreeSRedirector *pcstream = new TTreeSRedirector(fname,"recreate");
   for (Int_t itr=0; itr<ntracks; itr++){
     //
     fast.fMNprim=(10.+100*gRandom->Rndm());
@@ -417,11 +433,12 @@ void AliTPCtrackFast::Simul(const char* fname, Int_t ntracks){
     fast.fN  = 160;
     fast.MakeTrack();
     if (itr%100==0) printf("%d\n",itr);
-    cstream<<"simulTrack"<<
+    (*pcstream)<<"simulTrack"<<
       "tr.="<<&fast<<
       "\n";
   }
   fast.Write("track");
+  delete pcstream;
 }
 
 
index d8e81736d539470234c70e0ba16fa7d4af84445f..93a787e2f58e9b3e06e974a00ef1e96f61ca8ae5 100644 (file)
@@ -142,6 +142,7 @@ UInt_t AliTRDPreprocessor::Process(TMap* dcsAliasMap)
   if ((runType=="PHYSICS") || (runType=="STANDALONE") || (runType=="DAQ")){
     // DCS
     if(ProcessDCS(dcsAliasMap)) return 1;
+    /*
     if(runType=="PHYSICS"){
       // HLT if On
       //TString runPar = GetRunParameter("HLTStatus");
@@ -156,9 +157,8 @@ UInt_t AliTRDPreprocessor::Process(TMap* dcsAliasMap)
        ExtractDriftVelocityDAQ(); // for testing!
       }
     }
-    //if((runType=="PHYSICS") || (runType=="STANDALONE")) {
-      //      if(ExtractHalfChamberStatusDAQ()) return 1;
-    //}
+    */
+   
   }
   
   return 0;  
index 1f47c83015e1a60fe471022c833880bd80e14719..ce3c1c3fe317a8bcbae60cf1f87d3198fc363f8c 100644 (file)
@@ -52,6 +52,9 @@
 
 ClassImp(AliTRDReconstructor)
 
+Int_t    AliTRDReconstructor::fgStreamLevel     = 1;        // stream (debug) level
+
+
 AliESDTrdTrigger AliTRDReconstructor::fgTriggerFlags;
 AliTRDonlineTrackMatching AliTRDReconstructor::fgOnlineTrackMatcher;
 TClonesArray *AliTRDReconstructor::fgClusters = NULL;
@@ -139,7 +142,7 @@ AliTRDReconstructor::~AliTRDReconstructor()
     delete fgTracks;
     fgTracks = NULL;
   }
-  if(fSteerParam&kOwner){
+  if((fSteerParam&kOwner)||  AliTRDReconstructor::GetStreamLevel()>0){
     for(Int_t itask = 0; itask < AliTRDrecoParam::kTRDreconstructionTasks; itask++)
       if(fDebugStream[itask]) delete fDebugStream[itask];
   }
@@ -164,7 +167,7 @@ void AliTRDReconstructor::Init(){
   if(IsDebugStreaming()){
     for(Int_t task = 0; task < AliTRDrecoParam::kTRDreconstructionTasks; task++){
       TDirectory *savedir = gDirectory;
-      fDebugStream[task] = new TTreeSRedirector(Form("TRD.Debug%s.root", fgTaskNames[task]));
+      fDebugStream[task] = new TTreeSRedirector(Form("TRD.Debug%s.root", fgTaskNames[task]),"recreate");
       savedir->cd();
       SETFLG(fSteerParam, kOwner);
     }
index afb02c1af2b6f66dde73d2fe28ba6bb1f517f8e9..ed87d3fe959673c147092f6b175538366c7ae80f 100644 (file)
@@ -71,7 +71,7 @@ public:
   Bool_t              IsHLT() const              { return fSteerParam&kHLT;}
   Bool_t              IsSeeding() const          { return fSteerParam&kSeeding;}
   Bool_t              IsProcessingTracklets() const { return fSteerParam&kProcTracklets;}
-  Bool_t              IsDebugStreaming() const   { return fSteerParam&kDebug;}
+  Bool_t              IsDebugStreaming() const   { return (fSteerParam&kDebug || AliTRDReconstructor::GetStreamLevel()>0);}
   Bool_t              UseClusterRadialCorrection() const { return fSteerParam&kClRadialCorr;}
 
   static void         Options(UInt_t steer=0);
@@ -82,11 +82,14 @@ public:
  static void         SetTracklets(TClonesArray *tracklets) { fgTracklets = tracklets;}
  static void         SetTracks(TClonesArray *tracks) { fgTracks = tracks;}
   void               SetOption(Option_t *opt);
+  static Int_t GetStreamLevel()               { return fgStreamLevel;}
+  static void  SetStreamLevel(Int_t level) { fgStreamLevel = level;}
 
 private:
   AliTRDReconstructor(const AliTRDReconstructor &r); //Not implemented
   AliTRDReconstructor& operator = (const AliTRDReconstructor&); //Not implemented
   void                ResetContainers() const;
+  static Int_t               fgStreamLevel; // flag for streaming      - for TRD reconstruction
 
   static Char_t const *fgSteerNames[kNsteer];//! steering names
   static Char_t const *fgSteerFlags[kNsteer];//! steering flags
index 0dab1698c2ec3720d2e56020081ee560fbf36734..d0bc0a244937ecada91d5c1296c5530adee2537a 100644 (file)
@@ -491,20 +491,18 @@ Int_t AliTRDrawData::ProduceHcData(AliTRDarrayADC *digits, Int_t side, Int_t det
              }
            }
          }
+       }
          
-         // in case of tracklet writing copy temp data to final buffer
-         if (trackletOn) {
-           if (nw + *tempnw < maxSize) {
-             memcpy(&buf[nw], tempBuffer, *tempnw * sizeof(UInt_t));
-             nw += *tempnw;
-           }
-           else {
-             AliError("Buffer overflow detected");
-           }
+       // in case of tracklet writing copy temp data to final buffer
+       if (trackletOn) {
+         if (nw + *tempnw < maxSize) {
+           memcpy(&buf[nw], tempBuffer, *tempnw * sizeof(UInt_t));
+           nw += *tempnw;
+         }
+         else {
+           AliError("Buffer overflow detected");
          }
-       }
 
-        if (trackletOn) {
          delete [] tempBuffer;
          delete tempof;
           delete tempnw;
index 0716dc7f51cdac723cf015b279dc00655bc7218b..f790fea9c3665259c31d028628dd6051f8102ed6 100644 (file)
@@ -52,6 +52,7 @@ AliTRDrecoParam::AliTRDrecoParam()
   ,fkChi2Y(.25)
   ,fkChi2YSlope(7.73)
   ,fkChi2ZSlope(0.069)
+  ,fChi2Cut(25)
   ,fkChi2YCut(0.5)
   ,fkPhiSlope(10.6)
   ,fkNMeanClusters(20.)
@@ -62,6 +63,7 @@ AliTRDrecoParam::AliTRDrecoParam()
   ,fNumberOfConfigs(3)
   ,fFlags(0)
   ,fRawStreamVersion("DEFAULT")
+  ,fdzdxXcrossFactor(0.)
   ,fMinMaxCutSigma(4.)
   ,fMinLeftRightCutSigma(8.)
   ,fClusMaxThresh(4.5)
@@ -99,6 +101,7 @@ AliTRDrecoParam::AliTRDrecoParam()
   SetImproveTracklets();
   SetLUT();
   SetTailCancelation();
+  SetTrackletParams();
 }
 
 //______________________________________________________________
@@ -121,6 +124,7 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   ,fkChi2Y(ref.fkChi2Y)
   ,fkChi2YSlope(ref.fkChi2YSlope)
   ,fkChi2ZSlope(ref.fkChi2ZSlope)
+  ,fChi2Cut(ref.fChi2Cut)
   ,fkChi2YCut(ref.fkChi2YCut)
   ,fkPhiSlope(ref.fkPhiSlope)
   ,fkNMeanClusters(ref.fkNMeanClusters)
@@ -131,6 +135,7 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   ,fNumberOfConfigs(ref.fNumberOfConfigs)
   ,fFlags(ref.fFlags)
   ,fRawStreamVersion(ref.fRawStreamVersion)
+  ,fdzdxXcrossFactor(ref.fdzdxXcrossFactor)
   ,fMinMaxCutSigma(ref.fMinMaxCutSigma)
   ,fMinLeftRightCutSigma(ref.fMinLeftRightCutSigma)
   ,fClusMaxThresh(ref.fClusMaxThresh)
@@ -147,6 +152,12 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   memcpy(fTCParams, ref.fTCParams, 8*sizeof(Double_t));
   memcpy(fPIDThreshold, ref.fPIDThreshold, AliTRDCalPID::kNMom*sizeof(Double_t));
   memcpy(fStreamLevel, ref.fStreamLevel, kTRDreconstructionTasks * sizeof(Int_t));
+
+  // tracklet params
+  memcpy(fdzdxCorrFactor, ref.fdzdxCorrFactor, 2*sizeof(Double_t));
+  memcpy(fdzdxCorrRCbias, ref.fdzdxCorrRCbias, 2*sizeof(Double_t));
+  memcpy(fYcorrTailCancel, ref.fdzdxCorrRCbias, 6*sizeof(Double_t));
+  memcpy(fS2Ycorr, ref.fS2Ycorr, 2*sizeof(Double_t));
 }
 
 //______________________________________________________________
@@ -175,6 +186,7 @@ AliTRDrecoParam& AliTRDrecoParam::operator=(const AliTRDrecoParam &ref)
   fkChi2Y               = ref.fkChi2Y;
   fkChi2YSlope          = ref.fkChi2YSlope;
   fkChi2ZSlope          = ref.fkChi2ZSlope;
+  fChi2Cut            = ref.fChi2Cut;
   fkChi2YCut            = ref.fkChi2YCut;
   fkPhiSlope            = ref.fkPhiSlope;
   fkNMeanClusters       = ref.fkNMeanClusters;
@@ -185,6 +197,7 @@ AliTRDrecoParam& AliTRDrecoParam::operator=(const AliTRDrecoParam &ref)
   fNumberOfConfigs      = ref.fNumberOfConfigs;
   fFlags                = ref.fFlags;
   fRawStreamVersion     = ref.fRawStreamVersion;
+  fdzdxXcrossFactor     = ref.fdzdxXcrossFactor;
   fMinMaxCutSigma       = ref.fMinMaxCutSigma;
   fMinLeftRightCutSigma = ref.fMinLeftRightCutSigma;
   fClusMaxThresh        = ref.fClusMaxThresh;
@@ -198,6 +211,12 @@ AliTRDrecoParam& AliTRDrecoParam::operator=(const AliTRDrecoParam &ref)
   memcpy(fTCParams, ref.fTCParams, 8*sizeof(Double_t));
   memcpy(fPIDThreshold, ref.fPIDThreshold, AliTRDCalPID::kNMom*sizeof(Double_t));
   memcpy(fStreamLevel, ref.fStreamLevel, kTRDreconstructionTasks * sizeof(Int_t));
+
+  // tracklet params
+  memcpy(fdzdxCorrFactor, ref.fdzdxCorrFactor, 2*sizeof(Double_t));
+  memcpy(fdzdxCorrRCbias, ref.fdzdxCorrRCbias, 2*sizeof(Double_t));
+  memcpy(fYcorrTailCancel, ref.fdzdxCorrRCbias, 6*sizeof(Double_t));
+  memcpy(fS2Ycorr, ref.fS2Ycorr, 2*sizeof(Double_t));
   return *this;
 }
 
@@ -269,6 +288,7 @@ AliTRDrecoParam *AliTRDrecoParam::GetCosmicTestParam()
   par->fSysCovMatrix[1] = 2.; // z direction (1 cm)
   par->fkChi2YSlope     = 0.11853;
   par->fkChi2ZSlope     = 0.04527;
+  par->fkChi2YCut       = 25.;
   par->fkChi2YCut       = 1.;
   par->fkPhiSlope       = 10.; //3.17954;
   par->fkMaxTheta       = 2.1445;
@@ -318,3 +338,42 @@ void AliTRDrecoParam::SetPIDLQslices(Int_t s)
   }
 }
 
+//___________________________________________________
+void  AliTRDrecoParam::SetTrackletParams(Double_t *par)
+{
+  // Load tracklet reconstruction parameters. If none are set use defaults
+  if(par){
+    // correct dzdx for the bias in z
+    fdzdxCorrFactor[0] = par[0];  // !RC 
+    fdzdxCorrFactor[1] = par[1];  // RC
+    // correct dzdx in RC tracklets for the bias in cluster attachment
+    fdzdxCorrRCbias[0] = par[2];   // dz/dx > 0  
+    fdzdxCorrRCbias[1] = par[3];   // dz/dx < 0
+    /// correct x_cross for the bias in dzdx
+    fdzdxXcrossFactor  = par[4];
+    // y linear q/pt correction due to wrong tail cancellation. 
+    fYcorrTailCancel[0][0] = par[5]; fYcorrTailCancel[0][1] = par[6];  // opposite sign !RC
+    fYcorrTailCancel[1][0] = par[7]; fYcorrTailCancel[1][1] = par[8];  // same sign !RC
+    fYcorrTailCancel[2][0] = par[9]; fYcorrTailCancel[2][1] = par[10]; // RC
+    // inflation factor of error parameterization in r-phi due to wrong estimation of residuals. 
+    fS2Ycorr[0] = par[11];  // opposite sign, 
+    fS2Ycorr[1] = par[12];  // same sign
+    
+  } else {
+    // correct dzdx for the bias in z
+    fdzdxCorrFactor[0] = 1.09;  // !RC 
+    fdzdxCorrFactor[1] = 1.05;  // RC
+    // correct dzdx in RC tracklets for the bias in cluster attachment
+    fdzdxCorrRCbias[0] = 0.;     // dz/dx > 0  
+    fdzdxCorrRCbias[1] = -0.012; // dz/dx < 0
+    /// correct x_cross for the bias in dzdx
+    fdzdxXcrossFactor  = 0.14;
+    // y linear q/pt correction due to wrong tail cancellation. 
+    fYcorrTailCancel[0][0] = 0.;   fYcorrTailCancel[0][1] = 0.027;  // opposite sign !RC
+    fYcorrTailCancel[1][0] = 0.04; fYcorrTailCancel[1][1] = 0.027;  // same sign !RC
+    fYcorrTailCancel[2][0] = 0.013;fYcorrTailCancel[2][1] = 0.018;  // RC
+    // inflation factor of error parameterization in r-phi due to wrong estimation of residuals. 
+    fS2Ycorr[0] = 5.;  // opposite sign, 
+    fS2Ycorr[1] = 10;  // same sign
+  }
+}
index 2c6b587b3d95c6a024dc6eb82607e714db250c9e..d4c9ceefebeda986c12cedbeb448950389a61eb1 100644 (file)
@@ -56,14 +56,15 @@ public:
   Double_t GetChi2Z() const                 { return fkChi2Z;    }
   Double_t GetChi2YSlope() const            { return fkChi2YSlope; }
   Double_t GetChi2ZSlope() const            { return fkChi2ZSlope; }
+       Double_t GetChi2Cut() const              { return fChi2Cut; }
        Double_t GetChi2YCut() const              { return fkChi2YCut; }
   Double_t GetPhiSlope() const              { return fkPhiSlope;   }
   Float_t  GetNClusters() const;
   Double_t GetNMeanClusters() const         { return fkNMeanClusters; }
   Double_t GetNSigmaClusters() const        { return fkNSigmaClusters; }
   Double_t GetFindableClusters() const      { return fkFindable; }
-  inline Int_t    GetPIDLQslices() const;
-  inline AliTRDPIDResponse::ETRDPIDMethod GetPIDmethod() const;
+  Int_t    GetPIDLQslices() const;
+  AliTRDPIDResponse::ETRDPIDMethod GetPIDmethod() const;
   Double_t GetMaxTheta() const              { return fkMaxTheta; }
   Double_t GetMaxPhi() const                { return fkMaxPhi;   }
   Double_t GetPlaneQualityThreshold() const { return fkPlaneQualityThreshold; }
@@ -76,9 +77,9 @@ public:
   Double_t GetRoad2z() const                { return fkRoad2z;   }
   Double_t GetRoadzMultiplicator() const    { return fkRoadzMultiplicator; }
   Double_t GetTrackLikelihood() const       { return fkTrackLikelihood;       }
-  inline void GetSysCovMatrix(Double_t *sys) const;  
-  inline void GetTCParams(Double_t *par) const;
-  inline Int_t GetStreamLevel(ETRDReconstructionTask task) const;
+  void GetSysCovMatrix(Double_t *sys) const;  
+  void GetTCParams(Double_t *par) const;
+  Int_t GetStreamLevel(ETRDReconstructionTask task) const;
   const TString *GetRawStreamVersion() const{ return &fRawStreamVersion; };
   Double_t GetMinMaxCutSigma() const        { return fMinMaxCutSigma;     };
   Double_t GetMinLeftRightCutSigma() const  { return fMinLeftRightCutSigma;  };
@@ -89,6 +90,13 @@ public:
   Int_t    GetNumberOfPostsamples() const   { return fNumberOfPostsamples;}
   Int_t    GetNumberOfSeedConfigs() const   { return fNumberOfConfigs;}
   Int_t    GetRecEveryNTB() const           { return fRecEveryNTB; }
+  // Tracklet parameters
+  Double_t GetCorrDZDXbiasRC(Bool_t dzdx) const { return fdzdxCorrRCbias[dzdx];}
+  Double_t GetCorrDZDX(Bool_t rc) const     { return fdzdxCorrFactor[rc];}
+  Double_t GetCorrDZDXxcross() const        { return fdzdxXcrossFactor;}
+  void GetYcorrTailCancel(Int_t it, Double_t par[2]) const;
+  Double_t GetS2Ycorr(Bool_t sgn) const     { return fS2Ycorr[sgn];}
+
   Bool_t   IsArgon() const                  { return TESTBIT(fFlags, kDriftGas); }
   Bool_t   IsCheckTimeConsistency() const   { return kCheckTimeConsistency;}
   Bool_t   IsOverPtThreshold(Double_t pt) const {return Bool_t(pt>fkPtThreshold);}
@@ -116,7 +124,7 @@ public:
   void     SetLUT(Bool_t b=kTRUE)                             {if(b) SETBIT(fFlags, kLUT); else CLRBIT(fFlags, kLUT);}
   void     SetGAUS(Bool_t b=kTRUE)                            {if(b) SETBIT(fFlags, kGAUS); else CLRBIT(fFlags, kGAUS);}
   void     SetPIDNeuralNetwork(Bool_t b=kTRUE)                {if(b) SETBIT(fFlags, kSteerPID); else CLRBIT(fFlags, kSteerPID);}
-  inline void  SetPIDmethod(AliTRDPIDResponse::ETRDPIDMethod method);
+  void  SetPIDmethod(AliTRDPIDResponse::ETRDPIDMethod method);
   void     SetPIDLQslices(Int_t s);
   void     SetTailCancelation(Bool_t b=kTRUE)                 {if(b) SETBIT(fFlags, kTailCancelation); else CLRBIT(fFlags, kTailCancelation);}
   void     SetXenon(Bool_t b = kTRUE)                         {if(b) CLRBIT(fFlags, kDriftGas); else SETBIT(fFlags, kDriftGas);}
@@ -128,6 +136,7 @@ public:
   void     SetChi2Z(Double_t chi2)                            {fkChi2Z = chi2;}
   void     SetChi2YSlope(Double_t chi2YSlope)                 {fkChi2YSlope = chi2YSlope;}
   void     SetChi2ZSlope(Double_t chi2ZSlope)                 {fkChi2ZSlope = chi2ZSlope;}
+       void       SetChi2Cut(Double_t chi2Cut)                      {fChi2Cut = chi2Cut; }
        void       SetChi2YCut(Double_t chi2Cut)                      {fkChi2YCut = chi2Cut; }
   void     SetPhiSlope(Double_t phiSlope)                     {fkPhiSlope = phiSlope;}
   void     SetNMeanClusters(Double_t meanNclusters)           {fkNMeanClusters = meanNclusters;}
@@ -138,12 +147,13 @@ public:
   void     SetMinLeftRightCutSigma(Float_t minLeftRightCutSigma) { fMinLeftRightCutSigma   = minLeftRightCutSigma; };
   void     SetClusMaxThresh(Float_t thresh)                   { fClusMaxThresh   = thresh; };
   void     SetClusSigThresh(Float_t thresh)                   { fClusSigThresh   = thresh; };
-  inline void SetPIDThreshold(Double_t *pid);
+  void     SetPIDThreshold(Double_t *pid);
   void     SetPtThreshold(Double_t pt) {fkPtThreshold = pt;}
   void     SetNexponential(Int_t nexp)                        { fTCnexp          = nexp;   };
-  inline void SetTCParams(Double_t *par);
-  inline void SetStreamLevel(ETRDReconstructionTask task, Int_t level);
-  inline void SetSysCovMatrix(Double_t *sys);
+  void     SetTCParams(Double_t *par);
+  void     SetTrackletParams(Double_t *par=NULL);
+  void     SetStreamLevel(ETRDReconstructionTask task, Int_t level);
+  void     SetSysCovMatrix(Double_t *sys);
   void     SetNumberOfPresamples(Int_t n)                     { fNumberOfPresamples = n;}
   void     SetNumberOfPostsamples(Int_t n)                    { fNumberOfPostsamples = n;}
   void     SetRecEveryTwoTB()                                 { fRecEveryNTB = 2; fkNMeanClusters = 10; }
@@ -170,6 +180,7 @@ private:
   Double_t  fkChi2Y;                 // Max chi2 on the y direction for seeding clusters Rieman fit
   Double_t  fkChi2YSlope;            // Slope of the chi2-distribution in y-direction
   Double_t  fkChi2ZSlope;            // Slope of the chi2-distribution in z-direction
+  Double_t  fChi2Cut;               // Cut on the Chi2 track/tracklet 0 used to diecide if the kalman track should be updated
   Double_t  fkChi2YCut;                                                         // Cut on the Chi2 in y-direction in the likelihood filter
   Double_t  fkPhiSlope;              // Slope of the distribution of the deviation between track angle and tracklet angle
   Double_t  fkNMeanClusters;         // Mean number of clusters per tracklet
@@ -189,6 +200,13 @@ private:
   // Raw Reader Params
   TString   fRawStreamVersion;       // Raw Reader version
 
+  // Tracklet parameters
+  Double_t  fdzdxCorrFactor[2];      // correction of dzdx estimation due to z bias; [0] for !RC, [1] for RC
+  Double_t  fdzdxCorrRCbias[2];      // correction of dzdx estimation bias for RC; [0] for dz/dx>0, [1] for dz/dx<0
+  Double_t  fdzdxXcrossFactor;       // bias in dzdx of estimated xcross [RC]
+  Double_t  fYcorrTailCancel[3][2];  // y linear q/pt correction due to wrong tail cancellation. [0] opposite sign !RC, [1] same sign !RC, [2] RC
+  Double_t  fS2Ycorr[2];             // inflation factor of error parameterization in r-phi due to wrong estimation of residuals. [0] opposite sign, [1] same sign
+  
   // Clusterization parameter
   Double_t  fMinMaxCutSigma;         // Threshold sigma noise pad middle
   Double_t  fMinLeftRightCutSigma;   // Threshold sigma noise sum pad
@@ -202,7 +220,7 @@ private:
   Int_t     fNumberOfPresamples;     // number of presamples 
   Int_t     fNumberOfPostsamples;     // number of postsamples 
 
-  ClassDef(AliTRDrecoParam, 12)       // Reconstruction parameters for TRD detector
+  ClassDef(AliTRDrecoParam, 13)       // Reconstruction parameters for TRD detector
 
 };
 
@@ -254,6 +272,14 @@ inline void AliTRDrecoParam::SetTCParams(Double_t *par)
   memcpy(fTCParams, par, 8*sizeof(Double_t));
 }
 
+
+//___________________________________________________
+inline void AliTRDrecoParam::GetYcorrTailCancel(Int_t it, Double_t par[2]) const
+{
+  if(it<0||it>2) return;
+  par[0] = fYcorrTailCancel[it][0]; par[1] = fYcorrTailCancel[it][1]; 
+}
+
 //___________________________________________________
 inline Int_t AliTRDrecoParam::GetPIDLQslices() const
 {
index 2babc75a58f5b54d2273c2d0115891ff1e62e620..b718f5e860a5fe5a42b1e42cc2c855fb2912942a 100644 (file)
@@ -13,7 +13,7 @@
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
 
-/* $Id$ */
+/* $Id: AliTRDseedV1.cxx 60233 2013-01-10 09:04:08Z abercuci $ */
 
 ////////////////////////////////////////////////////////////////////////////
 ////
@@ -36,6 +36,7 @@
 ////////////////////////////////////////////////////////////////////////////
 
 #include "TMath.h"
+#include "TGeoManager.h"
 #include "TTreeStream.h"
 #include "TGraphErrors.h"
 
@@ -538,46 +539,148 @@ Int_t AliTRDseedV1::GetChargeGaps(Float_t sz[kNtb], Float_t pos[kNtb], Int_t isz
 
 
 //____________________________________________________________________
-Bool_t AliTRDseedV1::GetEstimatedCrossPoint(Float_t &x, Float_t &z) const
+Double_t AliTRDseedV1::EstimatedCrossPoint(AliTRDpadPlane *pp)
 {
-// Algorithm to estimate cross point in the x-z plane for pad row cross tracklets.
-// Returns true in case of success.
-  if(!IsRowCross()) return kFALSE;
+// Algorithm to estimate cross point in the x-z plane for pad row cross tracklets or the z coordinate of pad row without pad row cross in the local chamber coordinates.
+// Returns variance of the radial offset from anode wire in case of raw cross or 0 otherwise.
 
-  x=0.; z=0.;
+  Int_t row[] = {-1, -1};
+  Double_t zoff(0.5 * (pp->GetRow0() + pp->GetRowEnd())), sx(0.), mean(0.5*pp->GetNrows()-0.5);
   AliTRDcluster *c(NULL);
-  // Find radial range for first row
-  Float_t x1[] = {0., 1.e3};
-  for(int ic=0; ic<kNtb; ic++){
-    if(!(c=fClusters[ic])) continue;
-    if(!c->IsInChamber()) continue;
-    if(c->GetX() <= x1[1]) x1[1] = c->GetX();
-    if(c->GetX() >= x1[0]) x1[0] = c->GetX();
-    z=c->GetZ();
+  fS2Y = 0.;
+  
+  if(!IsRowCross()){ 
+    for(int ic=0; ic<kNtb; ic++){
+      if(!(c=fClusters[ic])) continue;
+      if(!c->IsInChamber()) continue;
+      row[0]   = c->GetPadRow();
+      fZfit[0] = Int_t(mean-row[0])*pp->GetLengthIPad() + 
+                 0.5*(mean-row[0]>0.?1.:-1.)*(row[0]>0&&row[0]<pp->GetNrows()-1?pp->GetLengthIPad():pp->GetLengthOPad());      
+      break;
+    }
+  } else {  
+    Float_t tbm[2] = {0.}; // mean value of time bin in rows
+    Int_t tb[kNtb]={0}, //array of time bins from first row
+          nc[2] = {0},  // no. of clusters in rows
+          mc(0);  // no. of common clusters
+    Bool_t w[2] = {kFALSE, kFALSE};   // acceptance flag for rows
+    // Find radial range for first row
+    for(int ic(0); ic<kNtb; ic++){
+      tb[ic]= -1;
+      if(!(c=fClusters[ic]) || !c->IsInChamber()) continue;
+      if(row[0]<0) row[0] = c->GetPadRow();
+      tb[nc[0]++] = ic; tbm[0] += ic;
+    }
+    if(nc[0]>2){
+      tbm[0] /= nc[0];
+      w[0] = kTRUE;
+    }
+    // Find radial range for second row
+    for(int ic(kNtb), jc(0); ic<kNclusters; ic++, jc++){
+      if(!(c=fClusters[ic]) || !c->IsInChamber()) continue;
+      if(row[1]<0) row[1] = c->GetPadRow();
+      tbm[1] += jc; nc[1]++;
+      for(Int_t kc(0); kc<nc[0]; kc++) 
+        if(tb[kc]==jc){
+          tb[kc] += 100; // mark common cluster
+          mc++;
+          break;
+        }
+    }
+    if(nc[1]>2){
+      tbm[1] /= nc[1];
+      w[1] = kTRUE;
+    }
+    //printf("0 : %f[%2d] 1 : %f[%2d] mc[%d]\n", tbm[0], nc[0], tbm[1], nc[1], mc);
+    if(!w[0] && !w[1]){
+      AliError("Too few clusters to estimate tracklet.");
+      return -1;
+    }
+    if(!w[0] || !w[1]){ 
+      SetBit(kRowCross, kFALSE); // reset RC bit
+      if(w[1]) row[0] = row[1];
+      fZfit[0] = Int_t(mean-row[0])*pp->GetLengthIPad() + 
+                 0.5*(mean-row[0]>0.?1.:-1.)*(row[0]>0&&row[0]<pp->GetNrows()-1?pp->GetLengthIPad():pp->GetLengthOPad());      
+    }else{ // find the best matching timebin 
+      fZfit[0] = Int_t(mean-0.5*(row[0]+row[1]))*pp->GetLengthIPad(); 
+      Int_t itb(0), dtb(0);
+      if(!mc) { // no common range
+        itb = Int_t(0.5*(tbm[0] + tbm[1]));
+        dtb = Int_t(0.5*TMath::Abs(tbm[0] - tbm[1])); // simple parameterization of the cluster gap
+      } else {
+        Double_t rmax(100.); Int_t itbStart(-1), itbStop(0);
+        // compute distance from 
+        for(Int_t jc(0); jc<nc[0]; jc++){
+          if(tb[jc] < 100) continue;
+          Int_t ltb(tb[jc]-100);
+          Double_t r = (1. - ltb/tbm[0])*(1. - ltb/tbm[1]);
+          //printf("tb[%2d] dr[%f %f %f] rmax[%f]\n", ltb, r, 1. - ltb/tbm[0], 1. - ltb/tbm[1], rmax);
+          if(TMath::Abs(r)<rmax){ rmax = TMath::Abs(r); itb = ltb; }
+          if(itbStart<0) itbStart = ltb;
+          itbStop = ltb;
+        } 
+        dtb = itbStop-itbStart+1;
+      }
+      AliTRDCommonParam *cp = AliTRDCommonParam::Instance(); 
+      Double_t freq(cp?cp->GetSamplingFrequency():10.);
+      fS2Y = ((itb-0.5)/freq - fT0 - 0.189)*fVD; // xOff
+      sx   = dtb*0.288675134594812921/freq; sx *= sx; sx += 1.56e-2; sx *= fVD*fVD;
+    }    
   }
-  if((x1[0] - x1[1])<1.e-5) return kFALSE;
 
-  // Find radial range for second row
-  Bool_t kZ(kFALSE);
-  Float_t x2[] = {0., 1.e3};
-  for(int ic=kNtb; ic<kNclusters; ic++){
-    if(!(c=fClusters[ic])) continue;
-    if(!c->IsInChamber()) continue;
-    if(c->GetX() <= x2[1]) x2[1] = c->GetX();
-    if(c->GetX() >= x2[0]) x2[0] = c->GetX();
-    if(!kZ){
-      z+=c->GetZ();
-      z*=0.5;
-      kZ=kTRUE;
+  // estimate dzdx
+  Float_t dx(fX0-fS2Y);
+  fZfit[1] = (fZfit[0]+zoff)/dx; 
+
+  // correct dzdx for the bias
+  UnbiasDZDX(IsRowCross());
+  if(IsRowCross()){
+    // correct x_cross/sigma(x_cross) for the bias in dzdx
+    const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();
+    if(recoParam){ 
+      fS2Y += recoParam->GetCorrDZDXxcross()*TMath::Abs(fZfit[1]);
+      sx   += recoParam->GetCorrDZDXxcross()*recoParam->GetCorrDZDXxcross()*GetS2DZDX(fZfit[1]);
     }
+    // correct sigma(x_cross) for the width of the crossing area
+    sx   += GetS2XcrossDZDX(TMath::Abs(fZfit[1]));
+    
+    // estimate z and error @ anode wire
+    fZfit[0] += fZfit[1]*fS2Y;
+    fS2Z  = fZfit[1]*fZfit[1]*sx+fS2Y*fS2Y*GetS2DZDX(fZfit[1]); 
   }
-  if((x2[0] - x2[1])<1.e-5) return kFALSE;
+  return sx;
+}
 
-  // Find intersection of the 2 radial regions
-  x = 0.5*((x1[0]+x1[1] > x2[0]+x2[1]) ? (x1[1]+x2[0]) : (x1[0]+x2[1]));
-  return kTRUE;
+//____________________________________________________________________
+void AliTRDseedV1::UnbiasDZDX(Bool_t rc)
+{
+  // correct dzdx for the bias in z according to MC
+  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();
+  if(!recoParam) return;
+  fZfit[1] *= recoParam->GetCorrDZDX(rc);
+  if(rc) fZfit[1] += recoParam->GetCorrDZDXbiasRC(fZfit[1]<0);
 }
 
+//____________________________________________________________________
+Double_t AliTRDseedV1::UnbiasY(Bool_t rc, Bool_t sgn, Int_t chg)
+{
+// correct y coordinate for tail cancellation. This should be fixed by considering TC as a function of q/pt. 
+//  rc : TRUE if tracklet crosses rows
+// sgn : TRUE if track has same sign with magnetic field
+// chg : -1 for negative particles, +1 for the rest
+  
+  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();
+  if(!recoParam) return 0.;
+  Double_t par[2]={0.};
+  if(rc) recoParam->GetYcorrTailCancel(2, par);
+  else{
+    if(sgn && 1./fPt > 1.5)  recoParam->GetYcorrTailCancel(1, par);
+    else if(!sgn)  recoParam->GetYcorrTailCancel(0, par);
+  }
+  return par[0]+par[1]*chg/fPt;
+}
+
+
 //____________________________________________________________________
 Float_t AliTRDseedV1::GetQperTB(Int_t tb) const
 {
@@ -797,7 +900,7 @@ Float_t AliTRDseedV1::GetQuality(Bool_t kZcorr) const
 }
 
 //____________________________________________________________________
-void AliTRDseedV1::GetCovAt(Double_t x, Double_t *cov) const
+void AliTRDseedV1::GetCovAt(Double_t /*x*/, Double_t *cov) const
 {
 // Computes covariance in the y-z plane at radial point x (in tracking coordinates) 
 // and returns the results in the preallocated array cov[3] as :
@@ -844,8 +947,8 @@ void AliTRDseedV1::GetCovAt(Double_t x, Double_t *cov) const
 //
 
 
-  Double_t xr     = fX0-x; 
-  Double_t sy2    = fCov[0] +2.*xr*fCov[1] + xr*xr*fCov[2];
+  //Double_t xr     = fX0-x; 
+  Double_t sy2    = fCov[0];// +2.*xr*fCov[1] + xr*xr*fCov[2];
   Double_t sz2    = fS2Z;
   //GetPadLength()*GetPadLength()/12.;
 
@@ -853,8 +956,8 @@ void AliTRDseedV1::GetCovAt(Double_t x, Double_t *cov) const
   if(fkReconstructor){
     Double_t sys[15]; memset(sys, 0, 15*sizeof(Double_t));
     fkReconstructor->GetRecoParam()->GetSysCovMatrix(sys);
-    sy2 += sys[0];
-    sz2 += sys[1];
+//    sy2 += sys[0];
+//    sz2 += sys[1];
   }
 
   // rotate covariance matrix if no RC
@@ -864,9 +967,9 @@ void AliTRDseedV1::GetCovAt(Double_t x, Double_t *cov) const
     cov[0] = (sy2+t2*sz2)*correction;
     cov[1] = GetTilt()*(sz2 - sy2)*correction;
     cov[2] = (t2*sy2+sz2)*correction;
-  } else {
-    cov[0] = sy2; cov[1] = 0.; cov[2] = sz2;
-  }
+   } else {
+     cov[0] = sy2; cov[1] = 0.; cov[2] = sz2;
+   }
 
   AliDebug(4, Form("C(%6.1f %+6.3f %6.1f)  RC[%c]", 1.e4*TMath::Sqrt(cov[0]), cov[1], 1.e4*TMath::Sqrt(cov[2]), IsRowCross()?'y':'n'));
 }
@@ -1303,7 +1406,8 @@ Bool_t  AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_
 
   // initialize debug streamer
   TTreeSRedirector *pstreamer(NULL);
-  if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
+  if((recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming())||
+     AliTRDReconstructor::GetStreamLevel()>30) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
   if(pstreamer){
     // save config. for calibration
     TVectorD vdy[2], vdx[2], vs2[2];
@@ -1330,7 +1434,7 @@ Bool_t  AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_
         << "\n";
     vdx[0].Clear(); vdy[0].Clear(); vs2[0].Clear();
     vdx[1].Clear(); vdy[1].Clear(); vs2[1].Clear();
-    if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 4){    
+    if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 4 ||AliTRDReconstructor::GetStreamLevel()>4){    
       Int_t idx(idxRow[1]);
       if(idx<0){ 
         for(Int_t ir(0); ir<kNrows; ir++){ 
@@ -1432,7 +1536,10 @@ Bool_t  AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_
       }
     }
   }
-  if(!pstreamer && recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 2 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
+  if(!pstreamer && 
+     ( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 2 && fkReconstructor->IsDebugStreaming()) ||
+       AliTRDReconstructor::GetStreamLevel()>2 ) 
+     ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
   if(pstreamer){
     // save config. for calibration
     TVectorD vidx, vn, vx, vy, vr, vs, vsm, vp, vf;
@@ -1493,7 +1600,10 @@ Bool_t  AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_
   if(f[is]<1.e-2){
     AliDebug(1, Form("Seed   seg[%d] row[%2d] n[%2d] f[%f]<0.01.", is, idxRow[0], n[0][is], f[is]));
     SetErrorMsg(kAttachClAttach);
-    if(!pstreamer && recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
+    if(!pstreamer && 
+       ( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) ||
+        AliTRDReconstructor::GetStreamLevel()>1 ) 
+       ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
     if(pstreamer){
       UChar_t stat(0);
       if(IsKink()) SETBIT(stat, 1);
@@ -1667,7 +1777,10 @@ Bool_t  AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_
   // clear local copy of clusters
   for(Int_t ir(0); ir<kNrows; ir++) clst[ir].Clear();
   
-  if(!pstreamer && recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
+  if(!pstreamer && 
+     ((recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) ||
+      AliTRDReconstructor::GetStreamLevel()>1 )
+     ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
   if(pstreamer){
     UChar_t stat(0);
     if(IsKink()) SETBIT(stat, 1);
@@ -2048,16 +2161,20 @@ Bool_t AliTRDseedV1::Fit(UChar_t opt)
 
 
 //____________________________________________________________________
-Bool_t AliTRDseedV1::FitRobust(Bool_t chg)
+Bool_t AliTRDseedV1::FitRobust(AliTRDpadPlane *pp, Bool_t sgn, Int_t chg, Int_t opt)
 {
 //
 // Linear fit of the clusters attached to the tracklet
+//   The fit is performed in local chamber coordinates (27.11.2013) to take into account correctly the misalignment
+//   Also the pad row cross is checked here and some background is removed
 //
 // Author 
 // A.Bercuci <A.Bercuci@gsi.de>
 
   TTreeSRedirector *pstreamer(NULL);
-  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();   if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
+  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();   
+  if( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming()) ||
+    AliTRDReconstructor::GetStreamLevel()>3 ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
 
   // factor to scale y pulls.
   // ideally if error parametrization correct this is 1.
@@ -2072,56 +2189,149 @@ Bool_t AliTRDseedV1::FitRobust(Bool_t chg)
     if(!attach){ 
       AliWarning("No usable AttachClusters calib object.");
     } else { 
-      kScalePulls = attach->GetScaleCov();//*lyScaler;
+      //kScalePulls = attach->GetScaleCov();//*lyScaler;
     }
     // Retrieve chamber status
     SetChmbGood(calibration->IsChamberGood(fDet));
     if(!IsChmbGood()) kScalePulls*=10.;
   }  
-  Double_t xc[kNclusters], yc[kNclusters], sy[kNclusters];
-  Int_t n(0),           // clusters used in fit 
-        row[]={-1, 0}; // pad row spanned by the tracklet
+  AliTRDCommonParam *cp = AliTRDCommonParam::Instance(); 
+  Double_t freq(cp?cp->GetSamplingFrequency():10.);
+      
+  // evaluate locally z and dzdx from TRD only information
+  if(EstimatedCrossPoint(pp)<0.) return kFALSE;
+  
+  //printf("D%03d RC[%c] dzdx[%f %f] opt[%d]\n", fDet, IsRowCross()?'y':'n', fZref[1], fZfit[1], opt);
+  Double_t //xchmb = 0.5 * AliTRDgeometry::AmThick() + AliTRDgeometry::DrThick(),
+           //zchmb = 0.5 * (pp->GetRow0() + pp->GetRowEnd()),
+           z0(0.5 * (pp->GetRow0() + pp->GetRowEnd()) + fZfit[0]),  
+           DZ(pp->GetRow0() - pp->GetRowEnd() - pp->GetAnodeWireOffset() + fZfit[0]),
+           z, d(-1.);
+  Double_t xc[kNclusters], yc[kNclusters], dz(0.), dzdx(0.), 
+           s2dz(0.), s2dzdx(0.), sy[kNclusters],
+           s2x((8.33e-2/freq/freq+1.56e-2)*fVD*fVD),  // error of 1tb + error of mean time (TRF)
+           t2(fPad[2]*fPad[2]),
+           cs(0.);
+  Int_t n(0),          // clusters used in fit 
+        row[]={-1, -1},// pad row spanned by the tracklet
+        col(-1);       // pad column of current cluster
+  Double_t ycorr(UnbiasY(IsRowCross(), sgn, chg)),
+           kS2Ycorr(recoParam->GetS2Ycorr(sgn));
+        
   AliTRDcluster *c(NULL), **jc = &fClusters[0];
   for(Int_t ic=0; ic<kNtb; ic++, ++jc) {
     if(!(c = (*jc))) continue;
     if(!c->IsInChamber()) continue;
     if(row[0]<0){ 
-      fZfit[0] = c->GetZ();
-      fZfit[1] = 0.;
       row[0] = c->GetPadRow();
+      z      = pp->GetRowPos(row[0]) - 0.5*pp->GetRowSize(row[0]);
+      switch(opt){ 
+        case 0: // no dz correction (only for RC tracklet) and dzdx from chamber position assuming primary
+          dzdx  = IsRowCross()?fZfit[1]:0.; 
+          s2dzdx= IsRowCross()?GetS2DZDX(dzdx):0.;
+          dz    = IsRowCross()?(z - z0):0.;  
+          s2dz  = IsRowCross()?fS2Z:0.;
+          break;
+        case 1: // dz correction only for RC tracklet and dzdx from reference
+          dzdx = fZref[1];
+          dz   = IsRowCross()?(z - z0):0.; 
+          break;
+        case 2: // full z correction (z0 & dzdx from reference)
+          dzdx = fZref[1];
+          dz   = c->GetZ()-fZref[0]; 
+          break;
+        default:
+          AliError(Form("Wrong option fit %d !", opt));
+          break;
+      }    
+    }
+    if(col != c->GetPadCol()){
+      col = c->GetPadCol();
+      cs  = pp->GetColSize(col);
+    }
+    //Use local cluster coordinates - the code should be identical with AliTRDtransform::Transform() !!!
+    //A.Bercuci 27.11.13
+    xc[n] = c->GetXloc(fT0, fVD); // c->GetX();
+    yc[n] = c->GetYloc(pp->GetColPos(col) + .5*cs, fS2PRF, cs) - xc[n]*fExB; //c->GetY();
+    yc[n]-= fPad[2]*(dz+xc[n]*dzdx);
+    yc[n]-= ycorr;
+    if(IsRowCross()){ // estimate closest distance to anode wire
+      d = DZ-xc[n]*dzdx;
+      d -= ((Int_t)(2 * d)) / 2.0;
+      if (d > 0.25) d  = 0.5 - d;
     }
-    xc[n]  = c->GetX();
-    yc[n]  = c->GetY();
-    sy[n]  = c->GetSigmaY2()>0?(TMath::Min(TMath::Sqrt(c->GetSigmaY2()), 0.08)):0.08;
+    // recalculate cluster error from knowledge of the track inclination in the bending plane 
+    // and eventually distance to anode wire
+    c->SetSigmaY2(fS2PRF, fDiffT, fExB, xc[n], d, fYref[1]);
+    s2x = c->GetSX(c->GetLocalTimeBin(), d); s2x*=s2x;
+    sy[n] = c->GetSigmaY2()>0?(TMath::Min(Double_t(c->GetSigmaY2()), 6.4e-3)):6.4e-3;
+    sy[n]+= t2*(s2dz+xc[n]*xc[n]*s2dzdx+dzdx*dzdx*s2x);
+    sy[n] = TMath::Sqrt(sy[n]);
     n++;
   }
-  Double_t corr = fPad[2]*fPad[0];
-
   for(Int_t ic=kNtb; ic<kNclusters; ic++, ++jc) {
     if(!(c = (*jc))) continue;
     if(!c->IsInChamber()) continue;
-    if(row[1]==0) row[1] = c->GetPadRow() - row[0];
-    xc[n]  = c->GetX();
-    yc[n]  = c->GetY() + corr*row[1];
-    sy[n]  = c->GetSigmaY2()>0?(TMath::Min(TMath::Sqrt(c->GetSigmaY2()), 0.08)):0.08;
+    if(row[1]<0){ 
+      row[1] = c->GetPadRow();
+      z      = pp->GetRowPos(row[1]) - 0.5*pp->GetRowSize(row[1]);
+      switch(opt){ 
+        case 0: // no dz correction (only for RC tracklet) and dzdx from chamber position assuming primary
+          //dzdx = fZfit[1];
+          dz   = z - z0; 
+          break;
+        case 1: // dz correction only for RC tracklet and dzdx from reference
+          //dzdx = fZref[1];
+          dz   = z - z0; 
+          break;
+        case 2: // full z correction (z0 & dzdx from reference)
+          //dzdx = fZref[1];
+          dz   = c->GetZ()-fZref[0]; 
+          break;
+        default:
+          AliError(Form("Wrong option fit %d !", opt));
+          break;
+      }    
+    }  
+    if(col != c->GetPadCol()){
+      col = c->GetPadCol();
+      cs  = pp->GetColSize(col);
+    }
+    //Use local cluster coordinates - the code should be identical with AliTRDtransform::Transform() !!!
+    //A.Bercuci 27.11.13
+    xc[n] = c->GetXloc(fT0, fVD); // c->GetX();
+    yc[n] = c->GetYloc(pp->GetColPos(col) + .5*cs, fS2PRF, cs) - xc[n]*fExB ;
+    yc[n]-= fPad[2]*(dz+xc[n]*dzdx);
+    yc[n]-= ycorr;
+
+    d = DZ-xc[n]*dzdx;
+    d -= ((Int_t)(2 * d)) / 2.0;
+    if (d > 0.25) d  = 0.5 - d;
+    c->SetSigmaY2(fS2PRF, fDiffT, fExB, xc[n], d, fYref[1]);
+    s2x = c->GetSX(c->GetLocalTimeBin(), d); s2x*=s2x;
+    sy[n] = c->GetSigmaY2()>0?(TMath::Min(Double_t(c->GetSigmaY2()), 6.4e-3)):6.4e-3;
+    sy[n]+= t2*(s2dz+xc[n]*xc[n]*s2dzdx+dzdx*dzdx*s2x);
+    sy[n] = TMath::Sqrt(sy[n]);
     n++;
   }
+
   UChar_t status(0);
-  Double_t par[3] = {0.,0.,fX0}, cov[3];
+  // the ref radial position is set close to the minimum of 
+  // the y variance of the tracklet
+  fX   = 0.;//set reference to anode wire
+  Double_t par[3] = {0.,0.,fX}, cov[3];
   if(!AliTRDtrackletOflHelper::Fit(n, xc, yc, sy, par, 1.5, cov)){ 
     AliDebug(1, Form("Tracklet fit failed D[%03d].", fDet));
     SetErrorMsg(kFitCl);
     return kFALSE; 
   }
-  fYfit[0] = par[0];
-  fYfit[1] = par[1];
+  fYfit[0] = par[0] - fX * par[1];
+  fYfit[1] = -par[1];
+  //printf(" yfit: %f [%f] x[%e] dydx[%f]\n", fYfit[0], par[0], fX, par[1]);
   // store covariance
-  fCov[0] = kScalePulls*cov[0]; // variance of y0
+  fCov[0] = kS2Ycorr*cov[0]; // variance of y0
   fCov[1] = kScalePulls*cov[2]; // covariance of y0, dydx
   fCov[2] = kScalePulls*cov[1]; // variance of dydx
-  // the ref radial position is set at the minimum of 
-  // the y variance of the tracklet
-  fX   = 0.;//-fCov[1]/fCov[2];
   // check radial position
   Float_t xs=fX+.5*AliTRDgeometry::CamHght();
   if(xs < 0. || xs > AliTRDgeometry::CamHght()+AliTRDgeometry::CdrHght()){
@@ -2129,24 +2339,11 @@ Bool_t AliTRDseedV1::FitRobust(Bool_t chg)
     SetErrorMsg(kFitFailedY);
     return kFALSE;
   }
-  fS2Y = fCov[0] + fX*fCov[1];
-  fS2Z = fPad[0]*fPad[0]/12.;
-  AliDebug(2, Form("[I]  x[cm]=%6.2f y[cm]=%+5.2f z[cm]=%+6.2f dydx[deg]=%+5.2f sy[um]=%6.2f sz[cm]=%6.2f", GetX(), GetY(), GetZ(), TMath::ATan(fYfit[1])*TMath::RadToDeg(), TMath::Sqrt(fS2Y)*1.e4, TMath::Sqrt(fS2Z)));
-  if(IsRowCross()){
-    Float_t x,z;
-    if(!GetEstimatedCrossPoint(x,z)){
-      AliDebug(2, Form("Failed(I) getting crossing point D[%03d].", fDet));
-      SetErrorMsg(kFitFailedY);
-      return kTRUE;
-    }
-    //if(IsPrimary()){ 
-      fZfit[0] = fX0*z/x;
-      fZfit[1] = z/x;
-      fS2Z     = 0.05+0.4*TMath::Abs(fZfit[1]); fS2Z *= fS2Z;
-    //}
-    AliDebug(2, Form("s2y[%f] s2z[%f]", fS2Y, fS2Z));
-    AliDebug(2, Form("[II] x[cm]=%6.2f y[cm]=%+5.2f z[cm]=%+6.2f dydx[deg]=%+5.2f sy[um]=%6.2f sz[um]=%6.2f dzdx[deg]=%+5.2f", GetX(), GetY(), GetZ(), TMath::ATan(fYfit[1])*TMath::RadToDeg(), TMath::Sqrt(fS2Y)*1.e4, TMath::Sqrt(fS2Z)*1.e4, TMath::ATan(fZfit[1])*TMath::RadToDeg()));
+  if(!IsRowCross()){ 
+    Double_t padEffLength(fPad[0] - TMath::Abs(dzdx));
+    fS2Z = padEffLength*padEffLength/12.;
   }
+  AliDebug(2, Form("[I]  x[cm]=%6.2f y[cm]=%+5.2f z[cm]=%+6.2f dydx[deg]=%+5.2f", GetX(), GetY(), GetZ(), TMath::ATan(fYfit[1])*TMath::RadToDeg()));
   
   if(pstreamer){
     Float_t x= fX0 -fX,
@@ -2165,7 +2362,7 @@ Bool_t AliTRDseedV1::FitRobust(Bool_t chg)
     AliMathBase::EvaluateUni(n, dy, m, s, 0);
     (*pstreamer) << "FitRobust4"
       << "stat=" << status
-      << "chg="  << chg
+      << "opt="  << opt
       << "ncl="  << n
       << "det="  << fDet
       << "x0="   << fX0
@@ -2185,6 +2382,33 @@ Bool_t AliTRDseedV1::FitRobust(Bool_t chg)
   return kTRUE;
 }
 
+//___________________________________________________________________
+void AliTRDseedV1::SetXYZ(TGeoHMatrix *mDet)
+{
+// Apply alignment to the local position of tracklet
+// A.Bercuci @ 27.11.2013
+
+  Double_t loc[] = {AliTRDgeometry::AnodePos(), GetLocalY(), fZfit[0]}, trk[3]={0.};
+  mDet->LocalToMaster(loc, trk);
+  fX0 = trk[0];
+  fY  = trk[1];
+  fZ  = trk[2];
+  return;
+//   if(!IsRowCross()){/*fZfit[1] *= 1.09;*/ return;}
+//   // recalculate local z coordinate assuming primary track for row cross tracklets
+//   Double_t zoff(fZ-fZfit[0]); // no alignment aware !
+//   //printf("SetXYZ : zoff[%f] zpp[%f]\n", zoff, zpp);
+//   fZfit[0] = fX0*fZfit[1] - zoff; 
+//   // recalculate tracking coordinates based on the new z coordinate
+//   loc[2] = fZfit[0];
+//   mDet->LocalToMaster(loc, trk);
+//   fX0 = trk[0];
+//   fY  = trk[1];
+//   fZ  = trk[2];//-zcorr[stk];
+  //fZfit[1] = /*(IsRowCross()?1.05:1.09)**/fZ/(fX0-fS2Y);
+}
+
+
 //___________________________________________________________________
 void AliTRDseedV1::Print(Option_t *o) const
 {
index c48da16d046a86c536c11f23645261d93925ebb0..80bc78283836233e0cd3859b06040725c2e52866 100644 (file)
@@ -3,7 +3,7 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
 
-/* $Id$ */
+/* $Id: AliTRDseedV1.h 60233 2013-01-10 09:04:08Z abercuci $ */
 
 ////////////////////////////////////////////////////////////////////////////
 //                                                                        //
@@ -37,7 +37,7 @@
 
 class TTreeSRedirector;
 class TLinearFitter;
-
+class TGeoHMatrix;
 class AliRieman;
 
 class AliTRDReconstructor;
@@ -90,8 +90,9 @@ public:
   void      CookdEdx(Int_t nslices);
   void      CookLabels();
   Bool_t    CookPID();
-  Bool_t    Fit(UChar_t opt=0);
-  Bool_t    FitRobust(Bool_t ChgPlus=kTRUE);
+  Bool_t    Fit(UChar_t opt=0); // OBSOLETE
+  Bool_t    FitRobust(AliTRDpadPlane *pp, Bool_t sgn, Int_t chg, Int_t opt=0);
+  Double_t  EstimatedCrossPoint(AliTRDpadPlane *pp);
   Bool_t    Init(const AliTRDtrackV1 *track);
   void      Init(const AliRieman *fit);
   Bool_t    IsEqual(const TObject *inTracklet) const;
@@ -133,9 +134,10 @@ public:
   void      GetCalibParam(Float_t &exb, Float_t &vd, Float_t &t0, Float_t &s2, Float_t &dl, Float_t &dt) const    { 
               exb = fExB; vd = fVD; t0 = fT0; s2 = fS2PRF; dl = fDiffL; dt = fDiffT;}
   AliTRDcluster*  GetClusters(Int_t i) const               { return i<0 || i>=kNclusters ? NULL: fClusters[i];}
-  Bool_t    GetEstimatedCrossPoint(Float_t &x, Float_t &z) const;
   Int_t     GetIndexes(Int_t i) const{ return i<0 || i>=kNclusters ? -1 : fIndexes[i];}
   Int_t     GetLabels(Int_t i) const { return fLabels[i];}  
+  Float_t   GetLocalZ() const        { return fZfit[0] - fZfit[1] * fX;}
+  Float_t   GetLocalY() const        { return fYfit[0] - fYfit[1] * fX;}
   Float_t   GetMomentum(Float_t *err = NULL) const;
   Int_t     GetN() const             { return (Int_t)fN&kMask;}
   Int_t     GetN2() const            { return GetN();}
@@ -151,8 +153,11 @@ public:
   Float_t*  GetProbability(Bool_t force=kFALSE);
   Float_t   GetPt() const            { return fPt; }
   inline Double_t  GetPID(Int_t is=-1) const;
-  Float_t   GetS2Y() const           { return fS2Y;}
+  Float_t   GetS2Y() const           { return fCov[0];}
   Float_t   GetS2Z() const           { return fS2Z;}
+  Double_t  GetS2DYDX(Float_t) const { return fCov[2];}
+  inline Double_t  GetS2DZDX(Float_t) const;
+  inline Double_t  GetS2XcrossDZDX(Double_t absdzdx) const;
   Float_t   GetSigmaY() const        { return fS2Y > 0. ? TMath::Sqrt(fS2Y) : 0.2;}
   Float_t   GetSnp() const           { return fYref[1]/TMath::Sqrt(1+fYref[1]*fYref[1]);}
   Float_t   GetTgl() const           { return fZref[1]/TMath::Sqrt(1+fYref[1]*fYref[1]);}
@@ -161,14 +166,17 @@ public:
   UShort_t  GetVolumeId() const;
   Float_t   GetX0() const            { return fX0;}
   Float_t   GetX() const             { return fX0 - fX;}
-  Float_t   GetY() const             { return fYfit[0] - fYfit[1] * fX;}
-  Double_t  GetYat(Double_t x) const { return fYfit[0] - fYfit[1] * (fX0-x);}
+  Float_t   GetXcross() const        { return fS2Y;}
+  Float_t   GetY() const             { return TMath::Abs(fY)<1.e-15?GetLocalY():fY;/*fYfit[0] - fYfit[1] * fX;*/}
+  Double_t  GetYat(Double_t x) const { return fY/*fit[0]*/ - fYfit[1] * (fX0-x);}
   Float_t   GetYfit(Int_t id) const  { return fYfit[id];}
   Float_t   GetYref(Int_t id) const  { return fYref[id];}
-  Float_t   GetZ() const             { return fZfit[0] - fZfit[1] * fX;}
-  Double_t  GetZat(Double_t x) const { return fZfit[0] - fZfit[1] * (fX0-x);}
+  Float_t   GetYref() const          { return fYref[0] - fYref[1] *fX;}
+  Float_t   GetZ() const             { return TMath::Abs(fZ)<1.e-15?GetLocalZ():fZ;/*fZfit[0] - fZfit[1] * fX;*/}
+  Double_t  GetZat(Double_t x) const { return fZ/*fit[0]*/ - fZfit[1] * (fX0-x);}
   Float_t   GetZfit(Int_t id) const  { return fZfit[id];}
   Float_t   GetZref(Int_t id) const  { return fZref[id];}
+  Float_t   GetZref() const          { return fZref[0] - fZref[1] *fX;}
   Int_t     GetYbin() const          { return Int_t(GetY()/0.016);}
   Int_t     GetZbin() const          { return Int_t(GetZ()/fPad[0]);}
 
@@ -198,15 +206,18 @@ public:
   void      SetDX(Float_t inDX)      { fdX = inDX;}
   void      SetReconstructor(const AliTRDReconstructor *rec) {fkReconstructor = rec;}
   void      SetX0(Float_t x0)        { fX0 = x0; }
-  void      SetYref(Int_t i, Float_t y) { fYref[i]     = y;}
-  void      SetZref(Int_t i, Float_t z) { fZref[i]     = z;}
+  void      SetXYZ(TGeoHMatrix *mDet);
+  void      SetYref(Int_t i, Float_t y) { if(i==0||i==1) fYref[i]     = y;}
+  void      SetZref(Int_t i, Float_t z) { if(i==0||i==1) fZref[i]     = z;}
 //   void      SetUsabilityMap(Long_t um)  { fUsable = um; }
   void      Update(const AliTRDtrackV1* trk);
   void      UpdateUsed();
   void      UseClusters();
 
 protected:
-  void        Copy(TObject &ref) const;
+  void      Copy(TObject &ref) const;
+  void      UnbiasDZDX(Bool_t rc);
+  Double_t  UnbiasY(Bool_t rc, Bool_t sgn, Int_t chg);
 
 private:
   inline void SetN(Int_t n);
@@ -232,15 +243,15 @@ private:
   Float_t          fPad[4];                 // local pad definition : length/width/tilt/anode wire offset 
   Float_t          fYref[2];                //  Reference y, dydx
   Float_t          fZref[2];                //  Reference z, dz/dx
-  Float_t          fYfit[2];                //  Fit y, dy/dx
-  Float_t          fZfit[2];                //  Fit z
+  Float_t          fYfit[2];                //  Fit :: chamber local y, dy/dx
+  Float_t          fZfit[2];                //  Fit :: chamber local z, dz/dx
   Float_t          fPt;                     //  Pt estimate @ tracklet [GeV/c]
   Float_t          fdX;                     // length of time bin
-  Float_t          fX0;                     // anode wire position
-  Float_t          fX;                      // radial position of the tracklet
-  Float_t          fY;                      // r-phi position of the tracklet
-  Float_t          fZ;                      // z position of the tracklet
-  Float_t          fS2Y;                    // estimated resolution in the r-phi direction 
+  Float_t          fX0;                     // anode wire position in TrackingCoordinates (alignment included)
+  Float_t          fX;                      // local radial offset from anode wire where tracklet position is estimated
+  Float_t          fY;                      // r-phi position of the tracklet  in TrackingCoordinates (alignment included)
+  Float_t          fZ;                      // z position of the tracklet in TrackingCoordinates (alignment included)
+  Float_t          fS2Y;                    // estimated radial cross point (chmb. coord.) in case of RC tracklets 
   Float_t          fS2Z;                    // estimated resolution in the z direction 
   Float_t          fC[2];                   // Curvature for standalone [0] rieman [1] vertex constrained 
   Float_t          fChi2;                   // Global chi2  
@@ -250,7 +261,7 @@ private:
   Double_t         fRefCov[7];              // covariance matrix of the track in the yz plane + the rest of the diagonal elements
   Double_t         fCov[3];                 // covariance matrix of the tracklet in the xy plane
 
-  ClassDef(AliTRDseedV1, 12)                 // The offline TRD tracklet 
+  ClassDef(AliTRDseedV1, 13)                 // The offline TRD tracklet 
 };
 
 //____________________________________________________________
@@ -291,6 +302,27 @@ inline Double_t AliTRDseedV1::GetPID(Int_t is) const
 }
 
 //____________________________________________________________
+Double_t AliTRDseedV1::GetS2XcrossDZDX(Double_t absdzdx) const
+{
+  // correct sigma(x_cross) for the width of the crossing area
+  if(absdzdx>0.05) return TMath::Exp(-1.58839-absdzdx*3.24116);
+  else return 0.957043-absdzdx*12.4597;
+}
+
+//____________________________________________________________
+Double_t AliTRDseedV1::GetS2DZDX(Float_t dzdx) const
+{
+//   Double_t p0[] = {0.03925, 0.03178},
+//            p1[] = {0.06316, 0.06669};
+  Double_t p0[] = {0.02835, 0.03925},
+           p1[] = {0.04746, 0.06316};
+  
+  Double_t s2(p0[IsRowCross()]+p1[IsRowCross()]*dzdx*dzdx);
+  s2*=s2;
+  return s2;
+}
+
+  //____________________________________________________________
 inline AliTRDcluster* AliTRDseedV1::NextCluster()
 {
 // Mimic the usage of STL iterators.
index 52090dc61af4728ad4ee6d2f7333def4024b916a..4921d25bf9caf2268b70c5848f4fbfad72e80733 100644 (file)
@@ -145,6 +145,7 @@ AliTRDtrackV1::AliTRDtrackV1(const AliESDtrack &t) : AliKalmanTrack()
   for(int is =0; is<AliPID::kSPECIES; is++) fPID[is] = pid;
 
   const AliExternalTrackParam *par = &t;
+  /* RS
   if (t.GetStatus() & AliESDtrack::kTRDbackup) {
     par = t.GetOuterParam();
     if (!par) {
@@ -152,6 +153,7 @@ AliTRDtrackV1::AliTRDtrackV1(const AliESDtrack &t) : AliKalmanTrack()
       par = &t;
     }
   }
+  */
   Set(par->GetX() 
      ,par->GetAlpha()
      ,par->GetParameter()
index 3dbadd98800202a14b7d34539dce5b6b1b7162d2..b48189937331d2a164f4da9f5a29845d360d9c80 100644 (file)
@@ -374,7 +374,7 @@ Int_t AliTRDtrackerV1::PropagateBack(AliESDEvent *event)
       // update calibration references using this track
       if(calibra->GetHisto2d()) calibra->UpdateHistogramsV1(&track);
       // save calibration object
-      if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0) { 
+      if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 || AliTRDReconstructor::GetStreamLevel()>0 ) { 
         AliTRDtrackV1 *calibTrack = new AliTRDtrackV1(track);
         calibTrack->SetOwner();
         seed->AddCalibObject(calibTrack);
@@ -516,7 +516,7 @@ Int_t AliTRDtrackerV1::RefitInward(AliESDEvent *event)
     Double_t xTPC = 250.0;
     if(FollowProlongation(track)){     
       // Update the friend track
-      if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0){ 
+      if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0  || AliTRDReconstructor::GetStreamLevel()>0 ){ 
         TObject *o = NULL; Int_t ic = 0;
         AliTRDtrackV1 *calibTrack = NULL; 
         while((o = seed->GetCalibObject(ic++))){
@@ -624,6 +624,7 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t)
     Double_t cov[3]; tracklet->GetCovAt(x, cov);
     Double_t p[2] = { tracklet->GetY(), tracklet->GetZ()};
     Double_t chi2 = ((AliExternalTrackParam)t).GetPredictedChi2(p, cov);
+
     if(fkReconstructor->IsDebugStreaming()){
       Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber();
       TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
@@ -638,11 +639,19 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t)
                << "vcov.="<<&vcov
                << "vpar.="<<&vpar
                << "tracklet.="      << tracklet
+               << "chi2="<< chi2 
                << "param0.="           << &param0
                << "param1.="           << &param1
                << "\n";
     }
-    if (chi2 < 1e+10 && ((AliExternalTrackParam&)t).Update(p, cov)){ 
+    /*
+    AliInfo(Form("Pl:%d X:%+e : %+e P: %+e %+e Cov:%+e %+e %+e -> dXY: %+e %+e | chi2:%.2f pT:%.2f alp:%.3f",
+                iplane,x,t.GetX(),p[0],p[1],cov[0],cov[1],cov[2],
+                p[0]-t.GetY(),p[1]-t.GetZ(),
+                chi2,t.Pt()*t.Charge(),t.GetAlpha()));
+    */
+    if (chi2 < fkRecoParam->GetChi2Cut() && ((AliExternalTrackParam&)t).Update(p, cov)){  // MI parameterizad chi2 cut 03.05.2014
+      //    if (chi2 < 1e+10 && ((AliExternalTrackParam&)t).Update(p, cov)){ 
       // Register info to track
       t.SetNumberOfClusters();
       t.UpdateChi2(chi2);
@@ -650,7 +659,7 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t)
     }
   }
 
-  if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1){
+  if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 || AliTRDReconstructor::GetStreamLevel()>1){
     Int_t index;
     for(int iplane=0; iplane<AliTRDgeometry::kNlayer; iplane++){
       AliTRDseedV1 *tracklet = GetTracklet(&t, iplane, index);
@@ -721,6 +730,7 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
   AliTRDtrackingChamber *chamber = NULL;
   
   Int_t debugLevel = fkReconstructor->IsDebugStreaming() ? fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) : 0;
+  if ( AliTRDReconstructor::GetStreamLevel()>0) debugLevel= AliTRDReconstructor::GetStreamLevel();
   TTreeSRedirector *cstreamer = fkReconstructor->IsDebugStreaming() ? fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker) : 0x0;
 
   Bool_t kStoreIn(kTRUE),     // toggel store track params. at TRD entry
@@ -865,6 +875,7 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
       continue;
     }
 
+    Float_t prod(t.GetBz()*t.Charge());
     ptrTracklet  = tracklets[ily];
     if(!ptrTracklet){ // BUILD TRACKLET
       AliDebug(3, Form("Building tracklet det[%d]", det));
@@ -898,6 +909,8 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
       ptrTracklet->SetKink(t.IsKink());
       ptrTracklet->SetPrimary(t.IsPrimary());
       ptrTracklet->SetPadPlane(fGeom->GetPadPlane(ily, stk));
+      //set first approximation of radial position of anode wire corresponding to middle chamber y=0, z=0
+      // the uncertainty is given by the actual position of the tracklet (y,z) and chamber inclination
       ptrTracklet->SetX0(glb[0]+driftLength);
       if(!ptrTracklet->Init(&t)){
         n=-1; 
@@ -908,7 +921,6 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
       // Select attachment base on track to B field sign not only track charge which is buggy
       // mark kFALSE same sign tracks and kTRUE opposite sign tracks
       // A.Bercuci 3.11.2011
-      Float_t prod(t.GetBz()*t.Charge());
       if(!ptrTracklet->AttachClusters(chamber, kTRUE, prod<0.?kTRUE:kFALSE, fEventInFile)){
         t.SetErrStat(AliTRDtrackV1::kNoAttach, ily);
         if(debugLevel>3){
@@ -940,15 +952,19 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
     } else AliDebug(2, Form("Use external tracklet ly[%d]", ily));
     // propagate track to the radial position of the tracklet
 
-    // fit tracklet 
+    // fit tracklet in the local chamber coordinate system 
     // tilt correction options
     // 0 : no correction
     // 2 : pseudo tilt correction
-    if(!ptrTracklet->FitRobust(t.Charge()>0?kTRUE:kFALSE)){
+    if(!ptrTracklet->FitRobust(fGeom->GetPadPlane(ily, stk), prod>0., t.Charge())){
       t.SetErrStat(AliTRDtrackV1::kNoFit, ily);
       AliDebug(4, "Failed Tracklet Fit");
       continue;
     } 
+    // Calculate tracklet position in tracking coordinates
+    // A.Bercuci 27.11.2013    
+    ptrTracklet->SetXYZ(matrix);
+
     x = ptrTracklet->GetX(); //GetX0();
     if(x > (AliTRDReconstructor::GetMaxStep() + t.GetX()) && !PropagateToX(t, x, AliTRDReconstructor::GetMaxStep())) {
       n=-1; 
@@ -971,23 +987,13 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
     Double_t cov[3]; ptrTracklet->GetCovAt(x, cov);
     Double_t p[2] = { ptrTracklet->GetY(), ptrTracklet->GetZ()};
     Double_t chi2 = ((AliExternalTrackParam)t).GetPredictedChi2(p, cov);
-    // update Kalman with the TRD measurement
-    if(chi2>1e+10){ // TODO
-      t.SetErrStat(AliTRDtrackV1::kChi2, ily);
-      if(debugLevel > 2){
-        UChar_t status(t.GetStatusTRD());
-        AliTRDseedV1  trackletCp(*ptrTracklet);
-        AliTRDtrackV1 trackCp(t);
-        trackCp.SetOwner();
-        (*cstreamer) << "FollowBackProlongation3"
-            << "status="      << status
-            << "tracklet.="   << &trackletCp
-            << "track.="      << &trackCp
-            << "\n";
-      }
-      AliDebug(4, Form("Failed Chi2[%f]", chi2));
-      continue; 
-    }
+    /*
+    AliInfo(Form("Pl:%d X:%+e : %+e P: %+e %+e Cov:%+e %+e %+e -> dXY: %+e %+e | chi2:%.2f pT:%.2f alp:%.3f",
+                ily,x,t.GetX(),p[0],p[1],cov[0],cov[1],cov[2],
+                p[0]-t.GetY(),p[1]-t.GetZ(),
+                chi2,t.Pt()*t.Charge(),t.GetAlpha()));
+    */
+
      if(fkReconstructor->IsDebugStreaming()){
       Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber();
       //      TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
@@ -1006,8 +1012,25 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
                << "param0.="           << &param0
                << "param1.="           << &param1
                << "\n";
+     }
+     
+     // update Kalman with the TRD measurement
+     if (chi2> fkRecoParam->GetChi2Cut()){ // MI parameterizad chi2 cut 03.05.2014
+      t.SetErrStat(AliTRDtrackV1::kChi2, ily);
+      if(debugLevel > 2){
+        UChar_t status(t.GetStatusTRD());
+        AliTRDseedV1  trackletCp(*ptrTracklet);
+        AliTRDtrackV1 trackCp(t);
+        trackCp.SetOwner();
+        (*cstreamer) << "FollowBackProlongation3"
+            << "status="      << status
+            << "tracklet.="   << &trackletCp
+            << "track.="      << &trackCp
+            << "\n";
+      }
+      AliDebug(4, Form("Failed Chi2[%f]", chi2));
+      continue; 
     }
-
     // mark track as entering the FIDUCIAL volume of TRD
     if(kStoreIn){
       t.SetTrackIn();
@@ -1859,7 +1882,7 @@ Int_t AliTRDtrackerV1::PropagateToX(AliTRDtrackV1 &t, Double_t xToGo, Double_t m
 {
   //
   // Starting from current X-position of track <t> this function
-  // extrapolates the track up to radial position <xToGo>. 
+  // extrapolates the track up to radial position <xToGo> in steps of <maxStep>
   // Returns 1 if track reaches the plane, and 0 otherwise 
   //
 
@@ -2273,7 +2296,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksSM(Int_t sector, AliESDEvent *esd)
     Int_t id = esd->AddTrack(esdTrack);
 
     // set ESD id to stand alone TRD tracks
-    if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0){ 
+    if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 || AliTRDReconstructor::GetStreamLevel()>0 ){ 
       esdTrack=esd->GetTrack(id);
       TObject *o(NULL); Int_t ic(0);
       AliTRDtrackV1 *calibTrack(NULL); 
@@ -2341,7 +2364,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon
 
   // Build initial seeding configurations
   Double_t quality = BuildSeedingConfigs(stack, configs);
-  if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10){
+  if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10  || AliTRDReconstructor::GetStreamLevel()>10){
     AliInfo(Form("Plane config %d %d %d Quality %f"
     , configs[0], configs[1], configs[2], quality));
   }
@@ -2518,7 +2541,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon
         esdTrack->SetLabel(track->GetLabel());
         track->UpdateESDtrack(esdTrack);
         // write ESD-friends if neccessary
-        if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0){
+        if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 || AliTRDReconstructor::GetStreamLevel()>0 ){
           AliTRDtrackV1 *calibTrack = new AliTRDtrackV1(*track);
           calibTrack->SetOwner();
           esdTrack->AddCalibObject(calibTrack);
@@ -2546,7 +2569,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon
       chamber->Build(fGeom);//Indices(fSieveSeeding);
     }
 
-    if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10){ 
+    if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10 || AliTRDReconstructor::GetStreamLevel()>10){ 
       AliInfo(Form("Sieve level %d Plane config %d %d %d Quality %f", fSieveSeeding, configs[0], configs[1], configs[2], quality));
     }
   } while(fSieveSeeding<10); // end stack clusters sieve
@@ -2787,7 +2810,8 @@ Int_t AliTRDtrackerV1::MakeSeeds(AliTRDtrackingChamber **stack, AliTRDseedV1 * c
         }
       
         Bool_t isFake = kFALSE;
-        if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){
+        if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()) 
+          ||AliTRDReconstructor::GetStreamLevel()>=2 ){
           if (c[0]->GetLabel(0) != c[3]->GetLabel(0)) isFake = kTRUE;
           if (c[1]->GetLabel(0) != c[3]->GetLabel(0)) isFake = kTRUE;
           if (c[2]->GetLabel(0) != c[3]->GetLabel(0)) isFake = kTRUE;
@@ -2930,7 +2954,8 @@ Int_t AliTRDtrackerV1::MakeSeeds(AliTRDtrackingChamber **stack, AliTRDseedV1 * c
       
         // AliInfo("Extrapolation done.");
         // Debug Stream containing all the 6 tracklets
-        if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){
+        if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming())
+          ||AliTRDReconstructor::GetStreamLevel()>=2){
           TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
           TLinearFitter *tiltedRieman = GetTiltedRiemanFitter();
           Int_t eventNumber            = AliTRDtrackerDebug::GetEventNumber();
@@ -2964,7 +2989,8 @@ Int_t AliTRDtrackerV1::MakeSeeds(AliTRDtrackingChamber **stack, AliTRDseedV1 * c
         // calculate track quality
         fTrackQuality[ntracks] = CalculateTrackLikelihood(&chi2Vals[0]);
                   
-        if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){
+        if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()) 
+          ||AliTRDReconstructor::GetStreamLevel()>=2){
           TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
           Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber();
           Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber();
@@ -3125,7 +3151,8 @@ AliTRDtrackV1* AliTRDtrackerV1::MakeTrack(AliTRDseedV1 * const tracklet)
 
   track.ResetCovariance(1);
   Int_t nc = TMath::Abs(FollowBackProlongation(track));
-  if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 5 && fkReconstructor->IsDebugStreaming()){
+  if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 5 && fkReconstructor->IsDebugStreaming()) 
+     ||AliTRDReconstructor::GetStreamLevel()>5){
     Int_t eventNumber          = AliTRDtrackerDebug::GetEventNumber();
     Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber();
     Double_t p[5]; // Track Params for the Debug Stream
@@ -3254,7 +3281,8 @@ Bool_t AliTRDtrackerV1::ImproveSeedQuality(AliTRDtrackingChamber **stack, AliTRD
     AliDebug(2, Form("Iter[%d] Q[%f] chi2[%f]", iter, quality, chi2));
 
 
-    if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 7 && fkReconstructor->IsDebugStreaming()){
+    if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 7 && fkReconstructor->IsDebugStreaming())
+       ||AliTRDReconstructor::GetStreamLevel()>=7){
       Int_t eventNumber                = AliTRDtrackerDebug::GetEventNumber();
       Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber();
       TLinearFitter *tiltedRieman = GetTiltedRiemanFitter();
@@ -3329,7 +3357,8 @@ Double_t AliTRDtrackerV1::CalculateTrackLikelihood(Double_t *chi2){
     , chi2[3], likeChi2Phi
   ));
 
-  if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){
+  if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming())
+     ||AliTRDReconstructor::GetStreamLevel()>=2){
     Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber();
     Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber();
     TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
@@ -3394,7 +3423,8 @@ Double_t AliTRDtrackerV1::CookLikelihood(AliTRDseedV1 *cseed, Int_t planes[4])
   Double_t likeN     = TMath::Exp(-(fkRecoParam->GetNMeanClusters() - nclusters) / fkRecoParam->GetNSigmaClusters());
   Double_t like      = likea * likechi2y * likechi2z * likeN;
 
-  if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){
+  if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming())
+     ||AliTRDReconstructor::GetStreamLevel()>=2){
     Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber();
     Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber();
     Int_t nTracklets = 0; Float_t meanNcls = 0;