SND@LHC Software
Loading...
Searching...
No Matches
create_field_perturbation.py
Go to the documentation of this file.
1import ROOT as r
2import shipunit as u
3import geomGeant4
4from ShipGeoConfig import ConfigRegistry
5import shipDet_conf
6import saveBasicParameters
7import os
8import ShieldUtils
9from argparse import ArgumentParser
10
11
12globalDesigns = {'dy': 10., 'dv': 6, 'ds': 9, 'nud': 3, 'caloDesign': 3, 'strawDesign': 10}
13
15 r.gErrorIgnoreLevel = r.kWarning
16 r.gSystem.Load('libpythia8')
17
18 ship_geo = ConfigRegistry.loadpy(
19 '$FAIRSHIP/geometry/geometry_config.py',
20 Yheight=globalDesigns["dy"],
21 tankDesign=globalDesigns["dv"],
22 nuTauTargetDesign=globalDesigns["nud"],
23 CaloDesign=globalDesigns["caloDesign"],
24 strawDesign=globalDesigns["strawDesign"],
25 muShieldDesign=options.ds,
26 muShieldStepGeo=options.muShieldStepGeo,
27 muShieldWithCobaltMagnet=options.muShieldWithCobaltMagnet,
28 muShieldGeo=options.geofile)
29
30 ship_geo.muShield.WithConstField = True
31
32
33 run = r.FairRunSim()
34 run.SetName('TGeant4') # Transport engine
35 run.SetOutputFile("tmp_file") # Output file
36 # user configuration file default g4Config.C
37 run.SetUserConfig('g4Config.C')
38 modules = shipDet_conf.configure(run, ship_geo)
39 primGen = r.FairPrimaryGenerator()
40 primGen.SetTarget(ship_geo.target.z0+70.845*u.m, 0.)
41 #
42 run.SetGenerator(primGen)
43 run.SetStoreTraj(r.kFALSE)
44 run.Init()
45 fieldMaker = geomGeant4.addVMCFields(ship_geo, '', True)
46
47 field_center, shield_half_length = ShieldUtils.find_shield_center(ship_geo)
48 print("SHIELD ONLY: CENTER: {}, HALFLENGTH: {}, half_X: {}, half_Y: {}".format(field_center,
49 shield_half_length,
50 ship_geo.muShield.half_X_max,
51 ship_geo.muShield.half_Y_max))
52 fieldMaker.generateFieldMap(os.path.expandvars("$FAIRSHIP/files/fieldMap.csv"), 2.5,
53 ship_geo.muShield.half_X_max, ship_geo.muShield.half_Y_max,
54 shield_half_length, field_center)
55
56
57if __name__ == '__main__':
58 parser = ArgumentParser()
59 group = parser.add_mutually_exclusive_group()
60
61 parser.add_argument("--muShieldDesign", dest="ds", required=True, type=int)
62 parser.add_argument("--stepMuonShield", dest="muShieldStepGeo", help="activate steps geometry for the muon shield",
63 required=False, action="store_true", default=False)
64 parser.add_argument("--coMuonShield", dest="muShieldWithCobaltMagnet",
65 help="""replace one of the magnets in the shield with 2.2T cobalt one,
66 downscales other fields, works only for muShieldDesign >2""",
67 required=False, type=int, default=0)
68 parser.add_argument("-g", dest="geofile", help="geofile for muon shield geometry, for experts only", required=False,
69 default=None)
70 options = parser.parse_args()
find_shield_center(ship_geo)
Definition ShieldUtils.py:1
addVMCFields(shipGeo, controlFile='', verbose=False, withVirtualMC=True)
configure(run, ship_geo)