From bb8a4feee6b1e5bc16b2efa1123bfae354494628 Mon Sep 17 00:00:00 2001
From: Marco Clemencic <marco.clemencic@cern.ch>
Date: Tue, 3 Mar 2015 19:20:18 +0100
Subject: [PATCH] v94r2p1

---
 .../G4EmStandardPhysics_option1LHCb.hh        |   5 +-
 Geant4/G4LHCblists/cmt/requirements           |   2 +-
 Geant4/G4LHCblists/cmt/version.cmt            |   2 +-
 Geant4/G4LHCblists/doc/release.notes          |   7 +
 .../src/G4EmStandardPhysics_option1LHCb.cc    | 582 +++++++++---------
 Geant4/G4config/cmt/requirements              |   4 +-
 Geant4/G4config/cmt/version.cmt               |   2 +-
 Geant4/G4config/doc/release.notes             |   4 +
 Geant4Sys/cmt/requirements                    |   6 +-
 Geant4Sys/cmt/version.cmt                     |   2 +-
 Geant4Sys/doc/release.notes                   |  16 +
 cmt/project.cmt                               |   2 +-
 12 files changed, 346 insertions(+), 288 deletions(-)

diff --git a/Geant4/G4LHCblists/G4LHCblists/G4EmStandardPhysics_option1LHCb.hh b/Geant4/G4LHCblists/G4LHCblists/G4EmStandardPhysics_option1LHCb.hh
index 5e030d7998..6616bc0495 100644
--- a/Geant4/G4LHCblists/G4LHCblists/G4EmStandardPhysics_option1LHCb.hh
+++ b/Geant4/G4LHCblists/G4LHCblists/G4EmStandardPhysics_option1LHCb.hh
@@ -54,7 +54,8 @@ class G4EmStandardPhysics_option1LHCb : public G4VPhysicsConstructor
 {
 public:
 
-  G4EmStandardPhysics_option1LHCb(G4int ver = 1);
+  G4EmStandardPhysics_option1LHCb(G4int ver = 1, bool applyCut = true,
+                                  bool newForElectrons = true);
 
   virtual ~G4EmStandardPhysics_option1LHCb();
 
@@ -63,6 +64,8 @@ public:
 
 private:
   G4int  verbose;
+  bool   applyCut;
+  bool   newForElectrons;
 };
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Geant4/G4LHCblists/cmt/requirements b/Geant4/G4LHCblists/cmt/requirements
index 04037afbc8..8a96bb5747 100755
--- a/Geant4/G4LHCblists/cmt/requirements
+++ b/Geant4/G4LHCblists/cmt/requirements
@@ -3,7 +3,7 @@
 # Maintainer : Gloria CORTI
 #============================================================================
 package G4LHCblists
-version v2r0
+version v2r1
 
 # Structure, i.e. directories to process.
 #============================================================================
diff --git a/Geant4/G4LHCblists/cmt/version.cmt b/Geant4/G4LHCblists/cmt/version.cmt
index 7770a9e5a6..3a9a351a30 100644
--- a/Geant4/G4LHCblists/cmt/version.cmt
+++ b/Geant4/G4LHCblists/cmt/version.cmt
@@ -1 +1 @@
-v2r0
+v2r1
diff --git a/Geant4/G4LHCblists/doc/release.notes b/Geant4/G4LHCblists/doc/release.notes
index 51ccd355f0..24d5636bfc 100755
--- a/Geant4/G4LHCblists/doc/release.notes
+++ b/Geant4/G4LHCblists/doc/release.notes
@@ -4,6 +4,13 @@
 ! Purpose     : Private LHCb physics lists
 !-----------------------------------------------------------------------------
 
+!======================== G4LHCblists v2r1 2011-09-19 ========================
+! 2011-09-18 - Gloria Corti
+ - Add options in contructor to apply or not the cuts, as to have the
+   possibility to have a physics list with old EM behaviour and new MS and to
+   apply simple MS to e+/- as provided by A.Dotti to address CMS calorimeter
+   issues with this physics list
+
 !======================== G4LHCblists v2r0 2011-07-13 ========================
 ! 2011-07-13 - Gloria Corti
  - Fix renaming in G4EmStandardPhysics_option1NoApplyCuts.cc 
diff --git a/Geant4/G4LHCblists/src/G4EmStandardPhysics_option1LHCb.cc b/Geant4/G4LHCblists/src/G4EmStandardPhysics_option1LHCb.cc
index 5a66318514..600ed2efa9 100644
--- a/Geant4/G4LHCblists/src/G4EmStandardPhysics_option1LHCb.cc
+++ b/Geant4/G4LHCblists/src/G4EmStandardPhysics_option1LHCb.cc
@@ -1,277 +1,305 @@
-//
-// ********************************************************************
-// * License and Disclaimer                                           *
-// *                                                                  *
-// * The  Geant4 software  is  copyright of the Copyright Holders  of *
-// * the Geant4 Collaboration.  It is provided  under  the terms  and *
-// * conditions of the Geant4 Software License,  included in the file *
-// * LICENSE and available at  http://cern.ch/geant4/license .  These *
-// * include a list of copyright holders.                             *
-// *                                                                  *
-// * Neither the authors of this software system, nor their employing *
-// * institutes,nor the agencies providing financial support for this *
-// * work  make  any representation or  warranty, express or implied, *
-// * regarding  this  software system or assume any liability for its *
-// * use.  Please see the license in the file  LICENSE  and URL above *
-// * for the full disclaimer and the limitation of liability.         *
-// *                                                                  *
-// * This  code  implementation is the result of  the  scientific and *
-// * technical work of the GEANT4 collaboration.                      *
-// * By using,  copying,  modifying or  distributing the software (or *
-// * any work based  on the software)  you  agree  to acknowledge its *
-// * use  in  resulting  scientific  publications,  and indicate your *
-// * acceptance of all terms of the Geant4 Software license.          *
-// ********************************************************************
-//
-// $Id: G4EmStandardPhysics_option1LHCb.cc,v 1.22 2010-12-19 18:11:05 vnivanch Exp $
-// GEANT4 tag $Name: not supported by cvs2svn $
-//
-//---------------------------------------------------------------------------
-//
-// ClassName:   G4EmStandardPhysics_option1LHCb
-//
-// Author:      V.Ivanchenko 29.06.2011
-//
-// Modified:
-//
-//----------------------------------------------------------------------------
-//
-
-#include "G4EmStandardPhysics_option1LHCb.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4ProcessManager.hh"
-#include "G4LossTableManager.hh"
-#include "G4EmProcessOptions.hh"
-
-#include "G4ComptonScattering.hh"
-#include "G4GammaConversion.hh"
-#include "G4PhotoElectricEffect.hh"
-
-#include "G4eMultipleScattering.hh"
-#include "G4MuMultipleScattering.hh"
-#include "G4hMultipleScattering.hh"
-#include "G4CoulombScattering.hh"
-#include "G4WentzelVIModel.hh"
-#include "G4UrbanMscModel93.hh"
-#include "G4eCoulombScatteringModel.hh"
-
-#include "G4eIonisation.hh"
-#include "G4eBremsstrahlung.hh"
-#include "G4eplusAnnihilation.hh"
-
-#include "G4MuIonisation.hh"
-#include "G4MuBremsstrahlung.hh"
-#include "G4MuPairProduction.hh"
-#include "G4hBremsstrahlung.hh"
-#include "G4hPairProduction.hh"
-
-#include "G4hIonisation.hh"
-#include "G4ionIonisation.hh"
-#include "G4alphaIonisation.hh"
-
-#include "G4Gamma.hh"
-#include "G4Electron.hh"
-#include "G4Positron.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4PionPlus.hh"
-#include "G4PionMinus.hh"
-#include "G4KaonPlus.hh"
-#include "G4KaonMinus.hh"
-#include "G4Proton.hh"
-#include "G4AntiProton.hh"
-#include "G4Deuteron.hh"
-#include "G4Triton.hh"
-#include "G4He3.hh"
-#include "G4Alpha.hh"
-#include "G4GenericIon.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-G4EmStandardPhysics_option1LHCb::G4EmStandardPhysics_option1LHCb(G4int ver)
-  : G4VPhysicsConstructor("G4EmStandard_opt1"), verbose(ver)
-{
-  G4LossTableManager::Instance();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-G4EmStandardPhysics_option1LHCb::~G4EmStandardPhysics_option1LHCb()
-{}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void G4EmStandardPhysics_option1LHCb::ConstructParticle()
-{
-// gamma
-  G4Gamma::Gamma();
-
-// leptons
-  G4Electron::Electron();
-  G4Positron::Positron();
-  G4MuonPlus::MuonPlus();
-  G4MuonMinus::MuonMinus();
-
-// mesons
-  G4PionPlus::PionPlusDefinition();
-  G4PionMinus::PionMinusDefinition();
-  G4KaonPlus::KaonPlusDefinition();
-  G4KaonMinus::KaonMinusDefinition();
-
-// barions
-  G4Proton::Proton();
-  G4AntiProton::AntiProton();
-
-// ions
-  G4Deuteron::Deuteron();
-  G4Triton::Triton();
-  G4He3::He3();
-  G4Alpha::Alpha();
-  G4GenericIon::GenericIonDefinition();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void G4EmStandardPhysics_option1LHCb::ConstructProcess()
-{
-  // Add standard EM Processes
-  G4double mscEnergyLimit = 1.05*GeV;
-
-  theParticleIterator->reset();
-  while( (*theParticleIterator)() ){
-    G4ParticleDefinition* particle = theParticleIterator->value();
-    G4ProcessManager* pmanager = particle->GetProcessManager();
-    G4String particleName = particle->GetParticleName();
-    if(verbose > 1)
-      G4cout << "### " << GetPhysicsName() << " instantiates for " 
-	     << particleName << G4endl;
-
-    if (particleName == "gamma") {
-
-      pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
-      pmanager->AddDiscreteProcess(new G4ComptonScattering);
-      pmanager->AddDiscreteProcess(new G4GammaConversion);
-
-    } else if (particleName == "e-") {
-
-      G4eIonisation* eioni = new G4eIonisation();
-      eioni->SetStepFunction(0.8, 1.0*mm);
-      G4eMultipleScattering* msc = new G4eMultipleScattering;
-      msc->SetStepLimitType(fMinimal);
-      G4UrbanMscModel93* msc93 = new G4UrbanMscModel93();
-      G4WentzelVIModel* wvi = new G4WentzelVIModel();
-      msc93->SetHighEnergyLimit(mscEnergyLimit);
-      wvi->SetLowEnergyLimit(mscEnergyLimit);
-      msc->AddEmModel(0, msc93);
-      msc->AddEmModel(0, wvi);
-      pmanager->AddProcess(msc,                   -1, 1, 1);
-      pmanager->AddProcess(eioni,                 -1, 2, 2);
-      pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
-      G4CoulombScattering* sc = new G4CoulombScattering();
-      G4eCoulombScatteringModel* mod = new G4eCoulombScatteringModel();
-      mod->SetActivationLowEnergyLimit(mscEnergyLimit);
-      sc->AddEmModel(0, mod);
-      pmanager->AddDiscreteProcess(sc);
-
-    } else if (particleName == "e+") {
-
-      G4eIonisation* eioni = new G4eIonisation();
-      eioni->SetStepFunction(0.8, 1.0*mm);
-      G4eMultipleScattering* msc = new G4eMultipleScattering;
-      msc->SetStepLimitType(fMinimal);
-      G4UrbanMscModel93* msc93 = new G4UrbanMscModel93();
-      G4WentzelVIModel* wvi = new G4WentzelVIModel();
-      msc93->SetHighEnergyLimit(mscEnergyLimit);
-      wvi->SetLowEnergyLimit(mscEnergyLimit);
-      msc->AddEmModel(0, msc93);
-      msc->AddEmModel(0, wvi);
-      pmanager->AddProcess(msc,                     -1, 1, 1);
-      pmanager->AddProcess(eioni,                   -1, 2, 2);
-      pmanager->AddProcess(new G4eBremsstrahlung,   -1,-3, 3);
-      pmanager->AddProcess(new G4eplusAnnihilation,  0,-1, 4);
-      G4CoulombScattering* sc = new G4CoulombScattering();
-      G4eCoulombScatteringModel* mod = new G4eCoulombScatteringModel();
-      mod->SetActivationLowEnergyLimit(mscEnergyLimit);
-      sc->AddEmModel(0, mod);
-      pmanager->AddDiscreteProcess(sc);
-
-    } else if (particleName == "mu+" ||
-               particleName == "mu-"    ) {
-
-      G4MuMultipleScattering* msc = new G4MuMultipleScattering();
-      msc->AddEmModel(0, new G4WentzelVIModel());
-      pmanager->AddProcess(msc,                     -1, 1, 1);
-      pmanager->AddProcess(new G4MuIonisation,      -1, 2, 2);
-      pmanager->AddProcess(new G4MuBremsstrahlung,  -1,-3, 3);
-      pmanager->AddProcess(new G4MuPairProduction,  -1,-4, 4);
-      pmanager->AddDiscreteProcess(new G4CoulombScattering());
-
-    } else if (particleName == "alpha" ||
-               particleName == "He3") {
-
-      pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
-      pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
-
-    } else if (particleName == "GenericIon") {
-
-      pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
-      pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
-
-    } else if (particleName == "pi+" ||
-               particleName == "pi-" ||
-	       particleName == "kaon+" ||
-               particleName == "kaon-" ||
-               particleName == "proton" ) {
-
-      G4MuMultipleScattering* msc = new G4MuMultipleScattering();
-      msc->AddEmModel(0, new G4WentzelVIModel());
-      pmanager->AddProcess(msc, -1, 1, 1);
-      pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
-      pmanager->AddProcess(new G4hBremsstrahlung,     -1,-3, 3);
-      pmanager->AddProcess(new G4hPairProduction,     -1,-4, 4);
-
-    } else if (particleName == "B+" ||
-	       particleName == "B-" ||
-	       particleName == "D+" ||
-	       particleName == "D-" ||
-	       particleName == "Ds+" ||
-	       particleName == "Ds-" ||
-               particleName == "anti_He3" ||
-               particleName == "anti_alpha" ||
-               particleName == "anti_deuteron" ||
-               particleName == "anti_lambda_c+" ||
-               particleName == "anti_omega-" ||
-               particleName == "anti_proton" ||
-               particleName == "anti_sigma_c+" ||
-               particleName == "anti_sigma_c++" ||
-               particleName == "anti_sigma+" ||
-               particleName == "anti_sigma-" ||
-               particleName == "anti_triton" ||
-               particleName == "anti_xi_c+" ||
-               particleName == "anti_xi-" ||
-               particleName == "deuteron" ||
-	       particleName == "lambda_c+" ||
-               particleName == "omega-" ||
-               particleName == "sigma_c+" ||
-               particleName == "sigma_c++" ||
-               particleName == "sigma+" ||
-               particleName == "sigma-" ||
-               particleName == "tau+" ||
-               particleName == "tau-" ||
-               particleName == "triton" ||
-               particleName == "xi_c+" ||
-               particleName == "xi-" ) {
-
-      G4MuMultipleScattering* msc = new G4MuMultipleScattering();
-      msc->AddEmModel(0, new G4WentzelVIModel());
-      pmanager->AddProcess(msc, -1, 1, 1);
-      pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
-    }
-  }
-  G4EmProcessOptions opt;
-  opt.SetVerbose(verbose);
-  opt.SetPolarAngleLimit(CLHEP::pi);
-  opt.SetApplyCuts(true);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4EmStandardPhysics_option1LHCb.cc,v 1.22 2010-12-19 18:11:05 vnivanch Exp $
+// GEANT4 tag $Name: not supported by cvs2svn $
+//
+//---------------------------------------------------------------------------
+//
+// ClassName:   G4EmStandardPhysics_option1LHCb
+//
+// Author:      V.Ivanchenko 29.06.2011
+//
+// Modified:
+//
+//----------------------------------------------------------------------------
+//
+
+#include "G4EmStandardPhysics_option1LHCb.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4ProcessManager.hh"
+#include "G4LossTableManager.hh"
+#include "G4EmProcessOptions.hh"
+
+#include "G4ComptonScattering.hh"
+#include "G4GammaConversion.hh"
+#include "G4PhotoElectricEffect.hh"
+
+#include "G4eMultipleScattering.hh"
+#include "G4MuMultipleScattering.hh"
+#include "G4hMultipleScattering.hh"
+#include "G4CoulombScattering.hh"
+#include "G4WentzelVIModel.hh"
+#include "G4UrbanMscModel93.hh"
+#include "G4eCoulombScatteringModel.hh"
+
+#include "G4eIonisation.hh"
+#include "G4eBremsstrahlung.hh"
+#include "G4eplusAnnihilation.hh"
+
+#include "G4MuIonisation.hh"
+#include "G4MuBremsstrahlung.hh"
+#include "G4MuPairProduction.hh"
+#include "G4hBremsstrahlung.hh"
+#include "G4hPairProduction.hh"
+
+#include "G4hIonisation.hh"
+#include "G4ionIonisation.hh"
+#include "G4alphaIonisation.hh"
+
+#include "G4Gamma.hh"
+#include "G4Electron.hh"
+#include "G4Positron.hh"
+#include "G4MuonPlus.hh"
+#include "G4MuonMinus.hh"
+#include "G4PionPlus.hh"
+#include "G4PionMinus.hh"
+#include "G4KaonPlus.hh"
+#include "G4KaonMinus.hh"
+#include "G4Proton.hh"
+#include "G4AntiProton.hh"
+#include "G4Deuteron.hh"
+#include "G4Triton.hh"
+#include "G4He3.hh"
+#include "G4Alpha.hh"
+#include "G4GenericIon.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4EmStandardPhysics_option1LHCb::G4EmStandardPhysics_option1LHCb(G4int ver, bool apply, bool newForE )
+  : G4VPhysicsConstructor("G4EmStandard_opt1_LHCb"), verbose(ver), applyCut(apply), newForElectrons(newForE)
+{
+  G4LossTableManager::Instance();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4EmStandardPhysics_option1LHCb::~G4EmStandardPhysics_option1LHCb()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4EmStandardPhysics_option1LHCb::ConstructParticle()
+{
+// gamma
+  G4Gamma::Gamma();
+
+// leptons
+  G4Electron::Electron();
+  G4Positron::Positron();
+  G4MuonPlus::MuonPlus();
+  G4MuonMinus::MuonMinus();
+
+// mesons
+  G4PionPlus::PionPlusDefinition();
+  G4PionMinus::PionMinusDefinition();
+  G4KaonPlus::KaonPlusDefinition();
+  G4KaonMinus::KaonMinusDefinition();
+
+// barions
+  G4Proton::Proton();
+  G4AntiProton::AntiProton();
+
+// ions
+  G4Deuteron::Deuteron();
+  G4Triton::Triton();
+  G4He3::He3();
+  G4Alpha::Alpha();
+  G4GenericIon::GenericIonDefinition();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4EmStandardPhysics_option1LHCb::ConstructProcess()
+{
+
+  std::cout << "Physics List " << GetPhysicsName() 
+            << ", apply cut " << applyCut
+            << ", new for electrons " << newForElectrons
+            << std::endl;
+
+  // Add standard EM Processes
+  G4double mscEnergyLimit = 1.05*GeV;
+
+  theParticleIterator->reset();
+  while( (*theParticleIterator)() ){
+    G4ParticleDefinition* particle = theParticleIterator->value();
+    G4ProcessManager* pmanager = particle->GetProcessManager();
+    G4String particleName = particle->GetParticleName();
+    if(verbose > 1)
+      G4cout << "### " << GetPhysicsName() << " instantiates for " 
+	     << particleName << G4endl;
+
+    if (particleName == "gamma") {
+
+      pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
+      pmanager->AddDiscreteProcess(new G4ComptonScattering);
+      pmanager->AddDiscreteProcess(new G4GammaConversion);
+
+    } else if (particleName == "e-") {
+
+      G4eIonisation* eioni = new G4eIonisation();
+      eioni->SetStepFunction(0.8, 1.0*mm);
+      G4eMultipleScattering* msc = new G4eMultipleScattering;
+      msc->SetStepLimitType(fMinimal);
+      if (newForElectrons) {
+        std::cout << "new model for electrons" << std::endl;
+      G4UrbanMscModel93* msc93 = new G4UrbanMscModel93();
+      G4WentzelVIModel* wvi = new G4WentzelVIModel();
+      msc93->SetHighEnergyLimit(mscEnergyLimit);
+      wvi->SetLowEnergyLimit(mscEnergyLimit);
+      msc->AddEmModel(0, msc93);
+      msc->AddEmModel(0, wvi);
+      pmanager->AddProcess(msc,                   -1, 1, 1);
+      pmanager->AddProcess(eioni,                 -1, 2, 2);
+      pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
+      G4CoulombScattering* sc = new G4CoulombScattering();
+      G4eCoulombScatteringModel* mod = new G4eCoulombScatteringModel();
+      mod->SetActivationLowEnergyLimit(mscEnergyLimit);
+      sc->AddEmModel(0, mod);
+      pmanager->AddDiscreteProcess(sc);
+      } else {
+        std::cout << "simple model for electrons" << std::endl;
+      pmanager->AddProcess(msc,                   -1, 1, 1);
+      pmanager->AddProcess(eioni,                 -1, 2, 2);
+      pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
+      }
+
+    } else if (particleName == "e+") {
+
+      G4eIonisation* eioni = new G4eIonisation();
+      eioni->SetStepFunction(0.8, 1.0*mm);
+      G4eMultipleScattering* msc = new G4eMultipleScattering;
+      msc->SetStepLimitType(fMinimal);
+      if (newForElectrons ) {
+        std::cout << "new model for positrons" << std::endl;
+      G4UrbanMscModel93* msc93 = new G4UrbanMscModel93();
+      G4WentzelVIModel* wvi = new G4WentzelVIModel();
+      msc93->SetHighEnergyLimit(mscEnergyLimit);
+      wvi->SetLowEnergyLimit(mscEnergyLimit);
+      msc->AddEmModel(0, msc93);
+      msc->AddEmModel(0, wvi);
+      pmanager->AddProcess(msc,                     -1, 1, 1);
+      pmanager->AddProcess(eioni,                   -1, 2, 2);
+      pmanager->AddProcess(new G4eBremsstrahlung,   -1,-3, 3);
+      pmanager->AddProcess(new G4eplusAnnihilation,  0,-1, 4);
+      G4CoulombScattering* sc = new G4CoulombScattering();
+      G4eCoulombScatteringModel* mod = new G4eCoulombScatteringModel();
+      mod->SetActivationLowEnergyLimit(mscEnergyLimit);
+      sc->AddEmModel(0, mod);
+      pmanager->AddDiscreteProcess(sc);
+      }
+      else {
+        std::cout << "simple model for electrons" << std::endl;
+      pmanager->AddProcess(msc,                     -1, 1, 1);
+      pmanager->AddProcess(eioni,                   -1, 2, 2);
+      pmanager->AddProcess(new G4eBremsstrahlung,   -1,-3, 3);
+      pmanager->AddProcess(new G4eplusAnnihilation,  0,-1, 4);
+      }
+
+    } else if (particleName == "mu+" ||
+               particleName == "mu-"    ) {
+
+      G4MuMultipleScattering* msc = new G4MuMultipleScattering();
+      msc->AddEmModel(0, new G4WentzelVIModel());
+      pmanager->AddProcess(msc,                     -1, 1, 1);
+      pmanager->AddProcess(new G4MuIonisation,      -1, 2, 2);
+      pmanager->AddProcess(new G4MuBremsstrahlung,  -1,-3, 3);
+      pmanager->AddProcess(new G4MuPairProduction,  -1,-4, 4);
+      pmanager->AddDiscreteProcess(new G4CoulombScattering());
+
+    } else if (particleName == "alpha" ||
+               particleName == "He3") {
+
+      pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
+      pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
+
+    } else if (particleName == "GenericIon") {
+
+      pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
+      pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
+
+    } else if (particleName == "pi+" ||
+               particleName == "pi-" ||
+	       particleName == "kaon+" ||
+               particleName == "kaon-" ||
+               particleName == "proton" ) {
+
+      G4MuMultipleScattering* msc = new G4MuMultipleScattering();
+      msc->AddEmModel(0, new G4WentzelVIModel());
+      pmanager->AddProcess(msc, -1, 1, 1);
+      pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
+      pmanager->AddProcess(new G4hBremsstrahlung,     -1,-3, 3);
+      pmanager->AddProcess(new G4hPairProduction,     -1,-4, 4);
+
+    } else if (particleName == "B+" ||
+	       particleName == "B-" ||
+	       particleName == "D+" ||
+	       particleName == "D-" ||
+	       particleName == "Ds+" ||
+	       particleName == "Ds-" ||
+               particleName == "anti_He3" ||
+               particleName == "anti_alpha" ||
+               particleName == "anti_deuteron" ||
+               particleName == "anti_lambda_c+" ||
+               particleName == "anti_omega-" ||
+               particleName == "anti_proton" ||
+               particleName == "anti_sigma_c+" ||
+               particleName == "anti_sigma_c++" ||
+               particleName == "anti_sigma+" ||
+               particleName == "anti_sigma-" ||
+               particleName == "anti_triton" ||
+               particleName == "anti_xi_c+" ||
+               particleName == "anti_xi-" ||
+               particleName == "deuteron" ||
+	       particleName == "lambda_c+" ||
+               particleName == "omega-" ||
+               particleName == "sigma_c+" ||
+               particleName == "sigma_c++" ||
+               particleName == "sigma+" ||
+               particleName == "sigma-" ||
+               particleName == "tau+" ||
+               particleName == "tau-" ||
+               particleName == "triton" ||
+               particleName == "xi_c+" ||
+               particleName == "xi-" ) {
+
+      G4MuMultipleScattering* msc = new G4MuMultipleScattering();
+      msc->AddEmModel(0, new G4WentzelVIModel());
+      pmanager->AddProcess(msc, -1, 1, 1);
+      pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
+    }
+  }
+  G4EmProcessOptions opt;
+  opt.SetVerbose(verbose);
+  opt.SetPolarAngleLimit(CLHEP::pi);
+  if (applyCut) {  
+    opt.SetApplyCuts(true);
+    std::cout << GetPhysicsName() << " applying cut" << std::endl;
+  }
+  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Geant4/G4config/cmt/requirements b/Geant4/G4config/cmt/requirements
index eb04906af6..c4fa61300e 100755
--- a/Geant4/G4config/cmt/requirements
+++ b/Geant4/G4config/cmt/requirements
@@ -1,5 +1,5 @@
 package        G4config
-version        v94r2
+version        v94r2p1
 branches       cmt doc
 
 
@@ -12,7 +12,7 @@ use CLHEP       v* LCG_Interfaces
 # set versions of Geant4
 #==============================================================================
 set G4_native_version     "9.4.p02"
-set G4VERS v94r2
+set G4VERS v94r2p1
 
 # =============================================================================
 # set Geant4 environment variables
diff --git a/Geant4/G4config/cmt/version.cmt b/Geant4/G4config/cmt/version.cmt
index bc5ef94e0a..c50c9076b0 100644
--- a/Geant4/G4config/cmt/version.cmt
+++ b/Geant4/G4config/cmt/version.cmt
@@ -1 +1 @@
-v94r2
+v94r2p1
diff --git a/Geant4/G4config/doc/release.notes b/Geant4/G4config/doc/release.notes
index d71269bee7..db46c8255a 100755
--- a/Geant4/G4config/doc/release.notes
+++ b/Geant4/G4config/doc/release.notes
@@ -4,6 +4,10 @@
 ! Purpose     : Configuration package for Geant4 build
 !-----------------------------------------------------------------------------
 
+! ======================= G4config v94r2p1 2011-09-18 ========================
+! 2011-09-19 - Gloria Corti
+ - Only change local version.
+
 ! ======================== G4config v94r2 2011-07-14 =========================
 ! 2011-07-06 - Gloria Corti
  - Change version of Geant4 to 9.4.p02
diff --git a/Geant4Sys/cmt/requirements b/Geant4Sys/cmt/requirements
index 9573038a4a..e85071e41a 100755
--- a/Geant4Sys/cmt/requirements
+++ b/Geant4Sys/cmt/requirements
@@ -1,9 +1,9 @@
 package     Geant4Sys
-version     v94r2
+version     v94r2p1
 
 branches    cmt doc 
  
-use     G4config              v94r2  Geant4 
+use     G4config              v94r2p1  Geant4 
  
 # =============================================================================
 # =========== global libraries ================================================
@@ -45,7 +45,7 @@ use     G4UIbasic             v4r3 Geant4
 use     G4UIGAG               v4r2 Geant4
 
 # LHCb additional package (eg. for MC11 G4LHCblists)
-use     G4LHCblists           v2r0 Geant4
+use     G4LHCblists           v2r1 Geant4
 
 #=============================================================================
 # ======== the end ============================================================
diff --git a/Geant4Sys/cmt/version.cmt b/Geant4Sys/cmt/version.cmt
index bc5ef94e0a..c50c9076b0 100644
--- a/Geant4Sys/cmt/version.cmt
+++ b/Geant4Sys/cmt/version.cmt
@@ -1 +1 @@
-v94r2
+v94r2p1
diff --git a/Geant4Sys/doc/release.notes b/Geant4Sys/doc/release.notes
index f667c26e21..40eebf8c88 100755
--- a/Geant4Sys/doc/release.notes
+++ b/Geant4Sys/doc/release.notes
@@ -3,6 +3,22 @@ Package            : Geant4Sys
 Package manager(s) : Gloria Corti, Hubert DeGaudenzi
 Purpose            : LHCb build using cmt of Geant4
 
+!</PRE><H1><A NAME=v94r2p1>2011-09-20 Geant4Sys v94r2p1</A></H1><PRE>
+                use Gaudi v22r4 and geant4 9.4.patch02
+                built on slc5 i686(32-bit), x86_64(64-bit) and icc11
+
+! ======================= G4config v94r2p1 2011-09-18 ========================
+! 2011-09-19 - Gloria Corti
+ - Only change local version.
+
+!======================== G4LHCblists v2r1 2011-09-19 ========================
+! 2011-09-18 - Gloria Corti
+ - Add options in contructor to apply or not the cuts, as to have the
+   possibility to have a physics list with old EM behaviour and new MS and to
+   apply simple MS to e+/- as provided by A.Dotti to address CMS calorimeter
+   issues with this physics list
+
+!=============================================================================
 !</PRE><H1><A NAME=v94r2>2011-07-14 Geant4Sys v94r2</A></H1><PRE>
                 use Gaudi v22r2 and geant4 9.4.patch02
                 built on slc5 i686(32-bit), x86_64(64-bit) and icc11
diff --git a/cmt/project.cmt b/cmt/project.cmt
index d1903a3633..943d921934 100755
--- a/cmt/project.cmt
+++ b/cmt/project.cmt
@@ -1,6 +1,6 @@
 project GEANT4
 
-use GAUDI	GAUDI_v22r2
+use GAUDI	GAUDI_v22r4
 
 build_strategy	with_installarea
 setup_strategy	root
-- 
GitLab