![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
32 (
const std::string&
t,
const std::string&
n,
const IInterface*
p)
34 m_fieldmode (
"MapSolenoid" ),
35 m_removeNoise (true ),
42 declareInterface<ITRT_TrackSegmentsMaker>(
this);
73 if((
sc=service(
"ToolSvc", toolSvc)).isFailure()){
90 return StatusCode::FAILURE;
101 return StatusCode::FAILURE;
132 std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>
143 if(not trtcontainer.
isValid()) {
144 std::stringstream
msg;
146 throw std::runtime_error(
msg.str());
153 if (!prd_to_track_map.
isValid()) {
156 prd_to_track_map_cptr = prd_to_track_map.
cptr();
160 std::unique_ptr<TRT_TrackSegmentsMaker_ATLxk::EventData>
161 event_data = std::make_unique<TRT_TrackSegmentsMaker_ATLxk::EventData>(trtcontainer.
cptr(), condData.
m_cirsize);
167 InDet::TRT_DriftCircleContainer::const_iterator
168 w = trtcontainer->begin(),we = trtcontainer->end();
187 unsigned int ad = 1000*
b+
l;
191 InDet::TRT_DriftCircleCollection::const_iterator
192 c = (*w)->begin(), ce = (*w)->end();
195 if(prd_to_track_map_cptr && prd_to_track_map_cptr->
isUsed(*(*
c)))
continue;
202 float Fs = std::atan2(
sc.y(),
sc.x());
if(Fs<0.) Fs+=
pi2;
203 event_data->m_circles[
n].set((*
c),Fs,ad);
212 event_data->m_clusters =
n;
213 return std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>(event_data.release());
220 std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>
222 (
const EventContext& ctx,
const std::vector<IdentifierHash>& vTRT)
const
231 if(not trtcontainer.
isValid()) {
239 if (!prd_to_track_map.
isValid()) {
242 prd_to_track_map_cptr = prd_to_track_map.
cptr();
245 std::unique_ptr<TRT_TrackSegmentsMaker_ATLxk::EventData>
246 event_data = std::make_unique<TRT_TrackSegmentsMaker_ATLxk::EventData>(trtcontainer.
cptr(), condData.
m_cirsize);
255 std::vector<IdentifierHash>::const_iterator
d=vTRT.begin(),de=vTRT.end();
259 const auto *
w = trtcontainer->indexFindPtr((*
d));
272 unsigned int ad = 1000*
b+
l;
274 InDet::TRT_DriftCircleCollection::const_iterator
275 c =
w->begin(), ce =
w->end();
279 if(prd_to_track_map_cptr && prd_to_track_map_cptr->
isUsed(*(*
c)))
continue;
286 float Fs = std::atan2(
sc.y(),
sc.x());
if(Fs<0.) Fs+=
pi2;
287 event_data->m_circles[
n].set((*
c),Fs,ad);
296 event_data->m_clusters =
n;
298 return std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>( event_data.release() );
337 for(
unsigned int n=0;
n!=
mc; ++
n) {
346 unsigned char max = 0;
347 unsigned int maxbin = 0;
349 for(
unsigned int s=
sb;
s<=
se; ++
s) {
361 unsigned int nbins = 0 ;
362 unsigned int fbin = 99999999;
363 for(bc = event_data.
m_bincluster.begin(); bc!=bce; ++bc) {
365 if((*bc).first==fbin) ++
nbins;
368 fbin=(*bc).first;
nbins = 1;
379 if (!prd_to_track_map.
isValid()) {
382 prd_to_track_map_cptr = prd_to_track_map.
cptr();
432 std::string fieldmode[9] ={
"NoField" ,
"ConstantField",
"SolenoidalField",
433 "ToroidalField" ,
"Grid3DField" ,
"RealisticField" ,
434 "UndefinedField",
"AthenaField" ,
"?????" };
437 if(mode<0 || mode>8 )
mode = 8;
439 int n = 62-fieldmode[
mode].size();
440 std::string
s3;
for(
int i=0;
i<
n; ++
i)
s3.append(
" ");
s3.append(
"|");
443 std::string
s4;
for(
int i=0;
i<
n; ++
i)
s4.append(
" ");
s4.append(
"|");
446 std::string s7;
for(
int i=0;
i<
n; ++
i) s7.append(
" "); s7.append(
"|");
449 out<<
"|----------------------------------------------------------------------"
450 <<
"-------------------|"
453 out<<
"| Magnetic field mode | "<<fieldmode[
mode] <<
s3<<std::endl;
455 out<<
"| Min. number straws | "
458 out<<
"| Number neg. bar. layers | "
461 out<<
"| Number pos. bar. layers | "
464 out<<
"| Number neg. end. layers | "
467 out<<
"| Number pos. end. layers | "
470 out<<
"| Number neg. bar. straws | "
473 out<<
"| Number pos. bar. straws | "
476 out<<
"| Number neg. end. straws | "
479 out<<
"| Number pos. end. straws | "
482 out<<
"| Number azimut. channels | "
485 out<<
"| Number moment. channels | "
488 out<<
"| Number histog. channels | "
491 out<<
"| Number cluster links | "
494 out<<
"| Use PRD-to-track assoc.?| "
497 out<<
"| Remove noise ? | "
500 out<<
"|----------------------------------------------------------------------"
501 <<
"-------------------|"
515 out<<
"|----------------------------------------------------------------------"
516 <<
"-------------------|"
518 out<<
"| Number drift circles | "
521 out<<
"| Number local calls | "
522 <<std::setw(12)<<event_data.
m_nlocal
524 out<<
"| Number found segments | "
527 out<<
"| Number save segments | "
530 out<<
"|----------------------------------------------------------------------"
531 <<
"-------------------|"
623 std::multimap<const InDet::TRT_DriftCircle*,Trk::TrackSegment*>::const_iterator
631 for(bc=bcb; bc!=bce; ++bc) {
633 if((*bc).first!=
bin)
break;
646 for(bc=bcb; bc!=bce; ++bc) {
648 unsigned int n = (*bc).second;
655 for(;
s<=
se; ++
s) {
if(condData.
m_ndzdr[
s]==ndzdr)
break;}
669 fm = Fo+fm/
float(nfree);
672 else if(fm <-
pi) fm = fmod(fm-
pi,
pi2)+
pi;
676 double pin = 1./(
pT*std::sqrt((1.+condData.
m_dzdr[ndzdr]*condData.
m_dzdr[ndzdr])));
679 auto Tp =
PS.createUniqueTrackParameters(
680 0., 0., fm, std::atan2(1., condData.
m_dzdr[ndzdr]), pin, std::nullopt);
706 std::vector<const Trk::MeasurementBase*>::const_iterator
709 if(prd_to_track_map) {
713 int nu = 0, ntot = 0;
714 for(++
s;
s!=
se; ++
s) {
732 if (Xi2 > 6) quality-=9;
733 else if(Xi2 > 5.) quality-=7;
734 else if(Xi2 > 3.) quality-=5;
735 else if(Xi2 > 2.) quality-=3;
736 else if(Xi2 > 1.) quality-=1;
745 for(++
s;
s!=
se; ++
s) {
759 std::multimap<int,Trk::TrackSegment*>::reverse_iterator
766 std::vector<const Trk::MeasurementBase*>::const_iterator
767 s =(*qs).second->containedMeasurements().begin(),
768 se =(*qs).second->containedMeasurements().end ();
770 for(++
s;
s!=
se; ++
s) {
777 if(nfree >= 7) event_data.
m_segments.push_back((*qs).second);
778 else delete (*qs).second;
792 unsigned int maxb =
bin ;
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
void findLocaly(const EventContext &ctx, unsigned int, const Trk::PRDtoTrackMap *prd_to_track_map, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
std::multimap< int,Trk::TrackSegment * > m_qualitySegment
static MsgStream & dumpEvent(MsgStream &out, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data)
std::vector< Identifier > ID
const TRT_DriftCircle * circle() const
const_pointer_type cptr()
Dereference the pointer.
virtual MsgStream & dump(MsgStream &out) const override
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
unsigned int layer() const
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
std::multimap< const InDet::TRT_DriftCircle *, Trk::TrackSegment * > m_clusterSegment
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > newEvent(const EventContext &ctx) const override
bool msgLvl(const MSG::Level lvl) const
std::unique_ptr< InDet::ITRT_TrackExtensionTool::IEventData > m_extEventData
std::list< Trk::TrackSegment * >::iterator m_segiterator
MsgStream & dumpConditions(MsgStream &out) const
const std::string & key() const
Return the StoreGate ID for the referenced object.
union InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::@96 m_U
void fillHistogramm(float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
void analyseHistogramm(unsigned char &, unsigned int &, float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
@ FastField
call the fast field access method of the FieldSvc
double get(ParamDefs par) const
Retrieve specified parameter (const version).
const TRT_TrackSegmentsToolCondData_xk * getConditionsData() const
int straw(const Identifier &id) const
void endEvent(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
::StatusCode StatusCode
StatusCode definition for legacy code.
unsigned int buffer() const
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
static void segmentsPreparation(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
virtual StatusCode initialize() override
int straw_layer(const Identifier &id) const
int layer_or_wheel(const Identifier &id) const
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_trtname
ToolHandle< ITRT_TrackExtensionTool > m_extensionTool
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
@ FullField
Field is set to be realistic, but within a given Volume.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::multimap< unsigned int, unsigned int > m_bincluster
unsigned char H[227500 *4]
void eraseHistogramm(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
@ NoField
Field is set to 0., 0., 0.,.
virtual ~TRT_TrackSegmentsMaker_ATLxk()
SG::ReadCondHandleKey< InDet::TRT_TrackSegmentsToolCondData_xk > m_condDataKey
virtual Trk::TrackSegment * next(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
Trk::MagneticFieldProperties m_fieldprop
virtual const Amg::Vector3D & globalPosition() const =0
Interface method to get the global Position.
StatusCode initialize(bool used=true)
virtual void find(const EventContext &ctx, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const override
Eigen::Matrix< double, 3, 1 > Vector3D
MagneticFieldMode magneticFieldMode() const
Returns the MagneticFieldMode as specified.
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
std::list< Trk::TrackSegment * > m_segments
TRT_DriftCircleLinkN_xk * m_circles
virtual StatusCode finalize() override
double chiSquared() const
returns the of the overall track fit
std::array< std::vector< std::vector< Used_t > >, 3 > TRT_DetElemUsedMap
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
const float & phi() const
static EventData & getPrivateEventData(InDet::ITRT_TrackSegmentsMaker::IEventData &virt_event_data)
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > newRegion(const EventContext &ctx, const std::vector< IdentifierHash > &) const override
Handle class for reading from StoreGate.
const FitQuality * fitQuality() const
return the FitQuality object, returns NULL if no FitQuality is defined
unsigned int localMaximum(unsigned int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
std::multimap< unsigned int, unsigned int >::reverse_iterator m_sizebin_iterator
std::multimap< unsigned int, unsigned int > m_sizebin
TRT_TrackSegmentsMaker_ATLxk(const std::string &, const std::string &, const IInterface *)