ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
EMBAccordionDetails::Clockwork Class Reference
Collaboration diagram for EMBAccordionDetails::Clockwork:

Public Member Functions

int phiGap (double radius, double xhit, double yhit) const
 compute number (0 to 1023) of closest electrode according to nominal accordion geometry More...
 
void getRPhi ()
 initialization routine More...
 
double phi0 (double radius) const
 phi of first absorber as function of radius for nominal accordion geometry (before sagging). More...
 
double Distance_Ele (const double &x, const double &y, const int &PhiC, int &Num_Straight, const int &Num_Coude, double &xl)
 Compute the distance to the electrode. More...
 
double Distance_Abs (const double &x, const double &y, const int &nabs, const int &Num_Straight, const int &Num_Coude)
 Compute the distance to the absorber. More...
 

Public Attributes

double gam0
 
double Rmin
 
double Rmax
 
double dR
 
double Rphi [5000]
 
int NRphi
 
int Nbrt
 
int Nbrt1
 
double rint_eleFib
 
double delta [15]
 
double rc [15]
 
double phic [15]
 
double xc [15]
 
double yc [15]
 
double rMinAccordion
 
double rMaxAccordion
 
double zMinBarrel
 
double zMaxBarrel
 
double etaMaxBarrel
 
int NCellTot
 
int NCellMax
 
const GeoStraightAccSectionelectrodeStraightSection
 
const GeoStraightAccSectionabsorberStraightSection
 

Detailed Description

Definition at line 17 of file EMBAccordionDetails.cxx.

Member Function Documentation

◆ Distance_Abs()

double EMBAccordionDetails::Clockwork::Distance_Abs ( const double &  x,
const double &  y,
const int &  nabs,
const int &  Num_Straight,
const int &  Num_Coude 
)

Compute the distance to the absorber.

◆ Distance_Ele()

double EMBAccordionDetails::Clockwork::Distance_Ele ( const double &  x,
const double &  y,
const int &  PhiC,
int &  Num_Straight,
const int &  Num_Coude,
double &  xl 
)

Compute the distance to the electrode.

◆ getRPhi()

void EMBAccordionDetails::Clockwork::getRPhi ( )

initialization routine

Definition at line 74 of file EMBAccordionDetails.cxx.

75 {
76  const double dl=0.001;
77  const double inv_dl = 1 / dl;
78  double cenx[15],ceny[15];
79  //double xl,xl2;
80  double sum1[5000],sumx[5000];
81  //xl=0;
82  //xl2=0.;
83  NRphi=5000;
84  Rmin=1500.;
85  dR=0.10;
86  Rmax=0.;
87 
88  const double rint= rint_eleFib;
89  const double inv_rint = 1. / rint;
90  const double dt=dl * inv_rint;
91  const double inv_dt = 1. / dt;
92 
93  for (int i=0;i<NRphi;i++) {
94  sum1[i]=0.;
95  sumx[i]=0.;
96  }
97  for (int i=0;i<15;i++) {
98  cenx[i]=rc[i]*cos(phic[i]);
99  ceny[i]=rc[i]*sin(phic[i]);
100  }
101 
102  for (int i=0; i<15; i++) {
103 
104 // fold
105  double phi0,phi1;
106  if (i==0) {
107  phi0=-M_PI/2.;
108  phi1=-M_PI/2.+delta[0];
109  }
110  else if (i==14) {
111  phi0=-M_PI+delta[13];
112  phi1=-M_PI/2.;
113  }
114  else {
115  if (i%2==1) {
116  phi0=delta[i];
117  phi1=M_PI-delta[i-1];
118  }
119  else {
120  phi0=-M_PI+delta[i-1];
121  phi1=-delta[i];
122  }
123  }
124  //xl2+=rint*fabs(phi1-phi0);
125  int nstep=int((phi1-phi0) * inv_dt)+1;
126 // std::cout << "fold " << phi0 << " " << phi1 << " " << nstep << std::endl;
127  for (int ii=0;ii<nstep;ii++) {
128  //xl+=dl;
129  double phi=phi0+dt*((double)ii);
130  double x=cenx[i]+rint*cos(phi);
131  double y=ceny[i]+rint*sin(phi);
132  double radius=sqrt(x*x+y*y);
133  if (radius>Rmax) Rmax=radius;
134  double phid=atan(y/x);
135  int ir=((int) ((radius-Rmin)/dR) );
136  if (ir>=0 && ir < NRphi) {
137  sum1[ir]+=1.;
138  sumx[ir]+=phid;
139  }
140  }
141 
142 // straight section
143  if (i<14) {
144  double dx=cenx[i+1]-cenx[i];
145  double dy=ceny[i+1]-ceny[i];
146  double along=dx*dx+dy*dy-4.*rint*rint;
147  along=sqrt(along);
148  double x0=0.5*(cenx[i+1]+cenx[i]);
149  double y0=0.5*(ceny[i+1]+ceny[i]);
150  double phi;
151  if (i%2==0) phi=M_PI/2-delta[i];
152  else phi=-M_PI/2.+delta[i];
153  double x1=x0-0.5*along*cos(phi);
154  double y1=y0-0.5*along*sin(phi);
155  //xl2+=along;
156  int nstep=int(along * inv_dl)+1;
157 // std::cout << "straight" << x0 << " " << y0 << along << " " << nstep << std::endl;
158  for (int ii=0;ii<nstep;ii++) {
159  //xl+=dl;
160  double x=x1+dl*((double)ii)*cos(phi);
161  double y=y1+dl*((double)ii)*sin(phi);
162  double radius=sqrt(x*x+y*y);
163  if (radius>Rmax) Rmax=radius;
164  double phid=atan(y/x);
165  int ir=((int) ((radius-Rmin)/dR) );
166  if (ir>=0 && ir < NRphi) {
167  sum1[ir]+=1.;
168  sumx[ir]+=phid;
169  }
170  }
171  }
172  }
173 // std::cout << "total electrode length " << xl << " " << xl2 << std::endl;
174 // std::cout << "rmax in accordion " << Rmax << std::endl;
175  for (int i=0; i<NRphi; i++) {
176  if (sum1[i]>0) {
177  Rphi[i]=sumx[i]/sum1[i];
178  // Not used: double radius = Rmin + ((double(i))+0.5)*dR;
179 // std::cout << " r,phi0 " << radius << " " << Rphi[i] << std::endl;
180  }
181  else Rphi[i]=0.;
182  }
183 }

◆ phi0()

double EMBAccordionDetails::Clockwork::phi0 ( double  radius) const

phi of first absorber as function of radius for nominal accordion geometry (before sagging).

Definition at line 286 of file EMBAccordionDetails.cxx.

287 {
288  int ir;
289  if (radius < Rmin) ir=0;
290  else {
291  if (radius > Rmax) radius=Rmax-0.0001;
292  ir=((int) ((radius-Rmin)/dR) );
293  }
294  return Rphi[ir];
295 }

◆ phiGap()

int EMBAccordionDetails::Clockwork::phiGap ( double  radius,
double  xhit,
double  yhit 
) const

compute number (0 to 1023) of closest electrode according to nominal accordion geometry

Definition at line 189 of file EMBAccordionDetails.cxx.

190 {
191  const double m2pi = 2.0*Gaudi::Units::pi;
192  double phi_0=phi0(radius)+gam0; // from -M_PI to M_PI
193  double phi_hit=atan2(yhit,xhit); // from -M_PI to M_PI
194  double dphi=phi_hit-phi_0;
195 // bring back to 0-2pi
196  if (dphi<0) dphi=dphi+m2pi;
197  if (dphi>=m2pi) dphi=dphi-m2pi;
198  dphi=dphi*(1024/m2pi);
199  int ngap=((int) dphi);
200  return ngap;
201 }

Member Data Documentation

◆ absorberStraightSection

const GeoStraightAccSection* EMBAccordionDetails::Clockwork::absorberStraightSection

Definition at line 70 of file EMBAccordionDetails.cxx.

◆ delta

double EMBAccordionDetails::Clockwork::delta[15]

Definition at line 56 of file EMBAccordionDetails.cxx.

◆ dR

double EMBAccordionDetails::Clockwork::dR

Definition at line 50 of file EMBAccordionDetails.cxx.

◆ electrodeStraightSection

const GeoStraightAccSection* EMBAccordionDetails::Clockwork::electrodeStraightSection

Definition at line 69 of file EMBAccordionDetails.cxx.

◆ etaMaxBarrel

double EMBAccordionDetails::Clockwork::etaMaxBarrel

Definition at line 65 of file EMBAccordionDetails.cxx.

◆ gam0

double EMBAccordionDetails::Clockwork::gam0

Definition at line 47 of file EMBAccordionDetails.cxx.

◆ Nbrt

int EMBAccordionDetails::Clockwork::Nbrt

Definition at line 53 of file EMBAccordionDetails.cxx.

◆ Nbrt1

int EMBAccordionDetails::Clockwork::Nbrt1

Definition at line 54 of file EMBAccordionDetails.cxx.

◆ NCellMax

int EMBAccordionDetails::Clockwork::NCellMax

Definition at line 67 of file EMBAccordionDetails.cxx.

◆ NCellTot

int EMBAccordionDetails::Clockwork::NCellTot

Definition at line 66 of file EMBAccordionDetails.cxx.

◆ NRphi

int EMBAccordionDetails::Clockwork::NRphi

Definition at line 52 of file EMBAccordionDetails.cxx.

◆ phic

double EMBAccordionDetails::Clockwork::phic[15]

Definition at line 58 of file EMBAccordionDetails.cxx.

◆ rc

double EMBAccordionDetails::Clockwork::rc[15]

Definition at line 57 of file EMBAccordionDetails.cxx.

◆ rint_eleFib

double EMBAccordionDetails::Clockwork::rint_eleFib

Definition at line 55 of file EMBAccordionDetails.cxx.

◆ Rmax

double EMBAccordionDetails::Clockwork::Rmax

Definition at line 49 of file EMBAccordionDetails.cxx.

◆ rMaxAccordion

double EMBAccordionDetails::Clockwork::rMaxAccordion

Definition at line 62 of file EMBAccordionDetails.cxx.

◆ Rmin

double EMBAccordionDetails::Clockwork::Rmin

Definition at line 48 of file EMBAccordionDetails.cxx.

◆ rMinAccordion

double EMBAccordionDetails::Clockwork::rMinAccordion

Definition at line 61 of file EMBAccordionDetails.cxx.

◆ Rphi

double EMBAccordionDetails::Clockwork::Rphi[5000]

Definition at line 51 of file EMBAccordionDetails.cxx.

◆ xc

double EMBAccordionDetails::Clockwork::xc[15]

Definition at line 59 of file EMBAccordionDetails.cxx.

◆ yc

double EMBAccordionDetails::Clockwork::yc[15]

Definition at line 60 of file EMBAccordionDetails.cxx.

◆ zMaxBarrel

double EMBAccordionDetails::Clockwork::zMaxBarrel

Definition at line 64 of file EMBAccordionDetails.cxx.

◆ zMinBarrel

double EMBAccordionDetails::Clockwork::zMinBarrel

Definition at line 63 of file EMBAccordionDetails.cxx.


The documentation for this class was generated from the following file:
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
TestSUSYToolsAlg.dl
dl
Definition: TestSUSYToolsAlg.py:83
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
M_PI
#define M_PI
Definition: ActiveFraction.h:11
EMBAccordionDetails::Clockwork::rint_eleFib
double rint_eleFib
Definition: EMBAccordionDetails.cxx:55
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
x
#define x
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
pi
#define pi
Definition: TileMuonFitter.cxx:65
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
EMBAccordionDetails::Clockwork::rc
double rc[15]
Definition: EMBAccordionDetails.cxx:57
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:58
EMBAccordionDetails::Clockwork::Rmin
double Rmin
Definition: EMBAccordionDetails.cxx:48
EMBAccordionDetails::Clockwork::NRphi
int NRphi
Definition: EMBAccordionDetails.cxx:52
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
EMBAccordionDetails::Clockwork::dR
double dR
Definition: EMBAccordionDetails.cxx:50
EMBAccordionDetails::Clockwork::phi0
double phi0(double radius) const
phi of first absorber as function of radius for nominal accordion geometry (before sagging).
Definition: EMBAccordionDetails.cxx:286
EMBAccordionDetails::Clockwork::Rmax
double Rmax
Definition: EMBAccordionDetails.cxx:49
EMBAccordionDetails::Clockwork::gam0
double gam0
Definition: EMBAccordionDetails.cxx:47
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
ir
int ir
counter of the current depth
Definition: fastadd.cxx:49
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
y
#define y
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
EMBAccordionDetails::Clockwork::delta
double delta[15]
Definition: EMBAccordionDetails.cxx:56
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
EMBAccordionDetails::Clockwork::phic
double phic[15]
Definition: EMBAccordionDetails.cxx:58
EMBAccordionDetails::Clockwork::Rphi
double Rphi[5000]
Definition: EMBAccordionDetails.cxx:51