SND@LHC Software
Loading...
Searching...
No Matches
ShipMuonShield.h
Go to the documentation of this file.
1#ifndef MuonShield_H
2#define MuonShield_H
3
4#include "FairModule.h" // for FairModule
5#include "FairLogger.h"
6
7#include "Rtypes.h" // for ShipMuonShield::Class, Bool_t, etc
8
9#include "TGeoUniformMagField.h"
10#include "TGeoMedium.h"
11#include "TGeoShapeAssembly.h"
12#include "TString.h"
13#include <vector>
14#include <array>
15
16enum class FieldDirection : bool { up, down };
17
18class ShipMuonShield : public FairModule
19{
20 public:
21
22 ShipMuonShield(const char* name, const Int_t Design=1, const char* Title="ShipMuonShield",
23 Double_t Z=0, Double_t L0=0, Double_t L1=0, Double_t L2=0, Double_t L3=0, Double_t L4=0, Double_t L5=0, Double_t L6=0,
24 Double_t L7=0, Double_t L8=0,Double_t gap=0,Double_t LE=0,Double_t y=400, Double_t floor=500, Double_t field=1.7,
25 const Int_t withCoMagnet=0, const Bool_t StepGeo=false,
26 const Bool_t WithConstAbsorberField=true, const Bool_t WithConstShieldField=true);
27
28 ShipMuonShield(TString geofile, const Int_t withCoMagnet=0, const Bool_t StepGeo=false,
29 const Bool_t WithConstAbsorberField=true, const Bool_t WithConstShieldField=true);
31 virtual ~ShipMuonShield();
32 void ConstructGeometry();
34
35 void SetSupports(Bool_t supports) {
36 fSupport = supports;
37 LOG(WARNING) <<"Setting supports to %s. This will not have any effect if called after the geometry has been constructed.", fSupport ? "true" : "false";
38 }
39
40 protected:
41
42 Int_t fDesign; // design of muon shield, 1=passive, active = ...
43 TString fGeofile;
45 Double_t fFloor;
46 Bool_t fSupport;
48 Int_t InitMedium(TString name);
49
51 Bool_t fStepGeo;
54
55 void CreateArb8(TString arbName, TGeoMedium *medium, Double_t dZ,
56 std::array<Double_t, 16> corners, Int_t color,
57 TGeoUniformMagField *magField, TGeoVolume *top,
58 Double_t x_translation, Double_t y_translation,
59 Double_t z_translation);
60
61 void CreateArb8(TString arbName, TGeoMedium *medium, Double_t dZ,
62 std::array<Double_t, 16> corners, Int_t color,
63 TGeoUniformMagField *magField, TGeoVolume *top,
64 Double_t x_translation, Double_t y_translation,
65 Double_t z_translation,
66 Bool_t stepGeo);
67
68 void CreateTube(TString tubeName, TGeoMedium *medium, Double_t dX,
69 Double_t dY, Double_t dZ, Int_t color, TGeoVolume *top,
70 Double_t x_translation, Double_t y_translation,
71 Double_t z_translation);
72
73 Int_t Initialize(std::vector<TString> &magnetName,
74 std::vector<FieldDirection> &fieldDirection,
75 std::vector<Double_t> &dXIn, std::vector<Double_t> &dYIn,
76 std::vector<Double_t> &dXOut, std::vector<Double_t> &dYOut,
77 std::vector<Double_t> &dZ, std::vector<Double_t> &midGapIn,
78 std::vector<Double_t> &midGapOut,
79 std::vector<Double_t> &HmainSideMagIn,
80 std::vector<Double_t> &HmainSideMagOut,
81 std::vector<Double_t> &gapIn, std::vector<Double_t> &gapOut,
82 std::vector<Double_t> &Z);
83
84 void CreateMagnet(TString magnetName, TGeoMedium *medium, TGeoVolume *tShield,
85 TGeoUniformMagField *fields[4],
86 FieldDirection fieldDirection, Double_t dX, Double_t dY,
87 Double_t dX2, Double_t dY2, Double_t dZ, Double_t middleGap,
88 Double_t middleGap2, Double_t HmainSideMag,
89 Double_t HmainSideMag2, Double_t gap, Double_t gap2,
90 Double_t Z, Bool_t NotMagnet, Bool_t stepGeo);
91
92
93};
94
95#endif //MuonSield_H
FieldDirection
virtual ~ShipMuonShield()
Double_t midGapOut7
Int_t Initialize(std::vector< TString > &magnetName, std::vector< FieldDirection > &fieldDirection, std::vector< Double_t > &dXIn, std::vector< Double_t > &dYIn, std::vector< Double_t > &dXOut, std::vector< Double_t > &dYOut, std::vector< Double_t > &dZ, std::vector< Double_t > &midGapIn, std::vector< Double_t > &midGapOut, std::vector< Double_t > &HmainSideMagIn, std::vector< Double_t > &HmainSideMagOut, std::vector< Double_t > &gapIn, std::vector< Double_t > &gapOut, std::vector< Double_t > &Z)
Double_t fMuonShieldLength
Double_t zEndOfAbsorb
void CreateMagnet(TString magnetName, TGeoMedium *medium, TGeoVolume *tShield, TGeoUniformMagField *fields[4], FieldDirection fieldDirection, Double_t dX, Double_t dY, Double_t dX2, Double_t dY2, Double_t dZ, Double_t middleGap, Double_t middleGap2, Double_t HmainSideMag, Double_t HmainSideMag2, Double_t gap, Double_t gap2, Double_t Z, Bool_t NotMagnet, Bool_t stepGeo)
Bool_t fWithConstShieldField
Double_t midGapOut8
void CreateArb8(TString arbName, TGeoMedium *medium, Double_t dZ, std::array< Double_t, 16 > corners, Int_t color, TGeoUniformMagField *magField, TGeoVolume *top, Double_t x_translation, Double_t y_translation, Double_t z_translation)
Int_t InitMedium(TString name)
ClassDef(ShipMuonShield, 4) void SetSupports(Bool_t supports)
void CreateTube(TString tubeName, TGeoMedium *medium, Double_t dX, Double_t dY, Double_t dZ, Int_t color, TGeoVolume *top, Double_t x_translation, Double_t y_translation, Double_t z_translation)
Bool_t fWithConstAbsorberField