ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
ForwardDetectors
FPTracker
src
setupBeamline.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
FPTracker/setupBeamline.h
"
6
#include "
FPTracker/STLHelpers.h
"
7
#include "
FPTracker/ConfigData.h
"
8
#include "
FPTracker/magnetSet.h
"
9
#include "
FPTracker/readConfigData.h
"
10
#include "
FPTracker/Magnet.h
"
11
#include "
FPTracker/EmptySpaceElement.h
"
12
#include "
FPTracker/CollimatorData.h
"
13
#include "
FPTracker/Collimator.h
"
14
#include "
FPTracker/collSet.h
"
15
#include "
FPTracker/Plane.h
"
16
#include "
FPTracker/Beamline.h
"
17
#include "
FPTracker/beamlineXPosition.h
"
18
#include "
FPTracker/IBeamElement.h
"
19
#include "
FPTracker/Particle.h
"
20
#include <fstream>
21
#include <iostream>
22
23
namespace
FPTracker
{
24
25
Beamline
setupBeamline
(
26
const
ConfigData
& configData,
27
const
Side
& side,
28
int
magver,
29
std::shared_ptr< std::ifstream> magfile
30
)
31
{
32
33
Magnet::Container_t
magnets =
magnetSet
(configData, side, magver, std::move(magfile));
34
Plane::Ptr_t
endPlane(
new
Plane
(configData.
endMarker
, side) );
35
CollimatorData
collimatorData(configData);
36
Collimator::Container_t
collimators =
collSet
(collimatorData, side);
37
38
IBeamElement::List_t
elements;
39
//elements.reserve( 2*(magnets.size()+collimators.size()+planes.size()) );
40
elements.assign(magnets.begin(), magnets.end());
41
elements.push_back(std::move(endPlane));
42
elements.insert(elements.end(), collimators.begin(), collimators.end());
43
elements.sort(
absZGreater< IBeamElement::ConstPtr_t >
);
44
45
46
IBeamElement::ListIter_t
current = elements.begin();
47
IBeamElement::ListIter_t
last = elements.end();
48
49
elements.push_front
50
(
51
EmptySpaceElement::Ptr_t
(
52
new
EmptySpaceElement
(
53
0.,
54
(*current)->frontFace(),
55
beamlineXPosition
(0.),
56
(*current)->side()
57
)
58
)
59
);
60
++current;
61
62
for
(; current != last; ++current){
63
IBeamElement::ListIter_t
previous = current;
64
--previous;
65
elements.insert(current,
66
EmptySpaceElement::Ptr_t
(
67
new
EmptySpaceElement
(
68
*previous,
69
*current
70
)
71
)
72
);
73
}
74
75
Beamline
beamline(elements.begin(), elements.end());
76
77
double
pbeam = configData.
pbeam0
;
78
std::shared_ptr<IParticle> ip = (side ==
beam1
) ?
79
std::shared_ptr<IParticle>(
new
Particle
(0., 0., 0., 0., 0., pbeam) ):
80
std::shared_ptr<IParticle>(
new
Particle
(0., 0., 0., 0., 0., -1.*pbeam) );
81
beamline.
calibrate
( *ip );
82
83
84
return
beamline;
85
}
86
}
EmptySpaceElement.h
Beamline.h
CollimatorData.h
Collimator.h
ConfigData.h
IBeamElement.h
Magnet.h
Plane.h
STLHelpers.h
Particle.h
beamlineXPosition.h
FPTracker::Beamline
Definition
FPTracker/FPTracker/Beamline.h:15
FPTracker::Beamline::calibrate
void calibrate(IParticle &)
Definition
FPTracker/src/Beamline.cxx:110
FPTracker::CollimatorData
Definition
FPTracker/FPTracker/CollimatorData.h:13
FPTracker::Collimator::Container_t
std::vector< Ptr_t > Container_t
Definition
FPTracker/FPTracker/Collimator.h:41
FPTracker::ConfigData
Definition
FPTracker/FPTracker/ConfigData.h:9
FPTracker::ConfigData::endMarker
float endMarker
Definition
FPTracker/FPTracker/ConfigData.h:21
FPTracker::ConfigData::pbeam0
double pbeam0
Definition
FPTracker/FPTracker/ConfigData.h:18
FPTracker::EmptySpaceElement
Definition
EmptySpaceElement.h:18
FPTracker::IBeamElement::List_t
std::list< Ptr_t > List_t
Definition
FPTracker/FPTracker/IBeamElement.h:47
FPTracker::IBeamElement::ListIter_t
List_t::iterator ListIter_t
Definition
FPTracker/FPTracker/IBeamElement.h:48
FPTracker::IBeamElement::Ptr_t
std::shared_ptr< IBeamElement > Ptr_t
Definition
FPTracker/FPTracker/IBeamElement.h:41
FPTracker::Magnet::Container_t
std::vector< Ptr_t > Container_t
Definition
FPTracker/FPTracker/Magnet.h:62
FPTracker::Particle
Definition
ForwardDetectors/FPTracker/FPTracker/Particle.h:19
FPTracker::Plane
Definition
FPTracker/FPTracker/Plane.h:19
collSet.h
magnetSet.h
FPTracker
Definition
FPTracker/FPTracker/Beamline.h:12
FPTracker::collSet
Collimator::Container_t collSet(const CollimatorData &, Side)
Definition
collSet.cxx:12
FPTracker::absZGreater
bool absZGreater(const PtrType rhs, const PtrType lhs)
Definition
FPTracker/FPTracker/STLHelpers.h:22
FPTracker::magnetSet
Magnet::Container_t magnetSet(const ConfigData &, const Side &side, int magversion, std::shared_ptr< std::ifstream > magfile)
Definition
magnetSet.cxx:56
FPTracker::beamlineXPosition
TransversePoint beamlineXPosition(double z)
Definition
beamlineXPosition.cxx:11
FPTracker::setupBeamline
Beamline setupBeamline(const ConfigData &, const Side &, int magver, std::shared_ptr< std::ifstream >)
Definition
setupBeamline.cxx:25
FPTracker::Side
Side
Definition
FPTrackerConstants.h:12
FPTracker::beam1
@ beam1
Definition
FPTrackerConstants.h:12
readConfigData.h
setupBeamline.h
Generated on
for ATLAS Offline Software by
1.17.0