SND@LHC Software
Loading...
Searching...
No Matches
MufluxTargetStation Class Reference

#include <MufluxTargetStation.h>

Inheritance diagram for MufluxTargetStation:
Collaboration diagram for MufluxTargetStation:

Public Member Functions

 MufluxTargetStation (const char *name, const Double_t tl, const Double_t al, const Double_t tz, const Double_t az, const int nS, const Double_t sl, const char *Title="MufluxTargetStation")
 
 MufluxTargetStation (const char *name, const Double_t tl, const Double_t tz, const int nS, const Double_t sl, const char *Title="MufluxTargetStation")
 
 MufluxTargetStation ()
 
virtual ~MufluxTargetStation ()
 
void SetIronAbsorber (Double_t absorber_x, Double_t absorber_y)
 
void SetAbsorberCutout (Double_t absorbercutout_x, Double_t absorbercutout_y)
 
void SetIronShield (Double_t ironshield_x, Double_t ironshield_y, Double_t ironshield_z)
 
void SetConcreteShield (Double_t concreteshield_x, Double_t concreteshield_y, Double_t concreteshield_z)
 
void SetAboveTargetShield (Double_t abovetargetshield_x, Double_t abovetargetshield_y, Double_t abovetargetshield_z)
 
void SetAboveAbsorberShield (Double_t aboveabsorbershield_x, Double_t aboveabsorbershield_y, Double_t aboveabsorbershield_z)
 
void SetAboveAboveTargetShield (Double_t aboveabovetargetshield_y)
 
void SetFloor (Double_t floor_x, Double_t floor_y, Double_t floor_z)
 
void SetFloorT34 (Double_t floorT34_x, Double_t floorT34_y, Double_t floorT34_z)
 
void SetFloorRPC (Double_t floorRPC_x, Double_t floorRPC_y, Double_t floorRPC_z)
 
void ConstructGeometry ()
 
void SetLayerPosMat (Float_t d, std::vector< float > L, std::vector< std::string > M)
 

Public Attributes

ClassDef(MufluxTargetStation, 4) private Double_t fabsorber_y
 
Double_t fabsorbercutout_x
 
Double_t fabsorbercutout_y
 
Double_t fironshield_x
 
Double_t fironshield_y
 
Double_t fironshield_z
 
Double_t fconcreteshield_x
 
Double_t fconcreteshield_y
 
Double_t fconcreteshield_z
 
Double_t fabovetargetshield_x
 
Double_t fabovetargetshield_y
 
Double_t fabovetargetshield_z
 
Double_t faboveabsorbershield_x
 
Double_t faboveabsorbershield_y
 
Double_t faboveabsorbershield_z
 
Double_t faboveabovetargetshield_y
 
Double_t ffloor_x
 
Double_t ffloor_y
 
Double_t ffloor_z
 
Double_t ffloorT34_x
 
Double_t ffloorT34_y
 
Double_t ffloorT34_z
 
Double_t ffloorRPC_x
 
Double_t ffloorRPC_y
 
Double_t ffloorRPC_z
 

Protected Member Functions

Int_t InitMedium (const char *name)
 

Protected Attributes

Double_t fTargetLength
 
Double_t fAbsorberLength
 
Double_t fAbsorberZ
 
Double_t fTargetZ
 
Double_t fDiameter
 
std::vector< float > fL
 
std::vector< std::string > fM
 
Int_t fnS
 
Double_t fsl
 

Detailed Description

Definition at line 9 of file MufluxTargetStation.h.

Constructor & Destructor Documentation

◆ MufluxTargetStation() [1/3]

MufluxTargetStation::MufluxTargetStation ( const char *  name,
const Double_t  tl,
const Double_t  al,
const Double_t  tz,
const Double_t  az,
const int  nS,
const Double_t  sl,
const char *  Title = "MufluxTargetStation" 
)

Definition at line 33 of file MufluxTargetStation.cxx.

◆ MufluxTargetStation() [2/3]

MufluxTargetStation::MufluxTargetStation ( const char *  name,
const Double_t  tl,
const Double_t  tz,
const int  nS,
const Double_t  sl,
const char *  Title = "MufluxTargetStation" 
)

Definition at line 45 of file MufluxTargetStation.cxx.

47 : FairModule(name ,Title)
48{
49 fTargetLength = tl;
50 fAbsorberLength = 0;
51 fAbsorberZ = 0;
52 fTargetZ = tz;
53 fnS = nS;
54 fsl = sl;
55}

◆ MufluxTargetStation() [3/3]

MufluxTargetStation::MufluxTargetStation ( )

Definition at line 28 of file MufluxTargetStation.cxx.

29 : FairModule("MufluxTargetStation", "")
30{
31}

◆ ~MufluxTargetStation()

MufluxTargetStation::~MufluxTargetStation ( )
virtual

Definition at line 25 of file MufluxTargetStation.cxx.

26{
27}

Member Function Documentation

◆ ConstructGeometry()

void MufluxTargetStation::ConstructGeometry ( )

Definition at line 149 of file MufluxTargetStation.cxx.

150{
151 TGeoVolume *top=gGeoManager->GetTopVolume();
152 InitMedium("tungstenmisis");
153 TGeoMedium *tungstenmisis =gGeoManager->GetMedium("tungstenmisis");
154 InitMedium("Concrete");
155 TGeoMedium *concrete =gGeoManager->GetMedium("Concrete");
156 InitMedium("iron");
157 TGeoMedium *iron =gGeoManager->GetMedium("iron");
158 InitMedium("H2O");
159 TGeoMedium *water =gGeoManager->GetMedium("H2O");
160 InitMedium("molybdenummisis");
161 TGeoMedium *momisis =gGeoManager->GetMedium("molybdenummisis");
162 InitMedium("air");
163 TGeoMedium *air = gGeoManager->GetMedium("air");
164 InitMedium("PlasticBase");
165 TGeoMedium *plasticbase = gGeoManager->GetMedium("PlasticBase");
166 InitMedium("steel");
167 TGeoMedium *steel = gGeoManager->GetMedium("steel");
168
169 TGeoVolume *tTarget = new TGeoVolumeAssembly("TargetArea");
170 //Double_t zPos = -2.09; //for front end endcap
171 Double_t zPos = 0.; //for front end endcap
172 Int_t slots = fnS;
173 slots = slots-1;
174
175 TGeoVolume *frontcap;
176 TGeoVolume *endcap;
177 TGeoVolume *targettube;
178 frontcap = gGeoManager->MakeTube("FrontCap", steel, 0, 15./2., 0.5/2.);
179 frontcap->SetLineColor(20);
180 endcap = gGeoManager->MakeTube("EndCap", steel, 0, 15./2., 0.5/2.);
181 endcap->SetLineColor(20);
182 targettube = gGeoManager->MakeTube("TargetTube", steel, fDiameter/2.+0.5, fDiameter/2.+1.1, fTargetLength/2.-0.5); //subtract 1 (front&endcaps)
183 targettube->SetLineColor(20);
184
185 TGeoVolume *target;
186 TGeoVolume *slit;
187
188 for (Int_t i=0; i<fnS; i++) {
189 TString nmi = "Target_"; nmi += i+1;
190 TString sm = "Slit_"; sm += i+1;
191 TGeoMedium *material;
192 if (fM.at(i)=="molybdenummisis") {material = momisis;};
193
194 if (fM.at(i)=="tungstenmisis") {material = tungstenmisis;};
195
196
197 if (fnS == 18) { // new target layout
198 target = gGeoManager->MakeTube(nmi, material, 0., fDiameter/2., fL.at(i)/2.);
199 }
200 else {
201 target = gGeoManager->MakeBox(nmi, material, fDiameter/2., fDiameter/2., fL.at(i)/2.);
202 }
203 if (fM.at(i)=="molybdenummisis") {
204 target->SetLineColor(28);
205 } else {target->SetLineColor(38);}; // silver/blue
206 tTarget->AddNode(target, 1, new TGeoTranslation(0, 0, zPos + fL.at(i)/2.) );
207 if (i < slots){
208 if(fnS == 18) {
209 slit = gGeoManager->MakeTube(sm, plasticbase, 0., fDiameter/2., fsl/2.);
210 }
211 else {
212 slit = gGeoManager->MakeBox(sm, water, fDiameter/2., fDiameter/2., fsl/2.);
213 }
214 slit->SetLineColor(7); // cyan
215 if (i==0) {
216 tTarget->AddNode(frontcap, 11, new TGeoTranslation(0, 0, zPos-0.2501) );
217 }
218 tTarget->AddNode(slit, 1, new TGeoTranslation(0, 0, zPos+fL.at(i)+fsl/2.) );
219 zPos+=fL.at(i)+fsl;
220 } else {
221 zPos+=fL.at(i);
222 if (fnS==18) {
223 tTarget->AddNode(targettube, 13, new TGeoTranslation(0, 0, fTargetLength/2-0.5));
224 tTarget->AddNode(endcap, 12, new TGeoTranslation(0, 0, fTargetLength-0.7499) );
225 }
226 zPos+=1.27;
227 }
228 }
229
230 TGeoVolume *absorber;
231 TGeoVolume *absorbercutout;
232 TGeoVolume *aboveabsorbershield;
233 TGeoVolume *ironshield;
234 TGeoVolume *concreteshield;
235 TGeoVolume *abovetargetshield;
236 TGeoVolume *aboveabovetargetshield;
237 TGeoVolume *floor;
238 TGeoVolume *floorT34;
239 TGeoVolume *floorRPC;
240
242 // Absorber made of iron
243 absorber = gGeoManager->MakeBox("Absorber", iron, fabsorber_x, fabsorber_y, fAbsorberLength/2.);
244 absorbercutout = gGeoManager->MakeBox("AbsorberCO", iron, fabsorbercutout_x, fabsorbercutout_y, fAbsorberLength/2.);
245
246 ironshield = gGeoManager->MakeBox("IronShield", iron, fironshield_x, fironshield_y, fironshield_z);
247 concreteshield = gGeoManager->MakeBox("ConcreteShield", concrete, fconcreteshield_x, fconcreteshield_y, fconcreteshield_z);
248 abovetargetshield = gGeoManager->MakeBox("AboveTargetShield", concrete, fabovetargetshield_x, fabovetargetshield_y, fabovetargetshield_z);
249 aboveabsorbershield = gGeoManager->MakeBox("AboveBsorberShield", concrete, faboveabsorbershield_x, faboveabsorbershield_y, faboveabsorbershield_z);
250 aboveabovetargetshield = gGeoManager->MakeBox("AboveAboveTargetShield", concrete, fAbsorberLength, faboveabovetargetshield_y, fAbsorberLength);
251 floor = gGeoManager->MakeBox("Floor", concrete, ffloor_x, ffloor_y, ffloor_z);
252 floorT34 = gGeoManager->MakeBox("FloorT34", concrete, ffloorT34_x, ffloorT34_y, ffloorT34_z);
253 floorRPC = gGeoManager->MakeBox("FloorRPC", concrete, ffloorRPC_x, ffloorRPC_y, ffloorRPC_z);
254
255 ironshield->SetLineColor(42); // brown / light red
256 concreteshield->SetLineColor(kGray); // gray
257 floor->SetLineColor(kGray); // gray
258 floorT34->SetLineColor(kGray); // gray
259 floorRPC->SetLineColor(kGray); // gray
260 aboveabsorbershield->SetLineColor(kGray); // gray
261 abovetargetshield->SetLineColor(kGray); // gray
262 aboveabovetargetshield->SetLineColor(kGray); // gray
263 frontcap->SetLineColor(29); // blue-ish
264 endcap->SetLineColor(29); // blue-ish
265 absorber->SetLineColor(42); // brown / light red
266
267 tTarget->AddNode(absorbercutout, 11, new TGeoTranslation(18., 97.5, fAbsorberZ-zPos));
268 tTarget->AddNode(absorber, 1, new TGeoTranslation(0., -27.5, fAbsorberZ-zPos));
269
270 //TGeoNode *node = GetNode("Absorber");
271 //tTarget->ReplaceNode(node,new TGeoTube(1.,2.,10.),new TGeoTranslation(0,-100.2,12),iron); //
272
273 tTarget->AddNode(floor, 7, new TGeoTranslation(0., -217., 500.));
274 tTarget->AddNode(floorT34, 8, new TGeoTranslation(0., -120., fAbsorberZ-zPos+771.125));
275 tTarget->AddNode(floorRPC, 9, new TGeoTranslation(0., -94.49, fAbsorberZ-zPos+1075.));
276
277 TGeoShapeAssembly* asmb = dynamic_cast<TGeoShapeAssembly*>(tTarget->GetShape());
278 Double_t totLength = asmb->GetDZ();
279
280 top->AddNode(tTarget, 1, new TGeoTranslation(0, 0,fTargetZ - fTargetLength/2. + totLength));
281 top->AddNode(ironshield, 2, new TGeoTranslation(-50., -47.5,fTargetZ - 83.49)); //3.6
282 top->AddNode(concreteshield, 3, new TGeoTranslation(85.,-47.5,fTargetZ - 83.49));
283 top->AddNode(abovetargetshield, 4, new TGeoTranslation(50.,77.5,fTargetZ - 83.49));
284 top->AddNode(aboveabovetargetshield, 5, new TGeoTranslation(-50.,165.0,fAbsorberZ-zPos-624.5));
285 top->AddNode(aboveabsorbershield, 6, new TGeoTranslation(0.,165.0,-26.48));
286
287 cout << "target and absorber positioned at " << fTargetZ <<" "<< fAbsorberZ << " m"<< endl;
288
289}
std::vector< std::string > fM
ClassDef(MufluxTargetStation, 4) private Double_t fabsorber_y
Int_t InitMedium(const char *name)
std::vector< float > fL
int i
Definition ShipAna.py:86

◆ InitMedium()

Int_t MufluxTargetStation::InitMedium ( const char *  name)
protected

Definition at line 58 of file MufluxTargetStation.cxx.

59{
60 static FairGeoLoader *geoLoad=FairGeoLoader::Instance();
61 static FairGeoInterface *geoFace=geoLoad->getGeoInterface();
62 static FairGeoMedia *media=geoFace->getMedia();
63 static FairGeoBuilder *geoBuild=geoLoad->getGeoBuilder();
64
65 FairGeoMedium *ShipMedium=media->getMedium(name);
66
67 if (!ShipMedium)
68 {
69 Fatal("InitMedium","Material %s not defined in media file.", name);
70 return -1111;
71 }
72 TGeoMedium* medium=gGeoManager->GetMedium(name);
73 if (medium!=NULL)
74 return ShipMedium->getMediumIndex();
75 return geoBuild->createMedium(ShipMedium);
76}

◆ SetAboveAboveTargetShield()

void MufluxTargetStation::SetAboveAboveTargetShield ( Double_t  aboveabovetargetshield_y)

◆ SetAboveAbsorberShield()

void MufluxTargetStation::SetAboveAbsorberShield ( Double_t  aboveabsorbershield_x,
Double_t  aboveabsorbershield_y,
Double_t  aboveabsorbershield_z 
)

◆ SetAboveTargetShield()

void MufluxTargetStation::SetAboveTargetShield ( Double_t  abovetargetshield_x,
Double_t  abovetargetshield_y,
Double_t  abovetargetshield_z 
)

◆ SetAbsorberCutout()

void MufluxTargetStation::SetAbsorberCutout ( Double_t  absorbercutout_x,
Double_t  absorbercutout_y 
)

◆ SetConcreteShield()

void MufluxTargetStation::SetConcreteShield ( Double_t  concreteshield_x,
Double_t  concreteshield_y,
Double_t  concreteshield_z 
)

◆ SetFloor()

void MufluxTargetStation::SetFloor ( Double_t  floor_x,
Double_t  floor_y,
Double_t  floor_z 
)

◆ SetFloorRPC()

void MufluxTargetStation::SetFloorRPC ( Double_t  floorRPC_x,
Double_t  floorRPC_y,
Double_t  floorRPC_z 
)

◆ SetFloorT34()

void MufluxTargetStation::SetFloorT34 ( Double_t  floorT34_x,
Double_t  floorT34_y,
Double_t  floorT34_z 
)

◆ SetIronAbsorber()

void MufluxTargetStation::SetIronAbsorber ( Double_t  absorber_x,
Double_t  absorber_y 
)

◆ SetIronShield()

void MufluxTargetStation::SetIronShield ( Double_t  ironshield_x,
Double_t  ironshield_y,
Double_t  ironshield_z 
)

◆ SetLayerPosMat()

void MufluxTargetStation::SetLayerPosMat ( Float_t  d,
std::vector< float >  L,
std::vector< std::string >  M 
)
inline

Member Data Documentation

◆ faboveabovetargetshield_y

Double_t MufluxTargetStation::faboveabovetargetshield_y

Definition at line 55 of file MufluxTargetStation.h.

◆ faboveabsorbershield_x

Double_t MufluxTargetStation::faboveabsorbershield_x

Definition at line 52 of file MufluxTargetStation.h.

◆ faboveabsorbershield_y

Double_t MufluxTargetStation::faboveabsorbershield_y

Definition at line 53 of file MufluxTargetStation.h.

◆ faboveabsorbershield_z

Double_t MufluxTargetStation::faboveabsorbershield_z

Definition at line 54 of file MufluxTargetStation.h.

◆ fabovetargetshield_x

Double_t MufluxTargetStation::fabovetargetshield_x

Definition at line 49 of file MufluxTargetStation.h.

◆ fabovetargetshield_y

Double_t MufluxTargetStation::fabovetargetshield_y

Definition at line 50 of file MufluxTargetStation.h.

◆ fabovetargetshield_z

Double_t MufluxTargetStation::fabovetargetshield_z

Definition at line 51 of file MufluxTargetStation.h.

◆ fabsorber_y

ClassDef (MufluxTargetStation,4) private Double_t MufluxTargetStation::fabsorber_y

Definition at line 40 of file MufluxTargetStation.h.

◆ fabsorbercutout_x

Double_t MufluxTargetStation::fabsorbercutout_x

Definition at line 41 of file MufluxTargetStation.h.

◆ fabsorbercutout_y

Double_t MufluxTargetStation::fabsorbercutout_y

Definition at line 42 of file MufluxTargetStation.h.

◆ fAbsorberLength

Double_t MufluxTargetStation::fAbsorberLength
protected

Definition at line 69 of file MufluxTargetStation.h.

◆ fAbsorberZ

Double_t MufluxTargetStation::fAbsorberZ
protected

Definition at line 70 of file MufluxTargetStation.h.

◆ fconcreteshield_x

Double_t MufluxTargetStation::fconcreteshield_x

Definition at line 46 of file MufluxTargetStation.h.

◆ fconcreteshield_y

Double_t MufluxTargetStation::fconcreteshield_y

Definition at line 47 of file MufluxTargetStation.h.

◆ fconcreteshield_z

Double_t MufluxTargetStation::fconcreteshield_z

Definition at line 48 of file MufluxTargetStation.h.

◆ fDiameter

Double_t MufluxTargetStation::fDiameter
protected

Definition at line 72 of file MufluxTargetStation.h.

◆ ffloor_x

Double_t MufluxTargetStation::ffloor_x

Definition at line 56 of file MufluxTargetStation.h.

◆ ffloor_y

Double_t MufluxTargetStation::ffloor_y

Definition at line 57 of file MufluxTargetStation.h.

◆ ffloor_z

Double_t MufluxTargetStation::ffloor_z

Definition at line 58 of file MufluxTargetStation.h.

◆ ffloorRPC_x

Double_t MufluxTargetStation::ffloorRPC_x

Definition at line 62 of file MufluxTargetStation.h.

◆ ffloorRPC_y

Double_t MufluxTargetStation::ffloorRPC_y

Definition at line 63 of file MufluxTargetStation.h.

◆ ffloorRPC_z

Double_t MufluxTargetStation::ffloorRPC_z

Definition at line 64 of file MufluxTargetStation.h.

◆ ffloorT34_x

Double_t MufluxTargetStation::ffloorT34_x

Definition at line 59 of file MufluxTargetStation.h.

◆ ffloorT34_y

Double_t MufluxTargetStation::ffloorT34_y

Definition at line 60 of file MufluxTargetStation.h.

◆ ffloorT34_z

Double_t MufluxTargetStation::ffloorT34_z

Definition at line 61 of file MufluxTargetStation.h.

◆ fironshield_x

Double_t MufluxTargetStation::fironshield_x

Definition at line 43 of file MufluxTargetStation.h.

◆ fironshield_y

Double_t MufluxTargetStation::fironshield_y

Definition at line 44 of file MufluxTargetStation.h.

◆ fironshield_z

Double_t MufluxTargetStation::fironshield_z

Definition at line 45 of file MufluxTargetStation.h.

◆ fL

std::vector<float> MufluxTargetStation::fL
protected

Definition at line 73 of file MufluxTargetStation.h.

◆ fM

std::vector<std::string> MufluxTargetStation::fM
protected

Definition at line 74 of file MufluxTargetStation.h.

◆ fnS

Int_t MufluxTargetStation::fnS
protected

Definition at line 76 of file MufluxTargetStation.h.

◆ fsl

Double_t MufluxTargetStation::fsl
protected

Definition at line 77 of file MufluxTargetStation.h.

◆ fTargetLength

Double_t MufluxTargetStation::fTargetLength
protected

Definition at line 68 of file MufluxTargetStation.h.

◆ fTargetZ

Double_t MufluxTargetStation::fTargetZ
protected

Definition at line 71 of file MufluxTargetStation.h.


The documentation for this class was generated from the following files: