Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-11-21 00:29:10

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 from SimG4Core.Application.hectorParameter_cfi import *
0004 
0005 ## HF Raddam Dose Class in /SimG4CMS/Calo
0006 from SimG4CMS.Calo.HFDarkeningParams_cff import *
0007 
0008 ## HF shower parameters
0009 from Geometry.HcalSimData.HFParameters_cff import *
0010 
0011 ## Modification needed for H2 TestBeam studies
0012 from Configuration.Eras.Modifier_h2tb_cff import h2tb
0013 
0014 ## This object is used to customise g4SimHits for different running scenarios
0015 
0016 common_heavy_suppression = cms.PSet(
0017     NeutronThreshold = cms.double(30.0),
0018     ProtonThreshold = cms.double(30.0),
0019     IonThreshold = cms.double(30.0)
0020 )
0021 
0022 common_maximum_time = cms.PSet(
0023     MaxTrackTime  = cms.double(500.0), # ns
0024     MaxTrackTimeForward = cms.double(2000.0), # ns
0025     MaxTimeNames  = cms.vstring(),
0026     MaxTrackTimes = cms.vdouble(),     # ns
0027     MaxZCentralCMS = cms.double(50.0), # m
0028     DeadRegions   = cms.vstring('QuadRegion','InterimRegion'),
0029     CriticalEnergyForVacuum = cms.double(2.0),   # MeV
0030     CriticalDensity         = cms.double(1e-15)  # g/cm3
0031 )
0032 
0033 h2tb.toModify(common_maximum_time,
0034     MaxTrackTime = cms.double(1000.0),
0035     DeadRegions  = cms.vstring()
0036 )
0037 
0038 common_UsePMT = cms.PSet(
0039     UseR7600UPMT  = cms.bool(False)
0040 )
0041 
0042 common_UseHF = cms.PSet(
0043     Lambda1       = cms.double(280.0),
0044     Lambda2       = cms.double(700.0),
0045     Gain          = cms.double(0.33),
0046     CheckSurvive  = cms.bool(False),
0047     FibreR        = cms.double(0.3)
0048 )
0049 
0050 common_UseLuminosity = cms.PSet(
0051     InstLuminosity  = cms.double(0.),
0052     DelivLuminosity = cms.double(5000.)
0053 )
0054 
0055 common_MCtruth = cms.PSet(
0056     DoFineCalo = cms.bool(False),
0057     SaveCaloBoundaryInformation = cms.bool(False),
0058     # currently unused; left in place for future studies
0059     EminFineTrack = cms.double(10000.0),
0060     FineCaloNames = cms.vstring('ECAL', 'HCal', 'HGCal', 'HFNoseVol', 'VCAL'),
0061     FineCaloLevels = cms.vint32(4, 4, 8, 3, 3),
0062     UseFineCalo = cms.vint32(2, 3),
0063 )
0064 
0065 ## enable fine calorimeter functionality: must occur *before* common PSet is used below
0066 from Configuration.ProcessModifiers.fineCalo_cff import fineCalo
0067 fineCalo.toModify(common_MCtruth,
0068     DoFineCalo = True,
0069     UseFineCalo = [2],
0070     EminFineTrack = 0.0,
0071 )
0072 
0073 ## enable CaloBoundary information for all Phase2 workflows
0074 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
0075 phase2_hgcal.toModify(common_MCtruth,
0076         SaveCaloBoundaryInformation = True
0077 )
0078 
0079 g4SimHits = cms.EDProducer("OscarMTProducer",
0080     g4GeometryDD4hepSource = cms.bool(False),
0081     NonBeamEvent = cms.bool(False),
0082     EventVerbose = cms.int32(0),
0083     UseG4EventManager = cms.bool(True),
0084     UseMagneticField = cms.bool(True),
0085     UseCommandBaseScorer = cms.bool(False),
0086     StoreRndmSeeds = cms.bool(False),
0087     RestoreRndmSeeds = cms.bool(False),
0088     PhysicsTablesDirectory = cms.untracked.string(''),
0089     StorePhysicsTables = cms.untracked.bool(False),
0090     RestorePhysicsTables = cms.untracked.bool(False),
0091     UseParametrisedEMPhysics = cms.untracked.bool(True),
0092     ThresholdForGeometryExceptions = cms.double(0.1), ## in GeV
0093     TraceExceptions = cms.bool(False),
0094     CheckGeometry = cms.untracked.bool(False),
0095     OnlySDs = cms.vstring('ZdcSensitiveDetector', 'TotemT2ScintSensitiveDetector', 'TotemSensitiveDetector', 'RomanPotSensitiveDetector', 'PLTSensitiveDetector', 'MuonSensitiveDetector', 'MtdSensitiveDetector', 'BCM1FSensitiveDetector', 'EcalSensitiveDetector', 'CTPPSSensitiveDetector', 'BSCSensitiveDetector', 'CTPPSDiamondSensitiveDetector', 'FP420SensitiveDetector', 'BHMSensitiveDetector', 'CastorSensitiveDetector', 'CaloTrkProcessing', 'HcalSensitiveDetector', 'TkAccumulatingSensitiveDetector'),
0096     Init = cms.PSet(
0097         DefaultVoxelDensity = cms.double(2.0),
0098         VoxelRegions = cms.vstring(),
0099         VoxelDensityPerRegion = cms.vdouble()
0100     ),
0101     G4CheckOverlap = cms.untracked.PSet(
0102         OutputBaseName = cms.string('2022'),
0103         MaterialFlag = cms.bool(True),
0104         GeomFlag = cms.bool(True),
0105         OverlapFlag = cms.bool(False),
0106         RegionFlag = cms.bool(True),  # if true - selection by G4Region name
0107         gdmlFlag = cms.bool(False),   # if true - dump gdml file
0108         Verbose = cms.bool(True),
0109         Tolerance = cms.double(0.0),
0110         Resolution = cms.int32(10000),
0111         ErrorThreshold = cms.int32(1),
0112         Level = cms.int32(1),
0113         Depth = cms.int32(3),        # -1 means check whatever depth
0114         PVname = cms.string(''),
0115         LVname = cms.string(''),
0116         NodeNames = cms.vstring('World')
0117     ),
0118     G4Commands = cms.vstring(),
0119     G4CommandsEndRun = cms.vstring(),
0120     SteppingVerbosity = cms.untracked.int32(0),
0121     StepVerboseThreshold = cms.untracked.double(0.1), # in GeV
0122     VerboseEvents = cms.untracked.vint32(),
0123     VertexNumber  = cms.untracked.vint32(),
0124     VerboseTracks = cms.untracked.vint32(),
0125     FileNameField = cms.untracked.string(''),
0126     FileNameGDML = cms.untracked.string(''),
0127     FileNameRegions = cms.untracked.string(''),
0128     Watchers = cms.VPSet(),
0129     HepMCProductLabel = cms.InputTag("generatorSmeared"),
0130     theLHCTlinkTag = cms.InputTag("LHCTransport"),
0131     LHCTransport = cms.bool(False),
0132     CustomUIsession = cms.untracked.PSet(
0133         Type = cms.untracked.string("MessageLogger"), # alternatives: MessageLoggerThreadPrefix, FilePerThread
0134         ThreadPrefix = cms.untracked.string("W"),     # for MessageLoggerThreadPrefix
0135         ThreadFile = cms.untracked.string("sim_output_thread"), # for FilePerThread
0136     ),
0137     MagneticField = cms.PSet(
0138         UseLocalMagFieldManager = cms.bool(False),
0139         Verbosity = cms.bool(False),
0140         ConfGlobalMFM = cms.PSet(
0141             Volume = cms.string('OCMS'),
0142             OCMS = cms.PSet(
0143                 Stepper = cms.string('CMSTDormandPrince45'),
0144                 Type = cms.string('CMSIMField'),
0145                 StepperParam = cms.PSet(
0146                     VacRegions = cms.vstring(),
0147 #                   VacRegions = cms.vstring('DefaultRegionForTheWorld','BeamPipeVacuum','BeamPipeOutside'),
0148                     EnergyThTracker = cms.double(0.2),     ## in GeV
0149                     RmaxTracker = cms.double(8000),        ## in mm
0150                     ZmaxTracker = cms.double(11000),       ## in mm
0151                     MaximumEpsilonStep = cms.untracked.double(0.01),
0152                     DeltaOneStep = cms.double(0.001),      ## in mm
0153                     DeltaOneStepTracker = cms.double(1e-4),## in mm
0154                     MaximumLoopCounts = cms.untracked.double(1000.0),
0155                     DeltaChord = cms.double(0.002),        ## in mm
0156                     DeltaChordTracker = cms.double(0.001), ## in mm
0157                     MinStep = cms.double(0.1),             ## in mm
0158                     DeltaIntersectionAndOneStep = cms.untracked.double(-1.0),
0159                     DeltaIntersection = cms.double(0.0001),     ## in mm
0160                     DeltaIntersectionTracker = cms.double(1e-6),## in mm
0161                     MaxStep = cms.double(150.),            ## in cm
0162                     MinimumEpsilonStep = cms.untracked.double(1e-05),
0163                     EnergyThSimple = cms.double(0.015),    ## in GeV
0164                     DeltaChordSimple = cms.double(0.1),    ## in mm
0165                     DeltaOneStepSimple = cms.double(0.1),  ## in mm
0166                     DeltaIntersectionSimple = cms.double(0.01), ## in mm
0167                     MaxStepSimple = cms.double(50.),       ## in cm
0168                 )
0169             )
0170         ),
0171         delta = cms.double(1.0) ## in mm
0172     ),
0173     Physics = cms.PSet(
0174         common_maximum_time,
0175         # NOTE : if you want EM Physics only,
0176         #        please select "SimG4Core/Physics/DummyPhysics" for type
0177         #        and turn ON DummyEMPhysics
0178         #
0179         type = cms.string('SimG4Core/Physics/FTFP_BERT_EMM'),
0180         DummyEMPhysics = cms.bool(False),
0181         # 1 will print cuts as they get set from DD
0182         # 2 will do as 1 + will dump Geant4 table of cuts
0183         Verbosity = cms.untracked.int32(0),
0184         # EM physics options
0185         CutsPerRegion = cms.bool(True),
0186         CutsOnProton  = cms.bool(True),
0187         DefaultCutValue = cms.double(1.0), ## cuts in cm
0188         G4BremsstrahlungThreshold = cms.double(0.5), ## cut in GeV
0189         G4MuonBremsstrahlungThreshold = cms.double(10000.), ## cut in GeV
0190         G4TrackingCut = cms.double(0.025), ## cut in MeV
0191         G4MscRangeFactor = cms.double(0.04),
0192         G4MscGeomFactor = cms.double(2.5), 
0193         G4MscSafetyFactor = cms.double(0.6), 
0194         G4MscLambdaLimit = cms.double(1.0), # in mm 
0195         G4MscStepLimit = cms.string("UseSafety"),
0196         G4GammaGeneralProcess = cms.bool(True),
0197         G4ElectronGeneralProcess = cms.bool(False),
0198         G4TransportWithMSC = cms.int32(2),  # 1 - fEnabled, 2 - fMultipleSteps
0199         PhotoeffectBelowKShell = cms.bool(False),
0200         G4HepEmActive = cms.bool(False),
0201         G4MuonPairProductionByMuon = cms.bool(False),
0202         ReadMuonData = cms.bool(False), 
0203         Region      = cms.string(''),
0204         TrackingCut = cms.bool(False),
0205         SRType      = cms.bool(True),
0206         FlagMuNucl  = cms.bool(False),
0207         FlagFluo    = cms.bool(False),
0208         EMPhysics   = cms.untracked.bool(True),
0209         # Hadronic physics options
0210         HadPhysics  = cms.untracked.bool(True),
0211         FlagBERT    = cms.untracked.bool(False),
0212         EminFTFP    = cms.double(3.), # in GeV
0213         EmaxBERT    = cms.double(6.), # in GeV
0214         EminQGSP    = cms.double(12.), # in GeV
0215         EmaxFTFP    = cms.double(25.), # in GeV
0216         EmaxBERTpi  = cms.double(12.), # in GeV
0217         G4NeutronGeneralProcess = cms.bool(False),
0218         G4BCHadronicProcess = cms.bool(False),
0219         G4LightHyperNucleiTracking = cms.bool(False),
0220         ThermalNeutrons = cms.untracked.bool(False),
0221         # Exotica
0222         MonopoleCharge       = cms.untracked.int32(1),
0223         MonopoleDeltaRay     = cms.untracked.bool(True),
0224         MonopoleMultiScatter = cms.untracked.bool(False),
0225         MonopoleTransport    = cms.untracked.bool(True),
0226         MonopoleMass         = cms.untracked.double(0),
0227         ExoticaTransport     = cms.untracked.bool(False),
0228         ExoticaPhysicsSS     = cms.untracked.bool(False),
0229         RhadronPhysics       = cms.bool(False),
0230         DarkMPFactor         = cms.double(1.0),
0231         # GFlash methods
0232         LowEnergyGflashEcal = cms.bool(False),
0233         LowEnergyGflashEcalEmax = cms.double(0.02), # in GeV
0234         GflashEcal    = cms.bool(False),
0235         GflashHcal    = cms.bool(False),
0236         GflashEcalHad = cms.bool(False),
0237         GflashHcalHad = cms.bool(False),
0238         bField        = cms.double(3.8),
0239         energyScaleEB = cms.double(1.032),
0240         energyScaleEE = cms.double(1.024),
0241         # Russian roulette
0242         RusRoElectronEnergyLimit  = cms.double(0.0),
0243         RusRoEcalElectron         = cms.double(1.0),
0244         RusRoHcalElectron         = cms.double(1.0),
0245         RusRoMuonIronElectron     = cms.double(1.0),
0246         RusRoPreShowerElectron    = cms.double(1.0),
0247         RusRoCastorElectron       = cms.double(1.0),
0248         RusRoWorldElectron        = cms.double(1.0),
0249         # Tracking and step limiters
0250         ElectronStepLimit         = cms.bool(False),
0251         ElectronRangeTest         = cms.bool(False),
0252         PositronStepLimit         = cms.bool(False),
0253         ProtonRegionLimit         = cms.bool(False),
0254         PionRegionLimit           = cms.bool(False),
0255         LimitsPerRegion = cms.vstring('EcalRegion','HcalRegion'),
0256         EnergyLimitsE   = cms.vdouble(0.,0.0),
0257         EnergyLimitsH   = cms.vdouble(0.,0.0),
0258         EnergyFactorsE  = cms.vdouble(1.,0.0),
0259         EnergyRMSE      = cms.vdouble(0.0,0.0),
0260         MinStepLimit              = cms.double(1.0),
0261         ModifyTransportation      = cms.bool(False),
0262         ThresholdWarningEnergy    = cms.untracked.double(100.0), #in MeV
0263         ThresholdImportantEnergy  = cms.untracked.double(250.0), #in MeV
0264         ThresholdTrials           = cms.untracked.int32(10)
0265     ),
0266     Generator = cms.PSet(
0267         common_maximum_time,
0268         HectorEtaCut,
0269         HepMCProductLabel = cms.InputTag('generatorSmeared'),
0270         ApplyPCuts = cms.bool(True),
0271         ApplyPtransCut = cms.bool(False),
0272         MinPCut = cms.double(0.04), ## the cut is in GeV 
0273         MaxPCut = cms.double(99999.0), ## the pmax=99.TeV 
0274         ApplyEtaCuts = cms.bool(True),
0275         MinEtaCut = cms.double(-5.5),
0276         MaxEtaCut = cms.double(5.5),
0277         RDecLenCut = cms.double(2.9), ## (cm) the cut on vertex radius
0278         LDecLenCut = cms.double(30.0), ## (cm) decay volume length
0279         ApplyPhiCuts = cms.bool(False),
0280         MinPhiCut = cms.double(-3.14159265359), ## (radians)
0281         MaxPhiCut = cms.double(3.14159265359),  ## according to CMS conventions
0282         ApplyLumiMonitorCuts = cms.bool(False), ## primary for lumi monitors
0283         Verbosity = cms.untracked.int32(0),
0284         PDGselection = cms.PSet(
0285             PDGfilterSel = cms.bool(False), ## filter out unwanted particles
0286             PDGfilter = cms.vint32(21,1,2,3,4,5,6) ## list of unwanted particles (gluons and quarks)
0287         )
0288     ),
0289     RunAction = cms.PSet(
0290         StopFile = cms.string('')
0291     ),
0292     EventAction = cms.PSet(
0293         debug = cms.untracked.bool(False),
0294         StopFile = cms.string(''),
0295         PrintRandomSeed = cms.bool(False),
0296         CollapsePrimaryVertices = cms.bool(False)
0297     ),
0298     StackingAction = cms.PSet(
0299         common_heavy_suppression,
0300         common_maximum_time,
0301         KillDeltaRay  = cms.bool(False),
0302         TrackNeutrino = cms.bool(False),
0303         KillHeavy     = cms.bool(False),
0304         KillGamma     = cms.bool(True),
0305         GammaThreshold = cms.double(0.0001), ## (MeV)
0306         SaveFirstLevelSecondary = cms.untracked.bool(False),
0307         SavePrimaryDecayProductsAndConversionsInTracker = cms.untracked.bool(False),
0308         SavePrimaryDecayProductsAndConversionsInCalo = cms.untracked.bool(False),
0309         SavePrimaryDecayProductsAndConversionsInMuon = cms.untracked.bool(False),
0310         SaveAllPrimaryDecayProductsAndConversions = cms.untracked.bool(True),
0311         RusRoGammaEnergyLimit  = cms.double(5.0), ## (MeV)
0312         RusRoEcalGamma         = cms.double(0.3),
0313         RusRoHcalGamma         = cms.double(0.3),
0314         RusRoMuonIronGamma     = cms.double(0.3),
0315         RusRoPreShowerGamma    = cms.double(0.3),
0316         RusRoCastorGamma       = cms.double(0.3),
0317         RusRoWorldGamma        = cms.double(0.3),
0318         RusRoNeutronEnergyLimit  = cms.double(10.0), ## (MeV)
0319         RusRoEcalNeutron         = cms.double(0.1),
0320         RusRoHcalNeutron         = cms.double(0.1),
0321         RusRoMuonIronNeutron     = cms.double(0.1),
0322         RusRoPreShowerNeutron    = cms.double(0.1),
0323         RusRoCastorNeutron       = cms.double(0.1),
0324         RusRoWorldNeutron        = cms.double(0.1),
0325         RusRoProtonEnergyLimit  = cms.double(0.0),
0326         RusRoEcalProton         = cms.double(1.0),
0327         RusRoHcalProton         = cms.double(1.0),
0328         RusRoMuonIronProton     = cms.double(1.0),
0329         RusRoPreShowerProton    = cms.double(1.0),
0330         RusRoCastorProton       = cms.double(1.0),
0331         RusRoWorldProton        = cms.double(1.0)
0332     ),
0333     TrackingAction = cms.PSet(
0334         common_MCtruth,
0335         DetailedTiming = cms.untracked.bool(False),
0336         CheckTrack = cms.untracked.bool(False),
0337         EndPrintTrackID = cms.int32(0)
0338     ),
0339     SteppingAction = cms.PSet(
0340         common_maximum_time,
0341         MaxNumberOfSteps        = cms.int32(20000),
0342         EkinNames               = cms.vstring(),
0343         EkinThresholds          = cms.vdouble(),
0344         EkinParticles           = cms.vstring()
0345     ),
0346     TrackerSD = cms.PSet(
0347         ZeroEnergyLoss = cms.bool(False),
0348         PrintHits = cms.bool(False),
0349         ElectronicSigmaInNanoSeconds = cms.double(12.06),
0350         NeverAccumulate = cms.bool(False),
0351         EnergyThresholdForPersistencyInGeV = cms.double(0.2),
0352         EnergyThresholdForHistoryInGeV = cms.double(0.05)
0353     ),
0354     MuonSD = cms.PSet(
0355         EnergyThresholdForPersistency = cms.double(1.0),
0356         PrintHits = cms.bool(False),
0357         AllMuonsPersistent = cms.bool(True),
0358         UseDemoHitRPC = cms.bool(True),
0359         UseDemoHitGEM = cms.bool(True),
0360         HaveDemoChambers = cms.bool(True)
0361     ),
0362     CaloSD = cms.PSet(
0363         common_heavy_suppression,
0364         common_MCtruth,
0365         SuppressHeavy = cms.bool(False),
0366         EminTrack = cms.double(1.0),
0367         TmaxHit   = cms.double(1000.0),
0368         HCNames   = cms.vstring('EcalHitsEB','EcalHitsEE','EcalHitsES','HcalHits','ZDCHITS'),
0369         EminHits  = cms.vdouble(0.015,0.010,0.0,0.0,0.0),
0370         EminHitsDepth = cms.vdouble(0.0,0.0,0.0,0.0,0.0),
0371         TmaxHits  = cms.vdouble(500.0,500.0,500.0,500.0,2000.0),
0372         UseResponseTables = cms.vint32(0,0,0,0,0),
0373         BeamPosition      = cms.double(0.0),
0374         CorrectTOFBeam    = cms.bool(False),
0375         DetailedTiming    = cms.untracked.bool(False),
0376         UseMap            = cms.untracked.bool(False),
0377         Verbosity         = cms.untracked.int32(0),
0378         CheckHits         = cms.untracked.int32(25)
0379     ),
0380     CaloResponse = cms.PSet(
0381         UseResponseTable  = cms.bool(True),
0382         ResponseScale     = cms.double(1.0),
0383         ResponseFile      = cms.FileInPath('SimG4CMS/Calo/data/responsTBpim50.dat')
0384     ),
0385     ECalSD = cms.PSet(
0386         common_UseLuminosity,
0387         UseBirkLaw      = cms.bool(True),
0388         BirkL3Parametrization = cms.bool(True),
0389         BirkSlope       = cms.double(0.253694),
0390         BirkCut         = cms.double(0.1),
0391         BirkC1          = cms.double(0.03333),
0392         BirkC3          = cms.double(1.0),
0393         BirkC2          = cms.double(0.0),
0394         SlopeLightYield = cms.double(0.02),
0395         StoreSecondary  = cms.bool(False),
0396         TimeSliceUnit   = cms.double(1),
0397         IgnoreTrackID   = cms.bool(False),
0398         XtalMat         = cms.untracked.string('E_PbWO4'),
0399         TestBeam        = cms.untracked.bool(False),
0400         NullNumbering   = cms.untracked.bool(False),
0401         StoreRadLength  = cms.untracked.bool(False),
0402         ScaleRadLength  = cms.untracked.double(1.0),
0403         StoreLayerTimeSim = cms.untracked.bool(False),
0404         AgeingWithSlopeLY = cms.untracked.bool(False),
0405         Detectors         = cms.untracked.int32(3),
0406         DumpGeometry      = cms.untracked.int32(0)
0407         ),
0408     HCalSD = cms.PSet(
0409         common_UseLuminosity,
0410         UseBirkLaw                = cms.bool(True),
0411         BirkC3                    = cms.double(1.75),
0412         BirkC2                    = cms.double(0.142),
0413         BirkC1                    = cms.double(0.0060),
0414         UseShowerLibrary          = cms.bool(True),
0415         UseParametrize            = cms.bool(False),
0416         UsePMTHits                = cms.bool(False),
0417         UseFibreBundleHits        = cms.bool(False),
0418         TestNumberingScheme       = cms.bool(False),
0419         doNeutralDensityFilter    = cms.bool(False),
0420         EminHitHB                 = cms.double(0.0),
0421         EminHitHE                 = cms.double(0.0),
0422         EminHitHO                 = cms.double(0.0),
0423         EminHitHF                 = cms.double(0.0),
0424         BetaThreshold             = cms.double(0.7),
0425         TimeSliceUnit             = cms.double(1),
0426         IgnoreTrackID             = cms.bool(False),
0427         HBDarkening               = cms.bool(False),
0428         HEDarkening               = cms.bool(False),
0429         HFDarkening               = cms.bool(False),
0430         UseHF                     = cms.untracked.bool(True),
0431         ForTBH2                   = cms.untracked.bool(False),
0432         ForTBHCAL                 = cms.untracked.bool(False),
0433         UseLayerWt                = cms.untracked.bool(False),
0434         WtFile                    = cms.untracked.string('None'),
0435         TestNS                    = cms.untracked.bool(False),
0436         DumpGeometry              = cms.untracked.bool(False),
0437         HFDarkeningParameterBlock = HFDarkeningParameterBlock
0438     ),
0439     CaloTrkProcessing = cms.PSet(
0440         common_MCtruth,
0441         TestBeam   = cms.bool(False),
0442         EminTrack  = cms.double(0.01),
0443         PutHistory = cms.bool(False),
0444     ),
0445     HFShower = cms.PSet(
0446         common_UsePMT,
0447         common_UseHF,
0448         PEPerGeV          = cms.double(0.31),
0449         TrackEM           = cms.bool(False),
0450         UseShowerLibrary  = cms.bool(True),
0451         UseHFGflash       = cms.bool(False),
0452         EminLibrary       = cms.double(0.0),
0453         LambdaMean        = cms.double(350.0),
0454         ApplyFiducialCut  = cms.bool(True),
0455         RefIndex          = cms.double(1.459),
0456         Aperture          = cms.double(0.33),
0457         ApertureTrapped   = cms.double(0.22),
0458         CosApertureTrapped= cms.double(0.5),
0459         SinPsiMax         = cms.untracked.double(0.5),
0460         ParametrizeLast   = cms.untracked.bool(False),
0461         HFShowerBlock     = cms.PSet(refToPSet_ = cms.string("HFShowerBlock"))
0462     ),
0463     HFShowerLibrary = cms.PSet(
0464         HFLibraryFileBlock = cms.PSet(refToPSet_ = cms.string("HFLibraryFileBlock"))
0465     ),
0466     HFShowerPMT = cms.PSet(
0467         common_UsePMT,
0468         common_UseHF,
0469         PEPerGeVPMT       = cms.double(1.0),
0470         RefIndex          = cms.double(1.52),
0471         Aperture          = cms.double(0.99),
0472         ApertureTrapped   = cms.double(0.22),
0473         CosApertureTrapped= cms.double(0.5),
0474         SinPsiMax         = cms.untracked.double(0.5)
0475     ),
0476     HFShowerStraightBundle = cms.PSet(
0477         common_UsePMT,
0478         common_UseHF,
0479         FactorBundle      = cms.double(1.0),
0480         RefIndex          = cms.double(1.459),
0481         Aperture          = cms.double(0.33),
0482         ApertureTrapped   = cms.double(0.22),
0483         CosApertureTrapped= cms.double(0.5),
0484         SinPsiMax         = cms.untracked.double(0.5)
0485     ),
0486     HFShowerConicalBundle = cms.PSet(
0487         common_UsePMT,
0488         common_UseHF,
0489         FactorBundle      = cms.double(1.0),
0490         RefIndex          = cms.double(1.459),
0491         Aperture          = cms.double(0.33),
0492         ApertureTrapped   = cms.double(0.22),
0493         CosApertureTrapped= cms.double(0.5),
0494         SinPsiMax         = cms.untracked.double(0.5)
0495     ),
0496     HFGflash = cms.PSet(
0497         BField          = cms.untracked.double(3.8),
0498         WatcherOn       = cms.untracked.bool(True),
0499         FillHisto       = cms.untracked.bool(True)
0500     ),
0501     CastorSD = cms.PSet(
0502         useShowerLibrary               = cms.bool(True),
0503         minEnergyInGeVforUsingSLibrary = cms.double(1.0),
0504         nonCompensationFactor          = cms.double(0.817),
0505         Verbosity                      = cms.untracked.int32(0)
0506     ),
0507     CastorShowerLibrary =  cms.PSet(
0508         FileName  = cms.FileInPath('SimG4CMS/Forward/data/CastorShowerLibrary_CMSSW500_Standard.root'),
0509         BranchEvt = cms.untracked.string('hadShowerLibInfo.'),
0510         BranchEM  = cms.untracked.string('emParticles.'),
0511         BranchHAD = cms.untracked.string('hadParticles.'),
0512         Verbosity = cms.untracked.bool(False)
0513     ),
0514     BHMSD = cms.PSet(
0515          Verbosity = cms.untracked.int32(0)
0516     ),
0517     MtdSD = cms.PSet(
0518         Verbosity = cms.untracked.int32(0),
0519         TimeSliceUnit    = cms.double(0.01), #stepping = 10 ps (for timing)
0520         IgnoreTrackID    = cms.bool(False),
0521         EminHit          = cms.double(0.0),
0522         CheckID          = cms.untracked.bool(True),
0523         EnergyThresholdForPersistencyInGeV = cms.double(1e9), # keep temporarily old behaviour
0524         EnergyThresholdForHistoryInGeV = cms.double(1e9) # keep temporarily old behaviour)
0525     ),
0526     HGCSD = cms.PSet(
0527         Verbosity        = cms.untracked.int32(0),
0528         TimeSliceUnit    = cms.double(0.001), #stepping = 1 ps (for timing)
0529         IgnoreTrackID    = cms.bool(False),
0530         EminHit          = cms.double(0.0),
0531         FiducialCut      = cms.bool(False),
0532         DistanceFromEdge = cms.double(1.0),
0533         StoreAllG4Hits   = cms.bool(False),
0534         RejectMouseBite  = cms.bool(False),
0535         RotatedWafer     = cms.bool(False),
0536         CornerMinMask    = cms.int32(0),
0537         HitCollection    = cms.int32(1),
0538         WaferAngles      = cms.untracked.vdouble(90.0,30.0),
0539         WaferSize        = cms.untracked.double(123.7),
0540         MouseBite        = cms.untracked.double(2.5),
0541         CheckID          = cms.untracked.bool(False),
0542         UseDetector      = cms.untracked.int32(3),
0543         Detectors        = cms.untracked.int32(2),
0544         MissingWaferFile = cms.untracked.string("")
0545     ),
0546     HGCScintSD = cms.PSet(
0547         Verbosity        = cms.untracked.int32(0),
0548         EminHit          = cms.double(0.0),
0549         UseBirkLaw       = cms.bool(True),
0550         BirkC3           = cms.double(1.75),
0551         BirkC2           = cms.double(0.142),
0552         BirkC1           = cms.double(0.0052),
0553         FiducialCut      = cms.bool(False),
0554         DistanceFromEdge = cms.double(1.0),
0555         StoreAllG4Hits   = cms.bool(False),
0556         CheckID          = cms.untracked.bool(False),
0557         TileFileName     = cms.untracked.string("")
0558     ),
0559     HFNoseSD = cms.PSet(
0560         Verbosity        = cms.untracked.int32(0),
0561         TimeSliceUnit    = cms.double(0.001), #stepping = 1 ps (for timing)
0562         IgnoreTrackID    = cms.bool(False),
0563         EminHit          = cms.double(0.0),
0564         FiducialCut      = cms.bool(False),
0565         DistanceFromEdge = cms.double(1.0),
0566         StoreAllG4Hits   = cms.bool(False),
0567         RejectMouseBite  = cms.bool(False),
0568         RotatedWafer     = cms.bool(False),
0569         CornerMinMask    = cms.int32(0),
0570         WaferAngles      = cms.untracked.vdouble(90.0,30.0),
0571         CheckID          = cms.untracked.bool(True),
0572     ),
0573     TotemRPSD = cms.PSet(
0574         Verbosity = cms.int32(0)
0575     ),
0576     TotemSD = cms.PSet(
0577         Verbosity = cms.untracked.int32(0)
0578     ),
0579     TotemT2ScintSD = cms.PSet(
0580         UseBirkLaw    = cms.bool(True),
0581         BirkC3        = cms.double(1.75),
0582         BirkC2        = cms.double(0.142),
0583         BirkC1        = cms.double(0.006),
0584         TimeSliceUnit = cms.double(1),
0585         IgnoreTrackID = cms.bool(False),
0586     ),
0587     PPSDiamondSD = cms.PSet(
0588         Verbosity = cms.int32(0)
0589     ),
0590     PPSPixelSD = cms.PSet(
0591         Verbosity = cms.untracked.int32(0)
0592     ),
0593     ZdcSD = cms.PSet(
0594         Verbosity = cms.int32(0),
0595         UseShowerLibrary = cms.bool(True),
0596         UseShowerHits = cms.bool(False),
0597         FiberDirection = cms.double(45.0),
0598         ZdcHitEnergyCut = cms.double(10.0)
0599     ),
0600     ZdcShowerLibrary = cms.PSet(
0601         Verbosity = cms.untracked.int32(0)
0602     ),
0603     FP420SD = cms.PSet(
0604         Verbosity = cms.untracked.int32(2)
0605     ),
0606     BscSD = cms.PSet(
0607         Verbosity = cms.untracked.int32(0)
0608     ),
0609     PltSD = cms.PSet(
0610         EnergyThresholdForPersistencyInGeV = cms.double(0.2),
0611         EnergyThresholdForHistoryInGeV = cms.double(0.05)
0612     ),
0613     Bcm1fSD = cms.PSet(
0614         EnergyThresholdForPersistencyInGeV = cms.double(0.010),
0615         EnergyThresholdForHistoryInGeV = cms.double(0.005)
0616     ),
0617     HcalTB02SD = cms.PSet(
0618         UseBirkLaw = cms.untracked.bool(False),
0619         BirkC1 = cms.untracked.double(0.013),
0620         BirkC3 = cms.untracked.double(1.75),
0621         BirkC2 = cms.untracked.double(0.0568)
0622     ),
0623     EcalTBH4BeamSD = cms.PSet(
0624         UseBirkLaw = cms.bool(False),
0625         BirkC1 = cms.double(0.013),
0626         BirkC3 = cms.double(1.75),
0627         BirkC2 = cms.double(0.0568)
0628     ),
0629     HGCalTestBeamSD = cms.PSet(
0630         Material   = cms.string('Scintillator'),
0631         UseBirkLaw = cms.bool(False),
0632         BirkC1 = cms.double(0.013),
0633         BirkC3 = cms.double(1.75),
0634         BirkC2 = cms.double(0.0568),
0635     ),
0636     HcalTB06BeamSD = cms.PSet(
0637         UseBirkLaw = cms.bool(False),
0638         BirkC1 = cms.double(0.013),
0639         BirkC3 = cms.double(1.75),
0640         BirkC2 = cms.double(0.0568)
0641     ),
0642     AHCalSD = cms.PSet(
0643         UseBirkLaw      = cms.bool(True),
0644         BirkC3          = cms.double(1.75),
0645         BirkC2          = cms.double(0.142),
0646         BirkC1          = cms.double(0.0052),
0647         EminHit         = cms.double(0.0),
0648         TimeSliceUnit   = cms.double(1),
0649         IgnoreTrackID   = cms.bool(False),
0650     ),
0651 )
0652 ##
0653 ## Change the HFShowerLibrary file from Run 2
0654 ##
0655 from Configuration.Eras.Modifier_run2_common_cff import run2_common
0656 run2_common.toModify( g4SimHits, ZdcSD = dict(
0657     UseShowerLibrary = False,
0658     UseShowerHits = True,
0659     ZdcHitEnergyCut = 1.0 ) )
0660 
0661 ##
0662 ## Change HCAL numbering scheme in 2017
0663 ##
0664 from Configuration.Eras.Modifier_run2_HCAL_2017_cff import run2_HCAL_2017
0665 run2_HCAL_2017.toModify( g4SimHits, HCalSD = dict( TestNumberingScheme = True ) )
0666 
0667 ##
0668 ## Disable Castor from Run 3, enable PPS (***temporarily disable PPS***)
0669 ##
0670 from Configuration.Eras.Modifier_run3_common_cff import run3_common
0671 run3_common.toModify( g4SimHits, CastorSD = dict( useShowerLibrary = False ) ) 
0672 run3_common.toModify( g4SimHits, LHCTransport = True )
0673 
0674 ##
0675 ## Disable PPS from Run 3 PbPb runs
0676 ##
0677 from Configuration.Eras.Modifier_pp_on_PbPb_run3_cff import pp_on_PbPb_run3
0678 pp_on_PbPb_run3.toModify( g4SimHits, LHCTransport = False )
0679 
0680 ##
0681 ## Change ECAL time slices
0682 ##
0683 from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing
0684 phase2_timing.toModify( g4SimHits, ECalSD = dict(
0685     StoreLayerTimeSim = True,
0686     TimeSliceUnit = 0.001 ) )
0687 
0688 ##
0689 ## For ECAL component study
0690 ##
0691 from Configuration.ProcessModifiers.ecal_component_cff import ecal_component
0692 from Configuration.ProcessModifiers.ecal_component_finely_sampled_waveforms_cff import ecal_component_finely_sampled_waveforms
0693 (ecal_component | ecal_component_finely_sampled_waveforms).toModify(g4SimHits,ECalSD = dict(StoreLayerTimeSim = True, SlopeLightYield = 0.0))
0694 
0695 ##
0696 ## Change CALO Thresholds
0697 ##
0698 from Configuration.Eras.Modifier_h2tb_cff import h2tb
0699 h2tb.toModify(g4SimHits,
0700               OnlySDs = ['EcalSensitiveDetector', 'CaloTrkProcessing', 'HcalTB06BeamDetector', 'HcalSensitiveDetector'],
0701               ECalSD = dict(
0702                   TestBeam = True ),
0703               CaloSD = dict(
0704                   EminHits  = [0.0, 0.0, 0.0, 0.0, 0.0],
0705                   TmaxHits  = [1000.0, 1000.0, 1000.0, 1000.0, 2000.0] ),
0706               CaloTrkProcessing = dict(
0707                   TestBeam = True ),
0708               HCalSD = dict(
0709                   ForTBHCAL = True )
0710 )
0711 
0712 ##
0713 ## DD4hep migration
0714 ##
0715 from Configuration.ProcessModifiers.dd4hep_cff import dd4hep
0716 dd4hep.toModify( g4SimHits, g4GeometryDD4hepSource = True )
0717 
0718 ##
0719 ## Selection of SD's for Phase2, exclude PPS
0720 ##
0721 
0722 from Configuration.Eras.Modifier_phase2_common_cff import phase2_common
0723 phase2_common.toModify(g4SimHits,
0724                        OnlySDs = ['ZdcSensitiveDetector', 'RomanPotSensitiveDetector', 'PLTSensitiveDetector', 'MuonSensitiveDetector', 'MtdSensitiveDetector', 'BCM1FSensitiveDetector', 'EcalSensitiveDetector', 'CTPPSSensitiveDetector', 'HGCalSensitiveDetector', 'CTPPSDiamondSensitiveDetector', 'FP420SensitiveDetector', 'BHMSensitiveDetector', 'HFNoseSensitiveDetector', 'HGCScintillatorSensitiveDetector', 'CaloTrkProcessing', 'HcalSensitiveDetector', 'TkAccumulatingSensitiveDetector'],
0725                        LHCTransport = False, 
0726                        MuonSD = dict( 
0727                        HaveDemoChambers = False ) 
0728 )
0729 
0730 from Configuration.Eras.Modifier_hgcaltb_cff import hgcaltb
0731 hgcaltb.toModify(g4SimHits,
0732                  OnlySDs = ['AHcalSensitiveDetector', 'HGCSensitiveDetector', 'HGCalSensitiveDetector', 'HGCalTB1601SensitiveDetector', 'HcalTB06BeamDetector'],
0733                  NonBeamEvent = True,
0734                  UseMagneticField = False,
0735                  CaloSD = dict(
0736                      EminHits  = [0.0, 0.0, 0.0, 0.0, 0.0],
0737                      TmaxHits  = [1000.0, 1000.0, 1000.0, 1000.0, 2000.0] ),
0738                  CaloTrkProcessing = dict(
0739                      TestBeam = True ),
0740                  HCalSD = dict(
0741                      ForTBHCAL = True)
0742 )
0743 
0744 from Configuration.Eras.Modifier_phase2_hgcalV18_cff import phase2_hgcalV18
0745 phase2_hgcalV18.toModify(g4SimHits,
0746                  HGCSD = dict(
0747                      HitCollection = 2)
0748 )