FairShip
Loading...
Searching...
No Matches
Target.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// SPDX-FileCopyrightText: Copyright CERN for the benefit of the SHiP
3// Collaboration
4
5//
6// Target.h
7//
8//
9// Created by Annarita Buonaura on 17/01/15.
10//
11//
12
13#ifndef SND_EMULSIONTARGET_TARGET_H_
14#define SND_EMULSIONTARGET_TARGET_H_
15
16#include <tuple>
17
18#include "Detector.h"
19#include "TargetPoint.h"
20
21class FairVolume;
22
23class Target : public SHiP::Detector<TargetPoint> {
24 public:
25 Target(const char* name, const Double_t Ydist, Bool_t Active,
26 const char* Title = "NuTauTarget");
27 Target();
28
29 // Set options for detector construction (active/passive, which design)
30 void SetDetectorDesign(Int_t Design);
31 void MakeNuTargetPassive(Bool_t a);
32 void MergeTopBot(Bool_t SingleEmFilm);
33
34 void ConstructGeometry() override;
35
36 void SetTargetWallDimension(Double_t WallXDim, Double_t WallYDim,
37 Double_t WallZDim);
38 void SetDetectorDimension(Double_t xdim, Double_t ydim, Double_t zdim);
39 void SetEmulsionParam(Double_t EmTh, Double_t EmX, Double_t EmY,
40 Double_t PBTh, Double_t EPlW, Double_t LeadTh,
41 Double_t AllPW);
42 void SetBrickParam(Double_t BrX, Double_t BrY, Double_t BrZ, Double_t BrPackX,
43 Double_t BrPackY, Double_t BrPackZ,
44 Int_t number_of_plates_);
45 void SetCellParam(Double_t CellW);
46 void SetNumberBricks(Double_t col, Double_t row, Double_t wall);
47 void SetTTzdimension(Double_t TTZ);
48 void SetNumberTargets(Int_t target);
49
50 // Functions to get parameters relative to the magnet in which the detector is
51 // placed
52 void SetMagnetConfiguration(Int_t config); // 1=TP, 0=new
53 void SetMagnetHeight(Double_t Y);
54 void SetBaseHeight(Double_t Y);
55 void SetColumnHeight(Double_t Y);
56 void SetCoilUpHeight(Double_t H1);
57 void SetCoilDownHeight(Double_t H2);
58 void SetMagneticField(Double_t B);
59 void SetCenterZ(Double_t z);
60
61 // Functions to set dimension of both the base and the pillars in no magnet
62 // configuration options. The pillars are defined in EmulsionMagnet class in
63 // the option with magnet.
64 void SetBaseDimension(Double_t X, Double_t Y, Double_t Z);
65 void SetPillarDimension(Double_t X, Double_t Y, Double_t Z);
66
67 static std::tuple<Int_t, Int_t, Int_t, Int_t, Bool_t> DecodeBrickID(
68 Int_t detID);
69
70 void SetHpTParam(
71 Int_t n, Double_t dd,
72 Double_t DZ); // other detector's parameters (needed for positioning)
73
77 Bool_t ProcessHits(FairVolume* v = 0) override;
78
79 Target(const Target&) = delete;
80 Target& operator=(const Target&) = delete;
81
82 protected:
83 Bool_t fPassive; // 0 = with Emulsion, 1 = only lead + rohacell
84 Bool_t
85 fsingleemulsionfilm; // 0 = both top and bottom layers active, separated
86 // by plastic base; 1 = only one active layer
87 Int_t fDesign;
88
89 // Position of the Center of the Detector
90 Double_t fCenterZ;
91
92 // Some Magnet parameters necessary for target positioning
93 Double_t fMagnetY;
94 Double_t fColumnY;
95 Double_t fMagnetBaseY;
96 Double_t fCoilH1;
97 Double_t fCoilH2;
98
99 // Bricks
100 Double_t fField;
101
102 Int_t fNCol;
103 Int_t fNRow;
104 Int_t fNWall;
105 Int_t fNTarget;
107
108 Double_t XDimension; // dimension of the target box (= 2 x 2 x 1) m^3
109 Double_t YDimension;
110 Double_t ZDimension;
111
112 Double_t WallXDim; // dimension of the wall of bricks
113 Double_t WallYDim;
114 Double_t WallZDim;
115
117 Double_t EmulsionX;
118 Double_t EmulsionY;
119
122 Double_t EmPlateWidth; // Z dimension of the emulsion plates =
123 // 2*EmulsionThickness+PlasticBaseThickness
124 Double_t AllPlateWidth; // PlateZ + LeadThickness
125
126 Double_t BrickPackageX; // dimension of the brick package along X
127 Double_t BrickPackageY; // dimension of the brick package along Y
128 Double_t BrickPackageZ; // dimension of the brick package along Z
129
130 Double_t Ydistance; // distance in Y between 2 bricks
131
132 Double_t BrickZ; // dimension of the brick + package along the Z axis
133 Double_t BrickY;
134 Double_t BrickX;
135
136 Double_t CellWidth; // dimension of Brick + CES along Z axis
137
138 // TargetTrackers
139 Double_t TTrackerZ;
140
141 // Base and Pillars for option without magnetic field
142 Double_t fBaseX;
143 Double_t fBaseY;
144 Double_t fBaseZ;
145 Double_t fPillarX;
146 Double_t fPillarY;
147 Double_t fPillarZ;
148
149 // other detector's parameters (needed for positioning)
150 Double_t fHpTDistance;
151 Double_t fHpTDZ;
152 Int_t fnHpT;
153
154 ClassDefOverride(Target, 5)
155};
156
157#endif // SND_EMULSIONTARGET_TARGET_H_
Definition: diagrams_b.h:4
Definition: Target.h:23
Double_t fCenterZ
Definition: Target.h:90
void SetMagnetHeight(Double_t Y)
Definition: Target.cxx:132
void SetHpTParam(Int_t n, Double_t dd, Double_t DZ)
Definition: Target.cxx:158
Double_t Ydistance
Definition: Target.h:130
Double_t BrickPackageY
Definition: Target.h:127
Int_t fNRow
Definition: Target.h:103
Double_t BrickY
Definition: Target.h:133
Double_t fHpTDistance
Definition: Target.h:150
void ConstructGeometry() override
Definition: Target.cxx:167
Double_t fBaseX
Definition: Target.h:142
Int_t fnHpT
Definition: Target.h:152
Double_t BrickX
Definition: Target.h:134
void MergeTopBot(Bool_t SingleEmFilm)
Definition: Target.cxx:77
Int_t fDesign
Definition: Target.h:87
Double_t fBaseZ
Definition: Target.h:144
Double_t LeadThickness
Definition: Target.h:121
Double_t PlasticBaseThickness
Definition: Target.h:120
void SetCoilDownHeight(Double_t H2)
Definition: Target.cxx:140
void SetNumberBricks(Double_t col, Double_t row, Double_t wall)
Definition: Target.cxx:83
Double_t fField
Definition: Target.h:100
static std::tuple< Int_t, Int_t, Int_t, Int_t, Bool_t > DecodeBrickID(Int_t detID)
Definition: Target.cxx:437
Double_t ZDimension
Definition: Target.h:110
void SetNumberTargets(Int_t target)
Definition: Target.cxx:89
Double_t CellWidth
Definition: Target.h:136
Double_t WallXDim
Definition: Target.h:112
Double_t EmulsionY
Definition: Target.h:118
void SetDetectorDesign(Int_t Design)
Definition: Target.cxx:70
Double_t BrickPackageZ
Definition: Target.h:128
void SetColumnHeight(Double_t Y)
Definition: Target.cxx:134
Target()
Definition: Target.cxx:61
Bool_t ProcessHits(FairVolume *v=0) override
Definition: Target.cxx:342
Int_t fNTarget
Definition: Target.h:105
void SetBrickParam(Double_t BrX, Double_t BrY, Double_t BrZ, Double_t BrPackX, Double_t BrPackY, Double_t BrPackZ, Int_t number_of_plates_)
Definition: Target.cxx:116
Double_t fHpTDZ
Definition: Target.h:151
void SetTargetWallDimension(Double_t WallXDim, Double_t WallYDim, Double_t WallZDim)
Definition: Target.cxx:91
Target & operator=(const Target &)=delete
void SetCenterZ(Double_t z)
Definition: Target.cxx:144
Double_t BrickPackageX
Definition: Target.h:126
Double_t WallYDim
Definition: Target.h:113
void SetDetectorDimension(Double_t xdim, Double_t ydim, Double_t zdim)
Definition: Target.cxx:98
Double_t fPillarX
Definition: Target.h:145
Double_t AllPlateWidth
Definition: Target.h:124
Int_t number_of_plates
Definition: Target.h:106
void SetEmulsionParam(Double_t EmTh, Double_t EmX, Double_t EmY, Double_t PBTh, Double_t EPlW, Double_t LeadTh, Double_t AllPW)
Definition: Target.cxx:104
Double_t fBaseY
Definition: Target.h:143
Double_t WallZDim
Definition: Target.h:114
void SetPillarDimension(Double_t X, Double_t Y, Double_t Z)
Definition: Target.cxx:152
Double_t YDimension
Definition: Target.h:109
Double_t fColumnY
Definition: Target.h:94
Double_t fMagnetBaseY
Definition: Target.h:95
Double_t BrickZ
Definition: Target.h:132
Double_t EmulsionThickness
Definition: Target.h:116
Int_t fNWall
Definition: Target.h:104
void SetCoilUpHeight(Double_t H1)
Definition: Target.cxx:138
void SetTTzdimension(Double_t TTZ)
Definition: Target.cxx:130
Double_t fPillarZ
Definition: Target.h:147
void SetMagnetConfiguration(Int_t config)
Bool_t fPassive
Definition: Target.h:83
void SetCellParam(Double_t CellW)
Definition: Target.cxx:128
Double_t fCoilH1
Definition: Target.h:96
Int_t fNCol
Definition: Target.h:102
Bool_t fsingleemulsionfilm
Definition: Target.h:85
void SetBaseHeight(Double_t Y)
Definition: Target.cxx:136
Target(const Target &)=delete
Double_t TTrackerZ
Definition: Target.h:139
Double_t fPillarY
Definition: Target.h:146
Double_t EmPlateWidth
Definition: Target.h:122
Double_t XDimension
Definition: Target.h:108
void MakeNuTargetPassive(Bool_t a)
Definition: Target.cxx:75
Double_t fCoilH2
Definition: Target.h:97
void SetMagneticField(Double_t B)
Definition: Target.cxx:142
Double_t EmulsionX
Definition: Target.h:117
Double_t fMagnetY
Definition: Target.h:93
void SetBaseDimension(Double_t X, Double_t Y, Double_t Z)
Definition: Target.cxx:146