ATLAS Offline Software
ALFA_BeamTrack.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 "ALFA_BeamTrack.h"
6 
7 //Athena Stuff
8 #include "GaudiKernel/MsgStream.h"
10 
11 //FPTracker stuff
13 #include "FPTracker/Beamline.h"
14 #include "FPTracker/Particle.h"
18 #include "FPTracker/ConfigData.h"
20 #include "FPTracker/Point.h"
21 
22 
23 #include <memory>
24 #include <iostream>
25 #include <utility>
26 
27 
28 int ALFA_BeamTrack::initialize(const FPConfig &ConfigValues){
29 
30  m_ConfDir= ConfigValues.ConfDir;
31  m_AlfaTwiss = ConfigValues.UseALFA;
32 
33 
34  //initialisation of beampipes
35  if (m_AlfaTwiss) {std::cout<<"Will use alfa twiss files"<<std::endl;}
36 
37 
38  /*
39 
40  boost::shared_ptr< std::ifstream > p_confFile;
41  p_confFile = FPTracker::getConfigFile(m_ConfDir, "FPData.txt") ;
42  m_ConfigData = FPTracker::readConfigData(p_confFile);
43 
44  //SetPosition of RP in meter
45 
46  //m_ConfigData.setPlane(ConfigValues.RPDistance);
47 
48 
49  ConfigData configData;
50  if( !readConfigData(p_confFile, configData) )
51  {
52  std::cout<<"fatal error reading config data\n";
53  return 1;
54  }
55 
56 
57  */
58 
59  //Set Configuration parameters of FPTracker library
60  FPTracker::ConfigData ConfigData;
61 
62 
63  ConfigData.IP=ConfigValues.IP;
64  ConfigData.useaper=ConfigValues.useaper;
65  ConfigData.apermb=ConfigValues.apermb;
66  ConfigData.xcol1=ConfigValues.xcol1;
67  ConfigData.xcol2=ConfigValues.xcol2;
68  ConfigData.absZMagMax=ConfigValues.absZMagMax;
69  ConfigData.endMarker=ConfigValues.RPDistance;
70  ConfigData.setpbeam(ConfigValues.pbeam0);
71 
72  /*
73  std::cout<<ConfigData.IP<<std::endl;
74  std::cout<<ConfigData.useaper<<std::endl;
75  std::cout<<ConfigData.apermb<<std::endl;
76  std::cout<<ConfigData.xcol1<<std::endl;
77  std::cout<<ConfigData.xcol2<<std::endl;
78  std::cout<<ConfigData.absZMagMax<<std::endl;
79  std::cout<<ConfigData.endMarker<<std::endl;
80  std::cout<<ConfigData.pbeam0<<std::endl;
81  std::cout<<ConfigData.brho<<std::endl;*/
82 
83 
84 
85 
86 
87 
88 
89 
90 
91  m_ip = ConfigData.IP;
92  m_Magver = 3;
93 
99  std::cout<<" beamline_1 start "<<'\n';
100  std::cout<<m_Beamline_1;
101  std::cout<<" beamline_1 end "<<"\n\n";
102 
108 
109  std::cout<<" beamline_2 start "<<'\n';
110  std::cout<<m_Beamline_2;
111  std::cout<<" beamline_2 end "<<"\n\n";
112 
113  return true;
114 }
115 
116 //calculates Position and Momentum at RP
118 
120  FPTracker::Point lost_markerMom(-99,-99,-99);
121 
122 
123  std::cout<<"fpTracker: "<<Particle<<std::endl;
125  std::cout<<"fpTracker: "<<Particle<<std::endl;
126 
127  //m_PosParticleRP=Particle.position(); //old version vith 97mm shift
128  m_PosParticleRP=Particle.positionRelBeam();//version without shift
129 
130  FPTracker::Point momentum( Particle.direction().x()*Particle.momentum(),
131  Particle.direction().y()*Particle.momentum(),
132  Particle.direction().z()*Particle.momentum());
133 
135 
136 
137  if(Particle.isOutOfAperture())
138  {
139  //FPTracker::Point lost_markerPos(-99,-99,Particle.position().z());// old version with shift
140  FPTracker::Point lost_markerPos(-99,-99,Particle.positionRelBeam().z());
141  std::cout<<"Particle got lost"<<std::endl;
142  //m_PosParticleRP=lost_marker;
143  //write lost particle with -99 as maker in x and yposition z position ist the place where particle got lost
144  m_PosParticleRP=lost_markerPos;
145 
146  m_MomParticleRP=lost_markerMom;
147  }
148 
149 
150  return true;
151 }
152 
153 //returns particle position
155  return m_PosParticleRP;
156 }
157 
158 // returns momentum of particle
160  return m_MomParticleRP;
161 }
162 
163 
getAlfaMagnetConfigFiles.h
FPConfig::IP
int IP
Definition: ALFA_FPConfig.h:17
FPConfig::UseALFA
bool UseALFA
Definition: ALFA_FPConfig.h:12
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
ALFA_BeamTrack.h
ALFA_BeamTrack::m_ip
int m_ip
Definition: ALFA_BeamTrack.h:50
FPTracker::ConfigData::useaper
bool useaper
Definition: FPTracker/FPTracker/ConfigData.h:14
FPConfig
Definition: ALFA_FPConfig.h:10
FPConfig::ConfDir
std::string ConfDir
Definition: ALFA_FPConfig.h:13
ALFA_BeamTrack::m_ConfDir
std::string m_ConfDir
Definition: ALFA_BeamTrack.h:47
ConfigData.h
Point.h
ALFA_BeamTrack::m_Beamline_1
FPTracker::Beamline m_Beamline_1
Definition: ALFA_BeamTrack.h:60
ALFA_BeamTrack::m_PosParticleRP
FPTracker::Point m_PosParticleRP
Definition: ALFA_BeamTrack.h:57
ALFA_BeamTrack::m_MomParticleRP
FPTracker::Point m_MomParticleRP
Definition: ALFA_BeamTrack.h:58
FPTracker::setupBeamline
Beamline setupBeamline(const ConfigData &, const Side &, int magver, std::shared_ptr< std::ifstream >)
Definition: setupBeamline.cxx:27
xAOD::Particle
Particle_v1 Particle
Define the latest version of the particle class.
Definition: Event/xAOD/xAODParticleEvent/xAODParticleEvent/Particle.h:17
ALFA_BeamTrack::initialize
int initialize(const FPConfig &ConfigValues)
Definition: ALFA_BeamTrack.cxx:28
FPTracker::ConfigData::xcol1
double xcol1
Definition: FPTracker/FPTracker/ConfigData.h:16
getMagnetConfigFiles.h
FPTracker::beam1
@ beam1
Definition: FPTrackerConstants.h:12
AthAlgorithm.h
FPTracker::ConfigData::xcol2
double xcol2
Definition: FPTracker/FPTracker/ConfigData.h:17
FPConfig::xcol2
double xcol2
Definition: ALFA_FPConfig.h:22
getConfigFile.h
FPTracker::ConfigData::absZMagMax
float absZMagMax
Definition: FPTracker/FPTracker/ConfigData.h:23
ALFA_BeamTrack::m_AlfaTwiss
bool m_AlfaTwiss
Definition: ALFA_BeamTrack.h:49
FPConfig::apermb
double apermb
Definition: ALFA_FPConfig.h:20
ALFA_BeamTrack::MomRP
const FPTracker::Point & MomRP()
gives back Momentum
Definition: ALFA_BeamTrack.cxx:159
FPTrackerConstants.h
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
FPTracker::beam2
@ beam2
Definition: FPTrackerConstants.h:12
FPConfig::xcol1
double xcol1
Definition: ALFA_FPConfig.h:21
FPTracker::Beamline::track
void track(IParticle &) const
Definition: FPTracker/src/Beamline.cxx:94
ALFA_BeamTrack::m_Magfile
std::shared_ptr< std::ifstream > m_Magfile
Definition: ALFA_BeamTrack.h:54
FPConfig::absZMagMax
float absZMagMax
Definition: ALFA_FPConfig.h:28
FPTracker::Particle
Definition: ForwardDetectors/FPTracker/FPTracker/Particle.h:19
FPConfig::RPDistance
float RPDistance
Definition: ALFA_FPConfig.h:25
setupBeamline.h
ALFA_BeamTrack::m_Magver
int m_Magver
Definition: ALFA_BeamTrack.h:51
FPTracker::ConfigData::endMarker
float endMarker
Definition: FPTracker/FPTracker/ConfigData.h:21
ALFA_BeamTrack::PosRP
const FPTracker::Point & PosRP()
Gives Back Position.
Definition: ALFA_BeamTrack.cxx:154
FPTracker::Point
Definition: FPTracker/FPTracker/Point.h:14
ALFA_BeamTrack::CalculatePosRP
int CalculatePosRP(FPTracker::Particle particle)
calculates the particle position and momentum at RP run first CalculatePosRP() then posRP() and momRP...
Definition: ALFA_BeamTrack.cxx:117
FPTracker::getMagnetConfigFiles
std::shared_ptr< std::ifstream > getMagnetConfigFiles(const std::string &dir, int IP, int magVer, const Side &side)
Definition: getMagnetConfigFiles.cxx:51
Beamline.h
FPTracker::ConfigData::setpbeam
void setpbeam(double)
Definition: FPTracker/src/ConfigData.cxx:37
FPTracker::getAlfaMagnetConfigFiles
std::shared_ptr< std::ifstream > getAlfaMagnetConfigFiles(const std::string &dir, const Side &side)
Definition: getAlfaMagnetConfigFiles.cxx:14
FPConfig::pbeam0
double pbeam0
Definition: ALFA_FPConfig.h:23
FPConfig::useaper
bool useaper
Definition: ALFA_FPConfig.h:19
ALFA_BeamTrack::m_Beamline_2
FPTracker::Beamline m_Beamline_2
Definition: ALFA_BeamTrack.h:61
ALFA_BeamTrack::m_Side
FPTracker::Side m_Side
Definition: ALFA_BeamTrack.h:53
FPTracker::ConfigData
Definition: FPTracker/FPTracker/ConfigData.h:9
Particle.h
FPTracker::ConfigData::apermb
double apermb
Definition: FPTracker/FPTracker/ConfigData.h:15
FPTracker::ConfigData::IP
int IP
Definition: FPTracker/FPTracker/ConfigData.h:12