|
ATLAS Offline Software
|
#include <SiSpacePointsSeedMaker_HeavyIon.h>
|
|
| SiSpacePointsSeedMaker_HeavyIon (const std::string &, const std::string &, const IInterface *) |
|
virtual | ~SiSpacePointsSeedMaker_HeavyIon ()=default |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | finalize () override |
|
|
virtual void | newEvent (const EventContext &ctx, EventData &data, int iteration) const override |
|
virtual void | newRegion (const EventContext &ctx, EventData &data, const std::vector< IdentifierHash > &vPixel, const std::vector< IdentifierHash > &vSCT) const override |
|
virtual void | newRegion (const EventContext &ctx, EventData &data, const std::vector< IdentifierHash > &vPixel, const std::vector< IdentifierHash > &vSCT, const IRoiDescriptor &iRD) const override |
|
|
virtual void | find2Sp (EventData &data, const std::list< Trk::Vertex > &lv) const override |
| with two space points with or without vertex constraint More...
|
|
virtual void | find3Sp (const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv) const override |
| with three space points with or without vertex constraint More...
|
|
virtual void | find3Sp (const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv, const double *zVertex) const override |
| with three space points with or without vertex constraint with information about min and max Z of the vertex More...
|
|
virtual void | findVSp (const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv) const override |
|
|
produced accordingly methods find
|
virtual const SiSpacePointsSeed * | next (const EventContext &ctx, EventData &data) const override |
|
virtual void | writeNtuple (const SiSpacePointsSeed *seed, const Trk::Track *track, int seedType, long eventNumber) const override |
|
virtual bool | getWriteNtupleBoolProperty () const override |
|
|
|
SG::ReadHandleKey< SpacePointContainer > | m_spacepointsSCT {this, "SpacePointsSCTName", "SCT_SpacePoints", "SCT space points container"} |
|
SG::ReadHandleKey< SpacePointContainer > | m_spacepointsPixel {this, "SpacePointsPixelName", "PixelSpacePoints", "Pixel space points container"} |
|
SG::ReadHandleKey< SpacePointOverlapCollection > | m_spacepointsOverlap {this, "SpacePointsOverlapName", "OverlapSpacePoints"} |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"} |
|
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > | m_fieldCondObjInputKey |
|
|
BooleanProperty | m_pixel {this, "usePixel", true} |
|
BooleanProperty | m_sct {this, "useSCT", true} |
|
BooleanProperty | m_useOverlap {this, "useOverlapSpCollection", false} |
|
IntegerProperty | m_maxsize {this, "maxSize", 20000} |
|
IntegerProperty | m_maxsizeSP {this, "maxSizeSP", 4000} |
|
IntegerProperty | m_maxOneSize {this, "maxSeedsForSpacePoint", 6} |
|
UnsignedIntegerProperty | m_maxNumberVertices {this, "maxNumberVertices", 1} |
|
FloatProperty | m_r1minv {this, "minVRadius1", 0.} |
|
FloatProperty | m_r1maxv {this, "maxVRadius1", 60.} |
|
FloatProperty | m_r2minv {this, "minVRadius2", 70.} |
|
FloatProperty | m_r2maxv {this, "maxVRadius2", 200.} |
|
FloatProperty | m_drmin {this, "mindRadius", 10.} |
|
FloatProperty | m_drmax {this, "maxdRadius", 270.} |
|
FloatProperty | m_zmin {this, "minZ", -250.} |
|
FloatProperty | m_zmax {this, "maxZ", +250.} |
|
FloatProperty | m_r_rmax {this, "radMax", 600.} |
|
FloatProperty | m_r_rstep {this, "radStep", 2.} |
|
FloatProperty | m_dzver {this, "maxdZver", 5.} |
|
FloatProperty | m_dzdrver {this, "maxdZdRver", 0.02} |
|
FloatProperty | m_diver {this, "maxdImpact", 10.} |
|
FloatProperty | m_diverpps {this, "maxdImpactPPS", 1.7} |
|
FloatProperty | m_diversss {this, "maxdImpactSSS", 1000.} |
|
|
FloatProperty | m_etamax {this, "etaMax", 2.7} |
|
FloatProperty | m_ptmin {this, "pTmin", 500.} |
|
FloatProperty | m_fieldScale {this, "fieldScale", 1.} |
|
|
float | m_drminv {20.} |
|
bool | m_initialized {false} |
|
int | m_outputlevel {0} |
|
int | m_r_size {0} |
|
int | m_fNmax {0} |
|
int | m_fvNmax {0} |
|
int | m_rfz_b [SizeRFZ] {} |
|
int | m_rfz_t [SizeRFZ] {} |
|
int | m_rfz_ib [SizeRFZ][SizeI] {} |
|
int | m_rfz_it [SizeRFZ][SizeI] {} |
|
int | m_rfzv_n [SizeRFZV] {} |
|
int | m_rfzv_i [SizeRFZV][SizeIV] {} |
|
float | m_dzdrmin {0.} |
|
float | m_dzdrmax {0.} |
|
float | m_ipt {0.} |
|
float | m_ipt2 {0.} |
|
float | m_COF {0.} |
|
float | m_sF {0.} |
|
float | m_sFv {0.} |
|
|
| SiSpacePointsSeedMaker_HeavyIon ()=delete |
|
| SiSpacePointsSeedMaker_HeavyIon (const SiSpacePointsSeedMaker_HeavyIon &)=delete |
|
SiSpacePointsSeedMaker_HeavyIon & | operator= (const SiSpacePointsSeedMaker_HeavyIon &)=delete |
|
MsgStream & | dumpConditions (EventData &data, MsgStream &out) const |
|
void | buildFrameWork () |
|
void | buildBeamFrameWork (const EventContext &ctx, EventData &data) const |
|
void | newOneSeed (EventData &data, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const float &, const float &) const |
|
void | fillLists (EventData &data) const |
|
void | production2Sp (EventData &data) const |
|
void | production3Sp (EventData &data) const |
|
void | production3Sp (EventData &data, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, int, int, int &) const |
|
void | production3SpNoVertex (EventData &data, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, int, int, int &) const |
|
bool | newVertices (EventData &data, const std::list< Trk::Vertex > &) const |
|
void | findNext (EventData &data) const |
|
bool | isZCompatible (EventData &data, float &, float &, float &) const |
|
void | initializeEventData (EventData &data) const |
|
static MsgStream & | dumpEvent (EventData &data, MsgStream &out) |
|
static SiSpacePointForSeed * | newSpacePoint (EventData &data, const Trk::SpacePoint *const &) |
|
static void | newSeed (EventData &data, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const float &) |
|
static void | newSeed (EventData &data, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const float &) |
|
static void | fillSeeds (EventData &data) |
|
static void | erase (EventData &data) |
|
static float | dZVertexMin (EventData &data, float &) |
|
static void | convertToBeamFrameWork (EventData &data, const Trk::SpacePoint *const &, float *) |
|
Class for track candidates generation using space points information for standard Atlas geometry
In AthenaMT, event dependent cache inside SiSpacePointsSeedMaker_HeavyIon is not preferred. SiSpacePointsSeedMakerEventData = EventData class holds event dependent data for SiSpacePointsSeedMaker_HeavyIon. Its object is instantiated in SiSPSeededTrackFinder::execute.
Definition at line 52 of file SiSpacePointsSeedMaker_HeavyIon.h.
◆ Size
◆ SiSpacePointsSeedMaker_HeavyIon() [1/3]
InDet::SiSpacePointsSeedMaker_HeavyIon::SiSpacePointsSeedMaker_HeavyIon |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~SiSpacePointsSeedMaker_HeavyIon()
virtual InDet::SiSpacePointsSeedMaker_HeavyIon::~SiSpacePointsSeedMaker_HeavyIon |
( |
| ) |
|
|
virtualdefault |
◆ SiSpacePointsSeedMaker_HeavyIon() [2/3]
InDet::SiSpacePointsSeedMaker_HeavyIon::SiSpacePointsSeedMaker_HeavyIon |
( |
| ) |
|
|
privatedelete |
◆ SiSpacePointsSeedMaker_HeavyIon() [3/3]
◆ buildBeamFrameWork()
void InDet::SiSpacePointsSeedMaker_HeavyIon::buildBeamFrameWork |
( |
const EventContext & |
ctx, |
|
|
EventData & |
data |
|
) |
| const |
|
private |
Definition at line 718 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
723 double tx =
std::tan(beamSpotHandle->beamTilt(0));
724 double ty =
std::tan(beamSpotHandle->beamTilt(1));
726 double ph = atan2(ty,
tx);
727 double th = acos(1./sqrt(1.+
tx*
tx+ty*ty));
728 double sint =
sin(
th);
730 double sinp =
sin(ph);
731 double cosp =
cos(ph);
733 data.xbeam[0] =
static_cast<float>(cb.x()) ;
734 data.xbeam[1] =
static_cast<float>(
cost*cosp*cosp+sinp*sinp);
735 data.xbeam[2] =
static_cast<float>(
cost*sinp*cosp-sinp*cosp);
736 data.xbeam[3] =-
static_cast<float>(sint*cosp );
738 data.ybeam[0] =
static_cast<float>(cb.y()) ;
739 data.ybeam[1] =
static_cast<float>(
cost*cosp*sinp-sinp*cosp);
740 data.ybeam[2] =
static_cast<float>(
cost*sinp*sinp+cosp*cosp);
741 data.ybeam[3] =-
static_cast<float>(sint*sinp );
743 data.zbeam[0] =
static_cast<float>(cb.z()) ;
744 data.zbeam[1] =
static_cast<float>(sint*cosp) ;
745 data.zbeam[2] =
static_cast<float>(sint*sinp) ;
746 data.zbeam[3] =
static_cast<float>(
cost) ;
◆ buildFrameWork()
void InDet::SiSpacePointsSeedMaker_HeavyIon::buildFrameWork |
( |
| ) |
|
|
private |
◆ convertToBeamFrameWork()
◆ dump()
MsgStream & InDet::SiSpacePointsSeedMaker_HeavyIon::dump |
( |
EventData & |
data, |
|
|
MsgStream & |
out |
|
) |
| const |
|
overridevirtual |
◆ dumpConditions()
MsgStream & InDet::SiSpacePointsSeedMaker_HeavyIon::dumpConditions |
( |
EventData & |
data, |
|
|
MsgStream & |
out |
|
) |
| const |
|
private |
Definition at line 402 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
405 std::string
s2;
for (
int i=0;
i<
n; ++
i)
s2.append(
" ");
s2.append(
"|");
407 std::string
s3;
for (
int i=0;
i<
n; ++
i)
s3.append(
" ");
s3.append(
"|");
409 std::string
s4;
for (
int i=0;
i<
n; ++
i)
s4.append(
" ");
s4.append(
"|");
411 std::string s5;
for (
int i=0;
i<
n; ++
i) s5.append(
" "); s5.append(
"|");
414 out<<
"|---------------------------------------------------------------------|"
428 <<std::setw(12)<<
m_sct
433 out<<
"| maxSizeSP | "
436 out<<
"| pTmin (mev) | "
437 <<std::setw(12)<<std::setprecision(5)<<
m_ptmin
440 <<std::setw(12)<<std::setprecision(5)<<
m_etamax
442 out<<
"| max radius SP | "
443 <<std::setw(12)<<std::setprecision(5)<<
m_r_rmax
445 out<<
"| radius step | "
446 <<std::setw(12)<<std::setprecision(5)<<
m_r_rstep
448 out<<
"| min Z-vertex position | "
449 <<std::setw(12)<<std::setprecision(5)<<
m_zmin
451 out<<
"| max Z-vertex position | "
452 <<std::setw(12)<<std::setprecision(5)<<
m_zmax
454 out<<
"| min radius first SP(2) | "
455 <<std::setw(12)<<std::setprecision(5)<<
m_r1minv
457 out<<
"| min radius second SP(2) | "
458 <<std::setw(12)<<std::setprecision(5)<<
m_r2minv
460 out<<
"| max radius first SP(2) | "
461 <<std::setw(12)<<std::setprecision(5)<<
m_r1maxv
463 out<<
"| max radius second SP(2) | "
464 <<std::setw(12)<<std::setprecision(5)<<
m_r2maxv
466 out<<
"| min space points dR | "
467 <<std::setw(12)<<std::setprecision(5)<<
m_drmin
469 out<<
"| max space points dR | "
470 <<std::setw(12)<<std::setprecision(5)<<
m_drmax
472 out<<
"| max dZ impact | "
473 <<std::setw(12)<<std::setprecision(5)<<
m_dzver
475 out<<
"| max dZ/dR impact | "
476 <<std::setw(12)<<std::setprecision(5)<<
m_dzdrver
478 out<<
"| max impact | "
479 <<std::setw(12)<<std::setprecision(5)<<
m_diver
481 out<<
"| max impact pps | "
482 <<std::setw(12)<<std::setprecision(5)<<
m_diverpps
484 out<<
"| max impact sss | "
485 <<std::setw(12)<<std::setprecision(5)<<
m_diversss
487 out<<
"|---------------------------------------------------------------------|"
489 out<<
"| Beam X center | "
490 <<std::setw(12)<<std::setprecision(5)<<
data.xbeam[0]
492 out<<
"| Beam Y center | "
493 <<std::setw(12)<<std::setprecision(5)<<
data.ybeam[0]
495 out<<
"| Beam Z center | "
496 <<std::setw(12)<<std::setprecision(5)<<
data.zbeam[0]
498 out<<
"| Beam X-axis direction | "
499 <<std::setw(12)<<std::setprecision(5)<<
data.xbeam[1]
500 <<std::setw(12)<<std::setprecision(5)<<
data.xbeam[2]
501 <<std::setw(12)<<std::setprecision(5)<<
data.xbeam[3]
503 out<<
"| Beam Y-axis direction | "
504 <<std::setw(12)<<std::setprecision(5)<<
data.ybeam[1]
505 <<std::setw(12)<<std::setprecision(5)<<
data.ybeam[2]
506 <<std::setw(12)<<std::setprecision(5)<<
data.ybeam[3]
508 out<<
"| Beam Z-axis direction | "
509 <<std::setw(12)<<std::setprecision(5)<<
data.zbeam[1]
510 <<std::setw(12)<<std::setprecision(5)<<
data.zbeam[2]
511 <<std::setw(12)<<std::setprecision(5)<<
data.zbeam[3]
513 out<<
"|---------------------------------------------------------------------|"
◆ dumpEvent()
MsgStream & InDet::SiSpacePointsSeedMaker_HeavyIon::dumpEvent |
( |
EventData & |
data, |
|
|
MsgStream & |
out |
|
) |
| |
|
staticprivate |
Definition at line 522 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
524 out<<
"|---------------------------------------------------------------------|"
527 <<std::setw(12)<<
data.ns
529 out<<
"| data.nsaz | "
530 <<std::setw(12)<<
data.nsaz
532 out<<
"| data.nsazv | "
533 <<std::setw(12)<<
data.nsazv
536 <<std::setw(12)<<
data.l_seeds.size()
538 out<<
"|---------------------------------------------------------------------|"
◆ dZVertexMin()
float InDet::SiSpacePointsSeedMaker_HeavyIon::dZVertexMin |
( |
EventData & |
data, |
|
|
float & |
Z |
|
) |
| |
|
staticprivate |
◆ erase()
void InDet::SiSpacePointsSeedMaker_HeavyIon::erase |
( |
EventData & |
data | ) |
|
|
staticprivate |
◆ fillLists()
void InDet::SiSpacePointsSeedMaker_HeavyIon::fillLists |
( |
EventData & |
data | ) |
const |
|
private |
Definition at line 765 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
771 if (!
data.r_map[
i])
continue;
772 r =
data.r_Sorted[
i].begin();
774 while (
r!=
data.r_Sorted[
i].end()) {
778 float F = (*r)->phi();
781 int f =
static_cast<int>(
F*
m_sF);
791 Z< 250.?
z=5:
Z< 450.?
z=6:
Z< 925.?
z=7:
Z< 1400.?
z=8:
Z< 2500.?
z=9:
z=10;
793 Z>-250.?
z=5:
Z>-450.?
z=4:
Z>-925.?
z=3:
Z>-1400.?
z=2:
Z>-2500.?
z=1:
z= 0;
797 data.rfz_Sorted[
n].push_back(*
r);
800 if ((*r)->spacepoint->clusterList().second == 0 &&
z>=3 &&
z<=7) {
801 z<=4 ? z=0 : z>=6 ?
z=2 :
z=1;
810 data.rfzv_Sorted[
n].push_back(*
r);
◆ fillSeeds()
void InDet::SiSpacePointsSeedMaker_HeavyIon::fillSeeds |
( |
EventData & |
data | ) |
|
|
staticprivate |
◆ finalize()
StatusCode InDet::SiSpacePointsSeedMaker_HeavyIon::finalize |
( |
| ) |
|
|
overridevirtual |
◆ find2Sp()
◆ find3Sp() [1/2]
◆ find3Sp() [2/2]
◆ findNext()
void InDet::SiSpacePointsSeedMaker_HeavyIon::findNext |
( |
EventData & |
data | ) |
const |
|
private |
◆ findVSp()
◆ getWriteNtupleBoolProperty()
bool InDet::SiSpacePointsSeedMaker_HeavyIon::getWriteNtupleBoolProperty |
( |
| ) |
const |
|
overridevirtual |
◆ initialize()
StatusCode InDet::SiSpacePointsSeedMaker_HeavyIon::initialize |
( |
| ) |
|
|
overridevirtual |
◆ initializeEventData()
void InDet::SiSpacePointsSeedMaker_HeavyIon::initializeEventData |
( |
EventData & |
data | ) |
const |
|
private |
◆ isZCompatible()
bool InDet::SiSpacePointsSeedMaker_HeavyIon::isZCompatible |
( |
EventData & |
data, |
|
|
float & |
Zv, |
|
|
float & |
R, |
|
|
float & |
T |
|
) |
| const |
|
private |
◆ newEvent()
void InDet::SiSpacePointsSeedMaker_HeavyIon::newEvent |
( |
const EventContext & |
ctx, |
|
|
EventData & |
data, |
|
|
int |
iteration |
|
) |
| const |
|
overridevirtual |
Definition at line 82 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
91 double f[3], gP[3] ={10.,10.,0.};
98 if (fieldCondObj ==
nullptr) {
102 fieldCondObj->getInitializedCache (fieldCache);
107 data.K = 2./(300.*
f[2]);
109 data.K = 2./(300.* 5. );
112 data.i_spforseed =
data.l_spforseed.begin();
122 if (spacepointsPixel.isValid()) {
127 if (r < 43. || r>=
m_r_rmax)
continue;
129 int ir =
static_cast<int>(sps->
radius()*irstep);
130 if (
ir>irmax)
ir = irmax;
131 data.r_Sorted[
ir].push_back(sps);
145 if (spacepointsSCT.isValid()) {
152 int ir =
static_cast<int>(sps->
radius()*irstep);
153 if (
ir>irmax)
ir = irmax;
154 data.r_Sorted[
ir].push_back(sps);
◆ newOneSeed()
Definition at line 1358 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
1365 data.OneSeeds[
data.nOneSeeds].erase();
1369 data.OneSeeds[
data.nOneSeeds].setZVertex(
static_cast<double>(
z));
1370 data.mapOneSeeds.insert(std::make_pair(
q, &(
data.OneSeeds[
data.nOneSeeds])));
1373 std::multimap<float,InDet::SiSpacePointsSeed*>::reverse_iterator
1374 l =
data.mapOneSeeds.rbegin();
1375 if ((*l).first <=
q)
return;
1382 s->setZVertex(
static_cast<double>(
z));
1384 i =
data.mapOneSeeds.insert(std::make_pair(
q,
s));
1386 for (++
i;
i!=
data.mapOneSeeds.end(); ++
i) {
1387 if ((*i).second==
s) {
1388 data.mapOneSeeds.erase(
i);
◆ newRegion() [1/2]
Definition at line 169 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
175 data.trigger =
false;
181 double f[3], gP[3] ={10.,10.,0.};
188 if (fieldCondObj ==
nullptr) {
192 fieldCondObj->getInitializedCache (fieldCache);
197 data.K = 2./(300.*
f[2]);
199 data.K = 2./(300.* 5.);
202 data.i_spforseed =
data.l_spforseed.begin();
209 if (
m_pixel && !vPixel.empty()) {
212 if (spacepointsPixel.isValid()) {
217 const auto *
w = spacepointsPixel->indexFindPtr(
l);
218 if (
w==
nullptr)
continue;
223 int ir =
static_cast<int>(sps->
radius()*irstep);
224 if (
ir>irmax)
ir = irmax;
225 data.r_Sorted[
ir].push_back(sps);
236 if (
m_sct && !vSCT.empty()) {
239 if (spacepointsSCT.isValid()) {
244 const auto *
w = spacepointsSCT->indexFindPtr(
l);
245 if (
w==
nullptr)
continue;
250 int ir =
static_cast<int>(sps->
radius()*irstep);
251 if (
ir>irmax)
ir = irmax;
252 data.r_Sorted[
ir].push_back(sps);
◆ newRegion() [2/2]
◆ newSeed() [1/2]
◆ newSeed() [2/2]
◆ newSpacePoint()
◆ newVertices()
◆ next()
◆ operator=()
◆ production2Sp()
void InDet::SiSpacePointsSeedMaker_HeavyIon::production2Sp |
( |
EventData & |
data | ) |
const |
|
private |
Definition at line 857 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
859 if (
data.nsazv<2)
return;
874 if (!
data.rfzv_map[
a])
continue;
875 r0 =
data.rfzv_Sorted[
a].begin();
876 r0e =
data.rfzv_Sorted[
a].end ();
885 for (;
r0!=r0e; ++
r0) {
886 float X = (*r0)->x();
887 float Y = (*r0)->y();
888 float R = (*r0)->radius();
891 float Z = (*r0)->z();
898 for (
int i=0;
i<NB; ++
i) {
900 if (!
data.rfzv_map[an])
continue;
902 r =
data.rfzv_Sorted[an].begin();
903 re =
data.rfzv_Sorted[an].end ();
906 float Rb =(*r)->radius();
912 float dZ =
Z-(*r)->z();
914 if (Tz<m_dzdrmin || Tz>
m_dzdrmax)
continue;
923 float dx =(*r)->x()-
X;
924 float dy =(*r)->y()-
Y;
927 float xy =
x*
x+
y*
y ;
if (xy == 0.)
continue;
931 float UR = Ut*
R+1. ;
if (UR == 0.)
continue;
934 if (std::abs(
B*
data.K) >
m_ipt*std::sqrt(1.f+
A*
A))
continue;
936 newSeed(
data, (*r)->spacepoint, (*r0)->spacepoint,Zo);
◆ production3Sp() [1/2]
void InDet::SiSpacePointsSeedMaker_HeavyIon::production3Sp |
( |
EventData & |
data | ) |
const |
|
private |
Definition at line 955 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
957 if (
data.nsaz<3)
return;
959 const int ZI[
SizeZ] = {5,6,7,8,9,10,4,3,2,1,0};
973 if (!
data.rfz_map[
a])
continue;
977 if (!
data.rfz_map[an])
continue;
978 rb [NB] =
data.rfz_Sorted[an].begin();
979 rbe[NB++] =
data.rfz_Sorted[an].end();
983 if (!
data.rfz_map[an])
continue;
984 rt [NT] =
data.rfz_Sorted[an].begin();
985 rte[NT++] =
data.rfz_Sorted[an].end();
◆ production3Sp() [2/2]
Definition at line 1006 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
1019 for (;
r0!=rbe[0]; ++
r0) {
1021 data.mapOneSeeds.erase(
data.mapOneSeeds.begin(),
data.mapOneSeeds.end());
1023 float R = (*r0)->radius();
1029 float X = (*r0)->x() ;
1030 float Y = (*r0)->y() ;
1031 float Z = (*r0)->z() ;
1036 for (
int i=0;
i<NB; ++
i) {
1037 for (
r=
rb[
i];
r!=rbe[
i]; ++
r) {
1038 float Rb =(*r)->radius();
1042 if ((*r)->sur()==sur0)
continue;
1044 float Tz = (
Z-(*r)->z())/dR;
1046 if (Tz < m_dzdrmin || Tz >
m_dzdrmax)
continue;
1062 for (
int i=0;
i<NT; ++
i) {
1063 for (
r=rt[
i];
r!=rte[
i]; ++
r) {
1064 float Rt =(*r)->radius();
1071 if ( (*r)->sur()==sur0)
continue;
1073 float Tz = ((*r)->z()-
Z)/dR;
1075 if (Tz < m_dzdrmin || Tz >
m_dzdrmax)
continue;
1087 if (!(Nt-Nb))
continue;
1089 float covr0 = (*r0)->covr();
1090 float covz0 = (*r0)->covz();
1095 for (
int i=0;
i<Nt; ++
i) {
1098 float dx = sp->
x()-
X ;
1099 float dy = sp->
y()-
Y ;
1100 float dz = sp->
z()-
Z ;
1103 float r2 = 1.f/(
x*
x+
y*
y);
1104 float dr = std::sqrt(r2) ;
1106 if (
i < Nb) tz = -tz;
1121 float ipt2K = ipt2/K2 ;
1122 float ipt2C = ipt2*COF ;
1123 float COFK = COF*K2 ;
1128 for (
int b=0;
b<Nb; ++
b) {
1131 float Zob =
data.Zo[
b] ;
1132 float Tzb =
data.Tz[
b] ;
1133 float Rb2r =
data.R [
b]*covr0;
1134 float Rb2z =
data.R [
b]*covz0;
1135 float Erb =
data.Er[
b] ;
1136 float Vb =
data.V [
b] ;
1137 float Ub =
data.U [
b] ;
1138 float Tzb2 = (1.f+Tzb*Tzb) ;
1139 float CSA = Tzb2*COFK ;
1140 float ICSA = Tzb2*ipt2C ;
1142 float Iz = (dZ*dZ)/Tzb2 ;
1144 for (
int t=Nb;
t<Nt; ++
t) {
1145 float Ts = .5f*(Tzb+
data.Tz[
t]) ;
1148 if ( dT > ICSA)
continue;
1149 float dU =
data.U[
t]-Ub;
if (dU == 0.) continue ;
1150 float A = (
data.V[
t]-Vb)/dU ;
1151 float S2 = 1.f+
A*
A ;
1154 if (B2 > ipt2K*
S2 || dT*
S2 > B2*CSA)
continue;
1155 float Im = std::abs((
A-
B*
R)*
R) ;
1157 if ( Im > imc )
continue;
1162 nseed +=
data.mapOneSeeds.size();
◆ production3SpNoVertex()
Definition at line 1178 of file SiSpacePointsSeedMaker_HeavyIon.cxx.
1187 if (!
data.endlist) {
1189 data.endlist =
true;
1194 for (;
r0!=rbe[0]; ++
r0) {
1196 data.mapOneSeeds.erase(
data.mapOneSeeds.begin(),
data.mapOneSeeds.end());
1198 float R = (*r0)->radius();
1205 float X = (*r0)->x() ;
1206 float Y = (*r0)->y() ;
1207 float Z = (*r0)->z() ;
1212 for (
int i=0;
i<NB; ++
i) {
1213 for (
r=
rb[
i];
r!=rbe[
i]; ++
r) {
1214 float Rb =(*r)->radius();
1221 if ((*r)->sur()==sur0)
continue;
1222 if ( !
pix && !(*r)->spacepoint->clusterList().second)
continue;
1223 float Tz = (
Z-(*r)->z())/dR;
1224 if (Tz < m_dzdrmin || Tz >
m_dzdrmax)
continue;
1240 for (
int i=0;
i<NT; ++
i) {
1241 for (
r=rt[
i];
r!=rte[
i]; ++
r) {
1242 float Rt =(*r)->radius();
1249 if ((*r)->sur()==sur0)
continue;
1250 float Tz = ((*r)->z()-
Z)/dR;
1251 if (Tz < m_dzdrmin || Tz >
m_dzdrmax)
continue;
1263 if (!(Nt-Nb))
continue;
1265 float covr0 = (*r0)->covr();
1266 float covz0 = (*r0)->covz();
1271 for (
int i=0;
i<Nt; ++
i) {
1274 float dx = sp->
x()-
X ;
1275 float dy = sp->
y()-
Y ;
1276 float dz = sp->
z()-
Z ;
1279 float r2 = 1.f/(
x*
x+
y*
y);
1280 float dr = std::sqrt(r2) ;
1282 if (
i < Nb) tz = -tz;
1298 float ipt2K = ipt2/K2 ;
1299 float ipt2C = ipt2*COF ;
1300 float COFK = COF*K2 ;
1306 for (
int b=0;
b<Nb; ++
b) {
1309 float Zob =
data.Zo[
b] ;
1310 float Tzb =
data.Tz[
b] ;
1311 float Rb2r =
data.R [
b]*covr0;
1312 float Rb2z =
data.R [
b]*covz0;
1313 float Erb =
data.Er[
b] ;
1314 float Vb =
data.V [
b] ;
1315 float Ub =
data.U [
b] ;
1316 float Tzb2 = (1.f+Tzb*Tzb) ;
1317 float CSA = Tzb2*COFK ;
1318 float ICSA = Tzb2*ipt2C ;
1320 for (
int t=Nb;
t<Nt; ++
t) {
1321 float Ts = .5f*(Tzb+
data.Tz[
t]) ;
1324 if ( dT > ICSA)
continue;
1325 float dU =
data.U[
t]-Ub;
1326 if (dU == 0.)
continue;
1327 float A = (
data.V[
t]-Vb)/dU ;
1328 float S2 = 1.f+
A*
A ;
1331 if (B2 > ipt2K*
S2 || dT*
S2 > B2*CSA)
continue;
1332 float Im = std::abs((
A-
B*
R)*
R) ;
1335 if ( Im > imc )
continue;
1336 if (
data.SP[
t]->spacepoint->clusterList().second && Im > imcs)
continue;
1343 nseed +=
data.mapOneSeeds.size();
◆ writeNtuple()
◆ m_beamSpotKey
◆ m_COF
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_COF {0.} |
|
private |
◆ m_diver
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_diver {this, "maxdImpact", 10.} |
|
private |
◆ m_diverpps
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_diverpps {this, "maxdImpactPPS", 1.7} |
|
private |
◆ m_diversss
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_diversss {this, "maxdImpactSSS", 1000.} |
|
private |
◆ m_drmax
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_drmax {this, "maxdRadius", 270.} |
|
private |
◆ m_drmin
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_drmin {this, "mindRadius", 10.} |
|
private |
◆ m_drminv
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_drminv {20.} |
|
private |
◆ m_dzdrmax
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_dzdrmax {0.} |
|
private |
◆ m_dzdrmin
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_dzdrmin {0.} |
|
private |
◆ m_dzdrver
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_dzdrver {this, "maxdZdRver", 0.02} |
|
private |
◆ m_dzver
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_dzver {this, "maxdZver", 5.} |
|
private |
◆ m_etamax
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_etamax {this, "etaMax", 2.7} |
|
private |
◆ m_fieldCondObjInputKey
Initial value:{this, "AtlasFieldCacheCondObj", "fieldCondObj",
"Name of the Magnetic Field conditions object key"}
Definition at line 145 of file SiSpacePointsSeedMaker_HeavyIon.h.
◆ m_fieldScale
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_fieldScale {this, "fieldScale", 1.} |
|
private |
◆ m_fNmax
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_fNmax {0} |
|
private |
◆ m_fvNmax
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_fvNmax {0} |
|
private |
◆ m_initialized
bool InDet::SiSpacePointsSeedMaker_HeavyIon::m_initialized {false} |
|
private |
◆ m_ipt
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_ipt {0.} |
|
private |
◆ m_ipt2
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_ipt2 {0.} |
|
private |
◆ m_maxNumberVertices
UnsignedIntegerProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_maxNumberVertices {this, "maxNumberVertices", 1} |
|
private |
◆ m_maxOneSize
IntegerProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_maxOneSize {this, "maxSeedsForSpacePoint", 6} |
|
private |
◆ m_maxsize
IntegerProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_maxsize {this, "maxSize", 20000} |
|
private |
◆ m_maxsizeSP
IntegerProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_maxsizeSP {this, "maxSizeSP", 4000} |
|
private |
◆ m_outputlevel
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_outputlevel {0} |
|
private |
◆ m_pixel
BooleanProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_pixel {this, "usePixel", true} |
|
private |
◆ m_ptmin
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_ptmin {this, "pTmin", 500.} |
|
private |
◆ m_r1maxv
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_r1maxv {this, "maxVRadius1", 60.} |
|
private |
◆ m_r1minv
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_r1minv {this, "minVRadius1", 0.} |
|
private |
◆ m_r2maxv
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_r2maxv {this, "maxVRadius2", 200.} |
|
private |
◆ m_r2minv
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_r2minv {this, "minVRadius2", 70.} |
|
private |
◆ m_r_rmax
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_r_rmax {this, "radMax", 600.} |
|
private |
◆ m_r_rstep
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_r_rstep {this, "radStep", 2.} |
|
private |
◆ m_r_size
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_r_size {0} |
|
private |
◆ m_rfz_b
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_rfz_b[SizeRFZ] {} |
|
private |
◆ m_rfz_ib
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_rfz_ib[SizeRFZ][SizeI] {} |
|
private |
◆ m_rfz_it
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_rfz_it[SizeRFZ][SizeI] {} |
|
private |
◆ m_rfz_t
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_rfz_t[SizeRFZ] {} |
|
private |
◆ m_rfzv_i
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_rfzv_i[SizeRFZV][SizeIV] {} |
|
private |
◆ m_rfzv_n
int InDet::SiSpacePointsSeedMaker_HeavyIon::m_rfzv_n[SizeRFZV] {} |
|
private |
◆ m_sct
BooleanProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_sct {this, "useSCT", true} |
|
private |
◆ m_sF
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_sF {0.} |
|
private |
◆ m_sFv
float InDet::SiSpacePointsSeedMaker_HeavyIon::m_sFv {0.} |
|
private |
◆ m_spacepointsOverlap
◆ m_spacepointsPixel
SG::ReadHandleKey<SpacePointContainer> InDet::SiSpacePointsSeedMaker_HeavyIon::m_spacepointsPixel {this, "SpacePointsPixelName", "PixelSpacePoints", "Pixel space points container"} |
|
private |
◆ m_spacepointsSCT
◆ m_useOverlap
BooleanProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_useOverlap {this, "useOverlapSpCollection", false} |
|
private |
◆ m_zmax
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_zmax {this, "maxZ", +250.} |
|
private |
◆ m_zmin
FloatProperty InDet::SiSpacePointsSeedMaker_HeavyIon::m_zmin {this, "minZ", -250.} |
|
private |
The documentation for this class was generated from the following files:
const std::pair< const PrepRawData *, const PrepRawData * > & clusterList() const
return the pair of cluster pointers by reference
JetConstituentVector::iterator iterator
BooleanProperty m_useOverlap
int cost(std::vector< std::string > &files, node &n, const std::string &directory="", bool deleteref=false, bool relocate=false)
void production3Sp(EventData &data) const
char data[hepevt_bytes_allocation_ATLAS]
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
IntegerProperty m_maxsize
SG::ReadHandleKey< SpacePointOverlapCollection > m_spacepointsOverlap
virtual const Amg::Vector3D & globalPosition() const override final
Interface method to get the global Position.
void production2Sp(EventData &data) const
void getFieldZR(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field valaue on the z-r plane at given position works only inside the solenoid.
const float & covz() const
virtual void newRegion(const EventContext &ctx, EventData &data, const std::vector< IdentifierHash > &vPixel, const std::vector< IdentifierHash > &vSCT) const override
const std::string & key() const
Return the StoreGate ID for the referenced object.
IntegerProperty m_maxOneSize
bool newVertices(EventData &data, const std::list< Trk::Vertex > &) const
IntegerProperty m_maxsizeSP
const float & radius() const
static float dZVertexMin(EventData &data, float &)
void production3SpNoVertex(EventData &data, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, std::vector< InDet::SiSpacePointForSeed * >::iterator *, int, int, int &) const
int m_rfzv_i[SizeRFZV][SizeIV]
void set(const Trk::SpacePoint *const &, const float *)
static void fillSeeds(EventData &data)
SG::ReadHandleKey< SpacePointContainer > m_spacepointsSCT
::StatusCode StatusCode
StatusCode definition for legacy code.
const double r0
electron radius{cm}
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
bool isZCompatible(EventData &data, float &, float &, float &) const
static void convertToBeamFrameWork(EventData &data, const Trk::SpacePoint *const &, float *)
UnsignedIntegerProperty m_maxNumberVertices
bool solenoidOn() const
status of the magnets
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
StatusCode initialize(bool used=true)
SG::ReadHandleKey< SpacePointContainer > m_spacepointsPixel
Eigen::Matrix< double, 3, 1 > Vector3D
MsgStream & dumpConditions(EventData &data, MsgStream &out) const
const float & covr() const
int m_rfz_it[SizeRFZ][SizeI]
int ir
counter of the current depth
void buildBeamFrameWork(const EventContext &ctx, EventData &data) const
static void erase(EventData &data)
virtual void find3Sp(const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv) const override
with three space points with or without vertex constraint
const boost::regex re(r_e)
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
struct TBPatternUnitContext S2
void newOneSeed(EventData &data, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const float &, const float &) const
static MsgStream & dumpEvent(EventData &data, MsgStream &out)
void fillLists(EventData &data) const
FloatProperty m_fieldScale
void findNext(EventData &data) const
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
static void newSeed(EventData &data, const Trk::SpacePoint *&, const Trk::SpacePoint *&, const float &)
virtual MsgStream & dump(EventData &data, MsgStream &out) const override
int m_rfz_ib[SizeRFZ][SizeI]
void initializeEventData(EventData &data) const
static SiSpacePointForSeed * newSpacePoint(EventData &data, const Trk::SpacePoint *const &)